Filler.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import _extends from "@babel/runtime/helpers/esm/extends";
  2. import { createVNode as _createVNode } from "vue";
  3. import classNames from '../_util/classNames';
  4. import ResizeObserver from '../vc-resize-observer';
  5. const Filter = (_ref, _ref2) => {
  6. let {
  7. height,
  8. offset,
  9. prefixCls,
  10. onInnerResize
  11. } = _ref;
  12. let {
  13. slots
  14. } = _ref2;
  15. var _a;
  16. let outerStyle = {};
  17. let innerStyle = {
  18. display: 'flex',
  19. flexDirection: 'column'
  20. };
  21. if (offset !== undefined) {
  22. outerStyle = {
  23. height: `${height}px`,
  24. position: 'relative',
  25. overflow: 'hidden'
  26. };
  27. innerStyle = _extends(_extends({}, innerStyle), {
  28. transform: `translateY(${offset}px)`,
  29. position: 'absolute',
  30. left: 0,
  31. right: 0,
  32. top: 0
  33. });
  34. }
  35. return _createVNode("div", {
  36. "style": outerStyle
  37. }, [_createVNode(ResizeObserver, {
  38. "onResize": _ref3 => {
  39. let {
  40. offsetHeight
  41. } = _ref3;
  42. if (offsetHeight && onInnerResize) {
  43. onInnerResize();
  44. }
  45. }
  46. }, {
  47. default: () => [_createVNode("div", {
  48. "style": innerStyle,
  49. "class": classNames({
  50. [`${prefixCls}-holder-inner`]: prefixCls
  51. })
  52. }, [(_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)])]
  53. })]);
  54. };
  55. Filter.displayName = 'Filter';
  56. Filter.inheritAttrs = false;
  57. Filter.props = {
  58. prefixCls: String,
  59. /** Virtual filler height. Should be `count * itemMinHeight` */
  60. height: Number,
  61. /** Set offset of visible items. Should be the top of start item position */
  62. offset: Number,
  63. onInnerResize: Function
  64. };
  65. export default Filter;