├── src
├── theme
│ ├── form-item.css
│ ├── menu-item.css
│ ├── submenu.css
│ ├── tab-pane.css
│ ├── button-group.css
│ ├── checkbox-group.css
│ ├── dropdown-item.css
│ ├── dropdown-menu.css
│ ├── radio-button.css
│ ├── radio-group.css
│ ├── breadcrumb-item.css
│ ├── menu-item-group.css
│ ├── fonts
│ │ ├── element-icons.eot
│ │ ├── element-icons.ttf
│ │ └── element-icons.woff
│ ├── steps.css
│ ├── element-variables.css
│ ├── card.css
│ ├── option-group.css
│ ├── icon.css
│ ├── spinner.css
│ ├── rate.css
│ ├── badge.css
│ └── option.css
├── assets
│ ├── logo.png
│ └── style.css
├── view
│ ├── Badge.vue
│ ├── Loading.vue
│ ├── DatePicker.vue
│ ├── Tooltip.vue
│ ├── Pagination.vue
│ ├── Breadcrumb.vue
│ ├── Switch.vue
│ ├── Alert.vue
│ ├── Popconfirm.vue
│ ├── Dropdown.vue
│ ├── Notification.vue
│ ├── Message.vue
│ ├── Tag.vue
│ ├── Table.vue
│ ├── Tabs.vue
│ ├── MessageBox.vue
│ ├── Card.vue
│ ├── Input.vue
│ ├── Dialog.vue
│ ├── Step.vue
│ ├── Radio.vue
│ ├── Select.vue
│ ├── Button.vue
│ ├── NavMenu.vue
│ └── Form.vue
└── main.js
├── element-theme-default
├── lib
│ ├── submenu.css
│ ├── tab-pane.css
│ ├── button-group.css
│ ├── dropdown-item.css
│ ├── dropdown-menu.css
│ ├── form-item.css
│ ├── menu-item.css
│ ├── radio-button.css
│ ├── radio-group.css
│ ├── breadcrumb-item.css
│ ├── checkbox-group.css
│ ├── menu-item-group.css
│ ├── fonts
│ │ ├── element-icons.eot
│ │ ├── element-icons.ttf
│ │ └── element-icons.woff
│ ├── steps.css
│ ├── option-group.css
│ ├── card.css
│ ├── rate.css
│ ├── spinner.css
│ ├── badge.css
│ ├── option.css
│ ├── row.css
│ ├── breadcrumb.css
│ ├── select-dropdown.css
│ ├── loading.css
│ ├── alert.css
│ ├── notification.css
│ ├── form.css
│ ├── message.css
│ ├── dialog.css
│ ├── tag.css
│ ├── tree.css
│ ├── progress.css
│ ├── switch.css
│ ├── popover.css
│ ├── checkbox.css
│ ├── icon.css
│ ├── step.css
│ ├── tooltip.css
│ ├── radio.css
│ ├── menu.css
│ ├── time-picker.css
│ ├── tabs.css
│ └── base.css
├── src
│ ├── submenu.css
│ ├── tab-pane.css
│ ├── button-group.css
│ ├── dropdown-item.css
│ ├── dropdown-menu.css
│ ├── form-item.css
│ ├── menu-item.css
│ ├── radio-button.css
│ ├── radio-group.css
│ ├── breadcrumb-item.css
│ ├── checkbox-group.css
│ ├── menu-item-group.css
│ ├── base.css
│ ├── fonts
│ │ ├── element-icons.eot
│ │ ├── element-icons.ttf
│ │ └── element-icons.woff
│ ├── time-picker.css
│ ├── steps.css
│ ├── date-picker.css
│ ├── date-picker
│ │ ├── picker.css
│ │ ├── time-range-picker.css
│ │ ├── month-table.css
│ │ ├── year-table.css
│ │ ├── time-spinner.css
│ │ ├── date-picker.css
│ │ ├── date-table.css
│ │ ├── time-picker.css
│ │ ├── date-range-picker.css
│ │ └── picker-panel.css
│ ├── card.css
│ ├── option-group.css
│ ├── core
│ │ ├── tag.css
│ │ ├── dropdown.css
│ │ ├── input.css
│ │ └── option.css
│ ├── row.css
│ ├── time-select.css
│ ├── spinner.css
│ ├── badge.css
│ ├── rate.css
│ ├── breadcrumb.css
│ ├── cascader.css
│ ├── option.css
│ ├── index.css
│ ├── common
│ │ └── transition.css
│ ├── mixins
│ │ └── _button.css
│ ├── select-dropdown.css
│ ├── loading.css
│ ├── dropdown.css
│ ├── form.css
│ ├── autocomplete.css
│ ├── table-column.css
│ ├── message.css
│ ├── alert.css
│ ├── notification.css
│ ├── col.css
│ ├── dialog.css
│ ├── input-number.css
│ ├── tree.css
│ ├── progress.css
│ ├── tag.css
│ ├── icon.css
│ └── switch.css
├── README.md
└── package.json
├── .gitignore
├── .babelrc
├── index.html
├── element-theme
├── index.js
├── lib
│ ├── config.js
│ ├── gen-vars.js
│ └── task.js
├── bin
│ └── element-theme
├── LICENSE
├── README.md
└── package.json
├── README.md
├── package.json
└── webpack.config.js
/src/theme/form-item.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/theme/menu-item.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/theme/submenu.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/theme/tab-pane.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/theme/button-group.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/theme/checkbox-group.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/theme/dropdown-item.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/theme/dropdown-menu.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/theme/radio-button.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/theme/radio-group.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/theme/breadcrumb-item.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/theme/menu-item-group.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/element-theme-default/lib/submenu.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/element-theme-default/lib/tab-pane.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/element-theme-default/src/submenu.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/element-theme-default/src/tab-pane.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/element-theme-default/lib/button-group.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/element-theme-default/lib/dropdown-item.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/element-theme-default/lib/dropdown-menu.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/element-theme-default/lib/form-item.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/element-theme-default/lib/menu-item.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/element-theme-default/lib/radio-button.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/element-theme-default/lib/radio-group.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/element-theme-default/src/button-group.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/element-theme-default/src/dropdown-item.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/element-theme-default/src/dropdown-menu.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/element-theme-default/src/form-item.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/element-theme-default/src/menu-item.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/element-theme-default/src/radio-button.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/element-theme-default/src/radio-group.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/element-theme-default/lib/breadcrumb-item.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/element-theme-default/lib/checkbox-group.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/element-theme-default/lib/menu-item-group.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/element-theme-default/src/breadcrumb-item.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/element-theme-default/src/checkbox-group.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/element-theme-default/src/menu-item-group.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/element-theme-default/src/base.css:
--------------------------------------------------------------------------------
1 | @import "./common/transition.css";
2 | @import "./icon.css";
3 |
--------------------------------------------------------------------------------
/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/taixw2/making-element-ui-theme/HEAD/src/assets/logo.png
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules/
3 | dist/
4 | npm-debug.log
5 | .idea
6 | src/theme
7 | element-ui
8 |
--------------------------------------------------------------------------------
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | ["es2015", { "modules": false }]
4 | ],
5 | "plugins": ["transform-vue-jsx"]
6 | }
7 |
--------------------------------------------------------------------------------
/src/theme/fonts/element-icons.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/taixw2/making-element-ui-theme/HEAD/src/theme/fonts/element-icons.eot
--------------------------------------------------------------------------------
/src/theme/fonts/element-icons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/taixw2/making-element-ui-theme/HEAD/src/theme/fonts/element-icons.ttf
--------------------------------------------------------------------------------
/src/theme/fonts/element-icons.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/taixw2/making-element-ui-theme/HEAD/src/theme/fonts/element-icons.woff
--------------------------------------------------------------------------------
/element-theme-default/lib/fonts/element-icons.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/taixw2/making-element-ui-theme/HEAD/element-theme-default/lib/fonts/element-icons.eot
--------------------------------------------------------------------------------
/element-theme-default/lib/fonts/element-icons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/taixw2/making-element-ui-theme/HEAD/element-theme-default/lib/fonts/element-icons.ttf
--------------------------------------------------------------------------------
/element-theme-default/lib/fonts/element-icons.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/taixw2/making-element-ui-theme/HEAD/element-theme-default/lib/fonts/element-icons.woff
--------------------------------------------------------------------------------
/element-theme-default/lib/steps.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-steps{font-size:0}.el-steps>:last-child .el-step__line{display:none}.el-steps.is-horizontal{white-space:nowrap}
--------------------------------------------------------------------------------
/element-theme-default/src/fonts/element-icons.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/taixw2/making-element-ui-theme/HEAD/element-theme-default/src/fonts/element-icons.eot
--------------------------------------------------------------------------------
/element-theme-default/src/fonts/element-icons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/taixw2/making-element-ui-theme/HEAD/element-theme-default/src/fonts/element-icons.ttf
--------------------------------------------------------------------------------
/element-theme-default/src/fonts/element-icons.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/taixw2/making-element-ui-theme/HEAD/element-theme-default/src/fonts/element-icons.woff
--------------------------------------------------------------------------------
/element-theme-default/src/time-picker.css:
--------------------------------------------------------------------------------
1 | @import "./date-picker/picker.css";
2 | @import "./date-picker/time-spinner.css";
3 | @import "./date-picker/time-picker.css";
4 |
--------------------------------------------------------------------------------
/element-theme-default/lib/option-group.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-select-group{margin:0;padding:0}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select-group__wrap{list-style:none;margin:0;padding:0}.el-select-group__title{padding-left:10px;font-size:12px;color:#999;height:30px;line-height:30px}
--------------------------------------------------------------------------------
/element-theme-default/lib/card.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-card{border:1px solid #D3DCE6;border-radius:4px;background-color:#fff;overflow:hidden;box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-card__header{padding:18px 20px;border-bottom:1px solid #D3DCE6;box-sizing:border-box}.el-card__body{padding:20px}
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | element-starter
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/element-theme-default/src/steps.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | @import "./common/var.css";
3 |
4 | @component-namespace el {
5 | @b steps {
6 | font-size: 0;
7 |
8 | > :last-child .el-step__line {
9 | display: none;
10 | }
11 |
12 | @when horizontal {
13 | white-space: nowrap;
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/view/Badge.vue:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
14 |
15 |
17 |
--------------------------------------------------------------------------------
/element-theme-default/src/date-picker.css:
--------------------------------------------------------------------------------
1 | @import "./date-picker/date-table.css";
2 | @import "./date-picker/month-table.css";
3 | @import "./date-picker/year-table.css";
4 | @import "./date-picker/time-spinner.css";
5 | @import "./date-picker/picker.css";
6 | @import "./date-picker/date-picker.css";
7 | @import "./date-picker/date-range-picker.css";
8 | @import "./date-picker/time-range-picker.css";
9 |
--------------------------------------------------------------------------------
/src/view/Loading.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 这是一段文字
6 | 这是一段文字
7 |
8 |
9 |
10 |
11 |
12 |
24 |
25 |
27 |
--------------------------------------------------------------------------------
/src/view/DatePicker.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 默认
5 |
10 |
11 |
12 |
13 |
14 |
15 |
19 |
20 |
22 |
--------------------------------------------------------------------------------
/element-theme-default/lib/rate.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-rate__icon,.el-rate__item{position:relative;display:inline-block}.el-rate{height:20px;line-height:1}.el-rate__item{font-size:0;vertical-align:middle}.el-rate__icon{font-size:18px;margin-right:6px;color:#C6D1DE;transition:.3s}.el-rate__decimal,.el-rate__icon .path2{position:absolute;top:0;left:0}.el-rate__icon.hover{-ms-transform:scale(1.15);transform:scale(1.15)}.el-rate__decimal{display:inline-block;overflow:hidden}.el-rate__text{font-size:14px;vertical-align:middle}
--------------------------------------------------------------------------------
/element-theme-default/src/date-picker/picker.css:
--------------------------------------------------------------------------------
1 | @import "../common/var.css";
2 | @import "../common/transition.css";
3 |
4 | @component-namespace el {
5 | @b date-editor {
6 | position: relative;
7 | display: inline-block;
8 |
9 | .el-picker-panel {
10 | position: absolute;
11 | min-width: 180px;
12 | box-sizing: border-box;
13 | box-shadow: 0 2px 6px #ccc;
14 | background: var(--color-white);
15 | z-index: 10;
16 | top: 41px;
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/view/Tooltip.vue:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
14 |
18 |
19 |
21 |
--------------------------------------------------------------------------------
/element-theme-default/lib/spinner.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-time-spinner{width:100%;white-space:nowrap}.el-spinner{display:inline-block;vertical-align:middle}.el-spinner-inner{animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;animation:dash 1.5s ease-in-out infinite}@keyframes rotate{100%{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}
--------------------------------------------------------------------------------
/src/view/Pagination.vue:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
21 |
25 |
26 |
28 |
--------------------------------------------------------------------------------
/src/view/Breadcrumb.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 首页
7 | 活动管理
8 | 活动列表
9 | 活动详情
10 |
11 |
12 |
13 |
14 |
15 |
16 |
20 |
21 |
23 |
--------------------------------------------------------------------------------
/element-theme-default/lib/badge.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-badge{position:relative;vertical-align:middle;display:inline-block}.el-badge__content{background-color:#ff4949;border-radius:10px;color:#fff;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #fff}.el-badge__content.is-dot{width:8px;height:8px;padding:0;right:0;border-radius:50%}.el-badge__content.is-fixed{top:0;right:10px;position:absolute;-ms-transform:translateY(-50%) translateX(100%);transform:translateY(-50%) translateX(100%)}.el-badge__content.is-fixed.is-dot{right:5px}
--------------------------------------------------------------------------------
/element-theme-default/src/card.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | @import "./common/var.css";
3 |
4 | @component-namespace el {
5 | @b card {
6 | border: 1px solid var(--card-border-color);
7 | border-radius: var(--card-border-radius);
8 | background-color: #fff;
9 | overflow: hidden;
10 | box-shadow: var(--car-box-shadow);
11 |
12 | @e header {
13 | padding: var(--car-header-padding);
14 | border-bottom: 1px solid var(--card-border-color);
15 | box-sizing: border-box;
16 | }
17 |
18 | @e body {
19 | padding: var(--card-padding);
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/element-theme-default/lib/option.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-select-dropdown__item{font-size:14px;padding:8px 10px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#475669;height:36px;line-height:1.5;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.hover{background-color:#e5e9f2}.el-select-dropdown__item.selected{color:#fff;background-color:#20a0ff}.el-select-dropdown__item.selected.hover{background-color:#1D8CE0}.el-select-dropdown__item span{line-height:1.5!important}.el-select-dropdown__item.is-disabled{color:#c0ccda;cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#fff}
--------------------------------------------------------------------------------
/element-theme-default/src/option-group.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | @import "./common/var.css";
3 |
4 | @component-namespace el {
5 |
6 | @b select-group {
7 | margin: 0;
8 | padding: 0;
9 |
10 | @e wrap {
11 | list-style: none;
12 | margin: 0;
13 | padding: 0;
14 | }
15 |
16 | @e title {
17 | padding-left: 10px;
18 | font-size: var(--select-group-font-size);
19 | color: var(--select-group-color);
20 | height: var(--select-group-height);
21 | line-height: var(--select-group-height);
22 | }
23 |
24 | & .el-select-dropdown__item {
25 | padding-left: 20px;
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/element-theme-default/README.md:
--------------------------------------------------------------------------------
1 | # element-theme-default
2 | > element component defualt theme.
3 |
4 |
5 | ## Installation
6 | ```shell
7 | npm i element-theme-default -S
8 | ```
9 |
10 | ## Usage
11 |
12 | Use Sass Or postcss-import
13 | ```css
14 | @import 'element-theme-default';
15 | ```
16 |
17 | Or Use webpack
18 | ```javascript
19 | import 'element-theme-default';
20 | ```
21 |
22 | Or
23 | ```html
24 |
25 | ```
26 |
27 | ## Import your need
28 | ```javascript
29 | import 'element-theme-default/lib/input.css';
30 | import 'element-theme-default/lib/select.css';
31 |
32 | // ...
33 | ```
34 |
--------------------------------------------------------------------------------
/element-theme-default/src/core/tag.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | @import "../common/var.css";
3 |
4 | @component-namespace element-core {
5 |
6 | @b tag {
7 | background-color: var(--tag-fill);
8 | border: 0;
9 | border-radius: var(--tag-border-radius);
10 | color: var(--tag-color);
11 | height: 22px;
12 | margin: 1px;
13 | outline: 0;
14 | padding: 3px 16px 3px 3px;
15 | position: relative;
16 |
17 | @e button {
18 | color: var(--tag-close-color);
19 | cursor: pointer;
20 | line-height: 1;
21 |
22 | /* 增大可点击面积 */
23 | padding: 5px;
24 | position: absolute;
25 | right: 0;
26 | top: 0;
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/view/Switch.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
29 |
30 |
32 |
--------------------------------------------------------------------------------
/element-theme-default/lib/row.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-row:after,.el-row:before{display:table;content:""}.el-row:after{clear:both}.el-row{position:relative;box-sizing:border-box}.el-row--flex{display:-ms-flexbox;display:flex}.el-row--flex:after,.el-row--flex:before{display:none}.el-row--flex.is-align-bottom{-ms-flex-align:end;align-items:flex-end}.el-row--flex.is-align-middle{-ms-flex-align:center;align-items:center}.el-row--flex.is-justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.el-row--flex.is-justify-space-between{-ms-flex-pack:justify;justify-content:space-between}.el-row--flex.is-justify-end{-ms-flex-pack:end;justify-content:flex-end}.el-row--flex.is-justify-center{-ms-flex-pack:center;justify-content:center}
--------------------------------------------------------------------------------
/src/view/Alert.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
21 |
22 |
27 |
--------------------------------------------------------------------------------
/element-theme-default/src/date-picker/time-range-picker.css:
--------------------------------------------------------------------------------
1 | @import "../common/var.css";
2 |
3 | @component-namespace el {
4 | @b time-range-picker {
5 | min-width: 354px;
6 | overflow: visible;
7 |
8 | @e content {
9 | position: relative;
10 | text-align: center;
11 | padding: 10px;
12 | }
13 |
14 | @e cell {
15 | box-sizing: border-box;
16 | margin: 0;
17 | padding: 4px 7px 7px;
18 | width: 50%;
19 | display: inline-block;
20 | }
21 |
22 | @e header {
23 | margin-bottom: 5px;
24 | text-align: center;
25 | font-size: 14px;
26 | }
27 |
28 | @e body {
29 | border-radius:2px;
30 | border: 1px solid var(--datepicker-border-color);
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/src/view/Popconfirm.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
10 | 这是一段内容这是一段内容确定删除吗?
11 |
12 | 取消
13 | 确定
14 |
15 |
16 |
删除
17 |
18 |
19 |
20 |
21 |
30 |
31 |
33 |
--------------------------------------------------------------------------------
/element-theme-default/lib/breadcrumb.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-breadcrumb{font-size:13px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{display:table;content:""}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{margin:0 8px;color:#c0ccda}.el-breadcrumb__item{float:left}.el-breadcrumb__item:last-child .el-breadcrumb__item__inner,.el-breadcrumb__item:last-child .el-breadcrumb__item__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__item__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__item__inner:hover{color:#99a9bf;cursor:text}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-breadcrumb__item__inner,.el-breadcrumb__item__inner a{transition:color .15s linear;color:#475669}.el-breadcrumb__item__inner a:hover,.el-breadcrumb__item__inner:hover{color:#20a0ff;cursor:pointer}
--------------------------------------------------------------------------------
/src/assets/style.css:
--------------------------------------------------------------------------------
1 |
2 |
3 | body {
4 | background-color: #fafafa;
5 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", SimSun, sans-serif;
6 | line-height: 1.5;
7 | color: #666;
8 | -webkit-transition: background 1s cubic-bezier(0.075, 0.82, 0.165, 1);
9 | transition: background 1s cubic-bezier(0.075, 0.82, 0.165, 1);
10 | overflow-x: hidden;
11 | font-size: 13px;
12 | }
13 |
14 | a {
15 | color:#108ee9;
16 | text-decoration: none;
17 | }
18 | a:hover {
19 | color:#40a5ed;
20 | }
21 | .block {
22 | padding: 30px 24px;
23 | border-bottom: 1px solid #eff2f6;
24 | overflow: hidden;
25 | }
26 |
27 | .block .wrapper {
28 | float: right;
29 | margin-right: 20px;
30 | }
31 |
--------------------------------------------------------------------------------
/src/view/Dropdown.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | 下拉菜单
8 |
9 |
10 | 黄金糕
11 | 狮子头
12 | 螺蛳粉
13 | 双皮奶
14 | 蚵仔煎
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
27 |
28 |
30 |
--------------------------------------------------------------------------------
/element-theme/index.js:
--------------------------------------------------------------------------------
1 | var gulp = require('gulp')
2 | var task = require('./lib/task')
3 | var vars = require('./lib/gen-vars')
4 | var config = require('./lib/config')
5 |
6 | exports.init = function (filePath) {
7 | filePath = {}.toString.call(filePath) === '[object String]' ? filePath : ''
8 | vars.init(filePath)
9 | }
10 |
11 | exports.watch = function (opts) {
12 | var build = function () {
13 | task.build(Object.assign(opts, {message: 'watch element theme'}))
14 | }
15 |
16 | gulp.task('build', build)
17 | gulp.watch(opts.config || config.config, ['build'])
18 | task.fonts(Object.assign(opts, {message: 'build theme font'}))
19 | build()
20 | }
21 |
22 | exports.run = function (opts) {
23 | task.fonts(Object.assign(opts, {message: 'build theme font'}))
24 | task.build(Object.assign(opts, {message: 'build element theme'}))
25 | }
26 |
--------------------------------------------------------------------------------
/element-theme/lib/config.js:
--------------------------------------------------------------------------------
1 | var path = require('path')
2 |
3 | var pkg = {}
4 |
5 | try {
6 | pkg = require(path.resolve(process.cwd(), 'package.json'))
7 | } catch (err) {}
8 |
9 | var config = Object.assign({
10 | browsers: ['ie > 9', 'last 2 versions'],
11 | out: './theme',
12 | config: './element-variables.css',
13 | minimize: false
14 | }, pkg['element-theme'])
15 |
16 | exports.features = {
17 | bem: {
18 | shortcuts: {
19 | component: 'b',
20 | modifier: 'm',
21 | descendent: 'e'
22 | },
23 | separators: {
24 | descendent: '__',
25 | modifier: '--'
26 | }
27 | }
28 | }
29 | exports.themePath = path.resolve(process.cwd(), './element-theme-default')
30 | exports.out = config.out
31 | exports.config = config.config
32 | exports.minimize = config.minimize
33 | exports.browsers = config.browsers
34 |
--------------------------------------------------------------------------------
/element-theme-default/src/row.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | @import "./common/var.css";
3 |
4 | @component-namespace el {
5 | @b row {
6 | position: relative;
7 | box-sizing: border-box;
8 | @utils-clearfix;
9 |
10 | @m flex {
11 | display: flex;
12 | &:before,
13 | &:after {
14 | display: none;
15 | }
16 |
17 | @when justify-center {
18 | justify-content: center;
19 | }
20 | @when justify-end {
21 | justify-content: flex-end;
22 | }
23 | @when justify-space-between {
24 | justify-content: space-between;
25 | }
26 | @when justify-space-around {
27 | justify-content: space-around;
28 | }
29 |
30 | @when align-middle {
31 | align-items: center;
32 | }
33 | @when align-bottom {
34 | align-items: flex-end;
35 | }
36 | }
37 |
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/src/view/Notification.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 打开Message
5 | 打开Message
6 | 打开Message
7 | 打开Message
8 | 打开Message
9 |
10 |
11 |
12 |
13 |
14 |
28 |
29 |
31 |
--------------------------------------------------------------------------------
/element-theme-default/src/date-picker/month-table.css:
--------------------------------------------------------------------------------
1 | @import "../common/var.css";
2 |
3 | @component-namespace el {
4 | @b month-table {
5 | font-size: 12px;
6 | margin: -1px;
7 | border-collapse: collapse;
8 |
9 | td {
10 | text-align: center;
11 | padding: 20px 3px;
12 | cursor: pointer;
13 |
14 | &.disabled .cell {
15 | background-color: #f4f4f4;
16 | cursor: not-allowed;
17 | color: #ccc;
18 | }
19 |
20 | .cell {
21 | width: 48px;
22 | height: 32px;
23 | display: block;
24 | line-height: 32px;
25 | color: var(--datepicker-color);
26 |
27 | &:hover {
28 | background-color: var(--datepicker-cell-hover-color);
29 | }
30 | }
31 |
32 | &.current .cell {
33 | background-color: var(--datepicker-active-color) !important;
34 | color: #fff;
35 | }
36 | }
37 | }
38 | }
--------------------------------------------------------------------------------
/src/view/Message.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 打开Message
6 | 打开Message
7 | 打开Message
8 | 打开Message
9 |
10 |
11 |
12 |
13 |
14 |
15 |
40 |
41 |
43 |
--------------------------------------------------------------------------------
/element-theme-default/lib/select-dropdown.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-select-dropdown{position:absolute;z-index:1001;border:1px solid #D3DCE6;border-radius:2px;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.04);box-sizing:border-box;margin:5px 0}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#20a0ff;background-color:#fff}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:#e5e9f2}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after{position:absolute;right:10px;font-family:element-icons;content:"\E608";font-size:11px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;width:100%;max-height:274px;box-sizing:border-box;overflow-y:auto}.el-select-dropdown__list.is-empty{padding:0}
--------------------------------------------------------------------------------
/element-theme-default/src/time-select.css:
--------------------------------------------------------------------------------
1 | @import "./date-picker/picker.css";
2 | @import "./date-picker/date-picker.css";
3 | @import "./common/var.css";
4 |
5 | .time-select {
6 | margin: 5px 0;
7 | min-width: 0;
8 | }
9 |
10 | .time-select .el-picker-panel__content {
11 | max-height: 200px;
12 | overflow: hidden;
13 | margin: 0;
14 |
15 | &:hover {
16 | overflow-y: auto;
17 | }
18 | }
19 |
20 | .time-select-item {
21 | padding: 8px 10px;
22 | font-size: 14px;
23 | }
24 |
25 | .time-select-item.selected:not(.disabled) {
26 | background-color: var(--datepicker-active-color);
27 | color: #fff;
28 |
29 | &:hover {
30 | background-color: var(--color-primary);
31 | }
32 | }
33 |
34 | .time-select-item.disabled {
35 | color: var(--datepicker-border-color);
36 | cursor: not-allowed;
37 | }
38 |
39 | .time-select-item:hover {
40 | background-color: var(--datepicker-cell-hover-color);
41 | cursor: pointer;
42 | }
43 |
--------------------------------------------------------------------------------
/src/view/Tag.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 标签一
5 | 标签二
6 | 标签三
7 | 标签四
8 | 标签五
9 | 标签六
10 |
11 |
12 | 标签一
13 | 标签二
14 | 标签三
15 | 标签四
16 | 标签五
17 | 标签六
18 |
19 |
20 |
21 |
22 |
31 |
32 |
34 |
--------------------------------------------------------------------------------
/element-theme-default/lib/loading.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-loading-mask{position:absolute;z-index:10000;background-color:rgba(255,255,255,.9);margin:0;top:0;right:0;bottom:0;left:0}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{width:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-loading-spinner .el-loading-text{color:#20a0ff;margin:3px 0;font-size:14px}.el-loading-spinner .circular{width:42px;animation:rotate 2s linear infinite}.el-loading-spinner .path{animation:dash 1.5s ease-in-out infinite;stroke-dasharray:1,100;stroke-dashoffset:0;stroke-width:2;stroke:#20a0ff;stroke-linecap:round}@keyframes rotate{100%{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,100;stroke-dashoffset:0}50%{stroke-dasharray:45,100;stroke-dashoffset:-35px}100%{stroke-dasharray:45,100;stroke-dashoffset:-124px}}
--------------------------------------------------------------------------------
/element-theme-default/src/spinner.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | @import "./common/var.css";
3 |
4 | @component-namespace el {
5 | @b time-spinner {
6 | width: 100%;
7 | white-space: nowrap;
8 | }
9 |
10 | @b spinner {
11 | display: inline-block;
12 | vertical-align: middle;
13 | }
14 | @b spinner-inner {
15 | animation: rotate 2s linear infinite;
16 | width: 50px;
17 | height: 50px;
18 |
19 | & .path {
20 | stroke: #ececec;
21 | stroke-linecap: round;
22 | animation: dash 1.5s ease-in-out infinite;
23 | }
24 |
25 | }
26 | }
27 | @keyframes rotate {
28 | 100% {
29 | transform: rotate(360deg);
30 | }
31 | }
32 |
33 | @keyframes dash {
34 | 0% {
35 | stroke-dasharray: 1, 150;
36 | stroke-dashoffset: 0;
37 | }
38 | 50% {
39 | stroke-dasharray: 90, 150;
40 | stroke-dashoffset: -35;
41 | }
42 | 100% {
43 | stroke-dasharray: 90, 150;
44 | stroke-dashoffset: -124;
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/element-theme-default/lib/alert.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-alert{width:100%;padding:8px 16px;margin:0;box-sizing:border-box;border-radius:4px;position:relative;background-color:#fff;overflow:hidden;color:#fff;opacity:1;display:table;transition:opacity .2s}.el-alert .el-alert__description{color:#fff;font-size:12px;margin:5px 0 0}.el-alert--success{background-color:#13ce66}.el-alert--info{background-color:#50bfff}.el-alert--warning{background-color:#f7ba2a}.el-alert--error{background-color:#ff4949}.el-alert__content{display:table-cell;padding:0 8px}.el-alert__icon{font-size:16px;width:16px;display:table-cell;color:#fff;vertical-align:middle}.el-alert__icon.is-big{font-size:28px;width:28px}.el-alert__title{font-size:13px;line-height:18px}.el-alert__title.is-bold{font-weight:700}.el-alert__closebtn{font-size:12px;color:#fff;opacity:1;top:12px;right:15px;position:absolute;cursor:pointer}.el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.el-alert-fade-enter,.el-alert-fade-leave-active{opacity:0}
--------------------------------------------------------------------------------
/element-theme-default/src/date-picker/year-table.css:
--------------------------------------------------------------------------------
1 | @import "../common/var.css";
2 |
3 | @component-namespace el {
4 | @b year-table {
5 | font-size: 12px;
6 | margin: -1px;
7 | border-collapse: collapse;
8 |
9 | .el-icon {
10 | color: var(--datepicker-icon-color);
11 | }
12 |
13 | td {
14 | text-align: center;
15 | padding: 20px 3px;
16 | cursor: pointer;
17 |
18 | &.disabled .cell {
19 | background-color: #f4f4f4;
20 | cursor: not-allowed;
21 | color: #ccc;
22 | }
23 |
24 | .cell {
25 | width: 48px;
26 | height: 32px;
27 | display: block;
28 | line-height: 32px;
29 | color: var(--datepicker-color);
30 |
31 | &:hover {
32 | background-color: var(--datepicker-cell-hover-color);
33 | }
34 | }
35 |
36 | &.current .cell {
37 | background-color: var(--datepicker-active-color) !important;
38 | color: #fff;
39 | }
40 | }
41 | }
42 | }
--------------------------------------------------------------------------------
/element-theme/bin/element-theme:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | var program = require('commander')
4 | var main = require('../index.js')
5 | var check = require('../lib/gen-vars').check
6 | var config = {}
7 |
8 | console.log()
9 | process.on('exit', function () {
10 | console.log()
11 | })
12 |
13 | program
14 | .version(require('../package.json').version)
15 | .option('-i --init [filePath]', 'init variables file')
16 | .option('-w --watch', 'watch variable changes then build')
17 | .option('-o --out [outPath]', 'output path', function (out) {config.out = out})
18 | .option('-m --minimize', 'compressed file', function (minimize) {config.minimize = minimize !== false})
19 | .option('-c --config [filePath]', 'variables file', function (c) {config.config = c})
20 | .option('-b --browsers ', 'set browsers', function (a) {config.browsers = browsers.split(',')})
21 | .parse(process.argv)
22 |
23 | check()
24 |
25 | if (program.init) {
26 | return main.init(program.init)
27 | }
28 | program.watch ? main.watch(config) : main.run(config)
29 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import ElementUI from 'element-ui'
3 | import './theme/index.css'
4 | import 'normalize.css'
5 | import App from './App.vue'
6 | import VueResource from 'vue-resource';
7 | import VueRouter from 'vue-router'
8 | import routes from './routes'
9 | import "./assets/style.css";
10 |
11 |
12 | console.log(ElementUI);
13 |
14 |
15 | Vue.use(ElementUI)
16 | Vue.use(VueRouter);
17 | Vue.use(VueResource);
18 |
19 | var router = new VueRouter({
20 | mode: 'hash',
21 | base: __dirname,
22 | routes,
23 | scrollBehavior(to, from, savePosition) {
24 | return savePosition ? savePosition : {
25 | x: 0,
26 | y: 0
27 | };
28 | }
29 | });
30 |
31 |
32 | const app = new Vue({
33 | el: "#app",
34 | router,
35 | http: {
36 | root: '/api',
37 | headers: {
38 | // Authorization: 'Basic YXBpOnBhc3N3b3Jk'
39 | },
40 | options : {
41 | emulateJSON : true
42 | }
43 | },
44 | render: h => h(App)
45 | });
46 |
--------------------------------------------------------------------------------
/element-theme-default/src/badge.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | @import "./common/var.css";
3 |
4 | @component-namespace el {
5 | @b badge {
6 | position: relative;
7 | vertical-align: middle;
8 | display: inline-block;
9 |
10 | @e content {
11 | background-color: var(--badge-fill);
12 | border-radius: var(--badge-radius);
13 | color: #fff;
14 | display: inline-block;
15 | font-size: var(--badge-font-size);
16 | height: var(--badge-size);
17 | line-height: var(--badge-size);
18 | padding: 0 var(--badge-padding);
19 | text-align: center;
20 | white-space: nowrap;
21 | border: 1px solid #fff;
22 |
23 | @when fixed {
24 | position: absolute 0 calc(var(--badge-size) / 2 + 1) * *;
25 | transform: translateY(-50%) translateX(100%);
26 |
27 | @when dot {
28 | right: 5px;
29 | }
30 | }
31 |
32 | @when dot {
33 | size: 8px 8px;
34 | padding: 0;
35 | right: 0;
36 | border-radius: 50%;
37 | }
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/element-theme-default/src/rate.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | @import "./common/var.css";
3 |
4 | @component-namespace el {
5 |
6 | @b rate {
7 | height: var(--rate-height);
8 | line-height: 1;
9 |
10 | @e item {
11 | display: inline-block;
12 | position: relative;
13 | font-size: 0;
14 | vertical-align: middle;
15 | }
16 |
17 | @e icon {
18 | position: relative;
19 | display: inline-block;
20 | font-size: var(--rate-icon-size);
21 | margin-right: var(--rate-icon-margin);
22 | color: var(--rate-icon-color);
23 | transition: .3s;
24 | &.hover {
25 | transform: scale(1.15);
26 | }
27 |
28 | .path2 {
29 | position: absolute;
30 | left: 0;
31 | top: 0;
32 | }
33 | }
34 |
35 | @e decimal {
36 | position: absolute;
37 | top: 0;
38 | left: 0;
39 | display: inline-block;
40 | overflow: hidden;
41 | }
42 |
43 | @e text {
44 | font-size: var(--rate-font-size);
45 | vertical-align: middle;
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/element-theme-default/lib/notification.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-notification{width:330px;padding:20px;box-sizing:border-box;border-radius:2px;position:fixed;right:16px;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.04);transition:opacity .3s,transform .3s,right .3s,top .4s;overflow:hidden}.el-notification .el-icon-circle-check{color:#13ce66}.el-notification .el-icon-circle-cross{color:#ff4949}.el-notification .el-icon-information{color:#50bfff}.el-notification .el-icon-warning{color:#f7ba2a}.el-notification__group{margin-left:0}.el-notification__group span{font-size:16px;color:#1f2d3d}.el-notification__group p{font-size:14px;line-height:21px;margin:10px 0 0;color:#8492a6;text-align:justify}.el-notification__group.is-with-icon{margin-left:55px}.el-notification__icon{width:40px;height:40px;font-size:40px;float:left;position:relative;top:3px}.el-notification__closeBtn{top:20px;right:20px;position:absolute;cursor:pointer;color:#c0ccda;font-size:14px}.el-notification__closeBtn:hover{color:#99A9BF}.el-notification-fade-enter{-ms-transform:translateX(100%);transform:translateX(100%);right:0}.el-notification-fade-leave-active{opacity:0}
--------------------------------------------------------------------------------
/element-theme-default/src/breadcrumb.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | @import "./common/var.css";
3 |
4 | @component-namespace el {
5 |
6 | @b breadcrumb {
7 | font-size:var(--breadcrumd-item-size);
8 | line-height: 1;
9 | @utils-clearfix;
10 |
11 | @e separator {
12 | margin: 0 8px;
13 | color: var(--breadcrumd-separator-color);
14 | }
15 | @e item {
16 | float: left;
17 |
18 | @e inner {
19 | &, & a {
20 | transition: color .15s linear;
21 | color:var(--breadcrumd-item-color);
22 |
23 | &:hover {
24 | color: var(--color-primary);
25 | cursor: pointer;
26 | }
27 | }
28 | }
29 |
30 | &:last-child {
31 | .el-breadcrumb__item__inner,
32 | .el-breadcrumb__item__inner a {
33 | &, &:hover {
34 | color: var(--breadcrumd-last-color);
35 | font-weight: var(--breadcrumd-last-weight);
36 | cursor: text;
37 | }
38 | }
39 |
40 | .el-breadcrumb__separator {
41 | display: none;
42 | }
43 | }
44 | }
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/element-theme-default/src/core/dropdown.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | @import "../common/var.css";
3 | @import "./option.css";
4 |
5 | @component-namespace element {
6 |
7 | @b dropdown {
8 | background-color: var(--dropdown-fill);
9 | border: var(--dropdown-border);
10 | border-radius: var(--dropdown-radius);
11 | box-shadow: var(--dropdown-shadow);
12 | left: 0;
13 | list-style-type: none;
14 | margin: -var(--dropdown-border-width);
15 | margin-top: 5px;
16 | min-width: calc(var(--input-width) + 4);
17 | padding: 0;
18 | position: absolute;
19 | white-space: nowrap;
20 | z-index: var(--index-normal);
21 |
22 | @e empty {
23 | color: var(--dropdown-option-empty-color);
24 | font-size: var(--input-font-size);
25 | padding: 7px;
26 | text-align: center;
27 | }
28 |
29 | @e list {
30 | margin: 0;
31 | max-height: var(--cascader-height);
32 | overflow: auto;
33 | padding: 0;
34 | }
35 |
36 | @e option {
37 | max-height: 250px;
38 | overflow: auto;
39 | }
40 |
41 | &:empty {
42 | display: none;
43 | }
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/element-theme/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2016 cinwell.li
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/element-theme-default/lib/form.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-form-item:after,.el-form-item__content:after{clear:both}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item__label{float:none;display:inline-block;padding:0 0 10px}.el-form--inline .el-form-item{display:inline-block;margin-right:10px;vertical-align:top}.el-form-item{margin-bottom:22px}.el-form-item:after,.el-form-item:before{display:table;content:""}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-form-item .el-form-item__content{margin-left:0!important}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-textarea__inner{border-color:#ff4949}.el-form-item.is-required .el-form-item__label:before{content:'*';color:#ff4949;margin-right:4px}.el-form-item__label{text-align:right;vertical-align:middle;float:left;font-size:14px;color:#5e6d82;line-height:1;padding:11px 12px 11px 0;box-sizing:border-box}.el-form-item__content{line-height:36px;position:relative;font-size:14px}.el-form-item__content:after,.el-form-item__content:before{display:table;content:""}.el-form-item__error{color:#ff4949;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}
--------------------------------------------------------------------------------
/src/view/Table.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
9 |
10 |
14 |
15 |
18 |
19 |
20 |
21 |
22 |
49 |
50 |
52 |
--------------------------------------------------------------------------------
/src/view/Tabs.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 用户管理
6 | 配置管理
7 | 定时任务补偿
8 |
9 |
10 |
11 |
12 | 用户管理
13 | 配置管理
14 | 角色管理
15 | 定时任务补偿
16 |
17 |
18 |
19 |
20 | 用户管理
21 | 配置管理
22 | 角色管理
23 | 定时任务补偿
24 |
25 |
26 |
27 |
28 |
29 |
32 |
33 |
35 |
--------------------------------------------------------------------------------
/src/view/MessageBox.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 打开MessageBox
6 | 打开MessageBox2
7 | 打开MessageBox3
8 |
9 |
10 |
11 |
12 |
13 |
14 |
44 |
45 |
47 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 更方便定制element-ui主题
2 |
3 | 饿了么提供了许多优秀的组件,但是其组件的风格一直备受诟病,
4 | 于是基于element-ui提供的主题工具,`./element-theme` `element-theme-default`
5 | 对几乎所有组件的尺寸进行了缩小,以及对色彩线条阴影等进行了些许调整。
6 |
7 |
8 | ## 开始
9 |
10 | ``` bash
11 | git clone git@github.com:taixw2/make-element-ui-theme.git et
12 | cd et && npm install
13 | ```
14 |
15 | ## 开发模式
16 |
17 | ``` bash
18 | npm run dev
19 |
20 | # 这一步会使用webpack检测css的变动以及使用gulp输出编译后的css
21 | # 初次启动会提示 ./theme/index.css错误,可以忽略这个错误,因为此时gulp还没有编译编译完成,
22 |
23 | ```
24 |
25 | ## 生成
26 |
27 | ``` bash
28 | npm run build
29 |
30 | #会在dest目录生成一个theme目录,直接引用该目录下的index.css即可
31 | improt ./dist/theme/index.css
32 |
33 | ```
34 |
35 | ## 增加自定义变量
36 | 1. 使用当期目录下的element-theme-default
37 | 需要修改node_modules/element-theme/lib/config.js中的themePath的路径
38 |
39 | 2. 或者直接修改node_modules/element-theme-default/中的样式文件
40 |
41 |
42 | ## 主题预览 :
43 | [https://taixw2.github.io/element-ui/index.html#/form](https://taixw2.github.io/element-ui/index.html#/form)
44 | ## 引入该主题
45 | #### 安装
46 | ``` bash
47 | npm install element-thin-ui --save
48 | ```
49 | #### 引入
50 | ``` bash
51 | require("element-thin-ui/index.css");
52 | #或者
53 | import "element-thin-ui/index.css";
54 | ```
55 |
--------------------------------------------------------------------------------
/element-theme-default/src/cascader.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | @import "./input.css";
3 | @import "./common/var.css";
4 | /*@import "./core/dropdown.css";*/
5 |
6 | @component-namespace element {
7 |
8 | @b cascader {
9 | display: inline-block;
10 | position: relative;
11 |
12 | @e dropdown {
13 | background-color: var(--cascader-menu-fill);
14 | border: var(--cascader-menu-border);
15 | border-radius: var(--cascader-menu-radius);
16 | box-shadow: var(--cascader-menu-submenu-shadow);
17 | margin-top: 5px;
18 | max-height: var(--cascader-height);
19 | position: absolute;
20 | white-space: nowrap;
21 | z-index: 10;
22 | }
23 |
24 | @e wrap {
25 | overflow: hidden;
26 | }
27 |
28 | @e menu {
29 | border: 0;
30 | box-shadow: none;
31 | display: inline-block;
32 | margin: 0;
33 | position: relative;
34 | vertical-align: top;
35 |
36 | &::before {
37 | border-left: var(--cascader-menu-border);
38 | content: " ";
39 | height: var(--cascader-height);
40 | left: 0;
41 | position: absolute;
42 | }
43 | }
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/element-theme-default/lib/message.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-message{box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.04);min-width:300px;padding:10px 12px;box-sizing:border-box;border-radius:2px;position:fixed;left:50%;top:20px;-ms-transform:translateX(-50%);transform:translateX(-50%);background-color:#fff;transition:opacity .3s,transform .4s;overflow:hidden}.el-message .el-icon-circle-check{color:#13ce66}.el-message .el-icon-circle-cross{color:#ff4949}.el-message .el-icon-information{color:#50bfff}.el-message .el-icon-warning{color:#f7ba2a}.el-message__group{margin-left:38px;position:relative;height:20px}.el-message__group p{font-size:14px;line-height:20px;margin:0 34px 0 0;white-space:nowrap;color:#8492a6;text-align:justify;display:inline-block;vertical-align:middle}.el-message__group.is-with-icon{margin-left:0}.el-message__img{width:40px;height:40px;position:absolute;left:0;top:0}.el-message__icon{vertical-align:middle;margin-right:8px}.el-message__closeBtn{top:3px;right:0;position:absolute;cursor:pointer;color:#c0ccda;font-size:14px}.el-message__closeBtn:hover{color:#99A9BF}.el-message-fade-enter,.el-message-fade-leave-active{opacity:0;-ms-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}
--------------------------------------------------------------------------------
/element-theme-default/src/option.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | @import "./common/var.css";
3 |
4 | @component-namespace el {
5 |
6 | @b select-dropdown {
7 | @e item {
8 | font-size: var(--select-font-size);
9 | padding: 8px 10px;
10 | position: relative;
11 | white-space: nowrap;
12 | overflow: hidden;
13 | text-overflow: ellipsis;
14 | color: var(--select-option-color);
15 | height: var(--select-option-height);
16 | line-height: 1.5;
17 | box-sizing: border-box;
18 | cursor: pointer;
19 |
20 | @when disabled {
21 | color: var(--select-option-disabled-color);
22 | cursor: not-allowed;
23 |
24 | &:hover {
25 | background-color: var(--color-white);
26 | }
27 | }
28 |
29 | &.hover {
30 | background-color: var(--select-option-hover-background);
31 | }
32 |
33 | &.selected {
34 | color: var(--color-white);
35 | background-color: var(--select-option-selected);
36 |
37 | &.hover {
38 | background-color: var(--select-option-selected-hover);
39 | }
40 | }
41 |
42 | & span {
43 | line-height: 1.5 !important;
44 | }
45 | }
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/element-theme/lib/gen-vars.js:
--------------------------------------------------------------------------------
1 | var path = require('path')
2 | var fs = require('fs')
3 | var ora = require('ora')
4 | var config = require('./config')
5 |
6 | var varsPath = path.resolve(config.themePath, './src/common/var.css')
7 | var filePath = path.resolve(process.cwd(), config.config)
8 |
9 | exports.check = function () {
10 | if (!fs.existsSync(varsPath)) {
11 | ora('Pleace install `element-theme-default`').fail()
12 | process.exit(1)
13 | }
14 | }
15 |
16 | exports.init = function (_file) {
17 | var spinner = ora('Generator variables file').start()
18 |
19 | filePath = path.resolve(process.cwd(), _file ? _file : config.config)
20 | if (fs.existsSync(filePath)) {
21 | spinner.text = 'Variables file is exist.'
22 | spinner.fail()
23 | } else {
24 | fs.writeFileSync(filePath, fs.readFileSync(varsPath), 'utf-8')
25 | spinner.succeed()
26 | }
27 | }
28 |
29 | exports.replace = function (_file) {
30 | filePath = path.resolve(process.cwd(), _file ? _file : config.config)
31 | if (!fs.existsSync(filePath)) {
32 | ora('Not found variables file ' + filePath + ', please run "et -i"').fail()
33 | process.exit(1)
34 | }
35 |
36 | fs.writeFileSync(varsPath, fs.readFileSync(filePath), 'utf-8')
37 | }
38 |
--------------------------------------------------------------------------------
/element-theme-default/src/index.css:
--------------------------------------------------------------------------------
1 | @import "./base.css";
2 | @import "./button.css";
3 | @import "./input.css";
4 | @import "./select.css";
5 | @import "./alert.css";
6 | @import "./notification.css";
7 | @import "./slider.css";
8 | @import "./checkbox.css";
9 | @import "./radio.css";
10 | @import "./switch.css";
11 | @import "./dropdown.css";
12 | @import "./dropdown-menu.css";
13 | @import "./loading.css";
14 | @import "./dialog.css";
15 | @import "./table.css";
16 | @import "./table-column.css";
17 | @import "./pagination.css";
18 | @import "./popover.css";
19 | @import "./tooltip.css";
20 | @import "./autocomplete.css";
21 | @import "./message.css";
22 | @import "./message-box.css";
23 | @import "./date-picker.css";
24 | @import "./time-picker.css";
25 | @import "./time-select.css";
26 | @import "./input-number.css";
27 | @import "./tag.css";
28 | @import "./breadcrumb.css";
29 | @import "./form.css";
30 | @import "./tabs.css";
31 | @import "./progress.css";
32 | @import "./tree.css";
33 | @import "./menu.css";
34 | @import "./upload.css";
35 | @import "./row.css";
36 | @import "./col.css";
37 | @import "./spinner.css";
38 | @import "./badge.css";
39 | @import "./card.css";
40 | @import "./rate.css";
41 | @import "./steps.css";
42 | @import "./step.css";
43 |
--------------------------------------------------------------------------------
/src/view/Card.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | 卡片名称
10 | 操作按钮
11 |
12 |
13 | {{'列表内容 ' + o }}
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
好吃的汉堡
22 |
23 |
24 | 操作按钮
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
39 |
40 |
42 |
--------------------------------------------------------------------------------
/element-theme-default/src/date-picker/time-spinner.css:
--------------------------------------------------------------------------------
1 | @import "../common/var.css";
2 |
3 | @component-namespace el {
4 | @b time-spinner {
5 | &.has-seconds {
6 | .el-time-spinner__wrapper {
7 | width: calc(100% / 3);
8 | }
9 | }
10 |
11 | @e wrapper {
12 | height: 190px;
13 | overflow: hidden;
14 | display: inline-block;
15 | width: 50%;
16 | vertical-align: top;
17 | position: relative;
18 | -ms-overflow-style: none;
19 |
20 | &:hover {
21 | overflow-y: auto;
22 | }
23 | }
24 |
25 | @e list {
26 | padding: 0;
27 | margin: 0;
28 | list-style: none;
29 | text-align: center;
30 |
31 | &::after,
32 | &::before {
33 | content: '';
34 | display: block;
35 | width: 100%;
36 | height: 80px;
37 | }
38 | }
39 |
40 | @e item {
41 | height: 32px;
42 | line-height: 32px;
43 | font-size: 12px;
44 |
45 | &:hover:not(.disabled):not(.active) {
46 | background: var(--datepicker-cell-hover-color);
47 | cursor: pointer;
48 | }
49 |
50 | &.active:not(.disabled) {
51 | color: var(--color-white);
52 | }
53 |
54 | &.disabled {
55 | color: var(--datepicker-border-color);
56 | cursor: not-allowed;
57 | }
58 | }
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/src/view/Input.vue:
--------------------------------------------------------------------------------
1 |
2 |
25 |
26 |
27 |
37 |
38 |
43 |
--------------------------------------------------------------------------------
/element-theme-default/lib/dialog.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.v-modal-enter{animation:v-modal-in .2s ease}.v-modal-leave{animation:v-modal-out .2s ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-dialog{position:absolute;left:50%;-ms-transform:translateX(-50%);transform:translateX(-50%);background:#fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.3);box-sizing:border-box}.el-dialog--tiny{width:30%}.el-dialog--small{width:50%}.el-dialog--large{width:90%}.el-dialog--full{width:100%;top:0;height:100%;overflow:auto}.el-dialog__wrapper{top:0;right:0;bottom:0;left:0;position:fixed;overflow:auto;margin:0}.el-dialog__header{padding:20px 20px 0}.el-dialog__close{cursor:pointer;color:#c0ccda}.el-dialog__close:hover{color:#20a0ff}.el-dialog__title{line-height:1;font-size:16px;font-weight:700;color:#1f2d3d}.el-dialog__body{padding:30px 20px;color:#475669;font-size:14px}.el-dialog__headerbtn{float:right}.el-dialog__footer{padding:10px 20px 15px;text-align:right;box-sizing:border-box}.dialog-fade-enter-active{animation:dialog-fade-in .3s}.dialog-fade-leave-active{animation:dialog-fade-out .3s}@keyframes dialog-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}100%{transform:translate3d(0,0,0);opacity:1}}@keyframes dialog-fade-out{0%{transform:translate3d(0,0,0);opacity:1}100%{transform:translate3d(0,-20px,0);opacity:0}}
--------------------------------------------------------------------------------
/element-theme-default/src/core/input.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | @import "../common/var.css";
3 |
4 | @component-namespace element-core {
5 |
6 | @b input {
7 | background-color: var(--input-fill);
8 | border: var(--input-border);
9 | border-radius: var(--input-border-radius);
10 | box-sizing: border-box;
11 | color: var(--input-color);
12 | cursor: text;
13 | display: inline-block;
14 | font-size: var(--input-font-size);
15 | min-height: var(--input-height);
16 | min-width: var(--input-width);
17 | padding: 2px;
18 | position: relative;
19 | vertical-align: middle;
20 |
21 | @when disabled {
22 | background-color: var(--input-fill-disabled);
23 | border-color: inherit;
24 | box-shadow: none;
25 | color: var(--input-color-disabled);
26 | cursor: not-allowed;
27 | }
28 |
29 | @when readonly {
30 | cursor: pointer;
31 | }
32 |
33 | @when multiple {
34 | cursor: text;
35 | }
36 |
37 | &:hover,
38 | &.is-active {
39 | border-color: var(--input-focus-border);
40 | box-shadow: var(--input-shadow-hover);
41 | }
42 |
43 | @e original {
44 | background-color: inherit;
45 | border: none;
46 | box-sizing: border-box;
47 | cursor: inherit;
48 | height: 100%;
49 | line-height: 1.2;
50 | outline: none;
51 | padding: 5px 7px;
52 | width: auto;
53 | }
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/element-theme-default/src/common/transition.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | @import './var.css';
3 |
4 | .fade-in-linear-enter-active,
5 | .fade-in-linear-leave-active {
6 | transition: var(--fade-linear-transition);
7 | }
8 | .fade-in-linear-enter,
9 | .fade-in-linear-leave,
10 | .fade-in-linear-leave-active {
11 | opacity: 0;
12 | }
13 |
14 | .el-fade-in-enter-active,
15 | .el-fade-in-leave-active {
16 | transition: all .3s cubic-bezier(.55,0,.1,1);
17 | }
18 | .el-fade-in-enter,
19 | .el-fade-in-leave-active {
20 | opacity: 0;
21 | }
22 |
23 | .el-zoom-in-center-enter-active,
24 | .el-zoom-in-center-leave-active {
25 | transition: all .3s cubic-bezier(.55,0,.1,1);
26 | }
27 | .el-zoom-in-center-enter,
28 | .el-zoom-in-center-leave-active {
29 | opacity: 0;
30 | transform: scaleX(0);
31 | }
32 |
33 | .el-zoom-in-top-enter-active,
34 | .el-zoom-in-top-leave-active {
35 | opacity: 1;
36 | transform: scaleY(1);
37 | transition: var(--md-fade-transition);
38 | transform-origin: center top;
39 | }
40 | .el-zoom-in-top-enter,
41 | .el-zoom-in-top-leave-active {
42 | opacity: 0;
43 | transform: scaleY(0);
44 | }
45 |
46 | .el-zoom-in-bottom-enter-active,
47 | .el-zoom-in-bottom-leave-active {
48 | opacity: 1;
49 | transform: scaleY(1);
50 | transition: var(--md-fade-transition);
51 | transform-origin: center bottom;
52 | }
53 | .el-zoom-in-bottom-enter,
54 | .el-zoom-in-bottom-leave-active {
55 | opacity: 0;
56 | transform: scaleY(0);
57 | }
58 |
--------------------------------------------------------------------------------
/element-theme/lib/task.js:
--------------------------------------------------------------------------------
1 | var path = require('path')
2 | var gulp = require('gulp')
3 | var ora = require('ora')
4 | var nop = require('gulp-nop')
5 | var postcss = require('gulp-postcss')
6 | var cssmin = require('gulp-cssmin')
7 | var config = require('./config')
8 | var replaceVars = require('./gen-vars').replace
9 |
10 | var salad = function (browsers) {
11 | return require('postcss-salad')({
12 | browsers: browsers || config.browsers,
13 | features: config.features
14 | })
15 | }
16 |
17 | exports.fonts = function (opts) {
18 | var spin = ora(opts.message).start()
19 | var stream = gulp.src(path.resolve(config.themePath, './src/fonts/**'))
20 | .pipe((opts.minimize || config.minimize) ? cssmin({showLog: false}) : nop())
21 | .pipe(gulp.dest(path.resolve(opts.out || config.out, './fonts')))
22 | .on('end', function () {
23 | spin.succeed()
24 | })
25 |
26 | return stream
27 | }
28 |
29 | exports.build = function (opts) {
30 | var spin = ora(opts.message).start()
31 | var stream
32 |
33 | replaceVars(opts.config)
34 | stream = gulp.src([opts.config || config.config, path.resolve(config.themePath, './src/*.css')])
35 | .pipe(postcss([salad(opts.browsers)]))
36 | .pipe((opts.minimize || config.minimize) ? cssmin({showLog: false}) : nop())
37 | .pipe(gulp.dest(opts.out || config.out))
38 | .on('end', function () {
39 | console.log("success\n");
40 | console.log(opts.out || config.out);
41 | spin.succeed()
42 | })
43 |
44 | return stream
45 | }
46 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "mint-ui-starter",
3 | "description": "A Vue.js project",
4 | "author": "yi.shyang@ele.me",
5 | "private": true,
6 | "scripts": {
7 | "dev": "cross-env NODE_ENV=development webpack-dev-server --inline --hot",
8 | "build": "cross-env NODE_ENV=production webpack --progress --hide-modules"
9 | },
10 | "dependencies": {
11 | "element-ui": "^1.0.0",
12 | "normalize.css": "^5.0.0",
13 | "underscore": "^1.8.3",
14 | "vue": "^2.0.1",
15 | "vue-resource": "^1.0.3",
16 | "vue-router": "^2.1.1"
17 | },
18 | "devDependencies": {
19 | "babel-core": "^6.0.0",
20 | "babel-helper-vue-jsx-merge-props": "^2.0.2",
21 | "babel-loader": "^6.0.0",
22 | "babel-plugin-syntax-jsx": "^6.18.0",
23 | "babel-plugin-transform-vue-jsx": "^3.2.0",
24 | "babel-preset-es2015": "^6.0.0",
25 | "cross-env": "^3.0.0",
26 | "css-loader": "^0.25.0",
27 | "element-theme": "^0.2.0",
28 | "element-theme-default": "^1.0.7",
29 | "extract-text-webpack-plugin": "^2.0.0-beta.4",
30 | "file-loader": "^0.9.0",
31 | "html-webpack-plugin": "^2.24.1",
32 | "node-sass": "^4.1.1",
33 | "style-loader": "^0.13.1",
34 | "vue-loader": "^9.7.0",
35 | "webpack": "^2.1.0-beta.25",
36 | "webpack-dev-server": "^2.1.0-beta.0"
37 | },
38 | "element-theme": {
39 | "browsers": [
40 | "ie > 9",
41 | "last 2 versions"
42 | ],
43 | "out": "./src/theme",
44 | "config": "./element-variables.css",
45 | "minimize": false
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/element-theme-default/lib/tag.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-tag{background-color:#8492a6;display:inline-block;padding:0 5px;height:24px;line-height:22px;font-size:12px;color:#fff;border-radius:4px;box-sizing:border-box;border:1px solid transparent}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;-ms-transform:scale(.75,.75);transform:scale(.75,.75);height:18px;width:18px;line-height:18px;vertical-align:middle;top:-1px;right:-2px}.el-tag .el-icon-close:hover{background-color:#fff;color:#8492a6}.el-tag--gray{background-color:#e5e9f2;border-color:#e5e9f2;color:#475669}.el-tag--gray .el-tag__close:hover{background-color:#475669;color:#fff}.el-tag--gray.is-hit{border-color:#475669}.el-tag--primary{background-color:rgba(32,159,255,.1);border-color:rgba(32,159,255,.2);color:#20a0ff}.el-tag--primary .el-tag__close:hover{background-color:#20a0ff;color:#fff}.el-tag--primary.is-hit{border-color:#20a0ff}.el-tag--success{background-color:rgba(18,206,102,.1);border-color:rgba(18,206,102,.2);color:#13ce66}.el-tag--success .el-tag__close:hover{background-color:#13ce66;color:#fff}.el-tag--success.is-hit{border-color:#13ce66}.el-tag--warning{background-color:rgba(247,186,41,.1);border-color:rgba(247,186,41,.2);color:#f7ba2a}.el-tag--warning .el-tag__close:hover{background-color:#f7ba2a;color:#fff}.el-tag--warning.is-hit{border-color:#f7ba2a}.el-tag--danger{background-color:rgba(255,73,73,.1);border-color:rgba(255,73,73,.2);color:#ff4949}.el-tag--danger .el-tag__close:hover{background-color:#ff4949;color:#fff}.el-tag--danger.is-hit{border-color:#ff4949}
--------------------------------------------------------------------------------
/src/view/Dialog.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Dialog
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
50 |
51 |
53 |
--------------------------------------------------------------------------------
/element-theme-default/lib/tree.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-tree{cursor:default;background:#fff;border:1px solid #d3dce6}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#5e6d82}.el-tree-node{white-space:nowrap}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent;display:none}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree-node__expand-icon,.el-tree-node__label,.el-tree-node__loading-icon{display:inline-block;vertical-align:middle}.el-tree-node__content{line-height:36px;height:36px;cursor:pointer}.el-tree-node__content>.el-checkbox,.el-tree-node__content>.el-tree-node__expand-icon{margin-right:8px}.el-tree-node__content>.el-checkbox{vertical-align:middle}.el-tree-node__content:hover{background:#e5e9f2}.el-tree-node__expand-icon{cursor:pointer;width:0;height:0;margin-left:10px;border:6px solid transparent;border-right-width:0;border-left-color:#99a9bf;border-left-width:7px;-ms-transform:rotate(0);transform:rotate(0);transition:transform .3s ease-in-out}.el-tree-node__expand-icon:hover{border-left-color:#999}.el-tree-node__expand-icon.expanded{-ms-transform:rotate(90deg);transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{border-color:transparent;cursor:default}.el-tree-node__label{font-size:14px}.el-tree-node__loading-icon{margin-right:4px;font-size:14px;color:#99a9bf}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:#eff7ff}.collapse-transition{transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}
--------------------------------------------------------------------------------
/element-theme-default/src/mixins/_button.css:
--------------------------------------------------------------------------------
1 | @define-mixin button-variant $color, $background-color, $border-color {
2 | color: $color;
3 | background-color: $background-color;
4 | border-color: $border-color;
5 |
6 | &:hover,
7 | &:focus {
8 | background: tint($background-color, var(--button-hover-tint-percent));
9 | border-color: tint($border-color, var(--button-hover-tint-percent));
10 | color: $color;
11 | }
12 |
13 | &:active {
14 | background: shade($background-color, var(--button-active-shade-percent));
15 | border-color: shade($border-color, var(--button-active-shade-percent));
16 | color: $color;
17 | outline: none;
18 | }
19 |
20 | &.is-active {
21 | background: shade($background-color, var(--button-active-shade-percent));
22 | border-color: shade($border-color, var(--button-active-shade-percent));
23 | color: $color;
24 | }
25 |
26 | &.is-plain {
27 | background: var(--button-default-fill);
28 | border: var(--border-base);
29 | color: var(--button-default-color);
30 |
31 | &:hover,
32 | &:focus {
33 | background: #fff;
34 | border-color: $border-color;
35 | color: $background-color;
36 | }
37 |
38 | &:active {
39 | background: #fff;
40 | border-color: shade($border-color, var(--button-active-shade-percent));
41 | color: shade($background-color, var(--button-active-shade-percent));
42 | outline: none;
43 | }
44 | }
45 | }
46 |
47 | @define-mixin button-size $padding-vertical, $padding-horizontal, $font-size, $border-radius {
48 | padding: $padding-vertical $padding-horizontal;
49 | font-size: $font-size;
50 | border-radius: $border-radius;
51 | }
52 |
--------------------------------------------------------------------------------
/element-theme-default/lib/progress.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-progress-bar__inner:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-progress{position:relative;line-height:1}.el-progress.is-exception .el-progress-bar__inner{background-color:#ff4949}.el-progress.is-exception .el-progress__text{color:#ff4949}.el-progress.is-success .el-progress-bar__inner{background-color:#13ce66}.el-progress.is-success .el-progress__text{color:#13ce66}.el-progress__text{font-size:14px;color:#475669;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle{display:inline-block}.el-progress--circle .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;-ms-transform:translate(0,-50%);transform:translate(0,-50%)}.el-progress--circle .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress-bar{padding-right:50px;display:inline-block;vertical-align:middle;width:100%;margin-right:-55px;box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:#e5e9f2;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#20a0ff;text-align:right;border-radius:100px;line-height:1}.el-progress-bar__innerText{display:inline-block;vertical-align:middle;color:#fff;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}
--------------------------------------------------------------------------------
/element-theme-default/src/select-dropdown.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | @import "./common/var.css";
3 |
4 | @component-namespace el {
5 |
6 | @b select-dropdown {
7 | position: absolute;
8 | z-index: 1001;
9 | border: var(--select-dropdown-border);
10 | border-radius: var(--border-radius-small);
11 | background-color: var(--select-dropdown-background);
12 | box-shadow: var(--select-dropdown-shadow);
13 | box-sizing: border-box;
14 | margin: 5px 0;
15 |
16 | @when multiple {
17 | & .el-select-dropdown__item.selected {
18 | color: var(--select-option-selected);
19 | background-color: var(--select-dropdown-background);
20 |
21 | &.hover {
22 | background-color: var(--select-option-hover-background);
23 | }
24 |
25 | &::after {
26 | position: absolute;
27 | right: 10px;
28 | font-family: 'element-icons';
29 | content: "\E608";
30 | font-size: 11px;
31 | -webkit-font-smoothing: antialiased;
32 | -moz-osx-font-smoothing: grayscale;
33 | }
34 | }
35 | }
36 | }
37 |
38 | @b select-dropdown__empty {
39 | padding: var(--select-dropdown-empty-padding);
40 | margin: 0;
41 | text-align: center;
42 | color: var(--select-dropdown-empty-color);
43 | font-size: var(--select-font-size);
44 | }
45 |
46 | @b select-dropdown__list {
47 | list-style: none;
48 | padding: var(--select-dropdown-padding);
49 | margin: 0;
50 | width: 100%;
51 | max-height: var(--select-dropdown-max-height);
52 | box-sizing: border-box;
53 | overflow-y: auto;
54 |
55 | @when empty {
56 | padding: 0;
57 | }
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/element-theme-default/lib/switch.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-switch{display:inline-block;position:relative;font-size:14px;line-height:22px}.el-switch__label,.el-switch__label *{position:absolute;font-size:14px;display:inline-block}.el-switch .label-fade-enter,.el-switch .label-fade-leave-active{opacity:0}.el-switch.is-disabled .el-switch__core{border-color:#E5E9F3!important;background:#E5E9F3!important}.el-switch.is-disabled .el-switch__core span{background-color:#F9FAFC!important}.el-switch.is-disabled .el-switch__core~.el-switch__label *{color:#F9FAFC!important}.el-switch.is-disabled .el-switch__input:checked+.el-switch__core{border-color:#E5E9F3;background-color:#E5E9F3}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__core,.el-switch__label{width:46px;height:22px;cursor:pointer}.el-switch__label{transition:.2s;z-index:10;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-switch__label *{line-height:1;top:4px;color:#fff}.el-switch__label--left i{left:6px}.el-switch__label--right i{right:6px}.el-switch__input{display:none}.el-switch__input:checked+.el-switch__core{border-color:#20a0ff;background-color:#20a0ff}.el-switch__core{margin:0;display:inline-block;vertical-align:middle;position:relative;border:1px solid #c0ccda;outline:0;border-radius:12px;box-sizing:border-box;background:#c0ccda;transition:border-color .3s,background-color .3s}.el-switch__core .el-switch__button{top:0;left:0;position:absolute;border-radius:100%;transition:transform .3s;width:16px;height:16px;z-index:20;background-color:#fff}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}
--------------------------------------------------------------------------------
/element-theme-default/lib/popover.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-popover{position:absolute;background:#fff;min-width:150px;border-radius:2px;border:1px solid #D3DCE6;padding:10px;z-index:2000;font-size:12px;box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-popover .popper__arrow,.el-popover .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popover .popper__arrow{border-width:6px}.el-popover .popper__arrow::after{content:" ";border-width:6px}.el-popover[x-placement^=top]{margin-bottom:12px}.el-popover[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#D3DCE6;border-bottom-width:0}.el-popover[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popover[x-placement^=bottom]{margin-top:12px}.el-popover[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#D3DCE6}.el-popover[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popover[x-placement^=right]{margin-left:12px}.el-popover[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#D3DCE6;border-left-width:0}.el-popover[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popover[x-placement^=left]{margin-right:12px}.el-popover[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#D3DCE6}.el-popover[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-popover__title{color:#1f2d3d;font-size:13px;line-height:1;margin-bottom:9px}
--------------------------------------------------------------------------------
/element-theme-default/src/loading.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | @import "./common/var.css";
3 |
4 | @component-namespace el {
5 | @b loading-mask {
6 | position: absolute;
7 | z-index: 10000;
8 | background-color: rgba(255, 255, 255, .9);
9 | margin: 0;
10 | top: 0;
11 | right: 0;
12 | bottom: 0;
13 | left: 0;
14 |
15 | @when fullscreen {
16 | position: fixed;
17 |
18 | .el-loading-spinner {
19 | margin-top: calc(- var(--loading-fullscreen-spinner-size) / 2);
20 |
21 | .circular {
22 | width: var(--loading-fullscreen-spinner-size);
23 | }
24 | }
25 | }
26 | }
27 |
28 | @b loading-spinner {
29 | top: 50%;
30 | margin-top: calc(- var(--loading-spinner-size) / 2);
31 | width: 100%;
32 | text-align: center;
33 | position: absolute;
34 |
35 | .el-loading-text {
36 | color: var(--color-primary);
37 | margin: 3px 0;
38 | font-size: 14px;
39 | }
40 |
41 | .circular {
42 | width: var(--loading-spinner-size);
43 | animation: rotate 2s linear infinite;
44 | }
45 |
46 | .path {
47 | animation: dash 1.5s ease-in-out infinite;
48 | stroke-dasharray: 1, 100;
49 | stroke-dashoffset: 0;
50 | stroke-width: 2;
51 | stroke: var(--color-primary);
52 | stroke-linecap: round;
53 | }
54 | }
55 | }
56 |
57 | @keyframes rotate {
58 | 100% {
59 | transform: rotate(360deg);
60 | }
61 | }
62 |
63 | @keyframes dash {
64 | 0% {
65 | stroke-dasharray: 1, 100;
66 | stroke-dashoffset: 0;
67 | }
68 | 50% {
69 | stroke-dasharray: 45, 100;
70 | stroke-dashoffset: -35px;
71 | }
72 | 100% {
73 | stroke-dasharray: 45, 100;
74 | stroke-dashoffset: -124px;
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/element-theme-default/src/date-picker/date-picker.css:
--------------------------------------------------------------------------------
1 | @import "../common/var.css";
2 | @import "./picker-panel.css";
3 |
4 | @component-namespace el {
5 | @b date-picker {
6 | min-width: 254px;
7 |
8 | &.has-sidebar.has-time {
9 | min-width: 434px;
10 | }
11 |
12 | &.has-sidebar {
13 | min-width: 370px;
14 | }
15 |
16 | &.has-time {
17 | min-width: 324px;
18 | }
19 |
20 | .el-picker-panel__content {
21 | min-width: 224px;
22 | }
23 |
24 | table {
25 | table-layout: fixed;
26 | width: 100%;
27 | }
28 |
29 | @e editor-wrap {
30 | position: relative;
31 | display: table-cell;
32 | padding: 0 5px;
33 | }
34 |
35 | @e time-header {
36 | position: relative;
37 | border-bottom: 1px solid var(--datepicker-inner-border-color);
38 | font-size: 12px;
39 | padding: 8px 5px 5px 5px;
40 | display: table;
41 | width: 100%;
42 | box-sizing: border-box;
43 | }
44 |
45 | @e header {
46 | margin: 12px;
47 | text-align: center;
48 | }
49 |
50 | @e header-label {
51 | font-size: 14px;
52 | padding: 0 5px;
53 | line-height: 22px;
54 | text-align: center;
55 | cursor: pointer;
56 |
57 | &:hover {
58 | color: var(--datepicker-text-hover-color);
59 | }
60 |
61 | &.active {
62 | color: var(--datepicker-active-color);
63 | }
64 | }
65 |
66 | @e prev-btn {
67 | float: left;
68 | }
69 |
70 | @e next-btn {
71 | float: right;
72 | }
73 |
74 | @e time-wrap {
75 | padding: 10px;
76 | text-align: center;
77 | }
78 |
79 | @e time-label {
80 | float: left;
81 | cursor: pointer;
82 | line-height: 30px;
83 | margin-left: 10px;
84 | }
85 | }
86 | }
87 |
--------------------------------------------------------------------------------
/element-theme-default/src/date-picker/date-table.css:
--------------------------------------------------------------------------------
1 | @import "../common/var.css";
2 |
3 | @component-namespace el {
4 | @b date-table {
5 | font-size: 12px;
6 | min-width: 224px;
7 | user-select: none;
8 |
9 | @when week-mode {
10 | .el-date-table__row {
11 | &:hover {
12 | background-color: var(--datepicker-cell-hover-color);
13 | }
14 |
15 | &.current {
16 | background-color: var(--datepicker-inrange-color);
17 | }
18 | }
19 | }
20 |
21 | td {
22 | width: 32px;
23 | height: 32px;
24 | box-sizing: border-box;
25 | text-align: center;
26 | cursor: pointer;
27 |
28 | &.next-month,
29 | &.prev-month {
30 | color: var(--datepicker-off-color);
31 | }
32 |
33 | &.today {
34 | color: var(--datepicker-text-hover-color);
35 | }
36 |
37 | &.available:hover {
38 | background-color: var(--datepicker-cell-hover-color);
39 | }
40 |
41 | &.in-range {
42 | background-color: var(--datepicker-inrange-color);
43 | &:hover {
44 | background-color: var(--datepicker-inrange-hover-color);
45 | }
46 | }
47 |
48 | &.current,
49 | &.start-date,
50 | &.end-date {
51 | background-color: var(--datepicker-active-color) !important;
52 | color: var(--color-white);
53 | }
54 |
55 | &.disabled {
56 | background-color: #f4f4f4;
57 | opacity: 1;
58 | cursor: not-allowed;
59 | color: #ccc;
60 | }
61 |
62 | &.week {
63 | font-size: 80%;
64 | color: var(--datepicker-header-color);
65 | }
66 | }
67 |
68 | th {
69 | padding: 5px;
70 | color: var(--datepicker-header-color);
71 | font-weight: 400;
72 | }
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/element-theme-default/src/core/option.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | @import "../common/var.css";
3 |
4 | @component-namespace element {
5 |
6 | @b option {
7 | box-sizing: border-box;
8 | color: var(--dropdown-color);
9 | cursor: pointer;
10 | display: block;
11 | font-size: var(--dropdown-font-size);
12 | padding: 9px;
13 |
14 | @e remark {
15 | color: var(--dropdown-option-pinyin-color);
16 | float: right;
17 | }
18 |
19 | @m arrow {
20 |
21 | &:not(.is-last)::after {
22 | border-left: 1px solid var(--dropdown-border-color);
23 | border-top: 1px solid var(--dropdown-border-color);
24 | content: " ";
25 | height: 4px;
26 | margin-top: 6px;
27 | position: absolute;
28 | right: 12px;
29 | transform: rotate(135deg);
30 | width: 4px;
31 | }
32 | }
33 |
34 | @when disabled {
35 | background-color: transparent;
36 | color: var(--dropdown-option-color-disabled);
37 | cursor: not-allowed;
38 | }
39 |
40 | &:hover,
41 | &.is-hover {
42 | background-color: var(--dropdown-option-fill-hover);
43 | color: var(--dropdown-option-color-hover);
44 | }
45 |
46 | @when selected {
47 | background-color: var(--dropdown-option-fill-active);
48 | color: var(--dropdown-option-color-active);
49 | }
50 | }
51 |
52 | @b optiongroup {
53 | list-style: none;
54 | padding-left: 0;
55 |
56 | & .element-option {
57 | padding-left: 21px;
58 | }
59 |
60 | @e title {
61 | box-sizing: border-box;
62 | color: var(--dropdown-group-color);
63 | display: inline-block;
64 | font-size: var(--dropdown-font-size);
65 | padding: 8px;
66 |
67 | &:hover {
68 | background-color: inherit;
69 | }
70 | }
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/element-theme-default/src/dropdown.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | @import "./common/var.css";
3 | @import "./button.css";
4 |
5 | @component-namespace el {
6 | @b dropdown {
7 | display: inline-block;
8 | position: relative;
9 | color: #475669;
10 | font-size: var(--font-size-base);
11 |
12 | .el-button-group {
13 | display: block;
14 | }
15 |
16 | & .el-dropdown__caret-button {
17 | padding: * 5px;
18 |
19 | & .el-dropdown__icon {
20 | padding-left: 0;
21 | }
22 | }
23 | @e icon {
24 | font-size: 12px;
25 | margin: 0 3px;
26 | }
27 | }
28 | @b dropdown-menu {
29 | margin: 5px 0;
30 | background-color: #fff;
31 | border: var(--dropdown-border);
32 | box-shadow: var(--dropdown-menu-box-shadow);
33 | padding: var(--dropdown-menu-padding) 0;
34 | z-index: 10;
35 | position: absolute;
36 | top: 0;
37 | left: 0;
38 | min-width: 100px;
39 |
40 | @e item {
41 | list-style: none;
42 | line-height: var(--dropdown-menuItem-height);
43 | padding: 0 10px;
44 | margin: 0;
45 | cursor: pointer;
46 |
47 | &:not(.is-disabled):hover {
48 | background-color: var(--dropdown-menuItem-hover-fill);
49 | color: var(--dropdown-menuItem-hover-color);
50 | }
51 | @m divided {
52 | position: relative;
53 | margin-top: 6px;
54 | border-top: 1px solid var(--dropdown-divided-border-color);
55 |
56 | &:before {
57 | content: '';
58 | height: 6px;
59 | display: block;
60 | margin: 0 -10px;
61 | background-color: #fff;
62 | }
63 | }
64 | @when disabled {
65 | cursor: default;
66 | color: var(--dropdown-disabled-color);
67 | pointer-events: none;
68 | }
69 | }
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/src/view/Step.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
48 |
49 |
51 |
--------------------------------------------------------------------------------
/element-theme-default/src/form.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | @import "./common/var.css";
3 |
4 | @component-namespace el {
5 | @b form {
6 | @m label-left {
7 | & .el-form-item__label {
8 | text-align: left;
9 | }
10 | }
11 | @m label-top {
12 | & .el-form-item__label {
13 | float: none;
14 | display: inline-block;
15 | padding: 0 0 10px 0;
16 | }
17 | }
18 | @m inline {
19 | & .el-form-item {
20 | display: inline-block;
21 | margin-right: 10px;
22 | vertical-align: top;
23 | }
24 | }
25 | }
26 | @b form-item {
27 | margin-bottom: var(--form-item-margin-bottom);
28 | @utils-clearfix;
29 |
30 | & .el-form-item {
31 | margin-bottom: 0;
32 |
33 | & .el-form-item__content {
34 | margin-left: 0 !important;
35 | }
36 | }
37 |
38 | @e label {
39 | text-align: right;
40 | vertical-align: middle;
41 | float: left;
42 | font-size: var(--form-label-size);
43 | color: var(--form-label-color);
44 | line-height: 1;
45 | padding: var(--form-label-padding);
46 | box-sizing: border-box;
47 | }
48 | @e content {
49 | line-height: 36px;
50 | position: relative;
51 | font-size: 14px;
52 | @utils-clearfix;
53 | }
54 | @e error {
55 | color: #ff4949;
56 | font-size: 12px;
57 | line-height: 1;
58 | padding-top: 4px;
59 | position: absolute;
60 | top: 100%;
61 | left: 0;
62 | }
63 |
64 | @when required {
65 | .el-form-item__label:before {
66 | content: '*';
67 | color: var(--color-danger);
68 | margin-right: 4px;
69 | }
70 | }
71 |
72 | @when error {
73 | & .el-input__inner,
74 | & .el-textarea__inner {
75 | border-color: var(--color-danger);
76 | }
77 | }
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/element-theme/README.md:
--------------------------------------------------------------------------------
1 | # element-theme
2 | [](https://travis-ci.org/ElementUI/element-theme)
3 | [](https://www.npmjs.com/package/element-theme)
4 |
5 | > Theme generator cli tool for Element.
6 |
7 | 
8 |
9 | ## Installation
10 | install local or global
11 | ```shell
12 | npm i element-theme -D
13 | ```
14 |
15 | install `theme-default`
16 | ```shell
17 | npm i element-theme-default -D
18 | # or from github
19 | npm i https://github.com/ElementUI/theme-default -D
20 | ```
21 |
22 | ## CLI
23 | ```shell
24 | # init variables file
25 | et --init [file path]
26 |
27 | # watch then build
28 | et --watch [--config variable file path] [--out theme path]
29 |
30 | # build
31 | et [--config variable file path] [--out theme path] [--minimize]
32 | ```
33 |
34 | ## Node API
35 | ```javascript
36 | var et = require('element-theme')
37 |
38 | // watch mode
39 | et.watch({
40 | config: 'variables/path',
41 | out: 'output/path'
42 | })
43 |
44 | // build
45 | et.run({
46 | config: 'variables/path',
47 | out: 'output/path',
48 | minimize: true
49 | })
50 | ```
51 |
52 | ## Options
53 | ### config
54 | Variable file path, default `./element-variables.css`.
55 |
56 | ### out
57 | Theme output path, default `./theme`.
58 |
59 | ### minimize
60 | Compressed file.
61 |
62 | ### browsers
63 | set browsers, default `['ie > 9', 'last 2 versions']`.
64 |
65 | ### watch
66 | watch variable file changes then build.
67 |
68 | ## Config
69 | You can configure some options in `element-theme` by putting it in package.json:
70 | ```json
71 | {
72 | "element-theme": {
73 | "browsers": ["ie > 9", "last 2 versions"],
74 | "out": "./theme",
75 | "config": "./element-variables.css",
76 | "minimize": false
77 | }
78 | }
79 | ```
80 |
81 | ## License
82 | MIT
83 |
--------------------------------------------------------------------------------
/element-theme-default/src/autocomplete.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | @import "./input.css";
3 | @import "./common/var.css";
4 |
5 | @component-namespace el {
6 | @b autocomplete {
7 | position: relative;
8 |
9 | @e suggestions {
10 | position: absolute;
11 | left: 0;
12 | top: 110%;
13 | margin: 0;
14 | background-color: #fff;
15 | border: 1px solid #D3DCE6;
16 | width: 100%;
17 | padding: 6px 0;
18 | z-index: 10;
19 | border-radius: 2px;
20 | max-height: 280px;
21 | box-sizing: border-box;
22 | overflow: auto;
23 | box-shadow: 0 0 6px 0 rgba(0,0,0,0.04), 0 2px 4px 0 rgba(0,0,0,0.12);
24 |
25 | & li {
26 | list-style: none;
27 | line-height: 36px;
28 | padding: 0 10px;
29 | margin: 0;
30 | cursor: pointer;
31 | color: #475669;
32 | font-size: 14px;
33 | white-space: nowrap;
34 | overflow: hidden;
35 | text-overflow: ellipsis;
36 |
37 | &:hover {
38 | background-color: var(--select-option-hover-background);
39 | }
40 | &.highlighted {
41 | background-color: var(--color-primary);
42 | color: #fff;
43 | }
44 | &:active {
45 | background-color: darken(var(--color-primary), 0.2);
46 | }
47 | &.divider {
48 | margin-top: 6px;
49 | border-top: 1px solid #D3DCE6;
50 | }
51 | &.divider:last-child {
52 | margin-bottom: -6px;
53 | }
54 | }
55 |
56 | @when loading {
57 | li {
58 | text-align: center;
59 | height: 100px;
60 | line-height: 100px;
61 | font-size: 20px;
62 | color: #999;
63 | @utils-vertical-center;
64 |
65 | &:hover {
66 | background-color: #fff;
67 | }
68 | }
69 |
70 | & .el-icon-loading {
71 | vertical-align: middle;
72 | }
73 | }
74 | }
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/element-theme-default/src/table-column.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | @import "./checkbox.css";
3 | @import "./tag.css";
4 | @import "./common/var.css";
5 |
6 | @component-namespace el {
7 | @b table-column {
8 | @m selection .cell {
9 | padding-left: 14px;
10 | padding-right: 14px;
11 | }
12 | }
13 |
14 | @b table-filter {
15 | border: solid 1px #d3dce6;
16 | border-radius: 2px;
17 | background-color: #fff;
18 | box-shadow: var(--dropdown-menu-box-shadow);
19 | box-sizing: border-box;
20 | margin: 2px 0;
21 |
22 | /** used for dropdown mode */
23 | @e list {
24 | padding: 5px 0;
25 | margin: 0;
26 | list-style: none;
27 | min-width: 100px;
28 | }
29 |
30 | @e list-item {
31 | line-height: 36px;
32 | padding: 0 10px;
33 | cursor: pointer;
34 | font-size: var(--font-size-base);
35 |
36 | &:hover {
37 | background-color: var(--dropdown-menuItem-hover-fill);
38 | color: var(--dropdown-menuItem-hover-color);
39 | }
40 |
41 | @when active {
42 | background-color: #20a0ff;
43 | color: #fff;
44 | }
45 | }
46 |
47 | @e content {
48 | min-width: 100px;
49 | }
50 |
51 | @e bottom {
52 | border-top: 1px solid #d3dce6;
53 | padding: 8px;
54 |
55 | button {
56 | background: transparent;
57 | border: none;
58 | color: #8492a6;
59 | cursor: pointer;
60 | font-size: var(--font-size-base);
61 | padding: 0 3px;
62 |
63 | &:hover {
64 | color: #20a0ff;
65 | }
66 |
67 | &:focus {
68 | outline: none;
69 | }
70 |
71 | &.is-disabled {
72 | color: #c0ccda;
73 | cursor: not-allowed;
74 | }
75 | }
76 | }
77 |
78 | @e checkbox-group {
79 | padding: 10px;
80 |
81 | .el-checkbox {
82 | display: block;
83 | margin-bottom: 8px;
84 | margin-left: 5px;
85 | }
86 |
87 | .el-checkbox:last-child {
88 | margin-bottom: 0;
89 | }
90 | }
91 | }
92 | }
--------------------------------------------------------------------------------
/src/view/Radio.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 备选项
7 | 备选项
8 | 备选项
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
66 |
67 |
69 |
--------------------------------------------------------------------------------
/element-theme-default/src/message.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | @import "./common/var.css";
3 |
4 | @component-namespace el {
5 |
6 | @b message {
7 | box-shadow: var(--message-shadow);
8 | min-width: var(--message-min-width);
9 | padding: var(--message-padding);
10 | box-sizing: border-box;
11 | border-radius: var(--border-radius-small);
12 | position: fixed;
13 | left: 50%;
14 | top: 20px;
15 | transform: translateX(-50%);
16 | background-color: #fff;
17 | transition: opacity 0.3s, transform .4s;
18 | overflow: hidden;
19 |
20 | @e group {
21 | margin-left: 38px;
22 | position: relative;
23 | height: 20px;
24 |
25 | @when with-icon {
26 | margin-left: 0;
27 | }
28 |
29 | & p {
30 | font-size: var(--font-size-base);
31 | line-height: 20px;
32 | margin: 0 34px 0 0;
33 | white-space: nowrap;
34 | color: var(--message-content-color);
35 | text-align: justify;
36 | display: inline-block;
37 | vertical-align: middle;
38 | }
39 | }
40 |
41 | @e img {
42 | size: var(--message-image-size);
43 | position: absolute;
44 | left: 0;
45 | top: 0;
46 | }
47 |
48 | @e icon {
49 | vertical-align: middle;
50 | margin-right: 8px;
51 | }
52 |
53 | @e closeBtn {
54 | position: absolute 3px 0 * *;
55 | cursor: pointer;
56 | color: var(--message-close-color);
57 | font-size: var(--font-size-base);
58 |
59 | &:hover {
60 | color: var(--message-close-hover-color);
61 | }
62 | }
63 |
64 | & .el-icon-circle-check {
65 | color: var(--message-success-color);
66 | }
67 |
68 | & .el-icon-circle-cross {
69 | color: var(--message-danger-color);
70 | }
71 |
72 | & .el-icon-information {
73 | color: var(--message-info-color);
74 | }
75 |
76 | & .el-icon-warning {
77 | color: var(--message-warning-color);
78 | }
79 | }
80 |
81 | .el-message-fade-enter,
82 | .el-message-fade-leave-active {
83 | opacity: 0;
84 | transform: translate(-50%, -100%);
85 | }
86 | }
87 |
--------------------------------------------------------------------------------
/src/view/Select.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
10 |
11 |
12 |
13 |
14 |
18 |
19 |
20 |
21 |
22 |
26 |
27 |
28 |
29 |
30 |
31 |
35 |
36 |
37 |
38 |
39 |
40 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
82 |
83 |
88 |
--------------------------------------------------------------------------------
/element-theme-default/src/alert.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | @import "./common/var.css";
3 |
4 | @component-namespace el {
5 |
6 | @b alert {
7 | width: 100%;
8 | padding: var(--alert-padding);
9 | margin: 0;
10 | box-sizing: border-box;
11 | border-radius: var(--alert-border-radius);
12 | position: relative;
13 | background-color: var(--color-white);
14 | overflow: hidden;
15 | color: #fff;
16 | opacity: 1;
17 | display: table;
18 | transition: opacity .2s;
19 |
20 | @modifier success {
21 | background-color: var(--alert-success-color);
22 | }
23 |
24 | @modifier info {
25 | background-color: var(--alert-info-color);
26 | }
27 |
28 | @modifier warning {
29 | background-color: var(--alert-warning-color);
30 | }
31 |
32 | @modifier error {
33 | background-color: var(--alert-danger-color);
34 | }
35 |
36 | @e content {
37 | display: table-cell;
38 | padding: 0 8px;
39 | }
40 |
41 | @e icon {
42 | font-size: var(--alert-icon-size);
43 | width: var(--alert-icon-size);
44 | display: table-cell;
45 | color: var(--color-white);
46 | vertical-align: middle;
47 | @when big {
48 | font-size: var(--alert-icon-large-size);
49 | width: var(--alert-icon-large-size);
50 | }
51 | }
52 |
53 | @e title {
54 | font-size: var(--alert-title-font-size);
55 | line-height: 18px;
56 | @when bold {
57 | font-weight: bold;
58 | }
59 | }
60 |
61 | & .el-alert__description {
62 | color: #fff;
63 | font-size: var(--alert-description-font-size);
64 | margin: 5px 0 0 0;
65 | }
66 |
67 | @e closebtn {
68 | font-size: var(--alert-close-font-size);
69 | color: #fff;
70 | opacity: 1;
71 | position: absolute 12px 15px * *;
72 | cursor: pointer;
73 |
74 | @when customed {
75 | font-style: normal;
76 | font-size: var(--alert-close-customed-font-size);
77 | top: 9px;
78 | }
79 | }
80 | }
81 |
82 | .el-alert-fade-enter,
83 | .el-alert-fade-leave-active {
84 | opacity: 0;
85 | }
86 | }
87 |
--------------------------------------------------------------------------------
/element-theme-default/src/date-picker/time-picker.css:
--------------------------------------------------------------------------------
1 | @import "../common/var.css";
2 |
3 | @component-namespace el {
4 | @b time-panel {
5 | margin: 5px 0;
6 | border: solid 1px var(--datepicker-border-color);
7 | background-color: var(--color-white);
8 | box-shadow: var(--box-shadow-base);
9 | border-radius: 2px;
10 | position: absolute;
11 | width: 180px;
12 | left: 0;
13 | z-index: var(--index-top);
14 | user-select: none;
15 |
16 | @e content {
17 | font-size: 0;
18 | position: relative;
19 | overflow: hidden;
20 |
21 | &::after, &::before {
22 | content: ":";
23 | top: 50%;
24 | color: var(--color-white);
25 | position: absolute;
26 | font-size: 14px;
27 | margin-top: -15px;
28 | line-height: 16px;
29 | background-color: var(--datepicker-active-color);
30 | height: 32px;
31 | z-index: -1;
32 | left: 0;
33 | right: 0;
34 | box-sizing: border-box;
35 | padding-top: 6px;
36 | text-align: left;
37 | }
38 |
39 | &::after {
40 | left: 50%;
41 | margin-left: -2px;
42 | }
43 |
44 | &::before {
45 | padding-left: 50%;
46 | margin-right: -2px;
47 | }
48 |
49 | &.has-seconds {
50 | &::after {
51 | left: calc(100% / 3 * 2);
52 | }
53 |
54 | &::before {
55 | padding-left: calc(100% / 3);
56 | }
57 | }
58 | }
59 |
60 | @e footer {
61 | border-top: 1px solid var(--datepicker-inner-border-color);
62 | padding: 4px;
63 | height: 36px;
64 | line-height: 25px;
65 | text-align: right;
66 | box-sizing: border-box;
67 | }
68 |
69 | @e btn {
70 | border: none;
71 | line-height: 28px;
72 | padding: 0 5px;
73 | margin: 0 5px;
74 | cursor: pointer;
75 | background-color: transparent;
76 | outline: none;
77 | font-size: 12px;
78 | color: #8492a6;
79 |
80 | &.confirm {
81 | font-weight: 800;
82 | color: var(--datepicker-active-color);
83 | }
84 | }
85 |
86 | }
87 | }
88 |
--------------------------------------------------------------------------------
/element-theme-default/src/notification.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | @import "./common/var.css";
3 |
4 | @component-namespace el {
5 |
6 | @b notification {
7 | width: var(--notification-width);
8 | padding: var(--notification-padding);
9 | box-sizing: border-box;
10 | border-radius: var(--border-radius-small);
11 | position: fixed;
12 | right: 16px;
13 | background-color: #fff;
14 | box-shadow: var(--notification-shadow);
15 | transition: opacity 0.3s, transform .3s, right .3s, top 0.4s;
16 | overflow: hidden;
17 |
18 | @e group {
19 | margin-left: 0;
20 | @when with-icon {
21 | margin-left: var(--notification-with-icon-left);
22 | }
23 | & span {
24 | font-size: var(--notification-title-font-size);
25 | color: var(--notification-title-color);
26 | }
27 |
28 | & p {
29 | font-size: var(--notification-font-size);
30 | line-height: 21px;
31 | margin: 10px 0 0 0;
32 | color: var(--notification-color);
33 | text-align: justify;
34 | }
35 | }
36 |
37 | @e icon {
38 | size: var(--notification-icon-size);
39 | font-size: var(--notification-icon-size);
40 | float: left;
41 | position: absolute;
42 | top: 0;
43 | bottom:0;
44 | margin:auto 0;
45 | }
46 |
47 | @e closeBtn {
48 | position: absolute 20px 20px * *;
49 | cursor: pointer;
50 | color: var(--notification-close-color);
51 | font-size: var(--notification-font-size);
52 |
53 | &:hover {
54 | color: var(--notification-close-hover-color);
55 | }
56 | }
57 |
58 | & .el-icon-circle-check {
59 | color: var(--notification-success-color);
60 | }
61 |
62 | & .el-icon-circle-cross {
63 | color: var(--notification-danger-color);
64 | }
65 |
66 | & .el-icon-information {
67 | color: var(--notification-info-color);
68 | }
69 |
70 | & .el-icon-warning {
71 | color: var(--notification-warning-color);
72 | }
73 | }
74 |
75 | .el-notification-fade-enter {
76 | transform: translateX(100%);
77 | right: 0;
78 | }
79 |
80 | .el-notification-fade-leave-active {
81 | opacity: 0;
82 | }
83 | }
84 |
--------------------------------------------------------------------------------
/element-theme-default/lib/checkbox.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-checkbox,.el-checkbox__input{white-space:nowrap;cursor:pointer}.el-checkbox,.el-checkbox__inner,.el-checkbox__input{display:inline-block;position:relative}.el-checkbox{color:#1f2d3d;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.el-checkbox+.el-checkbox{margin-left:15px}.el-checkbox__input{outline:0;line-height:1;vertical-align:middle}.el-checkbox__inner{border:1px solid #c0ccda;border-radius:4px;box-sizing:border-box;width:18px;height:18px;background-color:#fff;z-index:1;transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.el-checkbox__inner:not(.is-disabled):hover{border-color:#20a0ff}.el-checkbox__inner::after{box-sizing:content-box;content:"";border:2px solid #fff;border-left:0;border-top:0;height:8px;left:5px;position:absolute;top:1px;-ms-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:4px;transition:transform .15s cubic-bezier(.71,-.46,.88,.6) .05s;-ms-transform-origin:center;transform-origin:center}.el-checkbox__inner.is-disabled.is-checked{background-color:#D3DCE6;border-color:#D3DCE6}.el-checkbox__inner.is-disabled.is-checked::after{border-color:#fff}.el-checkbox__inner.is-disabled.is-indeterminate{background-color:#D3DCE6;border-color:#D3DCE6}.el-checkbox__inner.is-disabled.is-indeterminate::before{border-color:#fff}.el-checkbox__inner.is-indeterminate{background-color:#20a0ff;border-color:#2e90fe}.el-checkbox__inner.is-indeterminate::before{content:'';position:absolute;display:block;border:1px solid #fff;margin-top:-1px;left:3px;right:3px;top:50%}.el-checkbox__inner.is-indeterminate::after{display:none}.el-checkbox__inner.is-focus{border-color:#20a0ff}.el-checkbox__inner.is-checked{background-color:#20a0ff;border-color:#2e90fe}.el-checkbox__inner.is-checked::after{-ms-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__inner.is-disabled{background-color:#EFF2F7;border-color:#D3DCE6;cursor:not-allowed}.el-checkbox__inner.is-disabled::after{cursor:not-allowed;border-color:#EFF2F7}.el-checkbox__inner.is-disabled+.el-checkbox__label{cursor:not-allowed}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;left:-999px}.el-checkbox__label{font-size:14px;padding-left:5px}
--------------------------------------------------------------------------------
/element-theme-default/lib/icon.css:
--------------------------------------------------------------------------------
1 | @font-face{font-family:element-icons;src:url(fonts/element-icons.eot?t=1472440741);src:url(fonts/element-icons.woff?t=1472440741) format('woff'),url(fonts/element-icons.ttf?t=1472440741) format('truetype'),url(fonts/element-icons.svg?t=1472440741#el-icon) format('svg');font-weight:400;font-style:normal}[class*=" el-icon-"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-arrow-down:before{content:"\e600"}.el-icon-arrow-left:before{content:"\e601"}.el-icon-arrow-right:before{content:"\e602"}.el-icon-arrow-up:before{content:"\e603"}.el-icon-caret-bottom:before{content:"\e604"}.el-icon-caret-left:before{content:"\e605"}.el-icon-caret-right:before{content:"\e606"}.el-icon-caret-top:before{content:"\e607"}.el-icon-check:before{content:"\e608"}.el-icon-circle-check:before{content:"\e609"}.el-icon-circle-close:before{content:"\e60a"}.el-icon-circle-cross:before{content:"\e60b"}.el-icon-close:before{content:"\e60c"}.el-icon-upload:before{content:"\e60d"}.el-icon-d-arrow-left:before{content:"\e60e"}.el-icon-d-arrow-right:before{content:"\e60f"}.el-icon-d-caret:before{content:"\e610"}.el-icon-date:before{content:"\e611"}.el-icon-delete:before{content:"\e612"}.el-icon-document:before{content:"\e613"}.el-icon-edit:before{content:"\e614"}.el-icon-information:before{content:"\e615"}.el-icon-loading:before{content:"\e616"}.el-icon-menu:before{content:"\e617"}.el-icon-message:before{content:"\e618"}.el-icon-minus:before{content:"\e619"}.el-icon-more:before{content:"\e61a"}.el-icon-picture:before{content:"\e61b"}.el-icon-plus:before{content:"\e61c"}.el-icon-search:before{content:"\e61d"}.el-icon-setting:before{content:"\e61e"}.el-icon-share:before{content:"\e61f"}.el-icon-star-off:before{content:"\e620"}.el-icon-star-on:before{content:"\e621"}.el-icon-time:before{content:"\e622"}.el-icon-warning:before{content:"\e623"}.el-icon-delete2:before{content:"\e624"}.el-icon-upload2:before{content:"\e627"}.el-icon-view:before{content:"\e626"}.el-icon-loading{animation:rotating 1s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotateZ(0)}100%{transform:rotateZ(360deg)}}
--------------------------------------------------------------------------------
/src/view/Button.vue:
--------------------------------------------------------------------------------
1 |
2 |
58 |
59 |
60 |
64 |
65 |
67 |
--------------------------------------------------------------------------------
/element-theme-default/src/col.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | @import "./common/var.css";
3 |
4 | .el-col-1, .el-col-2, .el-col-3, .el-col-4, .el-col-5, .el-col-6, .el-col-7, .el-col-8, .el-col-9, .el-col-10, .el-col-11, .el-col-12, .el-col-13, .el-col-14, .el-col-15, .el-col-16, .el-col-17, .el-col-18, .el-col-19, .el-col-20, .el-col-21, .el-col-22, .el-col-23, .el-col-24 {
5 | float: left;
6 | box-sizing: border-box;
7 | }
8 |
9 | @for $i from 1 to 24 {
10 | .el-col-$i,
11 | .el-col-xs-$i {
12 | width: calc(1 / 24 * $(i) * 100)%;
13 | }
14 | .el-col-offset-$i,
15 | .el-col-xs-offset-$i {
16 | margin-left: calc(1 / 24 * $(i) * 100)%;
17 | }
18 | .el-col-pull-$i,
19 | .el-col-xs-pull-$i {
20 | position: relative;
21 | right: calc(1 / 24 * $(i) * 100)%;
22 | }
23 | .el-col-push-$i,
24 | .el-col-xs-push-$i {
25 | position: relative;
26 | left: calc(1 / 24 * $(i) * 100)%;
27 | }
28 | }
29 |
30 | @media (min-width: 768px) {
31 | @for $i from 1 to 24 {
32 | .el-col-sm-$i {
33 | width: calc(1 / 24 * $(i) * 100)%;
34 | }
35 | .el-col-sm-offset-$i {
36 | margin-left: calc(1 / 24 * $(i) * 100)%;
37 | }
38 | .el-col-sm-pull-$i {
39 | position: relative;
40 | right: calc(1 / 24 * $(i) * 100)%;
41 | }
42 | .el-col-sm-push-$i {
43 | position: relative;
44 | left: calc(1 / 24 * $(i) * 100)%;
45 | }
46 | }
47 | }
48 | @media (min-width: 992px) {
49 | @for $i from 1 to 24 {
50 | .el-col-md-$i {
51 | width: calc(1 / 24 * $(i) * 100)%;
52 | }
53 | .el-col-md-offset-$i {
54 | margin-left: calc(1 / 24 * $(i) * 100)%;
55 | }
56 | .el-col-md-pull-$i {
57 | position: relative;
58 | right: calc(1 / 24 * $(i) * 100)%;
59 | }
60 | .el-col-md-push-$i {
61 | position: relative;
62 | left: calc(1 / 24 * $(i) * 100)%;
63 | }
64 | }
65 | }
66 | @media (min-width: 1200px) {
67 | @for $i from 1 to 24 {
68 | .el-col-lg-$i {
69 | width: calc(1 / 24 * $(i) * 100)%;
70 | }
71 | .el-col-lg-offset-$i {
72 | margin-left: calc(1 / 24 * $(i) * 100)%;
73 | }
74 | .el-col-lg-pull-$i {
75 | position: relative;
76 | right: calc(1 / 24 * $(i) * 100)%;
77 | }
78 | .el-col-lg-push-$i {
79 | position: relative;
80 | left: calc(1 / 24 * $(i) * 100)%;
81 | }
82 | }
83 | }
--------------------------------------------------------------------------------
/element-theme-default/lib/step.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-step.is-horizontal,.el-step.is-vertical .el-step__head,.el-step.is-vertical .el-step__main,.el-step__line{display:inline-block}.el-step{position:relative;vertical-align:top}.el-step.is-vertical .el-step__main{padding-left:10px}.el-step__line{position:absolute;border-color:inherit;background-color:#c0ccda}.el-step__line.is-vertical{width:2px;box-sizing:border-box;top:32px;bottom:0;left:15px}.el-step__line.is-horizontal{top:15px;height:2px;left:32px;right:0}.el-step__line.is-icon.is-horizontal{right:4px}.el-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;transition:all 150ms;width:0;height:0}.el-step__icon{display:block;line-height:28px}.el-step__icon>*{line-height:inherit;vertical-align:middle}.el-step__head{width:28px;height:28px;border-radius:50%;background-color:transparent;text-align:center;line-height:28px;font-size:28px;vertical-align:top;transition:all 150ms}.el-step__head.is-finish{color:#20a0ff;border-color:#20a0ff}.el-step__head.is-error{color:#ff4949;border-color:#ff4949}.el-step__head.is-success{color:#13ce66;border-color:#13ce66}.el-step__head.is-process,.el-step__head.is-wait{color:#c0ccda;border-color:#c0ccda}.el-step__head.is-text{font-size:14px;border-width:2px;border-style:solid}.el-step__head.is-text.is-finish{color:#fff;background-color:#20a0ff;border-color:#20a0ff}.el-step__head.is-text.is-error{color:#fff;background-color:#ff4949;border-color:#ff4949}.el-step__head.is-text.is-success{color:#fff;background-color:#13ce66;border-color:#13ce66}.el-step__head.is-text.is-wait{color:#c0ccda;background-color:#fff;border-color:#c0ccda}.el-step__head.is-text.is-process{color:#fff;background-color:#c0ccda;border-color:#c0ccda}.el-step__main{white-space:normal;padding-right:10px;text-align:left}.el-step__title{font-size:14px;line-height:32px;display:inline-block}.el-step__title.is-finish{font-weight:700;color:#20a0ff}.el-step__title.is-error{font-weight:700;color:#ff4949}.el-step__title.is-success{font-weight:700;color:#13ce66}.el-step__title.is-wait{font-weight:400;color:#99a9bf}.el-step__title.is-process{font-weight:700;color:#475669}.el-step__description{font-size:12px;font-weight:400;line-height:14px}.el-step__description.is-finish{color:#20a0ff}.el-step__description.is-error{color:#ff4949}.el-step__description.is-success{color:#13ce66}.el-step__description.is-wait{color:#c0ccda}.el-step__description.is-process{color:#8492a6}
--------------------------------------------------------------------------------
/element-theme-default/src/dialog.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | @import "./common/var.css";
3 | @import "vue-popup/lib/popup.css";
4 |
5 | @component-namespace el {
6 |
7 | @b dialog {
8 | position: absolute;
9 | left: 50%;
10 | transform: translateX(-50%);
11 | background: #fff;
12 | border-radius: var(--border-radius-small);
13 | box-shadow: var(--dialog-box-shadow);
14 | box-sizing: border-box;
15 |
16 | @modifier tiny {
17 | width: var(--dialog-tiny-width);
18 | }
19 |
20 | @modifier small {
21 | width: var(--dialog-small-width);
22 | }
23 |
24 | @modifier large {
25 | width: var(--dialog-large-width);
26 | }
27 |
28 | @modifier full {
29 | width: 100%;
30 | top: 0;
31 | height: 100%;
32 | overflow: auto;
33 | }
34 |
35 | @e wrapper {
36 | position: fixed 0 0 0 0;
37 | overflow: auto;
38 | margin: 0;
39 | }
40 |
41 | @e header {
42 | padding: var(--dialog-header-padding);
43 | }
44 |
45 | @e close {
46 | cursor: pointer;
47 | color: var(--dialog-close-color);
48 |
49 | &:hover {
50 | color: var(--dialog-close-hover-color);
51 | }
52 | }
53 |
54 | @e title {
55 | line-height: 1;
56 | font-size: var(--dialog-title-font-size);
57 | font-weight: bold;
58 | color: var(--dialog-title-color);
59 | }
60 |
61 | @e body {
62 | padding: var(--dialog-body-padding);
63 | color: var(--dialog-body-color);
64 | font-size: var(--dialog-font-size);
65 | }
66 |
67 | @e headerbtn {
68 | float: right;
69 | }
70 |
71 | @e footer {
72 | padding: 10px 20px 15px;
73 | text-align: right;
74 | box-sizing: border-box;
75 | }
76 | }
77 |
78 | .dialog-fade-enter-active {
79 | animation: dialog-fade-in .3s;
80 | }
81 |
82 | .dialog-fade-leave-active {
83 | animation: dialog-fade-out .3s;
84 | }
85 |
86 | @keyframes dialog-fade-in {
87 | 0% {
88 | transform: translate3d(0, -20px, 0);
89 | opacity: 0;
90 | }
91 | 100% {
92 | transform: translate3d(0, 0, 0);
93 | opacity: 1;
94 | }
95 | }
96 |
97 | @keyframes dialog-fade-out {
98 | 0% {
99 | transform: translate3d(0, 0, 0);
100 | opacity: 1;
101 | }
102 | 100% {
103 | transform: translate3d(0, -20px, 0);
104 | opacity: 0;
105 | }
106 | }
107 | }
108 |
--------------------------------------------------------------------------------
/element-theme-default/lib/tooltip.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-tooltip,.el-tooltip__rel{display:inline-block}.el-tooltip__rel{position:relative}.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow::after{content:" ";border-width:5px}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#1f2d3d;border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-5px;border-top-color:#1f2d3d;border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#1f2d3d}.el-tooltip__popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#1f2d3d}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#1f2d3d;border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow::after{bottom:-5px;left:1px;border-right-color:#1f2d3d;border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#1f2d3d}.el-tooltip__popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#1f2d3d}.el-tooltip__popper.is-light{background:#fff;border:1px solid #1f2d3d}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#1f2d3d}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after{border-top-color:#fff}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#1f2d3d}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after{border-bottom-color:#fff}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#1f2d3d}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after{border-left-color:#fff}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#1f2d3d}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after{border-right-color:#fff}.el-tooltip__popper.is-dark{background:#1f2d3d;color:#fff}
--------------------------------------------------------------------------------
/element-theme-default/src/date-picker/date-range-picker.css:
--------------------------------------------------------------------------------
1 | @import "../common/var.css";
2 |
3 | @component-namespace el {
4 | @b date-range-picker {
5 | min-width: 520px;
6 |
7 | &.has-sidebar.has-time {
8 | min-width: 766px;
9 | }
10 |
11 | &.has-sidebar {
12 | min-width: 620px;
13 | }
14 |
15 | &.has-time {
16 | min-width: 660px;
17 | }
18 |
19 | table {
20 | table-layout: fixed;
21 | width: 100%;
22 | }
23 |
24 | .el-picker-panel__body {
25 | min-width: 513px;
26 | }
27 |
28 | .el-picker-panel__content {
29 | margin: 0;
30 | }
31 |
32 | @e header {
33 | position: relative;
34 | text-align: center;
35 | height: 28px;
36 |
37 | button {
38 | float: left;
39 | }
40 |
41 | div {
42 | font-size: 14px;
43 | margin-right: 50px;
44 | }
45 | }
46 |
47 | @e content {
48 | float: left;
49 | width: 50%;
50 | box-sizing: border-box;
51 | margin: 0;
52 | padding: 16px;
53 |
54 | @when left {
55 | border-right: 1px solid var(--datepicker-inner-border-color);
56 | }
57 |
58 | @when right {
59 | .el-date-range-picker__header {
60 | button {
61 | float: right;
62 | }
63 |
64 | div {
65 | margin-left: 50px;
66 | margin-right: 50px;
67 | }
68 | }
69 | }
70 | }
71 |
72 | @e editors-wrap {
73 | box-sizing: border-box;
74 | display: table-cell;
75 |
76 | @when right {
77 | text-align: right;
78 | }
79 | }
80 |
81 | @e time-header {
82 | position: relative;
83 | border-bottom: 1px solid var(--datepicker-inner-border-color);
84 | font-size: 12px;
85 | padding: 8px 5px 5px 5px;
86 | display: table;
87 | width: 100%;
88 | box-sizing: border-box;
89 |
90 | > .el-icon-arrow-right {
91 | font-size: 20px;
92 | vertical-align: middle;
93 | display: table-cell;
94 | color: var(--datepicker-icon-color);
95 | }
96 | }
97 |
98 | @e time-picker-wrap {
99 | position: relative;
100 | display: table-cell;
101 | padding: 0 5px;
102 |
103 | .el-picker-panel {
104 | position: absolute;
105 | top: 13px;
106 | right: 0;
107 | z-index: 1;
108 | background: var(--color-white);
109 | }
110 | }
111 | }
112 | }
113 |
--------------------------------------------------------------------------------
/element-theme-default/src/input-number.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | @import "./input.css";
3 | @import "./common/var.css";
4 |
5 | @component-namespace el {
6 | @b input-number {
7 | display: inline-block;
8 | overflow: hidden;
9 | width: 180px;
10 | position: relative;
11 |
12 | & .el-input__inner {
13 | appearance: none;
14 | padding-right: calc(var(--input-height) * 2 + 10);
15 | }
16 | @e increase, decrease {
17 | height: auto;
18 | border-left: var(--border-base);
19 | width: var(--input-height);
20 | line-height: calc(var(--input-height) - 2);
21 | top: 1px;
22 | text-align: center;
23 | color: #99A9BF;
24 | cursor: pointer;
25 | position: absolute;
26 |
27 | &:hover {
28 | color: var(--color-primary);
29 | }
30 |
31 | @when disabled {
32 | color: var(--disabled-border-base);
33 | cursor: not-allowed;
34 | }
35 | }
36 |
37 | @e increase {
38 | right: 0;
39 | }
40 | @e decrease {
41 | right: calc(var(--input-height) + 1px);
42 | }
43 |
44 | @when disabled {
45 | & .el-input-number__increase, .el-input-number__decrease {
46 | border-color: var(--disabled-border-base);
47 | color: var(--disabled-border-base);
48 |
49 | &:hover {
50 | color: var(--disabled-border-base);
51 | cursor: not-allowed;
52 | }
53 | }
54 | }
55 | @m large {
56 | width: 200px;
57 |
58 | & .el-input-number__increase, .el-input-number__decrease {
59 | line-height: var(--input-large-height);
60 | width: var(--input-large-height);
61 | font-size: var(--input-large-font-size);
62 | }
63 | & .el-input-number__decrease {
64 | right: calc(var(--input-large-height) + 1px);
65 | }
66 | & .el-input__inner {
67 | padding-right: calc(var(--input-large-height) * 2 + 10);
68 | }
69 | }
70 | @m small {
71 | width: 130px;
72 |
73 | & .el-input-number__increase, .el-input-number__decrease {
74 | line-height: var(--input-small-height);
75 | width: var(--input-small-height);
76 | font-size: var(--input-small-font-size);
77 | }
78 | & .el-input-number__decrease {
79 | right: calc(var(--input-small-height) + 1px);
80 | }
81 | & .el-input__inner {
82 | padding-right: calc(var(--input-small-height) * 2 + 10);
83 | }
84 | }
85 | @when without-controls {
86 | & .el-input__inner {
87 | padding-right: 10px;
88 | }
89 | }
90 | }
91 | }
92 |
--------------------------------------------------------------------------------
/element-theme-default/src/tree.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | @import "./common/var.css";
3 |
4 | @component-namespace el {
5 | @b tree {
6 | cursor: default;
7 | background: #ffffff;
8 | border: 1px solid #d3dce6;
9 |
10 | @e empty-block {
11 | position: relative;
12 | min-height: 60px;
13 | text-align: center;
14 | width: 100%;
15 | height: 100%;
16 | }
17 |
18 | @e empty-text {
19 | position: absolute;
20 | left: 50%;
21 | top: 50%;
22 | transform: translate(-50%, -50%);
23 | color: #5e6d82;
24 | }
25 | }
26 |
27 | @b tree-node {
28 | white-space: nowrap;
29 |
30 | @e content {
31 | line-height: 36px;
32 | height: 36px;
33 | cursor: pointer;
34 |
35 | & > .el-checkbox,
36 | & > .el-tree-node__expand-icon {
37 | margin-right: 8px;
38 | }
39 | & > .el-checkbox {
40 | vertical-align: middle;
41 | }
42 | &:hover {
43 | background: #e5e9f2;
44 | }
45 | }
46 |
47 | @e expand-icon {
48 | display: inline-block;
49 | cursor: pointer;
50 | width: 0;
51 | height: 0;
52 | vertical-align: middle;
53 | margin-left: 10px;
54 | border: 6px solid transparent;
55 | border-right-width: 0;
56 | border-left-color: #99a9bf;
57 | border-left-width: 7px;
58 |
59 | transform: rotate(0deg);
60 | transition: transform 0.3s ease-in-out;
61 |
62 | &:hover {
63 | border-left-color: #999;
64 | }
65 |
66 | &.expanded {
67 | transform: rotate(90deg);
68 | }
69 |
70 | &.is-leaf {
71 | border-color: transparent;
72 | cursor: default;
73 | }
74 | }
75 |
76 | @e label {
77 | font-size: 14px;
78 | vertical-align: middle;
79 | display: inline-block;
80 | }
81 |
82 | @e loading-icon {
83 | display: inline-block;
84 | vertical-align: middle;
85 | margin-right: 4px;
86 | font-size: 14px;
87 | color: #99a9bf;
88 | }
89 |
90 | & > .el-tree-node__children {
91 | overflow: hidden;
92 | background-color: transparent;
93 | /** padding-left: 16px; */
94 | display: none;
95 | }
96 |
97 | &.is-expanded > .el-tree-node__children {
98 | display: block;
99 | }
100 | }
101 | }
102 |
103 | .el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content {
104 | background-color: #eff7ff;
105 | }
106 |
107 | .collapse-transition {
108 | transition: 0.3s height ease-in-out, 0.3s padding-top ease-in-out, 0.3s padding-bottom ease-in-out;
109 | }
110 |
--------------------------------------------------------------------------------
/element-theme-default/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_args": [
3 | [
4 | "element-theme-default@^1.0.7",
5 | "/home/mro/代码/make-element-ui-theme"
6 | ]
7 | ],
8 | "_from": "element-theme-default@>=1.0.7 <2.0.0",
9 | "_id": "element-theme-default@1.0.7",
10 | "_inCache": true,
11 | "_installable": true,
12 | "_location": "/element-theme-default",
13 | "_nodeVersion": "6.6.0",
14 | "_npmOperationalInternal": {
15 | "host": "packages-18-east.internal.npmjs.com",
16 | "tmp": "tmp/element-theme-default-1.0.7.tgz_1481700978238_0.8416986416559666"
17 | },
18 | "_npmUser": {
19 | "email": "leopoldthecuber@gmail.com",
20 | "name": "yi.yang"
21 | },
22 | "_npmVersion": "3.10.3",
23 | "_phantomChildren": {},
24 | "_requested": {
25 | "name": "element-theme-default",
26 | "raw": "element-theme-default@^1.0.7",
27 | "rawSpec": "^1.0.7",
28 | "scope": null,
29 | "spec": ">=1.0.7 <2.0.0",
30 | "type": "range"
31 | },
32 | "_requiredBy": [
33 | "#DEV:/"
34 | ],
35 | "_resolved": "https://registry.npmjs.org/element-theme-default/-/element-theme-default-1.0.7.tgz",
36 | "_shasum": "91456f346e4f67ef9ce41af3e8137c58e77af71b",
37 | "_shrinkwrap": null,
38 | "_spec": "element-theme-default@^1.0.7",
39 | "_where": "/home/mro/代码/make-element-ui-theme",
40 | "author": {
41 | "email": "qingwei.li@ele.me",
42 | "name": "haiping.zeng"
43 | },
44 | "bugs": {
45 | "url": "https://github.com/ElementUI/theme-default/issues"
46 | },
47 | "dependencies": {
48 | "vue-popup": "^0.2.9"
49 | },
50 | "description": "Element component default theme.",
51 | "devDependencies": {
52 | "gulp": "^3.9.1",
53 | "gulp-cssmin": "^0.1.7",
54 | "gulp-postcss": "^6.1.1",
55 | "postcss-salad": "^1.0.5"
56 | },
57 | "directories": {},
58 | "dist": {
59 | "shasum": "91456f346e4f67ef9ce41af3e8137c58e77af71b",
60 | "tarball": "https://registry.npmjs.org/element-theme-default/-/element-theme-default-1.0.7.tgz"
61 | },
62 | "files": [
63 | "lib",
64 | "src"
65 | ],
66 | "homepage": "https://github.com/ElementUI/theme-default#readme",
67 | "keywords": [
68 | "element",
69 | "theme"
70 | ],
71 | "license": "MIT",
72 | "main": "lib/index.css",
73 | "maintainers": [
74 | {
75 | "name": "qingwei.li",
76 | "email": "cinwell.li@gmail.com"
77 | }
78 | ],
79 | "name": "element-theme-default",
80 | "optionalDependencies": {},
81 | "readme": "ERROR: No README data found!",
82 | "repository": {
83 | "type": "git",
84 | "url": "git+https://github.com/ElementUI/theme-default.git"
85 | },
86 | "scripts": {
87 | "build": "gulp build"
88 | },
89 | "style": "lib/index.css",
90 | "version": "1.0.7"
91 | }
92 |
--------------------------------------------------------------------------------
/src/theme/steps.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | :root{
3 | /* Transition
4 | -------------------------- */
5 | /* Colors drak
6 | -------------------------- */
7 | /* Colors tin
8 | -------------------------- */
9 | /* Colors
10 | -------------------------- */
11 | /* Background color
12 | -------------------------- */
13 | /* Border
14 | -------------------------- */
15 | /* Box-shadow
16 | -------------------------- */
17 | /* Fill
18 | -------------------------- */
19 | /* Font
20 | -------------------------- */
21 | /* Size
22 | -------------------------- */
23 | /* z-index
24 | -------------------------- */
25 | /* Disable base
26 | -------------------------- */
27 | /* Icon
28 | -------------------------- */
29 | /* Checkbox
30 | -------------------------- */
31 | /* Radio
32 | -------------------------- */
33 | /* Select
34 | -------------------------- */
35 | /* Alert
36 | -------------------------- */
37 | /* Message Box
38 | -------------------------- */
39 | /* Message
40 | -------------------------- */
41 | /* Notification
42 | -------------------------- */
43 | /* Input
44 | -------------------------- */
45 | /* Cascader
46 | -------------------------- */
47 | /* Group
48 | -------------------------- */
49 | /* Tab
50 | -------------------------- */
51 | /* Button
52 | -------------------------- */
53 | /* cascader
54 | -------------------------- */
55 | /* Switch
56 | -------------------------- */
57 | /* Dialog
58 | -------------------------- */
59 | /* Table
60 | -------------------------- */
61 | /* Pagination
62 | -------------------------- */
63 | /* Popover
64 | -------------------------- */
65 | /* Tooltip
66 | -------------------------- */
67 | /* Tag
68 | -------------------------- */
69 | /* Dropdown
70 | -------------------------- */
71 | /* Badge
72 | -------------------------- */
73 | /* Card
74 | --------------------------*/
75 | /* Slider
76 | --------------------------*/
77 | /* Steps
78 | --------------------------*/
79 | /* NavMenu
80 | --------------------------*/
81 | /* Tabs
82 | --------------------------*/
83 | /* Rate
84 | --------------------------*/
85 | /* DatePicker
86 | --------------------------*/
87 | /* Loading
88 | --------------------------*/
89 | /* Breadcrumd
90 | --------------------------*/
91 | /* Form
92 | --------------------------*/
93 | }
94 |
95 | .el-steps{
96 | font-size: 0;
97 | }
98 |
99 | .el-steps > :last-child .el-step__line{
100 | display: none;
101 | }
102 |
103 | .el-steps.is-horizontal{
104 | white-space: nowrap;
105 | }
106 |
--------------------------------------------------------------------------------
/src/theme/element-variables.css:
--------------------------------------------------------------------------------
1 | :root {
2 |
3 | /* Transition
4 | -------------------------- */
5 |
6 | /* Colors drak
7 | -------------------------- */
8 |
9 |
10 | /* Colors tin
11 | -------------------------- */
12 |
13 | /* Colors
14 | -------------------------- */
15 |
16 | /* Background color
17 | -------------------------- */
18 |
19 | /* Border
20 | -------------------------- */
21 |
22 | /* Box-shadow
23 | -------------------------- */
24 |
25 | /* Fill
26 | -------------------------- */
27 |
28 | /* Font
29 | -------------------------- */
30 |
31 | /* Size
32 | -------------------------- */
33 |
34 | /* z-index
35 | -------------------------- */
36 |
37 | /* Disable base
38 | -------------------------- */
39 |
40 | /* Icon
41 | -------------------------- */
42 |
43 | /* Checkbox
44 | -------------------------- */
45 |
46 | /* Radio
47 | -------------------------- */
48 |
49 | /* Select
50 | -------------------------- */
51 |
52 | /* Alert
53 | -------------------------- */
54 |
55 | /* Message Box
56 | -------------------------- */
57 |
58 | /* Message
59 | -------------------------- */
60 |
61 | /* Notification
62 | -------------------------- */
63 |
64 | /* Input
65 | -------------------------- */
66 |
67 | /* Cascader
68 | -------------------------- */
69 |
70 | /* Group
71 | -------------------------- */
72 |
73 | /* Tab
74 | -------------------------- */
75 |
76 | /* Button
77 | -------------------------- */
78 |
79 |
80 | /* cascader
81 | -------------------------- */
82 |
83 | /* Switch
84 | -------------------------- */
85 |
86 | /* Dialog
87 | -------------------------- */
88 |
89 | /* Table
90 | -------------------------- */
91 |
92 | /* Pagination
93 | -------------------------- */
94 |
95 | /* Popover
96 | -------------------------- */
97 |
98 | /* Tooltip
99 | -------------------------- */
100 |
101 | /* Tag
102 | -------------------------- */
103 |
104 | /* Dropdown
105 | -------------------------- */
106 |
107 | /* Badge
108 | -------------------------- */
109 |
110 | /* Card
111 | --------------------------*/
112 |
113 | /* Slider
114 | --------------------------*/
115 |
116 | /* Steps
117 | --------------------------*/
118 |
119 |
120 | /* NavMenu
121 | --------------------------*/
122 |
123 |
124 | /* Tabs
125 | --------------------------*/
126 |
127 |
128 | /* Rate
129 | --------------------------*/
130 |
131 | /* DatePicker
132 | --------------------------*/
133 |
134 | /* Loading
135 | --------------------------*/
136 |
137 | /* Breadcrumd
138 | --------------------------*/
139 |
140 | /* Form
141 | --------------------------*/
142 | }
143 |
--------------------------------------------------------------------------------
/element-theme-default/src/progress.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | @import "./common/var.css";
3 |
4 | @component-namespace el {
5 | @b progress {
6 | position: relative;
7 | line-height: 1;
8 |
9 | @e text {
10 | font-size:14px;
11 | color:#475669;
12 | display: inline-block;
13 | vertical-align: middle;
14 | margin-left: 10px;
15 | line-height: 1;
16 |
17 | i {
18 | vertical-align: middle;
19 | display: block;
20 | }
21 | }
22 | @m circle {
23 | display: inline-block;
24 |
25 | .el-progress__text {
26 | position: absolute;
27 | top: 50%;
28 | left: 0;
29 | width: 100%;
30 | text-align: center;
31 | margin: 0;
32 | transform: translate(0, -50%);
33 |
34 | i {
35 | vertical-align: middle;
36 | display: inline-block;
37 | }
38 | }
39 | }
40 | @m without-text {
41 | .el-progress__text {
42 | display: none;
43 | }
44 | .el-progress-bar {
45 | padding-right: 0;
46 | margin-right: 0;
47 | display: block;
48 | }
49 | }
50 | @m text-inside {
51 | .el-progress-bar {
52 | padding-right: 0;
53 | margin-right: 0;
54 | }
55 | }
56 | @when success {
57 | .el-progress-bar__inner {
58 | background-color: var(--color-success);
59 | }
60 | .el-progress__text {
61 | color: var(--color-success);
62 | }
63 | }
64 | @when exception {
65 | .el-progress-bar__inner {
66 | background-color: var(--color-danger);
67 | }
68 | .el-progress__text {
69 | color: var(--color-danger);
70 | }
71 | }
72 | }
73 | @b progress-bar {
74 | padding-right: 50px;
75 | display: inline-block;
76 | vertical-align: middle;
77 | width: 100%;
78 | margin-right: -55px;
79 | box-sizing: border-box;
80 |
81 | @e outer {
82 | height: 6px;
83 | border-radius: 100px;
84 | background-color: #e5e9f2;
85 | overflow: hidden;
86 | position: relative;
87 | vertical-align: middle;
88 | }
89 | @e inner {
90 | position: absolute;
91 | left: 0;
92 | top: 0;
93 | height: 100%;
94 | border-radius: 2px 0 0 2px;
95 | background-color: var(--color-primary);
96 | text-align: right;
97 | border-radius: 100px;
98 | line-height: 1;
99 |
100 | @utils-vertical-center;
101 | }
102 | @e innerText {
103 | display: inline-block;
104 | vertical-align: middle;
105 | color: #fff;
106 | font-size: 12px;
107 | margin: 0 5px;
108 | }
109 | }
110 | }
111 |
112 | @keyframes progress {
113 | 0% {
114 | background-position: 0 0;
115 | }
116 | 100% {
117 | background-position: 32px 0;
118 | }
119 | }
120 |
--------------------------------------------------------------------------------
/element-theme-default/lib/radio.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-radio-button__inner,.el-radio__input{line-height:1;vertical-align:middle;outline:0}.el-radio,.el-radio__inner,.el-radio__input{position:relative;cursor:pointer}.el-radio-button__inner,.el-radio__inner{border:1px solid #c0ccda;box-sizing:border-box}.el-radio,.el-radio-button__inner{display:inline-block;white-space:nowrap;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.el-radio{color:#1f2d3d}.el-radio+.el-radio{margin-left:15px}.el-radio__input{white-space:nowrap;display:inline-block}.el-radio__inner{width:18px;height:18px;border-radius:50%;background-color:#fff;display:inline-block}.el-radio__inner:not(.is-disabled):hover{border-color:#20a0ff}.el-radio__inner::after{width:6px;height:6px;border-radius:50%;background-color:#fff;content:"";position:absolute;left:50%;top:50%;-ms-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0);transition:transform .15s cubic-bezier(.71,-.46,.88,.6)}.el-radio__inner.is-disabled.is-checked{background-color:#D3DCE6;border-color:#D3DCE6}.el-radio__inner.is-disabled.is-checked::after{background-color:#fff}.el-radio__inner.is-focus{border-color:#20a0ff}.el-radio__inner.is-checked{border-color:#20a0ff;background:#20a0ff}.el-radio__inner.is-disabled,.el-radio__inner.is-disabled::after{background-color:#EFF2F7;cursor:not-allowed}.el-radio__inner.is-checked::after{-ms-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}.el-radio__inner.is-disabled{border-color:#D3DCE6}.el-radio__inner.is-disabled+.el-radio__label{cursor:not-allowed}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio__label{font-size:14px;padding-left:5px}.el-radio-group{display:inline-block;font-size:0;line-height:1}.el-radio-group .el-radio{font-size:14px}.el-radio-button{position:relative;overflow:hidden;display:inline-block}.el-radio-button:not(:last-child){margin-right:-1px}.el-radio-button:first-child .el-radio-button__inner{border-radius:4px 0 0 4px}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 4px 4px 0}.el-radio-button__inner{background:#fff;color:#1F2D3D;-webkit-appearance:none;text-align:center;margin:0;position:relative;cursor:pointer;transition:all .3s cubic-bezier(.645,.045,.355,1);padding:10px 15px;font-size:14px;border-radius:0}.el-radio-button__inner:hover{color:#20a0ff}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button__orig-radio{opacity:0;outline:0;position:absolute;z-index:-1;left:-999px}.el-radio-button__orig-radio:disabled+.el-radio-button__inner{color:#c0ccda;cursor:not-allowed;background-image:none;background-color:#EFF2F7;border-color:#D3DCE6}.el-radio-button--large .el-radio-button__inner{padding:11px 19px;font-size:16px;border-radius:0}.el-radio-button--small .el-radio-button__inner{padding:7px 9px;font-size:12px;border-radius:0}.el-radio-button--mini .el-radio-button__inner{padding:4px;font-size:12px;border-radius:0}
--------------------------------------------------------------------------------
/src/theme/card.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | :root{
3 | /* Transition
4 | -------------------------- */
5 | /* Colors drak
6 | -------------------------- */
7 | /* Colors tin
8 | -------------------------- */
9 | /* Colors
10 | -------------------------- */
11 | /* Background color
12 | -------------------------- */
13 | /* Border
14 | -------------------------- */
15 | /* Box-shadow
16 | -------------------------- */
17 | /* Fill
18 | -------------------------- */
19 | /* Font
20 | -------------------------- */
21 | /* Size
22 | -------------------------- */
23 | /* z-index
24 | -------------------------- */
25 | /* Disable base
26 | -------------------------- */
27 | /* Icon
28 | -------------------------- */
29 | /* Checkbox
30 | -------------------------- */
31 | /* Radio
32 | -------------------------- */
33 | /* Select
34 | -------------------------- */
35 | /* Alert
36 | -------------------------- */
37 | /* Message Box
38 | -------------------------- */
39 | /* Message
40 | -------------------------- */
41 | /* Notification
42 | -------------------------- */
43 | /* Input
44 | -------------------------- */
45 | /* Cascader
46 | -------------------------- */
47 | /* Group
48 | -------------------------- */
49 | /* Tab
50 | -------------------------- */
51 | /* Button
52 | -------------------------- */
53 | /* cascader
54 | -------------------------- */
55 | /* Switch
56 | -------------------------- */
57 | /* Dialog
58 | -------------------------- */
59 | /* Table
60 | -------------------------- */
61 | /* Pagination
62 | -------------------------- */
63 | /* Popover
64 | -------------------------- */
65 | /* Tooltip
66 | -------------------------- */
67 | /* Tag
68 | -------------------------- */
69 | /* Dropdown
70 | -------------------------- */
71 | /* Badge
72 | -------------------------- */
73 | /* Card
74 | --------------------------*/
75 | /* Slider
76 | --------------------------*/
77 | /* Steps
78 | --------------------------*/
79 | /* NavMenu
80 | --------------------------*/
81 | /* Tabs
82 | --------------------------*/
83 | /* Rate
84 | --------------------------*/
85 | /* DatePicker
86 | --------------------------*/
87 | /* Loading
88 | --------------------------*/
89 | /* Breadcrumd
90 | --------------------------*/
91 | /* Form
92 | --------------------------*/
93 | }
94 |
95 | .el-card{
96 | border: 1px solid #d9d9d9;
97 | border-radius: 2px;
98 | background-color: #fff;
99 | overflow: hidden;
100 | box-shadow: none
101 | }
102 |
103 | .el-card__header{
104 | padding: 10px 20px;
105 | border-bottom: 1px solid #d9d9d9;
106 | box-sizing: border-box
107 | }
108 |
109 | .el-card__body{
110 | padding: 20px
111 | }
112 |
--------------------------------------------------------------------------------
/element-theme-default/src/date-picker/picker-panel.css:
--------------------------------------------------------------------------------
1 | @import "../common/var.css";
2 |
3 | @component-namespace el {
4 | @b picker-panel {
5 | color: var(--datepicker-color);
6 | border: 1px solid var(--datepicker-border-color);
7 | box-shadow: 0 2px 6px #ccc;
8 | background: #fff;
9 | border-radius: 2px;
10 | line-height: 20px;
11 | margin: 5px 0;
12 |
13 | @e body, body-wrapper {
14 | &::after {
15 | content: "";
16 | display: table;
17 | clear: both;
18 | }
19 | }
20 |
21 | @e content {
22 | position: relative;
23 | margin: 15px;
24 | }
25 |
26 | @e footer {
27 | border-top: 1px solid var(--datepicker-inner-border-color);
28 | padding: 4px;
29 | text-align: right;
30 | background-color: #fff;
31 | position: relative;
32 | }
33 |
34 | @e shortcut {
35 | display: block;
36 | width: 100%;
37 | border: 0;
38 | background-color: transparent;
39 | line-height: 28px;
40 | font-size: 14px;
41 | color: var(--datepicker-color);
42 | padding-left: 12px;
43 | text-align: left;
44 | outline: none;
45 | cursor: pointer;
46 |
47 | &:hover {
48 | background-color: var(--datepicker-cell-hover-color);
49 | }
50 |
51 | &.active {
52 | background-color: #e6f1fe;
53 | color: var(--datepicker-active-color);
54 | }
55 | }
56 |
57 | @e btn {
58 | border: 1px solid #dcdcdc;
59 | color: #333;
60 | line-height: 24px;
61 | border-radius: 2px;
62 | padding: 0 20px;
63 | cursor: pointer;
64 | background-color: transparent;
65 | outline: none;
66 | font-size: 12px;
67 |
68 | &[disabled] {
69 | color: #cccccc;
70 | cursor: not-allowed;
71 | }
72 | }
73 |
74 | @e icon-btn {
75 | font-size: 12px;
76 | color: var(--datepicker-icon-color);
77 | border: 0;
78 | background: transparent;
79 | cursor: pointer;
80 | outline: none;
81 | margin-top: 3px;
82 |
83 | &:hover {
84 | color: var(--datepicker-text-hover-color);
85 | }
86 | }
87 |
88 | @e link-btn {
89 | cursor: pointer;
90 | color: var(--color-primary);
91 | text-decoration: none;
92 | padding: 15px;
93 | font-size: 12px;
94 | }
95 | }
96 |
97 | .el-picker-panel *[slot=sidebar],
98 | .el-picker-panel__sidebar {
99 | position: absolute;
100 | top: 0;
101 | bottom: 0;
102 | width: 110px;
103 | border-right: 1px solid var(--datepicker-inner-border-color);
104 | box-sizing: border-box;
105 | padding-top: 6px;
106 | background-color: #f9fafc;
107 | }
108 |
109 | .el-picker-panel *[slot=sidebar] + .el-picker-panel__body,
110 | .el-picker-panel__sidebar + .el-picker-panel__body {
111 | margin-left: 110px;
112 | }
113 | }
114 |
--------------------------------------------------------------------------------
/src/theme/option-group.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | :root{
3 | /* Transition
4 | -------------------------- */
5 | /* Colors drak
6 | -------------------------- */
7 | /* Colors tin
8 | -------------------------- */
9 | /* Colors
10 | -------------------------- */
11 | /* Background color
12 | -------------------------- */
13 | /* Border
14 | -------------------------- */
15 | /* Box-shadow
16 | -------------------------- */
17 | /* Fill
18 | -------------------------- */
19 | /* Font
20 | -------------------------- */
21 | /* Size
22 | -------------------------- */
23 | /* z-index
24 | -------------------------- */
25 | /* Disable base
26 | -------------------------- */
27 | /* Icon
28 | -------------------------- */
29 | /* Checkbox
30 | -------------------------- */
31 | /* Radio
32 | -------------------------- */
33 | /* Select
34 | -------------------------- */
35 | /* Alert
36 | -------------------------- */
37 | /* Message Box
38 | -------------------------- */
39 | /* Message
40 | -------------------------- */
41 | /* Notification
42 | -------------------------- */
43 | /* Input
44 | -------------------------- */
45 | /* Cascader
46 | -------------------------- */
47 | /* Group
48 | -------------------------- */
49 | /* Tab
50 | -------------------------- */
51 | /* Button
52 | -------------------------- */
53 | /* cascader
54 | -------------------------- */
55 | /* Switch
56 | -------------------------- */
57 | /* Dialog
58 | -------------------------- */
59 | /* Table
60 | -------------------------- */
61 | /* Pagination
62 | -------------------------- */
63 | /* Popover
64 | -------------------------- */
65 | /* Tooltip
66 | -------------------------- */
67 | /* Tag
68 | -------------------------- */
69 | /* Dropdown
70 | -------------------------- */
71 | /* Badge
72 | -------------------------- */
73 | /* Card
74 | --------------------------*/
75 | /* Slider
76 | --------------------------*/
77 | /* Steps
78 | --------------------------*/
79 | /* NavMenu
80 | --------------------------*/
81 | /* Tabs
82 | --------------------------*/
83 | /* Rate
84 | --------------------------*/
85 | /* DatePicker
86 | --------------------------*/
87 | /* Loading
88 | --------------------------*/
89 | /* Breadcrumd
90 | --------------------------*/
91 | /* Form
92 | --------------------------*/
93 | }
94 |
95 | .el-select-group{
96 | margin: 0;
97 | padding: 0
98 | }
99 |
100 | .el-select-group .el-select-dropdown__item{
101 | padding-left: 20px
102 | }
103 |
104 | .el-select-group__wrap{
105 | list-style: none;
106 | margin: 0;
107 | padding: 0
108 | }
109 |
110 | .el-select-group__title{
111 | padding-left: 10px;
112 | font-size: 12px;
113 | color: #999;
114 | height: 30px;
115 | line-height: 30px
116 | }
117 |
--------------------------------------------------------------------------------
/element-theme-default/src/tag.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | @import "./common/var.css";
3 |
4 | @component-namespace el {
5 |
6 | @b tag {
7 | background-color: var(--tag-fill);
8 | display: inline-block;
9 | padding: var(--tag-padding);
10 | height: 24px;
11 | line-height: calc(@height - 2);
12 | font-size: var(--tag-font-size);
13 | color: var(--tag-color);
14 | border-radius: var(--tag-border-radius);
15 | box-sizing: border-box;
16 | border: 1px solid transparent;
17 |
18 | & .el-icon-close {
19 | border-radius: 50%;
20 | text-align: center;
21 | position: relative;
22 | cursor: pointer;
23 | font-size: 12px;
24 | transform: scale(.75, .75);
25 | height: 18px;
26 | width: 18px;
27 | line-height: 18px;
28 | vertical-align: middle;
29 | top: -1px;
30 | right: -2px;
31 |
32 | &:hover {
33 | background-color: #fff;
34 | color: var(--tag-fill);
35 | }
36 | }
37 |
38 | @m gray {
39 | background-color: var(--tag-gray-fill);
40 | border-color: var(--tag-gray-border);
41 | color: var(--tag-gray-color);
42 | @when hit {
43 | border-color: var(--tag-gray-color);
44 | }
45 |
46 | & .el-tag__close:hover {
47 | background-color: var(--tag-gray-color);
48 | color: #fff;
49 | }
50 | }
51 | @m primary {
52 | background-color: var(--tag-primary-fill);
53 | border-color: var(--tag-primary-border);
54 | color: var(--tag-primary-color);
55 | @when hit {
56 | border-color: var(--tag-primary-color);
57 | }
58 |
59 | & .el-tag__close:hover {
60 | background-color: var(--tag-primary-color);
61 | color: #fff;
62 | }
63 | }
64 | @m success {
65 | background-color: var(--tag-success-fill);
66 | border-color: var(--tag-success-border);
67 | color: var(--tag-success-color);
68 | @when hit {
69 | border-color: var(--tag-success-color);
70 | }
71 |
72 | & .el-tag__close:hover {
73 | background-color: var(--tag-success-color);
74 | color: #fff;
75 | }
76 | }
77 | @m warning {
78 | background-color: var(--tag-warning-fill);
79 | border-color: var(--tag-warning-border);
80 | color: var(--tag-warning-color);
81 | @when hit {
82 | border-color: var(--tag-warning-color);
83 | }
84 |
85 | & .el-tag__close:hover {
86 | background-color: var(--tag-warning-color);
87 | color: #fff;
88 | }
89 | }
90 | @m danger {
91 | background-color: var(--tag-danger-fill);
92 | border-color: var(--tag-danger-border);
93 | color: var(--tag-danger-color);
94 | @when hit {
95 | border-color: var(--tag-danger-color);
96 | }
97 |
98 | & .el-tag__close:hover {
99 | background-color: var(--tag-danger-color);
100 | color: #fff;
101 | }
102 | }
103 | }
104 | }
105 |
--------------------------------------------------------------------------------
/src/view/NavMenu.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
68 |
69 |
70 |
71 |
75 |
76 |
78 |
--------------------------------------------------------------------------------
/src/view/Form.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
61 |
62 |
63 |
64 |
88 |
89 |
91 |
--------------------------------------------------------------------------------
/element-theme-default/lib/menu.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-menu,.el-menu li{list-style:none}.el-menu:after,.el-menu:before{display:table;content:""}.el-menu:after{clear:both}.el-menu-item,.el-submenu__title{height:56px;line-height:56px;font-size:14px;color:#475669;padding:0 20px;cursor:pointer;position:relative;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box;white-space:nowrap}.el-menu{border-radius:2px;position:relative;margin:0;padding-left:0;background-color:#eff2f7}.el-menu--dark{background-color:#324057}.el-menu--dark .el-menu-item,.el-menu--dark .el-submenu__title{color:#c0ccda}.el-menu--dark .el-menu-item:hover,.el-menu--dark .el-submenu__title:hover{background-color:#475669}.el-menu--dark .el-submenu .el-menu{background-color:#1f2f3d}.el-menu--dark .el-submenu .el-menu .el-menu-item:hover{background-color:#475669}.el-menu--horizontal .el-menu-item{float:left;height:60px;line-height:60px;margin:0;cursor:pointer;position:relative;box-sizing:border-box;border-bottom:5px solid transparent}.el-menu--horizontal .el-submenu{float:left;position:relative}.el-menu--horizontal .el-submenu>.el-menu{position:absolute;top:65px;left:0;border:1px solid #d3dce6;padding:5px 0;background-color:#fff;z-index:100;min-width:100%;box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-menu--horizontal .el-submenu .el-submenu__title{height:60px;line-height:60px;border-bottom:5px solid transparent}.el-menu--horizontal .el-submenu .el-menu-item{background-color:#fff;float:none;height:36px;line-height:36px;padding:0 10px}.el-menu--horizontal .el-submenu .el-submenu__icon-arrow{position:static;vertical-align:middle;margin-left:5px;color:#99a9bf;margin-top:-3px}.el-menu--horizontal .el-menu-item:hover,.el-menu--horizontal .el-submenu__title:hover{background-color:#eff2f7}.el-menu--horizontal>.el-menu-item:hover,.el-menu--horizontal>.el-submenu.is-active .el-submenu__title,.el-menu--horizontal>.el-submenu:hover .el-submenu__title{border-bottom:5px solid #20a0ff}.el-menu--horizontal.el-menu--dark .el-menu-item:hover,.el-menu--horizontal.el-menu--dark .el-submenu__title:hover{background-color:#324057}.el-menu--horizontal.el-menu--dark .el-submenu .el-menu-item:hover,.el-menu--horizontal.el-menu--dark .el-submenu .el-submenu-title:hover,.el-menu-item:hover{background-color:#d3dce6}.el-menu--horizontal.el-menu--dark .el-submenu .el-menu-item,.el-menu--horizontal.el-menu--dark .el-submenu .el-submenu-title{color:#475669}.el-menu--horizontal.el-menu--dark .el-submenu .el-menu-item.is-active,.el-menu-item.is-active{color:#20a0ff}.el-menu-item [class^=el-icon-]{vertical-align:baseline;margin-right:10px}.el-menu-item:first-child{margin-left:0}.el-menu-item:last-child{margin-right:0}.el-submenu [class^=el-icon-]{vertical-align:baseline;margin-right:10px}.el-submenu .el-menu{background-color:#e5e9f2}.el-submenu .el-menu-item:hover,.el-submenu__title:hover{background-color:#d3dce6}.el-submenu .el-menu-item{height:50px;line-height:50px;padding:0 45px}.el-submenu.is-opened .el-submenu__icon-arrow{-ms-transform:rotate(180deg);transform:rotateZ(180deg)}.el-submenu.is-active .el-submenu__title{border-bottom-color:#20a0ff}.el-submenu__title{position:relative}.el-submenu__icon-arrow{position:absolute;top:50%;right:20px;margin-top:-7px;transition:transform .3s;font-size:12px}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding-top:15px;line-height:normal;font-size:14px;padding-left:20px;color:#99a9bf}
--------------------------------------------------------------------------------
/element-theme-default/lib/time-picker.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-fade-in-enter,.el-fade-in-leave-active,.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:opacity .2s linear}.el-fade-in-enter-active,.el-fade-in-leave-active,.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-ms-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-ms-transform:scaleY(1);transform:scaleY(1);transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s;-ms-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-ms-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-ms-transform:scaleY(1);transform:scaleY(1);transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s;-ms-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-ms-transform:scaleY(0);transform:scaleY(0)}.el-date-editor{position:relative;display:inline-block}.el-date-editor .el-picker-panel{position:absolute;min-width:180px;box-sizing:border-box;box-shadow:0 2px 6px #ccc;background:#fff;z-index:10;top:41px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.33333%}.el-time-spinner__wrapper{height:190px;overflow:hidden;display:inline-block;width:50%;vertical-align:top;position:relative;-ms-overflow-style:none}.el-time-spinner__wrapper:hover{overflow-y:auto}.el-time-spinner__list{padding:0;margin:0;list-style:none;text-align:center}.el-time-spinner__list::after,.el-time-spinner__list::before{content:'';display:block;width:100%;height:80px}.el-time-spinner__item{height:32px;line-height:32px;font-size:12px}.el-time-spinner__item:hover:not(.disabled):not(.active){background:#e5e9f2;cursor:pointer}.el-time-spinner__item.active:not(.disabled){color:#fff}.el-time-spinner__item.disabled{color:#D3DCE6;cursor:not-allowed}.el-time-panel{margin:5px 0;border:1px solid #D3DCE6;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.04);border-radius:2px;position:absolute;width:180px;left:0;z-index:1000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content::after,.el-time-panel__content::before{content:":";top:50%;color:#fff;position:absolute;font-size:14px;margin-top:-15px;line-height:16px;background-color:#20a0ff;height:32px;z-index:-1;left:0;right:0;box-sizing:border-box;padding-top:6px;text-align:left}.el-time-panel__content::after{left:50%;margin-left:-2px}.el-time-panel__content::before{padding-left:50%;margin-right:-2px}.el-time-panel__content.has-seconds::after{left:66.66667%}.el-time-panel__content.has-seconds::before{padding-left:33.33333%}.el-time-panel__footer{border-top:1px solid #e4e4e4;padding:4px;height:36px;line-height:25px;text-align:right;box-sizing:border-box}.el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:#8492a6}.el-time-panel__btn.confirm{font-weight:800;color:#20a0ff}
--------------------------------------------------------------------------------
/src/theme/icon.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: 'element-icons';
3 | src: url('fonts/element-icons.eot?t=1472440741'); /* IE9*/
4 | src: url('fonts/element-icons.woff?t=1472440741') format('woff'), /* chrome, firefox */
5 | url('fonts/element-icons.ttf?t=1472440741') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
6 | url('fonts/element-icons.svg?t=1472440741#el-icon') format('svg'); /* iOS 4.1- */
7 | font-weight: 400;
8 | font-style: normal;
9 | }
10 |
11 | [class^="el-icon-"], [class*=" el-icon-"] {
12 | /* use !important to prevent issues with browser extensions that change fonts */
13 | font-family: 'element-icons' !important;
14 | speak: none;
15 | font-style: normal;
16 | font-weight: 400;
17 | font-variant: normal;
18 | text-transform: none;
19 | line-height: 1;
20 | vertical-align: baseline;
21 | display: inline-block;
22 |
23 | /* Better Font Rendering =========== */
24 | -webkit-font-smoothing: antialiased;
25 | -moz-osx-font-smoothing: grayscale;
26 | }
27 |
28 | .el-icon-arrow-down:before { content: "\e600"; }
29 | .el-icon-arrow-left:before { content: "\e601"; }
30 | .el-icon-arrow-right:before { content: "\e602"; }
31 | .el-icon-arrow-up:before { content: "\e603"; }
32 | .el-icon-caret-bottom:before { content: "\e604"; }
33 | .el-icon-caret-left:before { content: "\e605"; }
34 | .el-icon-caret-right:before { content: "\e606"; }
35 | .el-icon-caret-top:before { content: "\e607"; }
36 | .el-icon-check:before { content: "\e608"; }
37 | .el-icon-circle-check:before { content: "\e609"; }
38 | .el-icon-circle-close:before { content: "\e60a"; }
39 | .el-icon-circle-cross:before { content: "\e60b"; }
40 | .el-icon-close:before { content: "\e60c"; }
41 | .el-icon-upload:before { content: "\e60d"; }
42 | .el-icon-d-arrow-left:before { content: "\e60e"; }
43 | .el-icon-d-arrow-right:before { content: "\e60f"; }
44 | .el-icon-d-caret:before { content: "\e610"; }
45 | .el-icon-date:before { content: "\e611"; }
46 | .el-icon-delete:before { content: "\e612"; }
47 | .el-icon-document:before { content: "\e613"; }
48 | .el-icon-edit:before { content: "\e614"; }
49 | .el-icon-information:before { content: "\e615"; }
50 | .el-icon-loading:before { content: "\e616"; }
51 | .el-icon-menu:before { content: "\e617"; }
52 | .el-icon-message:before { content: "\e618"; }
53 | .el-icon-minus:before { content: "\e619"; }
54 | .el-icon-more:before { content: "\e61a"; }
55 | .el-icon-picture:before { content: "\e61b"; }
56 | .el-icon-plus:before { content: "\e61c"; }
57 | .el-icon-search:before { content: "\e61d"; }
58 | .el-icon-setting:before { content: "\e61e"; }
59 | .el-icon-share:before { content: "\e61f"; }
60 | .el-icon-star-off:before { content: "\e620"; }
61 | .el-icon-star-on:before { content: "\e621"; }
62 | .el-icon-time:before { content: "\e622"; }
63 | .el-icon-warning:before { content: "\e623"; }
64 | .el-icon-delete2:before { content: "\e624"; }
65 | .el-icon-upload2:before { content: "\e627"; }
66 | .el-icon-view:before { content: "\e626"; }
67 |
68 | .el-icon-loading {
69 | animation: rotating 1s linear infinite;
70 | }
71 |
72 | .el-icon--right {
73 | margin-left: 5px;
74 | }
75 | .el-icon--left {
76 | margin-right: 5px;
77 | }
78 |
79 | @keyframes rotating {
80 | 0% {
81 | transform: rotateZ(0deg);
82 | }
83 | 100% {
84 | transform: rotateZ(360deg);
85 | }
86 | }
87 |
--------------------------------------------------------------------------------
/src/theme/spinner.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | :root{
3 | /* Transition
4 | -------------------------- */
5 | /* Colors drak
6 | -------------------------- */
7 | /* Colors tin
8 | -------------------------- */
9 | /* Colors
10 | -------------------------- */
11 | /* Background color
12 | -------------------------- */
13 | /* Border
14 | -------------------------- */
15 | /* Box-shadow
16 | -------------------------- */
17 | /* Fill
18 | -------------------------- */
19 | /* Font
20 | -------------------------- */
21 | /* Size
22 | -------------------------- */
23 | /* z-index
24 | -------------------------- */
25 | /* Disable base
26 | -------------------------- */
27 | /* Icon
28 | -------------------------- */
29 | /* Checkbox
30 | -------------------------- */
31 | /* Radio
32 | -------------------------- */
33 | /* Select
34 | -------------------------- */
35 | /* Alert
36 | -------------------------- */
37 | /* Message Box
38 | -------------------------- */
39 | /* Message
40 | -------------------------- */
41 | /* Notification
42 | -------------------------- */
43 | /* Input
44 | -------------------------- */
45 | /* Cascader
46 | -------------------------- */
47 | /* Group
48 | -------------------------- */
49 | /* Tab
50 | -------------------------- */
51 | /* Button
52 | -------------------------- */
53 | /* cascader
54 | -------------------------- */
55 | /* Switch
56 | -------------------------- */
57 | /* Dialog
58 | -------------------------- */
59 | /* Table
60 | -------------------------- */
61 | /* Pagination
62 | -------------------------- */
63 | /* Popover
64 | -------------------------- */
65 | /* Tooltip
66 | -------------------------- */
67 | /* Tag
68 | -------------------------- */
69 | /* Dropdown
70 | -------------------------- */
71 | /* Badge
72 | -------------------------- */
73 | /* Card
74 | --------------------------*/
75 | /* Slider
76 | --------------------------*/
77 | /* Steps
78 | --------------------------*/
79 | /* NavMenu
80 | --------------------------*/
81 | /* Tabs
82 | --------------------------*/
83 | /* Rate
84 | --------------------------*/
85 | /* DatePicker
86 | --------------------------*/
87 | /* Loading
88 | --------------------------*/
89 | /* Breadcrumd
90 | --------------------------*/
91 | /* Form
92 | --------------------------*/
93 | }
94 |
95 | .el-time-spinner{
96 | width: 100%;
97 | white-space: nowrap;
98 | }
99 |
100 | .el-spinner{
101 | display: inline-block;
102 | vertical-align: middle;
103 | }
104 |
105 | .el-spinner-inner{
106 | animation: rotate 2s linear infinite;
107 | width: 50px;
108 | height: 50px;
109 | }
110 |
111 | .el-spinner-inner .path{
112 | stroke: #ececec;
113 | stroke-linecap: round;
114 | animation: dash 1.5s ease-in-out infinite;
115 | }
116 | @keyframes rotate {
117 | 100% {
118 | transform: rotate(360deg);
119 | }
120 | }
121 |
122 | @keyframes dash {
123 | 0% {
124 | stroke-dasharray: 1, 150;
125 | stroke-dashoffset: 0;
126 | }
127 | 50% {
128 | stroke-dasharray: 90, 150;
129 | stroke-dashoffset: -35;
130 | }
131 | 100% {
132 | stroke-dasharray: 90, 150;
133 | stroke-dashoffset: -124;
134 | }
135 | }
136 |
--------------------------------------------------------------------------------
/element-theme-default/src/icon.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: 'element-icons';
3 | src: url('fonts/element-icons.eot?t=1472440741'); /* IE9*/
4 | src: url('fonts/element-icons.woff?t=1472440741') format('woff'), /* chrome, firefox */
5 | url('fonts/element-icons.ttf?t=1472440741') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
6 | url('fonts/element-icons.svg?t=1472440741#el-icon') format('svg'); /* iOS 4.1- */
7 | font-weight: normal;
8 | font-style: normal;
9 | }
10 |
11 | [class^="el-icon-"], [class*=" el-icon-"] {
12 | /* use !important to prevent issues with browser extensions that change fonts */
13 | font-family: 'element-icons' !important;
14 | speak: none;
15 | font-style: normal;
16 | font-weight: normal;
17 | font-variant: normal;
18 | text-transform: none;
19 | line-height: 1;
20 | vertical-align: baseline;
21 | display: inline-block;
22 |
23 | /* Better Font Rendering =========== */
24 | -webkit-font-smoothing: antialiased;
25 | -moz-osx-font-smoothing: grayscale;
26 | }
27 |
28 | .el-icon-arrow-down:before { content: "\e600"; }
29 | .el-icon-arrow-left:before { content: "\e601"; }
30 | .el-icon-arrow-right:before { content: "\e602"; }
31 | .el-icon-arrow-up:before { content: "\e603"; }
32 | .el-icon-caret-bottom:before { content: "\e604"; }
33 | .el-icon-caret-left:before { content: "\e605"; }
34 | .el-icon-caret-right:before { content: "\e606"; }
35 | .el-icon-caret-top:before { content: "\e607"; }
36 | .el-icon-check:before { content: "\e608"; }
37 | .el-icon-circle-check:before { content: "\e609"; }
38 | .el-icon-circle-close:before { content: "\e60a"; }
39 | .el-icon-circle-cross:before { content: "\e60b"; }
40 | .el-icon-close:before { content: "\e60c"; }
41 | .el-icon-upload:before { content: "\e60d"; }
42 | .el-icon-d-arrow-left:before { content: "\e60e"; }
43 | .el-icon-d-arrow-right:before { content: "\e60f"; }
44 | .el-icon-d-caret:before { content: "\e610"; }
45 | .el-icon-date:before { content: "\e611"; }
46 | .el-icon-delete:before { content: "\e612"; }
47 | .el-icon-document:before { content: "\e613"; }
48 | .el-icon-edit:before { content: "\e614"; }
49 | .el-icon-information:before { content: "\e615"; }
50 | .el-icon-loading:before { content: "\e616"; }
51 | .el-icon-menu:before { content: "\e617"; }
52 | .el-icon-message:before { content: "\e618"; }
53 | .el-icon-minus:before { content: "\e619"; }
54 | .el-icon-more:before { content: "\e61a"; }
55 | .el-icon-picture:before { content: "\e61b"; }
56 | .el-icon-plus:before { content: "\e61c"; }
57 | .el-icon-search:before { content: "\e61d"; }
58 | .el-icon-setting:before { content: "\e61e"; }
59 | .el-icon-share:before { content: "\e61f"; }
60 | .el-icon-star-off:before { content: "\e620"; }
61 | .el-icon-star-on:before { content: "\e621"; }
62 | .el-icon-time:before { content: "\e622"; }
63 | .el-icon-warning:before { content: "\e623"; }
64 | .el-icon-delete2:before { content: "\e624"; }
65 | .el-icon-upload2:before { content: "\e627"; }
66 | .el-icon-view:before { content: "\e626"; }
67 |
68 | .el-icon-loading {
69 | animation: rotating 1s linear infinite;
70 | }
71 |
72 | .el-icon--right {
73 | margin-left: 5px;
74 | }
75 | .el-icon--left {
76 | margin-right: 5px;
77 | }
78 |
79 | @keyframes rotating {
80 | 0% {
81 | transform: rotateZ(0deg);
82 | }
83 | 100% {
84 | transform: rotateZ(360deg);
85 | }
86 | }
87 |
--------------------------------------------------------------------------------
/element-theme/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_args": [
3 | [
4 | "element-theme@^0.2.0",
5 | "/Users/mro/coding/making-element-ui"
6 | ]
7 | ],
8 | "_from": "element-theme@>=0.2.0 <0.3.0",
9 | "_id": "element-theme@0.2.0",
10 | "_inCache": true,
11 | "_installable": true,
12 | "_location": "/element-theme",
13 | "_nodeVersion": "5.8.0",
14 | "_npmOperationalInternal": {
15 | "host": "packages-18-east.internal.npmjs.com",
16 | "tmp": "tmp/element-theme-0.2.0.tgz_1478405420120_0.41263557970523834"
17 | },
18 | "_npmUser": {
19 | "email": "cinwell.li@gmail.com",
20 | "name": "qingwei.li"
21 | },
22 | "_npmVersion": "3.7.3",
23 | "_phantomChildren": {},
24 | "_requested": {
25 | "name": "element-theme",
26 | "raw": "element-theme@^0.2.0",
27 | "rawSpec": "^0.2.0",
28 | "scope": null,
29 | "spec": ">=0.2.0 <0.3.0",
30 | "type": "range"
31 | },
32 | "_requiredBy": [
33 | "#DEV:/"
34 | ],
35 | "_resolved": "https://registry.npmjs.org/element-theme/-/element-theme-0.2.0.tgz",
36 | "_shasum": "3552e20f8eeec7b1c9318b8ad7847643b2ddb515",
37 | "_shrinkwrap": null,
38 | "_spec": "element-theme@^0.2.0",
39 | "_where": "/Users/mro/coding/making-element-ui",
40 | "author": {
41 | "email": "cinwell.li@gmail.com",
42 | "name": "qingwei-li",
43 | "url": "https://github.com/QingWei-Li"
44 | },
45 | "bin": {
46 | "element-theme": "./bin/element-theme",
47 | "et": "./bin/element-theme"
48 | },
49 | "bugs": {
50 | "url": "https://github.com/ElementUI/element-theme/issues"
51 | },
52 | "dependencies": {
53 | "commander": "^2.9.0",
54 | "gulp": "^3.9.1",
55 | "gulp-cssmin": "^0.1.7",
56 | "gulp-nop": "0.0.3",
57 | "gulp-postcss": "^6.2.0",
58 | "ora": "^0.3.0",
59 | "postcss-salad": "^1.0.5"
60 | },
61 | "description": "Theme generator cli tool for Element",
62 | "devDependencies": {
63 | "element-theme-default": "git+https://github.com/ElementUI/theme-default.git",
64 | "xo": "^0.17.0"
65 | },
66 | "directories": {},
67 | "dist": {
68 | "shasum": "3552e20f8eeec7b1c9318b8ad7847643b2ddb515",
69 | "tarball": "https://registry.npmjs.org/element-theme/-/element-theme-0.2.0.tgz"
70 | },
71 | "engines": {
72 | "node": ">=0.12.0"
73 | },
74 | "files": [
75 | "bin",
76 | "lib"
77 | ],
78 | "gitHead": "a2f090786ecf22cd3dc0a7811171cf59cb55ce97",
79 | "homepage": "https://github.com/ElementUI/element-theme#readme",
80 | "keywords": [
81 | "element-ui",
82 | "vue",
83 | "theme",
84 | "cli"
85 | ],
86 | "license": "MIT",
87 | "main": "index.js",
88 | "maintainers": [
89 | {
90 | "email": "cinwell.li@gmail.com",
91 | "name": "qingwei.li"
92 | }
93 | ],
94 | "name": "element-theme",
95 | "optionalDependencies": {},
96 | "peerDependencies": {
97 | "element-theme-default": "*"
98 | },
99 | "readme": "ERROR: No README data found!",
100 | "repository": {
101 | "type": "git",
102 | "url": "git+ssh://git@github.com/ElementUI/element-theme.git"
103 | },
104 | "scripts": {
105 | "test": "xo"
106 | },
107 | "version": "0.2.0",
108 | "xo": {
109 | "rule": {
110 | "import/no-dynamic-require": 0,
111 | "semi": 0,
112 | "unicorn/no-process-exit": 0
113 | },
114 | "space": true
115 | }
116 | }
117 |
--------------------------------------------------------------------------------
/element-theme-default/src/switch.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | @import "./common/var.css";
3 |
4 | @component-namespace el {
5 |
6 | @b switch {
7 | display: inline-block;
8 | position: relative;
9 | font-size: var(--switch-font-size);
10 | line-height: var(--switch-height);
11 | @when disabled {
12 | & .el-switch__core,
13 | & .el-switch__label {
14 | cursor: not-allowed;
15 | }
16 | }
17 |
18 | @e label {
19 | transition: .2s;
20 | position: absolute;
21 | z-index: 10;
22 | size: var(--switch-width) var(--switch-height);
23 | left: 0;
24 | top: 0;
25 | display: inline-block;
26 | font-size: var(--switch-font-size);
27 | cursor: pointer;
28 | user-select: none;
29 | @m left {
30 | i {
31 | left: 6px;
32 | }
33 | }
34 | @m right {
35 | i {
36 | right: 6px;
37 | }
38 | }
39 | & * {
40 | line-height: 1;
41 | top: 4px;
42 | position: absolute;
43 | font-size: var(--switch-font-size);
44 | display: inline-block;
45 | color: var(--color-white);
46 | }
47 | }
48 |
49 | @e input {
50 | display: none;
51 | &:checked + .el-switch__core {
52 | border-color: var(--switch-on-color);
53 | background-color: var(--switch-on-color);
54 | }
55 | }
56 |
57 | @e core {
58 | margin: 0;
59 | display: inline-block;
60 | vertical-align: middle;
61 | position: relative;
62 | size: var(--switch-width) var(--switch-height);
63 | border: 1px solid var(--switch-off-color);
64 | outline: none;
65 | border-radius: var(--switch-core-border-radius);
66 | box-sizing: border-box;
67 | background: var(--switch-off-color);
68 | cursor: pointer;
69 | transition: border-color .3s, background-color .3s;
70 |
71 | & .el-switch__button {
72 | position: absolute 0 * * 0;
73 | border-radius: var(--border-radius-circle);
74 | transition: transform .3s;
75 | size: var(--switch-button-size);
76 | z-index: 20;
77 | background-color: var(--color-white);
78 | }
79 | }
80 |
81 | @when disabled {
82 | .el-switch__core {
83 | border-color: var(--switch-disabled-color) !important;
84 | background: var(--switch-disabled-color) !important;
85 |
86 | & span {
87 | background-color: var(--switch-disabled-text-color) !important;
88 | }
89 |
90 | & ~ .el-switch__label * {
91 | color: var(--switch-disabled-text-color) !important;
92 | }
93 | }
94 |
95 | .el-switch__input:checked + .el-switch__core {
96 | border-color: var(--switch-disabled-color);
97 | background-color: var(--switch-disabled-color);
98 | }
99 | }
100 |
101 | @modifier wide {
102 | .el-switch__label {
103 | &.el-switch__label--left {
104 | span {
105 | left: 10px;
106 | }
107 | }
108 | &.el-switch__label--right {
109 | span {
110 | right: 10px;
111 | }
112 | }
113 | }
114 | }
115 |
116 | & .label-fade-enter,
117 | & .label-fade-leave-active {
118 | opacity: 0;
119 | }
120 | }
121 | }
122 |
--------------------------------------------------------------------------------
/src/theme/rate.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | :root{
3 | /* Transition
4 | -------------------------- */
5 | /* Colors drak
6 | -------------------------- */
7 | /* Colors tin
8 | -------------------------- */
9 | /* Colors
10 | -------------------------- */
11 | /* Background color
12 | -------------------------- */
13 | /* Border
14 | -------------------------- */
15 | /* Box-shadow
16 | -------------------------- */
17 | /* Fill
18 | -------------------------- */
19 | /* Font
20 | -------------------------- */
21 | /* Size
22 | -------------------------- */
23 | /* z-index
24 | -------------------------- */
25 | /* Disable base
26 | -------------------------- */
27 | /* Icon
28 | -------------------------- */
29 | /* Checkbox
30 | -------------------------- */
31 | /* Radio
32 | -------------------------- */
33 | /* Select
34 | -------------------------- */
35 | /* Alert
36 | -------------------------- */
37 | /* Message Box
38 | -------------------------- */
39 | /* Message
40 | -------------------------- */
41 | /* Notification
42 | -------------------------- */
43 | /* Input
44 | -------------------------- */
45 | /* Cascader
46 | -------------------------- */
47 | /* Group
48 | -------------------------- */
49 | /* Tab
50 | -------------------------- */
51 | /* Button
52 | -------------------------- */
53 | /* cascader
54 | -------------------------- */
55 | /* Switch
56 | -------------------------- */
57 | /* Dialog
58 | -------------------------- */
59 | /* Table
60 | -------------------------- */
61 | /* Pagination
62 | -------------------------- */
63 | /* Popover
64 | -------------------------- */
65 | /* Tooltip
66 | -------------------------- */
67 | /* Tag
68 | -------------------------- */
69 | /* Dropdown
70 | -------------------------- */
71 | /* Badge
72 | -------------------------- */
73 | /* Card
74 | --------------------------*/
75 | /* Slider
76 | --------------------------*/
77 | /* Steps
78 | --------------------------*/
79 | /* NavMenu
80 | --------------------------*/
81 | /* Tabs
82 | --------------------------*/
83 | /* Rate
84 | --------------------------*/
85 | /* DatePicker
86 | --------------------------*/
87 | /* Loading
88 | --------------------------*/
89 | /* Breadcrumd
90 | --------------------------*/
91 | /* Form
92 | --------------------------*/
93 | }
94 |
95 | .el-rate{
96 | height: 20px;
97 | line-height: 1;
98 | }
99 |
100 | .el-rate__item{
101 | display: inline-block;
102 | position: relative;
103 | font-size: 0;
104 | vertical-align: middle;
105 | }
106 |
107 | .el-rate__icon{
108 | position: relative;
109 | display: inline-block;
110 | font-size: 18px;
111 | margin-right: 6px;
112 | color: #C6D1DE;
113 | transition: .3s;
114 | }
115 |
116 | .el-rate__icon .path2 {
117 | position: absolute;
118 | left: 0;
119 | top: 0;
120 | }
121 |
122 | .el-rate__icon.hover{
123 | transform: scale(1.15);
124 | }
125 |
126 | .el-rate__decimal{
127 | position: absolute;
128 | top: 0;
129 | left: 0;
130 | display: inline-block;
131 | overflow: hidden;
132 | }
133 |
134 | .el-rate__text{
135 | font-size: 12px;
136 | vertical-align: middle;
137 | }
138 |
--------------------------------------------------------------------------------
/src/theme/badge.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | :root{
3 | /* Transition
4 | -------------------------- */
5 | /* Colors drak
6 | -------------------------- */
7 | /* Colors tin
8 | -------------------------- */
9 | /* Colors
10 | -------------------------- */
11 | /* Background color
12 | -------------------------- */
13 | /* Border
14 | -------------------------- */
15 | /* Box-shadow
16 | -------------------------- */
17 | /* Fill
18 | -------------------------- */
19 | /* Font
20 | -------------------------- */
21 | /* Size
22 | -------------------------- */
23 | /* z-index
24 | -------------------------- */
25 | /* Disable base
26 | -------------------------- */
27 | /* Icon
28 | -------------------------- */
29 | /* Checkbox
30 | -------------------------- */
31 | /* Radio
32 | -------------------------- */
33 | /* Select
34 | -------------------------- */
35 | /* Alert
36 | -------------------------- */
37 | /* Message Box
38 | -------------------------- */
39 | /* Message
40 | -------------------------- */
41 | /* Notification
42 | -------------------------- */
43 | /* Input
44 | -------------------------- */
45 | /* Cascader
46 | -------------------------- */
47 | /* Group
48 | -------------------------- */
49 | /* Tab
50 | -------------------------- */
51 | /* Button
52 | -------------------------- */
53 | /* cascader
54 | -------------------------- */
55 | /* Switch
56 | -------------------------- */
57 | /* Dialog
58 | -------------------------- */
59 | /* Table
60 | -------------------------- */
61 | /* Pagination
62 | -------------------------- */
63 | /* Popover
64 | -------------------------- */
65 | /* Tooltip
66 | -------------------------- */
67 | /* Tag
68 | -------------------------- */
69 | /* Dropdown
70 | -------------------------- */
71 | /* Badge
72 | -------------------------- */
73 | /* Card
74 | --------------------------*/
75 | /* Slider
76 | --------------------------*/
77 | /* Steps
78 | --------------------------*/
79 | /* NavMenu
80 | --------------------------*/
81 | /* Tabs
82 | --------------------------*/
83 | /* Rate
84 | --------------------------*/
85 | /* DatePicker
86 | --------------------------*/
87 | /* Loading
88 | --------------------------*/
89 | /* Breadcrumd
90 | --------------------------*/
91 | /* Form
92 | --------------------------*/
93 | }
94 |
95 | .el-badge{
96 | position: relative;
97 | vertical-align: middle;
98 | display: inline-block
99 | }
100 |
101 | .el-badge__content{
102 | background-color: #f7ba2a;
103 | border-radius: 10px;
104 | color: #fff;
105 | display: inline-block;
106 | font-size: 12px;
107 | height: 18px;
108 | line-height: 18px;
109 | padding: 0 6px;
110 | text-align: center;
111 | white-space: nowrap;
112 | border: 1px solid #fff
113 | }
114 |
115 | .el-badge__content.is-dot{
116 | width: 8px;
117 | height: 8px;
118 | padding: 0;
119 | right: 0;
120 | border-radius: 50%
121 | }
122 |
123 | .el-badge__content.is-fixed{
124 | top: 0;
125 | right: 10px;
126 | position: absolute;
127 | transform: translateY(-50%) translateX(100%)
128 | }
129 |
130 | .el-badge__content.is-fixed.is-dot{
131 | right: 5px
132 | }
133 |
--------------------------------------------------------------------------------
/element-theme-default/lib/tabs.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-tabs__header:after,.el-tabs__header:before{display:table;content:""}.el-tabs__header:after{clear:both}.el-tabs{display:inline-block}.el-tabs__header{border-bottom:1px solid #d3dce6;padding:0;position:relative;margin:0 0 15px}.el-tabs__active-bar{position:absolute;bottom:0;left:0;width:100%;height:3px;background-color:#20a0ff;z-index:1;transition:transform .3s cubic-bezier(.645,.045,.355,1);list-style:none}.el-tabs--card .el-tabs__item.is-active.is-closable .el-icon-close,.el-tabs--card .el-tabs__item.is-closable:hover .el-icon-close{width:14px}.el-tabs--border-card .el-tabs__item,.el-tabs--card .el-tabs__item,.el-tabs__item .el-icon-close{transition:all .3s cubic-bezier(.645,.045,.355,1)}.el-tabs__item{padding:0 16px;height:42px;box-sizing:border-box;line-height:42px;float:left;list-style:none;font-size:14px;color:#8492a6;margin-bottom:-1px;position:relative}.el-tabs__item .el-icon-close{border-radius:50%;text-align:center;margin-left:5px}.el-tabs__item .el-icon-close:before{-ms-transform:scale(.7,.7);transform:scale(.7,.7);display:inline-block}.el-tabs__item .el-icon-close:hover{background-color:#99a9bf;color:#fff}.el-tabs__item:hover{color:#1f2d3d;cursor:pointer}.el-tabs__item.is-disabled{color:#bbb;cursor:default}.el-tabs__item.is-active{color:#20a0ff}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card .el-tabs__active-bar{display:none}.el-tab-pane,.slideInLeft-transition,.slideInRight-transition{display:inline-block}.el-tabs--card .el-tabs__item{border:1px solid transparent}.el-tabs--card .el-tabs__item.is-closable:hover{padding-right:9px;padding-left:9px}.el-tabs--card .el-tabs__item.is-active{border:1px solid #d3dce6;border-bottom-color:#fff;border-radius:4px 4px 0 0}.el-tabs--card .el-tabs__item.is-active.is-closable{padding-right:16px;padding-left:16px}.el-tabs--card .el-tabs__item .el-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;-ms-transform-origin:100% 50%;transform-origin:100% 50%}.el-tabs--border-card{background:#fff;border:1px solid #d3dce6;box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-tabs--border-card .el-tabs__content{padding:15px}.el-tabs--border-card .el-tabs__header{background-color:#eff2f7;margin:0}.el-tabs--border-card .el-tabs__item{border:1px solid transparent;border-top:0;margin-right:-1px;margin-left:-1px}.el-tabs--border-card .el-tabs__item.is-active{background-color:#fff;border-right-color:#d3dce6;border-left-color:#d3dce6}.el-tabs--border-card .el-tabs__item.is-active:first-child{border-left-color:#d3dce6}.el-tabs--border-card .el-tabs__item.is-active:last-child{border-right-color:#d3dce6}.el-tab-pane{width:100%}.slideInRight-enter{animation:slideInRight-enter .3s}.slideInRight-leave{position:absolute;left:0;right:0;animation:slideInRight-leave .3s}.slideInLeft-enter{animation:slideInLeft-enter .3s}.slideInLeft-leave{position:absolute;left:0;right:0;animation:slideInLeft-leave .3s}@keyframes slideInRight-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@keyframes slideInRight-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}100%{transform-origin:0 0;transform:translateX(100%);opacity:0}}@keyframes slideInLeft-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(-100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@keyframes slideInLeft-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}100%{transform-origin:0 0;transform:translateX(-100%);opacity:0}}
--------------------------------------------------------------------------------
/element-theme-default/lib/base.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-fade-in-enter,.el-fade-in-leave-active,.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:opacity .2s linear}.el-fade-in-enter-active,.el-fade-in-leave-active,.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-ms-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-ms-transform:scaleY(1);transform:scaleY(1);transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s;-ms-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-ms-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-ms-transform:scaleY(1);transform:scaleY(1);transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s;-ms-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-ms-transform:scaleY(0);transform:scaleY(0)}@font-face{font-family:element-icons;src:url(fonts/element-icons.eot?t=1472440741);src:url(fonts/element-icons.woff?t=1472440741) format('woff'),url(fonts/element-icons.ttf?t=1472440741) format('truetype'),url(fonts/element-icons.svg?t=1472440741#el-icon) format('svg');font-weight:400;font-style:normal}[class*=" el-icon-"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-arrow-down:before{content:"\e600"}.el-icon-arrow-left:before{content:"\e601"}.el-icon-arrow-right:before{content:"\e602"}.el-icon-arrow-up:before{content:"\e603"}.el-icon-caret-bottom:before{content:"\e604"}.el-icon-caret-left:before{content:"\e605"}.el-icon-caret-right:before{content:"\e606"}.el-icon-caret-top:before{content:"\e607"}.el-icon-check:before{content:"\e608"}.el-icon-circle-check:before{content:"\e609"}.el-icon-circle-close:before{content:"\e60a"}.el-icon-circle-cross:before{content:"\e60b"}.el-icon-close:before{content:"\e60c"}.el-icon-upload:before{content:"\e60d"}.el-icon-d-arrow-left:before{content:"\e60e"}.el-icon-d-arrow-right:before{content:"\e60f"}.el-icon-d-caret:before{content:"\e610"}.el-icon-date:before{content:"\e611"}.el-icon-delete:before{content:"\e612"}.el-icon-document:before{content:"\e613"}.el-icon-edit:before{content:"\e614"}.el-icon-information:before{content:"\e615"}.el-icon-loading:before{content:"\e616"}.el-icon-menu:before{content:"\e617"}.el-icon-message:before{content:"\e618"}.el-icon-minus:before{content:"\e619"}.el-icon-more:before{content:"\e61a"}.el-icon-picture:before{content:"\e61b"}.el-icon-plus:before{content:"\e61c"}.el-icon-search:before{content:"\e61d"}.el-icon-setting:before{content:"\e61e"}.el-icon-share:before{content:"\e61f"}.el-icon-star-off:before{content:"\e620"}.el-icon-star-on:before{content:"\e621"}.el-icon-time:before{content:"\e622"}.el-icon-warning:before{content:"\e623"}.el-icon-delete2:before{content:"\e624"}.el-icon-upload2:before{content:"\e627"}.el-icon-view:before{content:"\e626"}.el-icon-loading{animation:rotating 1s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotateZ(0)}100%{transform:rotateZ(360deg)}}
--------------------------------------------------------------------------------
/src/theme/option.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | :root{
3 | /* Transition
4 | -------------------------- */
5 | /* Colors drak
6 | -------------------------- */
7 | /* Colors tin
8 | -------------------------- */
9 | /* Colors
10 | -------------------------- */
11 | /* Background color
12 | -------------------------- */
13 | /* Border
14 | -------------------------- */
15 | /* Box-shadow
16 | -------------------------- */
17 | /* Fill
18 | -------------------------- */
19 | /* Font
20 | -------------------------- */
21 | /* Size
22 | -------------------------- */
23 | /* z-index
24 | -------------------------- */
25 | /* Disable base
26 | -------------------------- */
27 | /* Icon
28 | -------------------------- */
29 | /* Checkbox
30 | -------------------------- */
31 | /* Radio
32 | -------------------------- */
33 | /* Select
34 | -------------------------- */
35 | /* Alert
36 | -------------------------- */
37 | /* Message Box
38 | -------------------------- */
39 | /* Message
40 | -------------------------- */
41 | /* Notification
42 | -------------------------- */
43 | /* Input
44 | -------------------------- */
45 | /* Cascader
46 | -------------------------- */
47 | /* Group
48 | -------------------------- */
49 | /* Tab
50 | -------------------------- */
51 | /* Button
52 | -------------------------- */
53 | /* cascader
54 | -------------------------- */
55 | /* Switch
56 | -------------------------- */
57 | /* Dialog
58 | -------------------------- */
59 | /* Table
60 | -------------------------- */
61 | /* Pagination
62 | -------------------------- */
63 | /* Popover
64 | -------------------------- */
65 | /* Tooltip
66 | -------------------------- */
67 | /* Tag
68 | -------------------------- */
69 | /* Dropdown
70 | -------------------------- */
71 | /* Badge
72 | -------------------------- */
73 | /* Card
74 | --------------------------*/
75 | /* Slider
76 | --------------------------*/
77 | /* Steps
78 | --------------------------*/
79 | /* NavMenu
80 | --------------------------*/
81 | /* Tabs
82 | --------------------------*/
83 | /* Rate
84 | --------------------------*/
85 | /* DatePicker
86 | --------------------------*/
87 | /* Loading
88 | --------------------------*/
89 | /* Breadcrumd
90 | --------------------------*/
91 | /* Form
92 | --------------------------*/
93 | }
94 |
95 | .el-select-dropdown{}
96 |
97 | .el-select-dropdown__item{
98 | font-size: 12px;
99 | padding: 8px 10px;
100 | position: relative;
101 | white-space: nowrap;
102 | overflow: hidden;
103 | text-overflow: ellipsis;
104 | color: #666;
105 | height: 30px;
106 | line-height: 1.5;
107 | box-sizing: border-box;
108 | cursor: pointer
109 | }
110 |
111 | .el-select-dropdown__item.hover{
112 | background-color: #f7f7f7
113 | }
114 |
115 | .el-select-dropdown__item.selected{
116 | color: #fff;
117 | background-color: #d9d9d9
118 | }
119 |
120 | .el-select-dropdown__item.selected.hover{
121 | background-color: #d9d9d9
122 | }
123 |
124 | .el-select-dropdown__item span{
125 | line-height: 1.5 !important
126 | }
127 |
128 | .el-select-dropdown__item.is-disabled{
129 | color: #d9d9d9;
130 | cursor: not-allowed
131 | }
132 |
133 | .el-select-dropdown__item.is-disabled:hover{
134 | background-color: #fff
135 | }
136 |
--------------------------------------------------------------------------------
/webpack.config.js:
--------------------------------------------------------------------------------
1 | var path = require('path')
2 | var webpack = require('webpack')
3 | var et = require('./element-theme')
4 |
5 | var ExtractTextPlugin = require("extract-text-webpack-plugin");
6 | var htmlWebpackPlugin = require("html-webpack-plugin");
7 | module.exports = {
8 | entry: './src/main.js',
9 | output: {
10 | path: path.resolve(__dirname, './dist'),
11 | // publicPath: '/',
12 | filename: 'build.js'
13 | },
14 | performance: {
15 | hints: false
16 | },
17 | resolve: {
18 | extensions: ['.js', '.vue', '.json']
19 | },
20 | module: {
21 | loaders: [{
22 | test: /\.vue$/,
23 | loader: 'vue-loader'
24 | }, {
25 | test: /\.js$/,
26 | loader: 'babel-loader',
27 | exclude: /node_modules/,
28 | query : {
29 | "presets": [
30 | ["es2015", { "modules": false }]
31 | ],
32 | "plugins": ["transform-vue-jsx"]
33 | }
34 | }, {
35 | test: /\.(eot|svg|ttf|woff|woff2)(\?\S*)?$/,
36 | loader: 'file-loader'
37 | }, {
38 | test: /\.(png|jpe?g|gif|svg)(\?\S*)?$/,
39 | loader: 'file-loader',
40 | query: {
41 | name: '[name].[ext]?[hash]'
42 | }
43 | }, {
44 | test: /\.css$/,
45 | loader: "style-loader!css-loader" //ExtractTextPlugin.extract({fallbackLoader:'style-loader',loader:'css-loader'})
46 | }, {
47 | test: /\.scss$/,
48 | loader: "style-loader!css-loader!sass-loader" //ExtractTextPlugin.extract({loader:'css-loader!sass-loader',fallbackLoader:'style-loader'})
49 | }]
50 | },
51 | plugins : [
52 | new htmlWebpackPlugin({
53 | filename : "index.html",
54 | template : "index.html"
55 | })
56 | ],
57 | devServer: {
58 | historyApiFallback: true,
59 | noInfo: true,
60 | proxy: {
61 | '/api/*': {
62 | target: 'http://localhost',
63 | secure: false,
64 | // pathRewrite : {
65 | // "^/api" : ""
66 | // }
67 | }
68 | }
69 | },
70 | devtool: '#eval-source-map'
71 | }
72 |
73 | if (process.env.NODE_ENV === 'production') {
74 | module.exports.devtool = '#source-map'
75 | module.exports.plugins = (module.exports.plugins || []).concat([
76 | new webpack.DefinePlugin({
77 | 'process.env': {
78 | NODE_ENV: '"production"'
79 | }
80 | }),
81 | new webpack.optimize.UglifyJsPlugin({
82 | compress: {
83 | warnings: false
84 | }
85 | }),
86 | new ExtractTextPlugin("style.css")
87 |
88 | ]);
89 |
90 | module.exports.module.loaders.pop();
91 | module.exports.module.loaders.pop();
92 |
93 | module.exports.module.loaders.push({
94 | test: /\.css$/,
95 | loader: ExtractTextPlugin.extract({fallbackLoader:'style-loader',loader:'css-loader'})
96 | }, {
97 | test: /\.scss$/,
98 | loader: ExtractTextPlugin.extract({loader:'css-loader!sass-loader',fallbackLoader:'style-loader'})
99 | })
100 |
101 | et.run({
102 | config: './element-variables.css',
103 | out: './dist/theme'
104 | })
105 |
106 | } else {
107 |
108 | et.watch({
109 | config: './element-variables.css',
110 | out: './src/theme'
111 | })
112 |
113 | }
114 |
--------------------------------------------------------------------------------