UNPKG

devextreme

Version:

JavaScript/TypeScript Component Suite for Responsive Web Development

73 lines (72 loc) 2.24 kB
/** * DevExtreme (esm/__internal/ui/list/list.edit.decorator.swipe.js) * Version: 25.2.7 * Build date: Tue May 05 2026 * * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ import { fx } from "../../../common/core/animation"; import { move } from "../../../common/core/animation/translator"; import { Deferred } from "../../../core/utils/deferred"; import { getWidth } from "../../../core/utils/size"; import EditDecorator from "../../ui/list/list.edit.decorator"; import { register as registerDecorator } from "../../ui/list/list.edit.decorator_registry"; class EditDecoratorSwipe extends EditDecorator { _shouldHandleSwipe() { return true } _renderItemPosition($itemElement, offset, animate) { const deferred = Deferred(); const itemOffset = offset * this._itemElementWidth; if (animate) { fx.animate($itemElement.get(0), { to: { left: itemOffset }, type: "slide", complete() { deferred.resolve($itemElement, offset) } }) } else { move($itemElement, { left: itemOffset }); deferred.resolve() } return deferred.promise() } _swipeStartHandler($itemElement) { this._itemElementWidth = getWidth($itemElement) } _swipeUpdateHandler($itemElement, e) { const { offset: offset } = e; this._renderItemPosition($itemElement, offset) } _swipeEndHandler($itemElement, e) { const { targetOffset: targetOffset } = e; this._renderItemPosition($itemElement, targetOffset, true).done(($element, offset) => { if (Math.abs(offset)) { this._list.deleteItem($element.get(0)).fail(() => { this._renderItemPosition($element, 0, true) }) } }) } } registerDecorator("delete", "swipe", EditDecoratorSwipe);