- OutlinerJS - это мощная JavaScript библиотека для создания интерактивных иерархических списков и древовидных структур, позволяющая легко управлять элементами и добавлять пользовательские действия.
- Библиотека OutlinerJS предоставляет разработчикам инструменты для быстрого создания интерфейсов с древовидной структурой, обогащенными множеством возможностей для пользовательского взаимодействия и настройки.
- OutlinerJS обеспечивает легкую интеграцию в веб-приложения и предоставляет гибкий API для управления данными и событиями, что делает ее отличным выбором для создания меню, навигационных панелей и других иерархических элементов интерфейса.
- Эта библиотека предоставляет интуитивно понятный способ создания и настройки интерактивных списков, снабженных разнообразными кнопками и обработчиками событий, что делает OutlinerJS идеальным инструментом для создания удобных и функциональных пользовательских интерфейсов.
OutlinerJS - это универсальная JavaScript библиотека для создания древовидных иерархических списков с обширными возможностями пользовательской настройки и интерактивности.
Интерактивный пример находится в файле проекта example/index.html
import OutlinerJS from './../init.js';
const outliner = new OutlinerJS(document.body);
Параметр инициализации отвечает, за то место, где будет развернуто навигационное меню
outliner.setValue([
{
type: "graph",
name: "Название элемента",
id: "id_element",
buttons: [
{
icons: {
enabled: "icons-download",
disabled: "icons-upload",
},
value: true,
type: "folder",
click: (value, elementId, element, e) => {
console.log(value, elementId, element, e);
},
},
{
icons: {
enabled: "icons-eye",
disabled: "icons-eye-none",
},
value: true,
type: "visibled",
click: (value, elementId, element, e) => {
console.log(value, elementId, element, e);
},
},
{
icons: {
enabled: "icons-stop",
disabled: "icons-circle",
},
value: true,
type: "locked",
click: (value, elementId, element, e) => {
console.log(value, elementId, element, e);
},
},
],
click: (elementId, element, e) => {
console.log('click', elementId, element, e);
},
selected: (elementId, element, elementsId, e) => {
console.log('selected', elementId, element, elementsId, e);
},
select: false,
rename: (value, elementId, element, e) => {
console.log('rename', value, elementId, element, e);
},
list: [
{
type: "folder",
name: "Название папки",
id: "id_element",
click: (elementId, element, e) => {
console.log('click', elementId, element, e);
},
selected: (elementId, element, elementsId, e) => {
console.log('selected', elementId, element, elementsId, e);
},
select: false,
rename: (value, elementId, element, e) => {
console.log('rename', value, elementId, element, e);
},
buttons: [
{
icons: {
enabled: "icons-eye",
disabled: "icons-eye-none",
},
value: false,
type: "visibled",
click: (value, elementId, element, e) => {
console.log(value, elementId, element, e);
},
},
{
icons: {
enabled: "icons-stop",
disabled: "icons-circle",
},
value: false,
type: "locked",
click: (value, elementId, element, e) => {
console.log(value, elementId, element, e);
},
},
],
list: [
{
type: "line",
name: "Название элемента",
id: "id_element",
click: (elementId, element, e) => {
console.log('click', elementId, element, e);
},
selected: (elementId, element, elementsId, e) => {
console.log('selected', elementId, element, elementsId, e);
},
select: false,
rename: (value, elementId, element, e) => {
console.log('rename', value, elementId, element, e);
},
list: [],
buttons: [
{
icons: {
enabled: "icons-eye",
disabled: "icons-eye-none",
},
value: false,
type: "visibled",
click: (value, elementId, element, e) => {
console.log(value, elementId, element, e);
},
},
{
icons: {
enabled: "icons-stop",
disabled: "icons-circle",
},
value: false,
type: "locked",
click: (value, elementId, element, e) => {
console.log(value, elementId, element, e);
},
},
],
},
{
type: "line",
name: "Название элемента",
id: "id_element",
click: (elementId, element, e) => {
console.log('click', elementId, element, e);
},
selected: (elementId, element, elementsId, e) => {
console.log('selected', elementId, element, elementsId, e);
},
select: false,
rename: (value, elementId, element, e) => {
console.log('rename', value, elementId, element, e);
},
list: [],
buttons: [
{
icons: {
enabled: "icons-eye",
disabled: "icons-eye-none",
},
value: false,
type: "visibled",
click: (value, elementId, element, e) => {
console.log(value, elementId, element, e);
},
},
{
icons: {
enabled: "icons-stop",
disabled: "icons-circle",
},
value: false,
type: "locked",
click: (value, elementId, element, e) => {
console.log(value, elementId, element, e);
},
},
],
},
],
},
{
type: "object",
name: "Название элемента",
id: "id_element",
click: (elementId, element, e) => {
console.log('click', elementId, element, e);
},
selected: (elementId, element, elementsId, e) => {
console.log('selected', elementId, element, elementsId, e);
},
select: false,
rename: (value, elementId, element, e) => {
console.log('rename', value, elementId, element, e);
},
list: [],
buttons: [
{
icons: {
enabled: "icons-eye",
disabled: "icons-eye-none",
},
value: false,
type: "visibled",
click: (value, elementId, element, e) => {
console.log(value, elementId, element, e);
},
},
{
icons: {
enabled: "icons-stop",
disabled: "icons-circle",
},
value: false,
type: "locked",
click: (value, elementId, element, e) => {
console.log(value, elementId, element, e);
},
},
],
},
],
},
]);
type
- Определяет тип картинки (значение по умолчанию:object
)- object - общее представление
- image - формат картинки
- text - формат текстового элемента
- node - формат узла
- graph - формат группы узлов и линий
- line - формат линий
- box - формат короба
- folder - формат папки
name
- Определяет название элемента (значение по умолчанию:Без имени
)id
- Определяет уникальный идентификатор свойства (значение по умолчанию: случайная строка)select
- Определяет будет ли значение выделено (значение по умолчанию:false
)buttons
- Определяет массив кнопок для текущего элемента (значение по умолчанию: пустой массив)
icons.enabled
- Определяет класс иконки в состоянии вклicons.disabled
- Определяет класс иконки в состоянии выклvalue
- Определяет значние по умолчаниюtype
- Определяет тип для кнопки (есть 2 заранее определенных типа: visibled и locked), можно указать любое значениеclick
- Это callback функция, которая будет вызвана в момент нажатие на кнопку
value
- Текущее значение для кнопкиelementId
- ID элемента к которому привязана кнопкаelement
- HTMLElement кнопкиe
- Данные о событии
click
- Это callback функция, которая будет вызвана в момент нажатие на элементelementId
- ID элемента к которому привязана кнопкаelement
- HTMLElement кнопкиe
- Данные о событии
selected
- Это callback функция, которая будет вызвана в момент выбора элементаelementId
- ID элемента к которому привязана кнопкаelement
- HTMLElement кнопкиelementsId
- Массив всех выбранных значений (массив ID)e
- Данные о событии
rename
- Это callback функция, которая будет вызвана в момент изменения имени у элемента (не сработает если имя не изменилось)value
- Новое имя для элементаelementId
- ID элемента к которому привязана кнопкаelement
- HTMLElement кнопкиe
- Данные о событии
list
- Массив принимающий вложения (Значение по умолчанию: пустой массив). Структура выглядит точно так же как и описано выше.
Добавляение происходит путем удаление предыдущих значений и добавления всех значений к текущему DOM объекту
outliner.getValue();
Добавляение происходит путем добавления новых значений к текущему DOM объекту
outliner.appendValue({...arrayItems});