Commit e9e51b2fdc879a66d8df08504a0955c9c21e3e27
1 parent
1bde4041
perf(scrollbar): scrollbar update when slot changed
Showing
3 changed files
with
43 additions
and
35 deletions
package.json
@@ -66,7 +66,7 @@ | @@ -66,7 +66,7 @@ | ||
66 | "devDependencies": { | 66 | "devDependencies": { |
67 | "@commitlint/cli": "^12.1.4", | 67 | "@commitlint/cli": "^12.1.4", |
68 | "@commitlint/config-conventional": "^12.1.4", | 68 | "@commitlint/config-conventional": "^12.1.4", |
69 | - "@iconify/json": "^1.1.361", | 69 | + "@iconify/json": "^1.1.362", |
70 | "@purge-icons/generated": "^0.7.0", | 70 | "@purge-icons/generated": "^0.7.0", |
71 | "@types/codemirror": "^5.60.1", | 71 | "@types/codemirror": "^5.60.1", |
72 | "@types/crypto-js": "^4.0.1", | 72 | "@types/crypto-js": "^4.0.1", |
@@ -83,9 +83,9 @@ | @@ -83,9 +83,9 @@ | ||
83 | "@types/sortablejs": "^1.10.6", | 83 | "@types/sortablejs": "^1.10.6", |
84 | "@typescript-eslint/eslint-plugin": "^4.28.0", | 84 | "@typescript-eslint/eslint-plugin": "^4.28.0", |
85 | "@typescript-eslint/parser": "^4.28.0", | 85 | "@typescript-eslint/parser": "^4.28.0", |
86 | - "@vitejs/plugin-legacy": "^1.4.2", | ||
87 | - "@vitejs/plugin-vue": "^1.2.3", | ||
88 | - "@vitejs/plugin-vue-jsx": "^1.1.5", | 86 | + "@vitejs/plugin-legacy": "^1.4.3", |
87 | + "@vitejs/plugin-vue": "^1.2.4", | ||
88 | + "@vitejs/plugin-vue-jsx": "^1.1.6", | ||
89 | "@vue/compiler-sfc": "3.1.2", | 89 | "@vue/compiler-sfc": "3.1.2", |
90 | "@vue/test-utils": "^2.0.0-rc.9", | 90 | "@vue/test-utils": "^2.0.0-rc.9", |
91 | "autoprefixer": "^10.2.6", | 91 | "autoprefixer": "^10.2.6", |
src/components/Scrollbar/src/Scrollbar.vue
@@ -29,6 +29,7 @@ | @@ -29,6 +29,7 @@ | ||
29 | nextTick, | 29 | nextTick, |
30 | provide, | 30 | provide, |
31 | computed, | 31 | computed, |
32 | + watch, | ||
32 | unref, | 33 | unref, |
33 | } from 'vue'; | 34 | } from 'vue'; |
34 | import Bar from './bar'; | 35 | import Bar from './bar'; |
@@ -64,7 +65,7 @@ | @@ -64,7 +65,7 @@ | ||
64 | default: 'div', | 65 | default: 'div', |
65 | }, | 66 | }, |
66 | }, | 67 | }, |
67 | - setup(props) { | 68 | + setup(props, { slots }) { |
68 | const sizeWidth = ref('0'); | 69 | const sizeWidth = ref('0'); |
69 | const sizeHeight = ref('0'); | 70 | const sizeHeight = ref('0'); |
70 | const moveX = ref(0); | 71 | const moveX = ref(0); |
@@ -81,6 +82,13 @@ | @@ -81,6 +82,13 @@ | ||
81 | return props.wrapStyle; | 82 | return props.wrapStyle; |
82 | }); | 83 | }); |
83 | 84 | ||
85 | + watch( | ||
86 | + () => slots.default?.(), | ||
87 | + () => { | ||
88 | + nextTick(update); | ||
89 | + } | ||
90 | + ); | ||
91 | + | ||
84 | const handleScroll = () => { | 92 | const handleScroll = () => { |
85 | if (!props.native) { | 93 | if (!props.native) { |
86 | moveY.value = (unref(wrap).scrollTop * 100) / unref(wrap).clientHeight; | 94 | moveY.value = (unref(wrap).scrollTop * 100) / unref(wrap).clientHeight; |
yarn.lock
@@ -53,7 +53,7 @@ | @@ -53,7 +53,7 @@ | ||
53 | resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.5.tgz#8ef4c18e58e801c5c95d3c1c0f2874a2680fadea" | 53 | resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.5.tgz#8ef4c18e58e801c5c95d3c1c0f2874a2680fadea" |
54 | integrity sha512-kixrYn4JwfAVPa0f2yfzc2AWti6WRRyO3XjWW5PJAvtE11qhSayrrcrEnee05KAtNaPC+EwehE8Qt1UedEVB8w== | 54 | integrity sha512-kixrYn4JwfAVPa0f2yfzc2AWti6WRRyO3XjWW5PJAvtE11qhSayrrcrEnee05KAtNaPC+EwehE8Qt1UedEVB8w== |
55 | 55 | ||
56 | -"@babel/core@>=7.9.0", "@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.10", "@babel/core@^7.7.2", "@babel/core@^7.7.5": | 56 | +"@babel/core@>=7.9.0", "@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.14.6", "@babel/core@^7.7.2", "@babel/core@^7.7.5": |
57 | version "7.14.6" | 57 | version "7.14.6" |
58 | resolved "https://registry.npmjs.org/@babel/core/-/core-7.14.6.tgz#e0814ec1a950032ff16c13a2721de39a8416fcab" | 58 | resolved "https://registry.npmjs.org/@babel/core/-/core-7.14.6.tgz#e0814ec1a950032ff16c13a2721de39a8416fcab" |
59 | integrity sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA== | 59 | integrity sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA== |
@@ -791,7 +791,7 @@ | @@ -791,7 +791,7 @@ | ||
791 | dependencies: | 791 | dependencies: |
792 | "@babel/helper-plugin-utils" "^7.14.5" | 792 | "@babel/helper-plugin-utils" "^7.14.5" |
793 | 793 | ||
794 | -"@babel/plugin-transform-typescript@^7.12.1": | 794 | +"@babel/plugin-transform-typescript@^7.14.6": |
795 | version "7.14.6" | 795 | version "7.14.6" |
796 | resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.14.6.tgz#6e9c2d98da2507ebe0a883b100cde3c7279df36c" | 796 | resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.14.6.tgz#6e9c2d98da2507ebe0a883b100cde3c7279df36c" |
797 | integrity sha512-XlTdBq7Awr4FYIzqhmYY80WN0V0azF74DMPyFqVHBvf81ZUgc4X7ZOpx6O8eLDK6iM5cCQzeyJw0ynTaefixRA== | 797 | integrity sha512-XlTdBq7Awr4FYIzqhmYY80WN0V0azF74DMPyFqVHBvf81ZUgc4X7ZOpx6O8eLDK6iM5cCQzeyJw0ynTaefixRA== |
@@ -912,9 +912,9 @@ | @@ -912,9 +912,9 @@ | ||
912 | dependencies: | 912 | dependencies: |
913 | regenerator-runtime "^0.13.4" | 913 | regenerator-runtime "^0.13.4" |
914 | 914 | ||
915 | -"@babel/standalone@^7.14.6": | 915 | +"@babel/standalone@^7.14.7": |
916 | version "7.14.7" | 916 | version "7.14.7" |
917 | - resolved "https://registry.yarnpkg.com/@babel/standalone/-/standalone-7.14.7.tgz#68635da005d6a34a0259599e0720d2e73133ecc3" | 917 | + resolved "https://registry.npmjs.org/@babel/standalone/-/standalone-7.14.7.tgz#68635da005d6a34a0259599e0720d2e73133ecc3" |
918 | integrity sha512-7RlfMPR4604SbYpj5zvs2ZK587hVhixgU9Pd9Vs8lB8KYtT3U0apXSf0vZXhy8XRh549eUmJOHXhWKTO3ObzOQ== | 918 | integrity sha512-7RlfMPR4604SbYpj5zvs2ZK587hVhixgU9Pd9Vs8lB8KYtT3U0apXSf0vZXhy8XRh549eUmJOHXhWKTO3ObzOQ== |
919 | 919 | ||
920 | "@babel/template@^7.0.0", "@babel/template@^7.14.5", "@babel/template@^7.3.3": | 920 | "@babel/template@^7.0.0", "@babel/template@^7.14.5", "@babel/template@^7.3.3": |
@@ -1189,10 +1189,10 @@ | @@ -1189,10 +1189,10 @@ | ||
1189 | dependencies: | 1189 | dependencies: |
1190 | cross-fetch "^3.0.6" | 1190 | cross-fetch "^3.0.6" |
1191 | 1191 | ||
1192 | -"@iconify/json@^1.1.361": | ||
1193 | - version "1.1.361" | ||
1194 | - resolved "https://registry.yarnpkg.com/@iconify/json/-/json-1.1.361.tgz#6222e7971467cc4a793c7e0bf2877b484827ae36" | ||
1195 | - integrity sha512-p7RMNFNI1YLFCJ0Ads6LOtJyLsheYM+XBSrhcTYxjuCmr2dv2j4DFp0Bh3HLwybtdPo3cA7Xo8Wqk8djvoVm/g== | 1192 | +"@iconify/json@^1.1.362": |
1193 | + version "1.1.362" | ||
1194 | + resolved "https://registry.npmjs.org/@iconify/json/-/json-1.1.362.tgz#e104610f6341db0b5104794bb57959d41e5cea1b" | ||
1195 | + integrity sha512-oKU1KvmcLX/049RXi7FJsNgiodei7LhNetls3cv+oIkTUTIa5mi88oFfRj03B6c1Vja80ZLH+mSDLeTk1fMD5A== | ||
1196 | 1196 | ||
1197 | "@intlify/core-base@9.1.6": | 1197 | "@intlify/core-base@9.1.6": |
1198 | version "9.1.6" | 1198 | version "9.1.6" |
@@ -2228,33 +2228,33 @@ | @@ -2228,33 +2228,33 @@ | ||
2228 | "@typescript-eslint/types" "4.28.0" | 2228 | "@typescript-eslint/types" "4.28.0" |
2229 | eslint-visitor-keys "^2.0.0" | 2229 | eslint-visitor-keys "^2.0.0" |
2230 | 2230 | ||
2231 | -"@vitejs/plugin-legacy@^1.4.2": | ||
2232 | - version "1.4.2" | ||
2233 | - resolved "https://registry.yarnpkg.com/@vitejs/plugin-legacy/-/plugin-legacy-1.4.2.tgz#219e7b86a9febe62b85a66b68127a89954ed93e5" | ||
2234 | - integrity sha512-D2ADBSpImP0QT8w9Eo+8KKOLg3I8OQhFwuBXGM8WQCRrEs55E3bCf9PTkL8S+tgliyLbJM+gjemxpRuoTTwphA== | 2231 | +"@vitejs/plugin-legacy@^1.4.3": |
2232 | + version "1.4.3" | ||
2233 | + resolved "https://registry.npmjs.org/@vitejs/plugin-legacy/-/plugin-legacy-1.4.3.tgz#d022275d08e6f1f777891fb405816a9dd41a9f1f" | ||
2234 | + integrity sha512-lxZUJaMWYMQuqvZM1wPzDP6KABQgA/drVL5fnaygEPcz9adc2OHhfFNN/SvvHQ1V0rP8gybIc7uA+iI1gAdkVQ== | ||
2235 | dependencies: | 2235 | dependencies: |
2236 | - "@babel/standalone" "^7.14.6" | ||
2237 | - core-js "^3.14.0" | 2236 | + "@babel/standalone" "^7.14.7" |
2237 | + core-js "^3.15.1" | ||
2238 | magic-string "^0.25.7" | 2238 | magic-string "^0.25.7" |
2239 | regenerator-runtime "^0.13.7" | 2239 | regenerator-runtime "^0.13.7" |
2240 | systemjs "^6.10.1" | 2240 | systemjs "^6.10.1" |
2241 | 2241 | ||
2242 | -"@vitejs/plugin-vue-jsx@^1.1.5": | ||
2243 | - version "1.1.5" | ||
2244 | - resolved "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-1.1.5.tgz#e856ef42f59048e59c85f8714dc8397e15f81738" | ||
2245 | - integrity sha512-YujG7IgbZR8zWGY/hZFxYKrAUdO+9OV4t3pqqQrvbtP/ESwvTY8vb0Zpw1VMO8zLWNGqf8jSbjBaCjN49diplw== | 2242 | +"@vitejs/plugin-vue-jsx@^1.1.6": |
2243 | + version "1.1.6" | ||
2244 | + resolved "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-1.1.6.tgz#c9e7b63d1ebf537a24a0b4b3b31f4beb8055cef6" | ||
2245 | + integrity sha512-1vKGALnBFt7hUIOgkC4ZAhTRgENpSgGBsdltJn3fPNcqrbrvR/HaRS5VThjCCoN69d0d+VlDXOTlWcfUpE3pfQ== | ||
2246 | dependencies: | 2246 | dependencies: |
2247 | - "@babel/core" "^7.12.10" | 2247 | + "@babel/core" "^7.14.6" |
2248 | "@babel/plugin-syntax-import-meta" "^7.10.4" | 2248 | "@babel/plugin-syntax-import-meta" "^7.10.4" |
2249 | - "@babel/plugin-transform-typescript" "^7.12.1" | 2249 | + "@babel/plugin-transform-typescript" "^7.14.6" |
2250 | "@rollup/pluginutils" "^4.1.0" | 2250 | "@rollup/pluginutils" "^4.1.0" |
2251 | - "@vue/babel-plugin-jsx" "^1.0.3" | 2251 | + "@vue/babel-plugin-jsx" "^1.0.6" |
2252 | hash-sum "^2.0.0" | 2252 | hash-sum "^2.0.0" |
2253 | 2253 | ||
2254 | -"@vitejs/plugin-vue@^1.2.3": | ||
2255 | - version "1.2.3" | ||
2256 | - resolved "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-1.2.3.tgz#2e8e008b1cc3a6ad1dfbec75743c7ffd9b4872a6" | ||
2257 | - integrity sha512-LlnLpObkGKZ+b7dcpL4T24l13nPSHLjo+6Oc7MbZiKz5PMAUzADfNJ3EKfYIQ0l0969nxf2jp/9vsfnuJ7h6fw== | 2254 | +"@vitejs/plugin-vue@^1.2.4": |
2255 | + version "1.2.4" | ||
2256 | + resolved "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-1.2.4.tgz#a7aa6e6a31c556a8b781de730316deeecf7f56f2" | ||
2257 | + integrity sha512-D/3H9plevPQGgQGwmV6eecvOnooLTecPR63HPffVVWPEhbfvmtYLWgznzs456NBb2DItiRTCIa1yWxvGqC+I8A== | ||
2258 | 2258 | ||
2259 | "@volar/code-gen@^0.25.22": | 2259 | "@volar/code-gen@^0.25.22": |
2260 | version "0.25.22" | 2260 | version "0.25.22" |
@@ -2301,7 +2301,7 @@ | @@ -2301,7 +2301,7 @@ | ||
2301 | resolved "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz#9b9c691cd06fc855221a2475c3cc831d774bc7dc" | 2301 | resolved "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz#9b9c691cd06fc855221a2475c3cc831d774bc7dc" |
2302 | integrity sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA== | 2302 | integrity sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA== |
2303 | 2303 | ||
2304 | -"@vue/babel-plugin-jsx@^1.0.3": | 2304 | +"@vue/babel-plugin-jsx@^1.0.6": |
2305 | version "1.0.6" | 2305 | version "1.0.6" |
2306 | resolved "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.0.6.tgz#184bf3541ab6efdbe5079ab8b20c19e2af100bfb" | 2306 | resolved "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.0.6.tgz#184bf3541ab6efdbe5079ab8b20c19e2af100bfb" |
2307 | integrity sha512-RzYsvBhzKUmY2YG6LoV+W5PnlnkInq0thh1AzCmewwctAgGN6e9UFon6ZrQQV1CO5G5PeME7MqpB+/vvGg0h4g== | 2307 | integrity sha512-RzYsvBhzKUmY2YG6LoV+W5PnlnkInq0thh1AzCmewwctAgGN6e9UFon6ZrQQV1CO5G5PeME7MqpB+/vvGg0h4g== |
@@ -4074,10 +4074,10 @@ core-js@^3.12.1: | @@ -4074,10 +4074,10 @@ core-js@^3.12.1: | ||
4074 | resolved "https://registry.npmjs.org/core-js/-/core-js-3.14.0.tgz#62322b98c71cc2018b027971a69419e2425c2a6c" | 4074 | resolved "https://registry.npmjs.org/core-js/-/core-js-3.14.0.tgz#62322b98c71cc2018b027971a69419e2425c2a6c" |
4075 | integrity sha512-3s+ed8er9ahK+zJpp9ZtuVcDoFzHNiZsPbNAAE4KXgrRHbjSqqNN6xGSXq6bq7TZIbKj4NLrLb6bJ5i+vSVjHA== | 4075 | integrity sha512-3s+ed8er9ahK+zJpp9ZtuVcDoFzHNiZsPbNAAE4KXgrRHbjSqqNN6xGSXq6bq7TZIbKj4NLrLb6bJ5i+vSVjHA== |
4076 | 4076 | ||
4077 | -core-js@^3.14.0: | ||
4078 | - version "3.15.0" | ||
4079 | - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.15.0.tgz#db9554ebce0b6fd90dc9b1f2465c841d2d055044" | ||
4080 | - integrity sha512-GUbtPllXMYRzIgHNZ4dTYTcUemls2cni83Q4Q/TrFONHfhcg9oEGOtaGHfb0cpzec60P96UKPvMkjX1jET8rUw== | 4077 | +core-js@^3.15.1: |
4078 | + version "3.15.1" | ||
4079 | + resolved "https://registry.npmjs.org/core-js/-/core-js-3.15.1.tgz#6c08ab88abdf56545045ccf5fd81f47f407e7f1a" | ||
4080 | + integrity sha512-h8VbZYnc9pDzueiS2610IULDkpFFPunHwIpl8yRwFahAEEdSpHlTy3h3z3rKq5h11CaUdBEeRViu9AYvbxiMeg== | ||
4081 | 4081 | ||
4082 | core-util-is@~1.0.0: | 4082 | core-util-is@~1.0.0: |
4083 | version "1.0.2" | 4083 | version "1.0.2" |