UNPKG

vue-ant-patterns

Version:

vue-ant-patterns

277 lines (237 loc) 8.34 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _defineProperty2 = require('babel-runtime/helpers/defineProperty'); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _vueTypes = require('ant-design-vue/lib/_util/vue-types'); var _vueTypes2 = _interopRequireDefault(_vueTypes); var _propsUtil = require('ant-design-vue/lib/_util/props-util'); var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames); var _dContainer = require('../d-container'); var _dContainer2 = _interopRequireDefault(_dContainer); var _Sider = require('./Sider'); var _Sider2 = _interopRequireDefault(_Sider); var _SiderLayoutProps = require('./SiderLayoutProps'); var _SiderLayoutProps2 = _interopRequireDefault(_SiderLayoutProps); var _resizeObserverPolyfill = require('resize-observer-polyfill'); var _resizeObserverPolyfill2 = _interopRequireDefault(_resizeObserverPolyfill); var _splitpanes = require('splitpanes'); require('splitpanes/dist/splitpanes.css'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var SiderLayout = { name: 'DSiderLayout', model: { prop: 'collapsed', event: 'collapse' }, components: { Splitpanes: _splitpanes.Splitpanes, Pane: _splitpanes.Pane }, props: (0, _extends3['default'])({ prefixCls: _vueTypes2['default'].string.def('depot-sider-layout') }, _SiderLayoutProps2['default'], { grow: _vueTypes2['default'].bool.def(false), flex: _vueTypes2['default'].bool.def(false) }), data: function data() { var props = (0, _propsUtil.getOptionProps)(this); var _$props = this.$props, collapseWidth = _$props.collapseWidth, collapsed = _$props.collapsed, siderWidth = _$props.siderWidth, prefixCls = _$props.prefixCls; var state = { collapseing: false, isShowBody: true, sCollapsed: false, sContentWidth: '', sSideWidth: siderWidth // sCollapsedClass: this.getStatusClass(collapsed), }; if ('collapsed' in props) { state.sCollapsed = props.collapsed; } var direction = this.direction; var isLeft = direction === 'left'; return (0, _extends3['default'])({ isLeft: isLeft, isCollapseIng: false, isCollapseEnd: false }, state, { spSizeState: { minSize: 29, maxSize: 31, isshortMenu: this.collapsed, shortSize: 10, nowSize: 30 } }); }, watch: { direction: function direction(v) { this.isLeft = v === 'left'; }, collapsed: function collapsed(v) { this.sCollapsed = v; this.spSizeState.isshortMenu = v; } }, mounted: function mounted() { var _this = this; this.resizeSplitpanes(); var robserver = new _resizeObserverPolyfill2['default'](function (entries) { var minSizePx = 200; var maxSizePx = 500; var short_size = 48; var nowWidth = entries[0].contentRect.width; _this.spSizeState.minSize = Math.floor(minSizePx / nowWidth * 10000) / 100; _this.spSizeState.maxSize = Math.floor(maxSizePx / nowWidth * 10000) / 100; _this.spSizeState.shortSize = Math.floor(short_size / nowWidth * 10000) / 100; }); robserver.observe(this.$refs.splitPanesCon.$el); }, methods: { toggleCollapse: function toggleCollapse() { this.sCollapsed = !this.sCollapsed; }, collapseHandler: function collapseHandler(collapsed) { this.toggleCollapse(); this.$emit('onCollapse', collapsed); this.$emit('collapse', collapsed); }, renderSide: function renderSide() { var _cx; var h = this.$createElement; var $slots = this.$slots, vLine = this.vLine, sCollapsed = this.sCollapsed, collapsible = this.collapsible, direction = this.direction, prefixCls = this.prefixCls, openSider = this.openSider; if (!openSider) return null; var sider = $slots.sider; var cls = (0, _classnames2['default'])((_cx = {}, (0, _defineProperty3['default'])(_cx, prefixCls + '-direction-' + direction, 1), (0, _defineProperty3['default'])(_cx, 'flex-col', 1), _cx)); var props = { props: { vLine: vLine, collapsible: collapsible, direction: direction, collapsed: sCollapsed }, 'class': cls, on: { onCollapse: this.collapseHandler }, ref: 'sider' }; return h( _Sider2['default'], props, [sider] ); }, renderContent: function renderContent() { var h = this.$createElement; var $slots = this.$slots, sContentWidth = this.sContentWidth, prefixCls = this.prefixCls, contentFlex = this.contentFlex; var props = { 'class': prefixCls + '-content', props: { flex: contentFlex }, style: { width: '100%' } }; return h( _dContainer2['default'], props, [$slots['default']] ); }, resizeSplitpanes: function resizeSplitpanes() { var minSizePx = 200; var maxSizePx = 500; var short_size = 48; var nowWidth = this.$refs.splitPanesCon.$el.offsetWidth; this.spSizeState.minSize = Math.floor(minSizePx / nowWidth * 10000) / 100; this.spSizeState.maxSize = Math.floor(maxSizePx / nowWidth * 10000) / 100; this.spSizeState.shortSize = Math.floor(short_size / nowWidth * 10000) / 100; }, formatPaneProps: function formatPaneProps() { var spSizeState = this.spSizeState; var minSize = spSizeState.minSize, maxSize = spSizeState.maxSize, isshortMenu = spSizeState.isshortMenu, shortSize = spSizeState.shortSize, nowSize = spSizeState.nowSize; if (isshortMenu) { return { minSize: shortSize, maxSize: shortSize, size: shortSize }; } else { return { minSize: minSize, maxSize: maxSize, size: minSize }; } } }, render: function render() { var _cx2; var h = arguments[0]; var isLeft = this.isLeft, sCollapsed = this.sCollapsed, direction = this.direction; var _$props2 = this.$props, prefixCls = _$props2.prefixCls, height = _$props2.height, flex = _$props2.flex, grow = _$props2.grow, openSider = _$props2.openSider; var cls = (0, _classnames2['default'])((_cx2 = {}, (0, _defineProperty3['default'])(_cx2, prefixCls, 1), (0, _defineProperty3['default'])(_cx2, prefixCls + '-collapsed', sCollapsed), (0, _defineProperty3['default'])(_cx2, prefixCls + '-extends', !sCollapsed), (0, _defineProperty3['default'])(_cx2, prefixCls + '-' + direction, 1), (0, _defineProperty3['default'])(_cx2, prefixCls + '-close', !openSider), (0, _defineProperty3['default'])(_cx2, 'flex-grow', grow), (0, _defineProperty3['default'])(_cx2, 'flex', flex), _cx2)); var sHeight = /(%|px)$/.test(height) ? height : height === 'auto' ? height : height + 'px'; var divProps = { ref: 'splitPanesCon', 'class': cls, style: { height: sHeight } }; var siderPaneProps = this.formatPaneProps(); return h( _dContainer2['default'], divProps, [h( _splitpanes.Splitpanes, { attrs: { dblClickSplitter: false }, 'class': 'default-theme', style: 'height: 100%' }, [h( _splitpanes.Pane, { attrs: { minSize: siderPaneProps.minSize, maxSize: siderPaneProps.maxSize, size: siderPaneProps.size } }, [isLeft && this.renderSide()] ), h( _splitpanes.Pane, { attrs: { size: 100 - siderPaneProps.size } }, [this.renderContent()] ), !isLeft && this.renderSide()] )] ); } }; /* * @Description: * @Autor: w.pengfei * @Date: 2019-09-11 20:16:49 * @LastEditors: liuyanxin * @LastEditTime: 2023-06-30 09:24:00 */ SiderLayout.SiderLayoutProps = _SiderLayoutProps2['default']; exports['default'] = SiderLayout;