UNPKG

@duoduo-oba/ng-devui

Version:

DevUI components based on Angular

203 lines 18.3 kB
/** * @fileoverview added by tsickle * Generated from: directives/drop-sort-sync.directive.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Directive, Input, ElementRef, Optional, Self } from '@angular/core'; import { Subscription } from 'rxjs'; import { DroppableDirective } from './droppable.directive'; import { DragDropSyncService } from '../services/drag-drop-sync.service'; import { Utils } from '../shared/utils'; var DropSortSyncDirective = /** @class */ (function () { function DropSortSyncDirective(el, droppable, dragDropSyncService) { var _this = this; this.el = el; this.droppable = droppable; this.dragDropSyncService = dragDropSyncService; this.dropSyncGroup = ''; this.direction = 'v'; // 与sortContainer正交的方向 // 与sortContainer正交的方向 this.subscription = new Subscription(); this.subRenderEvent = (/** * @param {?} nativeStyle * @return {?} */ function (nativeStyle) { _this.syncGroupDirectives = _this.dragDropSyncService.getDropSyncByGroup(_this.dropSyncGroup).filter((/** * @param {?} directive * @return {?} */ function (directive) { return directive !== _this; })); _this.syncGroupDirectives.forEach((/** * @param {?} dir * @return {?} */ function (dir) { dir.renderPlaceholder(nativeStyle, _this.droppable); })); }); this.subInsertionEvent = (/** * @param {?} cmd * @return {?} */ function (cmd) { _this.syncGroupDirectives = _this.dragDropSyncService.getDropSyncByGroup(_this.dropSyncGroup).filter((/** * @param {?} directive * @return {?} */ function (directive) { return directive !== _this; })); _this.syncGroupDirectives.forEach((/** * @param {?} dir * @return {?} */ function (dir) { dir.insertPlaceholderCommand({ command: cmd.command, container: dir.sortContainer, relatedEl: dir.getChildrenElByIndex(dir.sortContainer, cmd.index) }); })); }); } /** * @return {?} */ DropSortSyncDirective.prototype.ngOnInit = /** * @return {?} */ function () { this.sortContainer = this.el.nativeElement; if (this.droppable) { this.sortContainer = this.droppable.getSortContainer(); this.subscription.add(this.droppable.placeholderInsertionEvent.subscribe(this.subInsertionEvent)).add(this.droppable.placeholderRenderEvent.subscribe(this.subRenderEvent)); } }; /** * @return {?} */ DropSortSyncDirective.prototype.ngOnDestroy = /** * @return {?} */ function () { if (this.subscription) { this.subscription.unsubscribe(); } }; /** * @param {?} target * @param {?=} index * @return {?} */ DropSortSyncDirective.prototype.getChildrenElByIndex = /** * @param {?} target * @param {?=} index * @return {?} */ function (target, index) { if (index === undefined || target && target.children && target.children.length < index || index < 0) { return null; } return this.sortContainer.children.item(index); }; /** * @param {?} nativeStyle * @param {?} droppable * @return {?} */ DropSortSyncDirective.prototype.renderPlaceholder = /** * @param {?} nativeStyle * @param {?} droppable * @return {?} */ function (nativeStyle, droppable) { if (!this.placeholder) { this.placeholder = document.createElement(droppable.placeholderTag); this.placeholder.className = 'drag-placeholder'; this.placeholder.classList.add('drag-sync-placeholder'); this.placeholder.innerText = droppable.placeholderText; } var width = nativeStyle.width, height = nativeStyle.height; if (this.direction === 'v') { this.placeholder.style.width = width + 'px'; this.placeholder.style.height = this.sortContainer.getBoundingClientRect().height + 'px'; } else { this.placeholder.style.height = height + 'px'; this.placeholder.style.width = this.sortContainer.getBoundingClientRect().width + 'px'; } Utils.addElStyles(this.placeholder, droppable.placeholderStyle); }; /** * @param {?} cmd * @return {?} */ DropSortSyncDirective.prototype.insertPlaceholderCommand = /** * @param {?} cmd * @return {?} */ function (cmd) { if (cmd.command === 'insertBefore' && cmd.container) { cmd.container.insertBefore(this.placeholder, cmd.relatedEl); return; } if (cmd.command === 'append' && cmd.container) { cmd.container.appendChild(this.placeholder); return; } if (cmd.command === 'remove' && cmd.container) { if (cmd.container.contains(this.placeholder)) { cmd.container.removeChild(this.placeholder); } return; } }; DropSortSyncDirective.decorators = [ { type: Directive, args: [{ selector: '[dDropSortSync]', exportAs: 'dDropSortSync' },] } ]; /** @nocollapse */ DropSortSyncDirective.ctorParameters = function () { return [ { type: ElementRef }, { type: DroppableDirective, decorators: [{ type: Optional }, { type: Self }] }, { type: DragDropSyncService } ]; }; DropSortSyncDirective.propDecorators = { dropSyncGroup: [{ type: Input, args: ['dDropSortSync',] }], direction: [{ type: Input, args: ['dropSyncDirection',] }] }; return DropSortSyncDirective; }()); export { DropSortSyncDirective }; if (false) { /** @type {?} */ DropSortSyncDirective.prototype.dropSyncGroup; /** @type {?} */ DropSortSyncDirective.prototype.direction; /** @type {?} */ DropSortSyncDirective.prototype.subscription; /** @type {?} */ DropSortSyncDirective.prototype.syncGroupDirectives; /** @type {?} */ DropSortSyncDirective.prototype.placeholder; /** @type {?} */ DropSortSyncDirective.prototype.sortContainer; /** @type {?} */ DropSortSyncDirective.prototype.subRenderEvent; /** @type {?} */ DropSortSyncDirective.prototype.subInsertionEvent; /** @type {?} */ DropSortSyncDirective.prototype.el; /** * @type {?} * @private */ DropSortSyncDirective.prototype.droppable; /** * @type {?} * @private */ DropSortSyncDirective.prototype.dragDropSyncService; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1zb3J0LXN5bmMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZGV2dWkvZHJhZ2Ryb3AvIiwic291cmNlcyI6WyJkaXJlY3RpdmVzL2Ryb3Atc29ydC1zeW5jLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUd4QztJQWFFLCtCQUFtQixFQUFjLEVBQStCLFNBQTZCLEVBQ25GLG1CQUF3QztRQURsRCxpQkFDc0Q7UUFEbkMsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUErQixjQUFTLEdBQVQsU0FBUyxDQUFvQjtRQUNuRix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBUjFCLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ2YsY0FBUyxHQUFhLEdBQUcsQ0FBQyxDQUFDLHNCQUFzQjs7UUFDN0UsaUJBQVksR0FBaUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQXlCaEQsbUJBQWM7Ozs7UUFBRyxVQUFDLFdBQTRDO1lBQzVELEtBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFJLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLENBQUMsS0FBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU07Ozs7WUFBQyxVQUFBLFNBQVMsSUFBSSxPQUFBLFNBQVMsS0FBSyxLQUFJLEVBQWxCLENBQWtCLEVBQUMsQ0FBQztZQUNuSSxLQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTzs7OztZ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QUFDO2FBQzdDO1lBQ0QsT0FBTztTQUNSO0lBQ0gsQ0FBQzs7Z0JBM0ZGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixRQUFRLEVBQUUsZUFBZTtpQkFDMUI7Ozs7Z0JBVjBCLFVBQVU7Z0JBRTVCLGtCQUFrQix1QkFrQlksUUFBUSxZQUFJLElBQUk7Z0JBakI5QyxtQkFBbUI7OztnQ0FVekIsS0FBSyxTQUFDLGVBQWU7NEJBQ3JCLEtBQUssU0FBQyxtQkFBbUI7O0lBc0Y1Qiw0QkFBQztDQUFBLEFBN0ZELElBNkZDO1NBeEZZLHFCQUFxQjs7O0lBQ2hDLDhDQUEyQzs7SUFDM0MsMENBQXNEOztJQUN0RCw2Q0FBZ0Q7O0lBQ2hELG9EQUFrRDs7SUFDbEQsNENBQXlCOztJQUN6Qiw4Q0FBMkI7O0lBc0IzQiwrQ0FLQzs7SUFFRCxrREFTQzs7SUFwQ1csbUNBQXFCOzs7OztJQUFHLDBDQUF5RDs7Ozs7SUFDM0Ysb0RBQWdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgRWxlbWVudFJlZiwgT3B0aW9uYWwsIFNlbGYsIE9uSW5pdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBEcm9wcGFibGVEaXJlY3RpdmUgfSBmcm9tICcuL2Ryb3BwYWJsZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBEcmFnRHJvcFN5bmNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZHJhZy1kcm9wLXN5bmMuc2VydmljZSc7XHJcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vc2hhcmVkL3V0aWxzJztcclxuaW1wb3J0IHsgRHJhZ1BsYWNlaG9sZGVySW5zZXJ0aW9uRXZlbnQsIERyYWdQbGFjZWhvbGRlckluc2VydGlvbkluZGV4RXZlbnQgfSBmcm9tICcuL3BsYWNlaG9sZGVyLWluc2VydGlvbi1ldmVudC50eXBlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2REcm9wU29ydFN5bmNdJyxcclxuICBleHBvcnRBczogJ2REcm9wU29ydFN5bmMnXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgRHJvcFNvcnRTeW5jRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgnZERyb3BTb3J0U3luYycpIGRyb3BTeW5jR3JvdXAgPSAnJztcclxuICBASW5wdXQoJ2Ryb3BTeW5jRGlyZWN0aW9uJykgZGlyZWN0aW9uOiAndid8ICdoJyA9ICd2JzsgLy8g5LiOc29ydENvbnRhaW5lcuato+S6pOeahOaWueWQkVxyXG4gIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gIHN5bmNHcm91cERpcmVjdGl2ZXM6IEFycmF5PERyb3BTb3J0U3luY0RpcmVjdGl2ZT47XHJcbiAgcGxhY2Vob2xkZXI6IEhUTUxFbGVtZW50O1xyXG4gIHNvcnRDb250YWluZXI6IEhUTUxFbGVtZW50O1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZWw6IEVsZW1lbnRSZWYgLCBAT3B0aW9uYWwoKSBAU2VsZigpIHByaXZhdGUgZHJvcHBhYmxlOiBEcm9wcGFibGVEaXJlY3RpdmUsXHJcbiAgICBwcml2YXRlIGRyYWdEcm9wU3luY1NlcnZpY2U6IERyYWdEcm9wU3luY1NlcnZpY2UpIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zb3J0Q29udGFpbmVyID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xyXG4gICAgaWYgKHRoaXMuZHJvcHBhYmxlKSB7XHJcbiAgICAgIHRoaXMuc29ydENvbnRhaW5lciA9IHRoaXMuZHJvcHBhYmxlLmdldFNvcnRDb250YWluZXIoKTtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICAgIHRoaXMuZHJvcHBhYmxlLnBsYWNlaG9sZGVySW5zZXJ0aW9uRXZlbnQuc3Vic2NyaWJlKHRoaXMuc3ViSW5zZXJ0aW9uRXZlbnQpXHJcbiAgICAgICkuYWRkKFxyXG4gICAgICAgIHRoaXMuZHJvcHBhYmxlLnBsYWNlaG9sZGVyUmVuZGVyRXZlbnQuc3Vic2NyaWJlKHRoaXMuc3ViUmVuZGVyRXZlbnQpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBzdWJSZW5kZXJFdmVudCA9IChuYXRpdmVTdHlsZToge3dpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyfSkgPT4ge1xyXG4gICAgdGhpcy5zeW5jR3JvdXBEaXJlY3RpdmVzID0gdGhpcy5kcmFnRHJvcFN5bmNTZXJ2aWNlLmdldERyb3BTeW5jQnlHcm91cCh0aGlzLmRyb3BTeW5jR3JvdXApLmZpbHRlcihkaXJlY3RpdmUgPT4gZGlyZWN0aXZlICE9PSB0aGlzKTtcclxuICAgIHRoaXMuc3luY0dyb3VwRGlyZWN0aXZlcy5mb3JFYWNoKGRpciA9PiB7XHJcbiAgICAgIGRpci5yZW5kZXJQbGFjZWhvbGRlcihuYXRpdmVTdHlsZSwgdGhpcy5kcm9wcGFibGUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzdWJJbnNlcnRpb25FdmVudCA9IChjbWQ6IERyYWdQbGFjZWhvbGRlckluc2VydGlvbkluZGV4RXZlbnQpID0+IHtcclxuICAgIHRoaXMuc3luY0dyb3VwRGlyZWN0aXZlcyA9IHRoaXMuZHJhZ0Ryb3BTeW5jU2VydmljZS5nZXREcm9wU3luY0J5R3JvdXAodGhpcy5kcm9wU3luY0dyb3VwKS5maWx0ZXIoZGlyZWN0aXZlID0+IGRpcmVjdGl2ZSAhPT0gdGhpcyk7XHJcbiAgICB0aGlzLnN5bmNHcm91cERpcmVjdGl2ZXMuZm9yRWFjaChkaXIgPT4ge1xyXG4gICAgICBkaXIuaW5zZXJ0UGxhY2Vob2xkZXJDb21tYW5kKHtcclxuICAgICAgICBjb21tYW5kOiBjbWQuY29tbWFuZCxcclxuICAgICAgICBjb250YWluZXI6IGRpci5zb3J0Q29udGFpbmVyLFxyXG4gICAgICAgIHJlbGF0ZWRFbDogZGlyLmdldENoaWxkcmVuRWxCeUluZGV4KGRpci5zb3J0Q29udGFpbmVyLCBjbWQuaW5kZXgpXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldENoaWxkcmVuRWxCeUluZGV4KHRhcmdldCwgaW5kZXg/KSB7XHJcbiAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCB8fCB0YXJnZXQgJiYgdGFyZ2V0LmNoaWxkcmVuICYmIHRhcmdldC5jaGlsZHJlbi5sZW5ndGggPCBpbmRleCB8fCBpbmRleCA8IDApIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5zb3J0Q29udGFpbmVyLmNoaWxkcmVuLml0ZW0oaW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgcmVuZGVyUGxhY2Vob2xkZXIobmF0aXZlU3R5bGU6IHt3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcn0sIGRyb3BwYWJsZSkge1xyXG4gICAgaWYgKCF0aGlzLnBsYWNlaG9sZGVyKSB7XHJcbiAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGRyb3BwYWJsZS5wbGFjZWhvbGRlclRhZyk7XHJcbiAgICAgIHRoaXMucGxhY2Vob2xkZXIuY2xhc3NOYW1lID0gJ2RyYWctcGxhY2Vob2xkZXInO1xyXG4gICAgICB0aGlzLnBsYWNlaG9sZGVyLmNsYXNzTGlzdC5hZGQoJ2RyYWctc3luYy1wbGFjZWhvbGRlcicpO1xyXG4gICAgICB0aGlzLnBsYWNlaG9sZGVyLmlubmVyVGV4dCA9IGRyb3BwYWJsZS5wbGFjZWhvbGRlclRleHQ7XHJcbiAgICB9XHJcbiAgICBjb25zdCB7d2lkdGgsIGhlaWdodH0gPSBuYXRpdmVTdHlsZTtcclxuICAgIGlmICh0aGlzLmRpcmVjdGlvbiA9PT0gJ3YnKSB7XHJcbiAgICAgIHRoaXMucGxhY2Vob2xkZXIuc3R5bGUud2lkdGggPSB3aWR0aCArICdweCc7XHJcbiAgICAgIHRoaXMucGxhY2Vob2xkZXIuc3R5bGUuaGVpZ2h0ID0gdGhpcy5zb3J0Q29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCArICdweCc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnBsYWNlaG9sZGVyLnN0eWxlLmhlaWdodCA9IGhlaWdodCArICdweCc7XHJcbiAgICAgIHRoaXMucGxhY2Vob2xkZXIuc3R5bGUud2lkdGggPSB0aGlzLnNvcnRDb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggKyAncHgnO1xyXG4gICAgfVxyXG4gICAgVXRpbHMuYWRkRWxTdHlsZXModGhpcy5wbGFjZWhvbGRlciwgZHJvcHBhYmxlLnBsYWNlaG9sZGVyU3R5bGUpO1xyXG5cclxuICB9XHJcblxyXG4gIGluc2VydFBsYWNlaG9sZGVyQ29tbWFuZChjbWQ6IERyYWdQbGFjZWhvbGRlckluc2VydGlvbkV2ZW50KSB7XHJcbiAgICBpZiAoY21kLmNvbW1hbmQgPT09ICdpbnNlcnRCZWZvcmUnICYmIGNtZC5jb250YWluZXIpIHtcclxuICAgICAgY21kLmNvbnRhaW5lci5pbnNlcnRCZWZvcmUodGhpcy5wbGFjZWhvbGRlciwgY21kLnJlbGF0ZWRFbCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChjbWQuY29tbWFuZCA9PT0gJ2FwcGVuZCcgJiYgY21kLmNvbnRhaW5lcikge1xyXG4gICAgICBjbWQuY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMucGxhY2Vob2xkZXIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoY21kLmNvbW1hbmQgPT09ICdyZW1vdmUnICYmIGNtZC5jb250YWluZXIpIHtcclxuICAgICAgaWYgKGNtZC5jb250YWluZXIuY29udGFpbnModGhpcy5wbGFjZWhvbGRlcikpIHtcclxuICAgICAgICBjbWQuY29udGFpbmVyLnJlbW92ZUNoaWxkKHRoaXMucGxhY2Vob2xkZXIpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiJdfQ==