New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

tableofthings

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

tableofthings

Small library to drag and drop

latest
npmnpm
Version
0.0.2
Version published
Maintainers
1
Created
Source

Table Of Things

Table of things - маленькая библиотека для работы с Drag & Drop.

Особенности

  • Не используются нативные Drag & Drop события
  • Поддержка touch-событий
  • 0 зависимостей
  • Хорошие показатели в плане производительности

Установка

npm i tableofthings

Использование

<div id="table">
  <div id="thing-1"></div>
  <div id="thing-2"></div>
  <div id="thing-3"></div>
</div>
import ToT from 'tableofthings';

let a = new ToT.Table({
  el: document.getElementById("table"),
  thingsAutoDetect: true
})

После этого все дочерние (на 1 уровень) узлы #table будут хвататься мышкой (или пальцем) и перетаскиваться.

Все, что касается стилей, Вы можете настроить сами. Например, курсор-рука, которая сжимается в кулак при клике:

#thing-1 {
  cursor: grab;
}
#thing-1:active {
  cursor: grabbing;
}

Однако, некоторый CSS библиотека настраивает сама. Например, контейнер автоматически станет position: relative, а дочерние узлы position: absolute.

Более подробно

Table

Экземпляр Table создается с помощью соответствующего конструктора.

new ToT.Table({
  el: document.getElementById("table")
})

Опции конструктора:

ОпцияОписание
elУказывает DOM элемент для привязки
thingsAutoDetectАвтоматически создает экземпляры Thing из потомков el

Методы экземпляра:

МетодОписание
mount(el)Привязывает экземпляр к el
destroy()Отвязывает экземпляр от el (ниже подробно)
on(type,callback)Добавляет слушателя для события type, когда происходит событие type, вызывается колбэк callback
addThing(thing)Добавляет Thing экземпляр к Table экземпляру
getDOM()Возвращает привязанный el
getSize()Возвращает размер этого экземпляра Table в пикселях [<w>, <h>]
getThings()Возвращает массив всех экземляров Thing, которые были добавлены к этому экземпляру Table
getActiveThings()Возвращает массив всех экземляров Thing, которые были добавлены к этому экземпляру Table, с которыми в данный момент ведется взаимодействие

Допускается создавать Table вот так:

let table = new ToT.Table()

Однако, чтобы работать с ним в дальнейшем необходимо вызвать table.mount(el) для привязки экземпляра Table к DOM. Также, можно вызвать table.destroy() для отвязки экземпляра Table. Под отвязкой подразумевается удаление слушателей событий, сброс установленных ранее стилевых настроек и так далее. Обычно, такое нужно использовать, когда Вы заканчиваете работу с Table.

Что касается событий - их пока всего два типа. dragstart срабатывает, когда пользователь начинает двигать объект, dragend - когда заканчивает.

Thing

Экземпляр Thing создается также с помощью соответствующего конструктора.

let thing = new ToT.Thing({
  el: document.getElementById("thing")
})

Но, как Вы могли видеть, можно передать thingsAutoDetect: true при создании экземпляра Table. Тогда все экземпляры Thing будут созданы автоматически из потомков элемента, к которому привязан ранее созданный экземпляр Table.

Кстати, чтобы сообщить экземпляру Table о созданном экземпляре Thing нужно использовать:

table.addThing(thing)

Опции конструктора:

ОпцияОписание
elУказывает DOM элемент для привязки
initialXНачальное значение x
initialYНачальное значение y

Начальное положение будет задано, только если переданы оба параметра. Также, вы можете задать его с помощью CSS.

Методы экземпляра (почти такие же как и у Table):

МетодОписание
mount(el)Привязывает экземпляр к el
destroy()Отвязывает экземпляр от el
on(type,callback)Добавляет слушателя для события type, когда происходит событие type, вызывается колбэк callback
getPosition()Возвращает положение этого экземпляра Thing в пикселях [<x>, <y>]
getSize()Возвращает размер этого экземпляра Thing в пикселях [<w>, <h>]
getSpeed()Возвращает скорость передвижения этого экземпляра Thing в пикс/сек [<v_x>, <v_y>]
getDOM()Возвращает привязанный el

Работает все так же, как и с Table. Главное отличие - разный пэйлоад в событиях. В случае с Thing помимо tableRef, в событии будет также thingRef.

Демо

git clone https://github.com/yungvldai/tableofthings ToT-repo && cd ToT-repo
npm install && npm run start-demo

FAQs

Package last updated on 26 Jun 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts