UNPKG

ng-devui

Version:

DevUI components based on Angular

1 lines 53.6 kB
{"version":3,"file":"ng-devui-splitter.mjs","sources":["../../devui/splitter/resize.directive.ts","../../devui/splitter/splitter.service.ts","../../devui/splitter/splitter-bar.component.ts","../../devui/splitter/splitter-bar.component.html","../../devui/splitter/splitter-pane.component.ts","../../devui/splitter/splitter-pane.component.html","../../devui/splitter/splitter.component.ts","../../devui/splitter/splitter.component.html","../../devui/splitter/splitter.module.ts","../../devui/splitter/ng-devui-splitter.ts"],"sourcesContent":["import { Directive, ElementRef, EventEmitter, Input, NgZone, OnDestroy, OnInit, Output } from '@angular/core';\n\n@Directive({\n selector: '[dResize]'\n})\nexport class ResizeDirective implements OnInit, OnDestroy {\n // 是否允许拖动\n @Input() enableResize = true;\n // 按下事件,mousedown,touchstart等\n @Output() pressEvent = new EventEmitter<any>();\n // 拖动中事件,mousemove,touchmove等\n @Output() dragEvent = new EventEmitter<any>();\n // 释放事件,mouseup,touchend等\n @Output() releaseEvent = new EventEmitter<any>();\n constructor(private el: ElementRef, private ngZone: NgZone) {}\n\n ngOnInit() {\n if (this.enableResize) {\n this.ngZone.runOutsideAngular(() => {\n this.bindEvent();\n });\n }\n }\n\n ngOnDestroy() {\n if (this.enableResize) {\n this.unbind(this.el.nativeElement, 'mousedown', this.mousedown);\n this.unbind(this.el.nativeElement, 'touchstart', this.touchstart);\n }\n }\n\n bind = (el, event, callback) => el.addEventListener && el.addEventListener(event, callback);\n\n unbind = (el, event, callback) => el && el.removeEventListener && el.removeEventListener(event, callback);\n\n bindEvent() {\n const element = this.el.nativeElement;\n // 绑定mousedown事件\n this.bind(element, 'mousedown', this.mousedown);\n // 绑定触屏事件\n this.bind(element, 'touchstart', this.touchstart);\n }\n\n mousedown = (e) => {\n this.bind(document, 'mousemove', this.mousemove);\n this.bind(document, 'mouseup', this.mouseup);\n this.pressEvent.emit(this.normalizeEvent(e));\n };\n\n mousemove = (e) => {\n this.dragEvent.emit(this.normalizeEvent(e));\n };\n\n mouseup = (e) => {\n this.unbind(document, 'mousemove', this.mousemove);\n this.unbind(document, 'mouseup', this.mouseup);\n this.releaseEvent.emit(this.normalizeEvent(e));\n };\n\n touchstart = (e) => {\n this.bind(document, 'touchmove', this.touchmove);\n this.bind(document, 'touchend', this.touchend);\n if (e.touches.length === 1) {\n this.pressEvent.emit(this.normalizeEvent(e));\n }\n };\n\n touchmove = (e) => {\n if (e.touches.length === 1) {\n this.dragEvent.emit(this.normalizeEvent(e));\n }\n };\n\n touchend = (e) => {\n this.unbind(document, 'touchmove', this.touchmove);\n this.unbind(document, 'touchend', this.touchend);\n if (e.touches.length === 0) {\n this.releaseEvent.emit(this.normalizeEvent(e));\n }\n };\n\n // 返回常用位置信息\n normalizeEvent(e) {\n // 判断事件类型,用于计算位置坐标\n if (e.type.match(/touch/)) {\n return {\n pageX: e.changedTouches[0].pageX,\n pageY: e.changedTouches[0].pageY,\n clientX: e.changedTouches[0].clientX,\n clientY: e.changedTouches[0].clientY,\n type: e.type,\n originalEvent: e,\n isTouch: true\n };\n }\n return {\n pageX: e.pageX,\n pageY: e.pageY,\n clientX: e.clientX,\n clientY: e.clientY,\n offsetX: e.offsetX,\n offsetY: e.offsetY,\n type: e.type,\n originalEvent: e\n };\n }\n}\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { SplitterBarComponent } from './splitter-bar.component';\r\nimport { SplitterPaneComponent } from './splitter-pane.component';\r\n\r\n@Injectable()\r\nexport class SplitterService {\r\n panes: SplitterPaneComponent[];\r\n bars: SplitterBarComponent[];\r\n private containerSize: Function;\r\n paneCount = 0;\r\n paneChangeSubject = new Subject();\r\n // 配置pane信息,panes列表,方向,容器大小,方便后续计算使用\r\n configPane({ panes, orientation, containerSize }) {\r\n this.panes = panes;\r\n this.panes.forEach((pane, index) => {\r\n pane.order = index * 2;\r\n pane.orientation = orientation;\r\n });\r\n this.paneCount = this.panes.length;\r\n this.containerSize = containerSize;\r\n }\r\n\r\n // 按下的时候计算pane的size信息\r\n dragState(splitbarIndex) {\r\n const prev = this.getPane(splitbarIndex);\r\n const next = this.getPane(splitbarIndex + 1);\r\n const total = prev.computedSize + next.computedSize;\r\n return {\r\n prev: {\r\n index: splitbarIndex,\r\n initialSize: prev.computedSize,\r\n // 设置有最小值,直接取值,如果没有设置就用两个pane总和减去相邻pane的最大值,都没设置(NAN)在取0\r\n minSize: this.toPixels(prev.minSize) || total - this.toPixels(next.maxSize) || 0,\r\n // 设置有最大值,直接取值,如果没有设置就用两个pane总和减去相邻pane的最小值,都没设置(NAN)在取两个pane总和\r\n maxSize: this.toPixels(prev.maxSize) || total - this.toPixels(next.minSize) || total,\r\n },\r\n next: {\r\n index: splitbarIndex + 1,\r\n initialSize: next.computedSize,\r\n minSize: this.toPixels(next.minSize) || total - this.toPixels(prev.maxSize) || 0,\r\n maxSize: this.toPixels(next.maxSize) || total - this.toPixels(prev.minSize) || total,\r\n },\r\n };\r\n }\r\n\r\n // 设置pane大小\r\n setSize(state, distance) {\r\n const prev = this.getPane(state.prev.index);\r\n const next = this.getPane(state.next.index);\r\n if (prev.size && next.size) {\r\n // 相邻的两个pane都指定了size,需要同时修改size\r\n this.resize(state.prev, distance);\r\n this.resize(state.next, -distance);\r\n } else if (next.size) {\r\n // 如果 next pane,指定了size就修改next pane\r\n this.resize(state.next, -distance);\r\n } else {\r\n // 最后不管pre pane,有没有指定,都修改 pre pane\r\n this.resize(state.prev, distance);\r\n }\r\n }\r\n\r\n // 大小限制函数,(max)小于最小值时取最小值, (min)大于最大值时取最大值\r\n clamp(minSize, maxSize, initialSize) {\r\n return Math.min(maxSize, Math.max(minSize, initialSize));\r\n }\r\n\r\n // resize pane的大小\r\n resize(paneState, moveSize) {\r\n const pane = this.getPane(paneState.index);\r\n const splitterSize = this.containerSize();\r\n const newSize = this.clamp(paneState.minSize, paneState.maxSize, paneState.initialSize + moveSize);\r\n let size = '';\r\n if (this.isPercent(pane.size)) {\r\n size = (100 * newSize) / splitterSize + '%';\r\n } else {\r\n size = newSize + 'px';\r\n }\r\n pane.size = size;\r\n pane.sizeChange.emit(size);\r\n }\r\n\r\n // 判断pane是否可以调整大小,只要有一边设置了不可调整或者收起,相邻pane调整就失效\r\n isResizable(splitBarIndex) {\r\n const prevPane = this.getPane(splitBarIndex);\r\n const nextPane = this.getPane(splitBarIndex + 1);\r\n const paneCollapsed = prevPane.collapsed || nextPane.collapsed;\r\n return prevPane.resizable && nextPane.resizable && !paneCollapsed;\r\n }\r\n\r\n // 判断分割条是否是固定的,只要有一边不能调整, 就是禁用状态固定bar\r\n isStaticBar(splitBarIndex) {\r\n const prevPane = this.getPane(splitBarIndex);\r\n const nextPane = this.getPane(splitBarIndex + 1);\r\n return !(prevPane.resizable && nextPane.resizable);\r\n }\r\n\r\n // 获取pane,防止没有初始化的时候调用内部方法取值\r\n getPane(index) {\r\n if (!this.panes || index < 0 || index >= this.panes.length) {\r\n throw new Error('no pane can return.');\r\n }\r\n return this.panes[index];\r\n }\r\n\r\n getBar(index) {\r\n if (!this.bars || index < 0 || index >= this.bars.length) {\r\n return;\r\n }\r\n return this.bars[index];\r\n }\r\n\r\n // 判断是不是百分比设置宽度\r\n isPercent(size) {\r\n return /%$/.test(size);\r\n }\r\n\r\n // 计算时把百分比转换为像素\r\n toPixels(size) {\r\n // 值不满足转换时,result为NAN,方便计算最小、最大宽度判断\r\n let result = parseFloat(size);\r\n if (this.isPercent(size)) {\r\n result = (this.containerSize() * result) / 100;\r\n }\r\n return result;\r\n }\r\n\r\n // 切换pane展开,收起\r\n togglePane(paneIndex, nearPaneIndex, lockStatus?) {\r\n const pane = this.getPane(paneIndex);\r\n const nearPane = this.getPane(nearPaneIndex);\r\n if (pane.collapsible) {\r\n pane._collapsed = lockStatus ? pane._collapsed : !pane._collapsed;\r\n pane.toggleCollapseClass();\r\n nearPane.toggleNearPaneFlexGrow(pane._collapsed);\r\n pane.collapsedChange.emit(pane._collapsed);\r\n }\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n Host,\r\n HostBinding,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Renderer2,\r\n SkipSelf,\r\n} from '@angular/core';\r\nimport { I18nService } from 'ng-devui/i18n';\r\nimport { Subscription } from 'rxjs';\r\nimport { filter, map, switchMap, takeUntil, tap } from 'rxjs/operators';\r\nimport { ResizeDirective } from './resize.directive';\r\nimport { SplitterService } from './splitter.service';\r\nimport { SplitterOrientation } from './splitter.types';\r\n\r\n@Component({\r\n selector: 'd-splitter-bar',\r\n templateUrl: './splitter-bar.component.html',\r\n styleUrls: ['./splitter-bar.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n preserveWhitespaces: false,\r\n})\r\nexport class SplitterBarComponent implements OnInit, AfterViewInit, OnDestroy {\r\n // 当前pane索引\r\n @Input() index: number;\r\n // 窗格排列方向\r\n @Input() orientation: SplitterOrientation;\r\n // 是否显示展开/收缩按钮\r\n @Input() showCollapseButton;\r\n @Input() collapsePosLeft: string;\r\n @Input() collapsePosTop: string;\r\n // 分隔条大小\r\n _splitBarSize;\r\n @Input()\r\n set splitBarSize(size) {\r\n this._splitBarSize = size;\r\n this.renderer.setStyle(this.el.nativeElement, 'flex-basis', size);\r\n }\r\n get splitBarSize() {\r\n return this._splitBarSize;\r\n }\r\n @Input() disabledBarSize;\r\n\r\n @HostBinding('class') get class() {\r\n let bindClass = 'devui-splitter-bar devui-splitter-bar-' + this.orientation;\r\n if (!this.splitter.isStaticBar(this.index)) {\r\n bindClass += ' resizable';\r\n } else {\r\n this.renderer.setStyle(this.el.nativeElement, 'flex-basis', this.disabledBarSize);\r\n }\r\n return bindClass;\r\n }\r\n // 国际化文案\r\n splitterText;\r\n // 提示内容\r\n preTip;\r\n nextTip;\r\n subscriptions = new Subscription();\r\n // 移动的时候,阻止事件冒泡\r\n private stopPropagation = ({ originalEvent: event }) => {\r\n event.stopPropagation();\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n };\r\n\r\n // 处理移动过程中的数据流, 合并到pressEvent事件流中\r\n private moveStream = (resize) => (mouseDown) =>\r\n resize.dragEvent.pipe(\r\n takeUntil(resize.releaseEvent),\r\n map(({ pageX, pageY }: MouseEvent) => ({\r\n originalX: mouseDown.pageX,\r\n originalY: mouseDown.pageY,\r\n pageX,\r\n pageY,\r\n }))\r\n );\r\n\r\n constructor(\r\n public el: ElementRef,\r\n private splitter: SplitterService,\r\n private renderer: Renderer2,\r\n @Host() private resize: ResizeDirective,\r\n @SkipSelf() private cdr: ChangeDetectorRef,\r\n private cdrSelf: ChangeDetectorRef,\r\n private i18n: I18nService\r\n ) {\r\n this.splitter.paneChangeSubject.subscribe(() => {\r\n this.initialCollapseStatus();\r\n this.cdr.detectChanges();\r\n this.cdrSelf.detectChanges();\r\n });\r\n this.splitterText = this.i18n.getI18nText().splitter;\r\n this.subscriptions.add(\r\n this.i18n.langChange().subscribe((data) => {\r\n this.splitterText = data.splitter;\r\n })\r\n );\r\n }\r\n\r\n ngOnInit(): void {\r\n let state;\r\n const resizeListener = this.resize.pressEvent\r\n .pipe(\r\n tap(this.stopPropagation),\r\n filter(() => this.splitter.isResizable(this.index)),\r\n tap(() => {\r\n state = this.splitter.dragState(this.index);\r\n }),\r\n switchMap(this.moveStream(this.resize))\r\n )\r\n .subscribe(({ pageX, pageY, originalX, originalY }) => {\r\n let distance;\r\n if (this.orientation === 'vertical') {\r\n distance = pageY - originalY;\r\n } else {\r\n distance = pageX - originalX;\r\n }\r\n this.splitter.setSize(state, distance);\r\n });\r\n this.subscriptions.add(resizeListener);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.initialCollapseStatus();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.unsubscribe();\r\n this.splitter.paneChangeSubject.unsubscribe();\r\n }\r\n\r\n initialCollapseStatus() {\r\n this.collapsePrePane(true);\r\n this.collapseNextPane(true);\r\n }\r\n\r\n collapsePrePane(lockStatus?) {\r\n this.splitter.togglePane(this.index, this.index + 1, lockStatus);\r\n this.toggleResize();\r\n this.hidePrevIsCovered();\r\n }\r\n\r\n collapseNextPane(lockStatus?) {\r\n this.splitter.togglePane(this.index + 1, this.index, lockStatus);\r\n this.toggleResize();\r\n this.hideNextIsCovered();\r\n }\r\n\r\n queryPanes(index, nearIndex) {\r\n const pane = this.splitter.getPane(index);\r\n const nearPane = this.splitter.getPane(nearIndex);\r\n return { pane, nearPane };\r\n }\r\n\r\n // 切换是否允许拖拽,收起时不能拖拽\r\n toggleResize() {\r\n const { pane, nearPane } = this.queryPanes(this.index, this.index + 1);\r\n const isCollapsed = pane.collapsed || nearPane.collapsed;\r\n if (isCollapsed) {\r\n this.renderer.addClass(this.el.nativeElement, 'none-resizable');\r\n } else {\r\n this.renderer.removeClass(this.el.nativeElement, 'none-resizable');\r\n }\r\n }\r\n\r\n // 计算前面板收起操作样式\r\n get prevClass() {\r\n const { pane, nearPane } = this.queryPanes(this.index, this.index + 1);\r\n this.preTip = pane.collapsed ? this.splitterText.expand : this.splitterText.collapse;\r\n // 第一个面板或者其它面板折叠方向不是向后的显示操作按钮\r\n const showIcon = pane.collapseDirection !== 'after' || this.index === 0;\r\n return this.generateCollapseClass(pane, nearPane, showIcon);\r\n }\r\n\r\n // 计算相邻面板收起操作样式\r\n get nextClass() {\r\n const { pane, nearPane } = this.queryPanes(this.index + 1, this.index);\r\n this.nextTip = pane.collapsed ? this.splitterText.expand : this.splitterText.collapse;\r\n // 最后一个面板或者其它面板折叠方向不是向前的显示操作按钮\r\n const showIcon = pane.collapseDirection !== 'before' || this.index + 1 === this.splitter.paneCount - 1;\r\n return this.generateCollapseClass(pane, nearPane, showIcon);\r\n }\r\n\r\n // 生成拼接样式\r\n generateClass(classes) {\r\n return Object.keys(classes)\r\n .filter((c) => classes[c])\r\n .join(' ');\r\n }\r\n\r\n // 根据当前状态生成收起按钮样式\r\n generateCollapseClass(pane, nearPane, showIcon) {\r\n // 是否允许收起\r\n const isCollapsible = pane.collapsible && showIcon;\r\n // 当前收起状态\r\n const isCollapsed = pane.collapsed;\r\n // 一个pane收起的时候,隐藏相邻pane的收起按钮\r\n const isNearPaneCollapsed = nearPane.collapsed;\r\n return this.generateClass({\r\n 'devui-collapse': isCollapsible,\r\n collapsed: isCollapsed,\r\n hidden: isNearPaneCollapsed,\r\n });\r\n }\r\n\r\n hidePrevIsCovered() {\r\n const pane = this.splitter.getPane(this.index);\r\n const prevBar = this.splitter.getBar(this.index - 1);\r\n const prevBarDom = prevBar?.el.nativeElement.querySelector('.prev');\r\n if (prevBarDom) {\r\n const rules = [pane.collapsed, pane.collapsible, pane.collapseDirection === 'before'];\r\n if (rules.includes(false)) {\r\n prevBarDom.classList.remove('hidden');\r\n } else {\r\n prevBarDom.classList.add('hidden');\r\n }\r\n }\r\n }\r\n\r\n hideNextIsCovered() {\r\n const pane = this.splitter.getPane(this.index + 1);\r\n const nextBar = this.splitter.getBar(this.index + 1);\r\n const nextBarDom = nextBar?.el.nativeElement.querySelector('.next');\r\n if (nextBarDom) {\r\n const rules = [pane.collapsed, pane.collapsible, pane.collapseDirection === 'after'];\r\n if (rules.includes(false)) {\r\n nextBarDom.classList.remove('hidden');\r\n } else {\r\n nextBarDom.classList.add('hidden');\r\n }\r\n }\r\n }\r\n}\r\n","<div\n class=\"prev\"\n *ngIf=\"showCollapseButton\"\n dPopover\n [style.left]=\"collapsePosLeft\"\n [style.top]=\"collapsePosTop\"\n [trigger]=\"'hover'\"\n [controlled]=\"true\"\n [ngClass]=\"prevClass\"\n [content]=\"preTip\"\n [showAnimation]=\"false\"\n [mouseEnterDelay]=\"100\"\n [mouseLeaveDelay]=\"0\"\n (click)=\"collapsePrePane()\"\n (touchstart)=\"collapsePrePane()\"\n></div>\n<div class=\"devui-resize-handle\"></div>\n<div\n class=\"next\"\n *ngIf=\"showCollapseButton\"\n dPopover\n [trigger]=\"'hover'\"\n [controlled]=\"true\"\n [ngClass]=\"nextClass\"\n [content]=\"nextTip\"\n (click)=\"collapseNextPane()\"\n (touchstart)=\"collapseNextPane()\"\n></div>\n","import {\n AfterViewChecked, ChangeDetectionStrategy, Component, ElementRef, EventEmitter,\n HostBinding, Input, OnChanges, Output, Renderer2, SimpleChanges\n} from '@angular/core';\nimport { SplitterService } from './splitter.service';\nimport { CollapseDirection, SplitterOrientation } from './splitter.types';\n@Component({\n selector: 'd-splitter-pane',\n templateUrl: './splitter-pane.component.html',\n styleUrls: ['./splitter-pane.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\n\nexport class SplitterPaneComponent implements OnChanges, AfterViewChecked {\n // pane的最小值\n @Input() minSize: string;\n // pane的最大值\n @Input() maxSize: string;\n // 当前panel是否可调整大小\n @Input() resizable = true;\n // 面板是否可折叠\n @Input() collapsible = false;\n // 是否折叠收缩\n @Input() shrink = false;\n // 折叠收缩后宽度\n @Input() shrinkWidth = 36;\n // 面板初始化是否折叠,默认不折叠\n _collapsed = false;\n @Input()\n set collapsed(newCollapsed) {\n if (this._collapsed !== newCollapsed) {\n this._collapsed = newCollapsed;\n this.splitter.paneChangeSubject.next(true);\n }\n }\n get collapsed() {\n return this._collapsed;\n }\n // 非边缘面板折叠方向,before只生成向前折叠的按钮,after生成向后折叠按钮,both生成两个\n @Input() collapseDirection: CollapseDirection = 'both';\n widthBeforeShrink;\n // pane初始化大小\n _size;\n @Input()\n set size(newSize) {\n this._size = newSize;\n this.widthBeforeShrink = newSize;\n this.renderer.setStyle(this.element, 'flex-basis', newSize);\n const paneFixedClass = 'devui-splitter-pane-fixed';\n if (this.size) {\n // 设置 flex-grow 和 flex-shrink\n this.renderer.addClass(this.element, paneFixedClass);\n } else {\n this.renderer.removeClass(this.element, paneFixedClass);\n }\n }\n get size() {\n return this._size;\n }\n // 大小改变事件\n @Output() sizeChange = new EventEmitter<any>();\n\n // 收起和展开事件\n @Output() collapsedChange = new EventEmitter<any>();\n\n // 收缩和展开事件\n @Output() shrinkStatusChange = new EventEmitter<boolean>();\n\n @HostBinding('class.devui-splitter-pane') paneClass = true;\n\n orientation: SplitterOrientation; // 分割条方向\n _order = 0; // flex布局下pane位置\n element; // nativeElement句柄\n\n set order(paneOrder) {\n this._order = paneOrder;\n this.setOrderStyles();\n }\n get order() {\n return this._order;\n }\n\n constructor(private splitter: SplitterService, private el: ElementRef, private renderer: Renderer2) {\n this.element = this.el.nativeElement;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if ((changes.collapsible && !changes.collapsible.isFirstChange()) || (changes.resizable && !changes.resizable.isFirstChange())) {\n this.splitter.paneChangeSubject.next(true);\n }\n }\n\n // 设置order\n setOrderStyles() {\n this.renderer.setStyle(this.element, 'order', this.order);\n }\n\n // 获取当前pane大小\n get computedSize() {\n if (this.orientation === 'vertical') {\n return this.element.offsetHeight;\n } else {\n return this.element.offsetWidth;\n }\n }\n\n // 收起时隐藏当前pane\n toggleCollapseClass() {\n const paneHiddenClass = 'devui-splitter-pane-hidden';\n\n if (!this._collapsed) {\n this.renderer.removeClass(this.element, paneHiddenClass);\n } else {\n this.renderer.addClass(this.element, paneHiddenClass);\n }\n\n if (this._collapsed && this.shrink) {\n this.renderer.removeClass(this.element, paneHiddenClass);\n this.renderer.setStyle(this.element, 'flex-basis', `${this.shrinkWidth}px`);\n this.shrinkStatusChange.emit(true);\n } else {\n this.renderer.setStyle(this.element, 'flex-basis', this.widthBeforeShrink);\n this.shrinkStatusChange.emit(false);\n }\n }\n\n // 收起时用于改变相邻pane的flex-grow属性来改变非自适应pane的size\n toggleNearPaneFlexGrow(collapsed) {\n const flexGrowClass = 'devui-splitter-pane-grow';\n const hasFlexGrowClass = this.element.classList.contains(flexGrowClass);\n if (hasFlexGrowClass) {\n this.renderer.removeClass(this.element, flexGrowClass);\n } else if (collapsed) {\n this.renderer.addClass(this.element, flexGrowClass);\n }\n }\n\n ngAfterViewChecked() {\n // 视图检查完对resizeable pane设置flex属性\n if (!this.size && !this.resizable) {\n this.renderer.addClass(this.element, 'devui-splitter-pane-fixed');\n }\n }\n}\n","<ng-content></ng-content>\n","import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n ElementRef,\r\n HostBinding,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n QueryList,\r\n SimpleChanges,\r\n ViewChildren,\r\n} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { SplitterBarComponent } from './splitter-bar.component';\r\nimport { SplitterPaneComponent } from './splitter-pane.component';\r\nimport { SplitterService } from './splitter.service';\r\nimport { SplitterOrientation } from './splitter.types';\r\n@Component({\r\n selector: 'd-splitter',\r\n exportAs: 'dSplitter',\r\n templateUrl: './splitter.component.html',\r\n styleUrls: ['./splitter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [SplitterService],\r\n preserveWhitespaces: false,\r\n})\r\nexport class SplitterComponent implements OnChanges, AfterContentInit, OnDestroy {\r\n // 指定Splitter中窗格的方向,默认水平分割。\r\n @Input() orientation: SplitterOrientation = 'horizontal';\r\n // 分隔条大小\r\n @Input() splitBarSize = '2px';\r\n // pane设置为不可调整大小时,生效\r\n @Input() disabledBarSize = '1px';\r\n // 是否显示展开/收缩按钮\r\n @Input() showCollapseButton = true;\r\n @Input() collapsePosLeft: string;\r\n @Input() collapsePosTop: string;\r\n\r\n @HostBinding('class') get class() {\r\n return 'devui-splitter devui-splitter-' + this.orientation;\r\n }\r\n // 内嵌面板\r\n @ContentChildren(SplitterPaneComponent) panes: QueryList<SplitterPaneComponent>;\r\n @ViewChildren('bar') splitterBars: QueryList<SplitterBarComponent>;\r\n paneChangesSubscription: Subscription;\r\n\r\n constructor(private el: ElementRef, private splitter: SplitterService, private cdr: ChangeDetectorRef) {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.orientation && !changes.orientation.isFirstChange()) {\r\n this.reconfigure();\r\n }\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.reconfigure();\r\n // contentChildren 变化时,触发重新设置pane\r\n this.paneChangesSubscription = this.panes.changes.subscribe((panes) => {\r\n this.reconfigure();\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n\r\n public toggleCollapsed(index = 0) {\r\n const target = this.splitterBars.toArray()[index];\r\n target.collapsePrePane();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.paneChangesSubscription) {\r\n this.paneChangesSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n // 配置pane\r\n reconfigure() {\r\n this.splitter.configPane({\r\n panes: this.panes.toArray(),\r\n orientation: this.orientation,\r\n // 内容投影进组件之后,组件还没有渲染出dom,此时获取不到宽度,此处设置一个回调函数\r\n containerSize: () => {\r\n if (this.orientation === 'vertical') {\r\n return this.el.nativeElement.clientHeight;\r\n } else {\r\n return this.el.nativeElement.clientWidth;\r\n }\r\n },\r\n });\r\n // 投影后获取panes才能循环渲染出bar\r\n setTimeout(() => {\r\n if (this.splitterBars.length) {\r\n this.splitter.bars = this.splitterBars.toArray();\r\n }\r\n });\r\n }\r\n}\r\n","<ng-content select=\"d-splitter-pane\"></ng-content>\n<ng-container *ngFor=\"let pane of panes; let index = index; let last = last\">\n <d-splitter-bar\n #bar\n dResize\n [style.order]=\"index * 2 + 1\"\n *ngIf=\"!last\"\n [index]=\"index\"\n [splitBarSize]=\"splitBarSize\"\n [disabledBarSize]=\"disabledBarSize\"\n [orientation]=\"orientation\"\n [showCollapseButton]=\"showCollapseButton\"\n [collapsePosLeft]=\"collapsePosLeft\"\n [collapsePosTop]=\"collapsePosTop\"\n >\n </d-splitter-bar>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { PopoverModule } from 'ng-devui/popover';\nimport { ResizeDirective } from './resize.directive';\nimport { SplitterBarComponent } from './splitter-bar.component';\nimport { SplitterPaneComponent } from './splitter-pane.component';\nimport { SplitterComponent } from './splitter.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n PopoverModule\n ],\n exports: [\n SplitterComponent,\n SplitterPaneComponent,\n SplitterBarComponent,\n ResizeDirective\n ],\n declarations: [\n SplitterComponent,\n SplitterPaneComponent,\n SplitterBarComponent,\n ResizeDirective\n ],\n providers: []\n})\nexport class SplitterModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SplitterService","i2.ResizeDirective","i2","i3.SplitterBarComponent","i4.ResizeDirective"],"mappings":"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