Pull to refresh

MUX.Dialog плагин для красивых диалогов в вашем проекте

Reading time3 min
Views2.3K
Этот плагин позволит вам легко и элегантно выводить сообщения и небольшие формы в ваших веб-проектах, построенных на Mootools.

Основные характеристики


  1. Полнофунциональные диалоги. А значит из коробки работают модальность, многооконность, закрытие по Esc, перетаскивание, растягивание (опционально), удобный механизм добавления кнопок и другие вкусности. При этом все очень ненавязчиво.
  2. Простой API для кастомизации и манипуляции диалогами.
  3. Стилизация через CSS, что означает что многие, если не все свойства связанные с внешним видом и даже некоторые связаные с поведением можно переопределить в своих CSS файлах, а значит вы легко впишете диалоги в стиль своего проекта (см. примеры).
  4. События позволят вам перехватывать ключевые моменты поведения диалогов и дополнять их собственным поведением.
  5. Работает из коробки с MUX.Loaders, но не требует их если вы не хотите их использовать. Просто подключите файл лоадеров до диалогов и все — анимация сама запустится перед событием submit и остановится при закрытии.
  6. Полная документация и примеры.

Проект на github https://github.com/lavmax/MUX.Dialog.

Тестировалось на IE7+, FF3+, Chrome, Safari, Opera последних версий.

Некоторые примеры использования и кастомизации


Создание и вывод самого простого модального диалога с сообщением и кнопкой-крестиком для закрытия
new MUX.Dialog({
    content: new Element('p', {html: 'Текстовое сообщение для пользователя. Привет.'})
});

Создание и вывод типичного модального сообщения
new MUX.Dialog({
    title: 'Внимание!',
    content: new Element('p', {html: 'Текстовое сообщение для пользователя. Привет.'}),
    buttons: [{
        title: 'Я все понял',
        click: 'close'
    }]
});

Работа с событиями
new MUX.Dialog({
    title: 'Внимание!',
    content: new Element('p', {html: 'Текстовое сообщение для пользователя. Привет.'}),
    buttons: [{
        title: 'Я все понял',
        click: 'submit'
    }],
    onOpen: function()
    {
        // Манипуляция контентом при открытии диалога.
        // Контент к этому моменту уже загружен с сервера
        // и вставлен в документ, но еще невидим.
        this.content.getElement('my-selector').doSomething();
    },
    onSubmit: function()
    {
        // Этот код отработает при нажатии конпки 'Я все понял'.
        var self = this;
        new Request({
            ...,
            onFailure: function(xhr)
            {
                ...
                self.loader.stop();
            },
            onSuccess: function(responseText, responseXML)
            {
                ...
                self.close();
            }
        }).post();
    },
    onClose: function()
    {
        // Код onClose отработает при каждом закрытии диалога, 
        // в т.ч. по нажатию крестика в углу.
        // Для примера остановим анимацию 
        // (хотя на самом деле она и так останавливается при закрытии).
        this.loader.stop();
    }
});


Работа со стилями — изменяем курсор мыши. По умолчанию на заголовке и в уголке перетаскивания курсов имеет форму стрелки. Если, например, вы хотите сделать move и стрелку расширения окна добавьте в свой CSS следующие стили.
.mux-dialog-header {
    cursor: move;
}

.mux-dialog-resize-icon {
    cursor: se-resize;
}


Больше примеров работающих диалогов и кода.
Описание всех возможных опций, событий и методов тут.

Оговорюсь, прежде чем написать эту библиотеку я ознакомился со всем что лежит на Mootools Forge, Mocha UI, ExtJS и jQueryUI. Однако воздержусь от описания, чем мне не подошла каждая из перечисленных библиотек, дабы не разводить ненужных споров. Это каждый решит для себя сам.

Очень расчитываю на конструктивную критику в комментариях по всем аспектам (внешний вид, использование, код). Если вы будете использовать эту библиотеку в рабочих проектах дайте, пожалуйста, знать в личку или на github, чтобы я мог разместить ссылки на ваши проекты на github.
Tags:
Hubs:
+26
Comments25

Articles

Change theme settings