UNPKG

ng-devui

Version:

DevUI components based on Angular

377 lines 69.2 kB
import { DOCUMENT } from '@angular/common'; import { ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, HostBinding, HostListener, Inject, Input, NgZone, Output, Renderer2, TemplateRef } from '@angular/core'; import { fromEvent } from 'rxjs'; import { SortDirection } from '../../../data-table.model'; import { TABLE_TH } from './th.token'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; import * as i2 from "./filter/filter.component"; import * as i3 from "./sort/sort.component"; import * as i4 from "ng-devui/utils"; export class TableThComponent { constructor(element, renderer2, zone, cdr, doc) { this.renderer2 = renderer2; this.zone = zone; this.cdr = cdr; this.doc = doc; this.resizeEnabledClass = false; this.operableClass = false; this.sortActiveClass = false; this.filterActiveClass = false; this.stickyLeftClass = false; this.stickyRightClass = false; this.showFilterIcon = true; this.filterMultiple = true; this.filterChange = new EventEmitter(); this.filterToggle = new EventEmitter(); this.showSortIcon = true; this.sortDirectionChange = new EventEmitter(); this.sortChange = new EventEmitter(); this.resizeEndEvent = new EventEmitter(); this.resizeStartEvent = new EventEmitter(); this.resizingEvent = new EventEmitter(); this.resizing = false; this.toggleChildrenTableEvent = new EventEmitter(); this.tapEvent = new EventEmitter(); this.bindMousemove = (e) => { this.move(e); }; this.element = element.nativeElement; this.document = this.doc; } ngOnChanges(changes) { const { resizeEnabled, filterable, sortable, colDraggable, filterIconActive, sortDirection, fixedLeft, fixedRight } = changes; if (resizeEnabled) { if (this.resizeEnabled) { this.resizeEnabledClass = true; if (!this.resizeHandleElement) { this.resizeHandleElement = this.renderer2.createElement('span'); this.renderer2.addClass(this.resizeHandleElement, 'resize-handle'); this.renderer2.appendChild(this.element.firstChild, this.resizeHandleElement); this.resizeNodeEvent = this.renderer2.listen(this.resizeHandleElement, 'click', (event) => event.stopPropagation()); } } else { this.resizeEnabledClass = false; } } if (filterable || sortable || resizeEnabled || colDraggable) { if (this.filterable || this.sortable || this.resizeEnabled || this.colDraggable) { this.operableClass = true; } else { this.operableClass = false; } } if (filterIconActive) { if (this.filterIconActive) { this.filterActiveClass = true; } else { this.filterActiveClass = false; } } if (sortDirection) { if (this.sortDirection === SortDirection.ASC || this.sortDirection === SortDirection.DESC) { this.sortActiveClass = true; } else { this.sortActiveClass = false; } } if (fixedLeft) { if (this.fixedLeft) { this.stickyLeftClass = true; this.stickyLeftStyle = this.fixedLeft; } else { this.stickyLeftClass = false; this.stickyLeftStyle = null; } } if (fixedRight) { if (this.fixedRight) { this.stickyRightClass = true; this.stickyRightStyle = this.fixedRight; } else { this.stickyRightClass = false; this.stickyRightStyle = null; } } } ngOnDestroy() { this._destroySubscription(); if (this.resizeNodeEvent) { this.resizeNodeEvent(); } } onFilterIconActive(active) { this.filterActiveClass = active; } onTap(event) { this.tapEvent.emit(event); } toggleChildrenTable() { this.childrenTableOpen = !this.childrenTableOpen; this.toggleChildrenTableEvent.emit(this.childrenTableOpen); } emitFilterData(filterData) { this.filterChange.emit(filterData); } emitFilterToggle(data) { this.filterToggle.emit(data); } onSort(event) { this.sortDirection = event.direction; if (event.direction === SortDirection.default) { this.sortActiveClass = false; } else { this.sortActiveClass = true; } this.sortDirectionChange.emit(event.direction); this.sortChange.emit({ ...event, th: this }); } clearSortOrder() { this.sortDirection = SortDirection.default; this.sortActiveClass = false; } onMousedown(event) { const isHandle = event.target.classList.contains('resize-handle'); if (isHandle) { this.resizeStartEvent.emit(event); // emit begin resize event this.initialWidth = this.element.clientWidth; this.initialOffset = this.element.offsetLeft; this.mouseDownScreenX = event.clientX; event.stopPropagation(); this.nextElement = this.element.nextElementSibling; this.resizing = true; this.totalWidth = this.nextElement ? this.initialWidth + this.nextElement.clientWidth : this.initialWidth; // create resizeOverlay this.resizeOverlay = this.renderer2.createElement('div'); this.renderer2.appendChild(this.element.firstElementChild, this.resizeOverlay); this.renderer2.addClass(this.resizeOverlay, 'resize-overlay'); this.renderer2.listen(this.resizeOverlay, 'click', (clickEvent) => clickEvent.stopPropagation()); this.renderer2.addClass(this.tableViewRefElement.nativeElement, 'table-view-selector'); const resizeBar = this.renderer2.createElement('div'); this.renderer2.addClass(resizeBar, 'resize-bar'); this.tableElement = this.tableViewRefElement.nativeElement.querySelector('.devui-scrollbar table'); if (this.isLastFixedLeft || this.isFirstFixedRight) { this.renderer2.addClass(this.tableViewRefElement.nativeElement, 'd-table-on-resize'); } this.initialOffset = this.initialOffset - this.tableElement.parentElement.scrollLeft; if (this.tableElement) { this.renderer2.appendChild(this.tableElement, resizeBar); this.renderer2.setStyle(resizeBar, 'display', 'block'); this.renderer2.setStyle(resizeBar, 'left', this.initialOffset + this.initialWidth - 2 + 'px'); this.resizeBarRefElement = resizeBar; } this.tableHeaderElement = this.tableViewRefElement.nativeElement.querySelector('.table-fix-header'); if (this.tableHeaderElement) { this.renderer2.appendChild(this.tableHeaderElement, resizeBar); this.renderer2.setStyle(resizeBar, 'display', 'block'); this.renderer2.setStyle(resizeBar, 'left', this.initialOffset + this.initialWidth - 2 + 'px'); } this.renderer2.addClass(this.element, 'hover-bg'); const mouseup = fromEvent(this.document, 'mouseup'); this.subscription = mouseup.subscribe((ev) => this.onMouseup(ev)); this.zone.runOutsideAngular(() => { this.document.addEventListener('mousemove', this.bindMousemove); }); } } onMouseup(event) { this.zone.run(() => { const movementX = event.clientX - this.mouseDownScreenX; const newWidth = this.initialWidth + movementX; const finalWidth = this.getFinalWidth(newWidth); this.resizing = false; // destroy overlay this.renderer2.removeChild(this.element, this.resizeOverlay); this.renderer2.removeClass(this.tableViewRefElement.nativeElement, 'table-view-selector'); this.renderer2.removeClass(this.tableViewRefElement.nativeElement, 'd-table-on-resize'); this.renderer2.removeClass(this.element, 'hover-bg'); if (this.tableElement) { this.renderer2.removeChild(this.tableElement, this.resizeBarRefElement); } if (this.tableHeaderElement) { this.renderer2.removeChild(this.tableHeaderElement, this.resizeBarRefElement); } this.resizeEndEvent.emit({ width: finalWidth, beforeWidth: this.initialWidth }); }); if (this.subscription && !this.subscription.closed) { this._destroySubscription(); } this.document.removeEventListener('mousemove', this.bindMousemove); } move(event) { const movementX = event.clientX - this.mouseDownScreenX; const newWidth = this.initialWidth + movementX; const finalWidth = this.getFinalWidth(newWidth); if (this.resizeBarRefElement) { this.renderer2.setStyle(this.resizeBarRefElement, 'left', `${finalWidth + this.initialOffset}px`); } this.resizingEvent.emit({ width: finalWidth }); } getFinalWidth(newWidth) { const minWidth = this.handleWidth(this.minWidth); const maxWidth = this.handleWidth(this.maxWidth); const overMinWidth = !this.minWidth || newWidth >= minWidth; const underMaxWidth = !this.maxWidth || newWidth <= maxWidth; const result = !underMaxWidth ? maxWidth : newWidth; const finalWidth = !overMinWidth ? minWidth : result; return finalWidth; } handleWidth(width) { if (!width) { return; } if (typeof width === 'number') { return width; } if (width.includes('%')) { const tableWidth = this.tableViewRefElement.nativeElement.clientWidth; return (tableWidth * parseInt(width, 10)) / 100; } return parseInt(width.replace(/[^\d]+/, ''), 10); } _destroySubscription() { if (this.subscription) { this.subscription.unsubscribe(); this.subscription = undefined; } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableThComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TableThComponent, selector: "[dHeadCell]", inputs: { resizeEnabled: "resizeEnabled", filterable: "filterable", beforeFilter: "beforeFilter", customFilterTemplate: "customFilterTemplate", extraFilterTemplate: "extraFilterTemplate", searchFn: "searchFn", showFilterIcon: "showFilterIcon", filterList: "filterList", filterIconActive: "filterIconActive", filterMultiple: "filterMultiple", closeFilterWhenScroll: "closeFilterWhenScroll", filterBoxWidth: "filterBoxWidth", filterBoxHeight: "filterBoxHeight", sortable: "sortable", sortDirection: "sortDirection", showSortIcon: "showSortIcon", colDraggable: "colDraggable", nestedColumn: "nestedColumn", iconFoldTable: "iconFoldTable", iconUnFoldTable: "iconUnFoldTable", tableViewRefElement: "tableViewRefElement", minWidth: "minWidth", maxWidth: "maxWidth", fixedLeft: "fixedLeft", fixedRight: "fixedRight", isLastFixedLeft: "isLastFixedLeft", isFirstFixedRight: "isFirstFixedRight", childrenTableOpen: "childrenTableOpen", column: "column" }, outputs: { filterChange: "filterChange", filterToggle: "filterToggle", sortDirectionChange: "sortDirectionChange", sortChange: "sortChange", resizeEndEvent: "resizeEndEvent", resizeStartEvent: "resizeStartEvent", resizingEvent: "resizingEvent", toggleChildrenTableEvent: "toggleChildrenTableEvent", tapEvent: "tapEvent" }, host: { listeners: { "mousedown": "onMousedown($event)" }, properties: { "class.resizeable": "this.resizeEnabledClass", "class.operable": "this.operableClass", "class.sort-active": "this.sortActiveClass", "class.filter-active": "this.filterActiveClass", "class.devui-sticky-left-cell": "this.stickyLeftClass", "class.devui-sticky-right-cell": "this.stickyRightClass", "style.left": "this.stickyLeftStyle", "style.right": "this.stickyRightStyle", "class.can-sort": "this.sortable", "class.devui-last-sticky-left-cell": "this.isLastFixedLeft", "class.devui-first-sticky-right-cell": "this.isFirstFixedRight" } }, providers: [ { provide: TABLE_TH, useExisting: forwardRef(() => TableThComponent), }, ], usesOnChanges: true, ngImport: i0, template: "<div class=\"header-container\">\n <i class=\"drag-icon\" (mousedown)=\"onTap($event)\">\n <svg\n width=\"16px\"\n height=\"16px\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n >\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <path\n d=\"M4.5,1.5 L5.5,1.5 C6.05228475,1.5 6.5,1.94771525 6.5,2.5 L6.5,3.5 C6.5,4.05228475 6.05228475,4.5 5.5,4.5 L4.5,4.5 C3.94771525,4.5 3.5,4.05228475 3.5,3.5 L3.5,2.5 C3.5,1.94771525 3.94771525,1.5 4.5,1.5 Z M10.5,1.5 L11.5,1.5 C12.0522847,1.5 12.5,1.94771525 12.5,2.5 L12.5,3.5 C12.5,4.05228475 12.0522847,4.5 11.5,4.5 L10.5,4.5 C9.94771525,4.5 9.5,4.05228475 9.5,3.5 L9.5,2.5 C9.5,1.94771525 9.94771525,1.5 10.5,1.5 Z M4.5,6.5 L5.5,6.5 C6.05228475,6.5 6.5,6.94771525 6.5,7.5 L6.5,8.5 C6.5,9.05228475 6.05228475,9.5 5.5,9.5 L4.5,9.5 C3.94771525,9.5 3.5,9.05228475 3.5,8.5 L3.5,7.5 C3.5,6.94771525 3.94771525,6.5 4.5,6.5 Z M10.5,6.5 L11.5,6.5 C12.0522847,6.5 12.5,6.94771525 12.5,7.5 L12.5,8.5 C12.5,9.05228475 12.0522847,9.5 11.5,9.5 L10.5,9.5 C9.94771525,9.5 9.5,9.05228475 9.5,8.5 L9.5,7.5 C9.5,6.94771525 9.94771525,6.5 10.5,6.5 Z M4.5,11.5 L5.5,11.5 C6.05228475,11.5 6.5,11.9477153 6.5,12.5 L6.5,13.5 C6.5,14.0522847 6.05228475,14.5 5.5,14.5 L4.5,14.5 C3.94771525,14.5 3.5,14.0522847 3.5,13.5 L3.5,12.5 C3.5,11.9477153 3.94771525,11.5 4.5,11.5 Z M10.5,11.5 L11.5,11.5 C12.0522847,11.5 12.5,11.9477153 12.5,12.5 L12.5,13.5 C12.5,14.0522847 12.0522847,14.5 11.5,14.5 L10.5,14.5 C9.94771525,14.5 9.5,14.0522847 9.5,13.5 L9.5,12.5 C9.5,11.9477153 9.94771525,11.5 10.5,11.5 Z\"\n fill=\"#C7CAD0\"\n ></path>\n </g>\n </svg>\n </i>\n <ng-container *ngIf=\"nestedColumn\">\n <span class=\"childtable-toggler\" (click)=\"toggleChildrenTable()\">\n <ng-container *ngIf=\"childrenTableOpen\">\n <svg\n *ngIf=\"!iconFoldTable\"\n width=\"16px\"\n height=\"16px\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n class=\"svg-icon svg-icon-close\"\n >\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <rect x=\"0.5\" y=\"0.5\" width=\"15\" height=\"15\" rx=\"2\"></rect>\n <rect x=\"4\" y=\"7\" width=\"8\" height=\"2\"></rect>\n </g>\n </svg>\n <span class=\"customized-icon\" *ngIf=\"iconFoldTable\" [innerHTML]=\"iconFoldTable | safe : 'html'\"></span>\n </ng-container>\n <ng-container *ngIf=\"!childrenTableOpen\">\n <svg\n *ngIf=\"!iconUnFoldTable\"\n width=\"16px\"\n height=\"16px\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n class=\"svg-icon svg-icon-open-folder\"\n >\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <rect x=\"0.5\" y=\"0.5\" width=\"15\" height=\"15\" rx=\"2\"></rect>\n <path\n d=\"M8.75,4 L8.75,7.25 L12,7.25 L12,8.75 L8.749,8.75 L8.75,12 L7.25,12 L7.249,8.75 L4,8.75 L4,7.25 L7.25,7.25 L7.25,4 L8.75,4 Z\"\n ></path>\n </g>\n </svg>\n <span class=\"customized-icon\" *ngIf=\"iconUnFoldTable\" [innerHTML]=\"iconUnFoldTable | safe : 'html'\"></span>\n </ng-container>\n </span>\n </ng-container>\n <span class=\"title\">\n <ng-content></ng-content>\n </span>\n <d-table-sort *ngIf=\"sortable\" [sortDirection]=\"sortDirection\" [showSortIcon]=\"showSortIcon\" (sortEvent)=\"onSort($event)\"></d-table-sort>\n <d-table-filter\n *ngIf=\"filterable\"\n [showFilterIcon]=\"showFilterIcon\"\n [beforeFilter]=\"beforeFilter\"\n [customFilterTemplate]=\"customFilterTemplate\"\n [extraFilterTemplate]=\"extraFilterTemplate\"\n [column]=\"column\"\n [searchFn]=\"searchFn\"\n [filterList]=\"filterList\"\n [filterIconActive]=\"filterIconActive\"\n (filterIconActiveChange)=\"onFilterIconActive($event)\"\n [filterMultiple]=\"filterMultiple\"\n [closeWhenScroll]=\"closeFilterWhenScroll\"\n [filterBoxWidth]=\"filterBoxWidth\"\n [filterBoxHeight]=\"filterBoxHeight\"\n (filterChange)=\"emitFilterData($event)\"\n (filterToggle)=\"emitFilterToggle($event)\"\n ></d-table-filter>\n</div>\n", styles: [".devui-font-size-base{font-size:var(--devui-font-size, 12px)}.devui-font-base{font-size:var(--devui-font-size, 12px);font-weight:var(--devui-font-content-weight, normal);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-modal-title{font-size:var(--devui-font-size-modal-title, 18px)}.devui-font-modal-title{font-size:var(--devui-font-size-modal-title, 18px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-page-title{font-size:var(--devui-font-size-page-title, 16px)}.devui-font-page-title{font-size:var(--devui-font-size-page-title, 16px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-secondary-title{font-size:var(--devui-font-size-card-title, 14px)}.devui-font-secondary-title{font-size:var(--devui-font-size-card-title, 14px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}:host{font-weight:700;color:var(--devui-text, #191919);font-size:var(--devui-font-size-sm, 12px)}:host:has(.devui-dropdown-open) d-table-sort{display:block!important}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.FilterComponent, selector: "d-table-filter", inputs: ["beforeFilter", "customFilterTemplate", "extraFilterTemplate", "searchFn", "filterList", "filterIconActive", "filterMultiple", "filterBoxWidth", "filterBoxHeight", "column", "closeWhenScroll", "showFilterIcon"], outputs: ["filterIconActiveChange", "filterChange", "filterToggle"] }, { kind: "component", type: i3.SortComponent, selector: "d-table-sort", inputs: ["sortDirection", "showSortIcon"], outputs: ["sortEvent"] }, { kind: "pipe", type: i4.SafePipe, name: "safe" }] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableThComponent, decorators: [{ type: Component, args: [{ selector: '[dHeadCell]', providers: [ { provide: TABLE_TH, useExisting: forwardRef(() => TableThComponent), }, ], template: "<div class=\"header-container\">\n <i class=\"drag-icon\" (mousedown)=\"onTap($event)\">\n <svg\n width=\"16px\"\n height=\"16px\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n >\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <path\n d=\"M4.5,1.5 L5.5,1.5 C6.05228475,1.5 6.5,1.94771525 6.5,2.5 L6.5,3.5 C6.5,4.05228475 6.05228475,4.5 5.5,4.5 L4.5,4.5 C3.94771525,4.5 3.5,4.05228475 3.5,3.5 L3.5,2.5 C3.5,1.94771525 3.94771525,1.5 4.5,1.5 Z M10.5,1.5 L11.5,1.5 C12.0522847,1.5 12.5,1.94771525 12.5,2.5 L12.5,3.5 C12.5,4.05228475 12.0522847,4.5 11.5,4.5 L10.5,4.5 C9.94771525,4.5 9.5,4.05228475 9.5,3.5 L9.5,2.5 C9.5,1.94771525 9.94771525,1.5 10.5,1.5 Z M4.5,6.5 L5.5,6.5 C6.05228475,6.5 6.5,6.94771525 6.5,7.5 L6.5,8.5 C6.5,9.05228475 6.05228475,9.5 5.5,9.5 L4.5,9.5 C3.94771525,9.5 3.5,9.05228475 3.5,8.5 L3.5,7.5 C3.5,6.94771525 3.94771525,6.5 4.5,6.5 Z M10.5,6.5 L11.5,6.5 C12.0522847,6.5 12.5,6.94771525 12.5,7.5 L12.5,8.5 C12.5,9.05228475 12.0522847,9.5 11.5,9.5 L10.5,9.5 C9.94771525,9.5 9.5,9.05228475 9.5,8.5 L9.5,7.5 C9.5,6.94771525 9.94771525,6.5 10.5,6.5 Z M4.5,11.5 L5.5,11.5 C6.05228475,11.5 6.5,11.9477153 6.5,12.5 L6.5,13.5 C6.5,14.0522847 6.05228475,14.5 5.5,14.5 L4.5,14.5 C3.94771525,14.5 3.5,14.0522847 3.5,13.5 L3.5,12.5 C3.5,11.9477153 3.94771525,11.5 4.5,11.5 Z M10.5,11.5 L11.5,11.5 C12.0522847,11.5 12.5,11.9477153 12.5,12.5 L12.5,13.5 C12.5,14.0522847 12.0522847,14.5 11.5,14.5 L10.5,14.5 C9.94771525,14.5 9.5,14.0522847 9.5,13.5 L9.5,12.5 C9.5,11.9477153 9.94771525,11.5 10.5,11.5 Z\"\n fill=\"#C7CAD0\"\n ></path>\n </g>\n </svg>\n </i>\n <ng-container *ngIf=\"nestedColumn\">\n <span class=\"childtable-toggler\" (click)=\"toggleChildrenTable()\">\n <ng-container *ngIf=\"childrenTableOpen\">\n <svg\n *ngIf=\"!iconFoldTable\"\n width=\"16px\"\n height=\"16px\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n class=\"svg-icon svg-icon-close\"\n >\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <rect x=\"0.5\" y=\"0.5\" width=\"15\" height=\"15\" rx=\"2\"></rect>\n <rect x=\"4\" y=\"7\" width=\"8\" height=\"2\"></rect>\n </g>\n </svg>\n <span class=\"customized-icon\" *ngIf=\"iconFoldTable\" [innerHTML]=\"iconFoldTable | safe : 'html'\"></span>\n </ng-container>\n <ng-container *ngIf=\"!childrenTableOpen\">\n <svg\n *ngIf=\"!iconUnFoldTable\"\n width=\"16px\"\n height=\"16px\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n class=\"svg-icon svg-icon-open-folder\"\n >\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <rect x=\"0.5\" y=\"0.5\" width=\"15\" height=\"15\" rx=\"2\"></rect>\n <path\n d=\"M8.75,4 L8.75,7.25 L12,7.25 L12,8.75 L8.749,8.75 L8.75,12 L7.25,12 L7.249,8.75 L4,8.75 L4,7.25 L7.25,7.25 L7.25,4 L8.75,4 Z\"\n ></path>\n </g>\n </svg>\n <span class=\"customized-icon\" *ngIf=\"iconUnFoldTable\" [innerHTML]=\"iconUnFoldTable | safe : 'html'\"></span>\n </ng-container>\n </span>\n </ng-container>\n <span class=\"title\">\n <ng-content></ng-content>\n </span>\n <d-table-sort *ngIf=\"sortable\" [sortDirection]=\"sortDirection\" [showSortIcon]=\"showSortIcon\" (sortEvent)=\"onSort($event)\"></d-table-sort>\n <d-table-filter\n *ngIf=\"filterable\"\n [showFilterIcon]=\"showFilterIcon\"\n [beforeFilter]=\"beforeFilter\"\n [customFilterTemplate]=\"customFilterTemplate\"\n [extraFilterTemplate]=\"extraFilterTemplate\"\n [column]=\"column\"\n [searchFn]=\"searchFn\"\n [filterList]=\"filterList\"\n [filterIconActive]=\"filterIconActive\"\n (filterIconActiveChange)=\"onFilterIconActive($event)\"\n [filterMultiple]=\"filterMultiple\"\n [closeWhenScroll]=\"closeFilterWhenScroll\"\n [filterBoxWidth]=\"filterBoxWidth\"\n [filterBoxHeight]=\"filterBoxHeight\"\n (filterChange)=\"emitFilterData($event)\"\n (filterToggle)=\"emitFilterToggle($event)\"\n ></d-table-filter>\n</div>\n", styles: [".devui-font-size-base{font-size:var(--devui-font-size, 12px)}.devui-font-base{font-size:var(--devui-font-size, 12px);font-weight:var(--devui-font-content-weight, normal);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-modal-title{font-size:var(--devui-font-size-modal-title, 18px)}.devui-font-modal-title{font-size:var(--devui-font-size-modal-title, 18px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-page-title{font-size:var(--devui-font-size-page-title, 16px)}.devui-font-page-title{font-size:var(--devui-font-size-page-title, 16px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-secondary-title{font-size:var(--devui-font-size-card-title, 14px)}.devui-font-secondary-title{font-size:var(--devui-font-size-card-title, 14px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}:host{font-weight:700;color:var(--devui-text, #191919);font-size:var(--devui-font-size-sm, 12px)}:host:has(.devui-dropdown-open) d-table-sort{display:block!important}\n"] }] }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT] }] }], propDecorators: { resizeEnabledClass: [{ type: HostBinding, args: ['class.resizeable'] }], operableClass: [{ type: HostBinding, args: ['class.operable'] }], sortActiveClass: [{ type: HostBinding, args: ['class.sort-active'] }], filterActiveClass: [{ type: HostBinding, args: ['class.filter-active'] }], stickyLeftClass: [{ type: HostBinding, args: ['class.devui-sticky-left-cell'] }], stickyRightClass: [{ type: HostBinding, args: ['class.devui-sticky-right-cell'] }], stickyLeftStyle: [{ type: HostBinding, args: ['style.left'] }], stickyRightStyle: [{ type: HostBinding, args: ['style.right'] }], resizeEnabled: [{ type: Input }], filterable: [{ type: Input }], beforeFilter: [{ type: Input }], customFilterTemplate: [{ type: Input }], extraFilterTemplate: [{ type: Input }], searchFn: [{ type: Input }], showFilterIcon: [{ type: Input }], filterList: [{ type: Input }], filterIconActive: [{ type: Input }], filterMultiple: [{ type: Input }], closeFilterWhenScroll: [{ type: Input }], filterBoxWidth: [{ type: Input }], filterBoxHeight: [{ type: Input }], filterChange: [{ type: Output }], filterToggle: [{ type: Output }], sortable: [{ type: HostBinding, args: ['class.can-sort'] }, { type: Input }], sortDirection: [{ type: Input }], showSortIcon: [{ type: Input }], sortDirectionChange: [{ type: Output }], sortChange: [{ type: Output }], colDraggable: [{ type: Input }], nestedColumn: [{ type: Input }], iconFoldTable: [{ type: Input }], iconUnFoldTable: [{ type: Input }], tableViewRefElement: [{ type: Input }], resizeEndEvent: [{ type: Output }], resizeStartEvent: [{ type: Output }], resizingEvent: [{ type: Output }], minWidth: [{ type: Input }], maxWidth: [{ type: Input }], fixedLeft: [{ type: Input }], fixedRight: [{ type: Input }], isLastFixedLeft: [{ type: HostBinding, args: ['class.devui-last-sticky-left-cell'] }, { type: Input }], isFirstFixedRight: [{ type: HostBinding, args: ['class.devui-first-sticky-right-cell'] }, { type: Input }], childrenTableOpen: [{ type: Input }], toggleChildrenTableEvent: [{ type: Output }], tapEvent: [{ type: Output }], column: [{ type: Input }], onMousedown: [{ type: HostListener, args: ['mousedown', ['$event']] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vZGV2dWkvZGF0YS10YWJsZS90YWJsZS9oZWFkL3RoL3RoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2RldnVpL2RhdGEtdGFibGUvdGFibGUvaGVhZC90aC90aC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFHTixNQUFNLEVBQ04sU0FBUyxFQUVULFdBQVcsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUE0QixNQUFNLE1BQU0sQ0FBQztBQUMzRCxPQUFPLEVBQWdCLGFBQWEsRUFBZ0IsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDOzs7Ozs7QUFjdEMsTUFBTSxPQUFPLGdCQUFnQjtJQXNGM0IsWUFDRSxPQUFtQixFQUNYLFNBQW9CLEVBQ3BCLElBQVksRUFDWixHQUFzQixFQUNKLEdBQVE7UUFIMUIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDSixRQUFHLEdBQUgsR0FBRyxDQUFLO1FBMUZILHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUM3QixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUNuQixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN0QixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDakIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDdkIscUJBQWdC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Q0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNJLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFNRSxRQUFRO3NCQURoQixXQUFXO3VCQUFDLGdCQUFnQjs7c0JBQzVCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNJLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUVFLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFJRyxhQUFhO3NCQUFyQixLQUFLO2dCQUlHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUVJLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBRUUsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxlQUFlO3NCQUR2QixXQUFXO3VCQUFDLG1DQUFtQzs7c0JBQy9DLEtBQUs7Z0JBRUcsaUJBQWlCO3NCQUR6QixXQUFXO3VCQUFDLHFDQUFxQzs7c0JBQ2pELEtBQUs7Z0JBa0JHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDSSx3QkFBd0I7c0JBQWpDLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRSxNQUFNO3NCQUFkLEtBQUs7Z0JBdUhOLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBOZ1pvbmUsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPdXRwdXQsXHJcbiAgUmVuZGVyZXIyLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVGVtcGxhdGVSZWZcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZnJvbUV2ZW50LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRmlsdGVyQ29uZmlnLCBTb3J0RGlyZWN0aW9uLCBTb3J0RXZlbnRBcmcgfSBmcm9tICcuLi8uLi8uLi9kYXRhLXRhYmxlLm1vZGVsJztcclxuaW1wb3J0IHsgVEFCTEVfVEggfSBmcm9tICcuL3RoLnRva2VuJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yKi9cclxuICBzZWxlY3RvcjogJ1tkSGVhZENlbGxdJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGguY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RoLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICBwcm92aWRlOiBUQUJMRV9USCxcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGFibGVUaENvbXBvbmVudCksXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJsZVRoQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIEBIb3N0QmluZGluZygnY2xhc3MucmVzaXplYWJsZScpIHJlc2l6ZUVuYWJsZWRDbGFzcyA9IGZhbHNlO1xyXG4gIEBIb3N0QmluZGluZygnY2xhc3Mub3BlcmFibGUnKSBvcGVyYWJsZUNsYXNzID0gZmFsc2U7XHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zb3J0LWFjdGl2ZScpIHNvcnRBY3RpdmVDbGFzcyA9IGZhbHNlO1xyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZmlsdGVyLWFjdGl2ZScpIGZpbHRlckFjdGl2ZUNsYXNzID0gZmFsc2U7XHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kZXZ1aS1zdGlja3ktbGVmdC1jZWxsJykgc3RpY2t5TGVmdENsYXNzID0gZmFsc2U7XHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kZXZ1aS1zdGlja3ktcmlnaHQtY2VsbCcpIHN0aWNreVJpZ2h0Q2xhc3MgPSBmYWxzZTtcclxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmxlZnQnKSBzdGlja3lMZWZ0U3R5bGU6IHN0cmluZztcclxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLnJpZ2h0Jykgc3RpY2t5UmlnaHRTdHlsZTogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKSByZXNpemVFbmFibGVkOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGZpbHRlcmFibGU6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgYmVmb3JlRmlsdGVyOiAodmFsdWUpID0+IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+IHwgT2JzZXJ2YWJsZTxib29sZWFuPjtcclxuICBASW5wdXQoKSBjdXN0b21GaWx0ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBASW5wdXQoKSBleHRyYUZpbHRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBJbnB1dCgpIHNlYXJjaEZuOiAodGVybTogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPEFycmF5PGFueT4+O1xyXG4gIEBJbnB1dCgpIHNob3dGaWx0ZXJJY29uID0gdHJ1ZTtcclxuICBASW5wdXQoKSBmaWx0ZXJMaXN0OiBBcnJheTxGaWx0ZXJDb25maWc+O1xyXG4gIEBJbnB1dCgpIGZpbHRlckljb25BY3RpdmU6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZmlsdGVyTXVsdGlwbGUgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGNsb3NlRmlsdGVyV2hlblNjcm9sbDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBmaWx0ZXJCb3hXaWR0aDogYW55O1xyXG4gIEBJbnB1dCgpIGZpbHRlckJveEhlaWdodDogYW55O1xyXG4gIEBPdXRwdXQoKSBmaWx0ZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbHRlckNvbmZpZ1tdPigpO1xyXG4gIEBPdXRwdXQoKSBmaWx0ZXJUb2dnbGUgPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgIGlzT3BlbjogYm9vbGVhbjtcclxuICAgIGNoZWNrbGlzdDogRmlsdGVyQ29uZmlnW107XHJcbiAgfT4oKTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jYW4tc29ydCcpXHJcbiAgQElucHV0KCkgc29ydGFibGU6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgc29ydERpcmVjdGlvbjogU29ydERpcmVjdGlvbjtcclxuICBASW5wdXQoKSBzaG93U29ydEljb24gPSB0cnVlO1xyXG4gIEBPdXRwdXQoKSBzb3J0RGlyZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTb3J0RGlyZWN0aW9uPigpO1xyXG4gIEBPdXRwdXQoKSBzb3J0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTb3J0RXZlbnRBcmc+KCk7XHJcblxyXG4gIEBJbnB1dCgpIGNvbERyYWdnYWJsZTogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KCkgbmVzdGVkQ29sdW1uOiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEBkZXByZXRlZCDlrZjlnKh4eHPpo47pmanvvIzkvb/nlKjmlrnpnIDmoLnmja7oh6rouqvlnLrmma/lgZrlpb3pmLLmiqRcclxuICAgKi9cclxuICBASW5wdXQoKSBpY29uRm9sZFRhYmxlOiBzdHJpbmc7XHJcbiAgLyoqXHJcbiAgICogQGRlcHJldGVkIOWtmOWcqHh4c+mjjumZqe+8jOS9v+eUqOaWuemcgOagueaNruiHqui6q+WcuuaZr+WBmuWlvemYsuaKpFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGljb25VbkZvbGRUYWJsZTogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKSB0YWJsZVZpZXdSZWZFbGVtZW50OiBFbGVtZW50UmVmO1xyXG5cclxuICBAT3V0cHV0KCkgcmVzaXplRW5kRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIHJlc2l6ZVN0YXJ0RXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIHJlc2l6aW5nRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBJbnB1dCgpIG1pbldpZHRoOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbWF4V2lkdGg6IHN0cmluZztcclxuXHJcbiAgQElucHV0KCkgZml4ZWRMZWZ0OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZml4ZWRSaWdodDogc3RyaW5nO1xyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZGV2dWktbGFzdC1zdGlja3ktbGVmdC1jZWxsJylcclxuICBASW5wdXQoKSBpc0xhc3RGaXhlZExlZnQ6IGJvb2xlYW47XHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kZXZ1aS1maXJzdC1zdGlja3ktcmlnaHQtY2VsbCcpXHJcbiAgQElucHV0KCkgaXNGaXJzdEZpeGVkUmlnaHQ6IGJvb2xlYW47XHJcblxyXG4gIHJlc2l6ZUJhclJlZkVsZW1lbnQ6IEhUTUxFbGVtZW50O1xyXG4gIGVsZW