diff --git a/.babelrc b/.babelrc
index bdb1a6b4db6..26a2fac61f1 100644
--- a/.babelrc
+++ b/.babelrc
@@ -1,16 +1,43 @@
{
- "presets": [["es2015", { "loose": true }]],
+ "presets": [
+ [
+ "env",
+ {
+ "loose": true,
+ "modules": false,
+ "targets": {
+ "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
+ }
+ }
+ ],
+ "stage-2"
+ ],
"plugins": ["transform-vue-jsx"],
"env": {
"utils": {
+ "presets": [
+ [
+ "env",
+ {
+ "loose": true,
+ "modules": "commonjs",
+ "targets": {
+ "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
+ }
+ }
+ ],
+ ],
"plugins": [
["module-resolver", {
"root": ["element-ui"],
"alias": {
- "element-ui/src": "element-ui/lib"
+ "element-ui/src": "@femessage/element-ui/lib"
}
}]
]
+ },
+ "test": {
+ "plugins": ["istanbul"]
}
}
}
diff --git a/.eslintrc b/.eslintrc
index 2a84035cf0e..ad4aa56f7fb 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -1,10 +1,7 @@
{
- "env": {
- "mocha": true
- },
"globals": {
- "expect": true,
- "sinon": true
+ "ga": true,
+ "chrome": true
},
"plugins": ["html", "json"],
"extends": "elemefe",
@@ -12,8 +9,8 @@
"no-restricted-globals": ["error", "event", "fdescribe"]
},
"parserOptions": {
+ "ecmaVersion": 6,
"ecmaFeatures": {
- "experimentalObjectRestSpread": true,
"jsx": true
}
}
diff --git a/.github/CONTRIBUTING.en-US.md b/.github/CONTRIBUTING.en-US.md
index 0a8c357e640..ee651f77d43 100644
--- a/.github/CONTRIBUTING.en-US.md
+++ b/.github/CONTRIBUTING.en-US.md
@@ -43,6 +43,8 @@ npm run dev
# open http://localhost:8085
```
+> **Notice**: modify `examples/play/index.vue` file, use the component you contribute, then run `npm run dev:play`, go ahead [http://localhost:8085](http://localhost:8085), get result, more quickly and friendly.
+
To build:
```shell
diff --git a/.github/CONTRIBUTING.es.md b/.github/CONTRIBUTING.es.md
index 177e0ca0918..d5c6022a5ff 100644
--- a/.github/CONTRIBUTING.es.md
+++ b/.github/CONTRIBUTING.es.md
@@ -37,7 +37,7 @@ Estamos orgullosos de que usted esta interesado en contribuir al proyecto `Eleme
- Fusión de un PR requiere dos mantenedores: el primero aprueba los cambios después de revisar, y entonces el segundo mantenedor revisa los cambios y hace la fusión.
-## Requerimientos Técnicos
+## Requerimientos Técnicos
`Node.js 4+`, `yarn` y `npm 3+` son requisitos. Nota: Usamos yarn para bloquear versiones de dependencias, por lo que debería instalar dependencias usando `yarn` en lugar de `npm install`.
.
```shell
@@ -47,6 +47,8 @@ npm run dev
# abra http://localhost:8085
```
+> **Notice**: modify `examples/play/index.vue` file, use the component you contribute, then run `npm run dev:play`, go ahead [http://localhost:8085](http://localhost:8085), get result, more quickly and friendly.
+
Para armar:
```
diff --git a/.github/CONTRIBUTING.fr-FR.md b/.github/CONTRIBUTING.fr-FR.md
new file mode 100644
index 00000000000..f8112be219d
--- /dev/null
+++ b/.github/CONTRIBUTING.fr-FR.md
@@ -0,0 +1,60 @@
+# Guide à destination des contributeurs d'Element UI
+
+Bonjour! Merci d'avoir choisi Element UI.
+
+Element UI est une bibliothèque de composants basée sur Vue 2.0 pour les développeurs, les designers et les chefs de produits.
+
+Nous sommes ravis que vous souhaitiez contribuer à Element. Avant de soumettre votre contribution, veuillez vous assurer de prendre un moment pour lire les indications suivantes.
+
+## Concernant les issues
+
+- Les issues concernent exclusivement les bugs, les demandes de fonctionnalités et les sujets liés à la conception. Les questions concernant d'autres sujets peuvent être fermées directement. Si vous avez des questions à propos de l'utilisation d'Element, veuillez vous rendre sur [Gitter](https://gitter.im/element-en/Lobby) pour obtenir de l'aide.
+
+- Avant de soumettre une issue, veuillez vérifier si des problèmes similaires n'ont pas déjà été signalés.
+
+- Veuillez spécifier la version de `Element` et `Vue` que vous utilisez, et fournir des informations sur le système d'exploitation et le navigateur. [JSFiddle](https://jsfiddle.net/) est recommandé afin de construire une démo pour que votre problème puisse être reproduit clairement.
+
+## Concernant les pull requests
+
+- Faites un fork de ce dépôt vers votre compte. Ne créez pas de branches ici.
+
+- Les informations de validation doivent être formatées en tant que `[Nom du composant] : Info à propos de ce commit` (par exemple `Button : Fix xxx bug`)
+
+- **NE PAS** inclure de fichiers dans le répertoire `lib`.
+
+- Assurez-vous que l'exécution de `npm run dist` génère les bons fichiers.
+
+- Pour des raisons de compatibilité et de taille de fichier, notre configuration babel n'importait que `preset-2015`, donc les API comme `Array.prototype.find` et `Object.assign` dans `ES2015` ne sont pas recommandées. Vous pouvez importer des polyfills si nécessaire.
+
+- Faites un rebase avant la création d'une PR pour garder l'historique clair.
+
+- Assurez-vous que les PRs sont créés dans la branche `dev` au lieu de la branche `master`.
+
+- Si votre PR corrige un bug, veuillez fournir une description du bug en question.
+
+- La fusion d'un PR nécessite deux responsables: l'un approuve les modifications après révision, puis l'autre les révise et les fusionne.
+
+## Pré-requis
+`Node.js 4+`, `yarn` et `npm 3+` sont requis. Note: nous utilisons yarn pour verrouiller les versions des dépendances, donc vous devriez installer les dépendances en utilisant `yarn` au lieu de `npm install`.
+```shell
+git clone git@github.com:ElemeFE/element.git
+npm run dev
+
+# open http://localhost:8085
+```
+
+> **Remarque** : modifiez le fichier `examples/play/index.vue`, utilisez le composant auquel vous contribuez, puis lancez `npm run dev:play`, allez sur [http://localhost:8085](http://localhost:8085), regardez le résultat rapidement et facilement.
+
+Pour le build:
+
+```shell
+npm run dist
+```
+
+## Concernant le développement de composants
+- Exécutez `make new 你们的文档怎么偷偷更新了?
- 我们只会在 Element 发布新版本时同步更新文档,以体现最新的变化。详细的更新内容可以查看 [changelog](https://github.com/ElemeFE/element/blob/master/CHANGELOG.zh-CN.md)。
+ 我们只会在 Element 发布新版本时同步更新文档,以体现最新的变化。详细的更新内容可以查看 [changelog](https://github.com/femessage/element/blob/master/CHANGELOG.zh-CN.md)。
When do you update documentations of Element?
- We update documentations only when a new version of Element is published so that it reflects all the changes introduced in that version. Updated changed can be found in the [changelog](https://github.com/ElemeFE/element/blob/master/CHANGELOG.en-US.md)。
+ We update documentations only when a new version of Element is published so that it reflects all the changes introduced in that version. Updated changed can be found in the [changelog](https://github.com/femessage/element/blob/master/CHANGELOG.en-US.md)。
¿Cuando añaden a la documentación de `Element`?
- Añadamos la documentación con cada versión nueva de `Element` y los cambios reflejan los cambios del software de esa versión. Los cambios actuales y históricos se encuentran [aquí](https://github.com/ElemeFE/element/blob/master/CHANGELOG.en-US.md).
+ Añadamos la documentación con cada versión nueva de `Element` y los cambios reflejan los cambios del software de esa versión. Los cambios actuales y históricos se encuentran [aquí](https://github.com/femessage/element/blob/master/CHANGELOG.en-US.md).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Special thanks to the generous sponsorship by: -
-
-
-
-
- |
-
-
-
-
- |
-
-
-
-
- |
-
-
-
-
- |
-
-
-## Backers
-
-Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/element#backer)]
-
-${md.utils.escapeHtml(token.content)}`;
+ }
+ return defaultRender(tokens, idx, options, env, self);
+ };
+};
diff --git a/build/md-loader/index.js b/build/md-loader/index.js
new file mode 100644
index 00000000000..2ef0e55ceed
--- /dev/null
+++ b/build/md-loader/index.js
@@ -0,0 +1,67 @@
+const {
+ stripScript,
+ stripTemplate,
+ genInlineComponentText
+} = require('./util');
+const md = require('./config');
+
+module.exports = function(source) {
+ const content = md.render(source);
+
+ const startTag = '';
+ const endTagLen = endTag.length;
+
+ let componenetsString = '';
+ let id = 0; // demo 的 id
+ let output = []; // 输出的内容
+ let start = 0; // 字符串开始位置
+
+ let commentStart = content.indexOf(startTag);
+ let commentEnd = content.indexOf(endTag, commentStart + startTagLen);
+ while (commentStart !== -1 && commentEnd !== -1) {
+ output.push(content.slice(start, commentStart));
+
+ const commentContent = content.slice(commentStart + startTagLen, commentEnd);
+ const html = stripTemplate(commentContent);
+ const script = stripScript(commentContent);
+ let demoComponentContent = genInlineComponentText(html, script);
+ const demoComponentName = `element-demo${id}`;
+ output.push(`<${demoComponentName} />`);
+ componenetsString += `${JSON.stringify(demoComponentName)}: ${demoComponentContent},`;
+
+ // 重新计算下一次的位置
+ id++;
+ start = commentEnd + endTagLen;
+ commentStart = content.indexOf(startTag, start);
+ commentEnd = content.indexOf(endTag, commentStart + startTagLen);
+ }
+
+ // 仅允许在 demo 不存在时,才可以在 Markdown 中写 script 标签
+ // todo: 优化这段逻辑
+ let pageScript = '';
+ if (componenetsString) {
+ pageScript = ``;
+ } else if (content.indexOf('') + ''.length;
+ pageScript = content.slice(0, start);
+ }
+
+ output.push(content.slice(start));
+ return `
+
+ ', '');
- };
-}
-
const webpackConfig = {
+ mode: process.env.NODE_ENV,
entry: isProd ? {
- docs: './examples/entry.js',
- 'element-ui': './src/index.js'
+ docs: './examples/entry.js'
} : (isPlay ? './examples/play.js' : './examples/entry.js'),
output: {
path: path.resolve(process.cwd(), './examples/element-ui/'),
@@ -49,20 +33,20 @@ const webpackConfig = {
host: '0.0.0.0',
port: 8085,
publicPath: '/',
- noInfo: true
+ hot: true
+ },
+ performance: {
+ hints: false
+ },
+ stats: {
+ children: false
},
module: {
rules: [
{
enforce: 'pre',
- test: /\.jsx?$/,
- exclude: /node_modules|bower_components/,
- loader: 'eslint-loader'
- },
- {
- enforce: 'pre',
- test: /\.vue$/,
- exclude: /node_modules|bower_components/,
+ test: /\.(vue|jsx?)$/,
+ exclude: /node_modules/,
loader: 'eslint-loader'
},
{
@@ -72,87 +56,42 @@ const webpackConfig = {
loader: 'babel-loader'
},
{
- test: /\.md$/,
- loader: 'vue-markdown-loader',
+ test: /\.vue$/,
+ loader: 'vue-loader',
options: {
- use: [
- [require('markdown-it-anchor'), {
- level: 2,
- slugify: slugify,
- permalink: true,
- permalinkBefore: true
- }],
- [require('markdown-it-container'), 'demo', {
- validate: function(params) {
- return params.trim().match(/^demo\s*(.*)$/);
- },
-
- render: function(tokens, idx) {
- var m = tokens[idx].info.trim().match(/^demo\s*(.*)$/);
- if (tokens[idx].nesting === 1) {
- var description = (m && m.length > 1) ? m[1] : '';
- var content = tokens[idx + 1].content;
- var html = convert(striptags.strip(content, ['script', 'style'])).replace(/(<[^>]*)=""(?=.*>)/g, '$1');
- var script = striptags.fetch(content, 'script');
- var style = striptags.fetch(content, 'style');
- var jsfiddle = { html: html, script: script, style: style };
- var descriptionHTML = description
- ? md.render(description)
- : '';
-
- jsfiddle = md.utils.escapeHtml(JSON.stringify(jsfiddle));
-
- return `
- ${html}
- ${descriptionHTML}
- `;
- }
- return ' \n';
- }
- }],
- [require('markdown-it-container'), 'tip'],
- [require('markdown-it-container'), 'warning']
- ],
- preprocess: function(MarkdownIt, source) {
- MarkdownIt.renderer.rules.table_open = function() {
- return '';
- };
- MarkdownIt.renderer.rules.fence = wrap(MarkdownIt.renderer.rules.fence);
- return source;
+ compilerOptions: {
+ preserveWhitespace: false
}
}
},
{
- test: /\.json$/,
- loader: 'json-loader'
- },
- {
- test: /\.scss$/,
- loaders: ['style-loader', 'css-loader', 'sass-loader']
- },
- {
- test: /\.html$/,
- loader: 'html-loader?minimize=false'
- },
- {
- test: /\.otf|ttf|woff2?|eot(\?\S*)?$/,
- loader: 'url-loader',
- query: {
- limit: 10000,
- name: path.posix.join('static', '[name].[hash:7].[ext]')
- }
+ test: /\.(scss|css)$/,
+ use: [
+ isProd ? MiniCssExtractPlugin.loader : 'style-loader',
+ 'css-loader',
+ 'sass-loader'
+ ]
},
{
- test: /\.svg(\?\S*)?$/,
- loader: 'url-loader',
- query: {
- limit: 10000,
- name: path.posix.join('static', '[name].[hash:7].[ext]')
- }
+ test: /\.md$/,
+ use: [
+ {
+ loader: 'vue-loader',
+ options: {
+ compilerOptions: {
+ preserveWhitespace: false
+ }
+ }
+ },
+ {
+ loader: path.resolve(__dirname, './md-loader/index.js')
+ }
+ ]
},
{
- test: /\.(gif|png|jpe?g)(\?\S*)?$/,
+ test: /\.(svg|otf|ttf|woff2?|eot|gif|png|jpe?g)(\?\S*)?$/,
loader: 'url-loader',
+ // todo: 这种写法有待调整
query: {
limit: 10000,
name: path.posix.join('static', '[name].[hash:7].[ext]')
@@ -161,6 +100,7 @@ const webpackConfig = {
]
},
plugins: [
+ new webpack.HotModuleReplacementPlugin(),
new HtmlWebpackPlugin({
template: './examples/index.tpl',
filename: './index.html',
@@ -170,82 +110,54 @@ const webpackConfig = {
{ from: 'examples/versions.json' }
]),
new ProgressBarPlugin(),
+ new VueLoaderPlugin(),
+ new webpack.DefinePlugin({
+ 'process.env.FAAS_ENV': JSON.stringify(process.env.FAAS_ENV)
+ }),
new webpack.LoaderOptionsPlugin({
- minimize: true,
vue: {
- preserveWhitespace: false
+ compilerOptions: {
+ preserveWhitespace: false
+ }
}
})
- ]
+ ],
+ optimization: {
+ minimizer: []
+ },
+ devtool: '#eval-source-map'
};
if (isProd) {
webpackConfig.externals = {
vue: 'Vue',
- 'vue-router': 'VueRouter'
+ 'vue-router': 'VueRouter',
+ 'highlight.js': 'hljs'
};
- webpackConfig.module.rules.push(
- {
- test: /\.vue$/,
- loader: 'vue-loader',
- options: {
- extractCSS: true,
- preserveWhitespace: false
- }
- },
- {
- test: /\.css$/,
- loader: ExtractTextPlugin.extract({
- fallback: 'style-loader',
- use: [
- { loader: 'css-loader', options: { importLoaders: 1 } },
- 'postcss-loader'
- ]
- })
- }
- );
webpackConfig.plugins.push(
- new webpack.optimize.UglifyJsPlugin({
- compress: {
- warnings: false
- },
- output: {
- comments: false
- },
- sourceMap: false
- }),
- new ExtractTextPlugin({
+ new MiniCssExtractPlugin({
filename: '[name].[contenthash:7].css'
- }),
- new webpack.DefinePlugin({
- 'process.env.NODE_ENV': JSON.stringify('production')
- }),
- new webpack.optimize.CommonsChunkPlugin({
- name: ['element-ui', 'manifest']
})
);
-}
-if (isDev) {
- webpackConfig.module.rules.push(
- {
- test: /\.vue$/,
- loader: 'vue-loader',
- options: {
- preserveWhitespace: false
+ webpackConfig.optimization.minimizer.push(
+ new UglifyJsPlugin({
+ cache: true,
+ parallel: true,
+ sourceMap: false
+ }),
+ new OptimizeCSSAssetsPlugin({})
+ );
+ // https://webpack.js.org/configuration/optimization/#optimizationsplitchunks
+ webpackConfig.optimization.splitChunks = {
+ cacheGroups: {
+ vendor: {
+ test: /\/src\//,
+ name: 'element-ui',
+ chunks: 'all'
}
- },
- {
- test: /\.css$/,
- loaders: ['style-loader', 'css-loader', 'postcss-loader']
}
- );
- webpackConfig.plugins.push(
- new webpack.HotModuleReplacementPlugin(),
- new webpack.NamedModulesPlugin(),
- new webpack.DefinePlugin({
- 'process.env.NODE_ENV': JSON.stringify('development')
- })
- );
+ };
+ webpackConfig.devtool = false;
}
module.exports = webpackConfig;
diff --git a/build/webpack.extension.js b/build/webpack.extension.js
new file mode 100644
index 00000000000..2f8752c5956
--- /dev/null
+++ b/build/webpack.extension.js
@@ -0,0 +1,33 @@
+const path = require('path');
+const CopyWebpackPlugin = require('copy-webpack-plugin');
+const demoConfig = require('./webpack.demo');
+const webpack = require('webpack');
+const ProgressBarPlugin = require('progress-bar-webpack-plugin');
+const VueLoaderPlugin = require('vue-loader/lib/plugin');
+
+demoConfig.entry = {
+ background: path.join(process.cwd(), './examples/extension/src/background'),
+ entry: path.join(process.cwd(), './examples/extension/src/entry')
+};
+demoConfig.output = {
+ path: path.join(process.cwd(), './examples/extension/dist'),
+ filename: '[name].js'
+};
+demoConfig.plugins = [
+ new CopyWebpackPlugin([
+ { from: 'examples/extension/src/manifest.json' },
+ { from: 'examples/extension/src/icon.png' }
+ ]),
+ new VueLoaderPlugin(),
+ new ProgressBarPlugin(),
+ new webpack.LoaderOptionsPlugin({
+ vue: {
+ compilerOptions: {
+ preserveWhitespace: false
+ }
+ }
+ }),
+ new webpack.HotModuleReplacementPlugin()
+];
+demoConfig.module.rules.find(a => a.loader === 'url-loader').query = {};
+module.exports = demoConfig;
diff --git a/build/webpack.test.js b/build/webpack.test.js
index 54f4f515c57..e8f78cb7c65 100644
--- a/build/webpack.test.js
+++ b/build/webpack.test.js
@@ -1,9 +1,11 @@
const path = require('path');
const ProgressBarPlugin = require('progress-bar-webpack-plugin');
+const VueLoaderPlugin = require('vue-loader/lib/plugin');
const config = require('./config');
const webpackConfig = {
+ mode: 'development',
entry: {
app: ['./src/index.js']
},
@@ -20,17 +22,8 @@ const webpackConfig = {
}),
modules: ['node_modules']
},
- devtool: '#inline-source-map',
module: {
rules: [
- {
- enforce: 'post',
- test: /\.jsx?$/,
- loader: 'isparta-loader',
- options: { esModules: true },
- exclude: config.jsexclude,
- include: /src|packages/
- },
{
test: /\.(jsx?|babel|es6)$/,
include: process.cwd(),
@@ -41,42 +34,17 @@ const webpackConfig = {
test: /\.vue$/,
loader: 'vue-loader',
options: {
- loaders: {
- js: process.env.CI_ENV ? 'isparta-loader' : 'isparta-loader!eslint-loader'
- },
- preserveWhitespace: false
+ compilerOptions: {
+ preserveWhitespace: false
+ }
}
},
- {
- test: /\.json$/,
- loader: 'json-loader'
- },
{
test: /\.css$/,
- loaders: ['style-loader', 'css-loader', 'postcss-loader']
- },
- {
- test: /\.html$/,
- loader: 'html-loader?minimize=false'
- },
- {
- test: /\.otf|ttf|woff2?|eot(\?\S*)?$/,
- loader: 'url-loader',
- query: {
- limit: 10000,
- name: path.posix.join('static', '[name].[hash:7].[ext]')
- }
- },
- {
- test: /\.svg(\?\S*)?$/,
- loader: 'url-loader',
- query: {
- limit: 10000,
- name: path.posix.join('static', '[name].[hash:7].[ext]')
- }
+ loaders: ['style-loader', 'css-loader']
},
{
- test: /\.(gif|png|jpe?g)(\?\S*)?$/,
+ test: /\.(svg|otf|ttf|woff2?|eot|gif|png|jpe?g)(\?\S*)?$/,
loader: 'url-loader',
query: {
limit: 10000,
@@ -86,6 +54,7 @@ const webpackConfig = {
]
},
plugins: [
+ new VueLoaderPlugin()
]
};
diff --git a/commitlint.config.js b/commitlint.config.js
new file mode 100644
index 00000000000..a072cbbc879
--- /dev/null
+++ b/commitlint.config.js
@@ -0,0 +1,6 @@
+module.exports = {
+ extends: ['@commitlint/config-conventional'],
+ rules: {
+ 'type-enum': [0, 'always', ['merge', 'theme']]
+ }
+};
diff --git a/components.json b/components.json
index 7e8b58a93aa..ab1f9ab411f 100644
--- a/components.json
+++ b/components.json
@@ -67,5 +67,38 @@
"header": "./packages/header/index.js",
"aside": "./packages/aside/index.js",
"main": "./packages/main/index.js",
- "footer": "./packages/footer/index.js"
+ "footer": "./packages/footer/index.js",
+ "timeline": "./packages/timeline/index.js",
+ "timeline-item": "./packages/timeline-item/index.js",
+ "link": "./packages/link/index.js",
+ "divider": "./packages/divider/index.js",
+ "image": "./packages/image/index.js",
+ "calendar": "./packages/calendar/index.js",
+ "backtop": "./packages/backtop/index.js",
+ "infinite-scroll": "./packages/infinite-scroll/index.js",
+ "page-header": "./packages/page-header/index.js",
+ "cascader-panel": "./packages/cascader-panel/index.js",
+ "avatar": "./packages/avatar/index.js",
+ "drawer": "./packages/drawer/index.js",
+ "popconfirm": "./packages/popconfirm/index.js",
+ "lr-container": "./packages/lr-container/index.js",
+ "loading-button": "./packages/loading-button/index.js",
+ "message-box-center": "./packages/message-box-center/index.js",
+ "tabs-dotted": "./packages/tabs-dotted/index.js",
+ "data-mapper": "./packages/data-mapper/index.js",
+ "checkbox-img-button": "./packages/checkbox-img-button/index.js",
+ "radio-img-button": "./packages/radio-img-button/index.js",
+ "icon-checkbox": "./packages/icon-checkbox/index.js",
+ "status-steps": "./packages/status-steps/index.js",
+ "panel": "./packages/panel/index.js",
+ "skeleton": "./packages/skeleton/index.js",
+ "empty": "./packages/empty/index.js",
+ "affix": "./packages/affix/index.js",
+ "input-id-card": "./packages/input-id-card/index.js",
+ "input-phone": "./packages/input-phone/index.js",
+ "input-email": "./packages/input-email/index.js",
+ "switch-enhance": "./packages/switch-enhance/index.js",
+ "input-url": "./packages/input-url/index.js",
+ "edit-table": "./packages/edit-table/index.js",
+ "button-group-enhance": "./packages/button-group-enhance/index.js"
}
diff --git a/deploy.sh b/deploy.sh
new file mode 100755
index 00000000000..91f62735679
--- /dev/null
+++ b/deploy.sh
@@ -0,0 +1,8 @@
+#! /bin/sh
+#yarn deploy:build
+cd examples/element-ui
+git init
+git add .
+git commit -m 'pages'
+git remote add origin https://github.com/FEMessage/element.git
+git push origin master:gp-pages
diff --git a/examples/app.vue b/examples/app.vue
index b74619c2a56..7321d6cbd43 100644
--- a/examples/app.vue
+++ b/examples/app.vue
@@ -1,178 +1,3 @@
-
-
@@ -188,18 +13,22 @@
import zhLocale from 'main/locale/lang/zh-CN';
import enLocale from 'main/locale/lang/en';
import esLocale from 'main/locale/lang/es';
+ import frLocale from 'main/locale/lang/fr';
const lang = location.hash.replace('#', '').split('/')[1] || 'zh-CN';
const localize = lang => {
switch (lang) {
- case 'zh-CN':
- use(zhLocale);
+ case 'en-US':
+ use(enLocale);
break;
case 'es':
use(esLocale);
break;
+ case 'fr-FR':
+ use(frLocale);
+ break;
default:
- use(enLocale);
+ use(zhLocale);
}
};
localize(lang);
@@ -218,9 +47,9 @@
watch: {
lang(val) {
- if (val === 'zh-CN') {
- this.suggestJump();
- }
+ // if (val === 'zh-CN') {
+ // this.suggestJump();
+ // }
localize(val);
}
},
@@ -231,51 +60,19 @@
const href = location.href;
const preferGithub = localStorage.getItem('PREFER_GITHUB');
- if (href.indexOf('element-cn') > -1 || href.indexOf('element.faas') > -1 || preferGithub) return;
+ const cnHref = href.indexOf('eleme.cn') > -1 || href.indexOf('element-cn') > -1 || href.indexOf('element.faas') > -1;
+ if (cnHref || preferGithub) return;
setTimeout(() => {
if (this.lang !== 'zh-CN') return;
this.$confirm('建议大陆用户访问部署在国内的站点,是否跳转?', '提示')
.then(() => {
- location.href = location.href
- .replace('https:', 'http:')
- .replace('element.', 'element-cn.');
+ location.replace('https://element.eleme.cn');
})
.catch(() => {
localStorage.setItem('PREFER_GITHUB', 'true');
});
}, 1000);
}
- },
-
- mounted() {
- localize(this.lang);
- if (this.lang === 'zh-CN') {
- this.suggestJump();
- }
- // setTimeout(() => {
- // const notified = localStorage.getItem('ES_NOTIFIED_2');
- // if (!notified && this.lang !== 'es') {
- // const title = this.lang === 'zh-CN'
- // ? '西班牙语文档正式上线'
- // : 'Spanish docs now available';
- // const message = this.lang === 'zh-CN'
- // ? '点击这里进行切换'
- // : 'Click here to switch';
- // const self = this;
- // this.$notify({
- // title,
- // duration: 0,
- // message,
- // onClick() {
- // self.$router.push('/es');
- // localStorage.setItem('ES_NOTIFIED_2', 1);
- // },
- // onClose() {
- // localStorage.setItem('ES_NOTIFIED_2', 1);
- // }
- // });
- // }
- // }, 3500);
}
};
diff --git a/examples/assets/images/duotai.svg b/examples/assets/images/duotai.svg
deleted file mode 100644
index e8735a0f917..00000000000
--- a/examples/assets/images/duotai.svg
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
diff --git a/examples/assets/images/element-logo-small.svg b/examples/assets/images/element-logo-small.svg
index 9e185f5747e..856a3989a9c 100644
--- a/examples/assets/images/element-logo-small.svg
+++ b/examples/assets/images/element-logo-small.svg
@@ -5,7 +5,7 @@
Created with Sketch.
-
+
diff --git a/examples/assets/images/element-logo.svg b/examples/assets/images/element-logo.svg
index 8cd2c6d38b3..153d709ce41 100644
--- a/examples/assets/images/element-logo.svg
+++ b/examples/assets/images/element-logo.svg
@@ -5,7 +5,7 @@
Created with Sketch.
-
+
diff --git a/examples/assets/images/icon-check.png b/examples/assets/images/icon-check.png
new file mode 100644
index 00000000000..37663f82733
Binary files /dev/null and b/examples/assets/images/icon-check.png differ
diff --git a/examples/assets/images/icon-copy.png b/examples/assets/images/icon-copy.png
new file mode 100644
index 00000000000..3837bf3f802
Binary files /dev/null and b/examples/assets/images/icon-copy.png differ
diff --git a/examples/assets/images/icon-download.png b/examples/assets/images/icon-download.png
new file mode 100644
index 00000000000..4a81a05efd3
Binary files /dev/null and b/examples/assets/images/icon-download.png differ
diff --git a/examples/assets/images/icon-edit.png b/examples/assets/images/icon-edit.png
new file mode 100644
index 00000000000..050f7028c12
Binary files /dev/null and b/examples/assets/images/icon-edit.png differ
diff --git a/examples/assets/images/icon-redo.svg b/examples/assets/images/icon-redo.svg
new file mode 100644
index 00000000000..2333225412e
--- /dev/null
+++ b/examples/assets/images/icon-redo.svg
@@ -0,0 +1,19 @@
+
+
\ No newline at end of file
diff --git a/examples/assets/images/icon-undo.svg b/examples/assets/images/icon-undo.svg
new file mode 100644
index 00000000000..a7301f50c99
--- /dev/null
+++ b/examples/assets/images/icon-undo.svg
@@ -0,0 +1,19 @@
+
+
\ No newline at end of file
diff --git a/examples/assets/images/icon-upload.svg b/examples/assets/images/icon-upload.svg
new file mode 100644
index 00000000000..157551000a5
--- /dev/null
+++ b/examples/assets/images/icon-upload.svg
@@ -0,0 +1,19 @@
+
+
\ No newline at end of file
diff --git a/examples/assets/images/intro-theme-b.png b/examples/assets/images/intro-theme-b.png
new file mode 100644
index 00000000000..46a5e22bc83
Binary files /dev/null and b/examples/assets/images/intro-theme-b.png differ
diff --git a/examples/assets/images/term-arial.png b/examples/assets/images/term-arial.png
new file mode 100644
index 00000000000..c5d2210067e
Binary files /dev/null and b/examples/assets/images/term-arial.png differ
diff --git a/examples/assets/images/term-helvetica.png b/examples/assets/images/term-helvetica.png
new file mode 100644
index 00000000000..f0e8af988f1
Binary files /dev/null and b/examples/assets/images/term-helvetica.png differ
diff --git a/examples/assets/images/term-hiragino.png b/examples/assets/images/term-hiragino.png
new file mode 100644
index 00000000000..e04fa23077d
Binary files /dev/null and b/examples/assets/images/term-hiragino.png differ
diff --git a/examples/assets/images/term-microsoft.png b/examples/assets/images/term-microsoft.png
new file mode 100644
index 00000000000..b1c03c04bd9
Binary files /dev/null and b/examples/assets/images/term-microsoft.png differ
diff --git a/examples/assets/images/term-pingfang.png b/examples/assets/images/term-pingfang.png
new file mode 100644
index 00000000000..f56b7c17177
Binary files /dev/null and b/examples/assets/images/term-pingfang.png differ
diff --git a/examples/assets/images/term-sf.png b/examples/assets/images/term-sf.png
new file mode 100644
index 00000000000..65a53a76584
Binary files /dev/null and b/examples/assets/images/term-sf.png differ
diff --git a/examples/assets/images/theme-index-blue.png b/examples/assets/images/theme-index-blue.png
new file mode 100644
index 00000000000..94d126232de
Binary files /dev/null and b/examples/assets/images/theme-index-blue.png differ
diff --git a/examples/assets/images/theme-index-icon.svg b/examples/assets/images/theme-index-icon.svg
new file mode 100644
index 00000000000..e8d95dc3594
--- /dev/null
+++ b/examples/assets/images/theme-index-icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/examples/assets/images/theme-index-red.png b/examples/assets/images/theme-index-red.png
new file mode 100644
index 00000000000..1a7f0d768f9
Binary files /dev/null and b/examples/assets/images/theme-index-red.png differ
diff --git a/examples/assets/images/theme-intro.png b/examples/assets/images/theme-intro.png
new file mode 100644
index 00000000000..bb5da7a2df3
Binary files /dev/null and b/examples/assets/images/theme-intro.png differ
diff --git a/examples/assets/images/typography.png b/examples/assets/images/typography.png
new file mode 100644
index 00000000000..2063d91d646
Binary files /dev/null and b/examples/assets/images/typography.png differ
diff --git a/examples/assets/restaurants.json b/examples/assets/restaurants.json
deleted file mode 100644
index d49a1e094ed..00000000000
--- a/examples/assets/restaurants.json
+++ /dev/null
@@ -1,3108 +0,0 @@
-[{
- "activities": [{
- "description": "在线支付满25减10,满45减20",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11465478,
- "name": "满减优惠",
- "tips": "在线支付满25减10,满45减20"
- }],
- "address": "长宁区新渔路144号",
- "bidding": "{\"target\":{\"restaurantId\":799311,\"weight\":80,\"probability\":16.65989112854004},\"next\":{\"restaurantId\":1235633,\"weight\":180,\"probability\":6.841090202331543}}",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": "三全鲜食,专注于新鲜的体验 , 打造便捷生活,缔造美味健康!",
- "distance": 1318,
- "float_delivery_fee": 5,
- "float_minimum_order_amount": 20,
- "id": 799311,
- "image_path": "1f63d3e5f220e77bb0bd9781c97d47b0png",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.215656,
- "longitude": 121.367698,
- "name": "三全鲜食(北新泾店)",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["10:00/20:00"],
- "order_lead_time": 38,
- "phone": "15000044134 17721416326",
- "piecewise_agent_fee": {
- "description": "配送费¥5",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 5,
- "price": 20
- }]
- },
- "promotion_info": "你好,我叫三全鲜食,是个胖子,在认真做饭。卖的米饭加了燕麦,办公室坐久了,吃这个对肠胃好;坚持低油低盐烹调,应酬太重,身体该轻点负担。我一直想:约你去健康大道上散个步...",
- "rating": 4.4,
- "rating_count": 44,
- "recent_order_num": 211,
- "recommend": {
- "reason": "商家推广",
- "track": "{\"rankType\":\"8\"}"
- },
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }, {
- "description": "准时必达,超时秒赔",
- "icon_color": "57A9FF",
- "icon_name": "准",
- "id": 9,
- "name": "准时达"
- }]
-}, {
- "activities": [{
- "description": "在线支付满30减12,满60减24",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11582619,
- "name": "满减优惠",
- "tips": "在线支付满30减12,满60减24"
- }, {
- "description": "满39.0元赠送韩国进口饮料1份",
- "icon_color": "3cc791",
- "icon_name": "赠",
- "id": 11780530,
- "name": "满赠优惠",
- "tips": "满39.0元赠送韩国进口饮料1份"
- }],
- "address": "上海市长宁区淞虹路661号",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": "",
- "distance": 1322,
- "float_delivery_fee": 5,
- "float_minimum_order_amount": 20,
- "id": 1267706,
- "image_path": "8d74d3ce7eee88d92d7005b64d32640epng",
- "is_new": true,
- "is_premium": false,
- "latitude": 31.21328,
- "longitude": 121.36104,
- "name": "Hot honey 首尔炸鸡(仙霞路)",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["10:50/01:30"],
- "order_lead_time": 35,
- "phone": "14752582500",
- "piecewise_agent_fee": {
- "description": "配送费¥5",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 5,
- "price": 20
- }]
- },
- "promotion_info": "",
- "rating": 4.9,
- "rating_count": 28,
- "recent_order_num": 97,
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }, {
- "description": "准时必达,超时秒赔",
- "icon_color": "57A9FF",
- "icon_name": "准",
- "id": 9,
- "name": "准时达"
- }]
-}, {
- "activities": [{
- "description": "在线支付满30减8,满50减12,满75减15",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11323542,
- "name": "满减优惠",
- "tips": "在线支付满30减8,满50减12,满75减15"
- }, {
- "description": "满108.0元赠送Rio鸡尾酒(青柠味)1份",
- "icon_color": "3cc791",
- "icon_name": "赠",
- "id": 11592505,
- "name": "满赠优惠",
- "tips": "满108.0元赠送Rio鸡尾酒(青柠味)1份"
- }],
- "address": "上海市普陀区真北路988号创邑金沙谷6号楼113",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": "~香港厨师 精致港味~",
- "distance": 2590,
- "float_delivery_fee": 5,
- "float_minimum_order_amount": 20,
- "id": 369999,
- "image_path": "3cc16c5507df1927a2dfd774be5e5550png",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.23579,
- "longitude": 121.38346,
- "name": "新旺角茶餐厅",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["10:00/20:00"],
- "order_lead_time": 37,
- "phone": "13801662502",
- "piecewise_agent_fee": {
- "description": "满70配送费¥2,满20付¥7,不满20付¥9 (费用包含超距加收¥2)",
- "extra_fee": 2,
- "is_extra": true,
- "rules": [{
- "fee": 9,
- "price": 0
- }, {
- "fee": 7,
- "price": 20
- }, {
- "fee": 2,
- "price": 70
- }]
- },
- "promotion_info": "优质商家,饿饿推荐!本店优先配送饿了么订单,不能网上订餐然后上门自取。客服电话:021-10105757。",
- "rating": 3.7,
- "rating_count": 122,
- "recent_order_num": 635,
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }, {
- "description": "准时必达,超时秒赔",
- "icon_color": "57A9FF",
- "icon_name": "准",
- "id": 9,
- "name": "准时达"
- }]
-}, {
- "activities": [{
- "description": "在线支付满27减6,满35减9,满50减13,满100减22",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11394560,
- "name": "满减优惠",
- "tips": "在线支付满27减6,满35减9,满50减13,满100减22"
- }, {
- "description": "(不与其他活动同享)新用户下单立减20.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11325228,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减20.0元"
- }],
- "address": "天山西路438号",
- "bidding": "{\"target\":{\"restaurantId\":454414,\"weight\":50,\"probability\":7.78886079788208},\"next\":null}",
- "description": "本店支持饿了么网上订餐",
- "distance": 888,
- "float_delivery_fee": 0,
- "float_minimum_order_amount": 15,
- "id": 454414,
- "image_path": "89c40be0dd657e4a32789d77efe0cec2jpeg",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.217949,
- "longitude": 121.363526,
- "name": "泷千家(天山西路店)",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["10:00/21:30"],
- "order_lead_time": 30,
- "phone": "18621557849",
- "piecewise_agent_fee": {
- "description": "免配送费",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 0,
- "price": 15
- }]
- },
- "promotion_info": "注:1、本店推荐陛下您在“饿了么”订餐—饭点较忙,电话常占线,本店优先配送饿了么订单。2、雨天路滑,外卖小哥会及时送达,避免催促发生事故。3、外卖制作+配送都需要消耗时间,为了能及时用餐,希望大家提前半小时以上预定,避开高峰拥堵。4、下单后,请务必备注个人口味与需求,避免出错",
- "rating": 4.8,
- "rating_count": 210,
- "recent_order_num": 393,
- "status": 1,
- "supports": []
-}, {
- "activities": [{
- "description": "在线支付满25减3,满35减4,满50减8",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11521410,
- "name": "满减优惠",
- "tips": "在线支付满25减3,满35减4,满50减8"
- }],
- "address": "上海市长宁区金钟路968号1幢18号楼一层商铺18-101",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": "胖仙女(凌空SOHO店)",
- "distance": 1343,
- "float_delivery_fee": 5,
- "float_minimum_order_amount": 20,
- "id": 974872,
- "image_path": "606ca4f0dfcf2b475c4140dd8361b93cpng",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.2135896880521,
- "longitude": 121.354956185256,
- "name": "胖仙女纸杯蛋糕(上海凌空店)",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["09:40/21:00"],
- "order_lead_time": 36,
- "phone": "13818003177",
- "piecewise_agent_fee": {
- "description": "配送费¥5",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 5,
- "price": 20
- }]
- },
- "promotion_info": "",
- "rating": 4.6,
- "rating_count": 23,
- "recent_order_num": 52,
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }, {
- "description": "该商家支持开发票,开票订单金额300.0元起,请在下单时填写好发票抬头",
- "icon_color": "9071CB",
- "icon_name": "票",
- "id": 4,
- "name": "开发票"
- }, {
- "description": "准时必达,超时秒赔",
- "icon_color": "57A9FF",
- "icon_name": "准",
- "id": 9,
- "name": "准时达"
- }]
-}, {
- "activities": [{
- "description": "在线支付满27减3,满50减4,满75减5,满100减6",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11380887,
- "name": "满减优惠",
- "tips": "在线支付满27减3,满50减4,满75减5,满100减6"
- }, {
- "description": "(不与其他活动同享)新用户下单立减20.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11325228,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减20.0元"
- }],
- "address": "上海市长宁区金钟路633号",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": "",
- "distance": 534,
- "float_delivery_fee": 5,
- "float_minimum_order_amount": 20,
- "id": 812017,
- "image_path": "4ea8e374887cfc93a8a9c9b3675042b7jpeg",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.2203030319986,
- "longitude": 121.359984758636,
- "name": "贡茶",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["10:00/20:00"],
- "order_lead_time": 24,
- "phone": "15901638090",
- "piecewise_agent_fee": {
- "description": "配送费¥5",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 5,
- "price": 20
- }]
- },
- "promotion_info": "我们的愿景是成为魔都最有创意的美食小店,为此我们一直在努力,希望同为有理想的你们能多多支持我们。如果你也曾经吃到过令你“没朋友”的美食想与大家分享,欢迎来我们店交流。",
- "rating": 4.5,
- "rating_count": 18,
- "recent_order_num": 122,
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }, {
- "description": "准时必达,超时秒赔",
- "icon_color": "57A9FF",
- "icon_name": "准",
- "id": 9,
- "name": "准时达"
- }]
-}, {
- "activities": [{
- "description": "在线支付满30减6,满50减10,满80减16,满100减20",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11321703,
- "name": "满减优惠",
- "tips": "在线支付满30减6,满50减10,满80减16,满100减20"
- }, {
- "description": "(不与其他活动同享)新用户下单立减10.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11407498,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减10.0元"
- }],
- "address": "上海市嘉定区曹安公路曹安路1685号",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": "叫外卖,上饿了么。",
- "distance": 2732,
- "float_delivery_fee": 5,
- "float_minimum_order_amount": 20,
- "id": 573057,
- "image_path": "2f9070f8cd62a2b712d200e8ef9faa95jpeg",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.249038,
- "longitude": 121.365501,
- "name": "豪大大香鸡排超级奶爸",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["00:00/24:00"],
- "order_lead_time": 30,
- "phone": "18201986108",
- "piecewise_agent_fee": {
- "description": "满70配送费¥2,满20付¥7,不满20付¥9 (费用包含超距加收¥2)",
- "extra_fee": 2,
- "is_extra": true,
- "rules": [{
- "fee": 9,
- "price": 0
- }, {
- "fee": 7,
- "price": 20
- }, {
- "fee": 2,
- "price": 70
- }]
- },
- "promotion_info": "各位小主,本店优先配送饿了么,下雪天路滑送餐较慢,请多多担待哈!如果您的美食凉了,或者口味不好,一定要第一时间和本店联系,做的不好的的地方我们一定加油改进,在这个寒冷的冬天,我们一定努力温暖您的胃,如您对送餐服务口味满意的请给5星好评哦!!饿了么网络点餐,汇集周边所有美食,汉堡,炸鸡,水果,生鲜,烧烤,超市,美食快餐应有尽有,美好生活,触手可得!!!",
- "rating": 3.9,
- "rating_count": 190,
- "recent_order_num": 812,
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }, {
- "description": "准时必达,超时秒赔",
- "icon_color": "57A9FF",
- "icon_name": "准",
- "id": 9,
- "name": "准时达"
- }]
-}, {
- "activities": [{
- "description": "(不与其他活动同享)新用户下单立减8.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11331255,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减8.0元"
- }],
- "address": "上海市普陀区同普路1435号",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": "本店支持饿了么网上订餐",
- "distance": 1110,
- "float_delivery_fee": 4,
- "float_minimum_order_amount": 20,
- "id": 692202,
- "image_path": "58a9bf7ad043c3268e5ca93c775ee310jpeg",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.233949,
- "longitude": 121.364608,
- "name": "茶芝兰(奶茶,手抓饼)",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["09:00/22:30"],
- "order_lead_time": 24,
- "phone": "13661697379",
- "piecewise_agent_fee": {
- "description": "配送费¥4",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 4,
- "price": 20
- }]
- },
- "promotion_info": "各位小主,本店优先配送饿了么,下雪天路滑送餐较慢,请多多担待哈!如果您的美食凉了,或者口味不好,一定要第一时间和本店联系,做的不好的地方我们一定加油改进,在这个寒冷的冬季,我们一定努力温暖您的胃,如您对送餐服务口味满意请给5分好评呦!!!饿了么网络订餐,汇集周边所有美食,汉堡、炸鸡、水果、生鲜、烧烤、超市、美食快餐应有尽有!美好生活,触手可得!!!",
- "rating": 4.5,
- "rating_count": 13,
- "recent_order_num": 86,
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }, {
- "description": "准时必达,超时秒赔",
- "icon_color": "57A9FF",
- "icon_name": "准",
- "id": 9,
- "name": "准时达"
- }]
-}, {
- "activities": [{
- "description": "在线支付满30减15,满55减18,满99减25",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11745520,
- "name": "满减优惠",
- "tips": "在线支付满30减15,满55减18,满99减25"
- }, {
- "description": "(不与其他活动同享)新用户下单立减8.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11763371,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减8.0元"
- }],
- "address": "上海市北翟路1444弄81号B幢-107",
- "description": "北翟路店",
- "distance": 1712,
- "float_delivery_fee": 0,
- "float_minimum_order_amount": 20,
- "id": 1249130,
- "image_path": "d04120664ef124d4b7b9025a33077eb6png",
- "is_new": true,
- "is_premium": false,
- "latitude": 31.2273530703567,
- "longitude": 121.341508485247,
- "name": "十二泷町",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["09:30/21:40"],
- "order_lead_time": 40,
- "phone": "18321927529",
- "piecewise_agent_fee": {
- "description": "免配送费",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 0,
- "price": 20
- }]
- },
- "promotion_info": "新店开业给力促销 十二泷町只做精品 欢迎光临",
- "rating": 4.2,
- "rating_count": 214,
- "recent_order_num": 793,
- "status": 1,
- "supports": []
-}, {
- "activities": [{
- "description": "在线支付满30减10,满50减16,满80减20,满100减25",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11713861,
- "name": "满减优惠",
- "tips": "在线支付满30减10,满50减16,满80减20,满100减25"
- }, {
- "description": "(不与其他活动同享)新用户下单立减10.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11407498,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减10.0元"
- }],
- "address": "上海市嘉定区新郁路817号",
- "description": "100%现磨咖啡配火烤美食",
- "distance": 3078,
- "float_delivery_fee": 4,
- "float_minimum_order_amount": 45,
- "id": 315324,
- "image_path": "bc55266432a43c3d49576acfe8baa855jpeg",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.252609,
- "longitude": 121.362281,
- "name": "星移浓缩咖啡",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["07:50/22:30"],
- "order_lead_time": 39,
- "phone": "15801946520 18701977399",
- "piecewise_agent_fee": {
- "description": "配送费¥4",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 4,
- "price": 45
- }]
- },
- "promotion_info": "各位小主,本店优先配送饿了么,下雪天路滑送餐较慢,请多多担待哈!如果您的美食凉了,或者口味不好,一定要第一时间和本店联系,做的不好的的地方我们一定加油改进,在这个寒冷的冬天,我们一定努力温暖您的胃,如您对送餐服务口味满意的请给5星好评哦!!饿了么网络点餐,汇集周边所有美食,汉堡,炸鸡,水果,生鲜,烧烤,超市,美食快餐应有尽有,美好生活,触手可得!!!",
- "rating": 4.6,
- "rating_count": 674,
- "recent_order_num": 1945,
- "status": 1,
- "supports": []
-}, {
- "activities": [{
- "description": "在线支付满30减6,满50减10,满80减16,满100减20",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11321703,
- "name": "满减优惠",
- "tips": "在线支付满30减6,满50减10,满80减16,满100减20"
- }, {
- "description": "满60.0元赠送酸梅汤1份",
- "icon_color": "3cc791",
- "icon_name": "赠",
- "id": 11667023,
- "name": "满赠优惠",
- "tips": "满60.0元赠送酸梅汤1份"
- }, {
- "description": "(不与其他活动同享)新用户下单立减10.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11407498,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减10.0元"
- }],
- "address": "嘉定区曹安路1611号",
- "bidding": "{\"target\":{\"restaurantId\":350268,\"weight\":90,\"probability\":5.929296016693115},\"next\":null}",
- "description": "主营阿姨奶茶和豪大大鸡排",
- "distance": 3110,
- "float_delivery_fee": 5,
- "float_minimum_order_amount": 40,
- "id": 350268,
- "image_path": "d7863ee62fe7757c23fdf295c7ab5dc4jpeg",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.252109,
- "longitude": 121.367546,
- "name": "阿姨奶茶/豪大大",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["00:00/24:00"],
- "order_lead_time": 34,
- "phone": "18721119782",
- "piecewise_agent_fee": {
- "description": "配送费¥5",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 5,
- "price": 40
- }]
- },
- "promotion_info": "各位小主,如果您的美食凉了,或者口味不好,一定要第一时间和本店联系,做的不好的的地方我们一定加油改进,本店奶茶有2种口味可选,下单请备注,夏季新品全新上市。敬请品尝",
- "rating": 4.4,
- "rating_count": 901,
- "recent_order_num": 2834,
- "status": 1,
- "supports": []
-}, {
- "activities": [{
- "description": "在线支付满30减3,满50减8,满80减12",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11305606,
- "name": "满减优惠",
- "tips": "在线支付满30减3,满50减8,满80减12"
- }, {
- "description": "(不与其他活动同享)新用户下单立减15.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11483363,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减15.0元"
- }, {
- "description": "满72.0元赠送白雪黑糯米1份",
- "icon_color": "3cc791",
- "icon_name": "赠",
- "id": 11337736,
- "name": "满赠优惠",
- "tips": "满72.0元赠送白雪黑糯米1份"
- }],
- "address": "嘉定区曹安公路2383弄55号",
- "bidding": "{\"target\":{\"restaurantId\":1025885,\"weight\":10,\"probability\":8.761201858520508},\"next\":null}",
- "description": "新店入住江桥,还望大家多多关照。总店在顾村,以打造优质外卖,希望能服务好江桥周边群众。有任何问题,欢迎电话或者微信我lastone2222,谢谢。",
- "distance": 4303,
- "float_delivery_fee": 8,
- "float_minimum_order_amount": 48,
- "id": 1025885,
- "image_path": "114ba96cb2770ed092551a132508c583jpeg",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.26018,
- "longitude": 121.340367,
- "name": "新麦甜四季甜品炸鸡",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["10:20/23:05"],
- "order_lead_time": 40,
- "phone": "13004156997",
- "piecewise_agent_fee": {
- "description": "配送费¥8",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 8,
- "price": 48
- }]
- },
- "promotion_info": "新店开张,希望结识更多朋友,如没有饿了么红包,可添加我微信lastone2222。更有优惠在微信中分享大家,谢谢。",
- "rating": 4.5,
- "rating_count": 526,
- "recent_order_num": 1468,
- "status": 1,
- "supports": [{
- "description": "该商家支持开发票,开票订单金额1000.0元起,请在下单时填写好发票抬头",
- "icon_color": "9071CB",
- "icon_name": "票",
- "id": 4,
- "name": "开发票"
- }]
-}, {
- "activities": [{
- "description": "在线支付满78减6,满108减10",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11729861,
- "name": "满减优惠",
- "tips": "在线支付满78减6,满108减10"
- }, {
- "description": "(不与其他活动同享)新用户下单立减15.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11483363,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减15.0元"
- }],
- "address": "嘉定区江桥镇曹安公路2409号1F,2383弄62号1F",
- "bidding": "{\"target\":{\"restaurantId\":528740,\"weight\":100,\"probability\":7.419137001037598},\"next\":null}",
- "description": "叫外卖,上饿了么,优惠一大波,快乐做吃货。",
- "distance": 4388,
- "float_delivery_fee": 4,
- "float_minimum_order_amount": 35,
- "id": 528740,
- "image_path": "16473df4a84509c6be80538e811f8d95jpeg",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.2608095910523,
- "longitude": 121.339828832568,
- "name": "Monica摩托主题咖啡店",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["10:00/22:00"],
- "order_lead_time": 41,
- "phone": "18019077520",
- "piecewise_agent_fee": {
- "description": "配送费¥4",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 4,
- "price": 35
- }]
- },
- "promotion_info": "Monica摩托主题咖啡店,饿了么专线18019077520,有任何问题请联系我们!",
- "rating": 4.6,
- "rating_count": 191,
- "recent_order_num": 708,
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }]
-}, {
- "activities": [{
- "description": "在线支付满25减10",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11497425,
- "name": "满减优惠",
- "tips": "在线支付满25减10"
- }, {
- "description": "(不与其他活动同享)新用户下单立减20.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11325228,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减20.0元"
- }],
- "address": "上海长宁区金钟路968号9号楼地下一层",
- "description": "本店支持饿了么网上订餐",
- "distance": 767,
- "float_delivery_fee": 2,
- "float_minimum_order_amount": 30,
- "id": 517091,
- "image_path": "c1b0f058b2817296b133e4a6d977dc7fjpeg",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.222092,
- "longitude": 121.352028,
- "name": "浮生若茶(凌空soho店)",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["09:00/20:00"],
- "order_lead_time": 35,
- "phone": "60317291",
- "piecewise_agent_fee": {
- "description": "配送费¥2",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 2,
- "price": 30
- }]
- },
- "promotion_info": "1、本店推荐陛下您在“饿了么”订餐—饭点较忙,电话常占线,本店优先配送饿了么订单。2、雨天路滑,外卖小哥会及时送达,避免催促发生事故。3、外卖制作+配送都需要消耗时间,为了能及时用餐,希望大家提前半小时以上预定,避开高峰拥堵。",
- "rating": 4.7,
- "rating_count": 185,
- "recent_order_num": 525,
- "status": 1,
- "supports": []
-}, {
- "activities": [{
- "description": "在线支付满30减5,满60减12,满90减17,满120减22",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11381105,
- "name": "满减优惠",
- "tips": "在线支付满30减5,满60减12,满90减17,满120减22"
- }, {
- "description": "(不与其他活动同享)新用户下单立减20.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11325228,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减20.0元"
- }],
- "address": "上海市长宁区天山西路119号",
- "bidding": "{\"target\":{\"restaurantId\":956142,\"weight\":30,\"probability\":5.793898105621338},\"next\":null}",
- "description": "放慢节奏,停下来看一看风景,让灵魂跟上脚步!\nNONO JUIC是一家80后创业的小店。\n“快乐•慢活”的是我们的生活追求;\n不加水不加糖的100%纯鲜榨果蔬汁,是我们的载体;\n超值的价格、高品质的服务,是我们的态度;\n让白领拥有自然、健康、快乐 的新商务生活 ,是我们的目标!",
- "distance": 1825,
- "float_delivery_fee": 4,
- "float_minimum_order_amount": 0,
- "id": 956142,
- "image_path": "c75e04425d7afd93c48393d361df13c7jpeg",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.216055,
- "longitude": 121.375325,
- "name": "NONO JUICE 鲜榨果汁",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["09:30/20:55"],
- "order_lead_time": 38,
- "phone": "18017696773 62036773",
- "piecewise_agent_fee": {
- "description": "配送费¥4",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 4,
- "price": 0
- }]
- },
- "promotion_info": "新鲜 健康!\n本店全开放式操作、不加水的100%纯鲜榨果蔬汁,采用韩国进口原汁机榨汁,无金属刀片接触,氧化慢、出汁率高、富含果肉,原汁原味,口感更好。",
- "rating": 4.8,
- "rating_count": 29,
- "recent_order_num": 101,
- "status": 1,
- "supports": [{
- "description": "该商家支持开发票,开票订单金额80.0元起,请在下单时填写好发票抬头",
- "icon_color": "9071CB",
- "icon_name": "票",
- "id": 4,
- "name": "开发票"
- }]
-}, {
- "activities": [],
- "address": "上海市长宁区仙霞西路",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": "CoCo都可(北新泾店)",
- "distance": 1851,
- "float_delivery_fee": 5,
- "float_minimum_order_amount": 20,
- "id": 623791,
- "image_path": "d38997b5a8e5076a2888f11baa44a473jpeg",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.208887,
- "longitude": 121.3638,
- "name": "CoCo都可(北新泾店)",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["10:00/21:00"],
- "order_lead_time": 20,
- "phone": "13681954727",
- "piecewise_agent_fee": {
- "description": "配送费¥5",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 5,
- "price": 20
- }]
- },
- "promotion_info": "",
- "rating": 4.8,
- "rating_count": 179,
- "recent_order_num": 979,
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }, {
- "description": "准时必达,超时秒赔",
- "icon_color": "57A9FF",
- "icon_name": "准",
- "id": 9,
- "name": "准时达"
- }]
-}, {
- "activities": [{
- "description": "在线支付满25减3",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11404771,
- "name": "满减优惠",
- "tips": "在线支付满25减3"
- }, {
- "description": "原价10元,现价5元。就是那么优惠",
- "icon_color": "f1884f",
- "icon_name": "5",
- "id": 1449976,
- "name": "(不与其它活动同享)中杯半价",
- "tips": "(不与其它活动同享)中杯半价"
- }, {
- "description": "手榨香柠茉香绿茶(大杯)原价13,现价8元",
- "icon_color": "f1884f",
- "icon_name": "特",
- "id": 1449975,
- "name": "(不与其它活动同享)大杯特惠",
- "tips": "(不与其它活动同享)大杯特惠"
- }],
- "address": "上海市长宁区天山西路567号1层R117号店铺",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": " 快乐柠檬(神州智慧店)",
- "distance": 848,
- "float_delivery_fee": 5,
- "float_minimum_order_amount": 20,
- "id": 284945,
- "image_path": "55bf67cc9c994d2b8ddbd4b580e013aepng",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.21776,
- "longitude": 121.35677,
- "name": "快乐柠檬(神州智慧店)",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["10:00/20:00"],
- "order_lead_time": 22,
- "phone": "021-62156296",
- "piecewise_agent_fee": {
- "description": "配送费¥5",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 5,
- "price": 20
- }]
- },
- "promotion_info": "",
- "rating": 4.9,
- "rating_count": 7,
- "recent_order_num": 124,
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }, {
- "description": "准时必达,超时秒赔",
- "icon_color": "57A9FF",
- "icon_name": "准",
- "id": 9,
- "name": "准时达"
- }]
-}, {
- "activities": [{
- "description": "在线支付满30减8,满60减12,满80减15",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11321804,
- "name": "满减优惠",
- "tips": "在线支付满30减8,满60减12,满80减15"
- }, {
- "description": "(不与其他活动同享)新用户下单立减8.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11426321,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减8.0元"
- }],
- "address": "上海市普陀区光复西路丹巴路28弄6号楼819",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": "",
- "distance": 2168,
- "float_delivery_fee": 5,
- "float_minimum_order_amount": 20,
- "id": 1033368,
- "image_path": "46953c0f5cdceb1da9bf45f3da063c2bjpeg",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.2224006116865,
- "longitude": 121.38186007503,
- "name": "Merci Paul cafe",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["10:00/18:00"],
- "order_lead_time": 38,
- "phone": "13917882254",
- "piecewise_agent_fee": {
- "description": "满70配送费¥1,满20付¥6,不满20付¥8 (费用包含超距加收¥1)",
- "extra_fee": 1,
- "is_extra": true,
- "rules": [{
- "fee": 8,
- "price": 0
- }, {
- "fee": 6,
- "price": 20
- }, {
- "fee": 1,
- "price": 70
- }]
- },
- "promotion_info": "由于小店是聘请第三方进行外送,在小店制作的饮品在出品时能够保证质量,但无法对第三方外送人员进行质控。希望各位客官能够在收到您的饮品时当场验收一下。谢谢啦!希望各位客官能够时常光顾小店!",
- "rating": 4.5,
- "rating_count": 9,
- "recent_order_num": 57,
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }, {
- "description": "准时必达,超时秒赔",
- "icon_color": "57A9FF",
- "icon_name": "准",
- "id": 9,
- "name": "准时达"
- }]
-}, {
- "activities": [{
- "description": "在线支付满50减4",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11333884,
- "name": "满减优惠",
- "tips": "在线支付满50减4"
- }, {
- "description": "(不与其他活动同享)新用户下单立减10.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11763283,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减10.0元"
- }],
- "address": "上海市长宁区仙霞西路88号第一层G05-F01-1-306",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": "猫山王(西郊百联店)",
- "distance": 2083,
- "float_delivery_fee": 5,
- "float_minimum_order_amount": 20,
- "id": 455634,
- "image_path": "a3fb209c0497a26a16f2737cca32aa2bpng",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.208433,
- "longitude": 121.369323,
- "name": "猫山王(西郊百联店)",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["10:00/21:00"],
- "order_lead_time": 30,
- "phone": "18516639405",
- "piecewise_agent_fee": {
- "description": "配送费¥5",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 5,
- "price": 20
- }]
- },
- "promotion_info": "",
- "rating": 4.9,
- "rating_count": 13,
- "recent_order_num": 72,
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }, {
- "description": "准时必达,超时秒赔",
- "icon_color": "57A9FF",
- "icon_name": "准",
- "id": 9,
- "name": "准时达"
- }]
-}, {
- "activities": [{
- "description": "在线支付满35减5",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11359154,
- "name": "满减优惠",
- "tips": "在线支付满35减5"
- }, {
- "description": "(不与其他活动同享)新用户下单立减8.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11331255,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减8.0元"
- }],
- "address": "上海市普陀区棕榈路",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": "港式饮料,甜品,蛋糕,咖啡",
- "distance": 1231,
- "float_delivery_fee": 5,
- "float_minimum_order_amount": 20,
- "id": 350348,
- "image_path": "5f1234a6a8d6b0f3fcf1e087dd7e5eedjpeg",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.2359271347658,
- "longitude": 121.361772541938,
- "name": "枪会山",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["11:00/22:00"],
- "order_lead_time": 27,
- "phone": "13916530820",
- "piecewise_agent_fee": {
- "description": "满70免配送费,满20付¥5,不满20付¥7",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 7,
- "price": 0
- }, {
- "fee": 5,
- "price": 20
- }, {
- "fee": 0,
- "price": 70
- }]
- },
- "promotion_info": "公司訂購外賣大單?️優惠!饮料温度请备注!起送费点不到的朋友可致电13916530820直接订餐,或者加微信13916530820订餐谢谢!",
- "rating": 4.3,
- "rating_count": 25,
- "recent_order_num": 121,
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }, {
- "description": "准时必达,超时秒赔",
- "icon_color": "57A9FF",
- "icon_name": "准",
- "id": 9,
- "name": "准时达"
- }]
-}, {
- "activities": [{
- "description": "(不与其他活动同享)新用户下单立减10.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11763283,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减10.0元"
- }],
- "address": "元丰天山花园(东门) 双流路267号",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": "",
- "distance": 2225,
- "float_delivery_fee": 5,
- "float_minimum_order_amount": 20,
- "id": 1270944,
- "image_path": "d8f60dc555a702aa1a0656349a8cfdf9png",
- "is_new": true,
- "is_premium": false,
- "latitude": 31.217355,
- "longitude": 121.380867,
- "name": "纵食",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["10:00/17:00"],
- "order_lead_time": 0,
- "phone": "15502140533",
- "piecewise_agent_fee": {
- "description": "配送费¥5",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 5,
- "price": 20
- }]
- },
- "promotion_info": "纯果汁现榨,无添加,假一赔十!\n快餐食品由中央厨房加工制作,品类较少,注重安全卫生。如有不足或建议,请随时拨打电话 15502140533!",
- "rating": 0,
- "rating_count": 0,
- "recent_order_num": 1,
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }, {
- "description": "准时必达,超时秒赔",
- "icon_color": "57A9FF",
- "icon_name": "准",
- "id": 9,
- "name": "准时达"
- }]
-}, {
- "activities": [{
- "description": "在线支付满27减7,满50减13,满75减19,满100减25",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11462511,
- "name": "满减优惠",
- "tips": "在线支付满27减7,满50减13,满75减19,满100减25"
- }, {
- "description": "(不与其他活动同享)新用户下单立减20.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11325228,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减20.0元"
- }],
- "address": "上海市长宁区天山西路",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": "",
- "distance": 719,
- "float_delivery_fee": 5,
- "float_minimum_order_amount": 20,
- "id": 933664,
- "image_path": "99fad460547712178f9b6747a8175a14jpeg",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.218679,
- "longitude": 121.360435,
- "name": "钱记",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["09:30/21:00"],
- "order_lead_time": 32,
- "phone": "17721135951",
- "piecewise_agent_fee": {
- "description": "配送费¥5",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 5,
- "price": 20
- }]
- },
- "promotion_info": "",
- "rating": 0,
- "rating_count": 0,
- "recent_order_num": 18,
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }, {
- "description": "准时必达,超时秒赔",
- "icon_color": "57A9FF",
- "icon_name": "准",
- "id": 9,
- "name": "准时达"
- }]
-}, {
- "activities": [{
- "description": "在线支付满20减11",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11721066,
- "name": "满减优惠",
- "tips": "在线支付满20减11"
- }, {
- "description": "(不与其它活动同享)限时抢购",
- "icon_color": "f07373",
- "icon_name": "折",
- "id": 1445461,
- "name": "(不与其它活动同享)限时抢购",
- "tips": "(不与其它活动同享)限时抢购"
- }, {
- "description": "(不与其他活动同享)新用户下单立减20.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11325228,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减20.0元"
- }],
- "address": "上海市长宁区通协路",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": "",
- "distance": 418,
- "float_delivery_fee": 5,
- "float_minimum_order_amount": 20,
- "id": 1052336,
- "image_path": "6337786c6f58ad517edb63755511ca38jpeg",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.22641,
- "longitude": 121.35519,
- "name": "壹杯加",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["10:00/20:30"],
- "order_lead_time": 29,
- "phone": "021-61550517",
- "piecewise_agent_fee": {
- "description": "配送费¥5",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 5,
- "price": 20
- }]
- },
- "promotion_info": "本公司可结合您的需求,为您提供企业餐饮服务方案\n1、可定制员工协议就餐、员工福利、茶歇、自助餐、团餐、订餐、商务宴请;\n2、提供场地和投影、打印、WIFI设备,可供活动、办公、会议等需求;\n3、关注壹杯加咖啡微信公众号,可得10元电子抵用券,限量发放;\n4、下午茶活动线上、线下同",
- "rating": 0,
- "rating_count": 0,
- "recent_order_num": 6,
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }, {
- "description": "准时必达,超时秒赔",
- "icon_color": "57A9FF",
- "icon_name": "准",
- "id": 9,
- "name": "准时达"
- }]
-}, {
- "activities": [{
- "description": "在线支付满30减5,满50减8",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11401063,
- "name": "满减优惠",
- "tips": "在线支付满30减5,满50减8"
- }, {
- "description": "(不与其他活动同享)新用户下单立减20.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11325228,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减20.0元"
- }],
- "address": "上海市长宁区新泾镇金钟路999号2幢(B幢)第01层第1-02A单元",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": "上海首家纯正东南亚饮品店。手作源萃,茶与鲜果的完美融合!",
- "distance": 935,
- "float_delivery_fee": 5,
- "float_minimum_order_amount": 20,
- "id": 1218762,
- "image_path": "9e912491d0455cd3c5cd0d6e65ae723dpng",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.220421,
- "longitude": 121.35111,
- "name": "唦哇嘀咖",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["09:30/18:30"],
- "order_lead_time": 23,
- "phone": "15001827782",
- "piecewise_agent_fee": {
- "description": "配送费¥5",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 5,
- "price": 20
- }]
- },
- "promotion_info": "SAWADEEKA金钟路999号携程店。上海首家纯正东南亚饮品店,唦哇嘀咖鲜萃健康饮食!",
- "rating": 0,
- "rating_count": 5,
- "recent_order_num": 35,
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }, {
- "description": "准时必达,超时秒赔",
- "icon_color": "57A9FF",
- "icon_name": "准",
- "id": 9,
- "name": "准时达"
- }]
-}, {
- "activities": [{
- "description": "在线支付满50减20",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11711818,
- "name": "满减优惠",
- "tips": "在线支付满50减20"
- }, {
- "description": "8.8元限量秒杀,每单仅限一份。",
- "icon_color": "f1884f",
- "icon_name": "秒",
- "id": 1467532,
- "name": "(不与其它活动同享)8.8元限量秒杀",
- "tips": "(不与其它活动同享)8.8元限量秒杀"
- }],
- "address": "长宁区仙霞西路88号1305室",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": "爱茜茜里(西郊百联店)",
- "distance": 2168,
- "float_delivery_fee": 5,
- "float_minimum_order_amount": 30,
- "id": 568785,
- "image_path": "55d1ee8f3acdf71798cfd3e20beabc09png",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.2083825904864,
- "longitude": 121.371048337401,
- "name": "爱茜茜里(西郊百联)",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["10:00/20:55"],
- "order_lead_time": 29,
- "phone": "021-32510279",
- "piecewise_agent_fee": {
- "description": "配送费¥5",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 5,
- "price": 30
- }]
- },
- "promotion_info": "",
- "rating": 0,
- "rating_count": 0,
- "recent_order_num": 24,
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }, {
- "description": "准时必达,超时秒赔",
- "icon_color": "57A9FF",
- "icon_name": "准",
- "id": 9,
- "name": "准时达"
- }]
-}, {
- "activities": [{
- "description": "在线支付满50减20",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11711818,
- "name": "满减优惠",
- "tips": "在线支付满50减20"
- }, {
- "description": "8.8元限量秒杀,每单仅限一份。",
- "icon_color": "f1884f",
- "icon_name": "秒",
- "id": 1467532,
- "name": "(不与其它活动同享)8.8元限量秒杀",
- "tips": "(不与其它活动同享)8.8元限量秒杀"
- }],
- "address": "上海市普陀区真北路818号近铁城市广场北区地下二楼N-B2-O2-C商铺",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": "爱茜茜里(近铁广场店)",
- "distance": 2298,
- "float_delivery_fee": 5,
- "float_minimum_order_amount": 30,
- "id": 568768,
- "image_path": "f5ec0d9cc6c220a571842b1904dc5196png",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.2331899175256,
- "longitude": 121.381500478429,
- "name": "爱茜茜里(近铁广场)",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["10:00/20:55"],
- "order_lead_time": 36,
- "phone": "021-62270191",
- "piecewise_agent_fee": {
- "description": "配送费¥5",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 5,
- "price": 30
- }]
- },
- "promotion_info": "",
- "rating": 0,
- "rating_count": 0,
- "recent_order_num": 22,
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }, {
- "description": "准时必达,超时秒赔",
- "icon_color": "57A9FF",
- "icon_name": "准",
- "id": 9,
- "name": "准时达"
- }]
-}, {
- "activities": [{
- "description": "在线支付满30减6,满50减10,满75减14",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11315952,
- "name": "满减优惠",
- "tips": "在线支付满30减6,满50减10,满75减14"
- }, {
- "description": "(不与其他活动同享)新用户下单立减8.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11331255,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减8.0元"
- }],
- "address": "普陀区金沙江路2239号金沙和美广场B1-10-6",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": "鲜果榨汁(金沙江路和美广店)",
- "distance": 1492,
- "float_delivery_fee": 5,
- "float_minimum_order_amount": 20,
- "id": 316109,
- "image_path": "7cbfa6cf02a26972036024bcabc1a676png",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.237022,
- "longitude": 121.366401,
- "name": "鲜果榨汁(金沙江路和美广店)",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["11:00/21:00"],
- "order_lead_time": 29,
- "phone": "62222677",
- "piecewise_agent_fee": {
- "description": "满70免配送费,满20付¥5,不满20付¥7",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 7,
- "price": 0
- }, {
- "fee": 5,
- "price": 20
- }, {
- "fee": 0,
- "price": 70
- }]
- },
- "promotion_info": " ",
- "rating": 0,
- "rating_count": 3,
- "recent_order_num": 27,
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }, {
- "description": "准时必达,超时秒赔",
- "icon_color": "57A9FF",
- "icon_name": "准",
- "id": 9,
- "name": "准时达"
- }]
-}, {
- "activities": [{
- "description": "在线支付满30减6,满60减18,满90减30",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11763350,
- "name": "满减优惠",
- "tips": "在线支付满30减6,满60减18,满90减30"
- }, {
- "description": "(不与其他活动同享)新用户下单立减10.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11763890,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减10.0元"
- }],
- "address": "上海市长宁区威宁路天山路341号",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": "",
- "distance": 2830,
- "float_delivery_fee": 5,
- "float_minimum_order_amount": 20,
- "id": 1121231,
- "image_path": "16be69a0f2a639e925490612c1e9fdffpng",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.2145697747183,
- "longitude": 121.386378354986,
- "name": "开心丽果(缤谷店)",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["10:00/22:00"],
- "order_lead_time": 27,
- "phone": "18516346196",
- "piecewise_agent_fee": {
- "description": "配送费¥5",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 5,
- "price": 20
- }]
- },
- "promotion_info": "",
- "rating": 0,
- "rating_count": 3,
- "recent_order_num": 26,
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }, {
- "description": "准时必达,超时秒赔",
- "icon_color": "57A9FF",
- "icon_name": "准",
- "id": 9,
- "name": "准时达"
- }]
-}, {
- "activities": [{
- "description": "在线支付满30减8,满50减11",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11521751,
- "name": "满减优惠",
- "tips": "在线支付满30减8,满50减11"
- }, {
- "description": "(不与其他活动同享)新用户下单立减8.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11547883,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减8.0元"
- }],
- "address": "上海市嘉定区丰庄路240号",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": "叫外卖,上饿了么~",
- "distance": 2158,
- "float_delivery_fee": 5,
- "float_minimum_order_amount": 20,
- "id": 329570,
- "image_path": "ad870fe71e80c85402c03f35c00f4690jpeg",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.244315,
- "longitude": 121.362098,
- "name": "超级鸡车(丰庄路店)",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["10:00/21:55"],
- "order_lead_time": 28,
- "phone": "59182012",
- "piecewise_agent_fee": {
- "description": "满70配送费¥1,满20付¥6,不满20付¥8 (费用包含超距加收¥1)",
- "extra_fee": 1,
- "is_extra": true,
- "rules": [{
- "fee": 8,
- "price": 0
- }, {
- "fee": 6,
- "price": 20
- }, {
- "fee": 1,
- "price": 70
- }]
- },
- "promotion_info": "各位小主,本店优先配送饿了么,下雪天路滑送餐较慢,请多多担待哈!如果您的美食凉了,或者口味不好,一定要第一时间和本店联系,做的不好的地方我们一定加油改进,在这个寒冷的冬季,我们一定努力温暖您的胃,如您对送餐服务口味满意请给5分好评呦!!!饿了么网络订餐,汇集周边所有美食,汉堡、炸鸡、水果、生鲜、烧烤、超市、美食快餐应有尽有!美好生活,触手可得!!!",
- "rating": 4.6,
- "rating_count": 725,
- "recent_order_num": 3275,
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }, {
- "description": "准时必达,超时秒赔",
- "icon_color": "57A9FF",
- "icon_name": "准",
- "id": 9,
- "name": "准时达"
- }]
-}, {
- "activities": [{
- "description": "在线支付满25减2,满45减6",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11764418,
- "name": "满减优惠",
- "tips": "在线支付满25减2,满45减6"
- }, {
- "description": "(不与其他活动同享)新用户下单立减5.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11776370,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减5.0元"
- }, {
- "description": "单人精彩餐超值特价",
- "icon_color": "f07373",
- "icon_name": "折",
- "id": 1449992,
- "name": "单人精彩餐超值特价",
- "tips": "单人精彩餐超值特价"
- }],
- "address": "长宁区新渔路144号",
- "description": "下载妙生活APP,手机下单优惠3-10%,1h内送达!ianhu不满意无条件退换货。总部工作时间:10:00-20:00 总部联系电话:021-62867789转分机6615 17721416326 18939910501",
- "distance": 1366,
- "float_delivery_fee": 0,
- "float_minimum_order_amount": 25,
- "id": 477768,
- "image_path": "99161bc5e0737669280b31c605e2ec34jpeg",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.212997,
- "longitude": 121.361887,
- "name": "妙生活果园(北新泾店)",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["08:30/20:30"],
- "order_lead_time": 38,
- "phone": "17721416326 18939910501 62867789-6615",
- "piecewise_agent_fee": {
- "description": "免配送费",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 0,
- "price": 25
- }]
- },
- "promotion_info": "本店配送时间从9:35开始,尽请谅解!门店服务电话:021-62867789转6615 / 客服工作时间10:30-20:30\n\n尽量将地址的具体街道、门牌号写在最前面哦,避免造成订单延误~",
- "rating": 4.3,
- "rating_count": 498,
- "recent_order_num": 1402,
- "status": 1,
- "supports": [{
- "description": "该商家支持开发票,开票订单金额100.0元起,请在下单时填写好发票抬头",
- "icon_color": "9071CB",
- "icon_name": "票",
- "id": 4,
- "name": "开发票"
- }]
-}, {
- "activities": [{
- "description": "在线支付满30减11,满60减20,满88减26",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11719544,
- "name": "满减优惠",
- "tips": "在线支付满30减11,满60减20,满88减26"
- }, {
- "description": "(不与其他活动同享)新用户下单立减20.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11325228,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减20.0元"
- }],
- "address": "长宁区淞虹路148号",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": "曾经的香,曾经的辣,曾经冥冥不忘的味道。香锅里辣,让舌尖更美好",
- "distance": 507,
- "float_delivery_fee": 5,
- "float_minimum_order_amount": 20,
- "id": 691694,
- "image_path": "7708fb67ac5ec00820cf919dbf24ea29jpeg",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.221124,
- "longitude": 121.361976,
- "name": "香宜度麻辣香锅",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["09:00/21:30"],
- "order_lead_time": 34,
- "phone": "18221159780",
- "piecewise_agent_fee": {
- "description": "配送费¥5",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 5,
- "price": 20
- }]
- },
- "promotion_info": "根据顾客的意见,菜品能多选,本店把原先的菜品重量100克改为50克,价格减半。感谢大家出谋划策谢谢\n通知通知,从5月27号起,套餐不赠送饮料了。\n通知没有点口味的顾客一律默认微辣\n通知,双人套餐里面的牛蛙换牛肉,菠菜改成青菜。",
- "rating": 4.1,
- "rating_count": 897,
- "recent_order_num": 3019,
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }, {
- "description": "准时必达,超时秒赔",
- "icon_color": "57A9FF",
- "icon_name": "准",
- "id": 9,
- "name": "准时达"
- }]
-}, {
- "activities": [{
- "description": "在线支付满25减9,满50减15,满75减21,满100减27",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11362888,
- "name": "满减优惠",
- "tips": "在线支付满25减9,满50减15,满75减21,满100减27"
- }, {
- "description": "(不与其他活动同享)新用户下单立减8.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11331255,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减8.0元"
- }],
- "address": "上海市普陀区老真北路160号",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": "",
- "distance": 1552,
- "float_delivery_fee": 5,
- "float_minimum_order_amount": 20,
- "id": 966779,
- "image_path": "97f0393f518ef77f52e2fdd83a5e3014jpeg",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.224023,
- "longitude": 121.375564,
- "name": "凡仔汉堡(老真北路店)",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["10:00/24:00"],
- "order_lead_time": 37,
- "phone": "13120508963",
- "piecewise_agent_fee": {
- "description": "满70免配送费,满20付¥5,不满20付¥7",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 7,
- "price": 0
- }, {
- "fee": 5,
- "price": 20
- }, {
- "fee": 0,
- "price": 70
- }]
- },
- "promotion_info": "",
- "rating": 4.5,
- "rating_count": 581,
- "recent_order_num": 2820,
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }, {
- "description": "准时必达,超时秒赔",
- "icon_color": "57A9FF",
- "icon_name": "准",
- "id": 9,
- "name": "准时达"
- }]
-}, {
- "activities": [{
- "description": "在线支付满30减10,满50减23,满75减34,满100减46",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11700424,
- "name": "满减优惠",
- "tips": "在线支付满30减10,满50减23,满75减34,满100减46"
- }, {
- "description": "(不与其他活动同享)新用户下单立减20.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11325228,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减20.0元"
- }],
- "address": "上海市长宁区金钟路968号15楼15-105室",
- "bidding": "{\"target\":{\"restaurantId\":1181959,\"weight\":70,\"probability\":15.666130065917969},\"next\":null}",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": "",
- "distance": 835,
- "float_delivery_fee": 5,
- "float_minimum_order_amount": 20,
- "id": 1181959,
- "image_path": "9e52b44a186200a85ebda8613d9b7fe4jpeg",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.221967,
- "longitude": 121.351307,
- "name": "港式小铺",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["08:30/20:00"],
- "order_lead_time": 33,
- "phone": "15721215080",
- "piecewise_agent_fee": {
- "description": "配送费¥5",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 5,
- "price": 20
- }]
- },
- "promotion_info": "本店配菜不定期更新,如有不喜欢吃的可以提前备注哦。",
- "rating": 4.3,
- "rating_count": 101,
- "recent_order_num": 926,
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }, {
- "description": "准时必达,超时秒赔",
- "icon_color": "57A9FF",
- "icon_name": "准",
- "id": 9,
- "name": "准时达"
- }]
-}, {
- "activities": [{
- "description": "在线支付满30减6,满50减12,满80减17",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11464736,
- "name": "满减优惠",
- "tips": "在线支付满30减6,满50减12,满80减17"
- }, {
- "description": "(不与其他活动同享)新用户下单立减10.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11775071,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减10.0元"
- }, {
- "description": "7折美食抢先购",
- "icon_color": "f07373",
- "icon_name": "美",
- "id": 1436117,
- "name": "7折美食抢先购",
- "tips": "7折美食抢先购"
- }, {
- "description": "(不与其它活动同享)品质折扣餐!【8折】",
- "icon_color": "f07373",
- "icon_name": "8",
- "id": 1309191,
- "name": "(不与其它活动同享)品质折扣餐!【8折】",
- "tips": "(不与其它活动同享)品质折扣餐!【8折】"
- }],
- "address": "剑河路443-1",
- "description": "麻辣香锅",
- "distance": 1683,
- "float_delivery_fee": 5,
- "float_minimum_order_amount": 30,
- "id": 354417,
- "image_path": "0d3202781f001fb47d22e6b3a11cf838jpeg",
- "is_new": false,
- "is_premium": true,
- "latitude": 31.211965,
- "longitude": 121.368125,
- "name": "蜀香源麻辣香锅(剑河路店)",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["09:30/22:30"],
- "order_lead_time": 34,
- "phone": "18621549909 15152604655",
- "piecewise_agent_fee": {
- "description": "配送费¥5",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 5,
- "price": 30
- }]
- },
- "promotion_info": "亲们感谢你们一直以来对本餐厅的支持,您的满意是我们不懈努力的动力。本店只专注一道菜,只希望顾客吃的开心。1.如果您还算喜欢本小店请动动手指收藏我们吧,这样您就不用在找我们啦。2.下雨天可以提前预定!方便您准时用餐。3.请确保您的电话畅通,以便送餐员能及时联系您及时送达。",
- "rating": 4.4,
- "rating_count": 1922,
- "recent_order_num": 3152,
- "status": 1,
- "supports": []
-}, {
- "activities": [{
- "description": "在线支付满27减2,满40减3,满60减4,满80减5",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11381316,
- "name": "满减优惠",
- "tips": "在线支付满27减2,满40减3,满60减4,满80减5"
- }, {
- "description": "(不与其它活动同享)7折美食送海之言",
- "icon_color": "f07373",
- "icon_name": "言",
- "id": 1443986,
- "name": "(不与其它活动同享)7折美食送海之言",
- "tips": "(不与其它活动同享)7折美食送海之言"
- }, {
- "description": "(不与其他活动同享)新用户下单立减20.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11325228,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减20.0元"
- }],
- "address": "长宁区北新泾街道天山西路490-1号",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": "手擀皮儿,美味馅儿,朴实的做法,妈妈的味道。",
- "distance": 797,
- "float_delivery_fee": 5,
- "float_minimum_order_amount": 20,
- "id": 294234,
- "image_path": "4b66b7426cfd9ed48692be4093140bddjpeg",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.2182270558569,
- "longitude": 121.36176873398,
- "name": "北京饺子馆",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["09:00/21:00"],
- "order_lead_time": 37,
- "phone": "18221609817 15168913169",
- "piecewise_agent_fee": {
- "description": "配送费¥5",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 5,
- "price": 20
- }]
- },
- "promotion_info": "北京饺子馆天山西路店,保质保量,尽快送达,请提前下单谢谢…。",
- "rating": 4.5,
- "rating_count": 287,
- "recent_order_num": 2302,
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }, {
- "description": "准时必达,超时秒赔",
- "icon_color": "57A9FF",
- "icon_name": "准",
- "id": 9,
- "name": "准时达"
- }]
-}, {
- "activities": [{
- "description": "在线支付满30减2,满60减3,满90减4,满120减5",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11380420,
- "name": "满减优惠",
- "tips": "在线支付满30减2,满60减3,满90减4,满120减5"
- }, {
- "description": "(不与其它活动同享)7折美食送海之言",
- "icon_color": "f07373",
- "icon_name": "言",
- "id": 1444623,
- "name": "(不与其它活动同享)7折美食送海之言",
- "tips": "(不与其它活动同享)7折美食送海之言"
- }, {
- "description": "(不与其他活动同享)新用户下单立减20.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11325228,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减20.0元"
- }],
- "address": "上海市长宁区金钟路968号9号楼地下一层9-83室",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": "饭典*新简餐",
- "distance": 549,
- "float_delivery_fee": 6,
- "float_minimum_order_amount": 20,
- "id": 658603,
- "image_path": "9207bfaf770e4cb8c09c7c1170c28ec3jpeg",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.220184,
- "longitude": 121.358512,
- "name": "饭典*新简餐(凌空SOHO店)",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["10:30/20:15"],
- "order_lead_time": 34,
- "phone": "62378719",
- "piecewise_agent_fee": {
- "description": "配送费¥6",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 6,
- "price": 20
- }]
- },
- "promotion_info": " ",
- "rating": 4.4,
- "rating_count": 247,
- "recent_order_num": 2112,
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }, {
- "description": "该商家支持开发票,开票订单金额30.0元起,请在下单时填写好发票抬头",
- "icon_color": "9071CB",
- "icon_name": "票",
- "id": 4,
- "name": "开发票"
- }, {
- "description": "准时必达,超时秒赔",
- "icon_color": "57A9FF",
- "icon_name": "准",
- "id": 9,
- "name": "准时达"
- }]
-}, {
- "activities": [{
- "description": "在线支付满20减12,满40减16",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11711897,
- "name": "满减优惠",
- "tips": "在线支付满20减12,满40减16"
- }, {
- "description": "(不与其他活动同享)新用户下单立减5.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11736769,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减5.0元"
- }, {
- "description": "(不与其它活动同享)特价双人餐",
- "icon_color": "f07373",
- "icon_name": "惠",
- "id": 1462573,
- "name": "(不与其它活动同享)特价双人餐",
- "tips": "(不与其它活动同享)特价双人餐"
- }, {
- "description": "(不与其它活动同享)品质折扣餐!【5.5折】",
- "icon_color": "f07373",
- "icon_name": "5.5",
- "id": 1308903,
- "name": "(不与其它活动同享)品质折扣餐!【5.5折】",
- "tips": "(不与其它活动同享)品质折扣餐!【5.5折】"
- }, {
- "description": "13.9元特价菜",
- "icon_color": "f1884f",
- "icon_name": "值",
- "id": 1353675,
- "name": "(不与其它活动同享)13.9元特价菜",
- "tips": "(不与其它活动同享)13.9元特价菜"
- }, {
- "description": "12.9元特价菜",
- "icon_color": "f1884f",
- "icon_name": "惠",
- "id": 1353664,
- "name": "(不与其它活动同享)12.9元特价菜",
- "tips": "(不与其它活动同享)12.9元特价菜"
- }, {
- "description": "9.9元特价菜",
- "icon_color": "f1884f",
- "icon_name": "特",
- "id": 1353658,
- "name": "(不与其它活动同享)9.9元特价菜",
- "tips": "(不与其它活动同享)9.9元特价菜"
- }],
- "address": "上海市金钟路633号地下一层甲部",
- "description": "焦耳外卖,线上外卖销量领先品牌。",
- "distance": 563,
- "float_delivery_fee": 2,
- "float_minimum_order_amount": 15,
- "id": 640451,
- "image_path": "1e93ff8421a343c20b8b33e02a18ba44png",
- "is_new": false,
- "is_premium": true,
- "latitude": 31.220032,
- "longitude": 121.359921,
- "name": "焦耳·川式快餐(金钟路店)",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["09:00/20:00"],
- "order_lead_time": 36,
- "phone": "13024126609",
- "piecewise_agent_fee": {
- "description": "配送费¥2",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 2,
- "price": 15
- }]
- },
- "promotion_info": "想吃辣,订焦耳。焦耳,地道川式快餐。直营门店超过100家,服务顾客人次超过500万。既辣又好吃,当然更受欢迎。焦耳,地道川式快餐。",
- "rating": 4.1,
- "rating_count": 345,
- "recent_order_num": 2972,
- "status": 1,
- "supports": [{
- "description": "该商家支持开发票,开票订单金额300.0元起,请在下单时填写好发票抬头",
- "icon_color": "9071CB",
- "icon_name": "票",
- "id": 4,
- "name": "开发票"
- }]
-}, {
- "activities": [{
- "description": "在线支付满27减12,满50减17,满75减22,满100减28",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11754783,
- "name": "满减优惠",
- "tips": "在线支付满27减12,满50减17,满75减22,满100减28"
- }, {
- "description": "(不与其他活动同享)新用户下单立减20.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11325228,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减20.0元"
- }],
- "address": "长宁区仙霞西路299弄3号101B",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": "",
- "distance": 1978,
- "float_delivery_fee": 5,
- "float_minimum_order_amount": 20,
- "id": 899176,
- "image_path": "36b6e42e1044d230d883999118861616jpeg",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.208322,
- "longitude": 121.366242,
- "name": "动力鸡车",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["09:40/23:30"],
- "order_lead_time": 30,
- "phone": "15821983760",
- "piecewise_agent_fee": {
- "description": "配送费¥5",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 5,
- "price": 20
- }]
- },
- "promotion_info": "",
- "rating": 4.6,
- "rating_count": 331,
- "recent_order_num": 1647,
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }, {
- "description": "准时必达,超时秒赔",
- "icon_color": "57A9FF",
- "icon_name": "准",
- "id": 9,
- "name": "准时达"
- }]
-}, {
- "activities": [{
- "description": "在线支付满30减6,满60减15,满80减20",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11429176,
- "name": "满减优惠",
- "tips": "在线支付满30减6,满60减15,满80减20"
- }, {
- "description": "(不与其他活动同享)新用户下单立减20.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11325228,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减20.0元"
- }],
- "address": "天山西路430号",
- "description": "本店支持饿了么网上订餐",
- "distance": 1022,
- "float_delivery_fee": 0,
- "float_minimum_order_amount": 25,
- "id": 354356,
- "image_path": "ba38f2024dcb2253909c00a0e6d874eajpeg",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.216497,
- "longitude": 121.363159,
- "name": "浏阳蒸菜",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["09:00/21:00"],
- "order_lead_time": 33,
- "phone": "18117452480",
- "piecewise_agent_fee": {
- "description": "免配送费",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 0,
- "price": 25
- }]
- },
- "promotion_info": "注意:亲爱的各位顾客朋友们,以后下单麻烦亲都注意点米饭,没点的可要饿肚子喔。不需要米饭的请备注谢谢!",
- "rating": 4.4,
- "rating_count": 512,
- "recent_order_num": 1597,
- "status": 1,
- "supports": []
-}, {
- "activities": [{
- "description": "在线支付满45减3,满70减4",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11586935,
- "name": "满减优惠",
- "tips": "在线支付满45减3,满70减4"
- }, {
- "description": "(不与其他活动同享)新用户下单立减10.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11333258,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减10.0元"
- }],
- "address": "上海市长宁区天山西路",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": "欢迎光临\n",
- "distance": 711,
- "float_delivery_fee": 5,
- "float_minimum_order_amount": 20,
- "id": 215322,
- "image_path": "37cf7580029b258da45784eb96a973e3jpeg",
- "is_new": false,
- "is_premium": true,
- "latitude": 31.218766,
- "longitude": 121.360561,
- "name": "四海游龙(天山西路店)",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["10:00/20:55"],
- "order_lead_time": 29,
- "phone": "52190867 13671916256",
- "piecewise_agent_fee": {
- "description": "配送费¥5",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 5,
- "price": 20
- }]
- },
- "promotion_info": "本店锅贴酱的标准配置是1份锅贴1包酱请新老顾客谅解。",
- "rating": 4.5,
- "rating_count": 346,
- "recent_order_num": 2284,
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }, {
- "description": "准时必达,超时秒赔",
- "icon_color": "57A9FF",
- "icon_name": "准",
- "id": 9,
- "name": "准时达"
- }]
-}, {
- "activities": [{
- "description": "在线支付满30减15,满60减21",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11700412,
- "name": "满减优惠",
- "tips": "在线支付满30减15,满60减21"
- }, {
- "description": "(不与其他活动同享)新用户下单立减20.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11325228,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减20.0元"
- }],
- "address": "上海市长宁区金钟路968号15楼15-105室",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": "樱花食堂:主营日式简餐系列 特色的蛋包饭 咖喱系列 好吃的照烧鸡排 健康的色拉系列! 原为每一位顾客 提供 可口 美味 幸福的一餐",
- "distance": 796,
- "float_delivery_fee": 5,
- "float_minimum_order_amount": 20,
- "id": 1175700,
- "image_path": "2f2bffdb4357942985de46f8e2163747png",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.221427,
- "longitude": 121.352104,
- "name": "樱花食堂(凌空店)",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["09:00/20:00"],
- "order_lead_time": 37,
- "phone": "18018662689",
- "piecewise_agent_fee": {
- "description": "配送费¥5",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 5,
- "price": 20
- }]
- },
- "promotion_info": "各位小主,本店优先配送饿了么,遇到恶劣天气送餐较慢,请多多担待哈!如果您的美食凉了,或者口味不好,一定要第一时间和本店联系,做得不好的地方我们一定加油改进,在这个寒冷的冬季,我们一定努力温暖您的胃,如您对送餐服务口味满意请给我5分好评呦!!!饿了么网络订餐,汇集周边所有美食、水果",
- "rating": 3.8,
- "rating_count": 262,
- "recent_order_num": 2021,
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }, {
- "description": "准时必达,超时秒赔",
- "icon_color": "57A9FF",
- "icon_name": "准",
- "id": 9,
- "name": "准时达"
- }]
-}, {
- "activities": [{
- "description": "在线支付满27减3,满50减6,满75减8,满100减12",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11381176,
- "name": "满减优惠",
- "tips": "在线支付满27减3,满50减6,满75减8,满100减12"
- }, {
- "description": "(不与其他活动同享)新用户下单立减20.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11325228,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减20.0元"
- }],
- "address": "天山西路428号",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": "壹分米客家传统调制米粉(天山店)\n",
- "distance": 855,
- "float_delivery_fee": 5,
- "float_minimum_order_amount": 20,
- "id": 166349,
- "image_path": "e6614cc644c41a64a1ef282d0e27aac3png",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.2182979790424,
- "longitude": 121.363552917705,
- "name": "壹分米客家传统调制米粉(天山店)",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["10:30/21:00"],
- "order_lead_time": 32,
- "phone": "18117104418",
- "piecewise_agent_fee": {
- "description": "配送费¥5",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 5,
- "price": 20
- }]
- },
- "promotion_info": "1、本店推荐陛下您在“饿了么”订餐—饭点较忙,电话常占线,本店优先配送饿了么订单。2、雨天路滑,外卖小哥会及时送达,避免催促发生事故。3、外卖制作+配送都需要消耗时间,为了能及时用餐,希望大家提前半小时以上预定,避开高峰拥堵。",
- "rating": 4.7,
- "rating_count": 147,
- "recent_order_num": 1093,
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }, {
- "description": "准时必达,超时秒赔",
- "icon_color": "57A9FF",
- "icon_name": "准",
- "id": 9,
- "name": "准时达"
- }]
-}, {
- "activities": [{
- "description": "在线支付满25减8,满60减15,满80减20",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11465592,
- "name": "满减优惠",
- "tips": "在线支付满25减8,满60减15,满80减20"
- }, {
- "description": "1元饮料秒杀",
- "icon_color": "f1884f",
- "icon_name": "秒",
- "id": 1442522,
- "name": "1元饮料秒杀",
- "tips": "1元饮料秒杀"
- }, {
- "description": "(不与其它活动同享)5折限量优惠",
- "icon_color": "f07373",
- "icon_name": "折",
- "id": 1439197,
- "name": "(不与其它活动同享)5折限量优惠",
- "tips": "(不与其它活动同享)5折限量优惠"
- }, {
- "description": "(不与其它活动同享)品质折扣餐!【8折】",
- "icon_color": "f07373",
- "icon_name": "8",
- "id": 1309191,
- "name": "(不与其它活动同享)品质折扣餐!【8折】",
- "tips": "(不与其它活动同享)品质折扣餐!【8折】"
- }, {
- "description": "(不与其他活动同享)新用户下单立减15.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11272302,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减15.0元"
- }],
- "address": "上海市长宁区协和路福泉路255弄57-73号",
- "description": "本店支持饿了么网上订餐",
- "distance": 1326,
- "float_delivery_fee": 0,
- "float_minimum_order_amount": 20,
- "id": 449057,
- "image_path": "0ee404f65d865de198fd01922951a9dejpeg",
- "is_new": false,
- "is_premium": true,
- "latitude": 31.21319,
- "longitude": 121.35826,
- "name": "福荣祥烧腊(平溪路店)",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["09:30/19:30"],
- "order_lead_time": 33,
- "phone": "62402187",
- "piecewise_agent_fee": {
- "description": "免配送费",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 0,
- "price": 20
- }]
- },
- "promotion_info": "1、本店推荐陛下您在“饿了么”订餐—饭点较忙,电话常占线,本店优先配送饿了么订单。2、雨天路滑,外卖小哥会及时送达,避免催促发生事故。3、外卖制作+配送都需要消耗时间,为了能及时用餐,希望大家提前半小时以上预定,避开高峰拥堵。",
- "rating": 4.6,
- "rating_count": 381,
- "recent_order_num": 2388,
- "status": 1,
- "supports": []
-}, {
- "activities": [{
- "description": "在线支付满27减8,满50减16,满75减21,满100减26",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11719234,
- "name": "满减优惠",
- "tips": "在线支付满27减8,满50减16,满75减21,满100减26"
- }, {
- "description": "(不与其他活动同享)新用户下单立减20.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11325228,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减20.0元"
- }],
- "address": "上海市长宁区北新泾街道金钟路180号1层01号摊位",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": "正宗黄焖鸡",
- "distance": 1079,
- "float_delivery_fee": 5,
- "float_minimum_order_amount": 20,
- "id": 454578,
- "image_path": "f641a4fb59fa2d06a6e1b0f7b33877e5jpeg",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.21973,
- "longitude": 121.368766,
- "name": "速记黄焖鸡米饭",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["09:30/23:00"],
- "order_lead_time": 33,
- "phone": "15821659008",
- "piecewise_agent_fee": {
- "description": "满70免配送费,满20付¥5,不满20付¥7",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 7,
- "price": 0
- }, {
- "fee": 5,
- "price": 20
- }, {
- "fee": 0,
- "price": 70
- }]
- },
- "promotion_info": "1、本店推荐陛下您在“饿了么”订餐—饭点较忙,电话常占线,本店优先配送饿了么订单。2、雨天路滑,外卖小哥会及时送达,避免催促发生事故。3、外卖制作+配送都需要消耗时间,为了能及时用餐,希望大家提前半小时以上预定,避开高峰拥堵。",
- "rating": 4.5,
- "rating_count": 435,
- "recent_order_num": 3286,
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }, {
- "description": "该商家支持开发票,开票订单金额100.0元起,请在下单时填写好发票抬头",
- "icon_color": "9071CB",
- "icon_name": "票",
- "id": 4,
- "name": "开发票"
- }]
-}, {
- "activities": [{
- "description": "在线支付满25减12,满50减14,满75减19,满100减24",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11719285,
- "name": "满减优惠",
- "tips": "在线支付满25减12,满50减14,满75减19,满100减24"
- }, {
- "description": "(不与其他活动同享)新用户下单立减20.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11325228,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减20.0元"
- }],
- "address": "上海市长宁区天山西路492号",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": "红辣椒麻辣烫",
- "distance": 843,
- "float_delivery_fee": 4,
- "float_minimum_order_amount": 20,
- "id": 722642,
- "image_path": "100cfe42382b89575c9e85a5911974c2jpeg",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.217744,
- "longitude": 121.361572,
- "name": "红辣椒麻辣烫",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["09:00/23:30"],
- "order_lead_time": 28,
- "phone": "13918958523",
- "piecewise_agent_fee": {
- "description": "配送费¥4",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 4,
- "price": 20
- }]
- },
- "promotion_info": "新店开张,优惠多多,欢迎广大新老客户订餐。",
- "rating": 4.2,
- "rating_count": 609,
- "recent_order_num": 1610,
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }, {
- "description": "准时必达,超时秒赔",
- "icon_color": "57A9FF",
- "icon_name": "准",
- "id": 9,
- "name": "准时达"
- }]
-}, {
- "activities": [{
- "description": "在线支付满30减4,满60减10",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11325842,
- "name": "满减优惠",
- "tips": "在线支付满30减4,满60减10"
- }, {
- "description": "(不与其他活动同享)新用户下单立减10.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11718149,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减10.0元"
- }],
- "address": "长宁区仙霞西路88号百联2楼",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": "(小杨生煎)西郊百联餐厅",
- "distance": 2100,
- "float_delivery_fee": 5,
- "float_minimum_order_amount": 20,
- "id": 105288,
- "image_path": "c324dfa7c810d83d83709a5938edea5fpng",
- "is_new": false,
- "is_premium": true,
- "latitude": 31.20877,
- "longitude": 121.37041,
- "name": "(小杨生煎)西郊百联餐厅",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["10:00/21:00"],
- "order_lead_time": 28,
- "phone": "52171203",
- "piecewise_agent_fee": {
- "description": "配送费¥5",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 5,
- "price": 20
- }]
- },
- "promotion_info": "",
- "rating": 4.6,
- "rating_count": 531,
- "recent_order_num": 3456,
- "status": 1,
- "supports": [{
- "description": "已加入“外卖保”计划,食品安全有保障",
- "icon_color": "4B9A18",
- "icon_name": "保",
- "id": 7,
- "name": "外卖保"
- }, {
- "description": "该商家支持开发票,请在下单时填写好发票抬头",
- "icon_color": "9071CB",
- "icon_name": "票",
- "id": 4,
- "name": "开发票"
- }, {
- "description": "准时必达,超时秒赔",
- "icon_color": "57A9FF",
- "icon_name": "准",
- "id": 9,
- "name": "准时达"
- }]
-}, {
- "activities": [{
- "description": "在线支付满27减10,满50减12,满75减15,满100减20",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11381968,
- "name": "满减优惠",
- "tips": "在线支付满27减10,满50减12,满75减15,满100减20"
- }, {
- "description": "(不与其他活动同享)新用户下单立减20.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11325228,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减20.0元"
- }],
- "address": "天山西路389号",
- "bidding": "{\"target\":{\"restaurantId\":13952,\"weight\":200,\"probability\":4.096244812011719},\"next\":null}",
- "description": "阳阳麻辣烫",
- "distance": 989,
- "float_delivery_fee": 4,
- "float_minimum_order_amount": 20,
- "id": 13952,
- "image_path": "80f5148923b649f392770c85b07355b8jpeg",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.217559,
- "longitude": 121.364851,
- "name": "阳阳麻辣烫",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["09:30/01:00"],
- "order_lead_time": 34,
- "phone": "13482580513 62918941",
- "piecewise_agent_fee": {
- "description": "配送费¥4",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 4,
- "price": 20
- }]
- },
- "promotion_info": "1、本店推荐陛下您在“饿了么”订餐—饭点较忙,电话常占线,本店优先配送饿了么订单。2、雨天路滑,外卖小哥会及时送达,避免催促发生事故。3、外卖制作+配送都需要消耗时间,为了能及时用餐,希望大家提前半小时以上预定,避开高峰拥堵。",
- "rating": 4.5,
- "rating_count": 1464,
- "recent_order_num": 1883,
- "status": 1,
- "supports": []
-}, {
- "activities": [{
- "description": "在线支付满30减13,满60减18",
- "icon_color": "f07373",
- "icon_name": "减",
- "id": 11683980,
- "name": "满减优惠",
- "tips": "在线支付满30减13,满60减18"
- }, {
- "description": "(不与其他活动同享)新用户下单立减8.0元",
- "icon_color": "70bc46",
- "icon_name": "新",
- "id": 11331255,
- "name": "新用户立减(不与其他活动共享)",
- "tips": "(不与其他活动同享)新用户下单立减8.0元"
- }],
- "address": "普陀区金沙江路1699号鑫乐惠美食广场A13",
- "delivery_mode": {
- "color": "57A9FF",
- "id": 1,
- "is_solid": true,
- "text": "蜂鸟专送"
- },
- "description": "本店特色专注于龙虾盖浇饭,因为专一,所以专业。口味上汇聚了“麻、辣、鲜、香、甜”几种口味,满足了年轻食客对味道的挑剔。",
- "distance": 1875,
- "float_delivery_fee": 5,
- "float_minimum_order_amount": 20,
- "id": 921427,
- "image_path": "8fc7d60c9a1b00d958bf8a2a15045eeejpeg",
- "is_new": false,
- "is_premium": false,
- "latitude": 31.2313678104899,
- "longitude": 121.377572734967,
- "name": "南拳妈妈龙虾盖浇饭",
- "next_business_time": "",
- "only_use_poi": false,
- "opening_hours": ["09:30/20:30"],
- "order_lead_time": 37,
- "phone": "18217798760",
- "piecewise_agent_fee": {
- "description": "满70免配送费,满20付¥5,不满20付¥7",
- "extra_fee": 0,
- "is_extra": false,
- "rules": [{
- "fee": 7,
- "price": 0
- }, {
- "fee": 5,
- "price": 20
- }, {
- "fee": 0,
- "price": 70
- }]
- },
- "promotion_info": "1`中午11:00至13:00为用餐高峰期,配送繁忙为保证您及时用餐,请提前一小时订餐.如因饿了么配送运力不足,送达时间可能会延长,敬请谅解!\n2`龙虾季节来临,公司对龙虾食材进行专业把关,每一道工序严格把控,保证食品的卫生与安全,请顾客放心使用!\n\n南拳妈妈祝您用餐愉快!",
- "rating": 4.5,
- "rating_count": 216,
- "recent_order_num": 2988,
- "status": 1,
- "supports": [{
- "description": "该商家支持开发票,开票订单金额50.0元起,请在下单时填写好发票抬头",
- "icon_color": "9071CB",
- "icon_name": "票",
- "id": 4,
- "name": "开发票"
- }, {
- "description": "准时必达,超时秒赔",
- "icon_color": "57A9FF",
- "icon_name": "准",
- "id": 9,
- "name": "准时达"
- }]
-}]
diff --git a/examples/assets/styles/common.css b/examples/assets/styles/common.css
index 8b137891791..6c778377d97 100644
--- a/examples/assets/styles/common.css
+++ b/examples/assets/styles/common.css
@@ -1 +1,169 @@
+html, body {
+ margin: 0;
+ padding: 0;
+ height: 100%;
+ font-family: 'Helvetica Neue',Helvetica,'PingFang SC','Hiragino Sans GB','Microsoft YaHei',SimSun,sans-serif;
+ font-weight: 400;
+ -webkit-font-smoothing: antialiased;
+ -webkit-tap-highlight-color: transparent;
+ &.is-component {
+ overflow: hidden;
+ }
+}
+
+#app {
+ height: 100%;
+
+ &.is-component {
+ overflow-y: hidden;
+
+ .main-cnt {
+ padding: 0;
+ margin-top: 0;
+ height: 100%;
+ min-height: auto;
+ }
+
+ .headerWrapper {
+ position: fixed;
+ width: 100%;
+ left: 0;
+ top: 0;
+ z-index: 1500;
+
+ .container {
+ padding: 0;
+ }
+ }
+ }
+}
+
+a {
+ color: #2460e0;
+ text-decoration: none;
+}
+
+code {
+ background-color: #f9fafc;
+ padding: 0 4px;
+ border: 1px solid #eaeefb;
+ border-radius: 4px;
+}
+
+button, input, select, textarea {
+ font-family: inherit;
+ font-size: inherit;
+ line-height: inherit;
+ color: inherit;
+}
+
+.hljs {
+ line-height: 1.8;
+ font-family: Menlo, Monaco, Consolas, Courier, monospace;
+ font-size: 12px;
+ padding: 18px 24px;
+ background-color: #fafafa;
+ border: solid 1px #eaeefb;
+ margin-bottom: 25px;
+ border-radius: 4px;
+ -webkit-font-smoothing: auto;
+}
+
+.main-cnt {
+ margin-top: -80px;
+ padding: 80px 0 340px;
+ box-sizing: border-box;
+ min-height: 100%;
+}
+
+.container,
+.page-container {
+ width: 1140px;
+ padding: 0;
+ margin: 0 auto;
+}
+
+.page-container {
+ padding-top: 55px;
+
+ h2 {
+ font-size: 28px;
+ color: #1f2d3d;
+ margin: 0;
+ }
+ h3 {
+ font-size: 22px;
+ }
+ h2, h3, h4, h5 {
+ font-weight: normal;
+ color: #1f2f3d;
+
+ &:hover a {
+ opacity: .4;
+ }
+
+ a {
+ float: left;
+ margin-left: -20px;
+ opacity: 0;
+ cursor: pointer;
+
+ &:hover {
+ opacity: .4;
+ }
+ }
+ }
+
+ p {
+ font-size: 14px;
+ color: #5e6d82;
+ line-height: 1.5em;
+ }
+
+ .tip {
+ padding: 8px 16px;
+ background-color: #ECF8FF;
+ border-radius: 4px;
+ border-left: #50bfff 5px solid;
+ margin: 20px 0;
+
+ code {
+ background-color: rgba(255, 255, 255, .7);
+ color: #445368;
+ }
+ }
+
+ .warning {
+ padding: 8px 16px;
+ background-color: #fff6f7;
+ border-radius: 4px;
+ border-left: #FE6C6F 5px solid;
+ margin: 20px 0;
+
+ code {
+ background-color: rgba(255, 255, 255, .7);
+ color: #445368;
+ }
+ }
+}
+.demo {
+ margin: 20px 0;
+}
+@media (max-width: 1140px) {
+ .container,
+ .page-container {
+ width: 100%;
+ }
+}
+
+@media (max-width: 768px) {
+ .container,
+ .page-container {
+ padding: 0 20px;
+ }
+
+ #app.is-component .headerWrapper .container {
+ padding: 0 12px;
+ }
+}
diff --git a/examples/color.js b/examples/color.js
new file mode 100644
index 00000000000..662b233eeb4
--- /dev/null
+++ b/examples/color.js
@@ -0,0 +1,18 @@
+export const tintColor = (c, tint) => {
+ const color = c.replace('#', '');
+ let red = parseInt(color.slice(0, 2), 16);
+ let green = parseInt(color.slice(2, 4), 16);
+ let blue = parseInt(color.slice(4, 6), 16);
+
+ if (tint === 0) { // when primary color is in its rgb space
+ return [red, green, blue].join(',');
+ } else {
+ red += Math.round(tint * (255 - red));
+ green += Math.round(tint * (255 - green));
+ blue += Math.round(tint * (255 - blue));
+ red = red.toString(16);
+ green = green.toString(16);
+ blue = blue.toString(16);
+ return `#${ red }${ green }${ blue }`;
+ }
+};
diff --git a/examples/components/demo-block.vue b/examples/components/demo-block.vue
index ae29f29c5b6..7de62124c6b 100644
--- a/examples/components/demo-block.vue
+++ b/examples/components/demo-block.vue
@@ -4,12 +4,16 @@
:class="[blockClass, { 'hover': hovering }]"
@mouseenter="hovering = true"
@mouseleave="hovering = false">
-
+
+
+
+ @click.stop="goCodepen">
{{ langConfig['button-text'] }}
@@ -38,7 +42,7 @@
-
+
+
\ No newline at end of file
diff --git a/examples/components/theme-configurator/editor/borderRadius.vue b/examples/components/theme-configurator/editor/borderRadius.vue
new file mode 100644
index 00000000000..8ee85f267ac
--- /dev/null
+++ b/examples/components/theme-configurator/editor/borderRadius.vue
@@ -0,0 +1,89 @@
+
+
+
+
+ {{displayKeyName}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/components/theme-configurator/editor/boxShadow.vue b/examples/components/theme-configurator/editor/boxShadow.vue
new file mode 100644
index 00000000000..dd6a4a8a440
--- /dev/null
+++ b/examples/components/theme-configurator/editor/boxShadow.vue
@@ -0,0 +1,158 @@
+
+
+
+
+ {{displayKeyName}}
+
+
+
+
+
+
+ onInputChange(val, key, 'color')"
+ show-alpha
+ >
+ Color
+
+
+ onInputChange(Number(val), key, 'offsetX')"
+ >
+
+ X-px
+
+
+ onInputChange(Number(val), key, 'offsetY')"
+ >
+
+ Y-px
+
+
+ onInputChange(Number(val), key, 'spreadRadius')"
+ >
+
+ Spread
+
+
+ onInputChange(Number(val), key, 'blurRadius')"
+ >
+
+ Blur
+
+
+ onMinusShadow(key)"
+ >
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/components/theme-configurator/editor/color-picker/index.js b/examples/components/theme-configurator/editor/color-picker/index.js
new file mode 100644
index 00000000000..d79e21e0892
--- /dev/null
+++ b/examples/components/theme-configurator/editor/color-picker/index.js
@@ -0,0 +1,8 @@
+import ColorPicker from './src/main';
+
+/* istanbul ignore next */
+ColorPicker.install = function(Vue) {
+ Vue.component(ColorPicker.name, ColorPicker);
+};
+
+export default ColorPicker;
diff --git a/examples/components/theme-configurator/editor/color-picker/src/color.js b/examples/components/theme-configurator/editor/color-picker/src/color.js
new file mode 100644
index 00000000000..8dee3c84df8
--- /dev/null
+++ b/examples/components/theme-configurator/editor/color-picker/src/color.js
@@ -0,0 +1,316 @@
+const hsv2hsl = function(hue, sat, val) {
+ return [
+ hue,
+ (sat * val / ((hue = (2 - sat) * val) < 1 ? hue : 2 - hue)) || 0,
+ hue / 2
+ ];
+};
+
+// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1
+//
+const isOnePointZero = function(n) {
+ return typeof n === 'string' && n.indexOf('.') !== -1 && parseFloat(n) === 1;
+};
+
+const isPercentage = function(n) {
+ return typeof n === 'string' && n.indexOf('%') !== -1;
+};
+
+// Take input from [0, n] and return it as [0, 1]
+const bound01 = function(value, max) {
+ if (isOnePointZero(value)) value = '100%';
+
+ const processPercent = isPercentage(value);
+ value = Math.min(max, Math.max(0, parseFloat(value)));
+
+ // Automatically convert percentage into number
+ if (processPercent) {
+ value = parseInt(value * max, 10) / 100;
+ }
+
+ // Handle floating point rounding errors
+ if ((Math.abs(value - max) < 0.000001)) {
+ return 1;
+ }
+
+ // Convert into [0, 1] range if it isn't already
+ return (value % max) / parseFloat(max);
+};
+
+const INT_HEX_MAP = { 10: 'A', 11: 'B', 12: 'C', 13: 'D', 14: 'E', 15: 'F' };
+
+const toHex = function({ r, g, b }) {
+ const hexOne = function(value) {
+ value = Math.min(Math.round(value), 255);
+ const high = Math.floor(value / 16);
+ const low = value % 16;
+ return '' + (INT_HEX_MAP[high] || high) + (INT_HEX_MAP[low] || low);
+ };
+
+ if (isNaN(r) || isNaN(g) || isNaN(b)) return '';
+
+ return '#' + hexOne(r) + hexOne(g) + hexOne(b);
+};
+
+const HEX_INT_MAP = { A: 10, B: 11, C: 12, D: 13, E: 14, F: 15 };
+
+const parseHexChannel = function(hex) {
+ if (hex.length === 2) {
+ return (HEX_INT_MAP[hex[0].toUpperCase()] || +hex[0]) * 16 + (HEX_INT_MAP[hex[1].toUpperCase()] || +hex[1]);
+ }
+
+ return HEX_INT_MAP[hex[1].toUpperCase()] || +hex[1];
+};
+
+const hsl2hsv = function(hue, sat, light) {
+ sat = sat / 100;
+ light = light / 100;
+ let smin = sat;
+ const lmin = Math.max(light, 0.01);
+ let sv;
+ let v;
+
+ light *= 2;
+ sat *= (light <= 1) ? light : 2 - light;
+ smin *= lmin <= 1 ? lmin : 2 - lmin;
+ v = (light + sat) / 2;
+ sv = light === 0 ? (2 * smin) / (lmin + smin) : (2 * sat) / (light + sat);
+
+ return {
+ h: hue,
+ s: sv * 100,
+ v: v * 100
+ };
+};
+
+// `rgbToHsv`
+// Converts an RGB color value to HSV
+// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]
+// *Returns:* { h, s, v } in [0,1]
+const rgb2hsv = function(r, g, b) {
+ r = bound01(r, 255);
+ g = bound01(g, 255);
+ b = bound01(b, 255);
+
+ const max = Math.max(r, g, b);
+ const min = Math.min(r, g, b);
+ let h, s;
+ let v = max;
+
+ const d = max - min;
+ s = max === 0 ? 0 : d / max;
+
+ if (max === min) {
+ h = 0; // achromatic
+ } else {
+ switch (max) {
+ case r:
+ h = (g - b) / d + (g < b ? 6 : 0);
+ break;
+ case g:
+ h = (b - r) / d + 2;
+ break;
+ case b:
+ h = (r - g) / d + 4;
+ break;
+ }
+ h /= 6;
+ }
+
+ return { h: h * 360, s: s * 100, v: v * 100 };
+};
+
+// `hsvToRgb`
+// Converts an HSV color value to RGB.
+// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]
+// *Returns:* { r, g, b } in the set [0, 255]
+const hsv2rgb = function(h, s, v) {
+ h = bound01(h, 360) * 6;
+ s = bound01(s, 100);
+ v = bound01(v, 100);
+
+ const i = Math.floor(h);
+ const f = h - i;
+ const p = v * (1 - s);
+ const q = v * (1 - f * s);
+ const t = v * (1 - (1 - f) * s);
+ const mod = i % 6;
+ const r = [v, q, p, p, t, v][mod];
+ const g = [t, v, v, q, p, p][mod];
+ const b = [p, p, t, v, v, q][mod];
+
+ return {
+ r: Math.round(r * 255),
+ g: Math.round(g * 255),
+ b: Math.round(b * 255)
+ };
+};
+
+export default class Color {
+ constructor(options) {
+ this._hue = 0;
+ this._saturation = 100;
+ this._value = 100;
+ this._alpha = 100;
+
+ this.enableAlpha = false;
+ this.format = 'hex';
+ this.value = '';
+
+ options = options || {};
+
+ for (let option in options) {
+ if (options.hasOwnProperty(option)) {
+ this[option] = options[option];
+ }
+ }
+
+ this.doOnChange();
+ }
+
+ set(prop, value) {
+ if (arguments.length === 1 && typeof prop === 'object') {
+ for (let p in prop) {
+ if (prop.hasOwnProperty(p)) {
+ this.set(p, prop[p]);
+ }
+ }
+
+ return;
+ }
+
+ this['_' + prop] = value;
+ this.doOnChange();
+ }
+
+ get(prop) {
+ return this['_' + prop];
+ }
+
+ toRgb() {
+ return hsv2rgb(this._hue, this._saturation, this._value);
+ }
+
+ fromString(value) {
+ if (!value) {
+ this._hue = 0;
+ this._saturation = 100;
+ this._value = 100;
+
+ this.doOnChange();
+ return;
+ }
+
+ const fromHSV = (h, s, v) => {
+ this._hue = Math.max(0, Math.min(360, h));
+ this._saturation = Math.max(0, Math.min(100, s));
+ this._value = Math.max(0, Math.min(100, v));
+
+ this.doOnChange();
+ };
+
+ if (value.indexOf('hsl') !== -1) {
+ const parts = value.replace(/hsla|hsl|\(|\)/gm, '')
+ .split(/\s|,/g).filter((val) => val !== '').map((val, index) => index > 2 ? parseFloat(val) : parseInt(val, 10));
+
+ if (parts.length === 4) {
+ this._alpha = Math.floor(parseFloat(parts[3]) * 100);
+ } else if (parts.length === 3) {
+ this._alpha = 100;
+ }
+ if (parts.length >= 3) {
+ const { h, s, v } = hsl2hsv(parts[0], parts[1], parts[2]);
+ fromHSV(h, s, v);
+ }
+ } else if (value.indexOf('hsv') !== -1) {
+ const parts = value.replace(/hsva|hsv|\(|\)/gm, '')
+ .split(/\s|,/g).filter((val) => val !== '').map((val, index) => index > 2 ? parseFloat(val) : parseInt(val, 10));
+
+ if (parts.length === 4) {
+ this._alpha = Math.floor(parseFloat(parts[3]) * 100);
+ } else if (parts.length === 3) {
+ this._alpha = 100;
+ }
+ if (parts.length >= 3) {
+ fromHSV(parts[0], parts[1], parts[2]);
+ }
+ } else if (value.indexOf('rgb') !== -1) {
+ const parts = value.replace(/rgba|rgb|\(|\)/gm, '')
+ .split(/\s|,/g).filter((val) => val !== '').map((val, index) => index > 2 ? parseFloat(val) : parseInt(val, 10));
+
+ if (parts.length === 4) {
+ this._alpha = Math.floor(parseFloat(parts[3]) * 100);
+ } else if (parts.length === 3) {
+ this._alpha = 100;
+ }
+ if (parts.length >= 3) {
+ const { h, s, v } = rgb2hsv(parts[0], parts[1], parts[2]);
+ fromHSV(h, s, v);
+ }
+ } else if (value.indexOf('#') !== -1) {
+ const hex = value.replace('#', '').trim();
+ let r, g, b;
+
+ if (hex.length === 3) {
+ r = parseHexChannel(hex[0] + hex[0]);
+ g = parseHexChannel(hex[1] + hex[1]);
+ b = parseHexChannel(hex[2] + hex[2]);
+ } else if (hex.length === 6 || hex.length === 8) {
+ r = parseHexChannel(hex.substring(0, 2));
+ g = parseHexChannel(hex.substring(2, 4));
+ b = parseHexChannel(hex.substring(4, 6));
+ }
+
+ if (hex.length === 8) {
+ this._alpha = Math.floor(parseHexChannel(hex.substring(6)) / 255 * 100);
+ } else if (hex.length === 3 || hex.length === 6) {
+ this._alpha = 100;
+ }
+
+ const { h, s, v } = rgb2hsv(r, g, b);
+ fromHSV(h, s, v);
+ }
+ }
+
+ compare(color) {
+ return Math.abs(color._hue - this._hue) < 2 &&
+ Math.abs(color._saturation - this._saturation) < 1 &&
+ Math.abs(color._value - this._value) < 1 &&
+ Math.abs(color._alpha - this._alpha) < 1;
+ }
+
+ doOnChange() {
+ const { _hue, _saturation, _value, _alpha, format } = this;
+
+ if (this.enableAlpha) {
+ switch (format) {
+ case 'hsl':
+ const hsl = hsv2hsl(_hue, _saturation / 100, _value / 100);
+ this.value = `hsla(${ _hue }, ${ Math.round(hsl[1] * 100) }%, ${ Math.round(hsl[2] * 100) }%, ${ _alpha / 100})`;
+ break;
+ case 'hsv':
+ this.value = `hsva(${ _hue }, ${ Math.round(_saturation) }%, ${ Math.round(_value) }%, ${ _alpha / 100})`;
+ break;
+ default:
+ const { r, g, b } = hsv2rgb(_hue, _saturation, _value);
+ this.value = `rgba(${r}, ${g}, ${b}, ${ _alpha / 100 })`;
+ }
+ } else {
+ switch (format) {
+ case 'hsl':
+ const hsl = hsv2hsl(_hue, _saturation / 100, _value / 100);
+ this.value = `hsl(${ _hue }, ${ Math.round(hsl[1] * 100) }%, ${ Math.round(hsl[2] * 100) }%)`;
+ break;
+ case 'hsv':
+ this.value = `hsv(${ _hue }, ${ Math.round(_saturation) }%, ${ Math.round(_value) }%)`;
+ break;
+ case 'rgb':
+ const { r, g, b } = hsv2rgb(_hue, _saturation, _value);
+ this.value = `rgb(${r}, ${g}, ${b})`;
+ break;
+ default:
+ this.value = toHex(hsv2rgb(_hue, _saturation, _value));
+ }
+ }
+ }
+};
diff --git a/examples/components/theme-configurator/editor/color-picker/src/components/alpha-slider.vue b/examples/components/theme-configurator/editor/color-picker/src/components/alpha-slider.vue
new file mode 100644
index 00000000000..efeb87fe72a
--- /dev/null
+++ b/examples/components/theme-configurator/editor/color-picker/src/components/alpha-slider.vue
@@ -0,0 +1,132 @@
+
+
+
+
+
diff --git a/examples/components/theme-configurator/editor/color-picker/src/components/color-list.vue b/examples/components/theme-configurator/editor/color-picker/src/components/color-list.vue
new file mode 100644
index 00000000000..0230eed8985
--- /dev/null
+++ b/examples/components/theme-configurator/editor/color-picker/src/components/color-list.vue
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
+ {{item.info.label}}
+
+ {{item.info.value}}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/components/theme-configurator/editor/color-picker/src/components/hue-slider.vue b/examples/components/theme-configurator/editor/color-picker/src/components/hue-slider.vue
new file mode 100644
index 00000000000..c93e42c0649
--- /dev/null
+++ b/examples/components/theme-configurator/editor/color-picker/src/components/hue-slider.vue
@@ -0,0 +1,123 @@
+
+
+
+
+
diff --git a/examples/components/theme-configurator/editor/color-picker/src/components/picker-dropdown.vue b/examples/components/theme-configurator/editor/color-picker/src/components/picker-dropdown.vue
new file mode 100644
index 00000000000..1c16839da14
--- /dev/null
+++ b/examples/components/theme-configurator/editor/color-picker/src/components/picker-dropdown.vue
@@ -0,0 +1,135 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('el.colorpicker.confirm') }}
+
+
+
+
+
+
+
+
diff --git a/examples/components/theme-configurator/editor/color-picker/src/components/predefine.vue b/examples/components/theme-configurator/editor/color-picker/src/components/predefine.vue
new file mode 100644
index 00000000000..1387c48a257
--- /dev/null
+++ b/examples/components/theme-configurator/editor/color-picker/src/components/predefine.vue
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/components/theme-configurator/editor/color-picker/src/components/sv-panel.vue b/examples/components/theme-configurator/editor/color-picker/src/components/sv-panel.vue
new file mode 100644
index 00000000000..66676a608c8
--- /dev/null
+++ b/examples/components/theme-configurator/editor/color-picker/src/components/sv-panel.vue
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/components/theme-configurator/editor/color-picker/src/draggable.js b/examples/components/theme-configurator/editor/color-picker/src/draggable.js
new file mode 100644
index 00000000000..339a4852c6a
--- /dev/null
+++ b/examples/components/theme-configurator/editor/color-picker/src/draggable.js
@@ -0,0 +1,36 @@
+import Vue from 'vue';
+let isDragging = false;
+
+export default function(element, options) {
+ if (Vue.prototype.$isServer) return;
+ const moveFn = function(event) {
+ if (options.drag) {
+ options.drag(event);
+ }
+ };
+ const upFn = function(event) {
+ document.removeEventListener('mousemove', moveFn);
+ document.removeEventListener('mouseup', upFn);
+ document.onselectstart = null;
+ document.ondragstart = null;
+
+ isDragging = false;
+
+ if (options.end) {
+ options.end(event);
+ }
+ };
+ element.addEventListener('mousedown', function(event) {
+ if (isDragging) return;
+ document.onselectstart = function() { return false; };
+ document.ondragstart = function() { return false; };
+
+ document.addEventListener('mousemove', moveFn);
+ document.addEventListener('mouseup', upFn);
+ isDragging = true;
+
+ if (options.start) {
+ options.start(event);
+ }
+ });
+}
diff --git a/examples/components/theme-configurator/editor/color-picker/src/main.vue b/examples/components/theme-configurator/editor/color-picker/src/main.vue
new file mode 100644
index 00000000000..21f9caeb0cb
--- /dev/null
+++ b/examples/components/theme-configurator/editor/color-picker/src/main.vue
@@ -0,0 +1,190 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/components/theme-configurator/editor/color.vue b/examples/components/theme-configurator/editor/color.vue
new file mode 100644
index 00000000000..90705d6f2d4
--- /dev/null
+++ b/examples/components/theme-configurator/editor/color.vue
@@ -0,0 +1,93 @@
+
+
+
+
+ {{displayKeyName}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/components/theme-configurator/editor/fontLineHeight.vue b/examples/components/theme-configurator/editor/fontLineHeight.vue
new file mode 100644
index 00000000000..ef7455f5ea7
--- /dev/null
+++ b/examples/components/theme-configurator/editor/fontLineHeight.vue
@@ -0,0 +1,104 @@
+
+
+
+
+ {{displayKeyName}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/components/theme-configurator/editor/fontSize.vue b/examples/components/theme-configurator/editor/fontSize.vue
new file mode 100644
index 00000000000..f78fd06cbee
--- /dev/null
+++ b/examples/components/theme-configurator/editor/fontSize.vue
@@ -0,0 +1,105 @@
+
+
+
+
+ {{displayKeyName}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/components/theme-configurator/editor/fontWeight.vue b/examples/components/theme-configurator/editor/fontWeight.vue
new file mode 100644
index 00000000000..9a30581fabc
--- /dev/null
+++ b/examples/components/theme-configurator/editor/fontWeight.vue
@@ -0,0 +1,109 @@
+
+
+
+
+ {{displayKeyName}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/components/theme-configurator/editor/input.vue b/examples/components/theme-configurator/editor/input.vue
new file mode 100644
index 00000000000..548a1ee27e3
--- /dev/null
+++ b/examples/components/theme-configurator/editor/input.vue
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/components/theme-configurator/editor/mixin.vue b/examples/components/theme-configurator/editor/mixin.vue
new file mode 100644
index 00000000000..f898eef5532
--- /dev/null
+++ b/examples/components/theme-configurator/editor/mixin.vue
@@ -0,0 +1,81 @@
+
+
\ No newline at end of file
diff --git a/examples/components/theme-configurator/editor/simpleText.vue b/examples/components/theme-configurator/editor/simpleText.vue
new file mode 100644
index 00000000000..f0628c480e3
--- /dev/null
+++ b/examples/components/theme-configurator/editor/simpleText.vue
@@ -0,0 +1,41 @@
+
+
+
+
+ {{displayKeyName}}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/components/theme-configurator/index.vue b/examples/components/theme-configurator/index.vue
new file mode 100644
index 00000000000..6e7483bdeef
--- /dev/null
+++ b/examples/components/theme-configurator/index.vue
@@ -0,0 +1,195 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/components/theme-configurator/main.vue b/examples/components/theme-configurator/main.vue
new file mode 100644
index 00000000000..5acbc9c99d2
--- /dev/null
+++ b/examples/components/theme-configurator/main.vue
@@ -0,0 +1,130 @@
+
+
+
+
+
+ {{config.category}}
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/components/theme-configurator/shortcut.vue b/examples/components/theme-configurator/shortcut.vue
new file mode 100644
index 00000000000..7a77098d8af
--- /dev/null
+++ b/examples/components/theme-configurator/shortcut.vue
@@ -0,0 +1,27 @@
+
+
\ No newline at end of file
diff --git a/examples/components/theme-configurator/utils/boxShadow.js b/examples/components/theme-configurator/utils/boxShadow.js
new file mode 100644
index 00000000000..382aa4b60d2
--- /dev/null
+++ b/examples/components/theme-configurator/utils/boxShadow.js
@@ -0,0 +1,59 @@
+const VALUES_REG = /,(?![^\(]*\))/;
+const PARTS_REG = /\s(?![^(]*\))/;
+const LENGTH_REG = /^[0-9]+[a-zA-Z%]+?$/;
+
+const parseValue = str => {
+ const parts = str.split(PARTS_REG);
+ const inset = parts.includes('inset');
+ const last = parts.slice(-1)[0];
+ const color = !isLength(last) ? last : undefined;
+
+ const nums = parts
+ .filter(n => n !== 'inset')
+ .filter(n => n !== color)
+ .map(toNum);
+ const [ offsetX, offsetY, blurRadius, spreadRadius ] = nums;
+
+ return {
+ inset,
+ offsetX,
+ offsetY,
+ blurRadius,
+ spreadRadius,
+ color
+ };
+};
+
+const stringifyValue = obj => {
+ const {
+ inset,
+ offsetX = 0,
+ offsetY = 0,
+ blurRadius = 0,
+ spreadRadius,
+ color
+ } = obj || {};
+
+ return [
+ (inset ? 'inset' : null),
+ offsetX,
+ offsetY,
+ blurRadius,
+ spreadRadius,
+ color
+ ].filter(v => v !== null && v !== undefined)
+ .map(toPx)
+ .map(s => ('' + s).trim())
+ .join(' ');
+};
+
+const isLength = v => v === '0' || LENGTH_REG.test(v);
+const toNum = v => {
+ if (!/px$/.test(v) && v !== '0') return v;
+ const n = parseFloat(v);
+ return !isNaN(n) ? n : v;
+};
+const toPx = n => typeof n === 'number' && n !== 0 ? (n + 'px') : n;
+
+export const parse = str => str.split(VALUES_REG).map(s => s.trim()).map(parseValue);
+export const stringify = arr => arr.map(stringifyValue).join(', ');
diff --git a/examples/components/theme-configurator/utils/utils.js b/examples/components/theme-configurator/utils/utils.js
new file mode 100644
index 00000000000..1068a8d5293
--- /dev/null
+++ b/examples/components/theme-configurator/utils/utils.js
@@ -0,0 +1,68 @@
+import deepmerge from 'deepmerge';
+import constant from '../../../i18n/theme-editor.json';
+
+export const filterConfigType = (name) => {
+ switch (name) {
+ case 'color':
+ case 'typography':
+ case 'border':
+ return 'global';
+ default:
+ return 'local';
+ }
+};
+
+export const filterGlobalValue = (defaultConfig, userConfig) => {
+ const valueObject = {};
+ const globalArr = ['color', 'typography', 'border'];
+ globalArr.forEach((global) => {
+ const configObj = {};
+ defaultConfig
+ .find(config => (config.name === global))
+ .config.forEach(c => (configObj[c.key] = deepmerge({}, c)));
+ valueObject[global] = configObj;
+ Object.keys(configObj).forEach((c) => {
+ if (userConfig.global[c]) {
+ configObj[c].value = userConfig.global[c];
+ }
+ });
+ });
+ return valueObject;
+};
+
+export const getStyleDisplayValue = (displayValue, global) => {
+ if (displayValue.startsWith('$')) {
+ return global[displayValue].value;
+ }
+ return displayValue;
+};
+
+const getLang = () => {
+ return location.hash.replace('#', '').split('/')[1] || 'zh-CN';
+};
+
+const getNameFromI18N = (name) => {
+ const lang = getLang();
+ return constant.filter(config => config.lang === lang)[0][name];
+};
+
+export const getVariableDisplayName = (key) => {
+ return getNameFromI18N('variable-name')[key] || key;
+};
+
+export const getStyleDisplayName = (config, componentName) => {
+ const displayNameMap = getNameFromI18N('display-name');
+ if (config.name) {
+ return getVariableDisplayName(config.key.replace('$--', ''));
+ }
+ let displayName = config.key.replace(`$--${componentName}-`, '');
+ Object.keys(displayNameMap).forEach((name) => {
+ displayName = displayName.replace(name, displayNameMap[name]);
+ });
+ displayName = displayName.replace(/-/g, ' ');
+ return displayName.trim();
+};
+
+export const getActionDisplayName = (key) => {
+ return getNameFromI18N('action')[key] || key;
+};
diff --git a/examples/components/theme-picker.vue b/examples/components/theme-picker.vue
index c6c4b500586..3fd147c2583 100644
--- a/examples/components/theme-picker.vue
+++ b/examples/components/theme-picker.vue
@@ -5,11 +5,11 @@
v-model="theme">
-
diff --git a/examples/components/theme/components-preview.vue b/examples/components/theme/components-preview.vue
new file mode 100644
index 00000000000..58aa5b420f6
--- /dev/null
+++ b/examples/components/theme/components-preview.vue
@@ -0,0 +1,539 @@
+
+
+
+ Button
+
+ Default
+ Primary
+ Success
+ Info
+ Warning
+ Danger
+
+
+ Plain
+ Primary
+ Success
+ Info
+ Warning
+ Danger
+
+
+ Round
+ Primary
+ Success
+ Info
+ Warning
+ Danger
+
+
+
+
+
+
+
+
+
+
+ Default
+ Medium
+ Small
+ Mini
+
+ Radio
+
+ Option A
+ Option B
+
+
+
+
+
+
+
+
+
+
+ Option A
+ Option B
+
+ Checkbox
+
+ Option
+
+
+
+ {{city}}
+
+
+
+
+
+ Input
+
+
+
+ InputNumber
+
+
+
+ Select
+
+
+
+
+
+ Cascader
+
+
+
+ Switch
+
+
+
+
+
+ Slider
+
+
+
+ DatePicker
+
+
+
+ Rate
+
+
+
+
+
+ Transfer
+
+
+ Operation
+ Operation
+
+
+ Table
+
+
+
+
+
+
+
+ Tag
+
+ Tag One
+ Tag Two
+ Tag Three
+ Tag Four
+ Tag Five
+
+ Progress
+
+
+
+
+
+ Tree
+
+
+
+ Pagination
+
+
+
+ Badge
+
+
+ comments
+
+
+ replies
+
+
+ comments
+
+
+ replies
+
+
+ Alert
+
+
+
+
+
+
+
+ Loading
+
+
+
+
+
+
+
+ Message
+
+
+
+
+
+
+ MessageBox
+
+
+
+ Notification
+
+ NotificationThis is a message
+
+ Menu
+
+
+ Processing Center
+
+ Workspace
+ item one
+ item two
+ item three
+
+ item four
+ item one
+ item two
+ item three
+
+
+ Info
+
+ Orders
+
+
+
+
+
+
+ Navigator One
+
+
+ item one
+ item one
+
+
+ item three
+
+
+ item four
+ item one
+
+
+
+
+ Navigator Two
+
+
+
+ Navigator Three
+
+
+
+ Navigator Four
+
+
+
+ Tabs
+
+
+ User
+ Config
+ Role
+ Task
+
+
+ User
+ Config
+ Role
+ Task
+
+
+ Dialog
+
+ TipsThis is a message
+
+ Tooltip
+
+ Dark
+
+ Light
+
+
+ Popover
+
+
+
+ Card
+
+
+
+ Card name
+
+
+
+ Carousel
+
+
+
+ {{ item }}
+
+
+
+ Collapse
+
+
+
+ Consistent with real life: in line with the process and logic of real life, and comply with languages and habits that the users are used to;
+
+
+ Operation feedback: enable the users to clearly perceive their operations by style updates and interactive effects;
+
+
+
+ Avatar
+
+
+ avatar
+
+ large
+ medium
+ small
+
+
+
+
diff --git a/examples/components/theme/constant.js b/examples/components/theme/constant.js
new file mode 100644
index 00000000000..6730aa97642
--- /dev/null
+++ b/examples/components/theme/constant.js
@@ -0,0 +1,16 @@
+export const DEFAULT_THEME_CONFIG = {
+ global: {},
+ local: {}
+};
+
+export const ELEMENT_THEME_USER_CONFIG = 'ELEMENT_THEME_USER_CONFIG';
+
+export const ELEMENT_THEME_PREVIEW_CONFIG = 'ELEMENT_THEME_PREVIEW_CONFIG';
+
+export const ACTION_DOWNLOAD_THEME = 'ELEMENT_THEME_ACTION_DOWNLOAD';
+
+export const ACTION_APPLY_THEME = 'ELEMENT_THEME_ACTION_ALLPY_CSS';
+
+export const ACTION_COMPONECT_SELECT = 'ELEMENT_THEME_ACTION_COMPONECT_SELECT';
+
+export const ACTION_USER_CONFIG_UPDATE = 'ELEMENT_THEME_USER_CONFIG_UPDATE';
diff --git a/examples/components/theme/loader/ajax.js b/examples/components/theme/loader/ajax.js
new file mode 100644
index 00000000000..ce248e558d9
--- /dev/null
+++ b/examples/components/theme/loader/ajax.js
@@ -0,0 +1,65 @@
+const defaultError = 'Server Error 500';
+const defaultTimeout = 'Request Timeout';
+const xhr = (method, url, data = null, cb) => {
+ return new window.Promise((resolve, reject) => {
+ const xhr = new XMLHttpRequest();
+ const doReject = (xhr) => {
+ reject(xhr.response || xhr.statusText || defaultError);
+ };
+ xhr.open(method, url);
+ xhr.setRequestHeader('Content-Type', 'application/json');
+ xhr.timeout = 10000;
+ if (cb) cb(xhr);
+ xhr.onload = () => {
+ if (xhr.readyState === 4) {
+ if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {
+ let response = xhr.response;
+ const type = xhr.getResponseHeader('Content-Type');
+ if (type.indexOf('zip') > -1) {
+ let filename = 'style.zip';
+ const disposition = xhr.getResponseHeader('content-disposition');
+ if (disposition && disposition.indexOf('attachment') !== -1) {
+ var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
+ var matches = filenameRegex.exec(disposition);
+ if (matches != null && matches[1]) {
+ filename = matches[1].replace(/['"]/g, '');
+ }
+ }
+ var blob = new Blob([response], { type });
+ var zipUrl = URL.createObjectURL(blob);
+ var link = document.createElement('a');
+ link.href = zipUrl;
+ link.download = filename;
+ link.click();
+ resolve(response);
+ return;
+ }
+ try {
+ response = JSON.parse(xhr.response);
+ } catch (e) {}
+ resolve(response);
+ } else {
+ doReject(xhr);
+ }
+ } else {
+ doReject(xhr);
+ }
+ };
+ xhr.onerror = () => {
+ doReject(xhr);
+ };
+ xhr.ontimeout = () => {
+ xhr.abort();
+ reject(defaultTimeout);
+ };
+ xhr.send(JSON.stringify(data));
+ });
+};
+
+export const post = (url, data, cb) => {
+ return xhr('POST', url, data, cb);
+};
+
+export const get = (url) => {
+ return xhr('GET', url);
+};
diff --git a/examples/components/theme/loader/api.js b/examples/components/theme/loader/api.js
new file mode 100644
index 00000000000..450786d3c4b
--- /dev/null
+++ b/examples/components/theme/loader/api.js
@@ -0,0 +1,24 @@
+import Element from 'main/index.js';
+import { post, get } from './ajax';
+
+const { version } = Element;
+
+const hostList = {
+ local: 'http://localhost:3008/',
+ alpha: 'https://element-api.ar.elenet.me/element/theme/',
+ production: 'https://element-api.ele.me/element/theme/'
+};
+
+const host = hostList[process.env.FAAS_ENV] || hostList.production;
+
+export const getVars = () => {
+ return get(`${host}getVariable?version=${version}`);
+};
+
+export const getTestEle = () => {
+ return get(`${hostList.alpha}getVariable`);
+};
+
+export const updateVars = (data, cb) => {
+ return post(`${host}updateVariable?version=${version}`, data, cb);
+};
diff --git a/examples/components/theme/loader/docStyle.vue b/examples/components/theme/loader/docStyle.vue
new file mode 100644
index 00000000000..07aa433153c
--- /dev/null
+++ b/examples/components/theme/loader/docStyle.vue
@@ -0,0 +1,62 @@
+
diff --git a/examples/components/theme/loader/index.vue b/examples/components/theme/loader/index.vue
new file mode 100644
index 00000000000..e078d11589d
--- /dev/null
+++ b/examples/components/theme/loader/index.vue
@@ -0,0 +1,106 @@
+
\ No newline at end of file
diff --git a/examples/components/theme/loader/loading/index.vue b/examples/components/theme/loader/loading/index.vue
new file mode 100644
index 00000000000..1f597e1acc7
--- /dev/null
+++ b/examples/components/theme/loader/loading/index.vue
@@ -0,0 +1,35 @@
+
+
diff --git a/examples/components/theme/loader/loading/progress.js b/examples/components/theme/loader/loading/progress.js
new file mode 100644
index 00000000000..54ba20d6517
--- /dev/null
+++ b/examples/components/theme/loader/loading/progress.js
@@ -0,0 +1,6 @@
+import Vue from 'vue';
+import ProgressBar from './progress.vue';
+
+Vue.prototype.$bar = new Vue(ProgressBar).$mount();
+
+document.body.appendChild(Vue.prototype.$bar.$el);
diff --git a/examples/components/theme/loader/loading/progress.vue b/examples/components/theme/loader/loading/progress.vue
new file mode 100644
index 00000000000..6deabaf7d4d
--- /dev/null
+++ b/examples/components/theme/loader/loading/progress.vue
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/components/theme/localstorage.js b/examples/components/theme/localstorage.js
new file mode 100644
index 00000000000..7d330e6ba34
--- /dev/null
+++ b/examples/components/theme/localstorage.js
@@ -0,0 +1,38 @@
+import {
+ ELEMENT_THEME_PREVIEW_CONFIG,
+ ELEMENT_THEME_USER_CONFIG
+} from './constant';
+
+export const saveToLocal = (key, value) => {
+ localStorage.setItem(key, JSON.stringify(value));
+};
+
+export const loadFromLocal = (key) => {
+ try {
+ return JSON.parse(localStorage.getItem(key));
+ } catch (e) {
+ console.error(e);
+ return null;
+ }
+};
+
+export const savePreviewToLocal = (value) => {
+ saveToLocal(ELEMENT_THEME_PREVIEW_CONFIG, value);
+};
+
+export const loadPreviewFromLocal = () => {
+ return loadFromLocal(ELEMENT_THEME_PREVIEW_CONFIG) || {};
+};
+
+export const removePreviewFromLocal = () => {
+ return localStorage.removeItem(ELEMENT_THEME_PREVIEW_CONFIG);
+};
+
+export const saveUserThemeToLocal = (value) => {
+ saveToLocal(ELEMENT_THEME_USER_CONFIG, value);
+};
+
+export const loadUserThemeFromLocal = () => {
+ return loadFromLocal(ELEMENT_THEME_USER_CONFIG);
+};
+
diff --git a/examples/components/theme/theme-card.vue b/examples/components/theme/theme-card.vue
new file mode 100644
index 00000000000..f2ca31d7698
--- /dev/null
+++ b/examples/components/theme/theme-card.vue
@@ -0,0 +1,406 @@
+
+
+
+
+
+
+
+
+ {{getActionDisplayName('upload-theme')}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item.name}}
+
+
+
+
+
+
+
+
+ {{config.name}}
+ by {{config.author}}
+
+
+
+
+ {{getActionDisplayName('rename-theme')}}
+ {{getActionDisplayName('copy-theme')}}
+
+ {{getActionDisplayName('delete-theme')}}
+
+
+
+
+
+ {{getActionDisplayName(getDescriptionKey(config.name))}}
+ {{getActionDisplayName('last-modified')}} {{formatDate(config.update)}}
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/components/theme/theme-list.js b/examples/components/theme/theme-list.js
new file mode 100644
index 00000000000..00e219dcc3c
--- /dev/null
+++ b/examples/components/theme/theme-list.js
@@ -0,0 +1,15 @@
+export const themeList = [
+ {
+ name: 'Element',
+ author: 'Element',
+ theme: '{"global":{"$--color-primary":"#2460e0"},"local":{}}'
+ }
+];
+
+export const eleThemeList = [
+ {
+ name: 'Kiwi',
+ author: 'Element',
+ theme: '{"global":{"$--color-primary":"#1989FA","$--color-success":"#5CB87A","$--color-warning":"#F5A623","$--color-danger":"#FF4D4F","$--color-info":"#8896B3","$--font-size-small":"13px","$--font-size-base":"14px","$--font-size-medium":"16px","$--font-size-large":"22px","$--font-size-extra-large":"28px","$--font-line-height-secondary":"20px"},"local":{"$--button-primary-background-color":"$--color-primary","$--switch-font-size":"14px","$--datepicker-active-color":"$--color-primary","$--tooltip-border-color":"$--border-color-base","$--tooltip-color":"#FFFFFF","$--tooltip-padding":"10px","$--collapse-header-font-size":"14px","$--collapse-content-font-size":"14px","$--collapse-content-font-color":"$--color-text-regular","$--radio-input-background-color":"#FFFFFF","$--radio-icon-color":"$--color-warning","$--radio-button-checked-background-color":"$--color-primary","$--input-border-radius":"$--border-radius-base","$--select-input-focus-border-color":"$--color-primary","$--select-font-size":"14px","$--select-option-selected-font-color":"$--color-primary","$--select-input-font-size":"14px","$--select-option-height":"34px","$--slider-main-background-color":"$--color-primary","$--tag-font-color":"$--color-primary","$--tag-default-hover-background-color":"$--color-primary","$--message-warning-font-color":"$--color-warning","$--alert-title-font-size":"14px","$--alert-icon-size":"14px","$--alert-icon-large-size":"22px","$--alert-close-customed-font-size":"12px","$--notification-title-font-size":"16px","$--notification-content-font-size":"14px","$--menu-item-font-color":"$--color-primary"}}'
+ }
+];
diff --git a/examples/components/theme/utils.js b/examples/components/theme/utils.js
new file mode 100644
index 00000000000..7a6de22d8d9
--- /dev/null
+++ b/examples/components/theme/utils.js
@@ -0,0 +1,24 @@
+export const isEmptyObject = (obj) => (JSON.stringify(obj) === '{}');
+
+export const getThemeConfigObject = (config) => {
+ try {
+ const conf = JSON.parse(config);
+ const { global, local } = conf;
+ if (!isEmptyObject(global) || !isEmptyObject(local)) {
+ return conf;
+ }
+ return false;
+ } catch (e) {
+ return false;
+ }
+};
+
+export const updateDomHeadStyle = (id, styleContent) => {
+ let styleTag = document.getElementById(id);
+ if (!styleTag) {
+ styleTag = document.createElement('style');
+ styleTag.setAttribute('id', id);
+ document.head.appendChild(styleTag);
+ }
+ styleTag.innerText = styleContent.replace(/@font-face{[^}]+}/, '');
+};
diff --git a/examples/demo-styles/alert.scss b/examples/demo-styles/alert.scss
new file mode 100644
index 00000000000..dae5f062a57
--- /dev/null
+++ b/examples/demo-styles/alert.scss
@@ -0,0 +1,7 @@
+.demo-block.demo-alert .el-alert {
+ margin: 20px 0 0;
+}
+
+.demo-block.demo-alert .el-alert:first-child {
+ margin: 0;
+}
diff --git a/examples/demo-styles/avatar.scss b/examples/demo-styles/avatar.scss
new file mode 100644
index 00000000000..d655db787af
--- /dev/null
+++ b/examples/demo-styles/avatar.scss
@@ -0,0 +1,62 @@
+.demo-avatar {
+
+ &.demo-basic {
+ text-align: center;
+
+ .demo-basic--circle, .demo-basic--square {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ .block {
+ flex: 1;
+ }
+
+ .block:not(:last-child) {
+ border-right: 1px solid rgba(224, 230, 237, 0.5);
+ }
+ }
+
+ }
+
+ .sub-title {
+ margin-bottom: 10px;
+ font-size: 14px;
+ color: #8492a6;
+ }
+
+ .el-col:not(:last-child) {
+ border-right: 1px solid rgba(224,230,237,.5);
+ }
+
+ .demo-type {
+ display: flex;
+
+ >div {
+ flex: 1;
+ text-align: center;
+ }
+
+ >div:not(:last-child) {
+ border-right: 1px solid rgba(224,230,237,.5);
+ }
+ }
+
+ .demo-fit {
+ display: flex;
+ text-align: center;
+ justify-content: space-between;
+
+ .block {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ flex-grow: 0;
+ }
+
+ .title {
+ margin-bottom: 10px;
+ font-size: 14px;
+ color: #8492a6;
+ }
+ }
+}
diff --git a/examples/demo-styles/badge.scss b/examples/demo-styles/badge.scss
new file mode 100644
index 00000000000..494dacdedc5
--- /dev/null
+++ b/examples/demo-styles/badge.scss
@@ -0,0 +1,19 @@
+.demo-badge.demo-block .el-dropdown {
+ vertical-align: middle;
+}
+.demo-badge.demo-block {
+ .share-button {
+ width: 36px;
+ padding: 10px;
+ }
+
+ .mark {
+ margin-top: 8px;
+ line-height: 1;
+ float: right;
+ }
+
+ .item {
+ margin-right: 40px;
+ }
+}
diff --git a/examples/demo-styles/border.scss b/examples/demo-styles/border.scss
new file mode 100644
index 00000000000..57df6833217
--- /dev/null
+++ b/examples/demo-styles/border.scss
@@ -0,0 +1,44 @@
+.demo-border .text {
+ width: 15%;
+}
+.demo-border .line {
+ width: 70%;
+}
+.demo-border .line div {
+ width: 100%;
+ height: 0;
+ border-top: 1px solid #eee;
+}
+.demo-border .line .dashed {
+ border-top: 2px dashed #eee;
+}
+.demo-shadow {
+ height: 100px;
+ width: 50%;
+ border: 1px solid #eee;
+}
+.demo-shadow-text {
+ line-height: 50px;
+ color: #666;
+ font-size: 14px;
+}
+.demo-radius .title {
+ color: #666;
+ font-size: 18px;
+ margin: 10px 0;
+}
+.demo-radius .value {
+ color: #333;
+ font-size: 16px;
+ margin: 10px 0;
+}
+.demo-radius .radius {
+ height: 60px;
+ width: 70%;
+ border: 1px solid #d7dae2;
+ border-radius: 0;
+ margin-top: 20px;
+}
+.demo-radius .radius-30 {
+ border-radius: 30px;
+}
diff --git a/examples/demo-styles/button-group-enhance.scss b/examples/demo-styles/button-group-enhance.scss
new file mode 100644
index 00000000000..ee72bc03c4d
--- /dev/null
+++ b/examples/demo-styles/button-group-enhance.scss
@@ -0,0 +1,19 @@
+.el-card .el-card__body {
+ padding: 0;
+
+ .content {
+ padding: 20px;
+ }
+ .el-button-group-enhance {
+ .el-button {
+ border-bottom: none;
+ border-radius: 0;
+ &:first-child {
+ border-left: none;
+ }
+ &.el-dropdown__caret-button {
+ border-right: none;
+ }
+ }
+ }
+}
diff --git a/examples/demo-styles/button.scss b/examples/demo-styles/button.scss
new file mode 100644
index 00000000000..bc8b7881a28
--- /dev/null
+++ b/examples/demo-styles/button.scss
@@ -0,0 +1,21 @@
+.demo-block.demo-button {
+ .el-row {
+ margin-bottom: 20px;
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+ }
+ .el-button + .el-button {
+ margin-left: 10px;
+ }
+ .el-button-group {
+ .el-button + .el-button {
+ margin-left: 0;
+ }
+
+ & + .el-button-group {
+ margin-left: 10px;
+ }
+ }
+}
diff --git a/examples/demo-styles/calendar.scss b/examples/demo-styles/calendar.scss
new file mode 100644
index 00000000000..62198bd1c82
--- /dev/null
+++ b/examples/demo-styles/calendar.scss
@@ -0,0 +1,5 @@
+.demo-calendar.demo-block {
+ .is-selected {
+ color: #1989FA;
+ }
+}
diff --git a/examples/demo-styles/card.scss b/examples/demo-styles/card.scss
new file mode 100644
index 00000000000..a558b149621
--- /dev/null
+++ b/examples/demo-styles/card.scss
@@ -0,0 +1,33 @@
+.demo-block.demo-card {
+ .text {
+ font-size: 14px;
+ }
+
+ .time {
+ font-size: 13px;
+ color: #999;
+ }
+
+ .bottom {
+ margin-top: 13px;
+ line-height: 12px;
+ }
+
+ .item {
+ margin-bottom: 18px;
+ }
+
+ .button {
+ padding: 0;
+ float: right;
+ }
+
+ .image {
+ width: 100%;
+ display: block;
+ }
+
+ .box-card {
+ width: 480px;
+ }
+}
diff --git a/examples/demo-styles/carousel.scss b/examples/demo-styles/carousel.scss
new file mode 100644
index 00000000000..dc5295a2989
--- /dev/null
+++ b/examples/demo-styles/carousel.scss
@@ -0,0 +1,46 @@
+.demo-carousel .block {
+ padding: 30px;
+ text-align: center;
+ border-right: solid 1px #eff2f6;
+ display: inline-block;
+ width: 49%;
+ box-sizing: border-box;
+ &:last-child {
+ border-right: none;
+ }
+}
+
+.demo-carousel .demonstration {
+ display: block;
+ color: #8492a6;
+ font-size: 14px;
+ margin-bottom: 20px;
+}
+
+.demo-carousel .el-carousel__container {
+ text-align: center;
+}
+
+.demo-carousel .el-carousel__item {
+ h3 {
+ color: #fff;
+ font-size: 18px;
+ line-height: 300px;
+ margin: 0;
+ &.small {
+ font-size: 14px;
+ line-height: 150px;
+ }
+ &.medium {
+ font-size: 14px;
+ line-height: 200px;
+ }
+ }
+ &:nth-child(2n) {
+ background-color: #99a9bf;
+ }
+ &:nth-child(2n + 1) {
+ background-color: #d3dce6;
+ }
+}
+
diff --git a/examples/demo-styles/cascader.scss b/examples/demo-styles/cascader.scss
new file mode 100644
index 00000000000..765676c909b
--- /dev/null
+++ b/examples/demo-styles/cascader.scss
@@ -0,0 +1,30 @@
+.demo-cascader {
+ .el-cascader {
+ width: 222px;
+ }
+}
+.demo-cascader-size {
+ .el-cascader {
+ vertical-align: top;
+ margin-right: 15px;
+ }
+}
+.demo-cascader .source > div {
+ display: flex;
+}
+.demo-cascader .block {
+ padding: 30px 0;
+ text-align: center;
+ border-right: solid 1px #eff2f6;
+ width: 50%;
+ box-sizing: border-box;
+ &:last-child {
+ border-right: none;
+ }
+}
+.demo-cascader .demonstration {
+ display: block;
+ color: #8492a6;
+ font-size: 14px;
+ margin-bottom: 20px;
+}
diff --git a/examples/demo-styles/collapse.scss b/examples/demo-styles/collapse.scss
new file mode 100644
index 00000000000..11c0d36f69c
--- /dev/null
+++ b/examples/demo-styles/collapse.scss
@@ -0,0 +1,7 @@
+.demo-collapse {
+ .el-collapse-item__header {
+ .header-icon {
+ margin-left: 5px;
+ }
+ }
+}
diff --git a/examples/demo-styles/color-picker.scss b/examples/demo-styles/color-picker.scss
new file mode 100644
index 00000000000..621cc8accf3
--- /dev/null
+++ b/examples/demo-styles/color-picker.scss
@@ -0,0 +1,20 @@
+.demo-color-picker .block {
+ padding: 30px 0;
+ text-align: center;
+ border-right: solid 1px #eff2f6;
+ display: inline-block;
+ width: 50%;
+ box-sizing: border-box;
+ &:last-child {
+ border-right: none;
+ }
+}
+.demo-color-picker .demonstration {
+ display: block;
+ color: #8492a6;
+ font-size: 14px;
+ margin-bottom: 20px;
+}
+.demo-color-picker .el-color-picker + .el-color-picker {
+ margin-left: 20px;
+}
diff --git a/examples/demo-styles/color.scss b/examples/demo-styles/color.scss
new file mode 100644
index 00000000000..c8a145700d3
--- /dev/null
+++ b/examples/demo-styles/color.scss
@@ -0,0 +1,72 @@
+.demo-color-box {
+ position: relative;
+ border-radius: 4px;
+ padding: 20px;
+ margin: 5px 0;
+ height: 114px;
+ box-sizing: border-box;
+ color: #fff;
+ font-size: 14px;
+
+ & .value {
+ font-size: 12px;
+ opacity: 0.69;
+ line-height: 24px;
+ }
+}
+.demo-color-box-other {
+ height: 74px;
+ margin: 10px 0 !important;
+ border-radius: 4px 4px 4px 4px !important;
+ padding: 15px 20px;
+}
+.demo-color-box-group {
+ .demo-color-box {
+ border-radius: 0;
+ margin: 0;
+ }
+ .demo-color-box:first-child {
+ border-radius: 4px 4px 0 0;
+ }
+ .demo-color-box:last-child {
+ border-radius: 0 0 4px 4px;
+ }
+}
+.bg-color-sub {
+ width: 100%;
+ height: 40px;
+ left: 0;
+ bottom: 0;
+ position: absolute;
+ border-radius: 0 0 4px 4px;
+}
+.bg-blue-sub-item {
+ width: 11.1111111%;
+ height: 100%;
+ display: inline-block;
+}
+.bg-blue-sub-item:first-child {
+ border-radius: 0 0 0 4px;
+}
+.bg-success-sub-item {
+ width: 50%;
+ height: 100%;
+ display: inline-block;
+}
+.bg-success-sub-item:first-child {
+ border-radius: 0 0 0 4px;
+}
+.bg-success-sub-item:last-child {
+ border-radius: 0 0 4px 0;
+}
+.bg-transparent {
+ border: 1px solid #fcc3c3;
+ color: #303133;
+ background: url("data:image/svg+xml;utf8,");
+ background-repeat: no-repeat;
+ background-position: center center;
+ background-size: 100% 100%, auto;
+}
+.demo-color-box-lite {
+ color: #303133;
+}
diff --git a/examples/demo-styles/container.scss b/examples/demo-styles/container.scss
new file mode 100644
index 00000000000..f97fc74e947
--- /dev/null
+++ b/examples/demo-styles/container.scss
@@ -0,0 +1,43 @@
+.el-header,
+.el-footer {
+ background-color: #b3c0d1;
+ color: #333;
+ line-height: 60px;
+}
+
+.el-aside {
+ color: #333;
+}
+
+#chang-jian-ye-mian-bu-ju + .demo-container {
+ .el-header,
+ .el-footer {
+ text-align: center;
+ }
+
+ .el-aside {
+ background-color: #d3dce6;
+ text-align: center;
+ line-height: 200px;
+ }
+
+ .el-main {
+ background-color: #e9eef3;
+ color: #333;
+ text-align: center;
+ line-height: 160px;
+ }
+
+ & > .source > .el-container {
+ margin-bottom: 40px;
+
+ &:nth-child(5) .el-aside,
+ &:nth-child(6) .el-aside {
+ line-height: 260px;
+ }
+
+ &:nth-child(7) .el-aside {
+ line-height: 320px;
+ }
+ }
+}
diff --git a/examples/demo-styles/date-picker.scss b/examples/demo-styles/date-picker.scss
new file mode 100644
index 00000000000..96bee1a421b
--- /dev/null
+++ b/examples/demo-styles/date-picker.scss
@@ -0,0 +1,36 @@
+.demo-block.demo-date-picker .source > div {
+ padding: 0;
+ display: flex;
+ flex-wrap: wrap;
+}
+
+.demo-date-picker .block {
+ padding: 30px 0;
+ text-align: center;
+ border-right: solid 1px #eff2f6;
+ flex: 1;
+ &:last-child {
+ border-right: none;
+ }
+}
+
+.demo-date-picker .container {
+ flex: 1;
+ border-right: solid 1px #eff2f6;
+ .block {
+ border-right: none;
+ &:last-child {
+ border-top: solid 1px #eff2f6;
+ }
+ }
+ &:last-child {
+ border-right: none;
+ }
+}
+
+.demo-date-picker .demonstration {
+ display: block;
+ color: #8492a6;
+ font-size: 14px;
+ margin-bottom: 20px;
+}
diff --git a/examples/demo-styles/datetime-picker.scss b/examples/demo-styles/datetime-picker.scss
new file mode 100644
index 00000000000..bec439b74e2
--- /dev/null
+++ b/examples/demo-styles/datetime-picker.scss
@@ -0,0 +1,21 @@
+.demo-block.demo-datetime-picker .source > div {
+ padding: 0;
+ display: flex;
+}
+
+.demo-datetime-picker .block {
+ padding: 30px 0;
+ text-align: center;
+ border-right: solid 1px #eff2f6;
+ flex: 1;
+ &:last-child {
+ border-right: none;
+ }
+}
+
+.demo-datetime-picker .demonstration {
+ display: block;
+ color: #8492a6;
+ font-size: 14px;
+ margin-bottom: 20px;
+}
diff --git a/examples/demo-styles/dialog.scss b/examples/demo-styles/dialog.scss
new file mode 100644
index 00000000000..ddf104332cc
--- /dev/null
+++ b/examples/demo-styles/dialog.scss
@@ -0,0 +1,20 @@
+.demo-block.demo-dialog {
+ .dialog-footer button:first-child {
+ margin-right: 10px;
+ }
+ .full-image {
+ width: 100%;
+ }
+ .el-dialog__wrapper {
+ margin: 0;
+ }
+ .el-select {
+ width: 300px;
+ }
+ .el-input {
+ width: 300px;
+ }
+ .el-button--text {
+ margin-right: 15px;
+ }
+}
diff --git a/examples/demo-styles/divider.scss b/examples/demo-styles/divider.scss
new file mode 100644
index 00000000000..a4cd0c07cb4
--- /dev/null
+++ b/examples/demo-styles/divider.scss
@@ -0,0 +1,9 @@
+.demo-divider-container-1 {
+ display: inline-block;
+ width: 33%;
+}
+
+.demo-divider-container-2 {
+ display: inline-block;
+ width: 50%;
+}
\ No newline at end of file
diff --git a/examples/demo-styles/drawer.scss b/examples/demo-styles/drawer.scss
new file mode 100644
index 00000000000..117136171f8
--- /dev/null
+++ b/examples/demo-styles/drawer.scss
@@ -0,0 +1,21 @@
+.demo-drawer {
+ &__content {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ form {
+ flex: 1;
+ }
+ }
+
+ &__footer {
+ display: flex;
+ button {
+ flex: 1;
+ }
+ }
+}
+
+.el-drawer__body {
+ padding: 20px;
+}
diff --git a/examples/demo-styles/dropdown.scss b/examples/demo-styles/dropdown.scss
new file mode 100644
index 00000000000..0b648618aab
--- /dev/null
+++ b/examples/demo-styles/dropdown.scss
@@ -0,0 +1,37 @@
+.demo-block {
+ .el-dropdown {
+ vertical-align: top;
+
+ & + .el-dropdown {
+ margin-left: 15px;
+ }
+ }
+ .el-dropdown-link {
+ cursor: pointer;
+ color: #2460e0;
+ }
+ .el-icon-arrow-down {
+ font-size: 12px;
+ }
+}
+
+.block-col-2 {
+ margin: -24px;
+
+ .el-col {
+ padding: 30px 0;
+ text-align: center;
+ border-right: 1px solid #eff2f6;
+
+ &:last-child {
+ border-right: 0;
+ }
+ }
+}
+
+.demo-dropdown .demonstration {
+ display: block;
+ color: #8492a6;
+ font-size: 14px;
+ margin-bottom: 20px;
+}
diff --git a/examples/demo-styles/form.scss b/examples/demo-styles/form.scss
new file mode 100644
index 00000000000..6d04bc83e0e
--- /dev/null
+++ b/examples/demo-styles/form.scss
@@ -0,0 +1,73 @@
+.demo-form {
+ .el-select .el-input {
+ width: 380px;
+ }
+ .el-form {
+ width: 460px;
+ }
+
+ .line {
+ text-align: center;
+ }
+
+ .el-checkbox-group {
+ width: 320px;
+ margin: 0;
+ padding: 0;
+ list-style: none;
+
+ &:after,
+ &:before {
+ content: " ";
+ display: table;
+ }
+ &:after {
+ clear: both;
+ visibility: hidden;
+ font-size: 0;
+ height: 0;
+ }
+
+ .el-checkbox {
+ float: left;
+ width: 160px;
+ padding-right: 20px;
+ margin: 0;
+ padding: 0;
+
+ + .el-checkbox {
+ margin-left: 0;
+ }
+ }
+ }
+ .demo-form-normal {
+ width: 460px;
+ }
+ .demo-form-inline {
+ width: auto;
+
+ .el-input {
+ width: 150px;
+ }
+ > * {
+ margin-right: 10px;
+ }
+ }
+ .demo-ruleForm {
+ width: 460px;
+
+ .el-select .el-input {
+ width: 360px;
+ }
+ }
+ .demo-dynamic {
+ .el-input {
+ margin-right: 10px;
+ width: 270px;
+ vertical-align: top;
+ }
+ }
+ .fr {
+ float: right;
+ }
+}
diff --git a/examples/demo-styles/i18n.scss b/examples/demo-styles/i18n.scss
new file mode 100644
index 00000000000..eabe9ce05b3
--- /dev/null
+++ b/examples/demo-styles/i18n.scss
@@ -0,0 +1,8 @@
+ul.language-list {
+ color: #5e6d82;
+ font-size: 14px;
+ padding-left: 20px;
+ li {
+ line-height: 1.8;
+ }
+}
diff --git a/examples/demo-styles/icon.scss b/examples/demo-styles/icon.scss
new file mode 100644
index 00000000000..3f670b440ef
--- /dev/null
+++ b/examples/demo-styles/icon.scss
@@ -0,0 +1,69 @@
+.demo-icon .source > div > i {
+ color: #606266;
+ margin: 0 20px;
+ font-size: 1.5em;
+ vertical-align: middle;
+}
+
+.demo-icon .source button {
+ margin: 0 20px;
+}
+
+.page-component .content > ul.icon-list {
+ overflow: hidden;
+ list-style: none;
+ padding: 0!important;
+ border: solid 1px #eaeefb;
+ border-radius: 4px;
+}
+.icon-list li {
+ float: left;
+ width: 16.66%;
+ text-align: center;
+ height: 120px;
+ line-height: 120px;
+ color: #666;
+ font-size: 13px;
+ border-right: 1px solid #eee;
+ border-bottom: 1px solid #eee;
+ margin-right: -1px;
+ margin-bottom: -1px;
+
+ &::after {
+ display: inline-block;
+ content: "";
+ height: 100%;
+ vertical-align: middle;
+ }
+
+ span {
+ display: inline-block;
+ line-height: normal;
+ vertical-align: middle;
+ font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB",
+ "Microsoft YaHei", SimSun, sans-serif;
+ color: #99a9bf;
+ transition: color 0.15s linear;
+ }
+
+ i {
+ display: block;
+ font-size: 32px;
+ margin-bottom: 15px;
+ color: #606266;
+ transition: color 0.15s linear;
+ }
+
+ .icon-name {
+ display: inline-block;
+ padding: 0 3px;
+ height: 1em;
+ }
+
+ &:hover {
+ span,
+ i {
+ color: rgb(92, 182, 255);
+ }
+ }
+}
diff --git a/examples/demo-styles/image.scss b/examples/demo-styles/image.scss
new file mode 100644
index 00000000000..40659922358
--- /dev/null
+++ b/examples/demo-styles/image.scss
@@ -0,0 +1,78 @@
+@keyframes dot {
+ 0% { width: 0; margin-right: 1em; }
+ 100% { width: 1em; margin-right: 0; }
+}
+
+.demo-image {
+ .block {
+ padding: 30px 0;
+ text-align: center;
+ border-right: solid 1px #eff2f6;
+ display: inline-block;
+ width: 20%;
+ box-sizing: border-box;
+ vertical-align: top;
+ &:last-child {
+ border-right: none;
+ }
+ }
+
+ .demonstration {
+ display: block;
+ color: #8492a6;
+ font-size: 14px;
+ margin-bottom: 20px;
+ }
+}
+
+.demo-image__placeholder, .demo-image__error {
+ @extend .demo-image;
+
+ .block {
+ width: 49%;
+ }
+
+ .el-image {
+ width: 300px;
+ height: 200px;
+ }
+
+ .image-slot {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ width: 100%;
+ height: 100%;
+ background: #f5f7fa;
+ color: #A7A8AD;
+ font-size: 14px;
+ }
+}
+
+.demo-image__placeholder {
+ .dot {
+ animation: dot 2s infinite steps(3, start);
+ overflow: hidden;
+ }
+}
+
+.demo-image__error {
+ .image-slot {
+ font-size: 30px;
+ }
+}
+
+.demo-image__lazy {
+ height: 400px;
+ overflow-y: auto;
+
+ .el-image {
+ display: block;
+ min-height: 200px;
+ margin-bottom: 10px;
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+ }
+}
diff --git a/examples/demo-styles/index.scss b/examples/demo-styles/index.scss
new file mode 100644
index 00000000000..7d88b1adf6f
--- /dev/null
+++ b/examples/demo-styles/index.scss
@@ -0,0 +1,47 @@
+@import "./alert.scss";
+@import "./badge.scss";
+@import "./border.scss";
+@import "./button.scss";
+@import "./calendar.scss";
+@import "./card.scss";
+@import "./carousel.scss";
+@import "./cascader.scss";
+@import "./collapse.scss";
+@import "./color-picker.scss";
+@import "./color.scss";
+@import "./container.scss";
+@import "./date-picker.scss";
+@import "./datetime-picker.scss";
+@import "./dialog.scss";
+@import "./dropdown.scss";
+@import "./form.scss";
+@import "./i18n.scss";
+@import "./icon.scss";
+@import "./input-number.scss";
+@import "./input.scss";
+@import "./layout.scss";
+@import "./loading.scss";
+@import "./menu.scss";
+@import "./pagination.scss";
+@import "./popover.scss";
+@import "./progress.scss";
+@import "./rate.scss";
+@import "./select.scss";
+@import "./slider.scss";
+@import "./switch.scss";
+@import "./table.scss";
+@import "./tag.scss";
+@import "./time-picker.scss";
+@import "./timeline.scss";
+@import "./tooltip.scss";
+@import "./transition.scss";
+@import "./transfer.scss";
+@import "./tree.scss";
+@import "./typography.scss";
+@import "./upload.scss";
+@import "./divider.scss";
+@import "./image.scss";
+@import "./infinite-scroll.scss";
+@import "./avatar.scss";
+@import "./drawer.scss";
+@import "./button-group-enhance.scss";
diff --git a/examples/demo-styles/infinite-scroll.scss b/examples/demo-styles/infinite-scroll.scss
new file mode 100644
index 00000000000..a63f9eb5cd0
--- /dev/null
+++ b/examples/demo-styles/infinite-scroll.scss
@@ -0,0 +1,46 @@
+.infinite-list {
+ height: 300px;
+ padding: 0;
+ margin: 0;
+ list-style: none;
+
+ .infinite-list-item {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ height: 50px;
+ background: #e8f3fe;
+ margin: 10px;
+ color: lighten(#1989fa, 20%);
+ & + .list-item {
+ margin-top: 10px
+ }
+ }
+}
+
+.infinite-list-wrapper {
+ height: 300px;
+ text-align: center;
+
+ .list{
+ padding: 0;
+ margin: 0;
+ list-style: none;
+ }
+
+
+ .list-item{
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ height: 50px;
+ background: #fff6f6;
+ color: #ff8484;
+ & + .list-item {
+ margin-top: 10px
+ }
+ }
+}
+
+
+
diff --git a/examples/demo-styles/input-number.scss b/examples/demo-styles/input-number.scss
new file mode 100644
index 00000000000..b85cff7081f
--- /dev/null
+++ b/examples/demo-styles/input-number.scss
@@ -0,0 +1,5 @@
+.demo-block.demo-input-number {
+ .el-input-number + .el-input-number {
+ margin-left: 10px;
+ }
+}
diff --git a/examples/demo-styles/input.scss b/examples/demo-styles/input.scss
new file mode 100644
index 00000000000..88b51b942f5
--- /dev/null
+++ b/examples/demo-styles/input.scss
@@ -0,0 +1,65 @@
+.demo-input {
+ .el-select .el-input {
+ width: 130px;
+ }
+ .el-input {
+ width: 180px;
+ }
+ .el-textarea {
+ width: 414px;
+ }
+ .el-input-group {
+ width: 100%;
+ }
+ .demo-input-size {
+ .el-input {
+ vertical-align: top;
+ margin: 0 10px 10px 0;
+ }
+ }
+ .input-with-select .el-input-group__prepend {
+ background-color: #fff;
+ }
+ .demo-autocomplete {
+ text-align: center;
+
+ .sub-title {
+ margin-bottom: 10px;
+ font-size: 14px;
+ color: #8492a6;
+ }
+
+ .el-col:not(:last-child) {
+ border-right: 1px solid rgba(224, 230, 237, 0.5);
+ }
+
+ .el-autocomplete {
+ text-align: left;
+ }
+ }
+}
+.el-autocomplete-suggestion.my-autocomplete {
+ li {
+ line-height: normal;
+ padding-top: 7px;
+ padding-bottom: 7px;
+
+ .name {
+ text-overflow: ellipsis;
+ overflow: hidden;
+ }
+ .addr {
+ font-size: 12px;
+ color: #b4b4b4;
+ }
+ .highlighted .addr {
+ color: #ddd;
+ }
+ }
+}
+.demo-input-suffix {
+ margin-bottom: 15px;
+ .el-input {
+ margin-right: 15px;
+ }
+}
diff --git a/examples/demo-styles/layout.scss b/examples/demo-styles/layout.scss
new file mode 100644
index 00000000000..df639344fc7
--- /dev/null
+++ b/examples/demo-styles/layout.scss
@@ -0,0 +1,28 @@
+.demo-layout {
+ .el-row {
+ margin-bottom: 20px;
+ &:last-child {
+ margin-bottom: 0;
+ }
+ }
+ .el-col {
+ border-radius: 4px;
+ }
+ .bg-purple-dark {
+ background: #99a9bf;
+ }
+ .bg-purple {
+ background: #d3dce6;
+ }
+ .bg-purple-light {
+ background: #e5e9f2;
+ }
+ .grid-content {
+ border-radius: 4px;
+ min-height: 36px;
+ }
+ .row-bg {
+ padding: 10px 0;
+ background-color: #f9fafc;
+ }
+}
diff --git a/examples/demo-styles/loading.scss b/examples/demo-styles/loading.scss
new file mode 100644
index 00000000000..0fd6e26dc3a
--- /dev/null
+++ b/examples/demo-styles/loading.scss
@@ -0,0 +1,3 @@
+.demo-loading .el-table {
+ border: none;
+}
diff --git a/examples/demo-styles/menu.scss b/examples/demo-styles/menu.scss
new file mode 100644
index 00000000000..3b350216f86
--- /dev/null
+++ b/examples/demo-styles/menu.scss
@@ -0,0 +1,27 @@
+.demo-block.demo-menu {
+ .el-menu-demo {
+ padding-left: 55px;
+ }
+ .el-menu-vertical-demo:not(.el-menu--collapse) {
+ width: 240px;
+ min-height: 400px;
+ }
+ .line {
+ height: 1px;
+ background-color: #e0e6ed;
+ margin: 35px -24px;
+ }
+ h5 {
+ font-size: 14px;
+ color: #8492a6;
+ margin-top: 10px;
+ }
+ .tac {
+ text-align: center;
+
+ .el-menu-vertical-demo {
+ display: inline-block;
+ text-align: left;
+ }
+ }
+}
diff --git a/examples/demo-styles/pagination.scss b/examples/demo-styles/pagination.scss
new file mode 100644
index 00000000000..09f751d66fc
--- /dev/null
+++ b/examples/demo-styles/pagination.scss
@@ -0,0 +1,46 @@
+.demo-pagination .source.first {
+ padding: 0;
+}
+
+.demo-pagination .first .block {
+ padding: 30px 0;
+ text-align: center;
+ border-right: solid 1px #eff2f6;
+ display: inline-block;
+ width: 50%;
+ box-sizing: border-box;
+
+ &:last-child {
+ border-right: none;
+ }
+}
+
+.demo-pagination .first .demonstration {
+ display: block;
+ color: #8492a6;
+ font-size: 14px;
+ margin-bottom: 20px;
+}
+
+.demo-pagination .source.last {
+ padding: 0;
+}
+
+.demo-pagination .last .block {
+ padding: 30px 24px;
+ border-bottom: solid 1px #eff2f6;
+ &:last-child {
+ border-bottom: none;
+ }
+}
+
+.demo-pagination .last .demonstration {
+ font-size: 14px;
+ color: #8492a6;
+ line-height: 44px;
+}
+
+.demo-pagination .last .demonstration + .el-pagination {
+ width: 70%;
+ margin: 5px 20px 0 0;
+}
diff --git a/examples/demo-styles/popover.scss b/examples/demo-styles/popover.scss
new file mode 100644
index 00000000000..ee18df753ef
--- /dev/null
+++ b/examples/demo-styles/popover.scss
@@ -0,0 +1,11 @@
+.demo-block.demo-popover {
+ .el-popover + .el-popover {
+ margin-left: 10px;
+ }
+ .el-input {
+ width: 360px;
+ }
+ .el-button {
+ margin-left: 10px;
+ }
+}
diff --git a/examples/demo-styles/progress.scss b/examples/demo-styles/progress.scss
new file mode 100644
index 00000000000..216c8d8aef1
--- /dev/null
+++ b/examples/demo-styles/progress.scss
@@ -0,0 +1,9 @@
+.demo-block.demo-progress {
+ .el-progress--line {
+ margin-bottom: 15px;
+ width: 350px;
+ }
+ .el-progress--circle {
+ margin-right: 15px;
+ }
+}
diff --git a/examples/demo-styles/rate.scss b/examples/demo-styles/rate.scss
new file mode 100644
index 00000000000..b82b355200e
--- /dev/null
+++ b/examples/demo-styles/rate.scss
@@ -0,0 +1,18 @@
+.demo-rate .block {
+ padding: 30px 0;
+ text-align: center;
+ border-right: solid 1px #eff2f6;
+ display: inline-block;
+ width: 49%;
+ box-sizing: border-box;
+ &:last-child {
+ border-right: none;
+ }
+}
+
+.demo-rate .demonstration {
+ display: block;
+ color: #8492a6;
+ font-size: 14px;
+ margin-bottom: 20px;
+}
diff --git a/examples/demo-styles/select.scss b/examples/demo-styles/select.scss
new file mode 100644
index 00000000000..3d3c8e97fb8
--- /dev/null
+++ b/examples/demo-styles/select.scss
@@ -0,0 +1,3 @@
+.demo-select .el-select {
+ width: 240px;
+}
diff --git a/examples/demo-styles/slider.scss b/examples/demo-styles/slider.scss
new file mode 100644
index 00000000000..1b600a2c79d
--- /dev/null
+++ b/examples/demo-styles/slider.scss
@@ -0,0 +1,24 @@
+.demo-block.demo-slider .source {
+ padding: 0;
+}
+
+.demo-block.demo-slider .block {
+ padding: 30px 24px;
+ overflow: hidden;
+ border-bottom: solid 1px #eff2f6;
+ &:last-child {
+ border-bottom: none;
+ }
+}
+
+.demo-block.demo-slider .demonstration {
+ font-size: 14px;
+ color: #8492a6;
+ line-height: 44px;
+}
+
+.demo-block.demo-slider .demonstration + .el-slider {
+ float: right;
+ width: 70%;
+ margin-right: 20px;
+}
diff --git a/examples/demo-styles/switch.scss b/examples/demo-styles/switch.scss
new file mode 100644
index 00000000000..d62bb64587b
--- /dev/null
+++ b/examples/demo-styles/switch.scss
@@ -0,0 +1,5 @@
+.demo-block.demo-switch {
+ .el-switch {
+ margin: 20px 20px 20px 0;
+ }
+}
diff --git a/examples/demo-styles/table.scss b/examples/demo-styles/table.scss
new file mode 100644
index 00000000000..ccd16e6e6fe
--- /dev/null
+++ b/examples/demo-styles/table.scss
@@ -0,0 +1,23 @@
+.el-table .warning-row {
+ background: oldlace;
+}
+
+.el-table .success-row {
+ background: #f0f9eb;
+}
+
+.demo-table .name-wrapper {
+ display: inline-block;
+}
+
+.demo-table .demo-table-expand {
+ label {
+ width: 90px;
+ color: #99a9bf;
+ }
+ .el-form-item {
+ margin-right: 0;
+ margin-bottom: 0;
+ width: 50%;
+ }
+}
diff --git a/examples/demo-styles/tag.scss b/examples/demo-styles/tag.scss
new file mode 100644
index 00000000000..967d05bddff
--- /dev/null
+++ b/examples/demo-styles/tag.scss
@@ -0,0 +1,34 @@
+.demo-block.demo-tag {
+ .el-tag + .el-tag {
+ margin-left: 10px;
+ }
+
+ .button-new-tag {
+ margin-left: 10px;
+ height: 32px;
+ line-height: 30px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .input-new-tag {
+ width: 90px;
+ margin-left: 10px;
+ vertical-align: bottom;
+ }
+
+ .tag-group {
+ display: flex;
+ align-items: center;
+
+ &__title {
+ width: 45px;
+ font-size: 14px;
+ color: #606266;
+ }
+
+ &+.tag-group {
+ margin-top: 10px;
+ }
+ }
+}
diff --git a/examples/demo-styles/time-picker.scss b/examples/demo-styles/time-picker.scss
new file mode 100644
index 00000000000..f3c19a6acc7
--- /dev/null
+++ b/examples/demo-styles/time-picker.scss
@@ -0,0 +1,5 @@
+.demo-block {
+ .el-date-editor + .el-date-editor {
+ margin-left: 10px;
+ }
+}
diff --git a/examples/demo-styles/timeline.scss b/examples/demo-styles/timeline.scss
new file mode 100644
index 00000000000..0a50028f023
--- /dev/null
+++ b/examples/demo-styles/timeline.scss
@@ -0,0 +1,6 @@
+.demo-timeline .source .radio {
+ margin-bottom: 20px;
+}
+.demo-timeline .source .radio .el-radio-group {
+ margin-left: 20px;
+}
diff --git a/examples/demo-styles/tooltip.scss b/examples/demo-styles/tooltip.scss
new file mode 100644
index 00000000000..74e3e238b79
--- /dev/null
+++ b/examples/demo-styles/tooltip.scss
@@ -0,0 +1,39 @@
+.demo-tooltip {
+ .el-tooltip + .el-tooltip {
+ margin-left: 15px;
+ }
+ .box {
+ width: 400px;
+
+ .top {
+ text-align: center;
+ }
+
+ .left {
+ float: left;
+ width: 60px;
+ }
+
+ .right {
+ float: right;
+ width: 60px;
+ }
+
+ .bottom {
+ clear: both;
+ text-align: center;
+ }
+
+ .item {
+ margin: 4px;
+ }
+
+ .left .el-tooltip__popper,
+ .right .el-tooltip__popper {
+ padding: 8px 10px;
+ }
+ .el-tooltip {
+ margin-left: 0;
+ }
+ }
+}
diff --git a/examples/demo-styles/transfer.scss b/examples/demo-styles/transfer.scss
new file mode 100644
index 00000000000..a5b49433ff0
--- /dev/null
+++ b/examples/demo-styles/transfer.scss
@@ -0,0 +1,6 @@
+.demo-transfer {
+ .transfer-footer {
+ margin-left: 15px;
+ padding: 6px 5px;
+ }
+}
diff --git a/examples/demo-styles/transition.scss b/examples/demo-styles/transition.scss
new file mode 100644
index 00000000000..c889e2ab6c0
--- /dev/null
+++ b/examples/demo-styles/transition.scss
@@ -0,0 +1,14 @@
+.demo-transition {
+ .transition-box {
+ margin-bottom: 10px;
+ width: 200px;
+ height: 100px;
+ border-radius: 4px;
+ background-color: #2460e0;
+ text-align: center;
+ color: #fff;
+ padding: 40px 20px;
+ margin-right: 20px;
+ box-sizing: border-box;
+ }
+}
diff --git a/examples/demo-styles/tree.scss b/examples/demo-styles/tree.scss
new file mode 100644
index 00000000000..286b0f3bdd3
--- /dev/null
+++ b/examples/demo-styles/tree.scss
@@ -0,0 +1,48 @@
+.demo-tree {
+ .leaf {
+ width: 20px;
+ background: #ddd;
+ }
+
+ .folder {
+ width: 20px;
+ background: #888;
+ }
+
+ .buttons {
+ margin-top: 20px;
+ }
+
+ .filter-tree {
+ margin-top: 20px;
+ }
+
+ .custom-tree-container {
+ display: flex;
+ margin: -24px;
+ }
+
+ .block {
+ flex: 1;
+ padding: 8px 24px 24px;
+
+ &:first-child {
+ border-right: solid 1px #eff2f6;
+ }
+
+ > p {
+ text-align: center;
+ margin: 0;
+ line-height: 4;
+ }
+ }
+
+ .custom-tree-node {
+ flex: 1;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ font-size: 14px;
+ padding-right: 8px;
+ }
+}
diff --git a/examples/demo-styles/typography.scss b/examples/demo-styles/typography.scss
new file mode 100644
index 00000000000..ff9c0a26149
--- /dev/null
+++ b/examples/demo-styles/typography.scss
@@ -0,0 +1,30 @@
+.demo-typo-size {
+ .color-dark-light {
+ color: #99a9bf;
+ }
+}
+.demo-term-box img {
+ width: 24%;
+ margin: 0 4% 20px 0;
+}
+
+.lineH-left {
+ display: inline-block;
+ height: 80px;
+}
+.lineH-right {
+ display: inline-block;
+ list-style: none;
+ padding: 0 0 0 90px;
+ margin: 0;
+ vertical-align: top;
+}
+.lineH-right li {
+ font-size: 13px;
+ color: #666;
+ height: 20px;
+ line-height: 20px;
+}
+.lineH-right li span {
+ padding-left: 40px;
+}
diff --git a/examples/demo-styles/upload.scss b/examples/demo-styles/upload.scss
new file mode 100644
index 00000000000..7eb6297c7ea
--- /dev/null
+++ b/examples/demo-styles/upload.scss
@@ -0,0 +1,39 @@
+.upload-tip {
+ color: #8492a6;
+ font-size: 12px;
+ margin-top: 7px;
+}
+.demo-block {
+ margin-bottom: 24px;
+
+ .upload-demo {
+ width: 360px;
+ }
+ .avatar-uploader {
+ .el-upload {
+ border: 1px dashed #d9d9d9;
+ border-radius: 6px;
+ cursor: pointer;
+ position: relative;
+ overflow: hidden;
+
+ &:hover,
+ &:focus {
+ border-color: #2460e0;
+ }
+ }
+ .avatar-uploader-icon {
+ font-size: 28px;
+ color: #8c939d;
+ width: 178px;
+ height: 178px;
+ line-height: 178px;
+ text-align: center;
+ }
+ .avatar {
+ width: 178px;
+ height: 178px;
+ display: block;
+ }
+ }
+}
diff --git a/examples/docs/en-US/affix.md b/examples/docs/en-US/affix.md
new file mode 100644
index 00000000000..b0b148f0525
--- /dev/null
+++ b/examples/docs/en-US/affix.md
@@ -0,0 +1 @@
+## Affix
diff --git a/examples/docs/en-US/alert.md b/examples/docs/en-US/alert.md
index 5eb3bdbd9eb..3db4f3284c2 100644
--- a/examples/docs/en-US/alert.md
+++ b/examples/docs/en-US/alert.md
@@ -1,22 +1,3 @@
-
-
-
## Alert
Displays important alert messages.
@@ -49,6 +30,37 @@ Alert components are non-overlay elements in the page that does not disappear au
```
:::
+### Theme
+
+Alert provide two different themes, `light` and `dark`.
+
+:::demo Set `effect` to change theme, default is `light`.
+```html
+
+
+
+
+
+
+
+
+
+
+```
+:::
+
### Customizable close button
Customize the close button as texts or other symbols.
@@ -209,17 +221,19 @@ Description includes a message with more detailed information.
| Attribute | Description | Type | Accepted Values | Default |
|---------- |-------------- |---------- |-------------------------------- |-------- |
| title | title | string | — | — |
-| type | component type | string | success/warning/info/error | info |
-| description | descriptive text. Can also be passed with the default slot | string | — | — |
-| closable | if closable or not | boolean | — | true |
-| center | whether to center the text | boolean | — | false |
-| close-text | customized close button text | string | — | — |
-| show-icon | if a type icon is displayed | boolean | — | false |
+| type | Component type | string | success/warning/info/error | info |
+| description | Descriptive text. Can also be passed with the default slot | string | — | — |
+| closable | If closable or not | boolean | — | true |
+| center | Whether to center the text | boolean | — | false |
+| close-text | Customized close button text | string | — | — |
+| show-icon | If a type icon is displayed | boolean | — | false |
+| effect | Choose theme | string | light/dark | light |
### Slot
| Name | Description |
|------|--------|
+| — | description |
| title | content of the Alert title |
### Events
diff --git a/examples/docs/en-US/avatar.md b/examples/docs/en-US/avatar.md
new file mode 100644
index 00000000000..2923280bb17
--- /dev/null
+++ b/examples/docs/en-US/avatar.md
@@ -0,0 +1,253 @@
+## Avatar avatar
+
+Avatars can be used to represent people or objects. It supports images, Icons, or characters.
+
+### Basic
+
+use `shape` and `size` prop to set avatar's shape and size
+
+:::demo
+
+```html
+
+
+
+ circle
+
+
+
+
+
+
+
+
+
+
+ square
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+:::
+
+### Types
+
+It supports images, Icons, or characters
+
+:::demo
+
+```html
+
+
+
+
+
+
+
+
+
+ user
+
+
+
+```
+
+:::
+
+### Tooltip
+
+If `text` or `tooltip` exist, The tooltips can be displayed when the mouse hovers
+
+:::demo
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+:::
+
+### Fallback when image load error
+
+fallback when image load error or src is empty
+
+customize the display via the default slot, or by using `text` as a placeholder.
+
+:::demo
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+:::
+
+### Custom Text Formatter
+
+When using text as a placeholder, the last two characters are displayed by default, and hover displayed the full text.
+
+You can also customize how to abbreviate it via the `textFormatter` method.
+
+:::demo
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+:::
+
+### How the image fit its container
+
+Set how the image fit its container for an image avatar, same as [object-fit](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit).
+
+:::demo
+
+```html
+
+
+
+ {{ fit }}
+
+
+
+
+
+```
+
+:::
+
+### Attributes
+
+| Attribute | Description | Type | Accepted Values | Default |
+| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | ------------------------------------------ | ---------------------- |
+| icon | set representation type to Icon, more info on Icon Component | string | | |
+| size | set avatar size | number/string | number / large / medium / small | large |
+| shape | set avatar shape | string | circle / square | circle |
+| src | the address of the image for an image avatar | string | | |
+| srcSet | A list of one or more strings separated by commas indicating a set of possible image sources for the user agent to use | string | | |
+| alt | This attribute defines an alternative text description of the image | string | | |
+| fit | set how the image fit its container for an image avatar | string | fill / contain / cover / none / scale-down | cover |
+| text | When images cannot be loaded and no default slot is not used, will take the result of the textFormatter and use it as a text placeholder. will also be used for the default content of the tooltip | string | | |
+| fontSize | set text placeholders size | number | | 12 |
+| bgColor | set background color | string | | #c0c4cc |
+| textFormatter | format `text` to show the abbreviation in the avatar placeholder, last two characters by default | function | | (str) => str.slice(-2) |
+| tooltip | set tooltip content, if empty, take `text` as the tooltip content. | string | | |
+
+### Events
+
+| Event Name | Description | Parameters |
+| ---------- | ------------------------------------------------------------------------------ | ---------- |
+| error | handler when img load error, return false to prevent default fallback behavior | (e: Event) |
+
+### Slot
+
+| Slot Name | Description |
+| --------- | ------------------------ |
+| default | customize avatar content |
diff --git a/examples/docs/en-US/backtop.md b/examples/docs/en-US/backtop.md
new file mode 100644
index 00000000000..faadfe35259
--- /dev/null
+++ b/examples/docs/en-US/backtop.md
@@ -0,0 +1,60 @@
+## Backtop
+
+A button to back to top
+
+### Basic usage
+
+Scroll down to see the bottom-right button.
+:::demo
+
+```html
+
+ Scroll down to see the bottom-right button.
+
+
+```
+
+:::
+
+### Customizations
+
+Display area is 40px \* 40px.
+:::demo
+
+```html
+
+ Scroll down to see the bottom-right button.
+
+
+ UP
+
+
+
+```
+
+:::
+
+### Attributes
+
+| Attribute | Description | Type | Accepted Values | Default |
+| ----------------- | ------------------------------------------------------------------- | --------------- | --------------- | ------- |
+| target | the target to trigger scroll | string | | |
+| visibility-height | the button will not show until the scroll height reaches this value | number | | 200 |
+| right | right distance | number | | 40 |
+| bottom | bottom distance | number | | 40 |
+
+### Events
+
+| Event Name | Description | Parameters |
+| ---------- | ------------------- | ----------- |
+| click | triggers when click | click event |
diff --git a/examples/docs/en-US/badge.md b/examples/docs/en-US/badge.md
index 0636dd0efbd..9f9a687d701 100644
--- a/examples/docs/en-US/badge.md
+++ b/examples/docs/en-US/badge.md
@@ -114,27 +114,6 @@ Use a red dot to mark content that needs to be noticed.
```
:::
-
-
### Attributes
| Attribute | Description | Type | Accepted Values | Default |
|------------- |---------------- |---------------- |---------------------- |-------- |
diff --git a/examples/docs/en-US/border.md b/examples/docs/en-US/border.md
new file mode 100644
index 00000000000..540a522b26b
--- /dev/null
+++ b/examples/docs/en-US/border.md
@@ -0,0 +1,135 @@
+
+
+## Border
+
+We standardize the borders that can be used in buttons, cards, pop-ups and other components.
+
+### Border
+
+There are few border styles to choose.
+
+
+
+
+ Name
+ Thickness
+ Demo
+
+
+ Solid
+ 1px
+
+
+
+
+
+ Dashed
+ 2px
+
+
+
+
+
+
+
+### Radius
+
+There are few radius styles to choose.
+
+
+
+ No Radius
+ border-radius: 0px
+
+
+
+ Small Radius
+ border-radius: {{borderRadiusSmall}}
+
+
+
+ Large Radius
+ border-radius: {{borderRadiusBase}}
+
+
+
+ Round Radius
+ border-radius: 30px
+
+
+
+
+### Shadow
+
+There are few shadow styles to choose.
+
+
+Basic Shadow box-shadow: {{boxShadowBase}}
+
+
+Light Shadow box-shadow: {{boxShadowLight}}
diff --git a/examples/docs/en-US/button-group-enhance.md b/examples/docs/en-US/button-group-enhance.md
new file mode 100644
index 00000000000..188c81b7813
--- /dev/null
+++ b/examples/docs/en-US/button-group-enhance.md
@@ -0,0 +1 @@
+## ButtonGroupEnhance
diff --git a/examples/docs/en-US/button.md b/examples/docs/en-US/button.md
index 6bad26ba809..9c00fff0eb7 100644
--- a/examples/docs/en-US/button.md
+++ b/examples/docs/en-US/button.md
@@ -1,27 +1,3 @@
-
-
## Button
Commonly used button.
diff --git a/examples/docs/en-US/calendar.md b/examples/docs/en-US/calendar.md
new file mode 100644
index 00000000000..4516c59ee7a
--- /dev/null
+++ b/examples/docs/en-US/calendar.md
@@ -0,0 +1,66 @@
+## Calendar
+
+Display date.
+
+### Basic
+
+:::demo Set `value` to specify the currently displayed month. If `value` is not specified, current month is displayed. `value` supports two-way binding.
+```html
+
+
+
+
+```
+:::
+
+### Custom Content
+
+:::demo Customize what is displayed in the calendar cell by setting `scoped-slot` named `dateCell`. In `scoped-slot` you can get the date (the date of the current cell), data (including the type, isSelected, day attribute). For details, please refer to the API documentation below.
+```html
+
+
+
+
+ {{ data.day.split('-').slice(1).join('-') }} {{ data.isSelected ? '✔️' : ''}}
+
+
+
+
+```
+:::
+
+### Range
+
+:::demo Set the `range` attribute to specify the display range of the calendar. Start time must be Monday, end time must be Sunday, and the time span cannot exceed two months.
+```html
+
+
+```
+:::
+
+### Attributes
+| Attribute | Description | Type | Accepted Values | Default |
+|-----------------|------------------- |---------- |---------------------- |--------- |
+| value / v-model | binding value | Date/string/number | — | — |
+| range | time range, including start time and end time. Start time must be start day of week, end time must be end day of week, the time span cannot exceed two months. | Array | — | — |
+| first-day-of-week | fisrt day of week| Number | 1 to 7 | 1 |
+
+### dateCell scoped slot 参数
+| Attribute | Description | Type | Accepted Values | Default |
+|-----------------|-------------- |---------- |---------------------- |--------- |
+| date | date the cell represents | Date | — | — |
+| data | { type, isSelected, day}. `type` indicates which month the date belongs, optional values are prev-month, current-month, next-month; `isSelected` indicates whether the date is selected; `day` is the formatted date in the format yyyy-MM-dd | Object | — | — |
diff --git a/examples/docs/en-US/card.md b/examples/docs/en-US/card.md
index d657fc85e7c..0abfb460066 100644
--- a/examples/docs/en-US/card.md
+++ b/examples/docs/en-US/card.md
@@ -1,51 +1,3 @@
-
-
-
## Card
Integrate information in a card container.
@@ -127,12 +79,12 @@ Display richer content by adding some configs.
-
+
Yummy hamburger
- Operating button
+ Operating
diff --git a/examples/docs/en-US/carousel.md b/examples/docs/en-US/carousel.md
index 8d391945163..36ed9f98054 100644
--- a/examples/docs/en-US/carousel.md
+++ b/examples/docs/en-US/carousel.md
@@ -1,64 +1,3 @@
-
-
## Carousel
Loop a series of images or texts in a limited space
@@ -72,7 +11,7 @@ Loop a series of images or texts in a limited space
Switch when indicator is hovered (default)
- {{ item }}
+ {{ item }}
@@ -80,7 +19,7 @@ Loop a series of images or texts in a limited space
Switch when indicator is clicked
- {{ item }}
+ {{ item }}
@@ -183,7 +122,7 @@ When a page is wide enough but has limited height, you can activate card mode fo
- {{ item }}
+ {{ item }}
@@ -208,6 +147,38 @@ When a page is wide enough but has limited height, you can activate card mode fo
```
:::
+By default, `direction` is `horizontal`. Let carousel be displayed in the vertical direction by setting `direction` to `vertical`.
+
+:::demo
+```html
+
+
+
+ {{ item }}
+
+
+
+
+
+```
+:::
+
### Carousel Attributes
| Attribute | Description | Type | Accepted Values | Default |
|---------- |-------------- |---------- |-------------------------------- |-------- |
@@ -220,6 +191,7 @@ When a page is wide enough but has limited height, you can activate card mode fo
| arrow | when arrows are shown | string | always/hover/never | hover |
| type | type of the Carousel | string | card | — |
| loop | display the items in loop | boolean | - | true |
+| direction | display direction | string | horizontal/vertical | horizontal |
### Carousel Events
| Event Name | Description | Parameters |
diff --git a/examples/docs/en-US/cascader.md b/examples/docs/en-US/cascader.md
index b063a1d7dd1..4761aaa8061 100644
--- a/examples/docs/en-US/cascader.md
+++ b/examples/docs/en-US/cascader.md
@@ -1,18 +1,34 @@
+## Cascader
+
+If the options have a clear hierarchical structure, Cascader can be used to view and select them.
+
+### Basic usage
+
+There are two ways to expand child option items.
+
+:::demo Assigning the `options` attribute to an array of options renders a Cascader. The `props.expandTrigger` attribute defines how child options are expanded.
+```html
+
+ Child options expand when clicked (default)
+
+
+
+ Child options expand when hovered
+
+
+
+```
+:::
-
-
-## Cascader
-
-If the options have a clear hierarchical structure, Cascader can be used to view and select them.
-
-### Basic usage
+### Disabled option
-There are two ways to expand child option items.
+Disable an option by setting a `disabled` field in the option object.
-:::demo Assigning the `options` attribute to an array of options renders a Cascader. The `expand-trigger` attribute defines how child options are expanded. This example also demonstrates the `change` event, whose parameter is the value of Cascader, an array made up of the values of each selected level.
+:::demo In this example, the first item in `options` array has a `disabled: true` field, so it is disabled. By default, Cascader checks the `disabled` field in each option object; if you are using another field name to indicate whether an option is disabled, you can assign it in the `props.disabled` attribute (see the API table below for details). And of course, field name `value`, `label` and `children` can also be customized in the same way.
```html
-
- Child options expand when clicked (default)
-
-
-
-
- Child options expand when hovered
-
-
-
+
```
:::
-### Disabled option
+### Clearable
-Disable an option by setting a `disabled` field in the option object.
+Set `clearable` attribute for `el-cascader` and a clear icon will appear when selected and hovered
-:::demo In this example, the first item in `options` array has a `disabled: true` field, so it is disabled. By default, Cascader checks the `disabled` field in each option object; if you are using another field name to indicate whether an option is disabled, you can assign it in the `props` attribute (see the API table below for details). And of course, field name `value`, `label` and `children` can also be customized in the same way.
+:::demo
```html
-
+
+
```
:::
@@ -741,10 +671,7 @@ The input can display only the last level instead of all levels.
:::demo The `show-all-levels` attribute defines if all levels are displayed. If it is `false`, only the last level is displayed.
```html
-
+
+```
+:::
+
+
+### Select any level of options
+
+In single selection, only the leaf nodes can be checked, and in multiple selection, check parent nodes will lead to leaf nodes be checked eventually. When enable this feature, it can make parent and child nodes unlinked and you can select any level of options.
+
+:::demo Set `props.checkStrictly = true` to make checked state of a node not affects its parent nodes and child nodes, and then you can select any level of options.
+```html
+
+ Select any level of options (Single selection)
+
+
+
+ Select any level of options (Multiple selection)
+
+
+
+```
+:::
+
+### Filterable
+
+Search and select options with a keyword.
+
+:::demo Adding `filterable` to `el-cascader` enables filtering. Cascader will match nodes whose label or parent's label (according to `show-all-levels`) includes input keyword. Of course, you can customize search logic by `filter-method` which accepts a function, the first parameter is `node`, the second is `keyword`, and need return a boolean value indicating whether it hits.
+```html
+
+ Filterable (Single selection)
+
+
+
+ Filterable (Multiple selection)
+
+
+
```
:::
-### Filterable
+### Cascader panel
-Search and select options with a keyword.
+`CascaderPanel` is the core component of `Cascader` which has various of features such as single selection, multiple selection, dynamic loading and so on.
-:::demo Adding `filterable` to `el-cascader` enables filtering
+:::demo Just like `el-cascader`, you can set alternative options by `options`, and enable other features by `props`, see the API form below for details.
```html
-
- Only options of the last level can be selected
-
-
-
- Options of all levels can be selected
-
-
+
-
## Checkbox
A group of options for multiple choices.
@@ -173,7 +128,7 @@ The `min` and `max` properties can help you to limit the number of checked items
```html
{{city}}
@@ -184,7 +139,7 @@ The `min` and `max` properties can help you to limit the number of checked items
export default {
data() {
return {
- checkedCities1: ['Shanghai', 'Beijing'],
+ checkedCities: ['Shanghai', 'Beijing'],
cities: cityOptions
};
}
@@ -245,21 +200,21 @@ Checkbox with button styles.
```html
-
-
+
+
-
-
+
+
-
+
-
+
@@ -270,12 +225,12 @@ Checkbox with button styles.
export default {
data () {
return {
- checked3: true,
- checked4: false,
- checked5: false,
- checked6: true,
- checkboxGroup5: [],
- checkboxGroup6: []
+ checked1: true,
+ checked2: false,
+ checked3: false,
+ checked4: true,
+ checkboxGroup1: [],
+ checkboxGroup2: []
};
}
}
@@ -286,6 +241,7 @@ Checkbox with button styles.
### Checkbox Attributes
| Attribute | Description | Type | Options | Default|
|---------- |-------- |---------- |------------- |-------- |
+| value / v-model | binding value | string / number / boolean | — | — |
| label | value of the Checkbox when used inside a `checkbox-group` | string / number / boolean | — | — |
| true-label | value of the Checkbox if it's checked | string / number | — | — |
| false-label | value of the Checkbox if it's not checked | string / number | — | — |
@@ -304,12 +260,13 @@ Checkbox with button styles.
### Checkbox-group Attributes
| Attribute | Description | Type | Options | Default|
|---------- |-------- |---------- |------------- |-------- |
+| value / v-model | binding value | array | — | — |
|size | size of checkbox buttons or bordered checkboxes | string | medium / small / mini | — |
| disabled | whether the nesting checkboxes are disabled | boolean | — | false |
| min | minimum number of checkbox checked | number | — | — |
| max | maximum number of checkbox checked | number | — | — |
|text-color | font color when button is active | string | — | #ffffff |
-|fill | border and background color when button is active | string | — | #409EFF |
+|fill | border and background color when button is active | string | — | #2460e0 |
### Checkbox-group Events
| Event Name | Description | Parameters |
diff --git a/examples/docs/en-US/collapse.md b/examples/docs/en-US/collapse.md
index 42c53c0c23a..b8133fdc479 100644
--- a/examples/docs/en-US/collapse.md
+++ b/examples/docs/en-US/collapse.md
@@ -1,29 +1,3 @@
-
-
-
-
## Collapse
Use Collapse to store contents.
@@ -141,16 +115,17 @@ Besides using the `title` attribute, you can customize panel title with named sl
### Collapse Attributes
| Attribute | Description | Type | Accepted Values | Default |
|---------- |-------------- |---------- |-------------------------------- |-------- |
+| value / v-model | currently active panel | string (accordion mode) / array (non-accordion mode) | — | — |
| accordion | whether to activate accordion mode | boolean | — | false |
-| value | currently active panel | string (accordion mode)/array (non-accordion mode) | — | — |
### Collapse Events
| Event Name | Description | Parameters |
|---------|---------|---------|
-| change | triggers when active panels change | activeNames: array (non-accordion mode)/string (accordion mode) |
+| change | triggers when active panels change | (activeNames: array (non-accordion mode) / string (accordion mode)) |
### Collapse Item Attributes
| Attribute | Description | Type | Accepted Values | Default |
|---------- |-------------- |---------- |-------------------------------- |-------- |
-| name | unique identification of the panel | string/number | — | — |
-| title | title of the panel | string | — | — |
\ No newline at end of file
+| name | unique identification of the panel | string/number | — | — |
+| title | title of the panel | string | — | — |
+| disabled | disable the collapse item | boolean | — | — |
\ No newline at end of file
diff --git a/examples/docs/en-US/color-picker.md b/examples/docs/en-US/color-picker.md
index 3040d8a0c95..a09318f11ba 100644
--- a/examples/docs/en-US/color-picker.md
+++ b/examples/docs/en-US/color-picker.md
@@ -1,62 +1,3 @@
-
-
-
-
## ColorPicker
ColorPicker is a color selector supporting multiple color formats.
@@ -78,7 +19,7 @@ ColorPicker is a color selector supporting multiple color formats.
export default {
data() {
return {
- color1: '#409EFF',
+ color1: '#2460e0',
color2: null
}
}
@@ -91,13 +32,13 @@ ColorPicker is a color selector supporting multiple color formats.
:::demo ColorPicker supports alpha channel selecting. To activate alpha selecting, just add the `show-alpha` attribute.
```html
-
+
## Color
+
Element uses a specific set of palettes to specify colors to provide a consistent look and feel for the products you build.
### Main Color
@@ -82,8 +99,25 @@ Element uses a specific set of palettes to specify colors to provide a consisten
The main color of Element is bright and friendly blue.
-
- Blue#409EFF
+
+
+ Brand Color#2460e0
+
+
+
+
+
@@ -93,16 +127,72 @@ Besides the main color, you need to use different scene colors in different scen
- Success#67C23A
+ Success#2FD163
+
+
+
+
+
- Warning#E6A23C
+ Warning#F5A623
+
+
+
+
+
- Danger#F56C6C
+ Danger#FF4D4F
+
+
+
+
+
- Info#909399
+ Info#A7A8AD
+
+
+
+
+
@@ -113,18 +203,49 @@ Neutral colors are for text, background and border colors. You can use different
- Primary Text#303133
- Regular Text#606266
- Secondary Text#909399
- Placeholder Text#C0C4CC
+ Primary Text{{textPrimary}}
+
+ Regular Text{{textRegular}}
+ Secondary Text{{textSecondary}}
+ Placeholder Text{{textPlaceholder}}
+
+
+
+
+ Base Border{{borderBase}}
+ Light Border{{borderLight}}
+ Lighter Border{{borderLighter}}
+ Extra Light Border{{borderExtraLight}}
- Base Border#DCDFE6
- Light Border#E4E7ED
- Lighter Border#EBEEF5
- Extra Light Border#F2F6FC
+ Basic Black{{black}}
+ Basic White{{white}}
+ TransparentTransparent
+
diff --git a/examples/docs/en-US/container.md b/examples/docs/en-US/container.md
index e1a5e4e07fb..1fd23b489d5 100644
--- a/examples/docs/en-US/container.md
+++ b/examples/docs/en-US/container.md
@@ -1,62 +1,3 @@
-
-
-
-
## Container
Container components for scaffolding basic structure of the page:
diff --git a/examples/docs/en-US/custom-theme.md b/examples/docs/en-US/custom-theme.md
index fd277bec2a8..dbbdd360b42 100644
--- a/examples/docs/en-US/custom-theme.md
+++ b/examples/docs/en-US/custom-theme.md
@@ -1,5 +1,12 @@
## Custom theme
-Element uses BEM-styled CSS so that you can override styles easily. But if you need to replace styles at a large scale, e.g. change the theme color from blue to orange or green, maybe overriding them one by one is not a good idea. We provide three ways to change the style variables.
+Element uses BEM-styled CSS so that you can override styles easily. But if you need to replace styles at a large scale, e.g. change the theme color from blue to orange or green, maybe overriding them one by one is not a good idea. We provide four ways to change the style variables.
+
+### Theme Roller
+Use [Online Theme Roller](./#/en-US/theme) to customize all Design Tokens of global variables and components,and preview the new theme in real-time.and it can generate a complete style package based on the new theme for you to download directly (to import new style files in your project, please refer to the 'Import custom theme' part of this section).
+
+Also, use [Theme Roller Chrome Extension](https://chrome.google.com/webstore/detail/element-theme-roller/lifkjlojflekabbmlddfccdkphlelmim),to customize theme and preview in real-time on any website developed by Element.
+
+
### Changing theme color
If you just want to change the theme color of Element, the [theme preview website](https://elementui.github.io/theme-chalk-preview/#/en-US) is recommended. The theme color of Element is bright and friendly blue. By changing it, you can make Element more visually connected to specific projects.
@@ -14,15 +21,15 @@ The above website enables you to preview theme of a new theme color in real-time
$--color-primary: teal;
/* icon font path, required */
-$--font-path: '~element-ui/lib/theme-chalk/fonts';
+$--font-path: '~@femessage/element-ui/lib/theme-chalk/fonts';
-@import "~element-ui/packages/theme-chalk/src/index";
+@import "~@femessage/element-ui/packages/theme-chalk/src/index";
```
Then in the entry file of your project, import this style file instead of Element's built CSS:
```JS
import Vue from 'vue'
-import Element from 'element-ui'
+import Element from '@femessage/element-ui'
import './element-variables.scss'
Vue.use(Element)
@@ -61,7 +68,7 @@ et -i [custom output file]
In `element-variables.scss` you can find all the variables we used to style Element and they are defined in SCSS format. Here's a snippet:
```css
-$--color-primary: #409EFF !default;
+$--color-primary: #2460e0 !default;
$--color-primary-light-1: mix($--color-white, $--color-primary, 10%) !default; /* 53a8ff */
$--color-primary-light-2: mix($--color-white, $--color-primary, 20%) !default; /* 66b1ff */
$--color-primary-light-3: mix($--color-white, $--color-primary, 30%) !default; /* 79bbff */
@@ -72,10 +79,10 @@ $--color-primary-light-7: mix($--color-white, $--color-primary, 70%) !default; /
$--color-primary-light-8: mix($--color-white, $--color-primary, 80%) !default; /* d9ecff */
$--color-primary-light-9: mix($--color-white, $--color-primary, 90%) !default; /* ecf5ff */
-$--color-success: #67c23a !default;
-$--color-warning: #e6a23c !default;
-$--color-danger: #f56c6c !default;
-$--color-info: #909399 !default;
+$--color-success: #02C5E2 !default;
+$--color-warning: #F5A623 !default;
+$--color-danger: #E24156 !default;
+$--color-info: #6A6E7B !default;
...
```
@@ -87,20 +94,20 @@ $--color-primary: red;
```
#### Build theme
-After saving the variable file, use `et` to build your theme. You can activate `watch` mode by adding a parameter `-w`. And if you customized the variable file's output, you need to add a parameter `-c` and variable file's name:
+After saving the variable file, use `et` to build your theme. You can activate `watch` mode by adding a parameter `-w`. And if you customized the variable file's output, you need to add a parameter `-c` and variable file's name. By default the build theme file is placed inside `./theme`. You can specify its output directory with parameter `-o`.
```shell
et
> ✔ build theme font
> ✔ build element theme
```
-
+### Use custom theme
#### Import custom theme
-By default the build theme file is placed inside `./theme`. You can specify its output directory with parameter `-o`. Importing your own theme is just like importing the default theme, only this time you import the file you just built:
+Importing your own theme is just like importing the default theme, only this time you import the file built from "Online Theme Roller" or "CLI tool":
```javascript
import '../theme/index.css'
-import ElementUI from 'element-ui'
+import ElementUI from '@femessage/element-ui'
import Vue from 'vue'
Vue.use(ElementUI)
@@ -110,12 +117,15 @@ Vue.use(ElementUI)
If you are using `babel-plugin-component` for on-demand import, just modify `.babelrc` and specify `styleLibraryName` to the path where your custom theme is located relative to `.babelrc`. Note that `~` is required:
```json
{
- "plugins": [["component", [
- {
- "libraryName": "element-ui",
- "styleLibraryName": "~theme"
- }
- ]]]
+ "plugins": [
+ [
+ "component",
+ {
+ "libraryName": "element-ui",
+ "styleLibraryName": "~theme"
+ }
+ ]
+ ]
}
```
diff --git a/examples/docs/en-US/data-mapper.md b/examples/docs/en-US/data-mapper.md
new file mode 100644
index 00000000000..c8deb33827a
--- /dev/null
+++ b/examples/docs/en-US/data-mapper.md
@@ -0,0 +1 @@
+## DataMapper
diff --git a/examples/docs/en-US/date-picker.md b/examples/docs/en-US/date-picker.md
index 7abe702f94f..0b43664feb1 100644
--- a/examples/docs/en-US/date-picker.md
+++ b/examples/docs/en-US/date-picker.md
@@ -1,115 +1,3 @@
-
-
-
## DatePicker
@@ -137,7 +25,7 @@ Basic date picker measured by 'day'.
v-model="value2"
type="date"
placeholder="Pick a day"
- :picker-options="pickerOptions1">
+ :picker-options="pickerOptions">
@@ -146,7 +34,7 @@ Basic date picker measured by 'day'.
export default {
data() {
return {
- pickerOptions1: {
+ pickerOptions: {
disabledDate(time) {
return time.getTime() > Date.now();
},
@@ -191,7 +79,7 @@ You can choose week, month, year or multiple dates by extending the standard dat
Week
@@ -200,7 +88,7 @@ You can choose week, month, year or multiple dates by extending the standard dat
Month
@@ -210,7 +98,7 @@ You can choose week, month, year or multiple dates by extending the standard dat
Year
@@ -219,7 +107,7 @@ You can choose week, month, year or multiple dates by extending the standard dat
Dates
@@ -229,10 +117,10 @@ You can choose week, month, year or multiple dates by extending the standard dat
export default {
data() {
return {
+ value1: '',
+ value2: '',
value3: '',
- value4: '',
- value5: '',
- value14: ''
+ value4: ''
};
}
};
@@ -252,7 +140,7 @@ Picking a date range is supported.
Default
With quick options
+ :picker-options="pickerOptions">
@@ -278,7 +166,7 @@ Picking a date range is supported.
export default {
data() {
return {
- pickerOptions2: {
+ pickerOptions: {
shortcuts: [{
text: 'Last week',
onClick(picker) {
@@ -305,8 +193,8 @@ Picking a date range is supported.
}
}]
},
- value6: '',
- value7: ''
+ value1: '',
+ value2: ''
};
}
};
@@ -315,6 +203,74 @@ Picking a date range is supported.
:::
+### Month Range
+
+Picking a month range is supported.
+
+:::demo When in range mode, the left and right panels are linked by default. If you want the two panels to switch current years independently, you can use the `unlink-panels` attribute.
+```html
+
+
+ Default
+
+
+
+
+ With quick options
+
+
+
+
+
+
+```
+:::
+
### Default Value
If user hasn't picked a date, shows today's calendar by default. You can use `default-value` to set another date. Its value should be parsable by `new Date()`.
@@ -327,7 +283,7 @@ If type is `daterange`, `default-value` sets the left side calendar.
date
@@ -336,7 +292,7 @@ If type is `daterange`, `default-value` sets the left side calendar.
daterange
Emits Date object
- Value: {{ value10 }}
+ Value: {{ value1 }}
@@ -404,9 +363,9 @@ Pay attention to capitalization
Use value-format
- Value: {{ value11 }}
+ Value: {{ value2 }}
Timestamp
- Value:{{ value12 }}
+ Value:{{ value3 }}
- Component value:{{ value13 }}
+ Component value:{{ value }}
- module.exports = {
- data() {
- return {
- pickerOptions1: {
- shortcuts: [{
- text: 'Today',
- onClick(picker) {
- picker.$emit('pick', new Date());
- }
- }, {
- text: 'Yesterday',
- onClick(picker) {
- const date = new Date();
- date.setTime(date.getTime() - 3600 * 1000 * 24);
- picker.$emit('pick', date);
- }
- }, {
- text: 'A week ago',
- onClick(picker) {
- const date = new Date();
- date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
- picker.$emit('pick', date);
- }
- }]
- },
- pickerOptions2: {
- shortcuts: [{
- text: 'Last week',
- onClick(picker) {
- const end = new Date();
- const start = new Date();
- start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
- picker.$emit('pick', [start, end]);
- }
- }, {
- text: 'Last month',
- onClick(picker) {
- const end = new Date();
- const start = new Date();
- start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
- picker.$emit('pick', [start, end]);
- }
- }, {
- text: 'Last 3 months',
- onClick(picker) {
- const end = new Date();
- const start = new Date();
- start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
- picker.$emit('pick', [start, end]);
- }
- }]
- },
- value1: '',
- value2: '',
- value3: '',
- value4: [new Date(2000, 10, 10, 10, 10), new Date(2000, 10, 11, 10, 10)],
- value5: '',
- value6: '',
- value7: ''
- };
- }
- };
-
-
-
-
## DateTimePicker
Select date and time in one picker.
@@ -115,7 +26,7 @@ DateTimePicker is derived from DatePicker and TimePicker. For a more detailed ex
v-model="value2"
type="datetime"
placeholder="Select date and time"
- :picker-options="pickerOptions1">
+ :picker-options="pickerOptions">
@@ -133,7 +44,7 @@ DateTimePicker is derived from DatePicker and TimePicker. For a more detailed ex
export default {
data() {
return {
- pickerOptions1: {
+ pickerOptions: {
shortcuts: [{
text: 'Today',
onClick(picker) {
@@ -174,7 +85,7 @@ DateTimePicker is derived from DatePicker and TimePicker. For a more detailed ex
Default
With shortcuts
Start date time 12:00:00
Start date time 12:00:00, end date time 08:00:00
- module.exports = {
- data() {
- return {
- gridData: [{
- date: '2016-05-02',
- name: 'John Smith',
- address: 'No.1518, Jinshajiang Road, Putuo District'
- }, {
- date: '2016-05-04',
- name: 'John Smith',
- address: 'No.1518, Jinshajiang Road, Putuo District'
- }, {
- date: '2016-05-01',
- name: 'John Smith',
- address: 'No.1518, Jinshajiang Road, Putuo District'
- }, {
- date: '2016-05-03',
- name: 'John Smith',
- address: 'No.1518, Jinshajiang Road, Putuo District'
- }],
- dialogVisible: false,
- dialogTableVisible: false,
- dialogFormVisible: false,
- outerVisible: false,
- innerVisible: false,
- centerDialogVisible: false,
- form: {
- name: '',
- region: '',
- date1: '',
- date2: '',
- delivery: false,
- type: [],
- resource: '',
- desc: ''
- },
- formLabelWidth: '120px'
- };
- },
- methods: {
- handleClose(done) {
- this.$confirm('Are you sure to close this dialog?')
- .then(_ => {
- done();
- })
- .catch(_ => {});
- }
- }
- };
-
-
-
-
## Dialog
Informs users while preserving the current page state.
@@ -296,6 +221,7 @@ If the variable bound to `visible` is managed in Vuex store, the `.sync` can not
| show-close | whether to show a close button | boolean | — | true |
| before-close | callback before Dialog closes, and it will prevent Dialog from closing | function(done),done is used to close the Dialog | — | — |
| center | whether to align the header and footer in center | boolean | — | false |
+| destroy-on-close | Destroy elements in Dialog when closed | boolean | — | false |
### Slot
diff --git a/examples/docs/en-US/divider.md b/examples/docs/en-US/divider.md
new file mode 100644
index 00000000000..d419c9bd95d
--- /dev/null
+++ b/examples/docs/en-US/divider.md
@@ -0,0 +1,61 @@
+## Divider
+
+The dividing line that separates the content.
+
+### Basic usage
+
+Divide the text of different paragraphs.
+
+:::demo
+```html
+
+
+ I sit at my window this morning where the world like a passer-by stops for a moment, nods to me and goes.
+
+ There little thoughts are the rustle of leaves; they have their whisper of joy in my mind.
+
+
+```
+:::
+
+### Custom content
+
+You can customize the content on the divider line.
+
+
+:::demo
+```html
+
+
+ What you are you do not see, what you see is your shadow.
+ Rabindranath Tagore
+ I cannot choose the best. The best chooses me.
+
+ My wishes are fools, they shout across thy song, my Master. Let me but listen.
+ Rabindranath Tagore
+
+
+```
+:::
+
+### Vertical divider
+
+:::demo
+```html
+
+
+ Rain
+
+ Home
+
+ Grass
+
+
+```
+:::
+
+### Divider Attributes
+| Attribute | Description | Type | Accepted Values | Default |
+|------------- |---------------- |---------------- |---------------------- |-------- |
+| direction | Set divider's direction | string | horizontal / vertical | horizontal |
+| content-position | customize the content on the divider line | String | left / right / center | center |
\ No newline at end of file
diff --git a/examples/docs/en-US/drawer.md b/examples/docs/en-US/drawer.md
new file mode 100644
index 00000000000..7e99cdd7807
--- /dev/null
+++ b/examples/docs/en-US/drawer.md
@@ -0,0 +1,305 @@
+## Drawer
+
+Sometimes, `Dialog` does not always satisfy our requirements, let's say you have a massive form, or you need space to display something like `terms & conditions`, `Drawer` has almost identical API with `Dialog`, but it introduces different user experience.
+
+### Basic Usage
+
+Callout a temporary drawer, from multiple direction
+
+:::demo You must set `visible` for `Drawer` like `Dialog` does to control the visibility of `Drawer` itself, it's `boolean` type. `Drawer` has to parts: `title` & `body`, the `title` is a named slot, you can also set the title through attribute named `title`, default to an empty string, the `body` part is the main area of `Drawer`, which contains user defined content. When opening, `Drawer` expand itself from the **right corner to left** which size is **30%** of the browser window by default. You can change that default behavior by setting `direction` and `size` attribute. This show case also demonstrated how to use the `before-close` API, check the Attribute section for more detail
+
+```html
+
+ left to right
+ right to left
+ top to bottom
+ bottom to top
+
+
+
+ open
+
+
+
+ Hi, there!
+
+
+
+```
+:::
+
+### No Title
+
+When you no longer need a title, you can remove title from drawer.
+
+:::demo Set the `withHeader` attribute to **false**, you can remove the title from drawer, thus your drawer can have more space on screen. If you want to be accessible, make sure to set the `title` attribute.
+
+```html
+
+ open
+
+
+
+ Hi there!
+
+
+
+```
+:::
+
+### Customization Content
+
+Like `Dialog`, `Drawer` can do many diverse interaction as you wanted.
+
+:::demo
+
+```html
+Open Drawer with nested table
+Open Drawer with nested form
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+:::
+
+### Nested Drawer
+
+You can also have multiple layer of `Drawer` just like `Dialog`.
+:::demo If you need multiple Drawer in different layer, you must set the `append-to-body` attribute to **true**
+
+```html
+
+
+ open
+
+
+
+
+ Click me!
+
+ _(:зゝ∠)_
+
+
+
+
+
+
+```
+:::
+
+:::tip
+
+The content inside Drawer should be lazy rendered, which means that the content inside Drawer will not impact the initial render performance, therefore any DOM operation should be performed through `ref` or after `open` event emitted.
+
+:::
+
+:::tip
+
+Drawer provides an API called `destroyOnClose`, which is a flag variable that indicates should destroy the children content inside Drawer after Drawer was closed. You can use this API when you need your `mounted` life cycle to be called every time the Drawer opens.
+
+:::
+
+:::tip
+
+If the variable bound to `visible` is managed in Vuex store, the `.sync` can not work properly. In this case, please remove the `.sync` modifier, listen to `open` and `close` events of Dialog, and commit Vuex mutations to update the value of that variable in the event handlers.
+
+:::
+
+### Drawer Attributes
+
+| Parameter| Description | Type | Acceptable Values | Defaults |
+|---------- |-------------- |---------- |-------------------------------- |-------- |
+| append-to-body | Controls should Drawer be inserted to DocumentBody Element, nested Drawer must assign this param to **true**| boolean | — | false |
+| before-close | If set, closing procedure will be halted | function(done), done is function type that accepts a boolean as parameter, calling done with true or without parameter will abort the close procedure | — | — |
+| close-on-press-escape | Indicates whether Drawer can be closed by pressing ESC | boolean | — | true |
+| custom-class | Extra class names for Drawer | string | — | — |
+| destroy-on-close | Indicates whether children should be destroyed after Drawer closed | boolean | - | false |
+| modal | Should show shadowing layer | boolean | — | true |
+| modal-append-to-body | Indicates should shadowing layer be insert into DocumentBody element | boolean | — | true |
+| direction | Drawer's opening direction | Direction | rtl / ltr / ttb / btt | rtl |
+| show-close | Should show close button at the top right of Drawer | boolean | — | true |
+| size | Drawer's size, if Drawer is horizontal mode, it effects the width property, otherwise it effects the height property, when size is `number` type, it describes the size by unit of pixels; when size is `string` type, it should be used with `x%` notation, other wise it will be interpreted to pixel unit | number / string | - | '30%' |
+| title | Drawer's title, can also be set by named slot, detailed descriptions can be found in the slot form | string | — | — |
+| visible | Should Drawer be displayed, also support the `.sync` notation | boolean | — | false |
+| wrapperClosable | Indicates whether user can close Drawer by clicking the shadowing layer. | boolean | - | true |
+| withHeader | Flag that controls the header section's existance, default to true, when withHeader set to false, both `title attribute` and `title slot` won't work | boolean | - | true |
+
+### Drawer Slot
+
+| Name | Description |
+|------|--------|
+| — | Drawer's Content |
+| title | Drawer Title Section |
+
+### Drawer Methods
+
+| Name | Description |
+| ---- | --- |
+| closeDrawer | In order to close Drawer, this method will call `before-close`. |
+
+### Drawer Events
+
+| Event Name | Description | Parameter |
+|---------- |-------- |---------- |
+| open | Triggered before Drawer opening animation begins | — |
+| opened | Triggered after Drawer opening animation ended | — |
+| close | Triggered before Drawer closing animation begins | — |
+| closed | Triggered after Drawer closing animation ended | — |
diff --git a/examples/docs/en-US/dropdown.md b/examples/docs/en-US/dropdown.md
index 9b66fa02583..abae2634b1d 100644
--- a/examples/docs/en-US/dropdown.md
+++ b/examples/docs/en-US/dropdown.md
@@ -1,55 +1,3 @@
-
-
-
## Dropdown
Toggleable menu for displaying lists of links and actions.
@@ -75,7 +23,7 @@ Hover on the dropdown menu to unfold it for more actions.
-
## Form
Form consists of `input`, `radio`, `select`, `checkbox` and so on. With form, you can collect, verify and submit data.
@@ -272,7 +25,7 @@ It includes all kinds of input items, such as `input`, `select`, `radio` and `ch
-
-
+
@@ -441,7 +194,7 @@ Form component allows you to verify your data, helping you find and correct erro
-
-
+
@@ -536,19 +289,19 @@ This example shows how to customize your own validation rules to finish a two-fa
:::demo Here we use `status-icon` to reflect validation result as an icon.
```html
-
+
-
+
-
+
-
+
- Submit
- Reset
+ Submit
+ Reset
-
-
+
+
-
-
-
+
+
+
-
-
-
## Icon
Element provides a set of common icons.
@@ -93,7 +20,7 @@ Just assign the class name to `el-icon-iconName`.
### Icons
- -
+
-
{{'el-icon-' + name}}
diff --git a/examples/docs/en-US/image.md b/examples/docs/en-US/image.md
new file mode 100644
index 00000000000..92dc90a8208
--- /dev/null
+++ b/examples/docs/en-US/image.md
@@ -0,0 +1,163 @@
+## Image
+Besides the native features of img, support lazy load, custom placeholder and load failure, etc.
+
+### Basic Usage
+
+:::demo Indicate how the image should be resized to fit its container by `fit`, same as native [object-fit](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit)。
+```html
+
+
+ {{ fit }}
+
+
+
+
+
+```
+:::
+
+### Placeholder
+
+:::demo Custom placeholder content when image hasn't loaded yet by `slot = placeholder`
+```html
+
+
+ Default
+
+
+
+ Custom
+
+
+ Loading...
+
+
+
+
+
+
+```
+:::
+
+### Load Failed
+
+:::demo Custom failed content when error occurs to image load by `slot = error`
+```html
+
+
+ Default
+
+
+
+ Custom
+
+
+
+
+
+
+
+```
+:::
+
+### Lazy Load
+
+:::demo Use lazy load by `lazy = true`. Image will load until scroll into view when set. You can indicate scroll container that adds scroll listener to by `scroll-container`. If undefined, will be the nearest parent container whose overflow property is auto or scroll.
+```html
+
+
+
+
+
+```
+:::
+
+### Image Preview
+
+:::demo allow big image preview by setting `previewSrcList` prop.
+```html
+
+
+
+
+
+
+```
+:::
+
+### Attributes
+| Attribute | Description | Type | Accepted values | Default |
+|---------- |-------- |---------- |------------- |-------- |
+| src | Image source, same as native | string | — | - |
+| fit | Indicate how the image should be resized to fit its container, same as [object-fit](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit) | string | fill / contain / cover / none / scale-down | - |
+| alt | Native alt | string | - | - |
+| referrer-policy | Native referrerPolicy | string | - | - |
+| lazy | Whether to use lazy load | boolean | — | false |
+| scroll-container | The container to add scroll listener when using lazy load | string / HTMLElement | — | The nearest parent container whose overflow property is auto or scroll |
+| preview-src-list | allow big image preview | Array | — | - |
+| z-index | set image preview z-index | Number | — | 2000 |
+
+### Events
+| Event Name | Description | Parameters |
+|---------- |-------- |---------- |
+| load | Same as native load | (e: Event) |
+| error | Same as native error | (e: Error) |
+
+### Slots
+| Slot Name | Description |
+|---------|-------------|
+| placeholder | Triggers when image load |
+| error | Triggers when image load failed |
+
+
diff --git a/examples/docs/en-US/infiniteScroll.md b/examples/docs/en-US/infiniteScroll.md
new file mode 100644
index 00000000000..1e8657c0ba7
--- /dev/null
+++ b/examples/docs/en-US/infiniteScroll.md
@@ -0,0 +1,87 @@
+## InfiniteScroll
+
+Load more data while reach bottom of the page
+
+### Basic usage
+Add `v-infinite-scroll` to the list to automatically execute loading method when scrolling to the bottom.
+:::demo
+```html
+
+
+ - {{ i }}
+
+
+
+
+```
+:::
+
+### Disable Loading
+
+:::demo
+```html
+
+
+
+ - {{ i }}
+
+ Loading...
+ No more
+
+
+
+
+```
+:::
+
+
+### Attributes
+
+| Attribute | Description | Type | Accepted values | Default |
+| -------------- | ------------------------------ | --------- | ------------------------------------ | ------- |
+| infinite-scroll-disabled | is disabled | boolean | - |false |
+| infinite-scroll-delay | throttle delay (ms) | number | - |200 |
+| infinite-scroll-distance| trigger distance (px) | number |- |0 |
+| infinite-scroll-immediate |Whether to execute the loading method immediately, in case the content cannot be filled up in the initial state. | boolean | - |true |
diff --git a/examples/docs/en-US/input-email.md b/examples/docs/en-US/input-email.md
new file mode 100644
index 00000000000..b7d6d9f8798
--- /dev/null
+++ b/examples/docs/en-US/input-email.md
@@ -0,0 +1 @@
+## InputEmail
diff --git a/examples/docs/en-US/input-id-card.md b/examples/docs/en-US/input-id-card.md
new file mode 100644
index 00000000000..ab7abe5624d
--- /dev/null
+++ b/examples/docs/en-US/input-id-card.md
@@ -0,0 +1 @@
+## InputIdCard
diff --git a/examples/docs/en-US/input-number.md b/examples/docs/en-US/input-number.md
index bc6d5b0b3d8..369829d1242 100644
--- a/examples/docs/en-US/input-number.md
+++ b/examples/docs/en-US/input-number.md
@@ -1,34 +1,3 @@
-
-
-
-
## InputNumber
Input numerical values with a customizable range.
@@ -39,13 +8,13 @@ Input numerical values with a customizable range.
```html
-
+
+```
+:::
+
+### Step strictly
+
+:::demo The `step-strictly` attribute accepts a `boolean`. if this attribute is `true`, input value can only be multiple of step.
+
+```html
+
+
+
+
-
-
-
-## Input
+Do not support `v-model` modifiers.
+:::
-Input data using mouse or keyboard.
### Basic usage
@@ -173,7 +37,7 @@ export default {
```html
@@ -181,7 +45,7 @@ export default {
export default {
data() {
return {
- input1: ''
+ input: ''
}
}
}
@@ -196,7 +60,7 @@ export default {
```html
@@ -204,7 +68,7 @@ export default {
export default {
data() {
return {
- input10: ''
+ input: ''
}
}
}
@@ -212,6 +76,25 @@ export default {
```
:::
+### Password box
+
+:::demo Make a toggleable password Input with the `show-password` attribute.
+
+```html
+
+
+
+```
+:::
+
### Input with icon
Add an icon to indicate input type.
@@ -223,24 +106,24 @@ Add an icon to indicate input type.
+ v-model="input1">
+ v-model="input2">
Using slots
+ v-model="input3">
+ v-model="input4">
@@ -256,10 +139,10 @@ Add an icon to indicate input type.
export default {
data() {
return {
+ input1: '',
input2: '',
- input21: '',
- input22: '',
- input23: ''
+ input3: '',
+ input4: ''
}
}
}
@@ -304,22 +187,22 @@ Setting the `autosize` prop for a textarea type of Input makes the height to aut
type="textarea"
autosize
placeholder="Please input"
- v-model="textarea2">
+ v-model="textarea1">
+ v-model="textarea2">
+```
+:::
+
### Input Attributes
| Attribute | Description | Type | Accepted Values | Default |
| ----| ----| ----| ---- | ----- |
|type| type of input | string | text, textarea and other [native input types](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types) | text |
-|value| binding value | string / number| — | — |
+|value / v-model| binding value | string / number| — | — |
|maxlength| same as `maxlength` in native input | number| — | — |
|minlength| same as `minlength` in native input | number | — | — |
+|show-word-limit | whether show word count,only works when `type` is 'text' or 'textarea' | boolean | — | false |
|placeholder| placeholder of Input| string | — | — |
| clearable | whether to show clear button | boolean | — | false |
+| show-password | whether to show toggleable password input| boolean | — | false |
|disabled | whether Input is disabled | boolean | — | false |
|size | size of Input, works when `type` is not 'textarea' | string | medium / small / mini | — |
| prefix-icon | prefix icon class | string | — | — |
@@ -666,7 +587,7 @@ Search data from server-side.
|form | same as `form` in native input | string | — | — |
| label | label text | string | — | — |
| tabindex | input tabindex | string | - | - |
-| validate-event | whether to trigger form validation | boolean | - | - |
+| validate-event | whether to trigger form validation | boolean | - | true |
### Input slots
@@ -683,7 +604,8 @@ Search data from server-side.
|----| ----| ----|
| blur | triggers when Input blurs | (event: Event) |
| focus | triggers when Input focuses | (event: Event) |
-| change | triggers when the icon inside Input value change | (value: string \| number) |
+| change | triggers only when the input box loses focus or the user presses Enter | (value: string \| number) |
+| input | triggers when the Input value change | (value: string \| number) |
| clear | triggers when the Input is cleared by clicking the clear button | — |
### Input Methods
@@ -716,6 +638,7 @@ Attribute | Description | Type | Options | Default
| suffix-icon | suffix icon class | string | — | — |
| hide-loading | whether to hide the loading icon in remote search | boolean | — | false |
| popper-append-to-body | whether to append the dropdown to body. If the positioning of the dropdown is wrong, you can try to set this prop to false | boolean | - | true |
+| highlight-first-item | whether to highlight first item in remote search suggestions by default | boolean | — | false |
### Autocomplete Slots
diff --git a/examples/docs/en-US/installation.md b/examples/docs/en-US/installation.md
index 6bcad9919eb..93d51a34d96 100644
--- a/examples/docs/en-US/installation.md
+++ b/examples/docs/en-US/installation.md
@@ -10,13 +10,13 @@ npm i element-ui -S
### CDN
-Get the latest version from [unpkg.com/element-ui](https://unpkg.com/element-ui/) , and import JavaScript and CSS file in your page.
+Get the latest version from [unpkg.com/element-ui](https://unpkg.com/@femessage/element-ui/) , and import JavaScript and CSS file in your page.
```html
-
+
-
+
```
:::tip
@@ -25,8 +25,11 @@ We recommend our users to lock Element's version when using CDN. Please refer to
### Hello world
-If you are using CDN, a hello-world page is easy with Element. [Online Demo](https://jsfiddle.net/hzfpyvg6/14/)
+If you are using CDN, a hello-world page is easy with Element. [Online Demo](https://codepen.io/ziyoung/pen/rRKYpd)
-
+
If you are using npm and wish to apply webpack, please continue to the next page: [Quick Start](/#/en-US/component/quickstart).
diff --git a/examples/docs/en-US/layout.md b/examples/docs/en-US/layout.md
index fa6bf95e84f..daa540ee08b 100644
--- a/examples/docs/en-US/layout.md
+++ b/examples/docs/en-US/layout.md
@@ -1,34 +1,3 @@
-
-
## Layout
Quickly and easily create layouts with the basic 24-column.
@@ -346,7 +315,7 @@ Taking example by Bootstrap's responsive design, five breakpoints are preset: xs
Additionally, Element provides a series of classes for hiding elements under certain conditions. These classes can be added to any DOM elements or custom components. You need to import the following CSS file to use these classes:
```js
-import 'element-ui/lib/theme-chalk/display.css';
+import '@femessage/element-ui/lib/theme-chalk/display.css';
```
The classes are:
diff --git a/examples/docs/en-US/link.md b/examples/docs/en-US/link.md
new file mode 100644
index 00000000000..66859fa8967
--- /dev/null
+++ b/examples/docs/en-US/link.md
@@ -0,0 +1,77 @@
+## Link
+
+Text hyperlink
+
+### Basic
+
+Basic text link
+:::demo
+
+```html
+
+ default
+ primary
+ success
+ warning
+ danger
+ info
+
+```
+
+:::
+
+### Disabled
+
+Disabled state of link
+:::demo
+
+```html
+
+ default
+ primary
+ success
+ warning
+ danger
+ info
+
+```
+
+:::
+
+### Underline
+
+Underline of link
+:::demo
+
+```html
+
+ Without Underline
+ With Underline
+
+```
+
+:::
+
+### Icon
+
+Link with icon
+:::demo
+
+```html
+
+ Edit
+ Check
+
+```
+
+:::
+
+### Attributes
+
+| Attribute | Description | Type | Options | Default |
+| --------- | ----------------------------------- | ------- | ------------------------------------------- | ------- |
+| type | type | string | primary / success / warning / danger / info | default |
+| underline | whether the component has underline | boolean | — | true |
+| disabled | whether the component is disabled | boolean | — | false |
+| href | same as native hyperlink's `href` | string | — | - |
+| icon | class name of icon | string | — | - |
diff --git a/examples/docs/en-US/loading-button.md b/examples/docs/en-US/loading-button.md
new file mode 100644
index 00000000000..53b7e055691
--- /dev/null
+++ b/examples/docs/en-US/loading-button.md
@@ -0,0 +1 @@
+## LoadingButton
diff --git a/examples/docs/en-US/loading.md b/examples/docs/en-US/loading.md
index c355a7bb32e..af8016b3b7d 100644
--- a/examples/docs/en-US/loading.md
+++ b/examples/docs/en-US/loading.md
@@ -1,54 +1,3 @@
-
-
-
-
## Loading
Show animation while loading data.
@@ -121,7 +70,7 @@ You can customize loading text, loading spinner and background color.
```html
As a directive
@@ -198,7 +147,7 @@ Show a full screen animation while loading data.
}
},
methods: {
- openFullScreen() {
+ openFullScreen1() {
this.fullscreenLoading = true;
setTimeout(() => {
this.fullscreenLoading = false;
@@ -224,7 +173,7 @@ Show a full screen animation while loading data.
### Service
You can also invoke Loading with a service. Import Loading service:
```javascript
-import { Loading } from 'element-ui';
+import { Loading } from '@femessage/element-ui';
```
Invoke it:
```javascript
diff --git a/examples/docs/en-US/lr-container.md b/examples/docs/en-US/lr-container.md
new file mode 100644
index 00000000000..980502df7ac
--- /dev/null
+++ b/examples/docs/en-US/lr-container.md
@@ -0,0 +1 @@
+## LrContainer
diff --git a/examples/docs/en-US/menu.md b/examples/docs/en-US/menu.md
index adf17d64329..a3bd6ecd111 100644
--- a/examples/docs/en-US/menu.md
+++ b/examples/docs/en-US/menu.md
@@ -1,56 +1,3 @@
-
-
-
-
## NavMenu
Menu that provides navigation for your website.
@@ -302,7 +249,7 @@ Vertical NavMenu could be collapsed.
| collapse | whether the menu is collapsed (available only in vertical mode) | boolean | — | false |
| background-color | background color of Menu (hex format) | string | — | #ffffff |
| text-color | text color of Menu (hex format) | string | — | #303133 |
-| active-text-color | text color of currently active menu item (hex format) | string | — | #409EFF |
+| active-text-color | text color of currently active menu item (hex format) | string | — | #2460e0 |
| default-active | index of currently active menu | string | — | — |
| default-openeds | array that contains indexes of currently active sub-menus | Array | — | — |
| unique-opened | whether only one sub-menu can be active | boolean | — | false |
@@ -341,7 +288,7 @@ Vertical NavMenu could be collapsed.
### Menu-Item Attribute
| Attribute | Description | Type | Accepted Values | Default |
|---------- |-------- |---------- |------------- |-------- |
-| index | unique identification | string | — | — |
+| index | unique identification | string/null | — | null |
| route | Vue Router object | object | — | — |
| disabled | whether disabled | boolean | — | false |
diff --git a/examples/docs/en-US/message-box-center.md b/examples/docs/en-US/message-box-center.md
new file mode 100644
index 00000000000..c331ef7e5a2
--- /dev/null
+++ b/examples/docs/en-US/message-box-center.md
@@ -0,0 +1 @@
+## MessageBoxCenter
diff --git a/examples/docs/en-US/message-box.md b/examples/docs/en-US/message-box.md
index c0d183df9b3..27858e2a41b 100644
--- a/examples/docs/en-US/message-box.md
+++ b/examples/docs/en-US/message-box.md
@@ -1,148 +1,3 @@
-
-
## MessageBox
A set of modal boxes simulating system message box, mainly for alerting information, confirm operations and prompting messages.
@@ -189,13 +44,13 @@ Confirm is used to ask users' confirmation.
```html
- Click to open the Message Box
+ Click to open the Message Box
-
## Message
Used to show feedback after an activity. The difference with Notification is that the latter is often used to show a system level passive notification.
@@ -103,7 +20,7 @@ Displays at the top, and disappears after 3 seconds.
open() {
this.$message('This is a message.');
},
-
+
openVn() {
const h = this.$createElement;
this.$message({
@@ -128,14 +45,14 @@ Used to show the feedback of Success, Warning, Message and Error activities.
success
warning
- message
+ message
error
-
## Notification
Displays a global notification message at a corner of the page.
@@ -122,7 +10,7 @@ Displays a global notification message at a corner of the page.
+ @click="open1">
Closes automatically
export default {
methods: {
- open() {
+ open1() {
const h = this.$createElement;
this.$notify({
@@ -161,27 +49,27 @@ Displays a global notification message at a corner of the page.
We provide four types: success, warning, info and error.
-:::demo Element provides four notification types: `success`, `warning`, `info` and `error`. They are set by the `type` field, and other values will be ignored. We also registered methods for these types that can be invoked directly like `open5` and `open6` without passing a `type` field.
+:::demo Element provides four notification types: `success`, `warning`, `info` and `error`. They are set by the `type` field, and other values will be ignored. We also registered methods for these types that can be invoked directly like `open3` and `open4` without passing a `type` field.
```html
+ @click="open1">
Success
+ @click="open2">
Warning
+ @click="open3">
Info
+ @click="open4">
Error
@@ -189,7 +77,7 @@ We provide four types: success, warning, info and error.
+```
+:::
+
+### Attributes
+| Attribute | Description | Type | Accepted Values | Default |
+|---------- |-------------- |---------- |------------------------------ | ------ |
+| title | main title | string | — | Back |
+| content | content | string | — | — |
+
+### Events
+| Event Name | Description | Parameters |
+|----------- |-------------- |----------- |
+| back | triggers when right side is clicked | — |
+
+### Slots
+| slot | Description |
+|---------- | ---------------------- |
+| title | title content |
+| content | content |
diff --git a/examples/docs/en-US/pagination.md b/examples/docs/en-US/pagination.md
index f43127f7fe7..b62f7980baf 100644
--- a/examples/docs/en-US/pagination.md
+++ b/examples/docs/en-US/pagination.md
@@ -1,53 +1,3 @@
-
-
## Pagination
If you have too much data to display in one page, use pagination.
@@ -189,36 +139,34 @@ Add more modules based on your scenario.
```
:::
+
+### Hide pagination when there is only one page
+
+When there is only one page, hide the pagination by setting the `hide-on-single-page` attribute.
+
+:::demo
+```html
+
+
+
+
+
+
+
+```
+:::
### Attributes
| Attribute | Description | Type | Accepted Values | Default |
@@ -236,6 +184,7 @@ Add more modules based on your scenario.
| prev-text | text for the prev button | string | — | — |
| next-text | text for the next button | string | — | — |
| disabled | whether Pagination is disabled | boolean | — | false |
+| hide-on-single-page | whether to hide when there's only one page | boolean | — | - |
### Events
| Event Name | Description | Parameters |
diff --git a/examples/docs/en-US/panel.md b/examples/docs/en-US/panel.md
new file mode 100644
index 00000000000..48382924949
--- /dev/null
+++ b/examples/docs/en-US/panel.md
@@ -0,0 +1 @@
+## Panel
diff --git a/examples/docs/en-US/popconfirm.md b/examples/docs/en-US/popconfirm.md
new file mode 100644
index 00000000000..72033bfc06f
--- /dev/null
+++ b/examples/docs/en-US/popconfirm.md
@@ -0,0 +1,54 @@
+## Popconfirm
+
+A simple confirmation dialog of an element click action.
+
+### Basic usage
+
+Popconfirm is similar to Popover. So for some duplicated attributes, please refer to the documentation of Popover.
+
+:::demo Only `title` attribute is avaliable in Popconfirm, `content` will be ignored.
+```html
+
+
+ Delete
+
+
+````
+:::
+
+### Customise
+You can customise Popconfirm like:
+:::demo
+```html
+
+
+ Delete
+
+
+```
+:::
+
+### Attributes
+| Attribute | Description | Type | Accepted Values | Default |
+|--------------------|----------------------------------------------------------|-------------------|-------------|--------|
+| title | Title | String | — | — |
+| confirmButtonText | Confirm button text | String | — | — |
+| cancelButtonText | Cancel button text | String | — | — |
+| confirmButtonType | Confirm button type | String | — | Primary |
+| cancelButtonType | Cancel button type | String | — | Text |
+| icon | Icon | String | — | el-icon-question |
+| iconColor | Icon color | String | — | #f90 |
+| hideIcon | is hide Icon | Boolean | — | false |
+
+### Slot
+| Name | Description |
+|--- | ---|
+| reference | HTML element that triggers Popconfirm |
diff --git a/examples/docs/en-US/popover.md b/examples/docs/en-US/popover.md
index ddad5fce0db..5dfc35c005d 100644
--- a/examples/docs/en-US/popover.md
+++ b/examples/docs/en-US/popover.md
@@ -1,100 +1,3 @@
-
-
-
-
## Popover
### Basic usage
@@ -212,11 +115,11 @@ Of course, you can nest other operations. It's more light-weight than using a di
+ v-model="visible">
Are you sure to delete this?
- cancel
- confirm
+ cancel
+ confirm
Delete
@@ -225,7 +128,7 @@ Of course, you can nest other operations. It's more light-weight than using a di
export default {
data() {
return {
- visible2: false,
+ visible: false,
};
}
}
@@ -242,13 +145,15 @@ Of course, you can nest other operations. It's more light-weight than using a di
| width | popover width | string, number | — | Min width 150px |
| placement | popover placement | string | top/top-start/top-end/bottom/bottom-start/bottom-end/left/left-start/left-end/right/right-start/right-end | bottom |
| disabled | whether Popover is disabled | boolean | — | false |
-| value(v-model) | whether popover is visible | Boolean | — | false |
+| value / v-model | whether popover is visible | Boolean | — | false |
| offset | popover offset | number | — | 0 |
| transition | popover transition animation | string | — | el-fade-in-linear |
| visible-arrow | whether a tooltip arrow is displayed or not. For more info, please refer to [Vue-popper](https://github.com/element-component/vue-popper) | boolean | — | true |
| popper-options | parameters for [popper.js](https://popper.js.org/documentation.html) | object | please refer to [popper.js](https://popper.js.org/documentation.html) | `{ boundariesElement: 'body', gpuAcceleration: false }` |
| popper-class | custom class name for popover | string | — | — |
-| open-delay | delay of appearance when `trigger` is hover, in milliseconds | number | — | — |
+| open-delay | delay before appearing when `trigger` is hover, in milliseconds | number | — | — |
+| close-delay | delay before disappearing when `trigger` is hover, in milliseconds | number | — | 200 |
+| tabindex | [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of Popover | number | — | 0 |
### Slot
| Name | Description |
@@ -257,7 +162,7 @@ Of course, you can nest other operations. It's more light-weight than using a di
| reference | HTML element that triggers popover |
### Events
-| Event Name | Description | 回调参数 |
+| Event Name | Description | Parameters |
|---------|--------|---------|
| show | triggers when popover shows | — |
| after-enter | triggers when the entering transition ends | — |
diff --git a/examples/docs/en-US/progress.md b/examples/docs/en-US/progress.md
index c8c24a0f81d..a61003a8212 100644
--- a/examples/docs/en-US/progress.md
+++ b/examples/docs/en-US/progress.md
@@ -1,41 +1,101 @@
-
## Progress
Progress is used to show the progress of current operation, and inform the user the current status.
-### Linear progress bar (external percentage)
+### Linear progress bar
-:::demo Use `percentage` attribute to set the percentage. It's **required** and must be between `0-100`.
+:::demo Use `percentage` attribute to set the percentage. It's **required** and must be between `0-100`. You can custom text format by setting `format`.
```html
-
-
-
+
+
+
+
+
```
:::
-### Linear progress bar (internal percentage)
+### Internal percentage
In this case the percentage takes no additional space.
:::demo `stroke-width` attribute decides the `width` of progress bar, and use `text-inside` attribute to put description inside the progress bar.
```html
-
-
-
-
-
+
+
+
+
+```
+:::
+
+### Custom color
+
+You can use `color` attr to set the progress bar color. it accepts color string, function, or array.
+
+:::demo
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
```
:::
@@ -45,10 +105,57 @@ In this case the percentage takes no additional space.
```html
-
+
-Done
+```
+:::
+
+### Dashboard progress bar
+
+You also can specify `type` attribute to `dashboard` to use dashboard progress bar.
+
+:::demo
+
+```html
+
+
+
+
+
+
+
+
+
```
:::
@@ -56,10 +163,11 @@ In this case the percentage takes no additional space.
| Attribute | Description | Type | Accepted Values | Default |
| --- | ---- | ---- | ---- | ---- |
| **percentage** | percentage, **required** | number | 0-100 | 0 |
-| type | the type of progress bar | string | line/circle | line |
+| type | the type of progress bar | string | line/circle/dashboard | line |
| stroke-width | the width of progress bar | number | — | 6 |
| text-inside | whether to place the percentage inside progress bar, only works when `type` is 'line' | boolean | — | false |
-| status | the current status of progress bar | string | success/exception/text | — |
-| color | background color of progress bar. Overrides `status` prop | string | — | — |
+| status | the current status of progress bar | string | success/exception/warning | — |
+| color | background color of progress bar. Overrides `status` prop | string/function/array | — | '' |
| width | the canvas width of circle progress bar | number | — | 126 |
| show-text | whether to show percentage | boolean | — | true |
+| stroke-linecap | circle/dashboard type shape at the end path | string | butt/round/square | round |
\ No newline at end of file
diff --git a/examples/docs/en-US/quickstart.md b/examples/docs/en-US/quickstart.md
index 9869108fbbe..e5294e9b469 100644
--- a/examples/docs/en-US/quickstart.md
+++ b/examples/docs/en-US/quickstart.md
@@ -22,8 +22,8 @@ In main.js:
```javascript
import Vue from 'vue';
-import ElementUI from 'element-ui';
-import 'element-ui/lib/theme-chalk/index.css';
+import ElementUI from '@femessage/element-ui';
+import '@femessage/element-ui/lib/theme-chalk/index.css';
import App from './App.vue';
Vue.use(ElementUI);
@@ -67,7 +67,7 @@ Next, if you need Button and Select, edit main.js:
```javascript
import Vue from 'vue';
-import { Button, Select } from 'element-ui';
+import { Button, Select } from '@femessage/element-ui';
import App from './App.vue';
Vue.component(Button.name, Button);
@@ -83,7 +83,7 @@ new Vue({
});
```
-Full example (Component list reference [components.json](https://github.com/ElemeFE/element/blob/master/components.json))
+Full example (Component list reference [components.json](https://github.com/femessage/element/blob/master/components.json))
```javascript
import Vue from 'vue';
@@ -134,6 +134,7 @@ import {
Col,
Upload,
Progress,
+ Spinner,
Badge,
Card,
Rate,
@@ -151,11 +152,20 @@ import {
Aside,
Main,
Footer,
+ Timeline,
+ TimelineItem,
+ Link,
+ Divider,
+ Image,
+ Calendar,
+ Backtop,
+ PageHeader,
+ CascaderPanel,
Loading,
MessageBox,
Message,
Notification
-} from 'element-ui';
+} from '@femessage/element-ui';
Vue.use(Pagination);
Vue.use(Dialog);
@@ -203,6 +213,7 @@ Vue.use(Row);
Vue.use(Col);
Vue.use(Upload);
Vue.use(Progress);
+Vue.use(Spinner);
Vue.use(Badge);
Vue.use(Card);
Vue.use(Rate);
@@ -220,6 +231,15 @@ Vue.use(Header);
Vue.use(Aside);
Vue.use(Main);
Vue.use(Footer);
+Vue.use(Timeline);
+Vue.use(TimelineItem);
+Vue.use(Link);
+Vue.use(Divider);
+Vue.use(Image);
+Vue.use(Calendar);
+Vue.use(Backtop);
+Vue.use(PageHeader);
+Vue.use(CascaderPanel);
Vue.use(Loading.directive);
@@ -240,7 +260,7 @@ Fully import Element:
```js
import Vue from 'vue';
-import Element from 'element-ui';
+import Element from '@femessage/element-ui';
Vue.use(Element, { size: 'small', zIndex: 3000 });
```
@@ -248,7 +268,7 @@ Partial import Element:
```js
import Vue from 'vue';
-import { Button } from 'element-ui';
+import { Button } from '@femessage/element-ui';
Vue.prototype.$ELEMENT = { size: 'small', zIndex: 3000 };
Vue.use(Button);
diff --git a/examples/docs/en-US/radio-img-button.md b/examples/docs/en-US/radio-img-button.md
new file mode 100644
index 00000000000..7851a46ce52
--- /dev/null
+++ b/examples/docs/en-US/radio-img-button.md
@@ -0,0 +1 @@
+## RadioImgButton
diff --git a/examples/docs/en-US/radio.md b/examples/docs/en-US/radio.md
index 5807b6cecec..ffc7109931b 100644
--- a/examples/docs/en-US/radio.md
+++ b/examples/docs/en-US/radio.md
@@ -1,23 +1,3 @@
-
-
## Radio
Single selection among multiple options.
@@ -52,15 +32,15 @@ Radio should not have too many options. Otherwise, use the Select component inst
:::demo You just need to add the `disabled` attribute.
```html
- Option A
- Option B
+ Option A
+ Option B
-
## Rate
Used for rating
### Basic usage
-:::demo Rate divides rating scores into three levels and these levels can be distinguished by using different background colors. By default background colors are the same, but you can assign them to reflect three levels using the `colors` attribute, and their two thresholds can be defined by `low-threshold` and `high-threshold`.
+:::demo Rate divides rating scores into several levels and these levels can be distinguished by using different background colors. By default background colors are the same, but you can assign them an array with three element to reflect three levels using the `colors` attribute, and their two thresholds can be defined by `low-threshold` and `high-threshold`, or you can assign them with a object which key is the threshold between two levels and value is the corresponding color.
-``` html
+```html
Default
@@ -56,7 +15,7 @@ Used for rating
Color for different levels
+ :colors="colors">
@@ -65,7 +24,8 @@ Used for rating
data() {
return {
value1: null,
- value2: null
+ value2: null,
+ colors: ['#99A9BF', '#F7BA2A', '#FF9900'] // same as { 2: '#99A9BF', 4: { value: '#F7BA2A', excluded: true }, 5: '#FF9900' }
}
}
}
@@ -79,9 +39,9 @@ Using text to indicate rating score
:::demo Add attribute `show-text` to display text at the right of Rate. You can assign texts for different scores using `texts`. `texts` is an array whose length should be equal to the max score `max`.
-``` html
+```html
@@ -90,7 +50,7 @@ Using text to indicate rating score
export default {
data() {
return {
- value3: null
+ value: null
}
}
}
@@ -102,12 +62,12 @@ Using text to indicate rating score
You can use different icons to distinguish different rate components.
-:::demo You can customize icons for three different levels using `icon-classes`. In this example, we also use `void-icon-class` to set the icon if it is unselected.
+:::demo You can customize icons by passing `icon-classes` an array with three elements or a object which key is the threshold between two levels and value is the corresponding icon class. In this example, we also use `void-icon-class` to set the icon if it is unselected.
-``` html
+```html
@@ -116,7 +76,8 @@ You can use different icons to distinguish different rate components.
export default {
data() {
return {
- value4: null
+ value: null,
+ iconClasses: ['icon-rate-face-1', 'icon-rate-face-2', 'icon-rate-face-3'] // same as { 2: 'icon-rate-face-1', 4: { value: 'icon-rate-face-2', excluded: true }, 5: 'icon-rate-face-3' }
}
}
}
@@ -130,9 +91,9 @@ Read-only Rate is for displaying rating score. Half star is supported.
:::demo Use attribute `disabled` to make the component read-only. Add `show-score` to display the rating score at the right side. Additionally, you can use attribute `score-template` to provide a score template. It must contain `{value}`, and `{value}` will be replaced with the rating score.
-``` html
+```html
- export default {
- data() {
- return {
- list: null,
- options: [{
- value: 'Option1',
- label: 'Option1'
- }, {
- value: 'Option2',
- label: 'Option2'
- }, {
- value: 'Option3',
- label: 'Option3'
- }, {
- value: 'Option4',
- label: 'Option4'
- }, {
- value: 'Option5',
- label: 'Option5'
- }],
- options2: [{
- value: 'Option1',
- label: 'Option1'
- }, {
- value: 'Option2',
- label: 'Option2',
- disabled: true
- }, {
- value: 'Option3',
- label: 'Option3'
- }, {
- value: 'Option4',
- label: 'Option4'
- }, {
- value: 'Option5',
- label: 'Option5'
- }],
- options3: [{
- label: 'Popular cities',
- options: [{
- value: 'Shanghai',
- label: 'Shanghai'
- }, {
- value: 'Beijing',
- label: 'Beijing'
- }]
- }, {
- label: 'City Name',
- options: [{
- value: 'Chengdu',
- label: 'Chengdu'
- }, {
- value: 'Shenzhen',
- label: 'Shenzhen'
- }, {
- value: 'Guangzhou',
- label: 'Guangzhou'
- }, {
- value: 'Dalian',
- label: 'Dalian'
- }]
- }],
- options4: [],
- options5: [{
- value: 'HTML',
- label: 'HTML'
- }, {
- value: 'CSS',
- label: 'CSS'
- }, {
- value: 'JavaScript',
- label: 'JavaScript'
- }],
- cities: [{
- value: 'Beijing',
- label: 'Beijing'
- }, {
- value: 'Shanghai',
- label: 'Shanghai'
- }, {
- value: 'Nanjing',
- label: 'Nanjing'
- }, {
- value: 'Chengdu',
- label: 'Chengdu'
- }, {
- value: 'Shenzhen',
- label: 'Shenzhen'
- }, {
- value: 'Guangzhou',
- label: 'Guangzhou'
- }],
- value: '',
- value2: '',
- value3: '',
- value4: '',
- value5: [],
- value6: '',
- value7: '',
- value8: '',
- value9: [],
- value10: [],
- value11: [],
- loading: false,
- states: ["Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut", "Delaware", "Florida", "Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas", "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan", "Minnesota", "Mississippi", "Missouri", "Montana", "Nebraska", "Nevada", "New Hampshire", "New Jersey", "New Mexico", "New York", "North Carolina", "North Dakota", "Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virginia", "Washington", "West Virginia", "Wisconsin", "Wyoming"]
- };
- },
-
- mounted() {
- this.list = this.states.map(item => { return { value: item, label: item }; });
- },
-
- methods: {
- remoteMethod(query) {
- if (query !== '') {
- this.loading = true;
- setTimeout(() => {
- this.loading = false;
- this.options4 = this.list.filter(item => item.label.toLowerCase().indexOf(query.toLowerCase()) > -1);
- }, 200);
- } else {
- this.options4 = [];
- }
- }
- }
- };
-
-
-
-
## Select
When there are plenty of options, use a drop-down menu to display and select desired ones.
@@ -187,9 +52,9 @@ When there are plenty of options, use a drop-down menu to display and select des
```html
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -563,8 +428,8 @@ Enter keywords and search data from server.
export default {
data() {
return {
- options4: [],
- value9: [],
+ options: [],
+ value: [],
list: [],
loading: false,
states: ["Alabama", "Alaska", "Arizona",
@@ -588,7 +453,7 @@ Enter keywords and search data from server.
},
mounted() {
this.list = this.states.map(item => {
- return { value: item, label: item };
+ return { value: `value:${item}`, label: `label:${item}` };
});
},
methods: {
@@ -597,13 +462,13 @@ Enter keywords and search data from server.
this.loading = true;
setTimeout(() => {
this.loading = false;
- this.options4 = this.list.filter(item => {
+ this.options = this.list.filter(item => {
return item.label.toLowerCase()
.indexOf(query.toLowerCase()) > -1;
});
}, 200);
} else {
- this.options4 = [];
+ this.options = [];
}
}
}
@@ -618,14 +483,14 @@ Create and select new items that are not included in select options
```html
@@ -637,7 +502,7 @@ Create and select new items that are not included in select options
export default {
data() {
return {
- options5: [{
+ options: [{
value: 'HTML',
label: 'HTML'
}, {
@@ -647,7 +512,7 @@ Create and select new items that are not included in select options
value: 'JavaScript',
label: 'JavaScript'
}],
- value10: []
+ value: []
}
}
}
@@ -662,26 +527,27 @@ If the binding value of Select is an object, make sure to assign `value-key` as
### Select Attributes
| Attribute | Description | Type | Accepted Values | Default |
|---------- |-------------- |---------- |-------------------------------- |-------- |
+| value / v-model | binding value | boolean / string / number | — | — |
| multiple | whether multiple-select is activated | boolean | — | false |
| disabled | whether Select is disabled | boolean | — | false |
| value-key | unique identity key name for value, required when value is an object | string | — | value |
| size | size of Input | string | large/small/mini | — |
-| clearable | whether select can be cleared | boolean | — | false |
+| clearable | whether select can be cleared | boolean | — | true |
| collapse-tags | whether to collapse tags to a text when multiple selecting | boolean | — | false |
| multiple-limit | maximum number of options user can select when `multiple` is `true`. No limit when set to 0 | number | — | 0 |
| name | the name attribute of select input | string | — | — |
| autocomplete | the autocomplete attribute of select input | string | — | off |
| auto-complete | @DEPRECATED in next major version | string | — | off |
| placeholder | placeholder | string | — | Select |
-| filterable | whether Select is filterable | boolean | — | false |
+| filterable | whether Select is filterable | boolean | — | true |
| allow-create | whether creating new items is allowed. To use this, `filterable` must be true | boolean | — | false |
| filter-method | custom filter method | function | — | — |
| remote | whether options are loaded from server | boolean | — | false |
| remote-method | custom remote search method | function | — | — |
| loading | whether Select is loading data from server | boolean | — | false |
| loading-text | displayed text while loading data from server | string | — | Loading |
-| no-match-text | displayed text when no data matches the filtering query | string | — | No matching data |
-| no-data-text | displayed text when there is no options | string | — | No data |
+| no-match-text | displayed text when no data matches the filtering query, you can also use slot `empty` | string | — | No matching data |
+| no-data-text | displayed text when there is no options, you can also use slot `empty` | string | — | No data |
| popper-class | custom class name for Select's dropdown | string | — | — |
| reserve-keyword | when `multiple` and `filter` is true, whether to reserve current keyword after selecting an option | boolean | — | false |
| default-first-option | select first matching option on enter key. Use with `filterable` or `remote` | boolean | - | false |
@@ -703,6 +569,7 @@ If the binding value of Select is an object, make sure to assign `value-key` as
|---------|-------------|
| — | Option component list |
| prefix | content as Select prefix |
+| empty | content when there is no options |
### Option Group Attributes
| Attribute | Description | Type | Accepted Values | Default |
diff --git a/examples/docs/en-US/skeleton.md b/examples/docs/en-US/skeleton.md
new file mode 100644
index 00000000000..ff876ea8b9b
--- /dev/null
+++ b/examples/docs/en-US/skeleton.md
@@ -0,0 +1 @@
+## Skeleton
diff --git a/examples/docs/en-US/slider.md b/examples/docs/en-US/slider.md
index 3d769a05d45..3b959713c8e 100644
--- a/examples/docs/en-US/slider.md
+++ b/examples/docs/en-US/slider.md
@@ -1,54 +1,3 @@
-
-
-
-
## Slider
Drag the slider within a fixed range.
@@ -115,14 +64,14 @@ The options can be discrete.
Breakpoints not displayed
Breakpoints displayed
@@ -133,8 +82,8 @@ The options can be discrete.
export default {
data() {
return {
- value6: 0,
- value7: 0
+ value1: 0,
+ value2: 0
}
}
}
@@ -152,7 +101,7 @@ Set value via a input box.
@@ -162,7 +111,7 @@ Set value via a input box.
export default {
data() {
return {
- value8: 0
+ value: 0
}
}
}
@@ -179,7 +128,7 @@ Selecting a range of values is supported.
@@ -191,7 +140,7 @@ Selecting a range of values is supported.
export default {
data() {
return {
- value9: [4, 8]
+ value: [4, 8]
}
}
}
@@ -206,7 +155,7 @@ Selecting a range of values is supported.
@@ -217,7 +166,44 @@ Selecting a range of values is supported.
export default {
data() {
return {
- value10: 0
+ value: 0
+ }
+ }
+ }
+
+```
+:::
+
+### Show marks
+
+:::demo Setting this `marks` attribute can show mark on slider.
+```html
+
+
+
+
+
+
+
+
-
## Steps
Guide the user to complete tasks in accordance with the process. Its steps can be set according to the actual application scenario and the number of the steps can't be less than 2.
diff --git a/examples/docs/en-US/switch.md b/examples/docs/en-US/switch.md
index d0793964072..6ba7b4f9783 100644
--- a/examples/docs/en-US/switch.md
+++ b/examples/docs/en-US/switch.md
@@ -1,27 +1,3 @@
-
-
-
-
## Switch
Switch is used for switching between two opposing states.
@@ -56,13 +32,13 @@ Switch is used for switching between two opposing states.
```html
+
@@ -128,8 +104,8 @@ Switch is used for switching between two opposing states.
export default {
data() {
return {
- value6: true,
- value7: false
+ value1: true,
+ value2: false
}
}
};
@@ -139,27 +115,29 @@ Switch is used for switching between two opposing states.
### Attributes
- Attribute | Description | Type | Accepted Values | Default
-----| ----| ----| ----|----
-disabled | whether Switch is disabled | boolean | — | false
-width | width of Switch | number | — | 40
-active-icon-class | class name of the icon displayed when in `on` state, overrides `active-text` | string | — | —
-inactive-icon-class |class name of the icon displayed when in `off` state, overrides `inactive-text`| string | — | —
-active-text | text displayed when in `on` state | string | — | —
-inactive-text | text displayed when in `off` state | string | — | —
-active-value | switch value when in `on` state | boolean / string / number | — | true
-inactive-value | switch value when in `off` state | boolean / string / number | — | false
-active-color | background color when in `on` state | string | — | #409EFF
-inactive-color | background color when in `off` state | string | — | #C0CCDA
-name| input name of Switch | string | — | —
+| Attribute | Description | Type | Accepted Values | Default |
+|-----| ----| ----| ----|---- |
+| value / v-model | binding value | boolean / string / number | — | — |
+| disabled | whether Switch is disabled | boolean | — | false |
+| width | width of Switch | number | — | 40 |
+| active-icon-class | class name of the icon displayed when in `on` state, overrides `active-text` | string | — | — |
+| inactive-icon-class |class name of the icon displayed when in `off` state, overrides `inactive-text`| string | — | — |
+| active-text | text displayed when in `on` state | string | — | — |
+| inactive-text | text displayed when in `off` state | string | — | — |
+| active-value | switch value when in `on` state | boolean / string / number | — | true |
+| inactive-value | switch value when in `off` state | boolean / string / number | — | false |
+| active-color | background color when in `on` state | string | — | #2460e0 |
+| inactive-color | background color when in `off` state | string | — | #C0CCDA |
+| name | input name of Switch | string | — | — |
+| validate-event | whether to trigger form validation | boolean | - | true |
### Events
- Event Name | Description | Parameters
----- | ----| ----
-change | triggers when value changes | value after changing
+| Event Name | Description | Parameters |
+| ---- | ----| ---- |
+| change | triggers when value changes | value after changing |
### Methods
-Method | Description | Parameters
-------|--------|-------
-focus | focus the Switch component | —
+| Method | Description | Parameters |
+| ------|--------|------- |
+| focus | focus the Switch component | — |
diff --git a/examples/docs/en-US/table.md b/examples/docs/en-US/table.md
index 926ce74f04c..1733096333c 100644
--- a/examples/docs/en-US/table.md
+++ b/examples/docs/en-US/table.md
@@ -1,372 +1,3 @@
-
-
-
-
## Table
Display multiple data with similar format. You can sort, filter, compare your data in a table.
@@ -546,7 +177,7 @@ You can highlight your table content to distinguish between "success, informatio
```html
Remove
@@ -957,7 +588,7 @@ When the the data is dynamically changed, you might want the table to have a max
},
data() {
return {
- tableData4: [{
+ tableData: [{
date: '2016-05-03',
name: 'Tom',
state: 'California',
@@ -1022,7 +653,7 @@ When the data structure is complex, you can use group header to show the data hi
```html
- Toggle selection status of second and third rows
+ Toggle selection status of second and third rows
Clear selection
@@ -1240,7 +871,7 @@ You can also select multiple rows.
export default {
data() {
return {
- tableData3: [{
+ tableData: [{
date: '2016-05-03',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles'
@@ -1542,7 +1173,7 @@ Customize table header so it can be even more customized.
```html
@@ -1642,7 +1273,7 @@ When the row content is too long and you do not want to display the horizontal s
export default {
data() {
return {
- tableData3: [{
+ tableData: [{
date: '2016-05-03',
name: 'Tom',
state: 'California',
@@ -1699,6 +1330,126 @@ When the row content is too long and you do not want to display the horizontal s
```
:::
+### Tree data and lazy mode
+
+:::demo You can display tree structure data. When row contains the `children` field, it is treated as nested data. For rendering nested data, the prop `row-key` is required。Also, child row data can be loaded asynchronously. Set `lazy` property of Table to true and the function `load`. Specify `hasChildren` attribute in row to determine which row contains children. Both `children` and `hasChildren` can be configured via `tree-props`.
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+:::
+
### Summary row
For table of numbers, you can add an extra row at the table footer displaying each column's sum.
@@ -1706,7 +1457,7 @@ For table of numbers, you can add an extra row at the table footer displaying ea
```html
@@ -1737,7 +1488,7 @@ For table of numbers, you can add an extra row at the table footer displaying ea
@@ -1876,7 +1627,7 @@ Configuring rowspan and colspan allows you to merge cells
@@ -1909,7 +1660,7 @@ Configuring rowspan and colspan allows you to merge cells
export default {
data() {
return {
- tableData6: [{
+ tableData: [{
id: '12987122',
name: 'Tom',
amount1: '234',
@@ -1977,7 +1728,7 @@ Configuring rowspan and colspan allows you to merge cells
### Custom index
You can customize row index in `type=index` columns.
-:::demo To customize row indices, use `index` attribute on with `type=index`. If it is assigned to a number, all indices will have an offset of that number. It also accepts a method with each index (starting from `0`) as parameter, and the returned value will be displayed as index.
+:::demo To customize row indices, use `index` attribute on `el-table-column` with `type=index`. If it is assigned to a number, all indices will have an offset of that number. It also accepts a method with each index (starting from `0`) as parameter, and the returned value will be displayed as index.
```html
@@ -2059,7 +1810,7 @@ You can customize row index in `type=index` columns.
|----------------|----------------------|-----------|-----------------------|----------|
| data | Table data | array | — | — |
| height | Table's height. By default it has an `auto` height. If its value is a number, the height is measured in pixels; if its value is a string, the value will be assigned to element's style.height, the height is affected by external styles | string/number | — | — |
-| max-height | Table's max-height. The height of the table starts from `auto` until it reaches the maxHeight limit. The `maxHeight` is measured in pixels, same as `height` | string/number | — | — |
+| max-height | Table's max-height. The legal value is a number or the height in px. | string/number | — | — |
| stripe | whether Table is striped | boolean | — | false |
| border | whether Table has vertical border | boolean | — | false |
| size | size of Table | string | medium / small / mini | — |
@@ -2075,9 +1826,9 @@ You can customize row index in `type=index` columns.
| header-row-style | function that returns custom style for a row in table header, or an object assigning custom style for every row in table header | Function({row, rowIndex})/Object | — | — |
| header-cell-class-name | function that returns custom class names for a cell in table header, or a string assigning class names for every cell in table header | Function({row, column, rowIndex, columnIndex})/String | — | — |
| header-cell-style | function that returns custom style for a cell in table header, or an object assigning custom style for every cell in table header | Function({row, column, rowIndex, columnIndex})/Object | — | — |
-| row-key | key of row data, used for optimizing rendering. Required if `reserve-selection` is on. When its type is String, multi-level access is supported, e.g. `user.info.id`, but `user.info[0].id` is not supported, in which case `Function` should be used. | Function(row)/String | — | — |
+| row-key | key of row data, used for optimizing rendering. Required if `reserve-selection` is on or display tree data. When its type is String, multi-level access is supported, e.g. `user.info.id`, but `user.info[0].id` is not supported, in which case `Function` should be used. | Function(row)/String | — | — |
| empty-text | Displayed text when data is empty. You can customize this area with `slot="empty"` | String | — | No Data |
-| default-expand-all | whether expand all rows by default, only works when the table has a column type="expand" | Boolean | — | false |
+| default-expand-all | whether expand all rows by default, works when the table has a column type="expand" or contains tree structure data | Boolean | — | false |
| expand-row-keys | set expanded rows by this prop, prop's value is the keys of expand rows, you should set row-key before using this prop | Array | — | |
| default-sort | set the default sort column and order. property `prop` is used to set default sort column, property `order` is used to set default sort order | Object | `order`: ascending, descending | if `prop` is set, and `order` is not set, then `order` is default to ascending |
| tooltip-effect | tooltip `effect` property | String | dark/light | | dark |
@@ -2086,6 +1837,10 @@ You can customize row index in `type=index` columns.
| summary-method | custom summary method | Function({ columns, data }) | — | — |
| span-method | method that returns rowspan and colspan | Function({ row, column, rowIndex, columnIndex }) | — | — |
| select-on-indeterminate | controls the behavior of master checkbox in multi-select tables when only some rows are selected (but not all). If true, all rows will be selected, else deselected. | Boolean | — | true |
+| indent | horizontal indentation of tree data | Number | — | 16 |
+| lazy | whether to lazy loading data | Boolean| — | — |
+| load | method for loading child row data, only works when `lazy` is true | Function(row, treeNode, resolve) | — | — |
+| tree-props | configuration for rendering nested data| Object | — | { hasChildren: 'hasChildren', children: 'children' } |
### Table Events
| Event Name | Description | Parameters |
@@ -2097,16 +1852,16 @@ You can customize row index in `type=index` columns.
| cell-mouse-leave | triggers when hovering out of a cell | row, column, cell, event |
| cell-click | triggers when clicking a cell | row, column, cell, event |
| cell-dblclick | triggers when double clicking a cell | row, column, cell, event |
-| row-click | triggers when clicking a row | row, event, column |
-| row-contextmenu | triggers when user right clicks on a row | row, event |
-| row-dblclick | triggers when double clicking a row | row, event |
+| row-click | triggers when clicking a row | row, column, event |
+| row-contextmenu | triggers when user right clicks on a row | row, column, event |
+| row-dblclick | triggers when double clicking a row | row, column, event |
| header-click | triggers when clicking a column header | column, event |
| header-contextmenu | triggers when user right clicks on a column header | column, event |
| sort-change | triggers when Table's sorting changes | { column, prop, order } |
| filter-change | column's key. If you need to use the filter-change event, this attribute is mandatory to identify which column is being filtered | filters |
| current-change | triggers when current row changes | currentRow, oldCurrentRow |
| header-dragend | triggers after changing a column's width by dragging the column header's border | newWidth, oldWidth, column, event |
-| expand-change | triggers when user expands or collapses a row | row, expandedRows |
+| expand-change | triggers when user expands or collapses a row (for expandable table, second param is expandedRows; for tree Table, second param is expanded) | row, (expandedRows \| expanded) |
### Table Methods
| Method | Description | Parameters |
@@ -2114,7 +1869,7 @@ You can customize row index in `type=index` columns.
| clearSelection | used in multiple selection Table, clear user selection | — |
| toggleRowSelection | used in multiple selection Table, toggle if a certain row is selected. With the second parameter, you can directly set if this row is selected | row, selected |
| toggleAllSelection | used in multiple selection Table, toggle the selected state of all rows | - |
-| toggleRowExpansion | used in expandable Table, toggle if a certain row is expanded. With the second parameter, you can directly set if this row is expanded or collapsed | row, expanded |
+| toggleRowExpansion | used in expandable Table or tree Table, toggle if a certain row is expanded. With the second parameter, you can directly set if this row is expanded or collapsed | row, expanded |
| setCurrentRow | used in single selection Table, set a certain row selected. If called without any parameter, it will clear selection. | row |
| clearSort | clear sorting, restore data to the original order | — |
| clearFilter | clear filters of the columns whose `columnKey` are passed in. If no params, clear all filters | columnKeys |
@@ -2130,7 +1885,7 @@ You can customize row index in `type=index` columns.
| Attribute | Description | Type | Accepted Values | Default |
|---------- |-------------- |---------- |-------------------------------- |-------- |
| type | type of the column. If set to `selection`, the column will display checkbox. If set to `index`, the column will display index of the row (staring from 1). If set to `expand`, the column will display expand icon. | string | selection/index/expand | — |
-| index | customize indices for each row, works on columns with `type=index` | string, Function(index) | - | - |
+| index | customize indices for each row, works on columns with `type=index` | number, Function(index) | - | - |
| label | column label | string | — | — |
| column-key | column's key. If you need to use the filter-change event, you need this attribute to identify which column is being filtered | string | string | — | — |
| prop | field name. You can also use its alias: `property` | string | — | — |
diff --git a/examples/docs/en-US/tabs-dotted.md b/examples/docs/en-US/tabs-dotted.md
new file mode 100644
index 00000000000..b8837a53bc9
--- /dev/null
+++ b/examples/docs/en-US/tabs-dotted.md
@@ -0,0 +1 @@
+## TabsDotted
diff --git a/examples/docs/en-US/tabs.md b/examples/docs/en-US/tabs.md
index 586cd017008..6a3b07f6735 100644
--- a/examples/docs/en-US/tabs.md
+++ b/examples/docs/en-US/tabs.md
@@ -1,95 +1,3 @@
-
-
## Tabs
Divide data collections which are related yet belong to different types.
@@ -201,7 +109,7 @@ You can use `tab-position` attribute to set the tab's position.
export default {
data() {
return {
- tabPosition: 'top'
+ tabPosition: 'left'
};
}
};
@@ -302,14 +210,14 @@ Only card type Tabs support addable & closeable.
add tab
-
+
{
if (tab.name === targetName) {
@@ -358,8 +266,8 @@ Only card type Tabs support addable & closeable.
});
}
- this.editableTabsValue2 = activeName;
- this.editableTabs2 = tabs.filter(tab => tab.name !== targetName);
+ this.editableTabsValue = activeName;
+ this.editableTabs = tabs.filter(tab => tab.name !== targetName);
}
}
}
@@ -370,11 +278,11 @@ Only card type Tabs support addable & closeable.
### Tabs Attributes
| Attribute | Description | Type | Accepted Values | Default |
|---------- |-------- |---------- |------------- |-------- |
+| value / v-model | binding value, name of the selected tab | string | — | name of first tab |
| type | type of Tab | string | card/border-card | — |
| closable | whether Tab is closable | boolean | — | false |
| addable | whether Tab is addable | boolean | — | false |
| editable | whether Tab is addable and closable | boolean | — | false |
-| value | name of the selected tab | string | — | name of first tab |
| tab-position | position of tabs | string | top/right/bottom/left | top |
| stretch | whether width of tab automatically fits its container | boolean | - | false |
| before-leave | hook function before switching tab. If `false` is returned or a `Promise` is returned and then is rejected, switching will be prevented | Function(activeName, oldActiveName) | — | — |
@@ -392,6 +300,6 @@ Only card type Tabs support addable & closeable.
|---------- |-------- |---------- |------------- |-------- |
| label | title of the tab | string | — | — |
| disabled | whether Tab is disabled | boolean | — | false |
-| name | identifier corresponding to the activeName of Tabs, representing the alias of the tab-pane | string | — | ordinal number of the tab-pane in the sequence, e.g. the first tab-pane is '1' |
+| name | identifier corresponding to the name of Tabs, representing the alias of the tab-pane | string | — | ordinal number of the tab-pane in the sequence, e.g. the first tab-pane is '1' |
| closable | whether Tab is closable | boolean | — | false |
| lazy | whether Tab is lazily rendered | boolean | — | false |
\ No newline at end of file
diff --git a/examples/docs/en-US/tag.md b/examples/docs/en-US/tag.md
index 13c618c7a39..e477029650d 100644
--- a/examples/docs/en-US/tag.md
+++ b/examples/docs/en-US/tag.md
@@ -1,62 +1,3 @@
-
-
-
-
## Tag
Used for marking and selection.
@@ -66,11 +7,11 @@ Used for marking and selection.
:::demo Use the `type` attribute to define Tag's type. In addition, the `color` attribute can be used to set the background color of the Tag.
```html
-Tag One
-Tag Two
-Tag Three
-Tag Four
-Tag Five
+Tag 1
+Tag 2
+Tag 3
+Tag 4
+Tag 5
```
:::
@@ -198,18 +139,66 @@ Besides default size, Tag component provides three additional sizes for you to c
```
:::
+
+### Theme
+
+Tag provide three different themes: `dark`、`light` and `plain`
+
+:::demo Using `effect` to change, default is `light`
+```html
+
+ Dark
+
+ {{ item.label }}
+
+
+
+ Plain
+
+ {{ item.label }}
+
+
+
+
+```
+:::
+
### Attributes
| Attribute | Description | Type | Accepted Values | Default |
|---------- |-------------- |---------- |-------------------------------- |-------- |
-| type | theme | string | success/info/warning/danger | — |
+| type | component type | string | success/info/warning/danger | — |
| closable | whether Tag can be removed | boolean | — | false |
| disable-transitions | whether to disable animations | boolean | — | false |
| hit | whether Tag has a highlighted border | boolean | — | false |
| color | background color of the Tag | string | — | — |
| size | tag size | string | medium / small / mini | — |
+| effect | component theme | string | dark / light / plain | light |
### Events
| Event Name | Description | Parameters |
|---------- |-------- |---------- |
-| close | triggers when Tag is removed | — |
\ No newline at end of file
+| click | triggers when Tag is clicked | — |
+| close | triggers when Tag is removed | — |
diff --git a/examples/docs/en-US/time-picker.md b/examples/docs/en-US/time-picker.md
index ff907f2277f..a61629e6fba 100644
--- a/examples/docs/en-US/time-picker.md
+++ b/examples/docs/en-US/time-picker.md
@@ -1,11 +1,3 @@
-
-
## TimePicker
Use Time Picker for time input.
@@ -17,7 +9,7 @@ Provide a list of fixed time for users to choose.
:::demo Use `el-time-select` label, then assign start time, end time and time step with `start`, `end` and `step`.
```html
@@ -134,7 +126,7 @@ Can pick an arbitrary time range.
@@ -145,8 +137,8 @@ Can pick an arbitrary time range.
export default {
data() {
return {
- value4: [new Date(2016, 9, 10, 8, 40), new Date(2016, 9, 10, 9, 40)],
- value5: [new Date(2016, 9, 10, 8, 40), new Date(2016, 9, 10, 9, 40)]
+ value1: [new Date(2016, 9, 10, 8, 40), new Date(2016, 9, 10, 9, 40)],
+ value2: [new Date(2016, 9, 10, 8, 40), new Date(2016, 9, 10, 9, 40)]
};
}
}
@@ -154,27 +146,12 @@ Can pick an arbitrary time range.
```
:::
-
-
### Attributes
| Attribute | Description | Type | Accepted Values | Default |
|---------- |-------------- |---------- |-------------------------------- |-------- |
-| readonly | whether DatePicker is read only | boolean | — | false |
-| disabled | whether DatePicker is disabled | boolean | — | false |
+| value / v-model | binding value | date(TimePicker) / string(TimeSelect) | - | - |
+| readonly | whether TimePicker is read only | boolean | — | false |
+| disabled | whether TimePicker is disabled | boolean | — | false |
| editable | whether the input is editable | boolean | — | true |
| clearable | whether to show clear button | boolean | — | true |
| size | size of Input | string | medium / small / mini | — |
@@ -183,7 +160,6 @@ Can pick an arbitrary time range.
| end-placeholder | placeholder for the end time in range mode | string | — | — |
| is-range | whether to pick a time range, only works with `` | boolean | — | false |
| arrow-control | whether to pick time using arrow buttons, only works with `` | boolean | — | false |
-| value | value of the picker | Date for Time Picker, and string for Time Select | - | - |
| align | alignment | left / center / right | left |
| popper-class | custom class name for TimePicker's dropdown | string | — | — |
| picker-options | additional options, check the table below | object | — | {} |
diff --git a/examples/docs/en-US/timeline.md b/examples/docs/en-US/timeline.md
new file mode 100644
index 00000000000..4b1bc240218
--- /dev/null
+++ b/examples/docs/en-US/timeline.md
@@ -0,0 +1,153 @@
+## Timeline
+
+Visually display timeline.
+
+### Basic usage
+
+Timeline can be split into multiple activities in ascending or descending. Timestamps are important features that distinguish them from other components. Note the difference with Steps.
+
+:::demo
+```html
+
+
+ Order:
+
+ descending
+ ascending
+
+
+
+
+
+ {{activity.content}}
+
+
+
+
+
+```
+:::
+
+### Custom node
+
+Size, color, and icons can be customized in node.
+
+:::demo
+```html
+
+
+
+ {{activity.content}}
+
+
+
+
+
+```
+:::
+
+### Custom timestamp
+
+Timestamp can be placed on top of content when content is too high.
+
+:::demo
+```html
+
+
+
+
+ Update Github template
+ Tom committed 2018/4/12 20:46
+
+
+
+
+ Update Github template
+ Tom committed 2018/4/3 20:46
+
+
+
+
+ Update Github template
+ Tom committed 2018/4/2 20:46
+
+
+
+
+```
+:::
+
+### Timeline Attributes
+| Attribute | Description | Type | Accepted Values | Default |
+|---------- |-------- |---------- |------------- |-------- |
+| reverse | whether the node is ascending or descending, default is ascending | boolean | — | false |
+
+### Timeline-item Attributes
+| Attribute | Description | Type | Accepted Values | Default |
+|---------- |-------- |---------- |------------- |-------- |
+| timestamp | timestamp content | string | - | — |
+| hide-timestamp | whether to show timestamp | boolean | — | false |
+| placement | position of timestamp | string | top / bottom | bottom |
+| type | node type | string | primary / success / warning / danger / info | - |
+| color | background color of node | string | hsl / hsv / hex / rgb | - |
+| size | node size | string | normal / large | normal |
+| icon | icon class name | string | — | - |
+
+### Timeline-Item Slot
+| name | Description |
+|------|--------|
+| — | Custom content for timeline item |
+| dot | Custom defined node |
diff --git a/examples/docs/en-US/tooltip.md b/examples/docs/en-US/tooltip.md
index 272e57c0ed8..9820c03f936 100644
--- a/examples/docs/en-US/tooltip.md
+++ b/examples/docs/en-US/tooltip.md
@@ -1,60 +1,3 @@
-
-
-
-
## Tooltip
Display prompt information for mouse hover.
@@ -200,6 +143,16 @@ In fact, Tooltip is an extension based on [Vue-popper](https://github.com/elemen
+
+
-
-
-
## Transfer
### Basic usage
@@ -78,7 +5,7 @@
```html
@@ -99,7 +26,7 @@
};
return {
data: generateData(),
- value1: [1, 4]
+ value: [1, 4]
};
}
};
@@ -118,15 +45,15 @@ You can search and filter data items.
filterable
:filter-method="filterMethod"
filter-placeholder="State Abbreviations"
- v-model="value2"
- :data="data2">
+ v-model="value"
+ :data="data">
diff --git a/examples/docs/en-US/tree.md b/examples/docs/en-US/tree.md
index ca56ec471dd..abf25577174 100644
--- a/examples/docs/en-US/tree.md
+++ b/examples/docs/en-US/tree.md
@@ -1,382 +1,3 @@
-
-
-
-
## Tree
Display a set of data with hierarchies.
@@ -517,8 +138,8 @@ Used for node selection.
:::demo A node's data is not fetched until it is clicked, so the Tree cannot predict whether a node is a leaf node. That's why a drop-down button is added to each node, and if it is a leaf node, the drop-down button will disappear when clicked. That being said, you can also tell the Tree in advance whether the node is a leaf node, avoiding the render of the drop-down button before a leaf node.
```html
@@ -527,7 +148,7 @@ Used for node selection.
export default {
data() {
return {
- props1: {
+ props: {
label: 'name',
children: 'zones',
isLeaf: 'leaf'
@@ -535,7 +156,7 @@ Used for node selection.
};
},
methods: {
- loadNode1(node, resolve) {
+ loadNode(node, resolve) {
if (node.level === 0) {
return resolve([{ name: 'region' }]);
}
@@ -565,7 +186,7 @@ The checkbox of a node can be set as disabled.
:::demo In the example, 'disabled' property is declared in defaultProps, and some nodes are set as 'disabled:true'. The corresponding checkboxes are disabled and can't be clicked.
```html
@@ -575,7 +196,7 @@ The checkbox of a node can be set as disabled.
export default {
data() {
return {
- data3: [{
+ data: [{
id: 1,
label: 'Level one 1',
children: [{
@@ -621,7 +242,7 @@ Tree nodes can be initially expanded or checked
:::demo Use `default-expanded-keys` and `default-checked-keys` to set initially expanded and initially checked nodes respectively. Note that for them to work, `node-key` is required. Its value is the name of a key in the data object, and the value of that key should be unique across the whole tree.
```html
Using render-content
Using scoped slot
+ ref="tree">
+```
+:::
+
### Attributes
| Attribute | Description | Type | Accepted Values | Default |
| --------------------- | ---------------------------------------- | --------------------------- | --------------- | ------- |
@@ -1190,6 +853,8 @@ You can drag and drop Tree nodes by adding a `draggable` attribute.
| draggable | whether enable tree nodes drag and drop | boolean | — | false |
| allow-drag | this function will be executed before dragging a node. If `false` is returned, the node can not be dragged | Function(node) | — | — |
| allow-drop | this function will be executed before the dragging node is dropped. If `false` is returned, the dragging node can not be dropped at the target node. `type` has three possible values: 'prev' (inserting the dragging node before the target node), 'inner' (inserting the dragging node to the target node) and 'next' (inserting the dragging node after the target node) | Function(draggingNode, dropNode, type) | — | — |
+| height | Config virtual scroll height | number | — | 0 |
+| extra-line | Set item count under(without) the virtual container | number | — | 8 |
### props
| Attribute | Description | Type | Accepted Values | Default |
@@ -1213,7 +878,7 @@ You can drag and drop Tree nodes by adding a `draggable` attribute.
| getHalfCheckedNodes | If the node can be selected (`show-checkbox` is `true`), it returns the currently half selected array of nodes | - |
| getHalfCheckedKeys | If the node can be selected (`show-checkbox` is `true`), it returns the currently half selected array of node's keys | - |
| getCurrentKey | return the highlight node's key (null if no node is highlighted) | — |
-| getCurrentNode | return the highlight node (null if no node is highlighted) | — |
+| getCurrentNode | return the highlight node's data (null if no node is highlighted) | — |
| setCurrentKey | set highlighted node by key, only works when `node-key` is assigned | (key) the node's key to be highlighted. If `null`, cancel the currently highlighted node |
| setCurrentNode | set highlighted node, only works when `node-key` is assigned | (node) the node to be highlighted |
| getNode | get node by data or key | (data) the node's data or key |
diff --git a/examples/docs/en-US/typography.md b/examples/docs/en-US/typography.md
index 22f8289be93..3e7a0732524 100644
--- a/examples/docs/en-US/typography.md
+++ b/examples/docs/en-US/typography.md
@@ -1,151 +1,151 @@
-
+
## Typography
We create a font convention to ensure the best presentation across different platforms.
-### Chinese Font
-
-
- 和畅惠风
- PingFang SC
-
-
- 和畅惠风
- Hiragino Sans GB
-
-
- 和畅惠风
- Microsoft YaHei
-
-
-### English / Numberic Font
-
-
- RGag
- Helvetica Neue
-
-
- RGag
- Helvetica
-
-
- RGag
- Arial
+### Font
+
+
+
+
+
+
+
-### Font-family
-
-```css
-font-family: "Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;
-```
-
### Font Convention
-
- Main Title
- Build with Element
- 20px Extra large
+
+ Level
+ Font Size
+ Demo
-
- Title
- Build with Element
- 18px large
+
+ Supplementary text
+ {{font_size_extra_small}} Extra Small
+ Build with Element
-
- Small Title
- Build with Element
- 16px Medium
+
+ Body (small)
+ {{font_size_small}} Small
+ Build with Element
-
- Body
- Build with Element
- 14px Small
+
+ Body
+ {{font_size_base}} Base
+ Build with Element
-
- Body (small)
- Build with Element
- 13px Extra Small
+
+ Small Title
+ {{font_size_medium}} Medium
+ Build with Element
-
- Supplementary text
- Build with Element
- 12px Extra Extra Small
+
+ Title
+ {{font_size_large}} large
+ Build with Element
+
+
+ Main Title
+ {{font_size_extra_large}} Extra large
+ Build with Element
+### Font Line Height
+
+
+
+
+- line-height:1 No line height
+- line-height:1.3 Compact
+- line-height:1.5 Regular
+- line-height:1.7 Loose
+
+
+
+### Font-family
+
+```css
+font-family: "Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;
+```
diff --git a/examples/docs/en-US/upload.md b/examples/docs/en-US/upload.md
index af862b25405..2675d2282fc 100644
--- a/examples/docs/en-US/upload.md
+++ b/examples/docs/en-US/upload.md
@@ -1,122 +1,3 @@
-
-
-
## Upload
Upload files by clicking or drag-and-drop
@@ -156,7 +37,7 @@ Upload files by clicking or drag-and-drop
this.$message.warning(`The limit is 3, you selected ${files.length} files this time, add up to ${files.length + fileList.length} totally`);
},
beforeRemove(file, fileList) {
- return this.$confirm(`确定移除 ${ file.name }?`);
+ return this.$confirm(`Cancel the transfert of ${ file.name } ?`);
}
}
}
@@ -189,7 +70,7 @@ Use `before-upload` hook to limit the upload file format and size.
overflow: hidden;
}
.avatar-uploader .el-upload:hover {
- border-color: #409EFF;
+ border-color: #2460e0;
}
.avatar-uploader-icon {
font-size: 28px;
@@ -273,6 +154,75 @@ Use `list-type` to change the fileList style.
```
:::
+### Custom file thumbnail
+
+Use `scoped-slot` to change default thumbnail template.
+
+:::demo
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+:::
+
### FileList with thumbnail
:::demo
@@ -282,7 +232,7 @@ Use `list-type` to change the fileList style.
action="https://jsonplaceholder.typicode.com/posts/"
:on-preview="handlePreview"
:on-remove="handleRemove"
- :file-list="fileList2"
+ :file-list="fileList"
list-type="picture">
Click to upload
jpg/png files with a size less than 500kb
@@ -291,7 +241,7 @@ Use `list-type` to change the fileList style.
export default {
data() {
return {
- fileList2: [{name: 'food.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}, {name: 'food2.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}]
+ fileList: [{name: 'food.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}, {name: 'food2.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}]
};
},
methods: {
@@ -317,7 +267,7 @@ Use `on-change` hook function to control upload file list
class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/"
:on-change="handleChange"
- :file-list="fileList3">
+ :file-list="fileList">
Click to upload
jpg/png files with a size less than 500kb
@@ -325,7 +275,7 @@ Use `on-change` hook function to control upload file list
export default {
data() {
return {
- fileList3: [{
+ fileList: [{
name: 'food.jpeg',
url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'
}, {
@@ -336,7 +286,7 @@ Use `on-change` hook function to control upload file list
},
methods: {
handleChange(file, fileList) {
- this.fileList3 = fileList.slice(-3);
+ this.fileList = fileList.slice(-3);
}
}
}
diff --git a/examples/docs/es/affix.md b/examples/docs/es/affix.md
new file mode 100644
index 00000000000..b0b148f0525
--- /dev/null
+++ b/examples/docs/es/affix.md
@@ -0,0 +1 @@
+## Affix
diff --git a/examples/docs/es/alert.md b/examples/docs/es/alert.md
index 07840a24ab5..6ab0fa51d28 100644
--- a/examples/docs/es/alert.md
+++ b/examples/docs/es/alert.md
@@ -1,22 +1,3 @@
-
-
-
## Alert
Mostrar mensajes de alertas importantes.
@@ -49,7 +30,38 @@ Los componentes de alertas no son elementos overlay de la página y no desaparec
```
:::
-### Personalización del botón de cerrar
+### Theme
+
+Alert provee dos diferentes temas `light` y `dark`.
+
+:::demo Use `effect` para cambiar el tema, por defecto es `light`.
+```html
+
+
+
+
+
+
+
+
+
+
+```
+:::
+
+### Personalización del botón de cerrar
Personalizar el botón de cerrar como texto u otros símbolos.
@@ -217,11 +229,13 @@ Descripción incluye un mensaje con información más detallada.
| center | si el texto debe estar centrado | boolean | — | false |
| close-text | texto de cerrado personalizado | string | — | — |
| show-icon | si un icono del tipo de alerta se debe mostrar | boolean | — | false |
+| effect | Choose theme | string | light/dark | light |
### Slot
| Name | Description |
|------|--------|
+| — | descripción |
| title | El contenido del título de alerta. |
### Eventos
diff --git a/examples/docs/es/avatar.md b/examples/docs/es/avatar.md
new file mode 100644
index 00000000000..2ff4dab968e
--- /dev/null
+++ b/examples/docs/es/avatar.md
@@ -0,0 +1,146 @@
+## Avatar
+
+Los avatares pueden utilizarse para representar personas u objetos. Soporta imágenes, iconos o caracteres.
+
+### Básico
+
+Use los props `shape` y `size` para establecer la forma y el tamaño del avatar
+
+:::demo
+```html
+
+
+
+ circle
+
+
+
+
+
+
+
+
+ square
+
+
+
+
+
+
+
+
+
+
+
+```
+:::
+
+### Tipos
+
+Soporta imágenes, iconos o caracteres.
+
+:::demo
+```html
+
+
+
+
+
+
+
+
+
+ user
+
+
+
+```
+:::
+
+### Fallback cuando se produce un error de carga de imagen
+
+Fallback cuando se produce un error de carga de imagen
+
+:::demo
+```html
+
+
+
+
+
+
+
+
+
+```
+:::
+
+### Cómo encaja la imagen en su contenedor
+
+Establezca cómo la imagen se ajusta a su contenedor para un avatar de imagen, igual que [object-fit](https://developer.mozilla.org/es/docs/Web/CSS/object-fit).
+
+:::demo
+```html
+
+
+
+ {{ fit }}
+
+
+
+
+
+
+```
+:::
+
+### Atributos
+
+| Atributo | Descripción | Tipo | Valores aceptados | Por defecto |
+| ----------------- | -------------------------------- | --------------- | ------ | ------ |
+| icon | establece el tipo de representación a Icono, más información en Componente Icon | string | | |
+| size | Establece el tamaño del avatar | number/string | number / large / medium / small | large |
+| shape | establece la forma del avatar | string | circle / square | circle |
+| src | la dirección de la imagen para un avatar de imagen | string | | |
+| srcSet | Una lista de una o más cadenas separadas por comas que indica un conjunto de posibles fuentes de imágenes para que el agente de usuario las utilice. | string | | |
+| alt | Este atributo define una descripción de texto alternativo de la imagen | string | | |
+| fit | establece cómo encaja la imagen en su contenedor para un avatar de imagen | string | fill / contain / cover / none / scale-down | cover |
+
+### Eventos
+
+| Nombre | Descripción | Parámetros |
+| ------ | ------------------ | -------- |
+| error | cuando se produce un error de carga de img, devuelve false para evitar el comportamiento de repliegue predeterminado |(e: Event) |
+
+### Slot
+
+| Nombre | Descripción |
+| default | personalice el contenido del avatar |
+
diff --git a/examples/docs/es/backtop.md b/examples/docs/es/backtop.md
new file mode 100644
index 00000000000..2c3ba8bd191
--- /dev/null
+++ b/examples/docs/es/backtop.md
@@ -0,0 +1,60 @@
+## Backtop
+
+Un botón para volver a la parte superior
+
+### Uso básico
+
+Desplácese hacia abajo para ver el botón en el lado inferior derecho.
+:::demo
+
+```html
+
+ Scroll down to see the bottom-right button.
+
+
+```
+
+:::
+
+### Personalización
+
+Área de visualización de 40px \* 40px.
+:::demo
+
+```html
+
+ Scroll down to see the bottom-right button.
+
+
+ UP
+
+
+
+```
+
+:::
+
+### Atributos
+
+| Atributos | Descripción | Tipo | Valores aceptados | Por defecto |
+| ----------------- | ------------------------------------------------------------------- | --------------- | --------------- | ------- |
+| target | el objetivo para activar el scroll | string | | |
+| visibility-height | el botón no se mostrará hasta que la altura de desplazamiento alcance este valor | number | | 200 |
+| right | separación desde la derecha | number | | 40 |
+| bottom | separación desde abajo | number | | 40 |
+
+### Eventos
+
+| Nombre del evento | Descripción | Parámetros |
+| ----------------- | ----------------------- | ----------- |
+| click | se activa al hacer clic | click event |
diff --git a/examples/docs/es/badge.md b/examples/docs/es/badge.md
index 7f91c7cbed7..8001fa0eec5 100644
--- a/examples/docs/es/badge.md
+++ b/examples/docs/es/badge.md
@@ -114,32 +114,12 @@ Puede utilizar un punto rojo para marcar contenido que debe ser notado.
```
:::
-
-
### Atributos
| Atributo | Descripción | Tipo | Valores aceptados | Por defecto |
| -------- | ---------------------------------------- | -------------- | ----------------- | ----------- |
| value | valor a mostrar | string, number | — | — |
| max | valor máximo, Muestra '{max}+' cuando se excede. Solo funciona si `value` es un `Number` | number | — | — |
| is-dot | si se debe mostrar un pequeño punto | boolean | — | false |
-| hidden | hidden badge | boolean | — | false |
+| hidden | oculta el badge | boolean | — | false |
| type | tipo de botón | string | primary / success / warning / danger / info | — |
+
diff --git a/examples/docs/es/border.md b/examples/docs/es/border.md
new file mode 100644
index 00000000000..13ac471f5d6
--- /dev/null
+++ b/examples/docs/es/border.md
@@ -0,0 +1,135 @@
+
+
+## Border
+
+Estandarizamos los bordes que se pueden utilizar en botones, tarjetas, pop-ups y otros componentes.
+
+### Border
+
+Hay pocos estilos de borde para elegir.
+
+
+
+
+ Name
+ Thickness
+ Demo
+
+
+ Solid
+ 1px
+
+
+
+
+
+ Dashed
+ 2px
+
+
+
+
+
+
+
+### Radius
+
+Hay pocos estilos de radio para elegir.
+
+
+
+ No Radius
+ border-radius: 0px
+
+
+
+ Small Radius
+ border-radius: {{borderRadiusSmall}}
+
+
+
+ Large Radius
+ border-radius: {{borderRadiusBase}}
+
+
+
+ Round Radius
+ border-radius: 30px
+
+
+
+
+### Shadow
+
+Hay pocos estilos de sombra para elegir.
+
+
+Basic Shadow box-shadow: {{boxShadowBase}}
+
+
+Light Shadow box-shadow: {{boxShadowLight}}
diff --git a/examples/docs/es/breadcrumb.md b/examples/docs/es/breadcrumb.md
index 727e821762c..adf45a48f44 100644
--- a/examples/docs/es/breadcrumb.md
+++ b/examples/docs/es/breadcrumb.md
@@ -5,7 +5,7 @@ Muestra la localización de la página actual, haciendo más fácil el poder ir
### Uso básico
-:::demo En `el-breadcrumb`, cada `el-breadcrumb-item` es un tag que representa cada nivel empezando desde la homepage. Este componente tiene un atributo `String` llamado `separator`, el mismo determina el caracter separador. El valor por defecto es '/'.
+:::demo En `el-breadcrumb`, cada `el-breadcrumb-item` es un tag que representa cada nivel empezando desde la homepage. Este componente tiene un atributo `String` llamado `separator`, el mismo determina el carácter separador. El valor por defecto es '/'.
```html
@@ -34,7 +34,7 @@ Muestra la localización de la página actual, haciendo más fácil el poder ir
### Breadcrumb atributos
| Atributo | Descripción | Tipo | Valores aceptados | Por defecto |
| --------------- | -------------------------------------- | ------ | ----------------- | ----------- |
-| separator | caracter separador | string | — | / |
+| separator | carácter separador | string | — | / |
| separator-class | nombre de la clase del icono separador | string | — | - |
### Breadcrumb Item atributos
diff --git a/examples/docs/es/button-group-enhance.md b/examples/docs/es/button-group-enhance.md
new file mode 100644
index 00000000000..188c81b7813
--- /dev/null
+++ b/examples/docs/es/button-group-enhance.md
@@ -0,0 +1 @@
+## ButtonGroupEnhance
diff --git a/examples/docs/es/button.md b/examples/docs/es/button.md
index a2767262213..3cc87a857f2 100644
--- a/examples/docs/es/button.md
+++ b/examples/docs/es/button.md
@@ -1,27 +1,3 @@
-
-
## Button
Botones comúnmente usados.
@@ -111,7 +87,7 @@ Botones sin borde ni fondo.
Use iconos para darle mayor significado a Button. Se puede usar simplemente un icono o un icono con texto.
-:::demo Use el atributo `icon` para agregar un icono. Puede encontrar el listado de iconos en el componente de iconos. Agregar iconos a la derecha del texto se puede conseguir con un tag ``. También se pueden usar iconos custom.
+:::demo Use el atributo `icon` para agregar un icono. Puede encontrar el listado de iconos en el componente de iconos. Agregar iconos a la derecha del texto se puede conseguir con un tag ``. También se pueden usar iconos personalizados.
```html
@@ -156,7 +132,7 @@ Cuando se hace clic en un botón para descargar datos, el botón muestra un esta
Además del tamaño por defecto, el componente Button provee tres tamaños adicionales para utilizar en diferentes escenarios.
-:::demo Use el atributo `size` para setear tamaños adicionales con `medium`, `small` or `mini`.
+:::demo Use el atributo `size` para setear tamaños adicionales con `medium`, `small` o `mini`.
```html
@@ -181,9 +157,10 @@ Además del tamaño por defecto, el componente Button provee tres tamaños adici
| type | tipo de botón | string | primary / success / warning / danger / info / text | — |
| plain | determinar si es o no un botón plano | boolean | — | false |
| round | determinar si es o no un botón redondo | boolean | — | false |
-| circle | determina si es un boton circular | boolean | — | false |
+| circle | determina si es un botón circular | boolean | — | false |
| loading | determinar si es o no un botón de descarga | boolean | — | false |
| disabled | deshabilitar el botón | boolean | — | false |
| icon | nombre de la clase del icono | string | — | — |
| autofocus | misma funcionalidad que la nativa `autofocus` | boolean | — | false |
-| native-type | misma funcionalidad que la nativa `type` | string | button / submit / reset | button |
\ No newline at end of file
+| native-type | misma funcionalidad que la nativa `type` | string | button / submit / reset | button |
+
diff --git a/examples/docs/es/calendar.md b/examples/docs/es/calendar.md
new file mode 100644
index 00000000000..717861461bc
--- /dev/null
+++ b/examples/docs/es/calendar.md
@@ -0,0 +1,68 @@
+## Calendar
+
+Muestra fechas.
+
+### Básico
+
+:::demo Configure el valor para especificar el mes que se muestra actualmente. Si no se especifica el valor, se muestra el mes actual. el valor soporta la vinculación bidireccional.
+```html
+
+
+
+
+```
+:::
+
+### Contenido personalizado
+
+:::demo Personalice lo que se muestra en la celda del calendario configurando el `scoped-slot` llamada `dateCell`. En la ranura de alcance se puede obtener la fecha (la fecha de la celda actual), los datos (incluyendo el tipo, isSelected, el atributo day). Para obtener más información, consulte la documentación de la API a continuación.
+
+```html
+
+
+
+
+ {{ data.day.split('-').slice(1).join('-') }} {{ data.isSelected ? '✔️' : ''}}
+
+
+
+
+```
+:::
+
+### Rango
+
+:::demo Defina el atributo `range` para especificar el rango de visualización del calendario. El tiempo de inicio debe ser el lunes, el tiempo de finalización debe ser el domingo y el período no puede exceder los dos meses.
+```html
+
+
+```
+:::
+
+### Atributos
+| Atributo | Descripción | Tipo | Valores aceptados | Por defecto |
+|-----------------|------------------- |---------- |---------------------- |------------ |
+| value / v-model | valor vinculante | Date/string/number | — | — |
+| range | rango de tiempo, incluyendo el tiempo de inicio y el tiempo final. Start time must be start day of week, end time must be end day of week, the time span cannot exceed two months | Array | — | — |
+| first-day-of-week | fisrt day of week| Number | 1 to 7 | 1 |
+
+### dateCell scoped slot
+| Atributo | Descripción | Tipo | Valores aceptados | Por defecto |
+|-----------------|-------------- |---------- |---------------------- |--------- |
+| date | fecha que la celda representa | Date | — | — |
+| data | { type, isSelected, day}. `type` indica el mes al que pertenece la fecha, los valores opcionales son mes anterior, mes actual, mes siguiente; `isSelected` indica si la fecha está seleccionada; `day` es la fecha formateada en el formato yyyy-MM-dd | Object | — | — |
+
diff --git a/examples/docs/es/card.md b/examples/docs/es/card.md
index a5bd12f5467..05d8104fe59 100644
--- a/examples/docs/es/card.md
+++ b/examples/docs/es/card.md
@@ -1,55 +1,7 @@
-
-
-
## Card
Muestra información dentro de un contenedor `card`
-### Uso Basico
+### Uso Básico
`Card` incluye titulo, contenido y operaciones.
@@ -129,12 +81,12 @@ Muestre un contenido más rico añadiendo algunas configuraciones.
-
+
Yummy hamburger
- Operating button
+ Operating
diff --git a/examples/docs/es/carousel.md b/examples/docs/es/carousel.md
index 42ea9f5e16d..163ec447d9f 100644
--- a/examples/docs/es/carousel.md
+++ b/examples/docs/es/carousel.md
@@ -1,64 +1,3 @@
-
-
## Carousel
Presenta una serie de imágenes o textos en un espacio limitado
@@ -73,7 +12,7 @@ Presenta una serie de imágenes o textos en un espacio limitado
Switch when indicator is hovered (default)
- {{ item }}
+ {{ item }}
@@ -81,7 +20,7 @@ Presenta una serie de imágenes o textos en un espacio limitado
Switch when indicator is clicked
- {{ item }}
+ {{ item }}
@@ -109,7 +48,7 @@ Presenta una serie de imágenes o textos en un espacio limitado
### Indicadores
-Los indicadores de paginacion pueden mostrarse fuera del carrusel
+Los indicadores de paginación pueden mostrarse fuera del carrusel
:::demo El atributo `indicator-position` determina dónde se encuentran los indicadores de paginación. Por defecto están dentro del carrusel, y el ajuste de `indicator-position` a `outside` los mueve hacia fuera; en cambio `indicator-position` a `none` los oculta.
@@ -187,7 +126,7 @@ Cuando una página es suficientemente ancha pero tiene una altura limitada, pued
- {{ item }}
+ {{ item }}
@@ -212,30 +151,63 @@ Cuando una página es suficientemente ancha pero tiene una altura limitada, pued
```
:::
+Por defecto, `direction` es `horizontal`. El carousel puede ser mostrado de forma vertical cambiando `direction` a `vertical`.
+
+:::demo
+```html
+
+
+
+ {{ item }}
+
+
+
+
+
+```
+:::
+
### Atributos de Carousel
-| Atributo | Descripcion | Tipo | Valores aceptados | Por defecto |
-| ------------------ | ---------------------------------------- | ------- | ------------------ | ----------- |
-| height | Alto del carrusel | string | — | — |
-| initial-index | Indice del slider inicial activo (empieza desde 0) | number | — | 0 |
-| trigger | Evento que muestra los indicadores | string | hover/click | hover |
-| autoplay | Si se enlazan automáticamente las diapositivas | boolean | — | true |
-| interval | Intervalo del auto loop, en milisegundos | number | — | 3000 |
-| indicator-position | Posición del indicador de paginación | string | outside/none | — |
-| arrow | Cuando se muestran las flechas | string | always/hover/never | hover |
-| type | Tipo de carrusel | string | card | — |
-| loop | Si se muestra cíclicamente | boolean | — | true |
+| Atributo | Descripción | Tipo | Valores aceptados | Por defecto |
+| ------------------ | -------------------------------------------------- | ------- | ------------------- | ----------- |
+| height | Alto del carrusel | string | — | — |
+| initial-index | Indice del slider inicial activo (empieza desde 0) | number | — | 0 |
+| trigger | Evento que muestra los indicadores | string | hover/click | hover |
+| autoplay | Si se enlazan automáticamente las diapositivas | boolean | — | true |
+| interval | Intervalo del auto loop, en milisegundos | number | — | 3000 |
+| indicator-position | Posición del indicador de paginación | string | outside/none | — |
+| arrow | Cuando se muestran las flechas | string | always/hover/never | hover |
+| type | Tipo de carrusel | string | card | — |
+| loop | Si se muestra cíclicamente | boolean | — | true |
+| direction | direccion en la que se muestra el contenido | string | horizontal/vertical | horizontal |
### Eventos de Carousel
-| Nombre evento | Descripción | Parametros |
-| ------------- | ---------------------------------------- | ---------------------------------------- |
+| Nombre evento | Descripción | Parámetros |
+| ------------- | ----------------------------------------- | ------------------------------------------------------------ |
| change | Se dispara cuando el slider activo cambia | Indice del nuevo slider activo, indice del anterior slider activo. |
### Metodos de Carousel
-| Metodos | Descripción | Parametros |
-| ------------- | -------------------------- | ---------------------------------------- |
+| Metodos | Descripción | Parámetros |
+| ------------- | -------------------------- | ------------------------------------------------------------ |
| setActiveItem | Cambio manual de slider | indice del slider al que se va a cambiar, empezando por 0; o el `name` del `el-carousel-item` correspondiente |
-| prev | Cambia al slider anterior | — |
-| next | Cambia al slider siguiente | — |
+| prev | Cambia al slider anterior | — |
+| next | Cambia al slider siguiente | — |
### Atributos de Carousel-Item
| Atributo | Descripción | Tipo | Valores aceptados | Por defecto |
diff --git a/examples/docs/es/cascader.md b/examples/docs/es/cascader.md
index 8cec8024e46..4c2ab6aae6e 100644
--- a/examples/docs/es/cascader.md
+++ b/examples/docs/es/cascader.md
@@ -1,18 +1,34 @@
+## Cascader
+
+Si las opciones tienen una estructura jerárquica clara, se puede utilizar Cascader para verlas y seleccionarlas.
+
+### Uso básico
+
+Hay dos maneras de ampliar los elementos de opción hijos.
+
+:::demo Asignar el atributo `options` a un array de opciones genera un Cascader. El atributo `props.expandTrigger` define cómo se expanden las opciones hijo.
+```html
+
+ Child options expand when clicked (default)
+
+
+
+ Child options expand when hovered
+
+
+
+```
+:::
-
-
-## Cascader
-
-Si las opciones tienen una estructura jerárquica clara, Cascader puede utilizarse para visualizarlas y seleccionarlas.
-
-### Uso básico
+### Opción Disabled
-Existen dos maneras de expandir los elementos hijo de la opción.
+Deshabilite una opción estableciendo el campo `disabled` en las opciones del objeto.
-:::demo Al asignar al atributo `options` un array de opciones, se genera un Cascader. El atributo `expand-trigger` define cómo se expanden las opciones hijo. Este ejemplo también muestra el evento `change` , cuyo parámetro es el valor de Cascader, un array formado por los valores de cada nivel seleccionado.
+:::demo En este ejemplo, el primer ítem en el array `options` tiene un campo `disabled: true`, por lo que está deshabilitado. De forma predeterminada, Cascader comprueba el campo `disabled` en cada objeto de las opciones; si está utilizando otro nombre de campo para indicar si una opción está deshabilitada, puede asignarla en el atributo `props.disabled` (consulte la tabla de la API a continuación para obtener más detalles). Y por supuesto, el nombre de campo `value`, `label` y `children` también se pueden personalizar de la misma manera.
```html
-
- Child options expand when clicked (default)
-
-
-
-
- Child options expand when hovered
-
-
-
+
```
:::
-### Opcion Disabled
+### Limpiable
-Para desactivar una opción configure un campo `disabled` en el objeto de opción.
-
-:::demo En este ejemplo, el primer elemento del array `options` tiene un campo `disabled: true` , por lo que está desactivado. Por defecto, Cascader verifica el campo `disabled` en cada objeto de opción; si está utilizando otro nombre de campo para indicar si una opción está deshabilitada, puede asignarla en el atributo `props` (consulte la tabla API a continuación para obtener más detalles). Y por supuesto, el valor de `value`, `label` y `children` también se pueden personalizar de la misma manera.
+Establezca el atributo `clearable` para `el-cascader` y aparecerá un icono de borrado cuando se seleccione y se pase el ratón por encima.
+:::demo
```html
-
+
+
```
:::
-### Mostrar sólo el último nivel
-
-Puede mostrar sólo el último nivel en lugar de todos los niveles.
+### Visualizar sólo el último nivel
-:::demo El atributo `show-all-levels` define si se visualizan todos los niveles. Si es `false`, sólo se muestra el último nivel.
+La entrada puede mostrar sólo el último nivel en lugar de todos los niveles.
+:::demo El atributo `show-all-levels` define si se muestran todos los niveles. Si es `false`, sólo se muestra el último nivel.
```html
-
+
+```
+:::
+
+
+### Seleccione cualquier nivel de opciones
+
+En la selección única, sólo se pueden comprobar los nodos de la hoja, y en la selección múltiple, los nodos padres de la comprobación conducirán a que los nodos de la hoja se comprueben con el tiempo. Cuando se activa esta función, puede hacer que los nodos padre e hijo se desacoplen y usted puede seleccionar cualquier nivel de opciones.
+
+:::demo Establezca `props.checkStrictly = true` para que el estado comprobado de un nodo no afecte a sus nodos padre y nodos hijos, y entonces podrá seleccionar cualquier nivel de opciones.
+```html
+
+ Select any level of options (Single selection)
+
+
+
+ Select any level of options (Multiple selection)
+
+
+
+```
+:::
+
+### Filtrable
+
+Buscar y seleccionar opciones con una palabra clave.
+
+:::demo Añadir `filtrable` a `el-cascader` permite el filtrado. Cascader hará coincidir los nodos cuya etiqueta o etiqueta de padre (de acuerdo con `show-all-levels`) incluya una palabra clave de entrada. Por supuesto, puedes personalizar la lógica de búsqueda mediante el `filter-method` que acepta una función, el primer parámetro es `nodo`, el segundo es `keyword`, y necesitas devolver un valor booleano que indique si da en el blanco.
+
+```html
+
+ Filterable (Single selection)
+
+
+
+ Filterable (Multiple selection)
+
+
+
```
:::
-### Filtrable
-
-Buscar y seleccionar opciones con una palabra clave.
+### Panel cascader
-:::demo Añadir `filterable` a `el-cascader` permite filtrar
+`CascaderPanel` es el componente central de `Cascader` que tiene varias características como selección única, selección múltiple, carga dinámica, etc.
+:::demo Al igual que `el-cascader`, puede establecer opciones alternativas mediante `options`, y habilitar otras características mediante `props`, consulte el formulario de la API a continuación para obtener más detalles.
```html
-
- Only options of the last level can be selected
-
-
-
- Options of all levels can be selected
-
-
+
-
## Checkbox
Un grupo de opciones para manejar múltiples elecciones.
@@ -96,9 +51,9 @@ Estado deshabilitado para el checkbox.
### Grupo de Checkboxes
-Es usado por multiples checkboxes los cuales están enlazados a un grupo, indica si una opción está seleccionada verificando si esta está marcada.
+Es usado por múltiples checkboxes los cuales están enlazados a un grupo, indica si una opción está seleccionada verificando si esta está marcada.
-:::demo El elemento `checkbox-group` puede manejar multiples checkboxes en un grupo usando `v-model` el cuál está enlazado a un `Array`. Dentro del elemento `el-checkbox`, `label` es el valor del checkbox. Si en ese tag no hay contenido anidado, `label` va a ser mostrado como la descripción al lado del botón del checkbox. `label` también se corresponde con los valores del array. Es seleccionado si el valor especificado existe en el array y viceversa.
+:::demo El elemento `checkbox-group` puede manejar múltiples checkboxes en un grupo usando `v-model` el cuál está enlazado a un `Array`. Dentro del elemento `el-checkbox`, `label` es el valor del checkbox. Si en ese tag no hay contenido anidado, `label` va a ser mostrado como la descripción al lado del botón del checkbox. `label` también se corresponde con los valores del array. Es seleccionado si el valor especificado existe en el array y viceversa.
```html
@@ -173,7 +128,7 @@ Las propiedades `min` y `max` pueden limitar la cantidad de elementos selecciona
```html
{{city}}
@@ -184,7 +139,7 @@ Las propiedades `min` y `max` pueden limitar la cantidad de elementos selecciona
export default {
data() {
return {
- checkedCities1: ['Shanghai', 'Beijing'],
+ checkedCities: ['Shanghai', 'Beijing'],
cities: cityOptions
};
}
@@ -245,21 +200,21 @@ Checkbox con estilo tipo Botón.
```html
-
-
+
+
-
-
+
+
-
+
-
+
@@ -270,12 +225,12 @@ Checkbox con estilo tipo Botón.
export default {
data () {
return {
- checked3: true,
- checked4: false,
- checked5: false,
- checked6: true,
- checkboxGroup5: [],
- checkboxGroup6: []
+ checked1: true,
+ checked2: false,
+ checked3: false,
+ checked4: true,
+ checkboxGroup1: [],
+ checkboxGroup2: []
};
}
}
@@ -286,13 +241,14 @@ Checkbox con estilo tipo Botón.
### Atributos de Checkbox
| Atributo | Descripción | Tipo | Valores aceptados | Por defecto |
| ------------- | ---------------------------------------- | ------------------------- | --------------------- | ----------- |
+| value / v-model | valor enlazado | string / number / boolean | — | — |
| label | valor del Checkbox si es usado dentro de un tag `checkbox-group` | string / number / boolean | — | — |
| true-label | valor del Checkbox si está marcado | string / number | — | — |
| false-label | valor del Checkbox si no está marcado | string / number | — | — |
| disabled | especifica si el Checkbox está deshabilitado | boolean | — | false |
| border | especifica si agrega un borde alrededor del Checkbox | boolean | — | false |
| size | tamaño del Checkbox, sólo funciona si `border` es true | string | medium / small / mini | — |
-| name | atributo 'name' nativo | string | — | — |
+| name | atributo `name` nativo | string | — | — |
| checked | especifica si el Checkbox está marcado | boolean | — | false |
| indeterminate | similar a `indeterminate` en el checkbox nativo | boolean | — | false |
@@ -304,12 +260,13 @@ Checkbox con estilo tipo Botón.
### Atributos de Checkbox-group
| Atributo | Descripción | Tipo | Valores aceptados | Por Defecto |
| ---------- | ---------------------------------------- | ------- | --------------------- | ----------- |
+| value / v-model | valor enlazado | array | — | — |
| size | tamaño de los checkboxes de tipo botón o los checkboxes con border | string | medium / small / mini | — |
| disabled | especifica si los checkboxes anidados están deshabilitados | boolean | — | false |
| min | cantidad mínima de checkboxes que deben ser marcados | number | — | — |
| max | cantidad máxima de checkboxes que pueden ser marcados | number | — | — |
| text-color | color de fuente cuando el botón está activo | string | — | #ffffff |
-| fill | color de border y de fondo cuando el botón está activo | string | — | #409EFF |
+| fill | color de border y de fondo cuando el botón está activo | string | — | #2460e0 |
### Eventos de Checkbox-group
| Nombre de Evento | Descripción | Parametros |
diff --git a/examples/docs/es/collapse.md b/examples/docs/es/collapse.md
index 70cb714d21b..ea9d50d1ef6 100644
--- a/examples/docs/es/collapse.md
+++ b/examples/docs/es/collapse.md
@@ -1,29 +1,3 @@
-
-
-
-
## Collapse
Use Collapse para almacenar contenidos.
@@ -141,17 +115,19 @@ Además de usar el atributo `title`, se puede personalizar el título del panel
### Atributos de Collapse
| Atributo | Descripción | Tipo | Valores aceptados | Por defecto |
| --------- | ------------------------------------- | ---------------------------------------- | ----------------- | ----------- |
+| value / v-model | panel activo | string (modo acordeón) / array (No modo acordeón) | — | — |
| accordion | especifica si activa el modo acordeón | boolean | — | false |
-| value | panel activo | string (modo acordeón)/array (No modo acordeón) | — | — |
### Eventos de Collapse
| Nombre de Evento | Descripción | Parametros |
| ---------------- | ---------------------------------------- | ---------------------------------------- |
-| change | se dispara cuando los paneles activos cambian | activeNames: array (No modo acordeón)/string (modo acordeón) |
+| change | se dispara cuando los paneles activos cambian | (activeNames: array (No modo acordeón) / string (modo acordeón)) |
### Atributos de Collapse Item
| Atributo | Descripción | Tipo | Valores aceptados | Por defecto |
| -------- | ----------------------------- | ------------- | ----------------- | ----------- |
| name | identificador único del panel | string/number | — | — |
-| title | título del panel | string | — | — |
\ No newline at end of file
+| title | título del panel | string | — | — |
+| disabled | deshabilita el collapse ítem | boolean | — | — |
+
diff --git a/examples/docs/es/color-picker.md b/examples/docs/es/color-picker.md
index d2ac809d4cd..a06e1125171 100644
--- a/examples/docs/es/color-picker.md
+++ b/examples/docs/es/color-picker.md
@@ -1,62 +1,3 @@
-
-
-
-
## ColorPicker
ColorPicker es un selector de color que soporta varios formatos de color.
@@ -78,7 +19,7 @@ ColorPicker es un selector de color que soporta varios formatos de color.
export default {
data() {
return {
- color1: '#409EFF',
+ color1: '#2460e0',
color2: null
}
}
@@ -89,15 +30,15 @@ ColorPicker es un selector de color que soporta varios formatos de color.
### Alpha
-:::demo ColorPicker soporta selección de canales alpha. Para activarlo sólo agrege el atributo `show-alpha`.
+:::demo ColorPicker soporta selección de canales alpha. Para activarlo sólo agregue el atributo `show-alpha`.
```html
-
+
## Color
Element utiliza un conjunto de paletas para especificar colores, y así, proporcionar una apariencia y sensación coherente para los productos que construye.
@@ -82,8 +98,25 @@ Element utiliza un conjunto de paletas para especificar colores, y así, proporc
El color principal de Element es el azul brillante y amigable.
-
- Azul#409EFF
+
+
+ Brand Color#2460e0
+
+
+
+
+
@@ -93,38 +126,125 @@ Además del color principal, se necesitan utilizar distintos colores para difere
- Éxito#67C23A
+ Success#2FD163
+
+
+
+
+
- Precaución#E6A23C
+ Warning#F5A623
+
+
+
+
+
- Peligro#F56C6C
+ Danger#FF4D4F
+
+
+
+
+
- Info#909399
+ Info#A7A8AD
+
+
+
+
+
### Color neutro
-Los colores neutrales son para texto, fondos y bordes. Puede usar diferentes colores neutrales para representar una estructura jeráquica.
+Los colores neutrales son para texto, fondos y bordes. Puede usar diferentes colores neutrales para representar una estructura jerárquica.
- Texto primario#303133
- Texto regular#606266
- Texto secundario#909399
- Texto de placeholder#C0C4CC
+ Texto primario{{textPrimary}}
+
+ Texto regular{{textRegular}}
+ Texto secundario{{textSecondary}}
+ Texto de placeholder{{textPlaceholder}}
+
+
+
+
+ Borde base{{borderBase}}
+ Borde ligero{{borderLight}}
+ Borde claro{{borderLighter}}
+ Borde extra claro{{borderExtraLight}}
- Borde base#DCDFE6
- Borde ligero#E4E7ED
- Borde claro#EBEEF5
- Borde extra claro#F2F6FC
+ Basic Black{{black}}
+ Basic White{{white}}
+ TransparentTransparent
+
diff --git a/examples/docs/es/container.md b/examples/docs/es/container.md
index 2639063a9b4..1d7c1832b5b 100644
--- a/examples/docs/es/container.md
+++ b/examples/docs/es/container.md
@@ -1,62 +1,3 @@
-
-
-
-
## Contenedor
Componentes contenedores para iniciar una estructura básica de un sitio:
@@ -72,7 +13,7 @@ De lo contrario, de forma horizontal.
``: Contenedor para pie de página.
:::tip
-Estos componentes utilizan flex para el diseño, así que asegurese que el navegador lo soporta. Además, los elementos directos de `` tienen que ser uno o más de los últimos cuatro componentes. Y el elemento padre de los últimos cuatro componentes debe ser un ``.
+Estos componentes utilizan flex para el diseño, así que asegúrese que el navegador lo soporta. Además, los elementos directos de `` tienen que ser uno o más de los últimos cuatro componentes. Y el elemento padre de los últimos cuatro componentes debe ser un ``.
:::
### Diseños comunes
diff --git a/examples/docs/es/custom-theme.md b/examples/docs/es/custom-theme.md
index 121f27b85f5..9bc36010641 100644
--- a/examples/docs/es/custom-theme.md
+++ b/examples/docs/es/custom-theme.md
@@ -1,5 +1,12 @@
## Tema personalizado
-Element utiliza la metodología BEM en CSS con la finalidad de que puedas sobrescribir los estilos fácilmente. Pero, si necesita remplazar estilos a gran escala, por ejemplo, cambiar el color del tema de azul a naranja o verde, quizás reemplazarlos uno a uno no sea lo más adecuado, para ello hay 3 maneras de modificar los estilos.
+Element utiliza la metodología BEM en CSS con la finalidad de que puedas sobrescribir los estilos fácilmente. Pero, si necesita remplazar estilos a gran escala, por ejemplo, cambiar el color del tema de azul a naranja o verde, quizás reemplazarlos uno a uno no sea lo más adecuado, para ello hay 4 maneras de modificar los estilos.
+
+### Theme Roller
+Use [Online Theme Roller](./#/es/theme) to customize all Design Tokens of global variables and components,and preview the new theme in real-time.and it can generate a complete style package based on the new theme for you to download directly (to import new style files in your project, please refer to the 'Import custom theme' or part of this section).
+
+Also, use [Theme Roller Chrome Extension](https://chrome.google.com/webstore/detail/element-theme-roller/lifkjlojflekabbmlddfccdkphlelmim),to customize theme and preview in real-time on any website developed by Element.
+
+
### Cambiando el color del tema
Si lo que se busca es cambiar el color del tema de Element, se recomienda utilizar el [sitio de visualización de temas](https://elementui.github.io/theme-chalk-preview/#/en-US). Element utiliza un color azul brillante y amigable como tema principal. Al cambiarlo, puede hacer que Element este más conectado visualmente a proyectos específicos.
@@ -14,22 +21,22 @@ Este sitio, le permitirá obtener una vista previa del tema con un nuevo color e
$--color-primary: teal;
/* Ubicación de la fuente, obligatoria */
-$--font-path: '~element-ui/lib/theme-chalk/fonts';
+$--font-path: '~@femessage/element-ui/lib/theme-chalk/fonts';
-@import "~element-ui/packages/theme-chalk/src/index";
+@import "~@femessage/element-ui/packages/theme-chalk/src/index";
```
Entonces, en el archivo principal del proyecto, importe este archivo de estilos en lugar de los estilos de Element:
```JS
import Vue from 'vue'
-import Element from 'element-ui'
+import Element from '@femessage/element-ui'
import './element-variables.scss'
Vue.use(Element)
```
:::tip
-Nota es necesario sobreescribir la ruta de la fuente por una ruta relativa de las fuentes de Element.
+Nota es necesario sobrescribir la ruta de la fuente por una ruta relativa de las fuentes de Element.
:::
### CLI para generar temas
@@ -51,7 +58,7 @@ npm i https://github.com/ElementUI/theme-chalk -D
```
#### Inicializar archivo de variables
-Después de haber instalado correctamente los paquetes, el comando `et` estará disponible en su CLI (si instalo el paquete de manera local, utilize `node_modules/.bin/et` en su lugar). Ejecute `-i` para inicializar un archivo de variables, puede especificar un nombre distinto, pero por defecto, el archivo se llama `element-variables.scss`. También puede especificar un directorio distinto.
+Después de haber instalado correctamente los paquetes, el comando `et` estará disponible en su CLI (si instalo el paquete de manera local, utilice `node_modules/.bin/et` en su lugar). Ejecute `-i` para inicializar un archivo de variables, puede especificar un nombre distinto, pero por defecto, el archivo se llama `element-variables.scss`. También puede especificar un directorio distinto.
```shell
et -i [custom output file]
@@ -61,7 +68,7 @@ et -i [custom output file]
En el archivo `element-variables.scss` podrá encontrar todas las variables que utiliza Element para definir los estilos y estos están definidos en SCSS. Aquí un ejemplo:
```css
-$--color-primary: #409EFF !default;
+$--color-primary: #2460e0 !default;
$--color-primary-light-1: mix($--color-white, $--color-primary, 10%) !default; /* 53a8ff */
$--color-primary-light-2: mix($--color-white, $--color-primary, 20%) !default; /* 66b1ff */
$--color-primary-light-3: mix($--color-white, $--color-primary, 30%) !default; /* 79bbff */
@@ -72,10 +79,10 @@ $--color-primary-light-7: mix($--color-white, $--color-primary, 70%) !default; /
$--color-primary-light-8: mix($--color-white, $--color-primary, 80%) !default; /* d9ecff */
$--color-primary-light-9: mix($--color-white, $--color-primary, 90%) !default; /* ecf5ff */
-$--color-success: #67c23a !default;
-$--color-warning: #e6a23c !default;
-$--color-danger: #f56c6c !default;
-$--color-info: #909399 !default;
+$--color-success: #02C5E2 !default;
+$--color-warning: #F5A623 !default;
+$--color-danger: #E24156 !default;
+$--color-info: #6A6E7B !default;
...
```
@@ -87,7 +94,7 @@ $--color-primary: red;
```
#### Construyendo el tema
-Después de haber modificado el archivo de variables, utilizaremos el comando `et` para construir nuestro tema. Puedes activar el modo `watch` agregando el parámetro `-w`. Y, si desea personalizar el nombre del archivo, debes agregar el parámetro `-c` seguido del nombre.
+Después de haber modificado el archivo de variables, utilizaremos el comando `et` para construir nuestro tema. Puedes activar el modo `watch` agregando el parámetro `-w`. Y, si desea personalizar el nombre del archivo, debes agregar el parámetro `-c` seguido del nombre. Por defecto, el archivo de tema construido es colocado dentro de `./theme`. Puede especificar un directorio distinto utilizando el parámetro `-o`.
```shell
et
@@ -95,12 +102,13 @@ et
> ✔ build element theme
```
+### Use custom theme
#### Importar un tema personalizado
-Por defecto, el archivo de tema construido es colocado dentro de `./theme`. Puede especificar un directorio distinto utilizando el parámetro `-o`. Importar su propio tema es igual a como si importará el tema por defecto, únicamente tiene que importar el archivo que se construyó:
+Importing your own theme is just like importing the default theme, only this time you import the file built from "Online Theme Roller" or "CLI tool":
```javascript
import '../theme/index.css'
-import ElementUI from 'element-ui'
+import ElementUI from '@femessage/element-ui'
import Vue from 'vue'
Vue.use(ElementUI)
@@ -110,12 +118,15 @@ Vue.use(ElementUI)
Si esta utilizando `babel-plugin-component` para importar bajo demanda, solo debe modificar el archivo `.babelrc` y especificar en la propiedad `styleLibraryName` la ruta en donde se encuentra localizado su tema personalizado relativo a `.babelrc`. **Nota** el carácter `~` es obligatorio:
```json
{
- "plugins": [["component", [
- {
- "libraryName": "element-ui",
- "styleLibraryName": "~theme"
- }
- ]]]
+ "plugins": [
+ [
+ "component",
+ {
+ "libraryName": "element-ui",
+ "styleLibraryName": "~theme"
+ }
+ ]
+ ]
}
```
diff --git a/examples/docs/es/data-mapper.md b/examples/docs/es/data-mapper.md
new file mode 100644
index 00000000000..c8deb33827a
--- /dev/null
+++ b/examples/docs/es/data-mapper.md
@@ -0,0 +1 @@
+## DataMapper
diff --git a/examples/docs/es/date-picker.md b/examples/docs/es/date-picker.md
index e44a9b81ebf..dd9b86beaff 100644
--- a/examples/docs/es/date-picker.md
+++ b/examples/docs/es/date-picker.md
@@ -1,115 +1,3 @@
-
-
-
## DatePicker
@@ -138,7 +26,7 @@ Date Picker básico por "día".
v-model="value2"
type="date"
placeholder="Pick a day"
- :picker-options="pickerOptions1">
+ :picker-options="pickerOptions">
@@ -147,7 +35,7 @@ Date Picker básico por "día".
export default {
data() {
return {
- pickerOptions1: {
+ pickerOptions: {
disabledDate(time) {
return time.getTime() > Date.now();
},
@@ -184,7 +72,7 @@ Date Picker básico por "día".
### Otras mediciones
-You can choose week, month, year or multiple dates by extending the standard date picker component.
+Puede elegir la semana, el mes, el año o varias fechas ampliando el componente estándar del selector de fechas.
:::demo
@@ -193,7 +81,7 @@ You can choose week, month, year or multiple dates by extending the standard dat
Week
@@ -202,7 +90,7 @@ You can choose week, month, year or multiple dates by extending the standard dat
Month
@@ -212,7 +100,7 @@ You can choose week, month, year or multiple dates by extending the standard dat
Year
@@ -221,7 +109,7 @@ You can choose week, month, year or multiple dates by extending the standard dat
Dates
@@ -231,10 +119,10 @@ You can choose week, month, year or multiple dates by extending the standard dat
export default {
data() {
return {
+ value1: '',
+ value2: '',
value3: '',
- value4: '',
- value5: '',
- value14: ''
+ value4: ''
};
}
};
@@ -254,7 +142,7 @@ Se soporta la selección de un rango de fechas.
Default
With quick options
+ :picker-options="pickerOptions">
@@ -280,7 +168,7 @@ Se soporta la selección de un rango de fechas.
export default {
data() {
return {
- pickerOptions2: {
+ pickerOptions: {
shortcuts: [{
text: 'Last week',
onClick(picker) {
@@ -307,8 +195,8 @@ Se soporta la selección de un rango de fechas.
}
}]
},
- value6: '',
- value7: ''
+ value1: '',
+ value2: ''
};
}
};
@@ -317,6 +205,74 @@ Se soporta la selección de un rango de fechas.
:::
+### Rango de mes
+
+Se admite la selección de un intervalo de un mes.
+
+:::demo Cuando se encuentra en el modo de rango, los paneles izquierdo y derecho están enlazados de forma predeterminada. Si desea que los dos paneles cambien de año en curso de forma independiente, puede utilizar el atributo unlink-panels.
+```html
+
+
+ Default
+
+
+
+
+ With quick options
+
+
+
+
+
+
+```
+:::
+
### Valor por defecto
Si el usuario no ha escogido una fecha, muestra el calendario de hoy por defecto. Puede utilizar `default-value` para fijar otra fecha. Su valor debe ser definido por `new Date()`.
@@ -329,7 +285,7 @@ Si el tipo es `daterange`, `default-value` establece el calendario del lado izqu
date
@@ -338,7 +294,7 @@ Si el tipo es `daterange`, `default-value` establece el calendario del lado izqu
daterange
Emits Date object
- Value: {{ value10 }}
+ Value: {{ value1 }}
@@ -406,9 +363,9 @@ Preste atención a la capitalización
Use value-format
- Value: {{ value11 }}
+ Value: {{ value2 }}
Timestamp
- Value:{{ value12 }}
+ Value:{{ value3 }}
- Component value:{{ value12 }}
+ Component value:{{ value }}
- module.exports = {
- data() {
- return {
- pickerOptions1: {
- shortcuts: [{
- text: 'Today',
- onClick(picker) {
- picker.$emit('pick', new Date());
- }
- }, {
- text: 'Yesterday',
- onClick(picker) {
- const date = new Date();
- date.setTime(date.getTime() - 3600 * 1000 * 24);
- picker.$emit('pick', date);
- }
- }, {
- text: 'A week ago',
- onClick(picker) {
- const date = new Date();
- date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
- picker.$emit('pick', date);
- }
- }]
- },
- pickerOptions2: {
- shortcuts: [{
- text: 'Last week',
- onClick(picker) {
- const end = new Date();
- const start = new Date();
- start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
- picker.$emit('pick', [start, end]);
- }
- }, {
- text: 'Last month',
- onClick(picker) {
- const end = new Date();
- const start = new Date();
- start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
- picker.$emit('pick', [start, end]);
- }
- }, {
- text: 'Last 3 months',
- onClick(picker) {
- const end = new Date();
- const start = new Date();
- start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
- picker.$emit('pick', [start, end]);
- }
- }]
- },
- value1: '',
- value2: '',
- value3: '',
- value4: [new Date(2000, 10, 10, 10, 10), new Date(2000, 10, 11, 10, 10)],
- value5: '',
- value6: '',
- value7: ''
- };
- }
- };
-
-
-
-
## DateTimePicker
Seleccionar fecha y tiempo juntos en un picker.
@@ -116,7 +27,7 @@ DateTimePicker se deriva de DatePicker y TimePicker. Por una explicación más d
v-model="value2"
type="datetime"
placeholder="Select date and time"
- :picker-options="pickerOptions1">
+ :picker-options="pickerOptions">
@@ -134,7 +45,7 @@ DateTimePicker se deriva de DatePicker y TimePicker. Por una explicación más d
export default {
data() {
return {
- pickerOptions1: {
+ pickerOptions: {
shortcuts: [{
text: 'Today',
onClick(picker) {
@@ -175,7 +86,7 @@ DateTimePicker se deriva de DatePicker y TimePicker. Por una explicación más d
Default
With shortcuts
Start date time 12:00:00
Start date time 12:00:00, end date time 08:00:00
- module.exports = {
- data() {
- return {
- gridData: [{
- date: '2016-05-02',
- name: 'John Smith',
- address: 'No.1518, Jinshajiang Road, Putuo District'
- }, {
- date: '2016-05-04',
- name: 'John Smith',
- address: 'No.1518, Jinshajiang Road, Putuo District'
- }, {
- date: '2016-05-01',
- name: 'John Smith',
- address: 'No.1518, Jinshajiang Road, Putuo District'
- }, {
- date: '2016-05-03',
- name: 'John Smith',
- address: 'No.1518, Jinshajiang Road, Putuo District'
- }],
- dialogVisible: false,
- dialogTableVisible: false,
- dialogFormVisible: false,
- outerVisible: false,
- innerVisible: false,
- centerDialogVisible: false,
- form: {
- name: '',
- region: '',
- date1: '',
- date2: '',
- delivery: false,
- type: [],
- resource: '',
- desc: ''
- },
- formLabelWidth: '120px'
- };
- },
- methods: {
- handleClose(done) {
- this.$confirm('Are you sure to close this dialog?')
- .then(_ => {
- done();
- })
- .catch(_ => {});
- }
- }
- };
-
-
-
-
## Dialog
Informar a usuarios preservando el estado de la página actual.
@@ -276,7 +201,7 @@ El contenido de Diálogo se puede centrar.
:::
:::tip
-The content of Dialog is lazily rendered, which means the default slot is not rendered onto the DOM until it is firstly opened. Therefore, if you need to perform a DOM manipulation or access a component using `ref`, do it in the `open` event callback.
+El contenido de Dialog se renderiza en modo lazy, lo que significa que la ranura por defecto no se renderiza en el DOM hasta que se abre por primera vez. Por lo tanto, si necesita realizar una manipulación DOM o acceder a un componente mediante ref, hágalo en el callback del evento `open`.
:::
:::tip
@@ -304,6 +229,7 @@ Si la variable ligada a `visible` se gestiona en el Vuex store, el `.sync` no pu
| show-close | si mostrar un botón de cerrar | boolean | — | true |
| before-close | una devolución de llamada antes de que se cierre el cuadro de diálogo, y evitar cerrar el cuadro de diálogo | función(done) `done`se usa para cerrar el diálog | — | — |
| center | si alinear el encabezado y el pie de página en el centro | boolean | — | false |
+| destroy-on-close | Destruir elementos en Dialog cuando se cierra | boolean | — | false |
### Slots
@@ -317,7 +243,7 @@ Si la variable ligada a `visible` se gestiona en el Vuex store, el `.sync` no pu
| Nombre de Evento | Descripcíon | Parámetros |
| ---------------- | ---------------------------------------- | ---------- |
| open | se activa cuando se abre el cuadro de Diálogo | — |
-| opened | se activa cuando la animacion de apertura del Dialog termina. | — |
+| opened | se activa cuando la animación de apertura del Dialog termina. | — |
| close | se dispara cuando el Diálogo se cierra | — |
| closed | se activa cuando finaliza la animación de cierre del Diálog | — |
diff --git a/examples/docs/es/divider.md b/examples/docs/es/divider.md
new file mode 100644
index 00000000000..847b1efce8a
--- /dev/null
+++ b/examples/docs/es/divider.md
@@ -0,0 +1,61 @@
+## Divider
+
+La línea divisoria que separa el contenido.
+
+### Uso básico
+
+Divide el texto de los diferentes párrafos.
+
+:::demo
+```html
+
+
+ I sit at my window this morning where the world like a passer-by stops for a moment, nods to me and goes.
+
+ There little thoughts are the rustle of leaves; they have their whisper of joy in my mind.
+
+
+```
+:::
+
+### Contenido personalizado
+
+Puede personalizar el contenido en la línea divisoria.
+
+
+:::demo
+```html
+
+
+ What you are you do not see, what you see is your shadow.
+ Rabindranath Tagore
+ I cannot choose the best. The best chooses me.
+
+ My wishes are fools, they shout across thy song, my Master. Let me but listen.
+ Rabindranath Tagore
+
+
+```
+:::
+
+### División vertical
+
+:::demo
+```html
+
+
+ Rain
+
+ Home
+
+ Grass
+
+
+```
+:::
+
+### Divider Atributos
+| Atributo | Descripción | Tipo | Valores aceptados | Por defecto |
+|------------- |---------------- |---------------- |---------------------- |-------- |
+| direction | indica la dirección del separador | string | horizontal / vertical | horizontal |
+| content-position | personaliza el contenido en la línea divisoria | String | left / right / center | center |
\ No newline at end of file
diff --git a/examples/docs/es/drawer.md b/examples/docs/es/drawer.md
new file mode 100644
index 00000000000..cd4b0ff5698
--- /dev/null
+++ b/examples/docs/es/drawer.md
@@ -0,0 +1,305 @@
+## Drawer
+
+A veces, `Dialog` no siempre satisface nuestros requisitos, digamos que tiene un formulario masivo, o necesita espacio para mostrar algo como `terminos & condiciones`, `Drawer` tiene una API casi idéntica a `Dialog`, pero introduce una experiencia de usuario diferente.
+
+### Uso básico
+
+Llamada de un drawer temporal, desde varias direcciones
+
+:::demo Debe establecer `visible` para `Drawer` como lo hace `Dialog` para controlar la visibilidad. `visible` es del tipo `boolean`. `Drawer` tiene partes: `title` & `body`, el `title` es un slot con nombre, también puede establecer el título a través de un atributo llamado `title`, por defecto a una cadena vacía, la parte `body` es el área principal de `Drawer`, que contiene contenido definido por el usuario. Al abrir, `Drawer` se expande desde la **esquina derecha a la izquierda** cuyo tamaño es **30%** de la ventana del navegador por defecto. Puede cambiar ese comportamiento predeterminado estableciendo los atributos `direction` y `size`. Este caso de demostración también muestra cómo utilizar la API `before-close`, consulte la sección Atributos para obtener más detalles.
+
+```html
+
+ left to right
+ right to left
+ top to bottom
+ bottom to top
+
+
+
+ open
+
+
+
+ Hi, there!
+
+
+
+```
+:::
+
+### No Title
+
+When you no longer need a title, you can remove title from drawer.
+
+:::demo Set the `withHeader` attribute to **false**, you can remove the title from drawer, thus your drawer can have more space on screen. If you want to be accessible, make sure to set the `title` attribute.
+
+```html
+
+ open
+
+
+
+ Hi there!
+
+
+
+```
+:::
+
+### Personalizar el contenido
+
+Al igual que `Dialog`, `Drawer` puede hacer muchas interacciones diversas.
+
+:::demo
+
+```html
+Open Drawer with nested table
+Open Drawer with nested form
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+:::
+
+### Drawer anidados
+
+También puede tener varias capas de `Drawer` al igual que con `Dialog`.
+:::demo Si necesita varios drawer en diferentes capas, debe establecer el atributo `append-to-body` en **true**
+
+```html
+
+
+ open
+
+
+
+
+ Click me!
+
+ _(:зゝ∠)_
+
+
+
+
+
+
+```
+:::
+
+:::tip
+
+El contenido dentro del Drawer debe ser renderizado de forma perezosa, lo que significa que el contenido dentro del Drawer no afectará al rendimiento inicial del renderizado, por lo que cualquier operación DOM debe realizarse a través de `ref' o después de que se emita el evento `open'.
+
+:::
+
+:::tip
+
+El Drawer proporciona una API llamada "destroyOnClose", que es una variable de bandera que indica que debe destruir el contenido hijo dentro del Drawer después de que se haya cerrado. Puede utilizar esta API cuando necesite que su ciclo de vida "mounted" sea llamado cada vez que se abra el Cajón.
+
+:::
+
+:::tip
+
+Si la variable `visible` se gestiona en el almacén de Vuex, el `.sync` no puede funcionar correctamente. En este caso, elimine el modificador `.sync`, escuche los eventos `open` y `close` de Drawer, y envíe mutaciones Vuex para actualizar el valor de esa variable en los manejadores de eventos.
+
+:::
+
+### Atributos de Drawer
+
+| Parámetros | Descripción | Tipo | Valores aceptados | Por defecto |
+|---------- |-------------- |---------- |-------------------------------- |-------- |
+| append-to-body | Los controles deberían insertar Drawer en el elemento DocumentBody, los Drawer anidados deben asignar este parámetro a **true** | boolean | — | false |
+| before-close | Si está configurado, el procedimiento de cierre se detendrá. | function(done), done es un tipo de función que acepta un booleano como parámetro, una llamada hecha con true o sin parámetro abortará el procedimiento de cierre. | — | — |
+| close-on-press-escape | Indica si el Drawer puede cerrarse pulsando ESC | boolean | — | true |
+| custom-class | Nombre extra de clase para Drawer | string | — | — |
+| destroy-on-close | Indica si los children deben ser destruidos después de cerrar el Drawer. | boolean | - | false |
+| modal | Mostrará una capa de sombra | boolean | — | true |
+| modal-append-to-body | Indica si se debe insertar una capa de sombreado en el elemento DocumentBody | boolean | — | true |
+| direction | Dirección de apertura del Drawer | Direction | rtl / ltr / ttb / btt | rtl |
+| show-close | Se mostrará el botón de cerrar en la parte superior derecha del Drawer | boolean | — | true |
+| size | Tamaño del Drawer. Si el Drawer está en modo horizontal, afecta a la propiedad width, de lo contrario afecta a la propiedad height, cuando el tamaño es tipo `number`, describe el tamaño por unidad de píxeles; cuando el tamaño es tipo `string`, se debe usar con notación `x%`, de lo contrario se interpretará como unidad de píxeles. | number / string | - | '30%' |
+| title | El título del Drawer, también se puede establecer por slot con nombre, las descripciones detalladas se pueden encontrar en el formulario de slot. | string | — | — |
+| visible | Si se muestra el Drawer, también soporta la notación `.sync` | boolean | — | false |
+| wrapperClosable | Indica si el usuario puede cerrar el Drawer haciendo clic en la capa de sombreado. | boolean | - | true |
+| withHeader | Flag that controls the header section's existance, default to true, when withHeader set to false, both `title attribute` and `title slot` won't work | boolean | - | true |
+
+### Drawer Slot's
+
+| Nombre | Descripción |
+|------|--------|
+| — | El contenido del Drawer |
+| title | El titulo de la sección del Drawer |
+
+### Métodos Drawer
+
+| Nombre | Descripción |
+| ---- | --- |
+| closeDrawer | Para cerrar el Drawer, este método llamará `before-close`. |
+
+### Eventos Drawer
+
+| Nombre | Descripción | Parámetros |
+|---------- |-------- |---------- |
+| open | Se activa antes de que comience la animación de apertura del Drawer. | — |
+| opened | Se activa cuando finaliza la animación de apertura del Drawer. | — |
+| close | Se activa antes de que comience la animación de cierre del Drawer. | — |
+| closed | Se activa después de que finaliza la animación de cierre del Drawer. | — |
diff --git a/examples/docs/es/dropdown.md b/examples/docs/es/dropdown.md
index f1d87f17656..f8efc5fa926 100644
--- a/examples/docs/es/dropdown.md
+++ b/examples/docs/es/dropdown.md
@@ -1,55 +1,3 @@
-
-
-
## Dropdown
Menú conmutable para visualizar listas de enlaces y acciones.
@@ -75,7 +23,7 @@ Pase el ratón por el menú desplegable para desplegarlo y obtener más acciones
-
## Form
Form consiste en `input`, `radio`, `select`, `checkbox`, etcétera. Con el formulario, usted puede recopilar, verificar y enviar datos.
@@ -253,7 +6,7 @@ Form consiste en `input`, `radio`, `select`, `checkbox`, etcétera. Con el formu
Incluye todo tipo de entradas, tales como `input`, `select`, `radio` y `checkbox`.
-:::demo En cada componente `form`, necesita un campo `form-item` para que sea el contenedor del item.
+:::demo En cada componente `form`, necesita un campo `form-item` para que sea el contenedor del ítem.
```html
@@ -272,7 +25,7 @@ Incluye todo tipo de entradas, tales como `input`, `select`, `radio` y `checkbox
-
-
+
@@ -445,7 +198,7 @@ El componente `form` le permite verificar sus datos, ayudándole a encontrar y c
-
-
+
@@ -542,19 +295,19 @@ Este ejemplo muestra cómo personalizar sus propias reglas de validación para f
:::demo Aquí utilizamos el `status-icon` para reflejar el resultado de la validación como un icono.
```html
-
+
-
+
-
+
-
+
- Submit
- Reset
+ Submit
+ Reset
-
-
+
+
-
-
-
+
+
+
-
-
-
## Icon
Element proporciona un conjunto de iconos propios.
@@ -93,7 +20,7 @@ Simplemente asigna el nombre de la clase a `el-icon-iconName`.
### Iconos
- -
+
-
{{'el-icon-' + name}}
diff --git a/examples/docs/es/image.md b/examples/docs/es/image.md
new file mode 100644
index 00000000000..7d8d78d7627
--- /dev/null
+++ b/examples/docs/es/image.md
@@ -0,0 +1,165 @@
+## Image
+Además de las características nativas de img, soporte de carga perezosa, marcador de posición personalizado y fallo de carga, etc.
+
+### Uso básico
+
+:::demo Indica cómo se debe cambiar el tamaño de la imagen para que se ajuste a su contenedor por ajuste, igual que el ajuste de objeto nativo. [object-fit](https://developer.mozilla.org/es/docs/Web/CSS/object-fit)。
+
+```html
+
+
+ {{ fit }}
+
+
+
+
+
+```
+:::
+
+### Placeholder
+
+:::demo Personalice el placeholder del contenido mientras la imagen aun no ha sido cargada vía `slot = placeholder`
+```html
+
+
+ Default
+
+
+
+ Custom
+
+
+ Loading...
+
+
+
+
+
+
+```
+:::
+
+### Fallo de carga
+
+:::demo Personalice el contenido cuando ocurra algún error al cargar la imagen vía `slot = error`
+```html
+
+
+ Default
+
+
+
+ Custom
+
+
+
+
+
+
+
+```
+:::
+
+### Lazy Load
+
+:::demo Use lazy load vía `lazy = true`. La imagen se cargará hasta que se desplace a la vista cuando esté configurada. Puede indicar el contenedor de scroll que añade el oyente de scroll vía `scroll-container`. Si no está definido, será el contenedor padre más cercano cuya propiedad overflow es auto o scroll.
+
+```html
+
+
+
+
+
+```
+:::
+
+### Vista previa de la imagen
+
+:::demo permitir una vista previa grande de la imagen configurando la prop `previewSrcList`.
+```html
+
+
+
+
+
+
+```
+:::
+
+### Atributos
+| Atributo | Descripción | Tipo | Valores aceptados | Por defecto |
+|---------- |-------- |---------- |------------- |-------- |
+| src | origen de la imagen, igual que en nativo | string | — | - |
+| fit | Indica como la imagen debe adaptarse al contenedor, lo mismo que [object-fit](https://developer.mozilla.org/es/docs/Web/CSS/object-fit) | string | fill / contain / cover / none / scale-down | - |
+| alt | alt nativo | string | - | - |
+| referrer-policy | referrerPolicy nativo | string | - | - |
+| lazy | si se usara lazy load | boolean | — | false |
+| scroll-container | El contenedor para añadir el scroll listener cuando se utiliza lazy load | string / HTMLElement | — | El contenedor padre más cercano cuya propiedad de desbordamiento es auto o scroll |
+| preview-src-list | permitir una vista previa grande de la imagen | Array | — | - |
+| z-index | establecer el z-index de la vista previa de la imagen | Number | — | 2000 |
+
+### Eventos
+| Nombre del evento | Descripción | Parámetros |
+|---------- |-------- |---------- |
+| load | Igual que el load nativo | (e: Event) |
+| error | Igual que el error nativo | (e: Error) |
+
+### Slots
+| Nombre del slot | Descripción |
+|---------|-------------|
+| placeholder | Se activa cuando la imagen se carga |
+| error | Se activa cuando la carga de la imagen falla |
+
+
diff --git a/examples/docs/es/infiniteScroll.md b/examples/docs/es/infiniteScroll.md
new file mode 100644
index 00000000000..8b121c8fc47
--- /dev/null
+++ b/examples/docs/es/infiniteScroll.md
@@ -0,0 +1,88 @@
+## InfiniteScroll
+
+Cargar más datos mientras se llega al final de la página
+
+### Uso básico
+Añada `v-infinite-scroll` a la lista para ejecutar automáticamente el método de carga cuando se desplace hacia abajo.
+:::demo
+
+```html
+
+
+ - {{ i }}
+
+
+
+
+```
+:::
+
+### Deshabilite Loading
+
+:::demo
+```html
+
+
+
+ - {{ i }}
+
+ Loading...
+ No more
+
+
+
+
+```
+:::
+
+
+### Atributos
+
+| Atributos | Descripción | Tipo | Valores aceptados | Por defecto |
+| -------------- | ------------------------------ | --------- | ------------------------------------ | ------- |
+| infinite-scroll-disabled | si esta disabled | boolean | - |false |
+| infinite-scroll-delay | retraso en milisegundos | number | - |200 |
+| infinite-scroll-distance| distancia de activación (px) | number |- |0 |
+| infinite-scroll-immediate |Si se debe ejecutar el método de carga inmediatamente, en caso de que el contenido no se pueda rellenar en el estado inicial. | boolean | - |true |
diff --git a/examples/docs/es/input-email.md b/examples/docs/es/input-email.md
new file mode 100644
index 00000000000..b7d6d9f8798
--- /dev/null
+++ b/examples/docs/es/input-email.md
@@ -0,0 +1 @@
+## InputEmail
diff --git a/examples/docs/es/input-id-card.md b/examples/docs/es/input-id-card.md
new file mode 100644
index 00000000000..ab7abe5624d
--- /dev/null
+++ b/examples/docs/es/input-id-card.md
@@ -0,0 +1 @@
+## InputIdCard
diff --git a/examples/docs/es/input-number.md b/examples/docs/es/input-number.md
index e42028d0c32..6bdca96e192 100644
--- a/examples/docs/es/input-number.md
+++ b/examples/docs/es/input-number.md
@@ -1,51 +1,20 @@
-
-
-
-
## InputNumber
Input de valores numéricos con un rango personalizable.
### Uso básico
-:::demo Vincule una variable con `v-model` en el elemento y estará listo.
+:::demo Vincule una variable con `v-model` en el elemento `` y estará listo.
```html
-
+
+```
+:::
+
+### Precisión
+
+:::demo El atributo `precision` aplica presicion al valor del value.
+
+```html
+
+
+
+
-
-
+:::warning
+Input es un componente controlado, **siempre muestra el valor de enlace Vue**.
-## Input
+Bajo circunstancias normales, el evento "input" debe ser manejado. Su handler debe actualizar el valor de enlace del componente (o usar `v-model`). De lo contrario, el valor del cuadro de entrada no cambiará.
-Ingresa datos usando el ratón o teclado.
+No admite modificadores `v-model`.
+:::
### Uso básico
@@ -173,7 +37,7 @@ export default {
```html
@@ -181,7 +45,7 @@ export default {
export default {
data() {
return {
- input1: ''
+ input: ''
}
}
}
@@ -190,6 +54,48 @@ export default {
:::
+### Limpiable
+
+:::demo Marque que el input puede ser limpiable con el atributo `clearable`.
+
+```html
+
+
+
+
+```
+:::
+
+### Password box
+
+:::demo Haga un input de contraseña conmutable con el atributo `show-password`.
+
+```html
+
+
+
+```
+:::
+
### Input con icono
Añada un icono para indicar el tipo de Input.
@@ -202,24 +108,24 @@ Añada un icono para indicar el tipo de Input.
+ v-model="input1">
+ v-model="input2">
Using slots
+ v-model="input3">
+ v-model="input4">
@@ -235,10 +141,10 @@ Añada un icono para indicar el tipo de Input.
export default {
data() {
return {
+ input1: '',
input2: '',
- input21: '',
- input22: '',
- input23: ''
+ input3: '',
+ input4: ''
}
}
}
@@ -249,7 +155,7 @@ export default {
### Textarea
-Redimensiona para introducir varias líneas de información de texto. Agrege el atributo `type="textarea"` para cambiar el `input` al tipo nativo `textarea`.
+Redimensiona para introducir varias líneas de información de texto. Agregue el atributo `type="textarea"` para cambiar el `input` al tipo nativo `textarea`.
:::demo Controle la altura ajustando el prop `rows`.
@@ -274,9 +180,9 @@ export default {
:::
-### Textarea tamaño automatico
+### Textarea tamaño automático
-El ajuste del prop `autosize` en el tipo de Input textarea hace que la altura se ajuste automáticamente en función del contenido. Se puede proporcionar opciones en un objeto para autodimensionar y especificar el número mínimo y máximo de líneas que el textarea puede ajustar automáticamente.
+El ajuste del prop `autosize` en el tipo de Input textarea hace que la altura se ajuste automáticamente en función del contenido. Se puede proporcionar opciones en un objeto para auto dimensionar y especificar el número mínimo y máximo de líneas que el textarea puede ajustar automáticamente.
:::demo
@@ -285,22 +191,22 @@ El ajuste del prop `autosize` en el tipo de Input textarea hace que la altura se
type="textarea"
autosize
placeholder="Please input"
- v-model="textarea2">
+ v-model="textarea1">
+ v-model="textarea2">
+```
+:::
+
### Input atributos
| Atributo | Descripción | Tipo | Valores aceptados | Por defecto |
| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------- | --------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
| type | tipo de input | string | text, textarea y otros [tipos de entrada nativos](https://developer.mozilla.org/es/docs/Web/HTML/Elemento/input#Form_%3Cinput%3E_types) | text |
-| value | valor enlazado | string / number | — | — |
+| value / v-model | valor enlazado | boolean / string / number | — | — |
| maxlength | igual que `maxlength` en el input nativo | number | — | — |
| minlength | igual que `minlength` en el input nativo | number | — | — |
+| show-word-limit | Si se muestra el contador de palabras, solamente funciona con los tipos `text` o `textarea` | boolean | — | false |
| placeholder | placeholder del Input | string | — | — |
+| clearable | si debe mostrar el botón de limpieza | boolean | — | false |
+| show-password | si debe mostrar la posibilidad de conmutación de password input | boolean | — | false |
| disabled | si esta deshabilitado | boolean | — | false |
| size | tamaño del input, esto no funciona cuando `type` no es textarea | string | medium / small / mini | — |
| prefix-icon | clase del icono de prefijo | string | — | — |
| suffix-icon | clase del icono de sufijo | string | — | — |
-| rows | número de filas, sólo funciona cuando `type` es 'textarea'. | number | — | 2 |
-| autosize | si textarea tiene una altura adaptativa, sólo funciona cuando el`type` es 'textarea'. Puede aceptar un objeto, p. ej. { minRows: 2, maxRows: 6 } | boolean / object | — | false |
+| rows | número de filas, sólo funciona cuando `type` es `textarea`. | number | — | 2 |
+| autosize | si textarea tiene una altura adaptativa, sólo funciona cuando el`type` es `textarea`. Puede aceptar un objeto, p. ej. { minRows: 2, maxRows: 6 } | boolean / object | — | false |
| autocomplete | igual que `autocomplete` en el input nativo | string | on/off | off |
-| auto-complete | @DEPRECATED en el proximo cambio mayor de version | string | on/off | off |
+| auto-complete | @DEPRECATED en el próximo cambio mayor de versión | string | on/off | off |
| name | igual que `name` en el input nativo | string | — | — |
| readonly | igual que `readonly` en el input nativo | boolean | — | false |
| max | igual que `max` en el input nativo | — | — | — |
@@ -655,7 +600,7 @@ Búsqueda de datos desde el servidor.
| autofocus | igual que `autofocus` en el input nativo | boolean | — | false |
| form | igual que `form` en el input nativo | string | — | — |
| label | texto de la etiqueta | string | — | — |
-| tabindex | orden de tabulacion para el Input | string | - | - |
+| tabindex | orden de tabulación para el Input | string | - | - |
### Input slots
@@ -668,12 +613,12 @@ Búsqueda de datos desde el servidor.
### Input eventos
-| Nombre | Descripción | Parametros |
-| ------ | ------------------------------------------------------------------------------------------ | ------------------------- |
-| blur | Se dispara cuando se pierde el foco | (event: Event) |
-| focus | Se dispara cuando se obtiene el foco | (event: Event) |
-| change | se activa cuando cambia el valor de entrada | (value: string \| number) |
-| clear | se dispara cuando la entrada es borrada por el botón generado por el atributo "clearable". | — |
+| Nombre | Descripción | Parametros |
+| ------ | ------------------------------------------------------------ | ------------------------- |
+| blur | Se dispara cuando se pierde el foco | (event: Event) |
+| focus | Se dispara cuando se obtiene el foco | (event: Event) |
+| change | se activa cuando cambia el valor de entrada | (value: string \| number) |
+| clear | se dispara cuando la entrada es borrada por el botón generado por el atributo `clearable`. | — |
### Input Metodo
@@ -704,7 +649,8 @@ Búsqueda de datos desde el servidor.
| suffix-icon | suffix icon class | string | — | — |
| hide-loading | si se debe ocultar el icono de loading en la búsqueda remota | boolean | — | false |
| popper-append-to-body | si añadir el desplegable al cuerpo. Si la posición del menú desplegable es incorrecta, puede intentar establecer este prop a false | boolean | - | true |
-| validate-event | si se debe lanzar la validación de formulario | boolean | - | - |
+| validate-event | si se debe lanzar la validación de formulario | boolean | - | true |
+| highlight-first-item | si se debe resaltar el primer elemento en las sugerencias de búsqueda remota de forma predeterminada | boolean | - | false |
### Autocomplete Slots
@@ -717,15 +663,15 @@ Búsqueda de datos desde el servidor.
### Autocomplete Scoped Slot
-| Name | Description |
-| ---- | ---------------------------------------------------------------------------------------- |
-| — | Contenido personalizado para el input de sugerencias. El parametro del scope es { item } |
+| Name | Description |
+| ---- | ------------------------------------------------------------ |
+| — | Contenido personalizado para el input de sugerencias. El parámetro del scope es { ítem } |
### Autocomplete Eventos
-| Nombre | Descripción | Parametros |
-| ------ | ------------------------------------------------ | ------------------------------------------- |
-| select | se dispara cuando se hace click a una sugerencia | sugerencia en la que se está haciendo click |
+| Nombre | Descripción | Parametros |
+| ------ | ----------------------------------------------- | ------------------------------------------ |
+| select | se dispara cuando se hace clic a una sugerencia | sugerencia en la que se está haciendo clic |
### Autocomplete Metodo
diff --git a/examples/docs/es/installation.md b/examples/docs/es/installation.md
index 412657029ae..24c7272ae2c 100644
--- a/examples/docs/es/installation.md
+++ b/examples/docs/es/installation.md
@@ -2,7 +2,7 @@
### npm
-Instalar mediante npm es la forma recomendada ya que se integra facilmente con [webpack](https://webpack.js.org/).
+Instalar mediante npm es la forma recomendada ya que se integra fácilmente con [webpack](https://webpack.js.org/).
```shell
npm i element-ui -S
@@ -10,13 +10,13 @@ npm i element-ui -S
### CDN
-Obtenga la última versión desde [unpkg.com/element-ui](https://unpkg.com/element-ui/) , e importe el JavaScript y los archivos CSS en su página.
+Obtenga la última versión desde [unpkg.com/element-ui](https://unpkg.com/@femessage/element-ui/) , e importe el JavaScript y los archivos CSS en su página.
```html
-
+
-
+
```
##Tip
@@ -24,8 +24,11 @@ Recomendamos a nuestros usuarios congelar la versión de Elemet cuando usas un C
### Hello world
-Si esta usando un CDN, una página con Hello-World es fácil con Element. [Online Demo](https://jsfiddle.net/hzfpyvg6/14/)
+Si esta usando un CDN, una página con Hello-World es fácil con Element. [Online Demo](https://codepen.io/ziyoung/pen/rRKYpd)
-
+
-Si esta usando npm y desea combinarlo con webpack, por favor continue a la siguiente página: [Quick Start](/#/es/component/quickstart)
+Si esta usando npm y desea combinarlo con webpack, por favor continué a la siguiente página: [Quick Start](/#/es/component/quickstart)
diff --git a/examples/docs/es/layout.md b/examples/docs/es/layout.md
index 55a8ee6be6e..90943b8e0f2 100644
--- a/examples/docs/es/layout.md
+++ b/examples/docs/es/layout.md
@@ -1,34 +1,3 @@
-
-
## Layout
Rápido y facilmente crea un layout básico con 24 columnas.
@@ -346,7 +315,7 @@ Tomando el ejemplo de Bootstrap responsive design, existen 5 breakpoints: xs, sm
Adicionalmente, Element provee una serie de clases para ocultar elementos dadas ciertas condiciones. Estas clases pueden se agregadas a cualquier elemento del DOM o un elemento propio. Necesita importar el siguiente archivo CSS para usar estas clases:
```js
-import 'element-ui/lib/theme-chalk/display.css';
+import '@femessage/element-ui/lib/theme-chalk/display.css';
```
Las clases son:
diff --git a/examples/docs/es/link.md b/examples/docs/es/link.md
new file mode 100644
index 00000000000..7eca3f9a72f
--- /dev/null
+++ b/examples/docs/es/link.md
@@ -0,0 +1,77 @@
+## Link
+
+Texto con hipervinculo
+
+### Básico
+
+Texto con hipervinculo básico
+:::demo
+
+```html
+
+ default
+ primary
+ success
+ warning
+ danger
+ info
+
+```
+
+:::
+
+### Deshabilitar
+
+Deshabilita el hipervinculo
+:::demo
+
+```html
+
+ default
+ primary
+ success
+ warning
+ danger
+ info
+
+```
+
+:::
+
+### Subrayado
+
+Subrayado del hipervinculo
+:::demo
+
+```html
+
+ Without Underline
+ With Underline
+
+```
+
+:::
+
+### Icono
+
+Hipervinculo con icono
+:::demo
+
+```html
+
+ Edit
+ Check
+
+```
+
+:::
+
+### Atributos
+
+| Atributo | Descripción | Tipo | Opciones | Por defecto |
+| --------- | ---------------------------------------------------- | ------- | ------------------------------------------- | ----------- |
+| type | tipo | string | primary / success / warning / danger / info | default |
+| underline | si el hipervinculo estara subrayado | boolean | — | true |
+| disabled | si el componente esta deshabilitado | boolean | — | false |
+| href | lo mismo que el valor nativo del hipervinculo `href` | string | — | - |
+| icon | nombre de clase del icono | string | — | - |
diff --git a/examples/docs/es/loading-button.md b/examples/docs/es/loading-button.md
new file mode 100644
index 00000000000..53b7e055691
--- /dev/null
+++ b/examples/docs/es/loading-button.md
@@ -0,0 +1 @@
+## LoadingButton
diff --git a/examples/docs/es/loading.md b/examples/docs/es/loading.md
index 542c9034be5..1ee387c2851 100644
--- a/examples/docs/es/loading.md
+++ b/examples/docs/es/loading.md
@@ -1,54 +1,3 @@
-
-
-
-
## Cargando
Se muestra la animación mientras se cargan los datos.
@@ -117,11 +66,11 @@ Muestra una animación en un contenedor (como en una tabla) mientras se cargan l
Puede personalizar el texto de carga, spinner de carga y color de fondo.
-:::demo Agrege el atributo `element-loading-text` al elemento en el que `v-loading` está vinculado, y su valor se mostrará debajo del spinner. Del mismo modo, `element-loading-spinner` y `element-loading-background` son para personalizar el nombre de la clase del spinner y el color de fondo.
+:::demo Agregue el atributo `element-loading-text` al elemento en el que `v-loading` está vinculado, y su valor se mostrará debajo del spinner. Del mismo modo, `element-loading-spinner` y `element-loading-background` son para personalizar el nombre de la clase del spinner y el color de fondo.
```html
Como directiva
@@ -198,7 +147,7 @@ Muestra una animación de pantalla completa mientras se cargan los datos
}
},
methods: {
- openFullScreen() {
+ openFullScreen1() {
this.fullscreenLoading = true;
setTimeout(() => {
this.fullscreenLoading = false;
@@ -226,7 +175,7 @@ Muestra una animación de pantalla completa mientras se cargan los datos
Puede invocar el componente con un servicio. Importe el servicio:
```javascript
-import { Loading } from 'element-ui';
+import { Loading } from '@femessage/element-ui';
```
Invocar:
```javascript
diff --git a/examples/docs/es/lr-container.md b/examples/docs/es/lr-container.md
new file mode 100644
index 00000000000..980502df7ac
--- /dev/null
+++ b/examples/docs/es/lr-container.md
@@ -0,0 +1 @@
+## LrContainer
diff --git a/examples/docs/es/menu.md b/examples/docs/es/menu.md
index 2338a410c70..4606416d25d 100644
--- a/examples/docs/es/menu.md
+++ b/examples/docs/es/menu.md
@@ -1,56 +1,3 @@
-
-
-
-
## NavMenu
Menú que provee la navegación para tu sitio.
@@ -304,12 +251,12 @@ NavMenu vertical puede ser colapsado.
| collapse | si el menú está colapsado (solo en modo vertical) | boolean | — | false |
| background-color | color de fondo del menú (formato hexadecimal) | string | — | #ffffff |
| text-color | color de texto del menú (formato hexadecimal) | string | — | #303133 |
-| active-text-color | color de text del menu-item activo (formato hexadecimal) | string | — | #409EFF |
+| active-text-color | color de text del menu-item activo (formato hexadecimal) | string | — | #2460e0 |
| default-active | índice del menu-item activo | string | — | — |
| default-openeds | arreglo que contiene las llaves del sub-menus activo | Array | — | — |
| unique-opened | si solo un submenu puede ser activo | boolean | — | false |
| menu-trigger | como dispara eventos sub-menus, solo funciona cuando `mode` es 'horizontal' | string | hover / click | hover |
-| router | si el modo `vue-router` está activado. Si es verdader, índice será usado como 'path' para activar la ruta | boolean | — | false |
+| router | si el modo `vue-router` está activado. Si es verdadero, el índice será usado como 'path' para activar la ruta | boolean | — | false |
| collapse-transition | si se debe permitir collapse transition | boolean | — | true |
### Métodos Menu
@@ -333,8 +280,8 @@ NavMenu vertical puede ser colapsado.
### Atributos SubMenu
| Atributo | Descripción | Tipo | Valores aceptados | Por defecto |
| ------------ | ---------------------------------------- | ------ | ----------------- | ----------- |
-| index | identificador único | string | — | — |
-| popper-class | nombre personalizado de la clase del menu popup | string | — | — |
+| index | identificador único | string/null | — | null |
+| popper-class | nombre personalizado de la clase del menú popup | string | — | — |
| show-timeout | tiempo de espera antes de mostrar un submenú | number | — | 300 |
| hide-timeout | tiempo de espera antes de ocultar un submenú | number | — | 300 |
| disabled | si esta `disabled` el sub-menu | boolean | — | false |
diff --git a/examples/docs/es/message-box-center.md b/examples/docs/es/message-box-center.md
new file mode 100644
index 00000000000..c331ef7e5a2
--- /dev/null
+++ b/examples/docs/es/message-box-center.md
@@ -0,0 +1 @@
+## MessageBoxCenter
diff --git a/examples/docs/es/message-box.md b/examples/docs/es/message-box.md
index 05015d2206a..fbeb38a2990 100644
--- a/examples/docs/es/message-box.md
+++ b/examples/docs/es/message-box.md
@@ -1,160 +1,15 @@
-
-
## MessageBox
-Un conjunto de cajas modales simulando un sistema de message box, principalmente para alertar informacion, confirmar operaciones y mostrar mensajes de aviso.
+Un conjunto de cajas modales simulando un sistema de message box, principalmente para alertar información, confirmar operaciones y mostrar mensajes de aviso.
:::tip
-Por diseño los message box nos proveen de simulaciones de sistemas como los componentes `alert`, `confirm` y `prompt`,entonces su contenido debería ser simple. para contenido mas complejo, por favor utilize el componente Dialog.
+Por diseño los message box nos proveen de simulaciones de sistemas como los componentes `alert`, `confirm` y `prompt`,entonces su contenido debería ser simple. para contenido mas complejo, por favor utilice el componente Dialog.
:::
### Alert
Alert interrumpe las operaciones realizadas hasta que el usuario confirme la alerta.
-:::demo Desplegar una alerta utilizando el metodo `$alert`. Simula el sistema `alert`, y no puede ser cerrado al presionar la tecla ESC o al dar click fuera de la caja. En este ejemplo, dos parametros son recibidos `message` y `title`. Vale la pena mencionar que cuando la caja es cerrada, regresa un objeto `Promise` para su procesamiento posteriormente. Si no estas seguro si el navegador soporta `Promise`, deberias importar una libreria de terceros de polyfill o utilizar callbacks.
+:::demo Desplegar una alerta utilizando el método `$alert`. Simula el sistema `alert`, y no puede ser cerrado al presionar la tecla ESC o al dar clic fuera de la caja. En este ejemplo, dos parámetros son recibidos `message` y `title`. Vale la pena mencionar que cuando la caja es cerrada, regresa un objeto `Promise` para su procesamiento posteriormente. Si no estas seguro si el navegador soporta `Promise`, deberías importar una librería de terceros de polyfill o utilizar callbacks.
```html
@@ -183,20 +38,20 @@ Alert interrumpe las operaciones realizadas hasta que el usuario confirme la ale
### Confirm
-Confirm es utilizado para preguntar al usuario y recibir una confirmacion.
+Confirm es utilizado para preguntar al usuario y recibir una confirmación.
-:::demo Llamando al metodo `$confirm` para abrir el componente confirm, y simula el sistema `confirm`. Tambien podemos personalizar a gran medida el componente Message Box al mandar un tercer atributo llamado `options` que es literalmente un objeto. El atributo `type` indica el tipo de mensaje, y su valor puede ser `success`, `error`, `info` y `warning`. Se debe tener en cuenta que el segundo atributo `title` debe ser de tipo `string`, y si es de tipo `object`, sera manejado como el atributo `options`. Aqui utilizamos `Promise` para manejar posteriormente el proceso.
+:::demo Llamando al método `$confirm` para abrir el componente confirm, y simula el sistema `confirm`. También podemos personalizar a gran medida el componente Message Box al mandar un tercer atributo llamado `options` que es literalmente un objeto. El atributo `type` indica el tipo de mensaje, y su valor puede ser `success`, `error`, `info` y `warning`. Se debe tener en cuenta que el segundo atributo `title` debe ser de tipo `string`, y si es de tipo `object`, sera manejado como el atributo `options`. Aquí utilizamos `Promise` para manejar posteriormente el proceso.
```html
- Click to open the Message Box
+ Click to open the Message Box
-
## Message
-Utilizado para mostrar retroalimentacion despues de una actividad. La diferencia con el componente Notification es que este ultimo es utilizado para mostrar una notificacion pasiva a nivel de sistema.
+Utilizado para mostrar retroalimentación después de una actividad. La diferencia con el componente Notification es que este ultimo es utilizado para mostrar una notificación pasiva a nivel de sistema.
-### Uso basico
+### Uso básico
-Se muestra en la parte superior de la pagina y desaparece despues de 3 segundos.
+Se muestra en la parte superior de la pagina y desaparece después de 3 segundos.
-:::demo La configuracion del componente Message es muy similar al del componente notification, asi que parte de las opciones no seran explicadas en detalle aqui. Puedes consultar la tabla de opciones en la parte inferior conbinada con la documentacion del componente notification para comprenderla. Element a registrado un metodo `$message` para poder invocarlo. Message puede tomar una cadena o un Vnode como parametro, y lo mostrara como el cuerpo principal.
+:::demo La configuración del componente Message es muy similar al del componente notification, así que parte de las opciones no serán explicadas en detalle aquí. Puedes consultar la tabla de opciones en la parte inferior combinada con la documentación del componente notification para comprenderla. Element a registrado un método `$message` para poder invocarlo. Message puede tomar una cadena o un Vnode como parámetro, y lo mostrara como el cuerpo principal.
```html
@@ -121,21 +38,21 @@ Se muestra en la parte superior de la pagina y desaparece despues de 3 segundos.
### Tipos
-Utilizados para mostrar retroalimentacion de Success, Warning, Message y Error activities.
+Utilizados para mostrar retroalimentación de Success, Warning, Message y Error activities.
-:::demo Cuando necesite mas personalizacion, el componente Message tambien puede tomar un objeto como parametro. Por ejemplo, estableciendo el valor de `type` puede definir diferentes tipos, el predeterminado es `info`. En tales casos el cuerpo principal se pasa como el valor de `message`. Tambien, hay registrados metodos para los diferentes tipos, asi que, puedes llamarlos sin necesidad de pasar un tipo como `open4`.
+:::demo Cuando necesite mas personalización, el componente Message también puede tomar un objeto como parámetro. Por ejemplo, estableciendo el valor de `type` puede definir diferentes tipos, el predeterminado es `info`. En tales casos el cuerpo principal se pasa como el valor de `message`. También, hay registrados métodos para los diferentes tipos, así que, puedes llamarlos sin necesidad de pasar un tipo como `open4`.
```html
success
warning
- message
+ message
error
-
## Notification
Muestra un mensaje de notificación global en una esquina de la página.
@@ -122,7 +10,7 @@ Muestra un mensaje de notificación global en una esquina de la página.
+ @click="open1">
Closes automatically
export default {
methods: {
- open() {
+ open1() {
const h = this.$createElement;
this.$notify({
@@ -161,28 +49,28 @@ Muestra un mensaje de notificación global en una esquina de la página.
Proporcionamos cuatro tipos: success, warning, info y error.
-:::demo Element proporciona cuatro tipos de notificación: `success`, `warning`, `info` y `error`. Se definen por el campo `type` y se ignorarán otros valores. También se han registrado métodos para estos tipos que se pueden invocar directamente como en el ejemplo `open5` y `open6` sin pasar un campo `type`.
+:::demo Element proporciona cuatro tipos de notificación: `success`, `warning`, `info` y `error`. Se definen por el campo `type` y se ignorarán otros valores. También se han registrado métodos para estos tipos que se pueden invocar directamente como en el ejemplo `open3` y `open4` sin pasar un campo `type`.
```html
+ @click="open1">
Success
+ @click="open2">
Warning
+ @click="open3">
Info
+ @click="open4">
Error
@@ -190,7 +78,7 @@ Proporcionamos cuatro tipos: success, warning, info y error.
+```
+:::
+
+### Atributos
+| Atributos | Descripción | Tipo | Valores aceptados | Por defecto |
+|---------- |-------------- |---------- |------------------------------ | ------ |
+| title | titulo principal | string | — | Back |
+| content | contenido | string | — | — |
+
+### Eventos
+| Nombre evento | Descripción | Parámetros |
+|----------- |-------------- |----------- |
+| back | se activa cuando se hace clic en el lado derecho | — |
+
+### Slots
+| Nombre del slot | Descripción |
+| --------------- | ----------- |
+| title | titulo |
+| content | contenido |
diff --git a/examples/docs/es/pagination.md b/examples/docs/es/pagination.md
index 3c1e928a810..0c83302ca4c 100644
--- a/examples/docs/es/pagination.md
+++ b/examples/docs/es/pagination.md
@@ -1,53 +1,3 @@
-
-
## Paginación
Si tiene que mostrar muchos datos en una página, utilice la paginación.
@@ -72,9 +22,9 @@ Si tiene que mostrar muchos datos en una página, utilice la paginación.
```
:::
-### Number of pagers
+### Números de paginas
-:::demo By default, Pagination collapses extra pager buttons when it has more than 7 pages. This can be configured with the `pager-count` attribute.
+:::demo De forma predeterminada, Pagination colapsa los botones del paginador adicionales cuando tiene más de 7 páginas. Esto se puede configurar con el atributo `pager-count`.
```html
```
+
:::
+### Oculte la paginación cuando el resultado es solo una pagina simple
+
+Cuando sólo hay una página, oculte la paginación configurando el atributo `hide-on-single-page`.
+
+:::demo
+```html
+
+
+
+
+
+
+
+```
+:::
### Atributos
| Atributo | Descripción | Tipo | Valores aceptados | Por defecto |
@@ -221,15 +169,16 @@ Agrega más modulos basados en su escenario.
| popper-class | clase propia para el `dropdown` del `select` del número de páginas | string | — | — |
| prev-text | texto para el botón `prev` | string | — | — |
| next-text | texto para el botón `next` | string | — | — |
-| disabled | si Pagination esta disabled | boolean | — | false |
+| disabled | si Pagination esta disabled | boolean | — | false |
+| hide-on-single-page | si ocultar cuando sólo hay una página | boolean |— | - |
### Eventos
| Nombre del evento | Descripción | Parámetros |
| ----------------- | --------------------------------------- | ----------------------------- |
| size-change | se dispara cuando `page-size` cambia | nuevo valor de `page-size` |
| current-change | se dispara cuando `current-page` cambia | nuevo valor de `current-page` |
-| prev-click | Se dispara cuando el boton `prev` recibe el click y la pagina actual cambia | la nueva pagina actual |
-| next-click | Se dispara cuando el boton `next` recibe el click y la pagina actual cambia | la nueva pagina actual |
+| prev-click | Se dispara cuando el botón `prev` recibe el clic y la pagina actual cambia | la nueva pagina actual |
+| next-click | Se dispara cuando el botón `next` recibe el clic y la pagina actual cambia | la nueva pagina actual |
### Slot
| Nombre | Descripción |
diff --git a/examples/docs/es/panel.md b/examples/docs/es/panel.md
new file mode 100644
index 00000000000..48382924949
--- /dev/null
+++ b/examples/docs/es/panel.md
@@ -0,0 +1 @@
+## Panel
diff --git a/examples/docs/es/popconfirm.md b/examples/docs/es/popconfirm.md
new file mode 100644
index 00000000000..72033bfc06f
--- /dev/null
+++ b/examples/docs/es/popconfirm.md
@@ -0,0 +1,54 @@
+## Popconfirm
+
+A simple confirmation dialog of an element click action.
+
+### Basic usage
+
+Popconfirm is similar to Popover. So for some duplicated attributes, please refer to the documentation of Popover.
+
+:::demo Only `title` attribute is avaliable in Popconfirm, `content` will be ignored.
+```html
+
+
+ Delete
+
+
+````
+:::
+
+### Customise
+You can customise Popconfirm like:
+:::demo
+```html
+
+
+ Delete
+
+
+```
+:::
+
+### Attributes
+| Attribute | Description | Type | Accepted Values | Default |
+|--------------------|----------------------------------------------------------|-------------------|-------------|--------|
+| title | Title | String | — | — |
+| confirmButtonText | Confirm button text | String | — | — |
+| cancelButtonText | Cancel button text | String | — | — |
+| confirmButtonType | Confirm button type | String | — | Primary |
+| cancelButtonType | Cancel button type | String | — | Text |
+| icon | Icon | String | — | el-icon-question |
+| iconColor | Icon color | String | — | #f90 |
+| hideIcon | is hide Icon | Boolean | — | false |
+
+### Slot
+| Name | Description |
+|--- | ---|
+| reference | HTML element that triggers Popconfirm |
diff --git a/examples/docs/es/popover.md b/examples/docs/es/popover.md
index bdc1c71357a..f51bb81b103 100644
--- a/examples/docs/es/popover.md
+++ b/examples/docs/es/popover.md
@@ -1,107 +1,10 @@
-
-
-
-
## Popover
### Uso básico
Similar a un Tooltip, Popover está construido con `Vue-popper`. Así que para atributos duplicados, por favor refiérase a la documentación de Tooltip.
-:::demo El atributo `trigger` es usado para definir como el popover se dispara: `hover`, `click`, `focus` o `manual`. As for the triggering element, you can write it in two different ways: use the `slot="reference"` [named slot](https://vuejs.org/v2/guide/components.html#Named-Slots), or use the `v-popover` directive and set it to Popover's `ref`.
+:::demo El atributo `trigger` es usado para definir como el popover se dispara: `hover`, `click`, `focus` o `manual`. En cuanto al elemento desencadenante, puedes escribirlo de dos maneras diferentes: usando el `slot="reference"`[named slot](https://vuejs.org/v2/guide/components.html#Named-Slots), o usando la directiva `v-popover` y poniendo el `ref` de Popover.
```html
@@ -211,11 +114,11 @@ Por supuesto, puedes anidar otras operaciones. Es más ligero que utilizar un `d
+ v-model="visible">
Are you sure to delete this?
- cancel
- confirm
+ cancel
+ confirm
Delete
@@ -224,7 +127,7 @@ Por supuesto, puedes anidar otras operaciones. Es más ligero que utilizar un `d
export default {
data() {
return {
- visible2: false,
+ visible: false,
};
}
}
@@ -241,13 +144,15 @@ Por supuesto, puedes anidar otras operaciones. Es más ligero que utilizar un `d
| width | ancho del popover | string, number | — | Min width 150px |
| placement | posición del popover en la pantalla | string | top/top-start/top-end/bottom/bottom-start/bottom-end/left/left-start/left-end/right/right-start/right-end | bottom |
| disabled | si el popover está deshabilitado | boolean | — | false |
-| value(v-model) | si el popover está visible | Boolean | — | false |
+| value / v-model | si el popover está visible | Boolean | — | false |
| offset | popover offset | number | — | 0 |
-| transition | popover transition animation | string | — | el-fade-in-linear |
+| transition | animación de transición del popover | string | — | el-fade-in-linear |
| visible-arrow | si una flecha del tooltip es mostrada o no. Para más información, por favor refiérase a [Vue-popper](https://github.com/element-component/vue-popper) | boolean | — | true |
| popper-options | parámetros para [popper.js](https://popper.js.org/documentation.html) | object | por favor, refiérase a [popper.js](https://popper.js.org/documentation.html) | `{ boundariesElement: 'body', gpuAcceleration: false }` |
| popper-class | clase propia para popover | string | — | — |
| open-delay | retraso de la aparición cuando `trigger` es hover, en milisegundos | number | — | — |
+| close-delay | Retraso antes de desaparecer cuando el `trigger` es hover, en milisegundos. | number | — | 200 |
+| tabindex | [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) de Popover | number | — | 0 |
### Slot
| Nombre | Descripción |
@@ -259,6 +164,6 @@ Por supuesto, puedes anidar otras operaciones. Es más ligero que utilizar un `d
| Nombre del evento | Descripción | Parámetros |
| ----------------- | --------------------------------------- | ---------- |
| show | se dispara cuando se muestra el popover | — |
-| after-enter | se dispara cuando la transicion de entrada termina | — |
+| after-enter | se dispara cuando la transición de entrada termina | — |
| hide | se dispara cuando se oculta el popover | — |
-| after-leave | se dispara cuando la transicion de salida termina | — |
+| after-leave | se dispara cuando la transición de salida termina | — |
diff --git a/examples/docs/es/progress.md b/examples/docs/es/progress.md
index 7883822997c..553dc55aef1 100644
--- a/examples/docs/es/progress.md
+++ b/examples/docs/es/progress.md
@@ -1,39 +1,100 @@
-
## Progreso
Progreso es usado para mostrar el estado de la operación actual e informar al usuario acerca de ésta.
-### Barra de progreso lineal (porcentage externo)
+### Barra de progreso lineal
+
+:::demo Usa el atributo `percentage` para asignar el porcentaje. Este es **requerido** y tiene que ser un valor entre `0-100`. Puede personalizar el formato de texto estableciendo `format`.
-:::demo Usa el atributo `percentage` para asignar el porcentage. Este es **requerido** y tiene que ser un valor entre `0-100`.
```html
-
-
-
+
+
+
+
+
```
:::
-### Barra de progreso lineal (porcentage interno)
-En este caso el porcentage no toma espacio adicional.
+### Porcentaje interno
+En este caso el porcentaje no toma espacio adicional.
:::demo El atributo `stroke-width` decide el ancho de la barra de progreso, y usa el atributo `text-inside` para poner la descripción dentro de la misma.
```html
-
-
-
-
-
+
+
+
+
+```
+:::
+
+### Color personalizado
+
+Puede utilizar el atributo `color` para establecer el color de la barra de progreso.
+
+:::demo
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
```
:::
@@ -43,10 +104,56 @@ En este caso el porcentage no toma espacio adicional.
```html
-
+
-Done
+```
+:::
+
+### Barra de progreso del panel de control
+
+:::demo También puede especificar el atributo `type` a `dashboard` para usar la barra de progreso del panel de control.
+
+```html
+
+
+
+
+
+
+
+
+
+
```
:::
@@ -54,10 +161,11 @@ En este caso el porcentage no toma espacio adicional.
| Atributo | Descripción | Tipo | Valores aceptado | Por defecto |
| ------------ | ---------------------------------------- | ------- | ----------------- | ----------- |
| percentage | porcentaje, requerido | number | 0-100 | 0 |
-| type | tipo de barra de progreso | string | line/circle | line |
+| type | tipo de barra de progreso | string | line/circle/dashboard | line |
| stroke-width | ancho de la barra de progreso | number | — | 6 |
| text-inside | mostrar el porcentaje dentro de la barra de progreso, solo funciona cuando `type` es 'line' | boolean | — | false |
-| status | estado actual de la barra de progreso | string | success/exception/text | — |
-| color | color de fondo de la barra de progreso. Sobreescribe la propiedad `status` | string | — | — |
+| status | estado actual de la barra de progreso | string | success/exception/warning | — |
+| color | color de fondo de la barra de progreso. Sobreescribe la propiedad `status` | string/function/array | — | '' |
| width | ancho del canvas que contiene la barra de progreso circula | number | — | 126 |
| show-text | mostrar porcentaje | boolean | — | true |
+| stroke-linecap | circle/dashboard type shape at the end path | string | butt/round/square | round |
\ No newline at end of file
diff --git a/examples/docs/es/quickstart.md b/examples/docs/es/quickstart.md
index 3c3a1c596c4..e7da0cc3ec1 100644
--- a/examples/docs/es/quickstart.md
+++ b/examples/docs/es/quickstart.md
@@ -4,7 +4,7 @@ Esta sección te guía en el proceso de usar Element con webpack en un proyecto.
### Use vue-cli@3
-We provide an [Element plugin](https://github.com/ElementUI/vue-cli-plugin-element) for vue-cli@3, which you can use to quickly build an Element-based project.
+Proporcionamos un [plugin de Element](https://github.com/ElementUI/vue-cli-plugin-element) para vue-cli@3, que puede utilizar para construir rápidamente un proyecto basado en Element.
### Usa la plantilla de Kit de inicio
@@ -18,12 +18,12 @@ Puede importar Element completamente o solamente importar lo que necesite. Comen
#### Importando todo
-In main.js:
+En main.js:
```javascript
import Vue from 'vue';
-import ElementUI from 'element-ui';
-import 'element-ui/lib/theme-chalk/index.css';
+import ElementUI from '@femessage/element-ui';
+import '@femessage/element-ui/lib/theme-chalk/index.css';
import App from './App.vue';
Vue.use(ElementUI);
@@ -67,7 +67,7 @@ Luego, si necesita Button y Select, edite main.js:
```javascript
import Vue from 'vue';
-import { Button, Select } from 'element-ui';
+import { Button, Select } from '@femessage/element-ui';
import App from './App.vue';
Vue.component(Button.name, Button);
@@ -83,7 +83,7 @@ new Vue({
});
```
-Ejemplo completo (Referencia completa de componentes [components.json](https://github.com/ElemeFE/element/blob/master/components.json))
+Ejemplo completo (Referencia completa de componentes [components.json](https://github.com/femessage/element/blob/master/components.json))
```javascript
import Vue from 'vue';
@@ -134,6 +134,7 @@ import {
Col,
Upload,
Progress,
+ Spinner,
Badge,
Card,
Rate,
@@ -151,11 +152,20 @@ import {
Aside,
Main,
Footer,
+ Timeline,
+ TimelineItem,
+ Link,
+ Divider,
+ Image,
+ Calendar,
+ Backtop,
+ PageHeader,
+ CascaderPanel,
Loading,
MessageBox,
Message,
Notification
-} from 'element-ui';
+} from '@femessage/element-ui';
Vue.use(Pagination);
Vue.use(Dialog);
@@ -173,6 +183,7 @@ Vue.use(Radio);
Vue.use(RadioGroup);
Vue.use(RadioButton);
Vue.use(Checkbox);
+Vue.use(CheckboxButton);
Vue.use(CheckboxGroup);
Vue.use(Switch);
Vue.use(Select);
@@ -202,6 +213,7 @@ Vue.use(Row);
Vue.use(Col);
Vue.use(Upload);
Vue.use(Progress);
+Vue.use(Spinner);
Vue.use(Badge);
Vue.use(Card);
Vue.use(Rate);
@@ -219,6 +231,15 @@ Vue.use(Header);
Vue.use(Aside);
Vue.use(Main);
Vue.use(Footer);
+Vue.use(Timeline);
+Vue.use(TimelineItem);
+Vue.use(Link);
+Vue.use(Divider);
+Vue.use(Image);
+Vue.use(Calendar);
+Vue.use(Backtop);
+Vue.use(PageHeader);
+Vue.use(CascaderPanel);
Vue.use(Loading.directive);
@@ -233,13 +254,15 @@ Vue.prototype.$message = Message;
### Configuración global
-Cuando importa Element, puede definir un objeto global de configuración. Por ahora este elemento solo contiene dos propiedades: `size`, `zIndex`. `size` define el tamaño por defecto de todos los componentes. The property `zIndex` sets the initial z-index (default: 2000) for modal boxes:
+Cuando importa Element, puede definir un objeto global de configuración. Por ahora este elemento solo contiene dos propiedades: `size`, `zIndex`. `size` define el tamaño por defecto de todos los componentes.
+
+La propiedad `zIndex` indica el z-index inicial (por defecto: 2000) para los modal:
Importando Element completamente:
```js
import Vue from 'vue';
-import Element from 'element-ui';
+import Element from '@femessage/element-ui';
Vue.use(Element, { size: 'small', zIndex: 3000 });
```
@@ -247,13 +270,13 @@ Importando Element parcialmente:
```js
import Vue from 'vue';
-import { Button } from 'element-ui';
+import { Button } from '@femessage/element-ui';
Vue.prototype.$ELEMENT = { size: 'small', zIndex: 3000 };
Vue.use(Button);
```
-Con la anterior configuración, el tamaño por defecto de todos los componentes que tienen el atributo `size` será `small`. The initial z-index of modal boxes is 3000.
+Con la anterior configuración, el tamaño por defecto de todos los componentes que tienen el atributo `size` será `small`. El valor inicial de z-index para los modals se ha establecido a 3000.
### Empiece ya!
diff --git a/examples/docs/es/radio-img-button.md b/examples/docs/es/radio-img-button.md
new file mode 100644
index 00000000000..7851a46ce52
--- /dev/null
+++ b/examples/docs/es/radio-img-button.md
@@ -0,0 +1 @@
+## RadioImgButton
diff --git a/examples/docs/es/radio.md b/examples/docs/es/radio.md
index 0f0e0dedfbe..af5e09a8bf1 100644
--- a/examples/docs/es/radio.md
+++ b/examples/docs/es/radio.md
@@ -1,23 +1,3 @@
-
-
## Radio
Selección única entre múltiples opciones.
@@ -50,15 +30,15 @@ El atributo `disabled` es utilizado para deshabilitar un Radio.
:::demo Solo necesita agregar el atributo `disabled`.
```html
- Option A
- Option B
+ Option A
+ Option B
-
## Calificación
Usado para la calificación
### Uso básico
-:::demo Clasificación divide las puntuaciones en tres niveles y estos niveles pueden distinguirse usando diferentes colores de fondo. Por defecto los colores de fondo son iguales, pero puedes asignarlos para reflejar los tres niveles usando el atributo `colors` y sus dos umbrales pueden ser definidos con `low-treshold` y `high-treshold`.
+:::demo Clasificación divide las puntuaciones en tres niveles y estos niveles pueden distinguirse usando diferentes colores de fondo. Por defecto los colores de fondo son iguales, pero puedes asignarlos para reflejar los tres niveles usando el atributo `colors` y sus dos umbrales pueden ser definidos con `low-treshold` y `high-treshold`. O puede asignarlos con un objeto cuya clave es el umbral entre dos niveles y cuyo valor es el color correspondiente.
-``` html
+```html
Default
@@ -57,7 +16,7 @@ Usado para la calificación
Color for different levels
+ :colors="colors">
@@ -66,7 +25,8 @@ Usado para la calificación
data() {
return {
value1: null,
- value2: null
+ value2: null,
+ colors: ['#99A9BF', '#F7BA2A', '#FF9900'] // same as { 2: '#99A9BF', 4: { value: '#F7BA2A', excluded: true }, 5: '#FF9900' }
}
}
}
@@ -80,9 +40,9 @@ Usa texto para indicar la puntuación
:::demo Agregar el atributo `show-text` para mostrar texto a la derecha del componente. Puede asignar textos para las distintas puntuaciones usando `texts`. `texts` es un arreglo cuya longitud debe ser igual a la máxima puntuación `max`.
-``` html
+```html
@@ -91,7 +51,7 @@ Usa texto para indicar la puntuación
export default {
data() {
return {
- value3: null
+ value: null
}
}
}
@@ -103,12 +63,12 @@ Usa texto para indicar la puntuación
Puede utilizar iconos para diferenciar cada componente.
-:::demo Puede customizar iconos para tres niveles diferentes usando `icon-classes`. En este ejemplo también usamos `void-icon-class` para asignar un icono si no está seleccionado.
+:::demo Puede personalizar los iconos pasando `icon-classes` un array con tres elementos o un objeto cuya clave es el umbral entre dos niveles y cuyo valor es la clase de icono correspondiente. En este ejemplo también usamos `void-icon-class` para asignar un icono si no está seleccionado.
-``` html
+```html
@@ -117,7 +77,8 @@ Puede utilizar iconos para diferenciar cada componente.
export default {
data() {
return {
- value4: null
+ value: null,
+ iconClasses: ['icon-rate-face-1', 'icon-rate-face-2', 'icon-rate-face-3'] // same as { 2: 'icon-rate-face-1', 4: { value: 'icon-rate-face-2', excluded: true }, 5: 'icon-rate-face-3' }
}
}
}
@@ -131,9 +92,9 @@ La calificación de solo lectura es para mostrar la puntuación. Soporta media e
:::demo Use el atributo `disabled` para hacer el componente de solo lectura. Agregar `show-score` para mostrar la puntuación en el lado derecho. Además, puede usar el atributo `score-template` para proveer una plantilla. Tiene que contener `{value}`, y `{value}` será sustituido por la puntuación.
-``` html
+```html
- export default {
- data() {
- return {
- list: null,
- options: [{
- value: 'Option1',
- label: 'Option1'
- }, {
- value: 'Option2',
- label: 'Option2'
- }, {
- value: 'Option3',
- label: 'Option3'
- }, {
- value: 'Option4',
- label: 'Option4'
- }, {
- value: 'Option5',
- label: 'Option5'
- }],
- options2: [{
- value: 'Option1',
- label: 'Option1'
- }, {
- value: 'Option2',
- label: 'Option2',
- disabled: true
- }, {
- value: 'Option3',
- label: 'Option3'
- }, {
- value: 'Option4',
- label: 'Option4'
- }, {
- value: 'Option5',
- label: 'Option5'
- }],
- options3: [{
- label: 'Popular cities',
- options: [{
- value: 'Shanghai',
- label: 'Shanghai'
- }, {
- value: 'Beijing',
- label: 'Beijing'
- }]
- }, {
- label: 'City Name',
- options: [{
- value: 'Chengdu',
- label: 'Chengdu'
- }, {
- value: 'Shenzhen',
- label: 'Shenzhen'
- }, {
- value: 'Guangzhou',
- label: 'Guangzhou'
- }, {
- value: 'Dalian',
- label: 'Dalian'
- }]
- }],
- options4: [],
- options5: [{
- value: 'HTML',
- label: 'HTML'
- }, {
- value: 'CSS',
- label: 'CSS'
- }, {
- value: 'JavaScript',
- label: 'JavaScript'
- }],
- cities: [{
- value: 'Beijing',
- label: 'Beijing'
- }, {
- value: 'Shanghai',
- label: 'Shanghai'
- }, {
- value: 'Nanjing',
- label: 'Nanjing'
- }, {
- value: 'Chengdu',
- label: 'Chengdu'
- }, {
- value: 'Shenzhen',
- label: 'Shenzhen'
- }, {
- value: 'Guangzhou',
- label: 'Guangzhou'
- }],
- value: '',
- value2: '',
- value3: '',
- value4: '',
- value5: [],
- value6: '',
- value7: '',
- value8: '',
- value9: [],
- value10: [],
- value11: [],
- loading: false,
- states: ["Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut", "Delaware", "Florida", "Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas", "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan", "Minnesota", "Mississippi", "Missouri", "Montana", "Nebraska", "Nevada", "New Hampshire", "New Jersey", "New Mexico", "New York", "North Carolina", "North Dakota", "Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virginia", "Washington", "West Virginia", "Wisconsin", "Wyoming"]
- };
- },
-
- mounted() {
- this.list = this.states.map(item => { return { value: item, label: item }; });
- },
-
- methods: {
- remoteMethod(query) {
- if (query !== '') {
- this.loading = true;
- setTimeout(() => {
- this.loading = false;
- this.options4 = this.list.filter(item => item.label.toLowerCase().indexOf(query.toLowerCase()) > -1);
- }, 200);
- } else {
- this.options4 = [];
- }
- }
- }
- };
-
-
-
-
## Select
Cuando haya muchas opciones, utilice un menú desplegable para mostrar y seleccionar las que desee.
@@ -187,9 +52,9 @@ Cuando haya muchas opciones, utilice un menú desplegable para mostrar y selecci
```html
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -566,8 +432,8 @@ Introduzca palabras y datos para buscar desde el servidor.
export default {
data() {
return {
- options4: [],
- value9: [],
+ options: [],
+ value: [],
list: [],
loading: false,
states: ["Alabama", "Alaska", "Arizona",
@@ -591,7 +457,7 @@ Introduzca palabras y datos para buscar desde el servidor.
},
mounted() {
this.list = this.states.map(item => {
- return { value: item, label: item };
+ return { value: `value:${item}`, label: `label:${item}` };
});
},
methods: {
@@ -600,13 +466,13 @@ Introduzca palabras y datos para buscar desde el servidor.
this.loading = true;
setTimeout(() => {
this.loading = false;
- this.options4 = this.list.filter(item => {
+ this.options = this.list.filter(item => {
return item.label.toLowerCase()
.indexOf(query.toLowerCase()) > -1;
});
}, 200);
} else {
- this.options4 = [];
+ this.options = [];
}
}
}
@@ -623,13 +489,13 @@ Crear y seleccionar nuevos items que no están incluidas en las opciones de sele
```html
@@ -641,7 +507,7 @@ Crear y seleccionar nuevos items que no están incluidas en las opciones de sele
export default {
data() {
return {
- options5: [{
+ options: [{
value: 'HTML',
label: 'HTML'
}, {
@@ -651,7 +517,7 @@ Crear y seleccionar nuevos items que no están incluidas en las opciones de sele
value: 'JavaScript',
label: 'JavaScript'
}],
- value10: []
+ value: []
}
}
}
@@ -668,25 +534,26 @@ Si el valor de encuadernación de Select es un objeto, asegúrese de asignar `va
### Select atributos
| Atributo | Descripción | Tipo | Valores aceptados | Por defecto |
| -------------------- | ---------------------------------------- | -------- | ----------------- | ---------------- |
+| value / v-model | valor enlazado | boolean / string / number | — | — |
| multiple | si multiple-select esta activo | boolean | — | false |
| disabled | si Select esta deshabilitado | boolean | — | false |
| collapse-tags | si se colapsan los tags a un texto cuando `multiple` es `true`. | boolean | — | false |
| value-key | nombre de clave de identidad única para el valor, necesario cuando el valor es un objeto. | string | — | value |
| size | tamaño del Input | string | large/small/mini | — |
-| clearable | whether select can be cleared | boolean | — | false |
-| multiple-limit | maximo numero de opciones que el usuario puede seleccionar cuando `multiple` es `true`. Sin límite cuando se fija a 0 | number | — | 0 |
+| clearable | si el select puede ser limpiado | boolean | — | true |
+| multiple-limit | máximo numero de opciones que el usuario puede seleccionar cuando `multiple` es `true`. Sin límite cuando se fija a 0 | number | — | 0 |
| name | el atributo `name` del input seleccionado | string | — | — |
| autocomplete | el atributo `autocomplete` del input seleccionado | string | — | off |
-| auto-complete | @DEPRECATED in next major version | string | — | off |
+| auto-complete | @DEPRECATED en la proxima major versión | string | — | off |
| placeholder | placeholder | string | — | Select |
-| filterable | si Select es filtrable | boolean | — | false |
+| filterable | si Select es filtrable | boolean | — | true |
| allow-create | si esta permitido crear nuevos items. Para usar esto, `filterable` debe ser `true`. | boolean | — | false |
-| filter-method | metodo de filtrado personalizado | function | — | — |
-| remote | si las opciones se traeran desde el servidor | boolean | — | false |
-| remote-method | metodo de busqueda remota personalizada | function | — | — |
+| filter-method | método de filtrado personalizado | function | — | — |
+| remote | si las opciones se traerán desde el servidor | boolean | — | false |
+| remote-method | método de búsqueda remota personalizada | function | — | — |
| loading | si Select está cargando datos del servidor | boolean | — | false |
-| loading-text | texto mostrado durante la carga de datos del servidor | string | — | Loading |
-| no-match-text | texto mostrado cuando ningún dato coincide con la consulta de filtrado. | string | — | No matching data |
+| loading-text | texto mostrado durante la carga de datos del servidor, también puedes usar la configuración de slot = "empty" | string | — | Loading |
+| no-match-text | texto mostrado cuando ningún dato coincide con la consulta de filtrado. También puedes usar la configuración de slot = "empty" | string | — | No matching data |
| no-data-text | texto mostrado cuando no hay opciones | string | — | No data |
| popper-class | nombre de clase personalizado para el menú desplegable del Select | string | — | — |
| reserve-keyword | cuando `multiple` y `filter` es `true`, si se debe reservar la palabra clave actual después de seleccionar una opción. | boolean | — | false |
@@ -695,20 +562,21 @@ Si el valor de encuadernación de Select es un objeto, asegúrese de asignar `va
| automatic-dropdown | para non-filterable Select, este `prop` decide si el menú de opciones aparece cuando la entrada está enfocada | boolean | - | false |
### Eventos Select
-| Nombre | Descripción | Parametros |
-| -------------- | ---------------------------------------- | ---------------------------------------- |
-| change | se dispara cuando el valor del select cambia | valor actual del select |
-| visible-change | se dispara cuando el menu desplegable aparece o desaparece | true cuando aparece, y false en otro caso |
-| remove-tag | se dispara cuando un tag es removido en modo multiple | el valor del tag removido |
-| clear | se dispara cuando el icono se clickea en un Select limpiable | — |
-| blur | se dispara cuando el input pierde el foco | (event: Event) |
-| focus | se dispara cuando el input obtiene el foco | (event: Event) |
+| Nombre | Descripción | Parametros |
+| -------------- | ------------------------------------------------------------ | ----------------------------------------- |
+| change | se dispara cuando el valor del select cambia | valor actual del select |
+| visible-change | se dispara cuando el menú desplegable aparece o desaparece | true cuando aparece, y false en otro caso |
+| remove-tag | se dispara cuando un tag es removido en modo múltiple | el valor del tag removido |
+| clear | se dispara cuando el icono se clickea en un Select limpiable | — |
+| blur | se dispara cuando el input pierde el foco | (event: Event) |
+| focus | se dispara cuando el input obtiene el foco | (event: Event) |
### Select Slots
| Name | Description |
|---------|-------------|
| — | lista de los componentes Option |
| prefix | contenido prefix de un Select |
+| empty | Lista sin opciones |
### Atributos del grupo de opciones
| Atributo | Descripción | Tipo | Valores aceptados | Por defecto |
diff --git a/examples/docs/es/skeleton.md b/examples/docs/es/skeleton.md
new file mode 100644
index 00000000000..ff876ea8b9b
--- /dev/null
+++ b/examples/docs/es/skeleton.md
@@ -0,0 +1 @@
+## Skeleton
diff --git a/examples/docs/es/slider.md b/examples/docs/es/slider.md
index 6e07bac7e28..58ceaf263b6 100644
--- a/examples/docs/es/slider.md
+++ b/examples/docs/es/slider.md
@@ -1,54 +1,3 @@
-
-
-
-
## Slider
Desliza el slider dentro de un rango fijo.
@@ -115,14 +64,14 @@ Las opciones pueden ser discretas.
Breakpoints not displayed
Breakpoints displayed
@@ -133,8 +82,8 @@ Las opciones pueden ser discretas.
export default {
data() {
return {
- value6: 0,
- value7: 0
+ value1: 0,
+ value2: 0
}
}
}
@@ -144,7 +93,7 @@ Las opciones pueden ser discretas.
### Slider con input
-Inserte el valor a traves de un input
+Inserte el valor a través de un input
:::demo Configure el atributo `show-input` para que muestre un input a la derecha.
@@ -152,7 +101,7 @@ Inserte el valor a traves de un input
@@ -162,7 +111,7 @@ Inserte el valor a traves de un input
export default {
data() {
return {
- value8: 0
+ value: 0
}
}
}
@@ -180,7 +129,7 @@ Se soporta la selección de un rango de valores.
@@ -192,7 +141,7 @@ Se soporta la selección de un rango de valores.
export default {
data() {
return {
- value9: [4, 8]
+ value: [4, 8]
}
}
}
@@ -208,7 +157,7 @@ Se soporta la selección de un rango de valores.
@@ -219,7 +168,44 @@ Se soporta la selección de un rango de valores.
export default {
data() {
return {
- value10: 0
+ value: 0
+ }
+ }
+ }
+
+```
+:::
+
+### Mostrar marcas
+
+:::demo Use el atributo `marks` para mostrar marcas en el slider.
+```html
+
+
+
+
+
+
+
+
-
## Steps
Guía al usuario para completar tareas de acuerdo con el proceso. Sus pasos pueden configurarse de acuerdo con el escenario de aplicación real y el número de pasos no puede ser inferior a dos.
@@ -51,11 +35,11 @@ Barra de pasos simple.
```
:::
-### Step bar con el status
+### Step bar con el estatus
Muestra el estado del step para cada paso.
-:::demo Utilice el atributo `title` para establecer el nombre del paso, o sobreescriba el atributo usando un slot con nombre. Hemos enumerado todos los nombres de slots al final de esta página.
+:::demo Utilice el atributo `title` para establecer el nombre del paso, o sobrescriba el atributo usando un slot con nombre. Hemos enumerado todos los nombres de slots al final de esta página.
```html
@@ -95,7 +79,7 @@ Puede poner una descripción para cada paso.
```
:::
-### Step bar with icon
+### Step bar con icono
En la barra de pasos se pueden utilizar diversos iconos personalizados.
@@ -149,15 +133,15 @@ Step bar simple, donde se ignorará `align-center`, `description`, `direction` y
### Steps atributos
-| Atributo | Descripción | Tipo | Valores aceptados | Por defecto |
-| -------------- | ---------------------------------------- | --------------- | ---------------------------------------- | ----------- |
-| space | el espaciado de cada paso, será responsivo si se omite. Soporta porcentaje. | number / string | — | — |
-| direction | dirección de visualización | string | vertical/horizontal | horizontal |
-| active | actual paso de activación | number | — | 0 |
-| process-status | status del paso actual | string | wait / process / finish / error / success | process |
-| finish-status | status del paso final | string | wait / process / finish / error / success | finish |
-| align-center | centrado de título y descripción | boolean | — | false |
-| simple | si aplicar un tema simple | boolean | - | false |
+| Atributo | Descripción | Tipo | Valores aceptados | Por defecto |
+| -------------- | ------------------------------------------------------------ | --------------- | ----------------------------------------- | ----------- |
+| space | el espaciado de cada paso, será responsivo si se omite. Soporta porcentaje. | number / string | — | — |
+| direction | dirección de visualización | string | vertical/horizontal | horizontal |
+| active | actual paso de activación | number | — | 0 |
+| process-status | estatus del paso actual | string | wait / process / finish / error / success | process |
+| finish-status | estatus del paso final | string | wait / process / finish / error / success | finish |
+| align-center | centrado de título y descripción | boolean | — | false |
+| simple | si aplicar un tema simple | boolean | - | false |
### Step atributos
| Atributo | Descripción | Tipo | Valores aceptados | Por defecto |
@@ -172,5 +156,5 @@ Step bar simple, donde se ignorará `align-center`, `description`, `direction` y
| ----------- | -------------------- |
| icon | Icono personalizado |
| title | Titulo del paso |
-| description | Descripcion del paso |
+| description | Descripción del paso |
diff --git a/examples/docs/es/switch.md b/examples/docs/es/switch.md
index 83b04713136..66f5aa2222e 100644
--- a/examples/docs/es/switch.md
+++ b/examples/docs/es/switch.md
@@ -1,30 +1,6 @@
-
-
-
-
## Switch
-Switch es utilizdo para realizar cambios entre dos estados opuestos.
+Switch es utilizado para realizar cambios entre dos estados opuestos.
### Uso básico
@@ -57,13 +33,13 @@ Switch es utilizdo para realizar cambios entre dos estados opuestos.
```html
+
@@ -129,8 +105,8 @@ Switch es utilizdo para realizar cambios entre dos estados opuestos.
export default {
data() {
return {
- value6: true,
- value7: false
+ value1: true,
+ value2: false
}
}
};
@@ -142,17 +118,19 @@ Switch es utilizdo para realizar cambios entre dos estados opuestos.
| Atributo | Descripción | Tipo | Valores aceptados | Por defecto |
| ------------------- | ---------------------------------------- | ------------------------- | ----------------- | ----------- |
+| value / v-model | valor enlazado | boolean / string / number | — | — |
| disabled | si Switch esta deshabilitado | boolean | — | false |
| width | ancho del componente Switch | number | — | 40 |
-| active-icon-class | nombre de la clase del icono mostrado en el estado `on`, sobreescribe `active-text` | string | — | — |
-| inactive-icon-class | nombre de la clase del icono mostrado en el estado `off`, sobreescribe `inactive-text` | string | — | — |
+| active-icon-class | nombre de la clase del icono mostrado en el estado `on`, sobrescribe `active-text` | string | — | — |
+| inactive-icon-class | nombre de la clase del icono mostrado en el estado `off`, sobrescribe `inactive-text` | string | — | — |
| active-text | texto mostrado en el estado `on` | string | — | — |
| inactive-text | texto mostrado en el estado `off` | string | — | — |
| active-value | cambia su valor cuando se encuentra en el estado `on` | boolean / string / number | — | true |
| inactive-value | cambia su valor cuando se encuentra en el estado `off` | boolean / string / number | — | false |
-| active-color | color de fondo cuando se encuentra en el estado `on` | string | — | #409EFF |
+| active-color | color de fondo cuando se encuentra en el estado `on` | string | — | #2460e0 |
| inactive-color | color de fondo cuando se encuentra en el estado `off` | string | — | #C0CCDA |
| name | nombre de entrada del componente Switch | string | — | — |
+| validate-event | si se debe lanzar la validación de formulario | boolean | - | true |
### Eventos
diff --git a/examples/docs/es/table.md b/examples/docs/es/table.md
index 490e429b0a7..9cc89711bc5 100644
--- a/examples/docs/es/table.md
+++ b/examples/docs/es/table.md
@@ -1,369 +1,3 @@
-
-
-
-
## Tablas
Visualiza múltiples datos con un formato en particular. Podrá ordenar, filtrar y comparar datos en una tabla.
@@ -543,7 +177,7 @@ Puede destacar el contenido de la tabla para distinguir entre "success, informat
```html
Eliminar
@@ -954,7 +588,7 @@ Cuando los datos se modifican dinámicamente, es posible que necesite que la tab
},
data() {
return {
- tableData4: [{
+ tableData: [{
date: '2016-05-03',
name: 'Tom',
state: 'California',
@@ -1019,7 +653,7 @@ Cuando la estructura de datos es compleja, tu puedes hacer uso de cabeceras agru
```html
- Cambia el estado de selección de la segunda y tercera fila.
+ Cambia el estado de selección de la segunda y tercera fila.
Limpiar selección
@@ -1237,7 +871,7 @@ También puede seleccionar múltiples filas.
export default {
data() {
return {
- tableData3: [{
+ tableData: [{
date: '2016-05-03',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles'
@@ -1455,7 +1089,7 @@ Filtra la tabla para encontrar la información que necesita.
Personalice la columna de la tabla para que pueda integrarse con otros componentes.
-:::demo Tiene acceso a la siguiente informacion: row, column, $index, store (gestor de estados de la tabla) por [Scoped slots](https://vuejs.org/v2/guide/components.html#Scoped-Slots).
+:::demo Tiene acceso a la siguiente información: row, column, $index, store (gestor de estados de la tabla) por [Scoped slots](https://vuejs.org/v2/guide/components.html#Scoped-Slots).
```html
@@ -1641,7 +1275,7 @@ Cuando el contenido de la fila es demasiado largo y busca no mostrar la barra de
export default {
data() {
return {
- tableData3: [{
+ tableData: [{
date: '2016-05-03',
name: 'Tom',
state: 'California',
@@ -1698,6 +1332,126 @@ Cuando el contenido de la fila es demasiado largo y busca no mostrar la barra de
```
:::
+### Datos tree y modo lazy
+
+:::demo Puede visualizar datos de estructura de árbol. Cuando la fila contiene el campo `children`, se trata como datos anidados. Para renderizar datos anidados, la `row-key` es requerida。Ademas, los datos de las filas secundarias pueden ser cargados asincrónicamente. Poner la propiedad `lazy` de Table a true y la función `load`. Especifique el atributo `hasChildren` en la fila para determinar qué fila contiene descendencia. Tanto `children` como `hasChildren` pueden configurarse a través de `tree-props`.
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+:::
+
### Fila de resumen
Para una tabla de números, puede agregar una fila extra en el pie de página de la tabla que muestra la suma de cada columna.
@@ -1706,7 +1460,7 @@ Para una tabla de números, puede agregar una fila extra en el pie de página de
```html
@@ -1737,7 +1491,7 @@ Para una tabla de números, puede agregar una fila extra en el pie de página de
@@ -1877,7 +1631,7 @@ Configurar _rowspan_ y _colspan_ le permite fusionar celdas.
@@ -1910,7 +1664,7 @@ Configurar _rowspan_ y _colspan_ le permite fusionar celdas.
export default {
data() {
return {
- tableData6: [{
+ tableData: [{
id: '12987122',
name: 'Tom',
amount1: '234',
@@ -2061,7 +1815,7 @@ Puede personalizar el índice de la fila con la propiedad `type=index` de las co
| ---------------------- | ---------------------------------------- | ---------------------------------------- | ------------------------------ | ---------------------------------------- |
| data | Datos de la tabla | array | — | — |
| height | Altura de la tabla. Por defecto esta tiene un tamaño `auto`. Si este valor es un número, la altura es medido en pixeles; si este valor es una cadena, la altura es afectada por estilos externos. | string/number | — | — |
-| max-height | Altura máxima de la tabla. La altura de la tabla comienza desde `auto` hasta que alcanza la altura máxima. El `max-height` es medido en pixeles, lo mismo que `height` | string/number | — | — |
+| max-height | Table's max-height. The legal value is a number or the height in px. | string/number | — | — |
| stripe | especifica si la tabla será en franjas | boolean | — | false |
| border | especifica si la tabla tiene bordes verticales | boolean | — | false |
| size | tamaño de la tabla | string | medium / small / mini | — |
@@ -2077,9 +1831,9 @@ Puede personalizar el índice de la fila con la propiedad `type=index` de las co
| header-row-style | función que devuelve estilos personalizados para una fila en la cabecera de la tabla, o un objeto asignando estilos personalizados para cada fila en la cabecera de la tabla | Function({row, rowIndex})/Object | — | — |
| header-cell-class-name | función que devuelve nombre de clases personalizadas para una celda en la cabecera de la tabla, o una cadena asignando nombres de clases para cada celda en la cabecera de la tabla | Function({row, column, rowIndex, columnIndex})/String | — | — |
| header-cell-style | función que devuelve estilos personalizados para una celda en la cabecera de la tabla, o un objeto asignando estilos personalizados para cada celda en la cabecera de la tabla | Function({row, column, rowIndex, columnIndex})/Object | — | — |
-| row-key | clave de datos de la fila, utilizada para optimizar la representación de los datos. Es obligatorio `reserve-selection` esta habilitado. Cuando su tipo es string, se permite el acceso multinivel, por ejemplo, `user.info.id`, pero `user.info[0].id` no es permitido, en cuyo caso se debe usar una `function` | Function(row)/String | — | — |
+| row-key | key de los datos de las filas, utilizada para optimizar el renderizado. Requerido si `reserve-selection` está activada o muestra los datos del árbol. Cuando su tipo es String, se admite el acceso multinivel, por ejemplo, `user.info.id`, pero `user.info[0].id` no se admite, en cuyo caso se debe utilizar la función. | Function(row)/String | — | — |
| empty-text | Texto mostrado cuando no existen datos. Puede personalizar esta área con `slot="empty"` | String | — | No Data |
-| default-expand-all | especifica si todas las filas se expanden por defeto, solo funciona cuando la tabla tiene una columna `type="expand"` | Boolean | — | false |
+| default-expand-all | especifica si todas las filas se expanden por defecto, solo funciona cuando la tabla tiene una columna `type="expand"` | Boolean | — | false |
| expand-row-keys | establece las filas expandidas a través de esta propiedad, este valor es la clave de filas expandidas, debería establecer `row-key` antes de usar esta propiedad | Array | — | |
| default-sort | establece la columna y orden por defecto. La propiedad `prop` es utilizada para establecer la columna de ordenamiento por defecto, la propiedad `order` es utilizada para definir el tipo de orden por defecto | Object | `order`: ascending, descending | if `prop` is set, and `order` is not set, then `order` is default to ascending |
| tooltip-effect | propiedad `effect` para efectos en tooltip | String | dark/light | |
@@ -2087,7 +1841,11 @@ Puede personalizar el índice de la fila con la propiedad `type=index` de las co
| sum-text | texto a mostrar para la primer columna de la fila de resumen | String | — | Sum |
| summary-method | método personalizado para resumen | Function({ columns, data }) | — | — |
| span-method | método que devuelve _rowspan_ y _colspan_ | Function({ row, column, rowIndex, columnIndex }) | — | — |
-| select-on-indeterminate | controla el comportamiento del checkbox maestro en tablas de selección múltiple cuando sólo se seleccionan algunas filas (pero no todas). Si es true, todas las filas serán seleccionadas, de lo contrario deseleccionadas. | Boolean | — | true |
+| select-on-indeterminate | controla el comportamiento del checkbox maestro en tablas de selección múltiple cuando sólo se seleccionan algunas filas (pero no todas). Si es true, todas las filas serán seleccionadas, de lo contrario deseleccionadas. | Boolean | — | true |
+| indent | indentación horizontal de los datos en formato tree | Number | — | 16 |
+| lazy | si se realiza un lazy loading de los datos | Boolean | — | — |
+| load | método para cargar las filas de los hijos, solamente funciona cuando `lazy`es true | Function(row, treeNode, resolve) | — | — |
+| tree-props | configuración para renderizar datos anidados | Object | — | { hasChildren: 'hasChildren', children: 'children' } |
### Eventos de la tabla
| Nombre del evento | Descripción | Parámetros |
@@ -2099,24 +1857,24 @@ Puede personalizar el índice de la fila con la propiedad `type=index` de las co
| cell-mouse-leave | se dispara cuando se desplaza fuera de una celda | row, column, cell, event |
| cell-click | se dispara cuando se hace clic en una celda | row, column, cell, event |
| cell-dblclick | se dispara cuando se hace doble clic en una celda | row, column, cell, event |
-| row-click | se dispara cuando se hace clic en una fila | row, event, column |
-| row-contextmenu | se dispara cuando el usuario hace clic derecho en una fila | row, event |
-| row-dblclick | se dispara cuando se hace doble clic en una fila | row, event |
-| header-click | se dispara cuando se hace click en una cabecera de columna | column, event |
+| row-click | se dispara cuando se hace clic en una fila | row, column, event |
+| row-contextmenu | se dispara cuando el usuario hace clic derecho en una fila | row, column, event |
+| row-dblclick | se dispara cuando se hace doble clic en una fila | row, column, event |
+| header-click | se dispara cuando se hace clic en una cabecera de columna | column, event |
| header-contextmenu | se dispara cuando el usuario hace clic derecho en una cabecera de columna | column, event |
| sort-change | se dispara cuando el ordenamiento de la tabla cambia | { column, prop, order } |
| filter-change | clave de la columna. Si necesitas utilizar el evento filter-change, este atributo es obligatorio para identificar cuál columna está siendo filtrada | filters |
| current-change | se dispara cuando la fila actual cambia | currentRow, oldCurrentRow |
| header-dragend | se dispara después de modificar el ancho de una columna arrastrando el borde de la cabecera. | newWidth, oldWidth, column, event |
-| expand-change | se dispara cuando el usuario expande o colapsa una fila | row, expandedRows |
+| expand-change | se activa cuando el usuario expande o colapsa una fila (para la tabla expansible, el segundo parámetro es expandedRows; para la tabla de árbol, el segundo parámetro es expanded) | row, (expandedRows \| expanded) |
### Métodos de la tabla
| Metodo | Descripción | Parametros |
| ------------------ | ---------------------------------------- | ------------- |
| clearSelection | utilizado en selección múltiple de la tabla, limpiar selección | — |
| toggleRowSelection | utilizado en selección múltiple de la tabla, alterna si una cierta fila es seleccionada. Con el segundo parámetro, puede directamente establecer si la fila es seleccionada | row, selected |
-| toggleAllSelection | usado en Table de seleccion multiple, cambia los estados de seleccion de todas las filas. | - |
-| toggleRowExpansion | utilizado en tabla expandible, alterna si una cierta fila es expandida. Con el segundo parámetro, puede directamente establecer si esta fila es expandida o colapsada | row, expanded |
+| toggleAllSelection | usado en Table de selección múltiple, cambia los estados de selección de todas las filas. | - |
+| toggleRowExpansion | utilizado en la Tabla expandible o en la Tabla de árbol, conmutar si se desglosa una determinada línea. Con el segundo parámetro, se puede fijar directamente si esta línea se desglosa o se pliega | row, expanded |
| setCurrentRow | utilizado en tabla con selección sencilla, establece una cierta fila seleccionada. Si es llamado sin ningún parámetro, este puede limpiar la selección | row |
| clearSort | limpiar ordenamiento, restaurar datos a orden original | — |
| clearFilter | Se utiliza para borrar todas las condiciones de filtro cuando no se pasan parámetros, los datos se restaurarán a un estado sin filtrar, o se puede pasar una matriz de columnas para borrar las condiciones de filtro de la columna especificada. | columnKey |
@@ -2132,7 +1890,7 @@ Puede personalizar el índice de la fila con la propiedad `type=index` de las co
| Atributo | Descripción | Tipo | Valores aceptados | Por defecto |
| --------------------- | ---------------------------------------- | --------------------------------- | ----------------------------- | ----------- |
| type | tipo de la columna. Si se establece a `selection`, la columna puede mostrar un _checkbox_. Si se establece a `index`, la columna puede mostrar el índice de la fila (iniciando desde 1). Si se establece a `expand`, la columna puede mostrar un ícono para expandir. | string | selection/index/expand | — |
-| index | personalice los índices para cada fila, funciona en columnas con `type=index` | string, Function(index) | - | - |
+| index | personalice los índices para cada fila, funciona en columnas con `type=index` | number, Function(index) | - | - |
| label | etiqueta de la columna | string | — | — |
| column-key | clave de la columna. Si necesita utilizar el evento `filter-change`, necesita el atributo para identificar cual columna está siendo filtrada | string | string | — |
| prop | nombre del campo. También puede usar su alias: `property` | string | — | — |
@@ -2143,7 +1901,7 @@ Puede personalizar el índice de la fila con la propiedad `type=index` de las co
| sortable | especifica que columna puede ser ordenado. El ordenamiento remoto puede ser hecho configurando el atributo `custom` y escucha al evento de tabla `sort-change` | boolean, string | true, false, custom | false |
| sort-method | método de ordenamiento, funciona cuando `sortable` está en `true`. Debería devolver un número, al igual que Array.sort | Function(a, b) | — | — |
| sort-by | especifica por cual propiedad de va a ordenar, funciona cuando `sortable` es `true` y `sort-method` es `undefined`. Si se establece a un arreglo, la columna ordenara secuencialmente por la siguiente propiedad si la anterior es igual | Function(row, index)/String/Array | — | — |
-| sort-orders | the order of the sorting strategies used when sorting the data, works when `sortable` is `true`. Accepts an array, as the user clicks on the header, the column is sorted in order of the elements in the array | array | the elements in the array need to be one of the following: `ascending`, `descending` and `null` (restores to the original order) | ['ascending', 'descending', null] |
+| sort-orders | el orden de las estrategias de ordenación utilizadas al ordenar los datos, funciona cuando `sortable` es `true`. Acepta un array, a medida que el usuario hace clic en el encabezado, la columna se ordena en el orden de los elementos del array. | array | los elementos en el arreglo necesitan ser uno de los siguientes: `ascending`, `descending` y `null` (restaura el orden original) | ['ascending', 'descending', null] |
| resizable | especifica si el ancho de la columna puede ser redimensionado, funciona cuando `border` de `el-table` está en `true` | boolean | — | false |
| formatter | función que formatea el contenido de la celda | Function(row, column, cellValue, index) | — | — |
| show-overflow-tooltip | especifica si el _tooltip_ debe ocultarse o mostrarse al hacer _hover_ en la celda | boolean | — | false |
@@ -2152,9 +1910,9 @@ Puede personalizar el índice de la fila con la propiedad `type=index` de las co
| class-name | nombre de clase de la celda en la columna | string | — | — |
| label-class-name | nombre de clase de la etiqueta de esta columna | string | — | — |
| selectable | función que determina si una cierta fila puede ser seleccionada, funciona cuando `type` esta en `selection` | Function(row, index) | — | — |
-| reserve-selection | especifica si se reserva la selección después de actualizar los datos, funciona cuando `type` está en `selection`. Note that `row-key` is required for this to work | boolean | — | false |
+| reserve-selection | especifica si se reserva la selección después de actualizar los datos, funciona cuando `type` está en `selection`. Note que `row-key` es requerido para que esto funcione | boolean | — | false |
| filters | un arreglo de opciones para filtrado de datos. Para cada elemento en este arreglo, `text` y `value` son obligatorios | Array[{ text, value }] | — | — |
-| filter-placement | colocación para el menu desplegable del filtro | String | same as Tooltip's `placement` | — |
+| filter-placement | colocación para el menú desplegable del filtro | String | same as Tooltip's `placement` | — |
| filter-multiple | especifica si el filtrado de datos soporta múltiples opciones | Boolean | — | true |
| filter-method | método para filtrado de datos. Si `filter-multiple` está habilitado, este método se invocará varias veces para cada fila, y una fila puede mostrar si una de las llamadas devuelve `true` | Function(value, row, column) | — | — |
| filtered-value | el valor del filtro para los datos seleccionados, puede ser útil cuando el encabezado de la tabla se representará con `render-header` | Array | — | — |
diff --git a/examples/docs/es/tabs-dotted.md b/examples/docs/es/tabs-dotted.md
new file mode 100644
index 00000000000..b8837a53bc9
--- /dev/null
+++ b/examples/docs/es/tabs-dotted.md
@@ -0,0 +1 @@
+## TabsDotted
diff --git a/examples/docs/es/tabs.md b/examples/docs/es/tabs.md
index bafae0b3dc4..8c3c7bc5280 100644
--- a/examples/docs/es/tabs.md
+++ b/examples/docs/es/tabs.md
@@ -1,95 +1,3 @@
-
-
## Tabulación
Divide colecciones de datos que están relacionados pero pertenecen a diferentes tipos.
@@ -201,7 +109,7 @@ Es posible usar el atributo `tab-position` para establecer la posición de la ta
export default {
data() {
return {
- tabPosition: 'top'
+ tabPosition: 'left'
};
}
};
@@ -302,14 +210,14 @@ Solo las pestañas de tipo tarjeta soportan adición y cierre.
add tab
-
+
{
if (tab.name === targetName) {
@@ -358,8 +266,8 @@ Solo las pestañas de tipo tarjeta soportan adición y cierre.
});
}
- this.editableTabsValue2 = activeName;
- this.editableTabs2 = tabs.filter(tab => tab.name !== targetName);
+ this.editableTabsValue = activeName;
+ this.editableTabs = tabs.filter(tab => tab.name !== targetName);
}
}
}
@@ -368,30 +276,30 @@ Solo las pestañas de tipo tarjeta soportan adición y cierre.
:::
### Atributos de Pestañas
-| Atributo | Descripción | Tipo | Valores aceptados | Por defecto |
-| ------------ | ------------------------------------ | ------- | --------------------- | --------------------------- |
-| type | tipo de Pestaña | string | card/border-card | — |
-| closable | si la Pestaña es cerrable | boolean | — | false |
-| addable | si la Pestaña es añadible | boolean | — | false |
-| editable | si la Pestaña es añadible y cerrable | boolean | — | false |
-| value | nombre de la pestaña seleccionada | string | — | nombre de la primer pestaña |
-| tab-position | posición de tabulación | string | top/right/bottom/left | top |
-| stretch | si el ancho del tab se ajusta automáticamente a su contenedor | boolean | - | false |
-| before-leave | función `hook` antes de cambiar de pestaña. Si se devuelve `false` o se devuelve una `Promise` y luego se rechaza, se evitará el cambio. | Function(activeName, oldActiveName) | — | — |
+| Atributo | Descripción | Tipo | Valores aceptados | Por defecto |
+| -------------- | ------------------------------------ | ------- | --------------------- | --------------------------- |
+| value / v-model | valor enlazado, nombre de la pestaña seleccionada | string | — | nombre de la primer pestaña |
+| type | tipo de Pestaña | string | card/border-card | — |
+| closable | si la Pestaña es cerrable | boolean | — | false |
+| addable | si la Pestaña es añadible | boolean | — | false |
+| editable | si la Pestaña es añadible y cerrable | boolean | — | false |
+| tab-position | posición de tabulación | string | top/right/bottom/left | top |
+| stretch | si el ancho del tab se ajusta automáticamente a su contenedor | boolean | - | false |
+| before-leave | función `hook` antes de cambiar de pestaña. Si se devuelve `false` o se devuelve una `Promise` y luego se rechaza, se evitará el cambio. | Function(activeName, oldActiveName) | — | — |
### Eventos de Pestañas
-| Nombre de Evento | Descripción | Parámetros |
-| ---------------- | ---------------------------------------- | ----------------------------- |
-| tab-click | se lanza cuando se hace click a una pestaña | pestaña clickeada |
-| tab-remove | se lanza cuando se hace click al botón tab-remove | nombre de la pestaña removida |
-| tab-add | se lanza cuando se hace click al botón tab-add | — |
+| Nombre de Evento | Descripción | Parámetros |
+| ---------------- | ------------------------------------------------------------ | ----------------------------- |
+| tab-click | se lanza cuando se hace clic a una pestaña | pestaña clickeada |
+| tab-remove | se lanza cuando se hace clic al botón tab-remove | nombre de la pestaña removida |
+| tab-add | se lanza cuando se hace clic al botón tab-add | — |
| edit | se lanza cuando los botones de tab-add y/o tab-remove son clickeados | (targetName, action) |
-### Attributos del Tab-pane
+### Atributos del Tab-pane
| Atributo | Descripción | Tipo | Valores Aceptados | Default |
| -------- | ------------------------------------------------------------ | ------- | ----------------- | ------------------------------------------------------------ |
| label | título de la pestaña | string | — | — |
| disabled | si la Tabulación está deshabilitada | boolean | — | false |
-| name | identificador correspondiente al activeName de la Tabulación, representando el alias del tab-pane | string | — | número ordinal del tab-pane en la secuencia, p.ej el primer tab-pane de pestañas es '1' |
+| name | identificador correspondiente al value de la Tabulación, representando el alias del tab-pane | string | — | número ordinal del tab-pane en la secuencia, p.ej el primer tab-pane de pestañas es '1' |
| closable | si el Tab es cerrable | boolean | — | false |
| lazy | si Tab es renderizado con `lazy-load` | boolean | — | false |
diff --git a/examples/docs/es/tag.md b/examples/docs/es/tag.md
index a884f497770..f87faa25a07 100644
--- a/examples/docs/es/tag.md
+++ b/examples/docs/es/tag.md
@@ -1,62 +1,3 @@
-
-
-
-
## Tag
Se utiliza para marcar y seleccionar.
@@ -66,11 +7,11 @@ Se utiliza para marcar y seleccionar.
:::demo Utilice el atributo `type` para definir el tipo de etiqueta. Además, el atributo `color` se puede utilizar para establecer el color de fondo de la etiqueta.
```html
-Tag One
-Tag Two
-Tag Three
-Tag Four
-Tag Five
+Tag 1
+Tag 2
+Tag 3
+Tag 4
+Tag 5
```
:::
@@ -198,18 +139,65 @@ Además del tamaño predeterminado, el componente Tag proporciona tres tamaños
```
:::
+### Theme
+
+Tag provide three different themes: `dark`、`light` and `plain`
+
+:::demo Using `effect` to change, default is `light`
+```html
+
+ Dark
+
+ {{ item.label }}
+
+
+
+ Plain
+
+ {{ item.label }}
+
+
+
+
+```
+:::
+
### Atributos
| Atributo | Descripción | Tipo | Valores aceptados | Por defecto |
| ------------------- | ----------------------------------- | ------- | --------------------------- | ----------- |
-| type | tema | string | success/info/warning/danger | — |
+| type | tipo de Tag | string | success/info/warning/danger | — |
| closable | si el Tag puede ser removido | boolean | — | false |
| disable-transitions | si se deshabilitan las animaciones | boolean | — | false |
| hit | si el Tag tiene un borde resaltado | boolean | — | false |
| color | color de fondo del Tag | string | — | — |
| size | tamaño del Tag | string | medium / small / mini | — |
+| effect | Tema del Tag | string | dark / light / plain | light |
### Eventos
| Nombre | Descripción | Parametros |
| ------ | ------------------------------------ | ---------- |
-| close | se disoara cuando el Tag es removido | — |
\ No newline at end of file
+| click | se dispara cuando el Tag es clic | — |
+| close | se dispara cuando el Tag es removido | — |
diff --git a/examples/docs/es/time-picker.md b/examples/docs/es/time-picker.md
index 716b2d18448..36e20f8fab7 100644
--- a/examples/docs/es/time-picker.md
+++ b/examples/docs/es/time-picker.md
@@ -1,23 +1,15 @@
-
-
## Selector de Tiempo
Use el Time Picker para input de tipo time.
### Selector de tiempo fijo
-Provee una lista de tiempo fijo para que los usuarios escogan.
+Provee una lista de tiempo fijo para que los usuarios escojan.
:::demo Use el tag `el-time-select`, se pueden asignar tiempo de inicio, tiempo de finalización y salto de tiempo con `start`, `end` y `step`.
```html
@@ -134,7 +126,7 @@ Es posible escoger un rango de tiempo arbitrario.
@@ -145,8 +137,8 @@ Es posible escoger un rango de tiempo arbitrario.
export default {
data() {
return {
- value4: [new Date(2016, 9, 10, 8, 40), new Date(2016, 9, 10, 9, 40)],
- value5: [new Date(2016, 9, 10, 8, 40), new Date(2016, 9, 10, 9, 40)]
+ value1: [new Date(2016, 9, 10, 8, 40), new Date(2016, 9, 10, 9, 40)],
+ value2: [new Date(2016, 9, 10, 8, 40), new Date(2016, 9, 10, 9, 40)]
};
}
}
@@ -154,25 +146,10 @@ Es posible escoger un rango de tiempo arbitrario.
```
:::
-
-
### Atributos
| Atributo | Descripción | Tipo | Valores aceptados | Por defecto |
| ----------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | -------------------- |
+| value / v-model | valor enlazado | date(TimePicker) / string(TimeSelect) | - | - |
| readonly | si el Time Picker está en modo de sólo lectura | boolean | — | false |
| disabled | si el Time Picker se encuentra deshabilitado | boolean | — | false |
| editable | si el input puede ser editado | boolean | — | true |
@@ -183,7 +160,6 @@ Es posible escoger un rango de tiempo arbitrario.
| end-placeholder | placeholder para el tiempo de finalización en modo de rango | string | — | — |
| is-range | si es posible escoger un rango de tiempo, solo funciona con `` | boolean | — | false |
| arrow-control | si es posible escoger el tiempo usando los botones de flecha, solo funciona con `` | boolean | — | false |
-| value | valor del selector | Fecha para Selector de Tiempo, string para el Seleccionador de Tiempo | hour `HH`, minute `mm`, second `ss` | HH:mm:ss |
| align | alineación | left / center / right | left | |
| popper-class | nombre de clase personalizada para el dropdown del Time Picker | string | — | — |
| picker-options | opciones adicionales, revisar la tabla posterior | object | — | {} |
diff --git a/examples/docs/es/timeline.md b/examples/docs/es/timeline.md
new file mode 100644
index 00000000000..1c76ca6ed37
--- /dev/null
+++ b/examples/docs/es/timeline.md
@@ -0,0 +1,153 @@
+## Timeline
+
+Línea de tiempo visual.
+
+### Uso básico
+
+El Timeline puede ser dividido en múltiples actividades en forma ascendente o descendente. Las marcas de tiempo son características importantes que los distinguen de otros componentes. Observe la diferencia con Steps.
+
+:::demo
+```html
+
+
+ Order:
+
+ descending
+ ascending
+
+
+
+
+
+ {{activity.content}}
+
+
+
+
+
+```
+:::
+
+### Nodo personalizado
+
+El tamaño, el color y los iconos se pueden personalizar en el nodo.
+
+:::demo
+```html
+
+
+
+ {{activity.content}}
+
+
+
+
+
+```
+:::
+
+### Marcas de tiempo personalizadas
+
+Las marcas de tiempo ( timestamp ) puede colocarse encima del contenido cuando éste es demasiado alto.
+
+:::demo
+```html
+
+
+
+
+ Update Github template
+ Tom committed 2018/4/12 20:46
+
+
+
+
+ Update Github template
+ Tom committed 2018/4/3 20:46
+
+
+
+
+ Update Github template
+ Tom committed 2018/4/2 20:46
+
+
+
+
+```
+:::
+
+### Timeline Atributos
+| Atributo | Descripción | Tipo | Valores aceptados | Por defecto |
+|---------- |-------- |---------- |------------- |-------- |
+| reverse | Si el node es ascendente o descendente. Por defecto es ascendente | boolean | — | false |
+
+### Timeline-item Atributos
+| Atributo | Descripción | Tipo | Valores aceptados | Por defecto |
+|---------- |-------- |---------- |------------- |-------- |
+| timestamp | Contenido de las marcas de tiempo | string | - | — |
+| hide-timestamp | Si se muestra o no timestamp | boolean | — | false |
+| placement | la posición de timestamp | string | top / bottom | bottom |
+| type | tipo de nodo | string | primary / success / warning / danger / info | - |
+| color | color de fondo del nodo | string | hsl / hsv / hex / rgb | - |
+| size | tamaño del nodo | string | normal / large | normal |
+| icon | nombre de la clase del icono | string | — | - |
+
+### Timeline-Item Slot
+| name | Description |
+|------|--------|
+| — | Contenido personalizado del ítem del timeline |
+| dot | Definición personalizada del nodo |
diff --git a/examples/docs/es/tooltip.md b/examples/docs/es/tooltip.md
index 91d9a198977..b1be34b4e4a 100644
--- a/examples/docs/es/tooltip.md
+++ b/examples/docs/es/tooltip.md
@@ -1,60 +1,3 @@
-
-
-
-
## Tooltip
Mostrar aviso de información con el hover del mouse.
@@ -156,7 +99,7 @@ Tooltip tiene 9 colocaciones.
### Tema
-Tooltip tiene dos temas: `dark` and `light`.
+Tooltip tiene dos temas: `dark` y `light`.
:::demo Establecer `effect` para modificar el tema, el valor por defecto es `dark`.
```html
@@ -173,7 +116,7 @@ Tooltip tiene dos temas: `dark` and `light`.
Despliegue múltiples líneas de texto y establezca su formato.
-:::demo Sobre-escribiba el atributo `content` del `el-tooltip` añadiendo un slot llamado `content`.
+:::demo Sobrecriba el atributo `content` del `el-tooltip` añadiendo un slot llamado `content`.
```html
multiple lines
second line
@@ -190,7 +133,7 @@ el atributo `transition` permite personalizar la animación con la que el Toolti
el atributo `disabled` permite deshabilitar `tooltip`. Solo es necesario definirlo como `true`.
-De hecho, Tooltip es una extension basada en [Vue-popper](https://github.com/element-component/vue-popper), es posible utilizar cualquier atributo permitido en Vue-popper.
+De hecho, Tooltip es una extensión basada en [Vue-popper](https://github.com/element-component/vue-popper), es posible utilizar cualquier atributo permitido en Vue-popper.
:::demo
```html
@@ -200,6 +143,16 @@ De hecho, Tooltip es una extension basada en [Vue-popper](https://github.com/ele
+
+
-
-
-
## Transfer
### Uso básico
-:::demo Los datos se pasan a Transfer a través del atributo `data`. Los datos tienen que ser un array de objetos, y cada objeto debe tener estos atributos: `key` que será el identificador del item, `label` que será el texto a mostrar, y `disabled` que indicará si el elemento esta desactivado. Los items dentro de la lista destino están sincronizados con la variable asociada a `v-model`, y el valor de esa variable es un array de claves de los elementos de la lista destino. Así que si no quiere que la lista destino esté vacía inicialmente puede inicializar el `v-model` con un array.
+:::demo Los datos se pasan a Transfer a través del atributo `data`. Los datos tienen que ser un array de objetos, y cada objeto debe tener estos atributos: `key` que será el identificador del ítem, `label` que será el texto a mostrar, y `disabled` que indicará si el elemento esta desactivado. Los items dentro de la lista destino están sincronizados con la variable asociada a `v-model`, y el valor de esa variable es un array de claves de los elementos de la lista destino. Así que si no quiere que la lista destino esté vacía inicialmente puede inicializar el `v-model` con un array.
```html
@@ -99,7 +26,7 @@
};
return {
data: generateData(),
- value1: [1, 4]
+ value: [1, 4]
};
}
};
@@ -111,22 +38,22 @@
Puede buscar y filtrar los items.
-:::demo Ponga el atributo `filterable` a true para permitir el filtrado.Por defecto si el `label` del item contiene el término buscado será incluido en el resultado. También puede implementar su propio método de filtrado con el atributo `filter-method`, que recibe un método y le pasa la búsqueda y cada item. Los items para los que devuelva true serán incluidos en el resultado de la búsqueda.
+:::demo Ponga el atributo `filterable` a true para permitir el filtrado.Por defecto si el `label` del ítem contiene el término buscado será incluido en el resultado. También puede implementar su propio método de filtrado con el atributo `filter-method`, que recibe un método y le pasa la búsqueda y cada ítem. Los items para los que devuelva true serán incluidos en el resultado de la búsqueda.
```html
+ v-model="value"
+ :data="data">
diff --git a/examples/docs/es/tree.md b/examples/docs/es/tree.md
index c6d11bc8c77..c66065aa10c 100644
--- a/examples/docs/es/tree.md
+++ b/examples/docs/es/tree.md
@@ -1,382 +1,3 @@
-
-
-
-
## Tree
Muestra un conjunto de datos jerárquicos.
@@ -512,13 +133,13 @@ Usado para la selección de nodos.
```
:::
-### Nodos hoja en modo perezoso
+### Nodos hoja en modo perezoso (lazy load)
:::demo Los datos de un nodo no son cargados hasta que no es pinchado, así que el árbol no puede predecir si es una hoja. Por eso a cada nodo se le añade el botón de desplegar, y si el nodo es una hoja el botón desaparecerá al pinchar en él. También puede decirle al árbol que el nodo es una hoja de antemano, y así evita que muestre el botón de desplegar.
```html
@@ -527,7 +148,7 @@ Usado para la selección de nodos.
export default {
data() {
return {
- props1: {
+ props: {
label: 'name',
children: 'zones',
isLeaf: 'leaf'
@@ -535,7 +156,7 @@ Usado para la selección de nodos.
};
},
methods: {
- loadNode1(node, resolve) {
+ loadNode(node, resolve) {
if (node.level === 0) {
return resolve([{ name: 'region' }]);
}
@@ -562,10 +183,10 @@ Usado para la selección de nodos.
El checkbox de un nodo se puede poner como desactivado.
-:::demo En el ejemplo, la propiedad 'disabled' se declara en defaultProps, y algunos nodos se ponen como 'disabled:true'. Los checkboxes correspondientes son desactivados y no se pueden pinchar.
+:::demo En el ejemplo, la propiedad `disabled` se declara en `defaultProps`, y algunos nodos se ponen como `disabled:true`. Los checkboxes correspondientes son desactivados y no se pueden pinchar.
```html
@@ -575,7 +196,7 @@ El checkbox de un nodo se puede poner como desactivado.
export default {
data() {
return {
- data3: [{
+ data: [{
id: 1,
label: 'Level one 1',
children: [{
@@ -621,7 +242,7 @@ Los nodos pueden estar desplegados o seleccionados por defecto.
:::demo Utilice `default-expanded-keys` y `default-checked-keys` para establecer los nodos desplegados y seleccionados respectivamente. Tenga en cuenta que para que funcione es necesario que tengan `node-key`. Su valor es el nombre de una clave en el objeto data, y el valor de la clave debe ser único en todo el árbol.
```html
Using render-content
Using scoped slot
+ ref="tree">
## Tipografía
Creamos una convención de fuentes para asegurar la mejor presentación en diferentes plataformas.
-### Fuente en chino
-
-
- 和畅惠风
- PingFang SC
-
-
- 和畅惠风
- Hiragino Sans GB
+### Fuente
+
+
+
+
+
+
+
-
- 和畅惠风
- Microsoft YaHei
-
-
-### Inglés / Fuente Numérica
-
-
- RGag
- Helvetica Neue
-
-
- RGag
- Helvetica
-
-
- RGag
- Arial
-
-
-### Font-family
-
-```css
-font-family: "Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;
-```
### Convención de fuentes
-
- Main Title
- Build with Element
- 20px Extra large
+
+ Level
+ Font Size
+ Demo
+
+
+ Supplementary text
+ {{font_size_extra_small}} Extra Small
+ Build with Element
-
- Title
- Build with Element
- 18px large
+
+ Body (small)
+ {{font_size_small}} Small
+ Build with Element
-
- Small Title
- Build with Element
- 16px Medium
+
+ Body
+ {{font_size_base}} Base
+ Build with Element
-
- Body
- Build with Element
- 14px Small
+
+ Small Title
+ {{font_size_medium}} Medium
+ Build with Element
-
- Body (small)
- Build with Element
- 13px Extra Small
+
+ Title
+ {{font_size_large}} large
+ Build with Element
-
- Supplementary text
- Build with Element
- 12px Extra Extra Small
+
+ Main Title
+ {{font_size_extra_large}} Extra large
+ Build with Element
+### Font Line Height
+
+
+
+
+- line-height:1 No line height
+- line-height:1.3 Compact
+- line-height:1.5 Regular
+- line-height:1.7 Loose
+
+
+
+### Font-family
+
+```css
+font-family: "Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;
+```
diff --git a/examples/docs/es/upload.md b/examples/docs/es/upload.md
index d6adcb7bd95..454aa4fc7cd 100644
--- a/examples/docs/es/upload.md
+++ b/examples/docs/es/upload.md
@@ -1,119 +1,3 @@
-
-
-
## Carga de archivos
Carga archivos haciendo clic o arrastrándolos.
@@ -182,7 +66,7 @@ Utilice el _hook_ `before-upload` para limitar el formato de archivo y su tamañ
overflow: hidden;
}
.avatar-uploader .el-upload:hover {
- border-color: #409EFF;
+ border-color: #2460e0;
}
.avatar-uploader-icon {
font-size: 28px;
@@ -266,6 +150,75 @@ Utilice la propiedad `list-type` para cambiar el estilo a un listado de archivos
```
:::
+### Custom file thumbnail
+
+Use `scoped-slot` to change default thumbnail template.
+
+:::demo
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+:::
+
### Lista de archivos con miniatura
:::demo
@@ -275,7 +228,7 @@ Utilice la propiedad `list-type` para cambiar el estilo a un listado de archivos
action="https://jsonplaceholder.typicode.com/posts/"
:on-preview="handlePreview"
:on-remove="handleRemove"
- :file-list="fileList2"
+ :file-list="fileList"
list-type="picture">
Clic para subir archivo
Solo archivos jpg/png con un tamaño menor de 500kb
@@ -284,7 +237,7 @@ Utilice la propiedad `list-type` para cambiar el estilo a un listado de archivos
export default {
data() {
return {
- fileList2: [{name: 'food.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}, {name: 'food2.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}]
+ fileList: [{name: 'food.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}, {name: 'food2.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}]
};
},
methods: {
@@ -310,7 +263,7 @@ Utilice el _hook_ `on-change` para controlar la funcionalidad de la lista de arc
class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/"
:on-change="handleChange"
- :file-list="fileList3">
+ :file-list="fileList">
Clic para subir archivo
Solo archivos jpg/png con un tamaño menor de 500kb
@@ -318,7 +271,7 @@ Utilice el _hook_ `on-change` para controlar la funcionalidad de la lista de arc
export default {
data() {
return {
- fileList3: [{
+ fileList: [{
name: 'food.jpeg',
url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'
}, {
@@ -329,7 +282,7 @@ Utilice el _hook_ `on-change` para controlar la funcionalidad de la lista de arc
},
methods: {
handleChange(file, fileList) {
- this.fileList3 = fileList.slice(-3);
+ this.fileList = fileList.slice(-3);
}
}
}
@@ -384,33 +337,33 @@ Puede arrastrar el archivo dentro de un área en especifico para cargar el archi
:::
### Atributos
-| Atributo | Descripción | Tipo | Valores aceptados | Por defecto |
-| ---------------- | ---------------------------------------- | ---------------------------------- | ------------------------- | ----------- |
-| action | obligatorio, URL de la petición | string | — | — |
-| headers | cabeceras de la petición | object | — | — |
-| multiple | especifica si se permite subir múltiples archivos | boolean | — | — |
-| data | opciones adicionales de la petición | object | — | — |
-| name | nombre clave del archivo | string | — | file |
-| with-credentials | especifica si enviará cookies | boolean | — | false |
-| show-file-list | especifica si se debe mostrar la lista de archivos cargados | boolean | — | true |
-| drag | se especifica si se activará el modo arrastrar y soltar | boolean | — | false |
+| Atributo | Descripción | Tipo | Valores aceptados | Por defecto |
+| ---------------- | ------------------------------------------------------------ | ---------------------------------- | ------------------------- | ----------- |
+| action | obligatorio, URL de la petición | string | — | — |
+| headers | cabeceras de la petición | object | — | — |
+| multiple | especifica si se permite subir múltiples archivos | boolean | — | — |
+| data | opciones adicionales de la petición | object | — | — |
+| name | nombre clave del archivo | string | — | file |
+| with-credentials | especifica si enviará cookies | boolean | — | false |
+| show-file-list | especifica si se debe mostrar la lista de archivos cargados | boolean | — | true |
+| drag | se especifica si se activará el modo arrastrar y soltar | boolean | — | false |
| accept | acepta [tipos de archivos](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-accept), puede no funcionar cuando `thumbnail-mode` esta en `true` | string | — | — |
-| on-preview | _hook_ lanzado al hacer clic en los archivos subidos | function(file) | — | — |
-| on-remove | _hook_ lanzado cuando los archivos son eliminados | function(file, fileList) | — | — |
+| on-preview | _hook_ lanzado al hacer clic en los archivos subidos | function(file) | — | — |
+| on-remove | _hook_ lanzado cuando los archivos son eliminados | function(file, fileList) | — | — |
| on-success | _hook_ lanzado cuando los archivos fueron cargados correctamente | function(response, file, fileList) | — | — |
-| on-error | _hook_ lanzado cuando han ocurrido algunos errores | function(err, file, fileList) | — | — |
-| on-progress | _hook_ lanzado cuando se produce algún progreso | function(event, file, fileList) | — | — |
+| on-error | _hook_ lanzado cuando han ocurrido algunos errores | function(err, file, fileList) | — | — |
+| on-progress | _hook_ lanzado cuando se produce algún progreso | function(event, file, fileList) | — | — |
| on-change | _hook_ lanzado cuando el archivo seleccionado se carga correctamente o falla | function(file, fileList) | — | — |
| before-upload | _hook_ lanzado antes de que el archivo sea cargado. Si este devuelve `true` o `Promise` entonces será rechazado, la carga puede ser cancelada | function(file) | — | — |
-| before-remove | _hook_ lanzado antes de eliminar un archivo. Los parametros son el archivo y la lista de archivos. Si se devuelve `false` o se devuelve una `Promise` y que luego es rechazada, la eliminación será abortada. | function(file, fileList) | — | — |
-| thumbnail-mode | especifica si se mostrará la miniatura | boolean | — | false |
+| before-remove | _hook_ lanzado antes de eliminar un archivo. Los parámetros son el archivo y la lista de archivos. Si se devuelve `false` o se devuelve una `Promise` y que luego es rechazada, la eliminación será abortada. | function(file, fileList) | — | — |
+| thumbnail-mode | especifica si se mostrará la miniatura | boolean | — | false |
| file-list | archivos cargados por defecto, por ejemplo, [{name: 'food.jpg', url: 'https://xxx.cdn.com/xxx.jpg'}] | array | — | [] |
-| list-type | tipo de lista de archivos | string | text/picture/picture-card | text |
-| auto-upload | se especifica si se autocargan archivos | boolean | — | true |
-| http-request | sobreescribe el comportamiento por defecto de xhr, permitiendo implementar tu propia petición de carga de archivos | function | — | — |
-| disabled | especifica si se deshabilita la carga de archivos | boolean | — | false |
-| limit | número máximo de cargas permitidas | number | — | — |
-| on-exceed | _hook_ lanzado cuando el límite ha sido excedido | function(files, fileList) | — | - |
+| list-type | tipo de lista de archivos | string | text/picture/picture-card | text |
+| auto-upload | se especifica si se autocargan archivos | boolean | — | true |
+| http-request | sobrescribe el comportamiento por defecto de xhr, permitiendo implementar tu propia petición de carga de archivos | function | — | — |
+| disabled | especifica si se deshabilita la carga de archivos | boolean | — | false |
+| limit | número máximo de cargas permitidas | number | — | — |
+| on-exceed | _hook_ lanzado cuando el límite ha sido excedido | function(files, fileList) | — | - |
### Slot
| Nombre | Descripcion |
diff --git a/examples/docs/fr-FR/affix.md b/examples/docs/fr-FR/affix.md
new file mode 100644
index 00000000000..b0b148f0525
--- /dev/null
+++ b/examples/docs/fr-FR/affix.md
@@ -0,0 +1 @@
+## Affix
diff --git a/examples/docs/fr-FR/alert.md b/examples/docs/fr-FR/alert.md
new file mode 100644
index 00000000000..aab56d1a275
--- /dev/null
+++ b/examples/docs/fr-FR/alert.md
@@ -0,0 +1,242 @@
+## Alert
+
+Affiche des messages importants.
+
+### Usage
+
+Les Alertes sont des composants non superposés qui ne disparaissent pas automatiquement.
+
+:::demo Les Alertes peuvent être de 4 types différents, définit par `type`, le type par défaut étant `info`.
+
+```html
+
+
+
+
+
+
+
+
+
+
+```
+:::
+
+### Thème
+
+Alert fournit deux thèmes différents, `light` et `dark`.
+
+:::demo Réglez `effect` pour changer le thème, le défaut étant `light`.
+```html
+
+
+
+
+
+
+
+
+
+
+```
+:::
+
+### Bouton personnalisable
+
+Personnalisez le bouton de fermeture avec du texte ou des symboles.
+
+:::demo Les alertes peuvent être configurées pour être fermables ou non. Le bouton de fermeture et les callbacks sont aussi personnalisables. L'attribut `closable` détermine si le composant peut être fermé ou non. Il accepte un `boolean`, la valeur par défaut étant `true`. Vous pouvez configurer l'attribut `close-text`pour remplacer la croix du bouton de fermeture. Assurez-vous que `close-text` soit une chaîne de caractères. L'évènement `close` se déclenche quand le composant est fermé.
+
+```html
+
+
+
+
+
+
+
+
+
+
+```
+:::
+
+### Avec icône
+
+Afficher une icône améliore la lisibilité.
+
+:::demo Ajouter l'attribut `show-icon` affiche une icône correspondant au type de l'alerte.
+
+```html
+
+
+
+
+
+
+
+
+
+
+```
+:::
+
+## Texte centré
+
+Utilisez l'attribut `center` pour centrer le texte.
+
+:::demo
+
+```html
+
+
+
+
+
+
+
+
+
+
+```
+:::
+
+### Description
+
+Contient un message avec plus d'informations.
+
+:::demo A coté de l'attribut `title`, vous pouvez ajouter `description` pour décrire l'alerte avec plus de précisions. Les descriptions ne peuvent contenir que du texte, et les retours à la ligne sont automatiques.
+
+```html
+
+
+
+
+```
+:::
+
+### Icône et description
+
+:::demo Pour finir, voici un exemple utilisant à la fois l'icône et la description.
+
+```html
+
+
+
+
+
+
+
+
+
+
+```
+:::
+
+### Attributs
+| Attribut | Description | Type | Valeurs acceptées | Défaut |
+|---------- |-------------- |---------- |-------------------------------- |-------- |
+| title | Titre. | string | — | — |
+| type | Type du composant. | string | success/warning/info/error | info |
+| description | Texte de description. Peut aussi être passé via le slot par défaut | string | — | — |
+| closable | Si peut être fermé ou non. | boolean | — | true |
+| center | Si le texte doit être centré ou non. | boolean | — | false |
+| close-text | Texte personnalisé pour le bouton de fermeture. | string | — | — |
+| show-icon | Si une icône s'affiche ou non. | boolean | — | false |
+| effect | Détermine le thème. | string | light/dark | light |
+
+### Slot
+
+| Nom | Description |
+|------|--------|
+| — | la description |
+| title | Le contenu du titre. |
+
+### Évènements
+| Nom | Description | Paramètres |
+|---------- |-------- |---------- |
+| close | Se déclenche lorsque l'alerte est fermée. | — |
diff --git a/examples/docs/fr-FR/avatar.md b/examples/docs/fr-FR/avatar.md
new file mode 100644
index 00000000000..50078de482b
--- /dev/null
+++ b/examples/docs/fr-FR/avatar.md
@@ -0,0 +1,146 @@
+## Avatar avatar
+
+Avatars can be used to represent people or objects. It supports images, Icons, or characters.
+Les avatars peuvent être utilisés pour représenter des personnes ou des objets. Les images, icônes et les caractères sont supportés.
+
+### Basic
+
+utilisez les prop `shape` et` size` pour définir la forme et la taille de l'avatar
+
+:::demo
+```html
+
+
+
+ cercle
+
+
+
+
+
+
+
+
+ carré
+
+
+
+
+
+
+
+
+
+
+
+```
+:::
+
+### Types
+
+Les images, icônes et les caractères sont supportés.
+
+:::demo
+```html
+
+
+
+
+
+
+
+
+
+ user
+
+
+
+```
+:::
+
+### fallback en cas d'erreur de chargement d'image
+
+fallback en cas d'erreur de chargement d'image
+
+:::demo
+```html
+
+
+
+
+
+
+
+
+
+```
+:::
+
+### Comment l'image s'adapte à son conteneur
+
+Défini comment l'image s'adapte à son conteneur, pareil que [object-fit](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit).
+
+:::demo
+```html
+
+
+
+ {{ fit }}
+
+
+
+
+
+
+```
+:::
+
+### Attributes
+
+| Attribute | Description | Type | Valeurs acceptées | Default |
+| ----------------- | -------------------------------- | --------------- | ------ | ------ |
+| icon | Défini le type de représentation sur Icon, plus d’informations sur le composant Icon | string | | |
+| size | Défini la taille de l'avatar | number/string | number / large / medium / small | large |
+| shape | Défini la forme de l'avatar | string | circle / square | circle |
+| src | L'adresse de l'image pour un avatar image | string | | |
+| srcSet | Une liste d'un ou plusieurs string séparés par des virgules indiquant un ensemble de sources d'images possibles que le user agent peut utiliser | string | | |
+| alt | Cet attribut définit une description textuelle alternative de l'image | string | | |
+| fit | Défini comment l'image s'adapte à son conteneur | string | fill / contain / cover / none / scale-down | cover |
+
+### Évènements
+
+| Event Name | Description | Paramètres |
+| ------ | ------------------ | -------- |
+| error | handler en cas d'erreur de chargement de l'image, renvoie false pour éviter le fallback par défaut |(e: Event) |
+
+### Slot
+
+| Slot Name | Description |
+| default | personnalise le contenu de l'avatar |
diff --git a/examples/docs/fr-FR/backtop.md b/examples/docs/fr-FR/backtop.md
new file mode 100644
index 00000000000..322ef570358
--- /dev/null
+++ b/examples/docs/fr-FR/backtop.md
@@ -0,0 +1,60 @@
+## Backtop
+
+Un bouton pour revenir en haut de la page
+
+### Basic usage
+
+Scrollez en bas de la page pour voir le bouton en bas à droite.
+:::demo
+
+```html
+
+ Scrollez en bas de la page pour voir le bouton en bas à droite.
+
+
+```
+
+:::
+
+### Customizations
+
+La zone d'affichage est de 40px \* 40px.
+:::demo
+
+```html
+
+ Scrollez en bas de la page pour voir le bouton en bas à droite.
+
+
+ UP
+
+
+
+```
+
+:::
+
+### Attributes
+
+| Attribut | Description | Type | Valeurs acceptées | Défaut |
+| ----------------- | ------------------------------------------------------------------- | --------------- | --------------- | ------- |
+| target | La cible pour déclencher le scroll | string | | |
+| visibility-height | Le bouton ne s'affichera pas tant que la hauteur de défilement n'aura pas atteint cette valeur. | number | | 200 |
+| right | La distance du bord droit | number | | 40 |
+| bottom | La distance du bord gauche | number | | 40 |
+
+### Events
+
+| Event Name | Description | Parameters |
+| ---------- | ------------------- | ----------- |
+| click | Se déclenche quand l'utilisateur clique | click event |
diff --git a/examples/docs/fr-FR/badge.md b/examples/docs/fr-FR/badge.md
new file mode 100644
index 00000000000..cf21b165f82
--- /dev/null
+++ b/examples/docs/fr-FR/badge.md
@@ -0,0 +1,125 @@
+## Badge
+
+Un nombre ou un status affiché par-dessus un bouton ou un icône.
+
+### Usage
+
+Affiche le nombre de nouveaux messages.
+
+:::demo La quantité est définit par `value` qui accepte un `Number` ou un `String`.
+
+```html
+
+ Commentaires
+
+
+ Réponses
+
+
+ Commentaires
+
+
+ Réponses
+
+
+
+
+ Cliquez
+
+
+
+ Commentaires
+
+
+
+ Réponses
+
+
+
+
+
+
+```
+:::
+
+### Valeur maximale
+
+Vous pouvez configurer la valeur maximale.
+
+:::demo La valeur maximale est définit par `max` qui accepte un `Number`. Ceci ne marche qui si `value` est également un `Number`.
+
+```html
+
+ Commentaires
+
+
+ Réponses
+
+
+
+```
+:::
+
+### Configuration
+
+Affiche du texte autre que des nombres.
+
+:::demo Quand `value` est un `String`, il affiche un texte personnalisé.
+
+```html
+
+ Commentaires
+
+
+ Réponses
+
+
+
+```
+:::
+
+### Point rouge
+
+Utilisez un point rouge pour signaler du contenu devant être remarqué.
+
+:::demo Utilisez l'attribut `is-dot` qui est un `Boolean`.
+
+```html
+Requète
+
+
+
+
+
+```
+:::
+
+### Attributs
+
+| Attribut | Description | Type | Valeurs acceptées | Défaut |
+|------------- |---------------- |---------------- |---------------------- |-------- |
+| value | Valeur affichée. | string, number | — | — |
+| max | Valeur maximale, affiche '{max}+' quand elle est dépassée. Ne marche que si `value` est un `Number`. | number | — | — |
+| is-dot | Affiche un point rouge. | boolean | — | false |
+| hidden | Cache le badge. | boolean | — | false |
+| type | Type du bouton. | string | primary / success / warning / danger / info | — |
diff --git a/examples/docs/fr-FR/border.md b/examples/docs/fr-FR/border.md
new file mode 100644
index 00000000000..76a75741cf4
--- /dev/null
+++ b/examples/docs/fr-FR/border.md
@@ -0,0 +1,135 @@
+
+
+## Bordure
+
+Nous normalisons l'apparence des bordures qui peuvent être utilisées pour les boutons, les cartes, les pop-ups et d'autres composants.
+
+### Bordure
+
+Il y a plusieurs styles de bordure que vous pouvez choisir.
+
+
+
+
+ Nom
+ Épaisseur
+ Demo
+
+
+ Solid
+ 1px
+
+
+
+
+
+ Dashed
+ 2px
+
+
+
+
+
+
+
+### Radius
+
+Il y a plusieurs styles de radius que vous pouvez choisir.
+
+
+
+ Pas de radius
+ border-radius: 0px
+
+
+
+ Petit radius
+ border-radius: {{borderRadiusSmall}}
+
+
+
+ Grand radius
+ border-radius: {{borderRadiusBase}}
+
+
+
+ Radius rond
+ border-radius: 30px
+
+
+
+
+### Ombres
+
+Il y a plusieurs styles d'ombres que vous pouvez choisir.
+
+
+Ombre de base, box-shadow: {{boxShadowBase}}
+
+
+Ombre légère, box-shadow: {{boxShadowLight}}
diff --git a/examples/docs/fr-FR/breadcrumb.md b/examples/docs/fr-FR/breadcrumb.md
new file mode 100644
index 00000000000..37c2070d0d0
--- /dev/null
+++ b/examples/docs/fr-FR/breadcrumb.md
@@ -0,0 +1,44 @@
+## Breadcrumb
+
+Affiche le chemin de la page actuelle, afin de pouvoir naviguer plus facilement.
+
+### Usage
+
+
+:::demo Dans `el-breadcrumb`, chaque `el-breadcrumb-item` est un tag représentant chaque niveau depuis la page d'accueil. Ce Composant possède un attribut de type `String` appelé `separator` qui détermine le séparateur. Sa valeur par défaut est '/'.
+
+```html
+
+ Accueil
+ Gestion promotions
+ Liste promotions
+ Détail promotion
+
+```
+:::
+
+### Icône de séparation
+
+:::demo Configurez `separator-class` pour utiliser `iconfont` en tant que séparateur. Cela remplacera `separator`.
+
+```html
+
+ Accueil
+ Gestion promotions
+ Liste promotions
+ Détail promotion
+
+```
+:::
+
+### Attributs de Breadcrumb
+| Attributs | Description | Type | Valeurs acceptées | Défaut|
+|---------- |-------------- |---------- |-------------------------------- |-------- |
+| separator | Caractère de séparation | string | — | / |
+| separator-class | Classe de l'icône de séparation | string | — | - |
+
+### Attributs de Breadcrumb Item
+| Attributs | Description | Type | Valeurs acceptées | Défaut|
+|---------- |-------------- |---------- |-------------------------------- |-------- |
+| to | Route cible du lien, identique au `to` de `vue-router`. | string/object | — | — |
+| replace | Si `true`, la navigation ne laissera pas d'historique. | boolean | — | false |
diff --git a/examples/docs/fr-FR/button-group-enhance.md b/examples/docs/fr-FR/button-group-enhance.md
new file mode 100644
index 00000000000..188c81b7813
--- /dev/null
+++ b/examples/docs/fr-FR/button-group-enhance.md
@@ -0,0 +1 @@
+## ButtonGroupEnhance
diff --git a/examples/docs/fr-FR/button.md b/examples/docs/fr-FR/button.md
new file mode 100644
index 00000000000..50dd8a3b8d4
--- /dev/null
+++ b/examples/docs/fr-FR/button.md
@@ -0,0 +1,165 @@
+## Bouton
+
+Bouton communément utilisé.
+
+### Usage
+
+:::demo Utilisez `type`, `plain`, `round` et `circle` pour définir le style du bouton.
+
+```html
+
+ Défaut
+ Primary
+ Success
+ Info
+ Warning
+ Danger
+
+
+
+ Plein
+ Primary
+ Success
+ Info
+ Warning
+ Danger
+
+
+
+ Arrondi
+ Primary
+ Success
+ Info
+ Warning
+ Danger
+
+
+
+
+
+
+
+
+
+
+```
+:::
+
+### Bouton désactivé
+
+L'attribut `disabled` détermine si le bouton est désactivé.
+
+:::demo Utilisez l'attribut `disabled` pour déterminer si un bouton est désactivé ou non. Il accepte un `Boolean`.
+
+```html
+
+ Défaut
+ Principal
+ Succès
+ Info
+ Attention
+ Danger
+
+
+
+ Plein
+ Principal
+ Succès
+ Info
+ Attention
+ Danger
+
+```
+:::
+
+### Bouton texte
+
+Bouton sans bordure ni fond.
+
+:::demo
+```html
+Bouton texte
+Bouton texte
+```
+:::
+
+### Icône
+
+Utilisez des icônes pour ajouter plus de sens aux boutons. Vous pouvez utiliser uniquement l'icône pour économiser de l'espace, ou bien l'utiliser avec du texte.
+
+:::demo Utilisez l'attribut `icon` pour ajouter une icône. Vous pourrez trouver la liste des icônes dans le composant Icon d'Element. Ajouter des icônes sur le coté droit du texte est possible grâce à la balise ``. Des icônes personnalisées peuvent également être utilisées.
+
+```html
+
+
+
+Recherche
+Upload
+```
+:::
+
+### Groupes de boutons
+
+Affiche un groupe de bouton. Peut être utilisé pour grouper un ensemble d'opérations similaires.
+
+:::demo Utilisez la balise `` pour grouper vos boutons.
+
+```html
+
+ Page précédente
+ Page suivante
+
+
+
+
+
+
+```
+:::
+
+### Bouton en chargement
+
+Cliquez sur le bouton pour charger des données et il affichera un état de chargement.
+
+:::demo Configurez l'attribut `loading` à `true` pour afficher un état de chargement.
+
+```html
+Chargement
+```
+:::
+
+### Tailles
+
+En plus de la taille par défaut, le composant Button fournit trois tailles supplémentaires pour différents scénarios.
+
+:::demo Utilisez l'attribut `size` pour choisir d'autres tailles parmi `medium`, `small` ou `mini`.
+
+```html
+
+ Défaut
+ Medium
+ Small
+ Mini
+
+
+ Défaut
+ Medium
+ Small
+ Mini
+
+```
+:::
+
+### Attributs
+| Attribut | Description | Type | Valeurs acceptées | Défaut |
+|---------- |-------- |---------- |------------- |-------- |
+| size | Taille du bouton. | string | medium / small / mini | — |
+| type | Type du bouton. | string | primary / success / warning / danger / info / text | — |
+| plain | Détermine si le bouton est plein. | boolean | — | false |
+| round | Détermine si le bouton est arrondi. | boolean | — | false |
+| circle | Détermine si le bouton est un cercle. | boolean | — | false |
+| loading | Détermine si l'état de chargement est affiché. | boolean | — | false |
+| disabled | Désactive le bouton | boolean | — | false |
+| icon | Classe de l'icône. | string | — | — |
+| autofocus | Identique à l'attribut natif `autofocus` | boolean | — | false |
+| native-type | Identique à l'attribut natif `type` | string | button / submit / reset | button |
diff --git a/examples/docs/fr-FR/calendar.md b/examples/docs/fr-FR/calendar.md
new file mode 100644
index 00000000000..a198b2be9d2
--- /dev/null
+++ b/examples/docs/fr-FR/calendar.md
@@ -0,0 +1,68 @@
+## Calendrier
+
+Affiche un calendrier.
+
+### Usage basique
+
+:::demo Réglez `value` pour spécifier le mois à afficher. Si `value` n'est pas spécifiée, le mois actuel sera affiché. `value` supporte le two-way binding.
+```html
+
+
+
+
+```
+:::
+
+### Contenu personnalisé
+
+:::demo Personnalisez le contenu du calendrier en utilisant le `scoped-slot` appelé `dateCell`. Dans ce `scoped-slot` vous aurez accès au paramètres date (date de la cellule courante), data (incluant les attributs type, isSelected et day). Pour plus d'informations, référez-vous à la documentation ci-dessous.
+```html
+
+
+
+
+ {{ data.day.split('-').slice(1).join('-') }} {{ data.isSelected ? '✔️' : ''}}
+
+
+
+
+```
+:::
+
+### Intervalle
+
+:::demo Utilisez l'attribut `range` pour afficher un intervalle particulier. Le début doit être un lundi et la fin un dimanche, l'intervalle ne pouvant excéder deux mois.
+```html
+
+
+```
+:::
+
+### Attributs
+
+| Attribut | Description | Type | Valeurs acceptées | Défaut |
+|------------------ |-------------- |---------- |---------------------- |--------- |
+| value / v-model | Valeur liée. | Date/string/number | — | — |
+| range | Intervalle de dates, début et fin inclus. Start time must be start day of week, end time must be end day of week, the time span cannot exceed two months. | Array | — | — |
+| first-day-of-week | fisrt day of week| Number | 1 to 7 | 1 |
+
+### Slot dateCell
+
+| Attribut | Description | Type | Valeurs acceptées | Défaut |
+|-----------------|-------------- |---------- |---------------------- |--------- |
+| date | Date de la cellule courante. | Date | — | — |
+| data | { type, isSelected, day }. `type` indique le mois de la date courante, les valeurs prev-month, current-month et next-month pouvant être utilisées; `isSelected` indique si la date est sélectionnée; `day` est la date formattée en yyyy-MM-dd. | Object | — | — |
diff --git a/examples/docs/fr-FR/card.md b/examples/docs/fr-FR/card.md
new file mode 100644
index 00000000000..28106933367
--- /dev/null
+++ b/examples/docs/fr-FR/card.md
@@ -0,0 +1,170 @@
+## Card
+
+Conteneur intégrant des informations.
+
+### Usage
+
+Le composant Card comprend un titre, un contenu et des opérations.
+
+:::demo Card est composé d'un `header` et d'un `body`. `header` est optionnel et son contenu nécessite l'utilisation d'un slot.
+```html
+
+
+ Card name
+ Bouton
+
+
+ {{'List item ' + o }}
+
+
+
+
+```
+:::
+
+### Card simple
+
+Le header peut être omis.
+
+:::demo
+```html
+
+
+ {{'List item ' + o }}
+
+
+
+
+```
+:::
+
+### Images
+
+Affichez un contenu plus riche grâce à la configuration.
+
+:::demo L'attribut `body-style` définit le style CSS du `body`. Cet exemple utilise aussi `el-col` pour la mise en page.
+```html
+
+
+
+
+
+ Yummy hamburger
+
+
+ Operating
+
+
+
+
+
+
+
+
+
+```
+:::
+
+### Ombres
+
+Vous pouvez définir quand l'ombre des Cards doivent apparaître.
+
+:::demo L'attribut `shadow` détermine quand l'ombre doit apparaître. Les valeurs possibles sont `always`, `hover` ou `never`.
+```html
+
+
+
+ Always
+
+
+
+
+ Hover
+
+
+
+
+ Never
+
+
+
+```
+:::
+
+### Attributs
+| Attribut | Description | Type | Valeurs acceptées | Défaut |
+|---------- |-------- |---------- |------------- |-------- |
+| header | Titre de la Card. Accepte aussi un template DOM passé via `slot#header`. | string| — | — |
+| body-style | Style CSS du body. | object| — | { padding: '20px' } |
+| shadow | Quand l'ombre doit apparaître | string | always / hover / never | always |
diff --git a/examples/docs/fr-FR/carousel.md b/examples/docs/fr-FR/carousel.md
new file mode 100644
index 00000000000..defa9e1e5b4
--- /dev/null
+++ b/examples/docs/fr-FR/carousel.md
@@ -0,0 +1,212 @@
+## Carousel
+
+Affiche en boucle une série d'images ou de textes dans un espace limité.
+
+### Usage
+
+:::demo Utilisez `el-carousel` avec `el-carousel-item`, et vous obtiendrez un carrousel. Le contenu de chaque slide est complètement personnalisable, il vous suffit juste de le placer à l'intérieur de la balise `el-carousel-item`. Par défaut le carrousel défile quand la souris passe sur un indicateur. Réglez `trigger` sur `click` et le carrousel défilera uniquement quand vous cliquerez sur l'indicateur.
+```html
+
+
+ Défile quand la souris passe sur l'indicateur (défaut)
+
+
+ {{ item }}
+
+
+
+
+ Défile quand on clique sur l'indicateur
+
+
+ {{ item }}
+
+
+
+
+
+
+```
+:::
+
+### Indicateurs
+
+Les indicateurs peuvent être affichés en dehors du carrousel.
+
+:::demo L'attribut `indicator-position` détermine où les indicateurs sont localisés. Par défaut ils se trouvent à l'intérieur du carrousel, régler `indicator-position` sur `outside` les affichera à l'extérieur; régler `indicator-position` sur `none` les cachera totalement.
+```html
+
+
+
+ {{ item }}
+
+
+
+
+
+```
+:::
+
+### Flèches
+
+Vous pouvez définir quand les flèches doivent apparaître.
+
+:::demo L'attribut `arrow` détermine quand les flèches sont affichées. Par défaut elles apparaissent quand la souris passe sur le carrousel. Réglez `arrow` sur `always` ou `never` affiche ou cache les flèches de manière permanente.
+```html
+
+
+
+ {{ item }}
+
+
+
+
+
+```
+:::
+
+### Mode carte
+
+Quand la page est suffisamment large mais avec une hauteur limitée, vous pouvez activer le mode carte.
+
+:::demo Réglez `type` sur `card` pour activer le mode carte. Hormis l'apparence, la principale différence par rapport au mode commun est que cliquer sur une des slides se trouvant de chaque coté fait directement défiler le carrousel.
+```html
+
+
+
+ {{ item }}
+
+
+
+
+
+```
+:::
+
+Par défaut, `direction` est `horizontal`. Vous pouvez faire en sorte que le défilement soit vertical en mettant `direction` à `vertical`.
+
+:::demo
+```html
+
+
+
+ {{ item }}
+
+
+
+
+
+```
+:::
+
+### Attributs du Carrousel
+| Attribut | Description | Type | Valeurs acceptées | Défaut |
+|---------- |-------------- |---------- |-------------------------------- |-------- |
+| height | Hauteur du carrousel. | string | — | — |
+| initial-index | Index de la slide initiale (commence à 0). | number | — | 0 |
+| trigger | Comment les indicateurs sont déclenchés | string | hover/click | hover |
+| autoplay | Si le carrousel défile automatiquement | boolean | — | true |
+| interval | Intervalle pour le défilement automatique, en millisecondes. | number | — | 3000 |
+| indicator-position | Position des indicateurs. | string | outside/none | — |
+| arrow | Détermine quand les flèches sont affichées. | string | always/hover/never | hover |
+| type | Type du carrousel. | string | card | — |
+| loop | Affiche les éléments en boucle. | boolean | - | true |
+| direction | Détermine la direction du défilement. | string | horizontal/vertical | horizontal |
+
+### Évènements du Carrousel
+| Nom | Description | Paramètres |
+|---------|---------|---------|
+| change | Se déclenche quand la slide active défile. | Index de la nouvelle slide, index de l'ancienne slide |
+
+### Méthodes du Carrousel
+| Mathode | Description | Paramètres |
+|---------- |-------------- | -- |
+| setActiveItem | Défile manuellement vers une slide. | index de la slide d'arrivée, à partir de 0; ou bien le `name` du `el-carousel-item` correspondant|
+| prev | Défile vers la slide précédente. | — |
+| next | Défile vers la slide suivante. | — |
+
+### Attributs du Carrousel-Item
+| Attribut | Description | Type | Valeurs acceptées | Défaut |
+|---------- |-------------- |---------- |-------------------------------- |-------- |
+| name | Nom de l'item, peut être utilisé dans `setActiveItem`. | string | — | — |
+| label | Texte affiché au niveau de l'indicateur correspondant.| string | — | — |
diff --git a/examples/docs/fr-FR/cascader.md b/examples/docs/fr-FR/cascader.md
new file mode 100644
index 00000000000..7603b0933fc
--- /dev/null
+++ b/examples/docs/fr-FR/cascader.md
@@ -0,0 +1,1987 @@
+## Cascader
+
+Si les options ont une structure hiérarchique claire, Le composant Cascader peut être utilisé pour les afficher et les sélectionner.
+
+### Basic usage
+
+Il y a deux manières d'étendres les options enfants.
+
+:::demo Assigner l'attribut `options` à un tableau d'options fournit un composant Cascader. L'attribut `props.expandTrigger` définit comment les options enfants sont étendues.
+```html
+
+ Les options enfants se développent lorsque vous cliquez dessus (par défaut)
+
+
+
+ Les options enfants se développent lorsqu'elles sont survolées
+
+
+
+
+```
+:::
+
+### Disabled option
+
+Désactivez une option en définissant un champ `disabled` dans l'objet d'option.
+
+:::demo Dans cet exemple, le premier élément du tableau `options` a un champ` disabled: true`, il est donc désactivé. Par défaut, Cascader vérifie le champ `disabled` dans chaque objet option. Si vous utilisez un autre nom de champ pour indiquer si une option est désactivée, vous pouvez l'affecter dans l'attribut `props.disabled` (voir le tableau des API ci-dessous pour plus de détails). Et bien sûr, les noms de champs `value`,` label` et `children` peuvent également être personnalisés de la même manière.
+```html
+
+
+
+```
+:::
+
+### Clearable
+
+Définissez l'attribut `clearable` pour` el-cascader` et une icône claire apparaîtra une fois sélectionnée et survolée
+
+:::demo
+```html
+
+
+
+```
+:::
+
+### Display only the last level
+
+L'entrée peut afficher uniquement le dernier niveau au lieu de tous les niveaux.
+
+:::demo L'attribut `show-all-levels` définit si tous les niveaux sont affichés. S'il est `false`, seul le dernier niveau est affiché.
+```html
+
+
+```
+:::
+
+### Multiple Selection
+
+Définissez `props.multiple = true` pour utiliser la sélection multiple.
+
+:::demo Lors de l'utilisation de la sélection multiple, toutes les balises sélectionnées seront affichées par défaut. Vous pouvez définir `collapse-tags = true` pour replier les balises sélectionnées.
+```html
+
+ Afficher toutes les balises (par défaut)
+
+
+
+ Réduire les balises
+
+
+
+
+```
+:::
+
+
+### Select any level of options
+
+Dans la sélection simple, seuls les noeuds terminaux peuvent être coché, et dans la sélection multiple, coché les noeuds parents cochera les noeuds terminaux. Lorsque cette fonctionnalité est activée, les noeuds parents et enfants peuvent être dissociés et vous pouvez sélectionner n’importe quel niveau d’options.
+
+:::demo Définissez `props.checkStrictly = true` pour que l'état vérifié d'un noeud n'affecte pas ses noeuds parents et ses noeuds enfants. Vous pouvez ensuite sélectionner n'importe quel niveau d'options.
+```html
+
+ Sélectionnez n'importe quel niveau d'options (Sélection unique)
+
+
+
+ Sélectionnez n'importe quel niveau d'options (sélection multiple)
+
+
+
+
+```
+:::
+
+### Dynamic loading
+
+Charge dynamiquement ses noeuds enfants lorsque un noeud est sélectionné.
+
+:::demo Définissez `lazy = true` pour utiliser le chargement dynamique. Vous devez Spécifier comment charger la source de données avec` lazyload`. Il existe deux paramètres de `lazyload`, le premier paramètre` node` est le noeud sur lequel l'utilisateur a cliqué, et `resolution` est un callback indiquant que le chargement est terminé et qu'il doit être appelé. Pour afficher le statut du noeud plus précisément, vous pouvez ajouter un champ `leaf` (modifiable par` props.leaf`) pour indiquer s'il s'agit d'un noeud feuille. Sinon, il sera déduit par ses noeuds enfants.
+```html
+
+
+
+```
+:::
+
+### Filterable
+
+Rechercher et sélectionner des options avec un mot clé.
+
+:::demo Ajouter `filterable` à` el-cascader` permet le filtrage. Cascader recherchera les noeuds dont l'étiquette ou l'étiquette du parent (selon `show-all-levels`) inclut le mot-clé input. Bien sûr, vous pouvez personnaliser la logique de recherche en utilisant `filter-method` qui accepte une fonction, le premier paramètre est `node`, le second est `keyword` et doit renvoyer une valeur booléenne indiquant si le résultat est positif.
+```html
+
+ Filtrable (Sélection unique)
+
+
+
+ Filtrable (Sélection multiple)
+
+
+
+
+```
+:::
+
+### Custom option content
+
+Vous pouvez personnaliser le contenu du noeud cascader.
+
+:::demo Vous pouvez personnaliser le contenu du noeud cascader avec `scoped slot`. Vous aurez accès à `node` et` data` dans la portée, correspondant respectivement à l'objet Node et aux données de noeud du noeud actuel.
+```html
+
+
+ {{ data.label }}
+ ({{ data.children.length }})
+
+
+
+
+```
+:::
+
+### Cascader panel
+
+`CascaderPanel` est le composant principal de` Cascader`. Il comporte diverses fonctionnalités telles que la sélection unique, la sélection multiple, le chargement dynamique, etc.
+
+:::demo Tout comme `el-cascader`, vous pouvez définir des options alternatives par `options`, et activer d'autres fonctionnalités par `props`, voir le formulaire d'API ci-dessous pour plus de détails.
+```html
+
+
+
+```
+:::
+
+### Cascader Attributs
+| Attribut | Description | Type | Valeurs acceptées | Défaut |
+|---------- |-------- |---------- |------------- |-------- |
+| value / v-model | Valeur de liaison | - | — | — |
+| options | Les données des options,la clé de `value` et `label` peuvent être personnalisées par `Props`.| array | — | — |
+| props | Options de configuration, voir le tableau suivant. | object | — | — |
+| size | Taille de l'entrée | string | medium / small / mini | — |
+| placeholder | Placeholder de l'input | string | — | Select |
+| disabled | Si Cascader est désactivé | boolean | — | false |
+| clearable | Si la valeur sélectionnée peut être effacée | boolean | — | true |
+| show-all-levels | Afficher ou non tous les niveaux de la valeur sélectionnée dans l'entrée | boolean | — | true |
+| collapse-tags | Réduire ou non les balises en mode de sélection multiple | boolean | - | false |
+| separator | Option label separator | string | — | ' / ' |
+| filterable | Si les options peuvent être recherchées | boolean | — | true |
+| filter-method | Personnaliser la logique de recherche, le premier paramètre est `node`, le second est `keyword`, et doit renvoyer une valeur booléenne indiquant si le résultat est positif. | function(node, keyword) | - | - |
+| debounce | Délai de réponse lors de la saisie du mot clé de filtre, en millisecondes | number | — | 300 |
+| before-filter | Hook fonction avant de filtrer avec la valeur à filtrer en tant que paramètre. Si `false` est renvoyé ou si une `Promise` est renvoyée puis rejetée, le filtrage sera annulé | function(value) | — | — |
+| popper-class | Nom de classe personnalisé pour la liste déroulante de Cascader | string | — | — |
+
+### Cascader Events
+| Event Name | Description | Paramètres |
+|---------- |-------- |---------- |
+| change | Se déclenche lorsque la valeur de liaison change | value |
+| expand-change | Se déclenche lorsque l'option d'agrandissement change | an array of the expanding node's parent nodes |
+| blur | Se déclenche lorsque Cascader blurs | (event: Event) |
+| focus | Se déclenche lorsque Cascader à le focus | (event: Event) |
+| visible-change | Se déclenche lorsque le menu déroulant apparaît / disparaît | vrai quand il apparaît, et faux sinon |
+| remove-tag | Se déclenche lors de la suppression d'une balise en mode de sélection multiple | la valeur de la balise qui est supprimée |
+
+### Cascader Methods
+| Method Name | Description | Parameters |
+| ---- | ---- | ---- |
+| getCheckedNodes | get an array of currently selected node | (leafOnly) whether only return the leaf checked nodes, default is `false` |
+
+### Cascader Slots
+| Slot Name | Description |
+|---------|-------------|
+| - | Le contenu personnalisé du noeud cascader, le paramètre est { node, data }, qui sont respectivement les objets de noeud et les données de noeud actuels. |
+| empty | Contenu quand il n'y a pas d'options correspondantes. |
+
+### CascaderPanel Attributes
+| Attribut | Description | Type | Valeurs acceptées | Défaut |
+|---------- |-------- |---------- |------------- |-------- |
+| value / v-model | Baleur de liaison | - | — | — |
+| options | Les données des options, la clé de `value` et `label` peuvent être personnalisées par `Props`.| array | — | — |
+| props | Options de configuration, voir le tableau suivant. | object | — | — |
+
+### CascaderPanel Events
+| Event Name | Description | Paramètres |
+|---------- |-------- |---------- |
+| change | Se déclenche lorsque la valeur de liaison change | value |
+| expand-change | Se déclenche lorsque l'option d'agrandissement change | an array of the expanding node's parent nodes |
+
+### CascaderPanel Methods
+| Method Name | Description | Parameters |
+| ---- | ---- | ---- |
+| getCheckedNodes | get an array of currently selected node | (leafOnly) whether only return the leaf checked nodes, default is `false` |
+| clearCheckedNodes | clear checked nodes | - |
+
+### CascaderPanel Slots
+| Slot Name | Description |
+|---------|-------------|
+| - | Le contenu personnalisé du noeud cascader, le paramètre est { node, data }, qui sont respectivement les objets de noeud et les données de noeud actuels. |
+
+### Props
+| Attribute | Description | Type | Valeurs acceptées | Défaut |
+| -------- | ----------------- | ------ | ------ | ------ |
+| expandTrigger | Mode de déclenchement des options de développement | string | click / hover | 'click' |
+| multiple | Si la sélection multiple est activée | boolean | - | false |
+| checkStrictly | Si l'état coché d'un noeud n'affecte pas ses noeuds parents et enfants | boolean | - | false |
+| emitPath | Lorsque les noeuds cochés changent, émet ou non un tableau du chemin du noeud. Si la valeur est false, n'émet que la valeur du noeud. | boolean | - | true |
+| lazy | S'il faut charger dynamiquement les noeuds enfants, utiliser avec l'attribut `lazyload` | boolean | - | false |
+| lazyLoad | Méthode de chargement de données de noeuds enfants, ne fonctionne que lorsque `lazy` est vrai | function(node, resolve) | - | - |
+| value | Spécifie quelle clé de l'objet noeud est utilisée comme valeur du noeud | string | — | 'value' |
+| label | Spécifie quelle clé de l'objet noeud est utilisée comme label du noeud | string | — | 'label' |
+| children | Spécifie quelle clé de l'objet noeud est utilisée en tant qu'enfant du noeud | string | — | 'children' |
+| disabled | Spécifie quelle clé de l'objet noeud est utilisée comme noeud désactivé | string | — | 'disabled' |
+| leaf | Spécifie quelle clé de l'objet est noeud utilisée comme champ feuille du noeud | string | — | 'leaf' |
diff --git a/examples/docs/fr-FR/checkbox-img-button.md b/examples/docs/fr-FR/checkbox-img-button.md
new file mode 100644
index 00000000000..17a74d94499
--- /dev/null
+++ b/examples/docs/fr-FR/checkbox-img-button.md
@@ -0,0 +1 @@
+## CheckboxImgButton
diff --git a/examples/docs/fr-FR/checkbox.md b/examples/docs/fr-FR/checkbox.md
new file mode 100644
index 00000000000..ab3f7237b2e
--- /dev/null
+++ b/examples/docs/fr-FR/checkbox.md
@@ -0,0 +1,284 @@
+## Checkbox
+
+Un groupe d'options à choix multiples.
+
+### Usage
+
+Checkbox peut être utilisé seul pour switcher entre deux états.
+
+:::demo Définissez `v-model` (variable liée) dans `el-checkbox`. La valeur par défaut est un `Boolean` pour une seule `checkbox` et devient `true` quand elle est sélectionnée. Le contenu à l'intérieur de la balise `el-checkbox` deviendra le label du bouton de la checkbox.
+
+```html
+
+
+ Option
+
+
+```
+:::
+
+### Désactivation
+
+La checkbox peut être désactivée.
+
+:::demo Ajouter l'attribut `disabled`.
+
+```html
+
+ Option
+ Option
+
+
+```
+:::
+
+### Checkbox groupées
+
+Utile pour grouper des checkbox, indiquant si une option est sélectionnée en vérifiant la case en question.
+
+:::demo L'élément `checkbox-group` peut gérer plusieurs checkbox d'un groupe en utilisant `v-model`, qui sera un `Array`. Dans l'élément `el-checkbox`, `label` est la valeur de la checkbox. S'il n'y a aucun contenu dans la balise, `label` sera également la description de la checkbox. `label` correspond aussi aux valeurs des éléments dans le tableau. Il est sélectionné si la valeur spécifiée existe dans le tableau, et vice-versa.
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+```
+:::
+
+### Indéterminée
+
+La propriété `indeterminate` permet de réaliser un effet "Sélectionner tout".
+
+:::demo
+
+```html
+
+ Sélectionner tout
+
+
+ {{city}}
+
+
+
+```
+:::
+
+### Minimum / Maximum d'éléments sélectionnés
+
+Les propriétés `min` et `max` permettent de limiter la quantité d'éléments sélectionnés.
+
+:::demo
+
+```html
+
+
+ {{city}}
+
+
+
+```
+:::
+
+### Style bouton
+
+Des checkbox avec une apparence de bouton.
+
+:::demo Il vous suffit de changer `el-checkbox` en `el-checkbox-button`. Il existe aussi un attribut `size`.
+```html
+
+
+
+ {{city}}
+
+
+
+
+ {{city}}
+
+
+
+
+ {{city}}
+
+
+
+
+ {{city}}
+
+
+
+
+```
+:::
+
+### Bordures
+
+:::demo L'attribut `border` ajoute une bordure aux checkbox.
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+:::
+
+### Attributs Checkbox
+| Attribut | Description | Type | Options | Défaut|
+|---------- |-------- |---------- |------------- |-------- |
+| value / v-model | La valeur liée. | string / number / boolean | — | — |
+| label | Valeur de la checkbox quand utilisée dans un `checkbox-group`. | string / number / boolean | — | — |
+| true-label | Valeur de la checkbox si cochée. | string / number | — | — |
+| false-label | Valeur de la checkbox si non cochée. | string / number | — | — |
+| disabled | Désactive la checkbox. | boolean | — | false |
+| border | Ajoute une bordure à la checkbox. | boolean | — | false |
+| size | taille de la checkbox, ne marche que si `border` est 'true' | string | medium / small / mini | — |
+| name | Attribut 'name' natif. | string | — | — |
+| checked | Si la checkbox est cochée. | boolean | — | false |
+| indeterminate | Identique à `indeterminate` dans les checkbox natives. | boolean | — | false |
+
+### Évènements Checkbox
+| Nom | Description | Paramètres |
+|---------- |-------- |---------- |
+| change | Se déclenche quand la valeur change. | La nouvelle valeur |
+
+### Attributs Checkbox-group
+| Attribut | Description | Type | Options | Défaut|
+|---------- |-------- |---------- |------------- |-------- |
+| value / v-model | La valeur liée. | array | — | — |
+|size | Taille des checkbox-boutons ou des checkbox avec bordure. | string | medium / small / mini | — |
+| disabled | Si les checkbox imbriquées sont désactivées. | boolean | — | false |
+| min | Nombre minimum de checkbox cochées. | number | — | — |
+| max | Nombre maximum de checkbox cochées. | number | — | — |
+|text-color | Couleur de police quand le bouton est actif. | string | — | #ffffff |
+|fill | Couleur de la bordure et du fond quand le bouton est actif. | string | — | #2460e0 |
+
+### Évènements Checkbox-group
+| Nom | Description | Paramètres |
+|---------- |-------- |---------- |
+| change | Se déclenche quand la valeur change. | La nouvelle valeur |
+
+### Attributs Checkbox-button
+| Attribut | Description | Type | Options | Défaut|
+|---------- |-------- |---------- |------------- |-------- |
+| label | Valeur de la checkbox quand utilisée dans un `checkbox-group` | string / number / boolean | — | — |
+| true-label | Valeur de la checkbox si cochée. | string / number | — | — |
+| false-label | Valeur de la checkbox si non cochée. | string / number | — | — |
+| disabled | Si la checkbox est désactivée. | boolean | — | false |
+| name | Attribut 'name' natif. | string | — | — |
+| checked | Si la checkbox est cochée. | boolean | — | false |
diff --git a/examples/docs/fr-FR/collapse.md b/examples/docs/fr-FR/collapse.md
new file mode 100644
index 00000000000..e0bab0d2659
--- /dev/null
+++ b/examples/docs/fr-FR/collapse.md
@@ -0,0 +1,131 @@
+## Collapse
+
+Utilisez Collapse pour stocker du contenu.
+
+### Usage
+
+Vous pouvez agrandir plusieurs panneaux.
+
+:::demo
+```html
+
+
+ Cohérence avec la vraie vie: en accord avec les processus habituels de la vie réelle, conforme aux langages et habitudes des utilisateurs;
+ Cohérence au sein de l'interface: tout les éléments doivent être cohérents entre eux et suivre les mêmes règles, par exemple: le style global, les icônes, la position des éléments, etc.
+
+
+ Retour d'expérience: permets aux utilisateurs de percevoir clairement leurs opérations par le biais d'animations et d'effets interactifs.
+ Retour visuel: reflète l'état actuel de la page via le réarrangement ou la mise à jour des éléments.
+
+
+ Simplifier le processus: garde chaque opération simple et intuitive.;
+ Clair et défini: énonce clairement ses intentions afin que l'utilisateur puisse comprendre et prendre une décision rapidement;
+ Facile à identifier: l'interface devrait être simple et facile d'accès, afin que les utilisateurs n'ai pas d'efforts de mémorisation à faire.
+
+
+ Prise de décision: possibilité de donner des conseils sur les opérations, mais ne jamais prendre de décisions à la place des utilisateurs;
+ Contrôle des conséquences: les utilisateurs devraient pouvoir contrôler l'exécution de leurs opérations, y compris l'annulation et la suppression des opérations courantes.
+
+
+
+```
+:::
+
+### Accordéon
+
+En mode accordéon, un seul panneau peut être ouvert à la fois.
+
+:::demo Utilisez l'attribut `accordion` pour activer le mode accordéon.
+```html
+
+
+ Cohérence avec la vraie vie: en accord avec les processus habituels de la vie réelle, conforme aux langages et habitudes des utilisateurs;
+ Cohérence au sein de l'interface: tout les éléments doivent être cohérents entre eux et suivre les mêmes règles, par exemple: le style global, les icônes, la position des éléments, etc.
+
+
+ Retour d'expèrience: permets aux utilisateurs de percevoir clairement leur opérations par le biais d'animations et d'effets interactifs.
+ Retour visuel: reflète l'état actuel de la page via le réarrangement ou la mise à jour des éléments.
+
+
+ Simplifier le processus: garde chaque opération simple et intuitive.;
+ Clair et défini: énonce clairement ses intentions afin que l'utilisateur puisse comprendre et prendre une décision rapidement;
+ Facile à identifier: l'interface devrait être simple et facile d'accès, afin que les utilisateurs n'ai pas d'efforts de mémorisation à faire.
+
+
+ Prise de décision: possibilité de donner des conseils sur les opérations, mais ne jamais prendre de décisions à la place des utilisateurs;
+ Contrôle des conséquences: les utilisateurs devraient pouvoir contrôler l'exécution de leurs opérations, y compris l'annulation et la suppression des opérations courantes.
+
+
+
+```
+:::
+
+### Titre personnalisé
+
+En plus de l'utilisation de l'attribut `title`, vous pouvez configurer les titres de panneau, ce qui rend possible l'ajout de contenu personnalisé, comme des icônes par exemple.
+
+:::demo
+```html
+
+
+
+ Cohérence
+
+ Cohérence avec la vraie vie: en accord avec les processus habituels de la vie réelle, conforme aux langages et habitudes des utilisateurs;
+ Cohérence au sein de l'interface: tout les éléments doivent être cohérents entre eux et suivre les mêmes règles, par exemple: le style global, les icônes, la position des éléments, etc.
+
+
+ Retour d'expèrience: permets aux utilisateurs de percevoir clairement leur opérations par le biais d'animations et d'effets interactifs.
+ Retour visuel: reflète l'état actuel de la page via le réarrangement ou la mise à jour des éléments.
+
+
+ Simplifier le processus: garde chaque opération simple et intuitive.;
+ Clair et défini: énonce clairement ses intentions afin que l'utilisateur puisse comprendre et prendre une décision rapidement;
+ Facile à identifier: l'interface devrait être simple et facile d'accès, afin que les utilisateurs n'ai pas d'efforts de mémorisation à faire.
+
+
+ Prise de décision: possibilité de donner des conseils sur les opérations, mais ne jamais prendre de décisions à la place des utilisateurs;
+ Contrôle des conséquences: les utilisateurs devraient pouvoir contrôler l'exécution de leurs opérations, y compris l'annulation et la suppression des opérations courantes.
+
+
+```
+:::
+
+### Attributs de Collapse
+| Attribut | Description | Type | Valeurs acceptées | Défaut |
+|---------- |-------------- |---------- |-------------------------------- |-------- |
+| value / v-model | Le panneau actuellement activé. | string (en mode accordéon) / array (en mode normal) | — | — |
+| accordion | Active le mode accordéon. | boolean | — | false |
+
+### Évènements de Collapse
+| Nom | Description | Paramètres |
+|---------|---------|---------|
+| change | Se déclenche quand un panneau est activé / désactivé. | (activeNames: array (en mode normal) / string (en mode accordéon)) |
+
+### Attributs de Collapse-Item
+| Attribut | Description | Type | Valeurs acceptées | Défaut |
+|---------- |-------------- |---------- |-------------------------------- |-------- |
+| name | Identifiant unique du panneau. | string/number | — | — |
+| title | Titre du panneau. | string | — | — |
+| disabled | Désactive le panneau. | boolean | — | — |
diff --git a/examples/docs/fr-FR/color-picker.md b/examples/docs/fr-FR/color-picker.md
new file mode 100644
index 00000000000..f91644fb828
--- /dev/null
+++ b/examples/docs/fr-FR/color-picker.md
@@ -0,0 +1,123 @@
+## ColorPicker
+
+ColorPicker est un sélecteur de couleur qui supporte plusieurs formats.
+
+### Usage
+
+:::demo ColorPicker nécessite une variable de type string liée à v-model.
+```html
+
+ Avec valeur par défaut
+
+
+
+ Sans valeur par défaut
+
+
+
+
+```
+:::
+
+### Canal Alpha
+
+:::demo ColorPicker supporte le canal alpha. Pour activer la sélection du canal alpha, ajoutez l'attribut `show-alpha`.
+```html
+
+
+
+```
+:::
+
+### Couleurs prédéfinies
+
+:::demo ColorPicker supporte les couleurs prédéfinies.
+```html
+
+
+
+
+```
+:::
+
+### Tailles
+
+:::demo
+```html
+
+
+
+
+
+
+```
+:::
+
+### Attributs
+| Attribut | Description | Type | Valeurs acceptées | Défaut |
+|---------- |-------- |---------- |------------- |-------- |
+| value / v-model | La valeur liée. | string | — | — |
+| disabled | Désactive le ColorPicker. | boolean | — | false |
+| size | Taille du ColorPicker. | string | — | medium / small / mini |
+| show-alpha | Affiche la sélection du canal alpha. | boolean | — | false |
+| color-format | Format de couleur du v-model. | string | hsl / hsv / hex / rgb | hex (quand show-alpha est false)/ rgb (quand show-alpha est true) |
+| popper-class | Classe du menu déroulant du ColorPicker. | string | — | — |
+| predefine | Couleurs prédéfinies. | array | — | — |
+
+### Évènements
+| Nom | Description | Paramètres |
+|---------|--------|---------|
+| change | Se déclenche quand la valeur change. | La valeur de la couleur |
+| active-change | Se déclenche quand la couleur active change. | La valeur de la couleur active |
diff --git a/examples/docs/fr-FR/color.md b/examples/docs/fr-FR/color.md
new file mode 100644
index 00000000000..e74ae790958
--- /dev/null
+++ b/examples/docs/fr-FR/color.md
@@ -0,0 +1,227 @@
+
+
+## Couleur
+Element utilise un ensemble de palettes spécifiques afin de fournir un style consistant pour vos produits.
+
+### Couleur principale
+
+La couleur principale d'Element est un bleu clair et agréable.
+
+
+
+ Couleur principale
+ #2460e0
+
+
+
+
+
+
+
+### Couleurs secondaires
+
+En plus de la couleur principale, vous devrez sans doute utiliser d'autres couleurs pour différents cas de figures, par exemple une couleur de danger pour indiquer une opération dangereuse.
+
+
+
+ Succès
+ #2FD163
+
+
+
+
+
+
+ Avertissement
+ #F5A623
+
+
+
+
+
+
+ Danger
+ #FF4D4F
+
+
+
+
+
+
+ Info
+ #A7A8AD
+
+
+
+
+
+
+
+### Couleurs neutres
+
+Les couleurs neutres sont les couleurs du fond, du texte et des bordures. Vous pouvez utiliser différentes couleurs neutres pour représenter une structure hiérarchique.
+
+
+
+
+ Texte principal{{textPrimary}}
+
+ Texte normal{{textRegular}}
+ Texte secondaire{{textSecondary}}
+ Texte de placeholder{{textPlaceholder}}
+
+
+
+
+ Bordure de base{{borderBase}}
+ Bordure claire{{borderLight}}
+ Bordure très claire{{borderLighter}}
+ Bordure extra claire{{borderExtraLight}}
+
+
+
+
+ Noir{{black}}
+ Blanc{{white}}
+ TransparentTransparent
+
+
+
+
diff --git a/examples/docs/fr-FR/container.md b/examples/docs/fr-FR/container.md
new file mode 100644
index 00000000000..20bcc93f601
--- /dev/null
+++ b/examples/docs/fr-FR/container.md
@@ -0,0 +1,240 @@
+## Container
+Les composants Container servent à structurer la page:
+
+``: Conteneur de wrapping. Quand il est placé à l'intérieur de `` ou ``, tous les éléments enfants seront placés verticalement. Dans le cas contraire ils seront placés horizontalement.
+
+``: Conteneur pour headers.
+
+``: Conteneur pour section latérale (en général un menu).
+
+``: Conteneur pour la section principal.
+
+``: Conteneur pour footers.
+
+:::tip
+Ces composants utilisent flexbox, assurez vous que le navigateur supporte cette fonctionnalité. De plus, les éléments enfants directs de `` doivent être un des quatre éléments précédents, leur élément père devant obligatoirement être ``.
+:::
+
+### Mises en page habituelles
+
+:::demo
+```html
+
+ Header
+ Main
+
+
+
+ Header
+ Main
+ Footer
+
+
+
+ Aside
+ Main
+
+
+
+ Header
+
+ Aside
+ Main
+
+
+
+
+ Header
+
+ Aside
+
+ Main
+ Footer
+
+
+
+
+
+ Aside
+
+ Header
+ Main
+
+
+
+
+ Aside
+
+ Header
+ Main
+ Footer
+
+
+
+
+```
+:::
+
+### Exemple
+
+:::demo
+```html
+
+
+
+
+ Navigator One
+
+ Group 1
+ Option 1
+ Option 2
+
+
+ Option 3
+
+
+ Option4
+ Option 4-1
+
+
+
+ Navigator Two
+
+ Group 1
+ Option 1
+ Option 2
+
+
+ Option 3
+
+
+ Option 4
+ Option 4-1
+
+
+
+ Navigator Three
+
+ Group 1
+ Option 1
+ Option 2
+
+
+ Option 3
+
+
+ Option 4
+ Option 4-1
+
+
+
+
+
+
+
+
+
+
+ View
+ Add
+ Delete
+
+
+ Tom
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+:::
+
+### Attributs de Container
+| Attribut | Description | Type | Valeurs acceptées | Défaut |
+|---------- |-------------- |---------- |-------------------------------- |-------- |
+| direction | Direction d'affichage pour les éléments enfants. | string | horizontal / vertical | vertical quand dans `el-header` ou `el-footer`; horizontal sinon |
+
+### Attributs de Header
+| Attribut | Description | Type | Valeurs acceptées | Défaut |
+|---------- |-------------- |---------- |-------------------------------- |-------- |
+| height | Hauteur du header. | string | — | 60px |
+
+### Attributs de Aside
+| Attribut | Description | Type | Valeurs acceptées | Défaut |
+|---------- |-------------- |---------- |-------------------------------- |-------- |
+| width | Largeur de la section. | string | — | 300px |
+
+### Attributs de Footer
+| Attribut | Description | Type | Valeurs acceptées | Défaut |
+|---------- |-------------- |---------- |-------------------------------- |-------- |
+| height | Hauteur du footer. | string | — | 60px |
diff --git a/examples/docs/fr-FR/custom-theme.md b/examples/docs/fr-FR/custom-theme.md
new file mode 100644
index 00000000000..552935e993e
--- /dev/null
+++ b/examples/docs/fr-FR/custom-theme.md
@@ -0,0 +1,134 @@
+## Thème
+Element utilise le style BEM pour le CSS afin que vous puissiez écraser les règles prédéfinies facilement. Mais si vous avez besoin de remplacer des styles à une plus grande échelle , e.g. changer le thème de bleu à orange ou vert, les modifier une par une serait fastidieux. Nous fournissons ttrtois méthodes pour changer les variables de style.
+
+### Theme Roller
+Utilisez [Online Theme Roller](./#/fr-FR/theme) pour personnaliser les Design Tokens des variables globales et des composants, et prévisualisez le nouveau thème en temps réel. Il peut générer un package de style complet basé sur le nouveau thème que vous pouvez télécharger directement (pour importer de nouveaux fichiers de style dans votre projet, veuillez vous reporter à la partie 'Importer un thème personnalisé'' de cette section).
+
+Also, use [Theme Roller Chrome Extension](https://chrome.google.com/webstore/detail/element-theme-roller/lifkjlojflekabbmlddfccdkphlelmim),to customize theme and preview in real-time on any website developed by Element.
+
+
+
+### Changer la couleur du thème
+Si vous avez juste besoin de changer la couleur du thème, le [générateur de thème en ligne](https://elementui.github.io/theme-chalk-preview/#/en-US) est recommandé. La couleur du thème d'Element est un bleu clair et agréable. En le changeant, vous rendez Element visuellement plus adapté à vos projets.
+
+Le site précédent vous permet de visualiser et de télécharger un nouveau thème immédiatement (pour importer un nouveau thème, référez-vous à la partie 'Importer un thème personnalisé' or 'Importer un thème de composant à la demande' de cette section).
+
+### Mettre à jour les variables SCSS de votre projet
+`theme-chalk` est écrit en SCSS. Si votre projet utilises SCSS, vous pouvez changer directement les variables d'Élément. Créez un nouveau fichier, e.g. `element-variables.scss`:
+
+```html
+/* couleur du thème */
+$--color-primary: teal;
+
+/* chemin vers le fichier de police, requis */
+$--font-path: '~@femessage/element-ui/lib/theme-chalk/fonts';
+
+@import "~@femessage/element-ui/packages/theme-chalk/src/index";
+```
+
+Puis dans le fichier d'entrée, importez ce style au lieu de celui d'Element:
+```JS
+import Vue from 'vue'
+import Element from '@femessage/element-ui'
+import './element-variables.scss'
+
+Vue.use(Element)
+```
+
+:::tip
+Il est obligatoire de remplacer le chemin du fichier de police.
+:::
+
+### Outil de thème CLI
+Si votre projet n'utilise pas SCSS, vous pouvez personnaliser le thème en utilisant notre outil en ligne de commande:
+
+#### Installation
+Installez le générateur de thème de manière globale ou locale. Une installation locale est recommandé afin que les personnes clonant votre dépôt bénéficient d'une installation automatique via npm.
+```shell
+npm i element-theme -g
+```
+
+Installer ensuite le thème chalk depuis npm ou GitHub.
+```shell
+# Via npm
+npm i element-theme-chalk -D
+
+# Via GitHub
+npm i https://github.com/ElementUI/theme-chalk -D
+```
+
+#### Initialisation d'un fichier de variable
+Après l'installation des paquets ci-dessus, une commande appelée `et` devient disponible dans le CLI (si les paquets sont installés localement, utilisez `node_modules/.bin/et` à la place). Utilisez `-i` pour initialiser le fichier de variables, `element-variables.scss` par défaut. Vous pouvez spécifier n'importe quel dossier comme sortie.
+
+```shell
+et -i [nom du fichier]
+
+> ✔ Generator variables file
+```
+
+Dans `element-variables.scss` vous trouverez toutes les variables utilisées pour le style d'Element, définies en SCSS. Voici un snippet:
+
+```css
+$--color-primary: #2460e0 !default;
+$--color-primary-light-1: mix($--color-white, $--color-primary, 10%) !default; /* 53a8ff */
+$--color-primary-light-2: mix($--color-white, $--color-primary, 20%) !default; /* 66b1ff */
+$--color-primary-light-3: mix($--color-white, $--color-primary, 30%) !default; /* 79bbff */
+$--color-primary-light-4: mix($--color-white, $--color-primary, 40%) !default; /* 8cc5ff */
+$--color-primary-light-5: mix($--color-white, $--color-primary, 50%) !default; /* a0cfff */
+$--color-primary-light-6: mix($--color-white, $--color-primary, 60%) !default; /* b3d8ff */
+$--color-primary-light-7: mix($--color-white, $--color-primary, 70%) !default; /* c6e2ff */
+$--color-primary-light-8: mix($--color-white, $--color-primary, 80%) !default; /* d9ecff */
+$--color-primary-light-9: mix($--color-white, $--color-primary, 90%) !default; /* ecf5ff */
+
+$--color-success: #2FD163 !default;
+$--color-warning: #F5A623 !default;
+$--color-danger: #FF4D4F !default;
+$--color-info: #A7A8AD !default;
+
+...
+```
+
+#### Modifier les variables
+Éditer `element-variables.scss`, e.g. en changeant la couleur du thème pour du rouge:
+```CSS
+$--color-primary: red;
+```
+
+#### Générer le thème
+Après avoir sauvegardé le fichier de variables, utilisez `et` pour générer le thème. Vous pouvez activer le mode `watch` en ajoutant le paramètre `-w`. Si vous avez choisi le chemin du fichier de sortie, il vous faudra ajouter le paramètre `-c` avec le nom du fichier. Par défaut le thème généré est placé dans `./theme`. Vous pouvez spécifier le dossier de sortie grâce à `-o`.
+```shell
+et
+
+> ✔ build theme font
+> ✔ build element theme
+```
+
+### Use custom theme
+#### Importer le thème
+Importing your own theme is just like importing the default theme, only this time you import the file built from "Online Theme Roller" or "CLI tool":
+
+```javascript
+import '../theme/index.css'
+import ElementUI from '@femessage/element-ui'
+import Vue from 'vue'
+
+Vue.use(ElementUI)
+```
+
+#### Importer le thème d'un composant sur demande
+Si vous utilisez `babel-plugin-component` pour les imports sur demande, modifiez `.babelrc` et spécifiez `styleLibraryName` avec le chemin où votre thème est localisé relativement à `.babelrc`. N'oubliez pas que `~` est requis:
+```json
+{
+ "plugins": [
+ [
+ "component",
+ {
+ "libraryName": "element-ui",
+ "styleLibraryName": "~theme"
+ }
+ ]
+ ]
+}
+```
+
+Si vous n'êtes pas familier avec `babel-plugin-component`, référez-vous à la page Guide. Pour plus d'informations, jetez un oeil au [dépôt du projet](https://github.com/ElementUI/element-theme) de `element-theme`.
diff --git a/examples/docs/fr-FR/data-mapper.md b/examples/docs/fr-FR/data-mapper.md
new file mode 100644
index 00000000000..c8deb33827a
--- /dev/null
+++ b/examples/docs/fr-FR/data-mapper.md
@@ -0,0 +1 @@
+## DataMapper
diff --git a/examples/docs/fr-FR/date-picker.md b/examples/docs/fr-FR/date-picker.md
new file mode 100644
index 00000000000..1b40290f6c5
--- /dev/null
+++ b/examples/docs/fr-FR/date-picker.md
@@ -0,0 +1,490 @@
+## DatePicker
+
+Utilisez DatePicker pour les champs de dates.
+
+### Entrez la date
+
+L'unité de base du DatePicker est le jour.
+
+:::demo L'unité est déterminée par l'attribut `type`. Vous pouvez ajouter des options en créant un objet `picker-options` avec la propriété `shortcuts`. L'état désactivé est contrôlé par `disabledDate` qui est une fonction.
+
+```html
+
+
+ Défaut
+
+
+
+
+ Picker avec raccourcis
+
+
+
+
+
+
+```
+:::
+
+### Autres unités
+
+Vous pouvez sélectionner une semaine, un mois, une année ou plusieurs dates en ajoutant des options grâce aux attributs.
+
+:::demo
+
+```html
+
+
+ Semaine
+
+
+
+
+ Mois
+
+
+
+
+
+
+ Année
+
+
+
+
+ Dates
+
+
+
+
+
+
+```
+
+:::
+
+### Plage de dates
+
+Vous pouvez sélectionner une plage de dates.
+
+:::demo Lorsque ce mode est activé, les deux panneaux sont liés par défaut. Si vous souhaitez qu'ils changent de mois de manière indépendante, ajoutez l'attribut `unlink-panels`.
+
+```html
+
+
+ Défaut
+
+
+
+
+ Avec des options
+
+
+
+
+
+
+```
+
+:::
+
+### Plage de mois
+
+Vous pouvez sélectionner une plage de mois.
+
+:::demo Lorsque ce mode est activé, les panneaux gauche et droit sont liés par défaut. Si vous voulez que les deux panneaux switch indépendamment les années en cours, vous pouvez utiliser l'attribut `unlink-panels`.
+```html
+
+
+ Défaut
+
+
+
+
+ Avec options
+
+
+
+
+
+
+```
+:::
+
+### Valeur par défaut
+
+Si l'utilisateur n'a pas sélectionné de date, vous pouvez montrer la date d'aujourd'hui par défaut. Utilisez `default-value` pour montrer une autre date. Sa valeur doit être parsable par `new Date()`.
+
+Si le type est `daterange`, `default-value` configure la panneau de gauche.
+
+:::demo
+```html
+
+
+ Date
+
+
+
+
+ Plage de dates
+
+
+
+
+
+
+```
+:::
+
+### Formats de date
+
+Utilisez `format` pour contrôler l'affichage de la date dans le champ. Utilisez `value-format` pour contrôler le format de la variable stockée.
+
+Par défaut, le composant accepte et émet un objet `Date`. Les formats supportés se trouvent ci-dessous, avec la date UTC 2017-01-02 03:04:05 comme exemple:
+
+:::warning
+Attention à la capitalisation !
+:::
+
+| Format | Signification | Note | Exemple |
+|------|------|------|------|------|
+| `yyyy` | Année | | 2017 |
+| `M` | Mois | pas de 0 au début | 1 |
+| `MM` | Mois | | 01 |
+| `MMM` | Mois | | Jan |
+| `MMMM` | Mois | | Janvier |
+| `W` | Semaine | uniquement pour les `format` des types 'semaine' ; pas de 0 au début | 1 |
+| `WW` | Semaine | uniquement pour les `format` des types 'semaine' | 01 |
+| `d` | Jour | pas de 0 au début | 2 |
+| `dd` | Jour | | 02 |
+| `H` | Heure | Horloge 24 heures; pas de 0 au début | 3 |
+| `HH` | Heure | Horloge 24 heures | 03 |
+| `h` | Heure | Horloge 12 heures ; doit être utilisé avec `A` ou `a`; pas de 0 au début | 3 |
+| `hh` | Heure | Horloge 12 heures ; doit être utilisé avec `A` ou `a` | 03 |
+| `m` | Minute | pas de 0 au début | 4 |
+| `mm` | Minute | | 04 |
+| `s` | Seconde | pas de 0 au début | 5 |
+| `ss` | Seconde | | 05 |
+| `A` | AM/PM | uniquement pour `format`, majuscules | AM |
+| `a` | am/pm | uniquement pour `format`, minuscules | am |
+| `timestamp` | timestamp JS | uniquement pour `value-format`; la variable stockée sera un `number` | 1483326245000 |
+| `[MM]` | Pas de caractère d'échappement | Pour échapper des caractères, placez-les entre crochets (ex: [A] [MM]) | MM |
+
+:::demo
+```html
+
+
+ Émet un objet Date
+ Value: {{ value1 }}
+
+
+
+
+ Utilise value-format
+ Value: {{ value2 }}
+
+
+
+
+ Timestamp
+ Value:{{ value3 }}
+
+
+
+
+
+
+```
+:::
+
+### Horaire par défaut pour les dates de fin et de début
+
+Lorsque vous choisissez une plage de dates, vous pouvez assigner l'horaire de départ et de fin pour chacune des dates.
+
+:::demo Par défaut, l'horaire pour les dates de début et de fin est `00:00:00`. Configurez `default-time` pour changer l'horaire. Cet attribut prends un tableau de un ou deux horaires au format `12:00:00`. Le premier est pour la date de début, le deuxième pour la date de fin.
+```html
+
+
+ Valeur: {{ value }}
+
+
+
+
+
+
+```
+:::
+
+### Attributs
+| Attribut | Description | Type | Valeurs acceptées | Défaut |
+|---------- |-------------- |---------- |-------------------------------- |-------- |
+| value / v-model | La valeur liée. | date(DatePicker) / array(DateRangePicker) | — | — |
+| readonly | Si le DatePicker est en lecture seule. | boolean | — | false |
+| disabled | Si le DatePicker est désactivé. | boolean | — | false |
+| size | Taille du champs. | string | large/small/mini | — |
+| editable | Si le champ est éditable. | boolean | — | true |
+| clearable | Si la croix de reset doit apparaître. | boolean | — | true |
+| placeholder | Le placeholder en mode normal. | string | — | — |
+| start-placeholder | Le placeholder pour la date de début en mode plage de dates. | string | — | — |
+| end-placeholder | Le placeholder pour la date de fin en mode plage de dates. | string | — | — |
+| type | Type du picker. | string | year/month/date/dates/datetime/ week/datetimerange/daterange/ monthrange | date |
+| format | Format d'affichage dans le champ. | string | Voir [formats de date](#/fr-FR/component/date-picker#formats-de-date). | yyyy-MM-dd |
+| align | Alignement. | left/center/right | left |
+| popper-class | Nom de classe pour le menu déroulant du DatePicker. | string | — | — |
+| picker-options | Options additionnelles, voir la table ci-dessous. | object | — | {} |
+| range-separator | Séparateur de plage de dates. | string | — | '-' |
+| default-value | Date par défaut du calendrier, optionnelle. | Date | Tout ce qui est accepté par `new Date()` | — |
+| default-time | Horaire par défaut quand on sélectionne une plage dates, optionnel. | string[] | Tableau de taille 2, chaque valeur est au format `12:00:00`. La première pour la date de début, la deuxième pour la date de fin. | — |
+| value-format | Format de la variable stockée, optionnel. Si non spécifié, la valeur sera un objet Date. | string | Voir [formats de date](#/en-US/component/date-picker#formats-de-date) | — |
+| name | Identique au `name` de l'input natif | string | — | — |
+| unlink-panels | Rend indépendants les deux panneaux de plage de dates. | boolean | — | false |
+| prefix-icon | Icône de préfixe. | string | — | el-icon-date |
+| clear-icon | Icône de reset. | string | — | el-icon-circle-close |
+| validate-event | Si la validation doit être déclenchée. | boolean | - | true |
+
+### Options du Picker
+| Attribut | Description | Type | Valeurs acceptées | Défaut |
+|---------- |-------------- |---------- |-------------------------------- |-------- |
+| shortcuts | Un tableau d'objets { text, onClick } pour configurer les raccourcis, voir table ci-dessous. | object[] | — | — |
+| disabledDate | Une fonction qui détermine si une date est désactivée ou pas, avec cette date en paramètre. Doit retourner un booléen. | function | — | — |
+| cellClassName | set custom className | Function(Date) | — | — |
+| firstDayOfWeek | Premier jour du mois. | Number | 1 to 7 | 7 |
+| onPick | Callback se déclenchant quand la date sélectionnée change. Uniquement pour `daterange` et `datetimerange`. | Function({ maxDate, minDate }) | - | - |
+
+### Raccourcis
+| Attribut | Description | Type | Valeurs acceptées | Défaut |
+|---------- |-------------- |---------- |-------------------------------- |-------- |
+| text | Titre du raccourci. | string | — | — |
+| onClick | Callback se déclenchant quand le raccourci est cliqué, avec `vm` en paramètre. Vous pouvez changer la valeur du picker en émettant l'évènement `pick`. Exemple: `vm.$emit('pick', new Date())`| function | — | — |
+
+### Évènements
+| Nom | Description | Paramètres |
+|---------|--------|---------|
+| change | Se déclenche quand l'utilisateur confirme la valeur | component's binding value |
+| blur | Se déclenche quand le champ perds le focus. | component instance |
+| focus | Se déclenche quand le champ a le focus. | component instance |
+
+### Méthodes
+| Méthode | Description | Paramètres |
+|------|--------|-------|
+| focus | Focus sur le champ. | — |
+
+### Slots
+| Nom | Description |
+|---------|-------------|
+| range-separator | Séparateur d'intervalle personnalisé. |
diff --git a/examples/docs/fr-FR/datetime-picker.md b/examples/docs/fr-FR/datetime-picker.md
new file mode 100644
index 00000000000..64609219e89
--- /dev/null
+++ b/examples/docs/fr-FR/datetime-picker.md
@@ -0,0 +1,241 @@
+## DateTimePicker
+
+Sélectionnez une date et une heure dans un seul picker.
+
+:::tip
+DateTimePicker est dérivé de DatePicker et TimePicker. Pour plus d'informations sur `pickerOptions` et d'autres attributs, vous pouvez vous référer à DatePicker et TimePicker.
+:::
+
+### Date et horaire
+
+:::demo Vous pouvez sélectionner une date et un horaire en un seul picker en réglant `type` sur `datetime`. La manière d'utiliser des raccourcis est la même que pour DatePicker.
+
+```html
+
+
+ Défaut
+
+
+
+
+ Avec raccourcis
+
+
+
+
+ Avec horaire par défaut
+
+
+
+
+
+
+```
+:::
+
+### Plage de dates et d'horaires
+
+:::demo Vous pouvez sélectionner des plages en configurant `type` sur `datetimerange`.
+
+```html
+
+
+ Défaut
+
+
+
+
+ Avec raccourcis
+
+
+
+
+
+
+```
+:::
+
+### Horaire par défaut pour les plages de dates
+
+:::demo Lorsque vous sélectionnez une plage de dates dans le panneau de date avec le type `datetimerange`, `00:00:00` sera utilisé comme horaire par défaut pour les dates de début et de fin. Vous pouvez contrôler cette valeur avec l'attribut `default-time`. Il accepte un tableau de une ou deux chaînes de caractères. La première indique l'horaire de la date de début, la deuxième celui de la date de fin.
+```html
+
+
+ Heure de la date de début 12:00:00
+
+
+
+
+ Heure de la date de début 12:00:00, heure de la date de fin 08:00:00
+
+
+
+
+
+
+```
+:::
+
+### Attributs
+| Attribut | Description | Type | Valeurs acceptées | Défaut |
+|---------- |-------------- |---------- |-------------------------------- |-------- |
+| value / v-model | La valeur liée. | date(DateTimePicker) / array(DateTimeRangePicker) | — | — |
+| readonly | Si le DatePicker est en lecture seule. | boolean | — | false |
+| disabled | Si le DatePicker est désactivé. | boolean | — | false |
+| editable | Si le champ est éditable. | boolean | — | true |
+| clearable | Si la croix de reset doit apparaître. | boolean | — | true |
+|size | Taille du champ. | string | large/small/mini | — |
+| placeholder | Le placeholder en mode normal. | string | — | — |
+| start-placeholder | Le placeholder de la date de début en mode plage de dates. | string | — | — |
+| end-placeholder | Le placeholder de la date de fin en mode plage de dates. | string | — | — |
+| time-arrow-control | Si l'horaire peut être sélectionné en utilisant les flèches de direction. | boolean | — | false |
+| type | Type du picker. | string | year/month/date/datetime/ week/datetimerange/daterange | date |
+| format | Format d'affichage de la date dans le champ. | string | Voir [formats de date](#/fr-FR/component/date-picker#formats-de-date) | yyyy-MM-dd HH:mm:ss |
+| align | Alignements. | left/center/right | left |
+| popper-class | Nom de classe pour le menu déroulant du DateTimePicker. | string | — | — |
+| picker-options | Options additionnelles, voir la table ci-dessous. | object | — | {} |
+| range-separator | Séparateur de plage. | string | - | '-' |
+| default-value | Date par défaut du calendrier, optionnelle. | Date | N'importe quelle valeur acceptée par `new Date()` | — |
+| default-time | L'horaire par défaut après avoir choisi une date. | normal: string / plage de dates: string[] | normal: un string tel que `12:00:00`, range: tableau de deux strings, le premier pour la date de début, le deuxième pour la date de fin. Si non spécifié, `00:00:00` est utilisé. | — |
+| value-format | Format de la variable stockée, optionnel. Si non spécifié, La valeur sera un objet Date. | string | Voir [formats de date](#/fr-FR/component/date-picker#formats-de-date) | — |
+| name | Identique au `name` de l'input natif | string | — | — |
+| unlink-panels | Rend indépendants les deux panneaux de plage de dates | boolean | — | false |
+| prefix-icon | Icône de préfixe. | string | — | el-icon-date |
+| clear-icon | Icône de reset | string | — | el-icon-circle-close |
+
+### Options du Picker
+| Attribut | Description | Type | Valeurs acceptées | Défaut |
+|---------- |-------------- |---------- |-------------------------------- |-------- |
+| shortcuts | Un tableau d'objets { text, onClick } pour mettre en place des raccourcis, vérifier le tableau ci-dessous | object[] | — | — |
+| disabledDate | Une fonction déterminant si une date est désactivée avec cette date en paramètre. Retourne un Boolean | function | — | — |
+| cellClassName | set custom className | Function(Date) | — | — |
+| firstDayOfWeek | Le premier jour de la semaine | Number | 1 à 7 | 7 |
+
+### Raccourcis
+| Attribut | Description | Type | Valeurs acceptées | Défaut |
+|---------- |-------------- |---------- |-------------------------------- |-------- |
+| text | Titre du raccourci. | string | — | — |
+| onClick | Callback se déclenchant quand le raccourci est cliqué, avec `vm` en paramètre. Vous pouvez changer la valeur du picker en émettant l'évènement `pick`. Exemple: `vm.$emit('pick', new Date())`| function | — | — |
+
+### Évènements
+| Nom | Description | Paramètres |
+|---------|--------|---------|
+| change | Se déclenche quand l'utilisateur confirme la valeur | component's binding value |
+| blur | Se déclenche quand le champ perds le focus. | component instance |
+| focus | Se déclenche quand le champ a le focus. | component instance |
+
+### Méthodes
+| Méthode | Description | Paramètres |
+|------|--------|-------|
+| focus | Focus sur le champ. | — |
diff --git a/examples/docs/fr-FR/dialog.md b/examples/docs/fr-FR/dialog.md
new file mode 100644
index 00000000000..b4960ff9e21
--- /dev/null
+++ b/examples/docs/fr-FR/dialog.md
@@ -0,0 +1,244 @@
+## Dialog
+
+Informe les utilisateurs tout en préservant l'état de la page.
+
+### Usage
+
+Le Dialog ouvre un modal personnalisable.
+
+:::demo Configurez l'attribut `visible` avec un `Boolean`, un modal apparaîtra quand la valeur sera à `true`. Le Dialog possède deux parties: `body` et `footer`, ce-dernier nécessitant un `slot` appelé `footer`. L'attribut optionnel `title` (vide par défaut) définit le titre. Cet exemple montre également comment `before-close` peut être utilisé.
+
+```html
+Cliquez pour ouvrir le modal
+
+
+ Ceci est un message
+
+
+
+
+```
+:::
+
+:::tip
+`before-close` ne fonctionne que quand l'utilisateur clique sur l'icône de fermeture en dehors du modal. S'il y a des boutons dans le `footer`, vous pouvez configurer `before-close` grâce à leur évènement click.
+:::
+
+### Personalisation
+
+Le contenu du modal peut être n'importe quoi, tableau ou formulaire compris.
+
+:::demo
+
+```html
+
+Ouvrir un modal avec tableau
+
+
+
+
+
+
+
+
+
+
+Ouvrir un modal avec formulaire
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+:::
+
+### Dialog imbriqué
+
+Si un Dialog est imbriqué dans un autre Dialog, `append-to-body` est requis.
+
+:::demo Normalement l'utilisation de Dialog imbriqué est déconseillée. Si vous avez besoin de plusieurs Dialogs sur la page, vous pouvez les aplatir afin qu'ils soit au même niveau. Si vous devez absolument utiliser un Dialog imbriqué, configurez l'attribut `append-to-body` du Dialog imbriqué à `true` et il sera ajouté au body au lieu de son noeud parent, afin d'avoir un affichage correct.
+```html
+
+ Ouvrir le modal extérieur
+
+
+
+
+
+
+
+
+
+```
+:::
+
+### Centrer le contenu
+
+Le contenu du modal peut être centré.
+
+:::demo Régler `center` à `true` centrera horizontalement le header et le footer. `center` n'affecte que le header et le footer. Le contenu du body pouvant être n'importe quoi, si vous désirez le centrer vous devrez ajouter des règles CSS.
+
+```html
+Cliquez pour ouvrir le modal
+
+
+ Le contenu du modal n'est pas centré par défaut.
+
+
+
+
+```
+:::
+
+:::tip
+Le contenu de Dialog bénéficie du lazy loading, ce qui signifie que le slot par défaut n'est pas généré par le DOM avant la première ouverture. Si vous avez besoin de manipuler le DOM ou d'accéder à un composant via `ref`, vous pouvez le faire avec la callback de l'évènement `open`.
+:::
+
+:::tip
+Si la variable liée à `visible` est gérée dans Vuex, le modificateur `.sync` ne peut pas fonctionner. Dans ce cas retirez-le, écoutez les évènements `open` et `close`, et commitez les mutations Vuex pour mettre à jour la valeur de cette variable.
+:::
+
+### Attributs
+
+| Attribut | Description | Type | Valeurs acceptées | Défaut |
+|---------- |-------------- |---------- |-------------------------------- |-------- |
+| visible | Visibilité du Dialog, supporte le modificateur .sync. | boolean | — | false |
+| title | Titre du Dialog. Peut aussi être passé via un slot (voir la table suivante). | string | — | — |
+| width | Largeur du Dialog. | string | — | 50% |
+| fullscreen | Si le Dialog doit être en plein écran. | boolean | — | false |
+| top | Valeur du `margin-top` du CSS du Dialog. | string | — | 15vh |
+| modal | Si un masque est affiché. | boolean | — | true |
+| modal-append-to-body | S'il faut ajouter le modal au body. Si `false`, le modal sera ajouter à l'élément parent du Dialog. | boolean | — | true |
+| append-to-body | S'il faut ajouter le Dialog au body. Un Dialog imbriqué doit avoir cet attribut à `true`. | boolean | — | false |
+| lock-scroll | Si le défilement du body est désactivé. | boolean | — | true |
+| custom-class | Nom de classe pour le Dialog | string | — | — |
+| close-on-click-modal | Si le Dialog peut être fermé en cliquant sur le masque. | boolean | — | true |
+| close-on-press-escape | Si le Dialog peut être fermé en appuyant sur Echap. | boolean | — | true |
+| show-close | Si le bouton de fermeture doit apparaître. | boolean | — | true |
+| before-close | Callback avant la fermeture du Dialog. | function(done),done est utilisé pour fermer le Dialog. | — | — |
+| center | Si le header et le footer doivent être centrés. | boolean | — | false |
+| destroy-on-close | Destroy elements in Dialog when closed | boolean | — | false |
+
+### Slot
+
+| Nom | Description |
+|------|--------|
+| — | Contenu du Dialog. |
+| title | Contenu du titre. |
+| footer | Contenu du footer. |
+
+### Évènements
+
+| Nom | Description | Paramètres |
+|---------- |-------- |---------- |
+| open | Se déclenche quand le Dialog s'ouvre. | — |
+| opened | Se déclenche quand l'animation d'ouverture est terminée. | — |
+| close | Se déclenche quand le Dialog se ferme. | — |
+| closed | Se déclenche quand l'animation de fermeture du Dialog est terminée. | — |
diff --git a/examples/docs/fr-FR/divider.md b/examples/docs/fr-FR/divider.md
new file mode 100644
index 00000000000..6676ef91fe9
--- /dev/null
+++ b/examples/docs/fr-FR/divider.md
@@ -0,0 +1,61 @@
+## Divider
+
+Une ligne de séparation entre deux contenus.
+
+### Usage basique
+
+Séparer le texte de deux paragraphes.
+
+:::demo
+```html
+
+
+ Je suis assis à ma fenêtre ce matin où le monde, tel un passant, s’arrête un instant, me fait signe de la tête et part.
+
+ Les petites pensées sont le bruissement des feuilles; ils ont leur murmure de joie dans mon esprit.
+
+
+```
+:::
+
+### Contenu personnalisé
+
+Vous ajouter du contenu dans la ligne de séparation.
+
+:::demo
+```html
+
+
+ Vous ne voyez pas ce que vous êtes, ce que vous voyez est votre ombre.
+ Rabindranath Tagore
+ Je ne peux pas choisir le meilleur. Le meilleur me choisit.
+
+ Mes souhaits sont des imbéciles, ils crient à travers ta chanson, mon Maître. Laisse-moi mais écoute.
+ Rabindranath Tagore
+
+
+```
+:::
+
+### Séparation verticale
+
+:::demo
+```html
+
+
+ Pluie
+
+ Maison
+
+ Herbe
+
+
+```
+:::
+
+### Attributs
+
+| Attribut | Description | Type | Valeurs acceptées | Défaut |
+|------------- |---------------- |---------------- |---------------------- |-------- |
+| direction | Règle la direction du séparateur. | string | horizontal / vertical | horizontal |
+| content-position | Personnalise le contenu du séparateur. | String | left / right / center | center |
diff --git a/examples/docs/fr-FR/drawer.md b/examples/docs/fr-FR/drawer.md
new file mode 100644
index 00000000000..7e99cdd7807
--- /dev/null
+++ b/examples/docs/fr-FR/drawer.md
@@ -0,0 +1,305 @@
+## Drawer
+
+Sometimes, `Dialog` does not always satisfy our requirements, let's say you have a massive form, or you need space to display something like `terms & conditions`, `Drawer` has almost identical API with `Dialog`, but it introduces different user experience.
+
+### Basic Usage
+
+Callout a temporary drawer, from multiple direction
+
+:::demo You must set `visible` for `Drawer` like `Dialog` does to control the visibility of `Drawer` itself, it's `boolean` type. `Drawer` has to parts: `title` & `body`, the `title` is a named slot, you can also set the title through attribute named `title`, default to an empty string, the `body` part is the main area of `Drawer`, which contains user defined content. When opening, `Drawer` expand itself from the **right corner to left** which size is **30%** of the browser window by default. You can change that default behavior by setting `direction` and `size` attribute. This show case also demonstrated how to use the `before-close` API, check the Attribute section for more detail
+
+```html
+
+ left to right
+ right to left
+ top to bottom
+ bottom to top
+
+
+
+ open
+
+
+
+ Hi, there!
+
+
+
+```
+:::
+
+### No Title
+
+When you no longer need a title, you can remove title from drawer.
+
+:::demo Set the `withHeader` attribute to **false**, you can remove the title from drawer, thus your drawer can have more space on screen. If you want to be accessible, make sure to set the `title` attribute.
+
+```html
+
+ open
+
+
+
+ Hi there!
+
+
+
+```
+:::
+
+### Customization Content
+
+Like `Dialog`, `Drawer` can do many diverse interaction as you wanted.
+
+:::demo
+
+```html
+Open Drawer with nested table
+Open Drawer with nested form
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+:::
+
+### Nested Drawer
+
+You can also have multiple layer of `Drawer` just like `Dialog`.
+:::demo If you need multiple Drawer in different layer, you must set the `append-to-body` attribute to **true**
+
+```html
+
+
+ open
+
+
+
+
+ Click me!
+
+ _(:зゝ∠)_
+
+
+
+
+
+
+```
+:::
+
+:::tip
+
+The content inside Drawer should be lazy rendered, which means that the content inside Drawer will not impact the initial render performance, therefore any DOM operation should be performed through `ref` or after `open` event emitted.
+
+:::
+
+:::tip
+
+Drawer provides an API called `destroyOnClose`, which is a flag variable that indicates should destroy the children content inside Drawer after Drawer was closed. You can use this API when you need your `mounted` life cycle to be called every time the Drawer opens.
+
+:::
+
+:::tip
+
+If the variable bound to `visible` is managed in Vuex store, the `.sync` can not work properly. In this case, please remove the `.sync` modifier, listen to `open` and `close` events of Dialog, and commit Vuex mutations to update the value of that variable in the event handlers.
+
+:::
+
+### Drawer Attributes
+
+| Parameter| Description | Type | Acceptable Values | Defaults |
+|---------- |-------------- |---------- |-------------------------------- |-------- |
+| append-to-body | Controls should Drawer be inserted to DocumentBody Element, nested Drawer must assign this param to **true**| boolean | — | false |
+| before-close | If set, closing procedure will be halted | function(done), done is function type that accepts a boolean as parameter, calling done with true or without parameter will abort the close procedure | — | — |
+| close-on-press-escape | Indicates whether Drawer can be closed by pressing ESC | boolean | — | true |
+| custom-class | Extra class names for Drawer | string | — | — |
+| destroy-on-close | Indicates whether children should be destroyed after Drawer closed | boolean | - | false |
+| modal | Should show shadowing layer | boolean | — | true |
+| modal-append-to-body | Indicates should shadowing layer be insert into DocumentBody element | boolean | — | true |
+| direction | Drawer's opening direction | Direction | rtl / ltr / ttb / btt | rtl |
+| show-close | Should show close button at the top right of Drawer | boolean | — | true |
+| size | Drawer's size, if Drawer is horizontal mode, it effects the width property, otherwise it effects the height property, when size is `number` type, it describes the size by unit of pixels; when size is `string` type, it should be used with `x%` notation, other wise it will be interpreted to pixel unit | number / string | - | '30%' |
+| title | Drawer's title, can also be set by named slot, detailed descriptions can be found in the slot form | string | — | — |
+| visible | Should Drawer be displayed, also support the `.sync` notation | boolean | — | false |
+| wrapperClosable | Indicates whether user can close Drawer by clicking the shadowing layer. | boolean | - | true |
+| withHeader | Flag that controls the header section's existance, default to true, when withHeader set to false, both `title attribute` and `title slot` won't work | boolean | - | true |
+
+### Drawer Slot
+
+| Name | Description |
+|------|--------|
+| — | Drawer's Content |
+| title | Drawer Title Section |
+
+### Drawer Methods
+
+| Name | Description |
+| ---- | --- |
+| closeDrawer | In order to close Drawer, this method will call `before-close`. |
+
+### Drawer Events
+
+| Event Name | Description | Parameter |
+|---------- |-------- |---------- |
+| open | Triggered before Drawer opening animation begins | — |
+| opened | Triggered after Drawer opening animation ended | — |
+| close | Triggered before Drawer closing animation begins | — |
+| closed | Triggered after Drawer closing animation ended | — |
diff --git a/examples/docs/fr-FR/dropdown.md b/examples/docs/fr-FR/dropdown.md
new file mode 100644
index 00000000000..7ddcae1f8f3
--- /dev/null
+++ b/examples/docs/fr-FR/dropdown.md
@@ -0,0 +1,307 @@
+## Dropdown
+Menu déroulant pour afficher des listes de liens et d'actions possibles.
+
+### Usage
+Passez sur le menu avec la souris pour dérouler son contenu.
+
+:::demo L'élément déclencheur est généré par le `slot` par défaut, et le menu déroulant est généré par le `slot` appelé `dropdown`. Par défaut le menu apparaît simplement en passant la souris sur l'élément déclencheur, sans avoir à cliquer.
+
+```html
+
+
+ Menu déroulant
+
+
+ Action 1
+ Action 2
+ Action 3
+ Action 4
+ Action 5
+
+
+
+
+
+```
+
+:::
+
+### Élément déclencheur
+
+Utilisez le bouton pour ouvrir le menu déroulant.
+
+:::demo Utilisez `split-button` pour séparer le déclencheur du reste du bouton, ce dernier devenant la partie gauche et le déclencheur la partie droite.
+```html
+
+
+ Liste déroulante
+
+
+ Action 1
+ Action 2
+ Action 3
+ Action 4
+ Action 5
+
+
+
+ Liste déroulante
+
+ Action 1
+ Action 2
+ Action 3
+ Action 4
+ Action 5
+
+
+
+
+
+
+```
+:::
+
+### Déclencheur
+
+Vous pouvez choisir de déclencher le menu au moment du clic, ou en passant la souris sur l'élément.
+
+:::demo Utilisez l'attribut `trigger`. Par défaut, il est à `hover`.
+
+```html
+
+
+ En passant la souris
+
+
+ Liste déroulante
+
+
+ Action 1
+ Action 2
+ Action 3
+ Action 4
+ Action 5
+
+
+
+
+ En cliquant
+
+
+ Liste déroulante
+
+
+ Action 1
+ Action 2
+ Action 3
+ Action 4
+ Action 5
+
+
+
+
+
+
+```
+:::
+
+### Fermer le menu
+
+Utilisez l'attribut `hide-on-click` pour déterminer si le menu se ferme après avoir cliqué sur un élément de la liste.
+
+:::demo Par défaut le menu se ferme après avoir cliqué dans la liste. Vous pouvez changer cette option en mettant `hide-on-click` à `false`.
+```html
+
+
+ Liste déroulante
+
+
+ Action 1
+ Action 2
+ Action 3
+ Action 4
+ Action 5
+
+
+
+
+```
+:::
+
+### Évènement command
+
+Cliquer sur un élément du dropdown déclenche un évènement "command".
+Le paramètre de cet évènement peut être assigné à chaque élément de la liste.
+
+:::demo
+```html
+
+
+ Liste déroulante
+
+
+ Action 1
+ Action 2
+ Action 3
+ Action 4
+ Action 5
+
+
+
+
+
+
+```
+:::
+
+### Tailles
+
+En plus de la taille par défaut, le composant Dropdown propose trois autres tailles différentes.
+
+:::demo Utilisez `size` pour déterminer une autre taille parmi `medium`, `small` ou `mini`.
+
+```html
+
+ Défaut
+
+ Action 1
+ Action 2
+ Action 3
+ Action 4
+
+
+
+
+ Medium
+
+ Action 1
+ Action 2
+ Action 3
+ Action 4
+
+
+
+
+ Small
+
+ Action 1
+ Action 2
+ Action 3
+ Action 4
+
+
+
+
+ Mini
+
+ Action 1
+ Action 2
+ Action 3
+ Action 4
+
+
+```
+:::
+
+
+### Attributs du Dropdown
+
+| Attribut | Description | Type | Valeurs acceptées | Défaut |
+|------------- |---------------- |---------------- |---------------------- |-------- |
+| type | Type du bouton, se référer au composant `Button`. Ne marche que si `split-button` est `true`. | string | — | — |
+| size | Taille du menu, marche aussi avec `split button`. | string | medium / small / mini | — |
+| split-button | Si le bouton est séparé en deux. | boolean | — | false |
+| placement | Emplacement du menu déroulant | string | top/top-start/top-end/bottom/bottom-start/bottom-end | bottom-end |
+| trigger | Comment déclencher l'ouverture du menu. | string | hover/click | hover |
+| hide-on-click | Si le menu doit disparaître après avoir cliqué sur un élément. | boolean | — | true |
+| show-timeout | Délai avant d'afficher le menu (ne marche que si `trigger` est `hover`) | number | — | 250 |
+| hide-timeout | Délai avant de cacher le menu (ne marche que si `trigger` est `hover`) | number | — | 150 |
+| tabindex | [tabindex](https://developer.mozilla.org/fr/docs/Web/HTML/Attributs_universels/tabindex) de Dropdown | number | — | 0 |
+
+### Dropdown Slots
+
+| Nom | Description |
+|------|--------|
+| — | Contenu du Dropdown. Note: doit être un élément du DOM valide (ex. `,