1.1.8 • Published 3 years ago

color-range-slider v1.1.8

Weekly downloads
317
License
MIT
Repository
github
Last release
3 years ago

Color slider

Demo color slider

Slider

Установка

npm install

Режим работы

// develop
npm run start

// production
npm run build

// deploy gh pages
npm run deploy

// Запустить тесты
npm run test

// eslint
npm run lint

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

Для подключения плагина необходимо:

  • Подключить jquery к своему проекту
  • Подключить файлы slider.js и slider.css к своему проекту

Для установки через npm

  • https://www.npmjs.com/package/color-range-slider
  • Выполнить npm i color-range-slider
  • Сделать импорт из node_modules например:
  • import '../../../node_modules/color-range-slider/dist/slider.js'
  • import '../../../node_modules/color-range-slider/dist/slider.css'

Для создания слайдера c настройками "по умолчанию" выполните:

создать в html

<div class='slider'></div>

Js

$('.slider').colorSlider();

Для создания слайдера с пользовательскими настройками:

$('.slider').colorSlider({
    gradient: 'blue',
    color: 'yellow',
    orientation: "vertical",
    max: 100,
    from: 30,
    to: 70
});

Доступные настройки

Название свойстваПо умолчаниюОписаниеТипы
typedoubleОдин бегунок либо диапазонstring "single"/"double"
orientationhorizontalВертикальный/Горизонтальный видstring "vertical"/"horizontal"
min0Минимальное значениеnumber,все number могут быть -, или дробными
max10Максимальное значениеnumber
step1шаг может быть дробнымnumber
from3начальная позиция первого бегункаnumber
to7начальная позиция второго бегункаnumber
postfixpostfix/prefix для tooltipлюбое значение
isPostfixtrueпоказать/скрыть postfix/prefix для tooltipboolean
isPrefixfalseдобавить/заменить prefix/postfixboolean
isLabeltrueпоказать/скрыть сами tooltips над бегункамиboolean
isScaletrueпоказать/скрыть шкалуboolean
color'orange'цвет первого бегунка, части бара если включен градиент, либо цвет всего слайдерацвет в 16-ом формате #fff, либо например green/red
isScalePostfixtrueпоказать/скрыть postfix/prefix шкалыboolean
scalePostfixpostfix/prefix шкалылюбое значение
minMaxfalseпоказать/скрыть min и max по краям слайдераboolean
fromTofalseпоказать/скрыть from и to по краям слайдераboolean
isTrackPostfixtrueпоказать/скрыть postfix/prefixboolean
trackPostfixpostfix/prefixлюбое значение
isColortrueизменять цвет или нетboolean
changeColortrueсменить оттенокboolean
isChangeColortrueиспользовать только css цветаboolean
isGradienttrueвключить/выключить градиентboolean
gradient'purple'второй цвет для создания градиента#fff, green/red и.т.д
gradientDeg45градус направление градиентаnumber
isColorOutfalseвыводить значение текущего цвета вместо значенийboolean
isSeparatetrueвкл/выкл делитель ' ' 10000 10 000boolean
separate' 'по умолчанию равен пробелупринимает точку/запятую ' ' . , либо будет ' '
onlyDivisionsfalseоставить только деления шкалыboolean

API Методы

названиеописание
changeПозволяет сменить любой параметр
getValueПозволяет получить любой актуальный параметр

Результат примера на дэмо странице сверху

  • Для изменения слайдера например через custom-button
  • Вызвать метод change с необходимыми параметрами
$('.js-custom-button').click(() => {

  $('.js-test-slider').colorSlider('change', {color: "red", gradient: "blue", max: 1000, from: 200, to: 800, onlyDivisions: true, fromTo: true})
  
})

Для вывода информации в custom инпуты нужно:

  • Создать инпуты
  • Вызвать метод getValue с функцией и выводить любой параметр
  • Обратившись через точку, например: values.from
$('.js-test-slider').colorSlider('getValue',(values) => {   
    $('.js-custom-from').val(values.from);    
    $('.js-custom-to').val(values.to); 
});    

Для того что бы все изменения сохранялись:

  • Нужно сохранить текущие параметры с которыми был создан слайдер
  • Потом эти параметры обновлять при следущих изменениях
  • Это может понадобиться, если нужно будет менять значения в инпутах на прямую и что бы слайдер на них реагировал
  let state = { gradient: 'blue',
    color: 'yellow',
    orientation: "vertical",
    max: 100,
    from: 30,
    to: 70 }

 $('.slider').colorSlider(state);

 $('.js-test-slider').colorSlider('change', {
 
 from: 2, ...state   }

Архитектура

Плагин выполнен согласно шаблону проектирования MVP (Model-View-Presenter).

Модель. Класс Model

Модель выполняет бизнес логику и уведомляет EventEmitter об изменениях состояния, Модель ничего не знает о Виде и Презентере

Представление (или Вид). Класс View

Вид не знает о Модели и Презентере. Он содержит логику связанную с отображением слайдера, и действия юзера, делится на подвиды subView где каждый подвид является элементом слайдера. Так же он уведомляет об новых изменениях EventEmitter. Подвиды не знают не чего о Виде и о других подвидах, и изменяются получая новое состояние которое им обновляет Вид.

Представитель. Класс Presenter

Презентер является связующим звеном Модели и Вида, и подписывается в EventEmitter на их изменение, с помощью патерна EventEmitter для двунаправленного общения реализуется слабое связывание которое позволяет передать нужные данные из Вида в Модель и наоборот.

Track subView, подвид. Класс Track

subView класс который рисует трэк, и создаёт 2 элемента для вывода значений в начале и в конце трэка. Не обращается к другим классам, не уведомляет об изменениях.

Bar subView, подвид. Класс Bar

subView класс который рисует бар,и изменяет цвет от изменения состояния Вида, не обращается к другим классам, не уведомляет об изменениях.

Scale subView, подвид. Класс Scale

subView класс который рисует шкалу, и создаёт деления шкалы в зависимости от максимального и минимального значения, не обращается к другим классам, и не уведомляет об изменениях.

Rollers subView, подвид. Класс Rollers

subView класс который рисует 2 бегунка, и 2 tooltip для бегунков, изменяет цвет от изменения состояния Вида и своего положения, не обращается к другим классам и не уведомляет об изменениях.

EventEmitter, паттерн для обмена информацией. Класс EventEmitter

Класс который получает уведомление об изменении состояния у Вида или Модели и уведомляет об этом Презентера.

UML

На графике у нас выходит 3 основных слоя и 4 подвида, связь между слоями слабая, что позволяет разрабатывать слои по отдельности, Вид расширяет базовые параметры, и передает их в подвиды для большей их независимости.

License ISC

Copyright (c) 2021 Igor Pichnenko