diff --git a/.eslintrc.json b/.eslintrc.json
index 46c3cbe3..3bc3fd34 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -8,7 +8,8 @@
"sourceType": "module"
},
"env": {
- "browser": true
+ "browser": true,
+ "es6": true
},
"extends": "eslint:recommended",
"plugins": ["vue"],
diff --git a/package-lock.json b/package-lock.json
index 05039016..f410f167 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "iview",
- "version": "2.3.2",
+ "version": "2.4.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -12493,6 +12493,11 @@
"lodash.escape": "3.2.0"
}
},
+ "lodash.throttle": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
+ "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ="
+ },
"lodash.uniq": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
diff --git a/package.json b/package.json
index 8f489201..d82aba6b 100644
--- a/package.json
+++ b/package.json
@@ -44,6 +44,7 @@
"core-js": "^2.5.0",
"deepmerge": "^1.5.1",
"element-resize-detector": "^1.1.12",
+ "lodash.throttle": "^4.1.1",
"popper.js": "^0.6.4",
"tinycolor2": "^1.4.1"
},
diff --git a/src/components/scroll/index.js b/src/components/scroll/index.js
new file mode 100644
index 00000000..dedbe686
--- /dev/null
+++ b/src/components/scroll/index.js
@@ -0,0 +1,3 @@
+import Scroll from './scroll.vue';
+
+export default Scroll;
diff --git a/src/components/scroll/loading-component.vue b/src/components/scroll/loading-component.vue
new file mode 100644
index 00000000..f4a214ad
--- /dev/null
+++ b/src/components/scroll/loading-component.vue
@@ -0,0 +1,39 @@
+
+
+
+
+
+
diff --git a/src/components/scroll/scroll.vue b/src/components/scroll/scroll.vue
new file mode 100644
index 00000000..9933da32
--- /dev/null
+++ b/src/components/scroll/scroll.vue
@@ -0,0 +1,271 @@
+
+
+
+
+
diff --git a/src/index.js b/src/index.js
index 0b199739..036b224d 100644
--- a/src/index.js
+++ b/src/index.js
@@ -23,6 +23,7 @@ import Form from './components/form';
import Icon from './components/icon';
import Input from './components/input';
import InputNumber from './components/input-number';
+import Scroll from './components/scroll';
import LoadingBar from './components/loading-bar';
import Menu from './components/menu';
import Message from './components/message';
@@ -46,8 +47,8 @@ import Tooltip from './components/tooltip';
import Transfer from './components/transfer';
import Tree from './components/tree';
import Upload from './components/upload';
-import { Row, Col } from './components/grid';
-import { Select, Option, OptionGroup } from './components/select';
+import {Row, Col} from './components/grid';
+import {Select, Option, OptionGroup} from './components/select';
import locale from './locale';
const iview = {
@@ -84,6 +85,7 @@ const iview = {
Input,
iInput: Input,
InputNumber,
+ Scroll,
LoadingBar,
Menu,
iMenu: Menu,
@@ -111,7 +113,7 @@ const iview = {
Spin,
Step: Steps.Step,
Steps,
- // Switch,
+ // Switch,
iSwitch: Switch,
iTable: Table,
Table,
@@ -127,11 +129,11 @@ const iview = {
Upload
};
-const install = function (Vue, opts = {}) {
+const install = function(Vue, opts = {}) {
locale.use(opts.locale);
locale.i18n(opts.i18n);
- Object.keys(iview).forEach((key) => {
+ Object.keys(iview).forEach(key => {
Vue.component(key, iview[key]);
});
@@ -147,4 +149,4 @@ if (typeof window !== 'undefined' && window.Vue) {
install(window.Vue);
}
-module.exports = Object.assign(iview, {install}); // eslint-disable-line no-undef
+module.exports = Object.assign(iview, {install}); // eslint-disable-line no-undef
diff --git a/src/styles/components/index.less b/src/styles/components/index.less
index a5190bb0..4d1c745b 100644
--- a/src/styles/components/index.less
+++ b/src/styles/components/index.less
@@ -13,6 +13,7 @@
@import "checkbox";
@import "switch";
@import "input-number";
+@import "scroll";
@import "tag";
@import "loading-bar";
@import "progress";
@@ -41,4 +42,4 @@
@import "tree";
@import "avatar";
@import "color-picker";
-@import "auto-complete";
\ No newline at end of file
+@import "auto-complete";
diff --git a/src/styles/components/scroll.less b/src/styles/components/scroll.less
new file mode 100644
index 00000000..ff712059
--- /dev/null
+++ b/src/styles/components/scroll.less
@@ -0,0 +1,67 @@
+@scroll-prefix-cls: ~"@{css-prefix}scroll";
+
+.@{scroll-prefix-cls} {
+ &-wrapper {
+ width: auto;
+ margin: 0 auto;
+ position: relative;
+ outline: none;
+ }
+
+ &-container {
+ overflow-y: scroll;
+ }
+
+ &-content {
+ opacity: 1;
+ transition: opacity 0.5s;
+ }
+
+ &-content-loading {
+ opacity: 0.5;
+ }
+
+ &-loader {
+ text-align: center;
+ padding: 0px;
+ transition: padding 0.5s;
+ }
+}
+
+.@{scroll-prefix-cls}-loader-wrapper {
+ padding: 5px 0;
+ height: 0;
+ background-color: inherit;
+ transform: scale(0);
+ transition: opacity .3s, transform .5s, height .5s;
+
+ &-active {
+ height: 40px;
+ transform: scale(1);
+ }
+
+ @keyframes ani-demo-spin {
+ from {
+ transform: rotate(0deg);
+ }
+ 50% {
+ transform: rotate(180deg);
+ }
+ to {
+ transform: rotate(360deg);
+ }
+ }
+
+ .@{scroll-prefix-cls}-spinner {
+ position: relative;
+ }
+
+ .@{scroll-prefix-cls}-spinner-icon {
+ animation: ani-demo-spin 1s linear infinite;
+ }
+}
+
+@media (max-width: 768px) {
+ .@{scroll-prefix-cls} {
+ }
+}