# Swipe actions

# TeslaCloud.SwipeActions

# Параметры

Параметр Значение по умолчанию Описание
contentEl | .tc-clib-swipeActions-content Селектор основного содержимого.
leftActionsEl | .tc-clib-swipeActions-actions--left Селектор блока действий для свайпа вправо.
rightActionsEl | .tc-clib-swipeActions-actions--right Селектор блока действий для свайпа влево.
triggerThreshold 33 Порог срабатывания действия по свайпу в процентах.
autoClose true Автоматическое скриытие блока действий, когда фокус переключен на другой элемент.

# События

# tc-swipe-left

Срабатывает после события touchend при свайпе к leftActions на triggerThreshold%.

# Параметры события
Параметр Тип Описание
swipeTarget HTMLElement Элемент leftActions.
action string Значение атрибута data-js-action элемента leftActions.

# tc-swipe-right

Срабатывает после события touchend при свайпе к rightActions на triggerThreshold%.

# Параметры события
Параметр Тип Описание
swipeTarget HTMLElement Элемент rightActions.
action string Значение атрибута data-js-action элемента rightActions.

# Примеры

# Шаблон

<xf:comment>Подключение JavaScript ниже требуется только для версий XenForo до 2.3.0</xf:comment>
<xf:js src="TC/ComponentLibrary/swipe_actions.js" addon="TC/ComponentLibrary" min="1" />

<xf:js src="Demo/Playground/swipe_actions.js" addon="Demo/Playground" min="1" />

<xf:css src="tc_clib_swipe_actions.less" />
<xf:css>
	.tc-clib-swipeActions .tc-clib-swipeActions-actions .tc-clib-swipeActions-actionIcon,
	.tc-clib-swipeActions .tc-clib-swipeActions-actions .button .fa--xf
	{
	font-size: 1.25em;
	}
</xf:css>

<xf:if is="$xf.visitor.user_id">
	<div class="block">
		<div class="block-container">
			<div class="block-body">
				<div class="block-row">
					<div class="tc-clib-swipeActions"
						 data-xf-init="tc-swipe-actions demo-swipe-actions">
						<div class="tc-clib-swipeActions-actions tc-clib-swipeActions-actions--left"
							 data-js-action="markDone">
							<span class="tc-clib-swipeActions-actionIcon">
								<xf:fa icon="fa-check-double" />
							</span>
						</div>
						<div class="tc-clib-swipeActions-content">
							<div class="contentRow">
								<div class="contentRow-main">
									Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur vitae tempus
									dolor, sed eleifend dui. Aliquam accumsan nisl tellus, at euismod ex bibendum ut.
									Cras ac ex sit amet diam sagittis luctus in sed diam. Nam eu congue erat, et lacinia
									nibh. Donec placerat ligula a leo pharetra, eget scelerisque dolor tempor. Sed at mi
									nisl.

									<div class="contentRow-minor tc-clib-swipeActions-actions--fallback">
										<a href="javascript:"
										   class="contentRow-extra"
										   onclick="XF.overlayMessage('Action', 'markDone')">Done
										</a>
										<a href="javascript:"
										   class="contentRow-extra"
										   onclick="XF.overlayMessage('Action', 'edit')">Edit
										</a>
										<a href="javascript:"
										   class="contentRow-extra"
										   onclick="XF.overlayMessage('Action', 'delete')">Delete
										</a>
									</div>
								</div>
							</div>
						</div>
						<div class="tc-clib-swipeActions-actions tc-clib-swipeActions-actions--right">
							<xf:button class="button--plain button--iconOnly"
									   href="javascript:"
									   onclick="XF.overlayMessage('Swipe action', 'edit')"
									   fa="fa-pen" />
							<xf:button class="button--plain button--iconOnly"
									   href="javascript:"
									   onclick="XF.overlayMessage('Swipe action', 'delete')"
									   fa="fa-trash" />
						</div>
					</div>
				</div>
			</div>
		</div>
	</div>
</xf:if>

# JavaScript-обработчик для XenForo 2.1.0+

window.Demo = window.Demo || {};

(($, window, document, _undefined) =>
{
	'use strict';

	Demo.SwipeActions = XF.Element.newHandler({
		options: {},

		init()
		{
			const $target = this.$target;

			$target.on('tc-swipe-left', (e, data) =>
			{
				if (!data.action.length)
				{
					return;
				}

				XF.overlayMessage('Swipe action', data.action);
			});
		}
	});

	XF.Element.register('demo-swipe-actions', 'Demo.SwipeActions');
})
(window.jQuery, window, document);

# JavaScript-обработчик для XenForo 2.3.0+

window.Demo = window.Demo || {};

((window, document) =>
{
	'use strict';

	Demo.SwipeActions = XF.Element.newHandler({
		options: {},

		init()
		{
			const target = this.target;

			XF.on(target, 'tc-swipe-left', (e, data) =>
			{
				if (!data.action.length)
				{
					return;
				}

				XF.overlayMessage('Swipe action', data.action);
			});
		}
	});

	XF.Element.register('demo-swipe-actions', 'Demo.SwipeActions');
})
(window, document);