UNPKG

el-table-infinite-scroll

Version:
70 lines (61 loc) 2.56 kB
/*! * el-table-infinite-scroll v3.0.8 * (c) 2019-2025 yujinpan */ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var elementPlus = require('element-plus'); var utils_js = require('./utils.js'); var msgTitle = '[el-table-infinite-scroll]: '; var ElTableInfiniteScroll = { mounted: function mounted(el, binding, VNode, oldVNode) { var _useScrollElem = useScrollElem(el), scrollElem = _useScrollElem.scrollElem; scrollElem.style.overflowY = 'auto'; // after render setTimeout(function () { if (!el.style.height) { scrollElem.style.height = '400px'; // eslint-disable-next-line console.warn("".concat(msgTitle, "el-table height required, otherwise will set scrollbar default height: 400px")); } syncOptions(el, scrollElem); // use `ElInfiniteScroll` elementPlus.ElInfiniteScroll.mounted(scrollElem, binding, VNode, oldVNode); }, 0); }, updated: function updated(el) { var _useScrollElem2 = useScrollElem(el), scrollElem = _useScrollElem2.scrollElem; syncOptions(el, scrollElem); }, unmounted: function unmounted(el) { var _useScrollElem3 = useScrollElem(el), scrollElem = _useScrollElem3.scrollElem; for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } elementPlus.ElInfiniteScroll.unmounted.apply(elementPlus.ElInfiniteScroll, [scrollElem].concat(args)); } }; function useScrollElem(el) { var _config$value; var config = elementPlus.useGlobalConfig(); var elTableScrollWrapperClass = ".".concat(((_config$value = config.value) === null || _config$value === void 0 ? void 0 : _config$value.namespace) || 'el', "-scrollbar__wrap"); var scrollElem = el.querySelector(elTableScrollWrapperClass); if (!scrollElem) { throw new Error("".concat(msgTitle).concat(elTableScrollWrapperClass, " element not found.")); } return { scrollElem: scrollElem }; } function syncOptions(sourceElem, targetElem) { utils_js.syncAttrs(sourceElem, targetElem, ['infinite-scroll-disabled', 'infinite-scroll-delay', 'infinite-scroll-immediate', 'infinite-scroll-distance']); // fix: windows/chrome `scrollTop + clientHeight` is difference with `scrollHeight` var name = 'infinite-scroll-distance'; var value = +(sourceElem.getAttribute(name) || 0); targetElem.setAttribute(name, (value < 1 ? 1 : value) + ''); } exports.default = ElTableInfiniteScroll; exports.useScrollElem = useScrollElem;