1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-vuejs-dialog

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Vuejs Dialog Plugin

Лёгкий, основанный на промисах диалог для отображения оповещений, запросов и подтверждений.

A lightweight, promise based alert, prompt and confirm dialog.

Скриншоты:

  • Плагин Vuejs Dialog (Vuejs Dialog Plugin) — пример использования: ./src/docs/img/html-enabled.png?raw=true.

  • Демонстрация использования плагина Vuejs Dialog (Vuejs Dialog Plugin): ./src/docs/img/demo.gif?raw=true.

Демонстрация

https://godofbrowser.github.io/vuejs-dialog/

Важные обновления в версии v1.x.x

  1. Диалог всегда будет разрешаться с объектом. (т. е. обратный вызов для продолжения всегда будет получать объект).
  2. Для использования директив возвращаемый объект (см. пункт 1) будет включать узел. Узел — это элемент, к которому была привязана директива (см. проблему № 5).
  3. Стили необходимо будет включить явно, поскольку они были извлечены в отдельный файл (см. проблему № 28).
  4. Если загрузчик включён глобально и диалог запускается через директиву без обратного вызова, загрузчик игнорируется при кликах по продолжению.
  5. Возможность регистрации пользовательских представлений. Это позволяет использовать пользовательскую логику, пользовательские кнопки и т. д. (см. проблемы № 13, № 14, № 33).
  6. Пользовательский класс добавляется к родительскому узлу (см. проблему № 25).
  7. При установке через тег скрипта HTML:
    • Библиотека была названа пространством имён, так как она была разделена на две части. Основная библиотека — это плагин, а миксин полезен в пользовательских компонентах.
    • В связи с этим новый способ установки плагина немного отличается: window.Vue.use(VuejsDialog.main.default).
    • Миксин можно добавить к компонентам следующим образом: mixins: [VuejsDialog.mixin.default, ...otherMixins].

Установка

HTML

// Include vuejs
<script type="text/javascript" src="./path/to/vue.min.js"></script>

// Include vuejs-dialog plugin
<link href="./path/to/vuejs-dialog.min.css" rel="stylesheet">
<script type="t/javascript" src="./path/to/vuejs-dialog.min.js"></script>
<script type="t/javascript" src="./path/to/vuejs-dialog-mixin.min.js"></script> // only needed in custom components

<script>
// Tell Vue to install the plugin.
window.Vue.use(VuejsDialog.main.default)
</script>

Менеджер пакетов

// установка через npm
npm i -S vuejs-dialog

// или

// установка через yarn
yarn add vuejs-dialog
// затем

// импортировать в проект
import Vue from 'vue';
import VuejsDialog from 'vuejs-dialog';
import VuejsDialogMixin from 'vuejs-dialog/dist/vuejs-dialog-mixin.min.js'; // только в пользовательских компонентах

// включить стиль по умолчанию
import 'vuejs-dialog/dist/vuejs-dialog.min.css';

// Сообщить Vue о необходимости установить плагин.
Vue.use(VuejsDialog);

Webpack External

// Если вы включаете через тег script и импортируете как внешний Webpack
// Конфигурация Webpack
{
    // ... другая конфигурация webpack
    externals: {
        // .. другие внешние элементы, если таковые имеются
        'vuejs-dialog': 'VuejsDialog'
    }
}
// затем

// Импортировать в проект
import Vue from 'vue';
import VuejsDialog из 'vuejs-dialog';

// Сообщите Vue о необходимости установки плагина.
Vue.use(VuejsDialog.main.default);

// Миксин доступен по адресу: VuejsDialog.mixin.default

Основное использование внутри приложения Vuejs

// В любом месте вашего приложения Vuejs.

// Запустить диалоговое окно оповещения
this.$dialog.alert('Запрос выполнен!').then(function(dialog) ```
console.log('Closed');
});

// Trigger a confirmation dialog
this.$dialog
  .confirm('Пожалуйста, подтвердите, чтобы продолжить')
  .then(function(dialog) {
    console.log('Нажата кнопка "Продолжить"');
  })
  .catch(function() {
    console.log('Нажата кнопка "Отменить"');
  });

Basic Usage outside a vuejs application

// VuejsDialog Methods are also available on the global vue
// Это позволяет использовать плагин внутри приложения ReactJs или просто любого приложения на JavaScript
// Просто включите vue, vuejs-dialog, попросите vue использовать плагин и всё:

Vue.dialog.alert('Запрос выполнен!').then(function(dialog) {
  console.log('Закрыто');
});

Vue.dialog
  .confirm('Пожалуйста, подтвердите, чтобы продолжить')
  .then(function(dialog) {
    console.log('Нажата кнопка "Продолжить"');
  })
  .catch(function() {
    console.log('Нажата кнопка "Отмена"');
  });

Return value on success

// Всякий раз, когда пользователь нажимает кнопку «Продолжить»,
// обещание, возвращённое вызовом диалога, будет разрешено с объектом диалога следующей формы:

{
    close: function | иногда | Метод, который можно использовать для закрытия диалогового окна, если оно находится в состоянии загрузки
    loading: function | иногда | Метод, используемый для остановки загрузчика диалогового окна
    node: DOMElement | иногда | Элемент DOM, к которому была привязана директива при срабатывании через директиву
    data: any | всегда | Данные, отправленные с положительным действием. Полезно в запросах или пользовательских компонентах, где у вас есть несколько кнопок продолжения
}

// Пример:

<button class="btn-danger"
        v-confirm="{
            loader: true,
            ok: okCallback,
            cancel: cancelcallback,
            message: 'Некоторое подтверждающее сообщение'"
>

okCallback: function (dialog) {
        dialog.loading(false) // остановить загрузчик (вам это не понадобится)
        dialog.close() // останавливает загрузчик и закрывает диалоговое окно
        dialog.node.className // === "btn-danger"
        dialog.data // === null
}

Prompt (собрать данные от пользователя)

this.$dialog
  .prompt({
    title: "Давайте послушаем вас",
    body: "Что самое важное в жизни?",
  }, {
    promptHelp: 'Введите текст в поле ниже и нажмите "[+:okText]"'
  })
  .then(dialog => {
    // Срабатывает при нажатии кнопки «Продолжить»
    // Показать предупреждение с вводом пользователя в качестве сообщения
    this.$dialog.alert(dialog.data || '[пусто]')
  })
  .catch(() => {
    // Срабатывает, когда диалог закрывается пользователем

    console.log('Приглашение отклонено');
  });

Использование с ajax — загрузчик включён

this.$dialog
  .confirm("Если вы удалите эту запись, она исчезнет навсегда.", {
    loader: true // по умолчанию: false — когда установлено значение true, кнопка «Продолжить» показывает загрузчик при нажатии.
    // И объект диалога будет передан в обратный вызов then()
  })
  .then(dialog => {
    // Срабатывает при нажатии кнопки «Продолжить»

    // dialog.loading(false) // останавливает загрузчик кнопки «Продолжить»
    // dialog.loading(true) // снова запускает загрузчик кнопки «Продолжить»
    // dialog.close() // останавливает загрузчик и закрывает диалог

    // выполнить некоторые действия, такие как запрос ajax.
    setTimeout(() => {
      console.log('Действие удаления завершено ');
      dialog.close();
    }, 2500);
  })
  .catch(() => {
    // Срабатывает при нажатии кнопки отмены

    console.log('Удаление прервано');
  });

Использование в качестве директивы

Если вы не передаёте сообщение, будет использоваться глобальное/стандартное сообщение.

<button type="submit" v-confirm="">отправить</button>
// Обратные вызовы могут быть предоставлены
// Примечание: Если для «loader» установлено значение true, обратный вызов makeAdmin получит объект «dialog»
// Что полезно для закрытия диалога после завершения транзакции.
<button v-confirm="{ok: makeAdmin, cancel: doNothing, message: 'Пользователь получит права администратора. Сделать пользователя администратором?'}">Сделать администратором</button>
methods: {
    makeAdmin: function() {
        // Выполнить действия

    },
    doNothing: function() {
        // Ничего не делать или выполнять другие действия
    }
}

Более практичное использование директивы v-confirm с несколькими триггерами Решение 1

// При переборе пользователей
<button v-for="user in users"
        v-confirm="{
            loader: true,
            ok: dialog => makeAdmin(dialog, user),
            cancel: doNothing,
            message: 'Пользователю будут предоставлены права администратора. Сделать пользователя администратором?'}"
>
Сделать администратором
</button>
methods: {
    makeAdmin: function(dialog, user) {
        // Сделать пользователя администратором из бэкенда
        /* tellServerToMakeAdmin(user) */

        // По завершении закрыть диалоговое окно
        /* dialog.close() */

    },
    doNothing: function() {
        // Ничего не делать или что-то ещё
    }
}

(new) Более практичное использование директивы v-confirm с несколькими триггерами — Решение 2

// При переборе пользователей
<button v-for="user in users"
        :data-user="user"
        v-confirm="{
            loader: true,
            ok: makeAdmin,
            cancel: doNothing,
            message: 'Пользователю будут предоставлены права администратора. Сделать пользователя администратором?'}"
>
Сделать администратором
</button>
methods: {
    makeAdmin: function(dialog) {
        let button = dialog.node // node доступен только при срабатывании через директиву
        let user = button.dataset.user

        // Сделать пользователя администратором из бэкенда
        /* tellServerToMakeAdmin(user) */

        // По завершении закрыть диалоговое окно
        /* dialog.close() */

    },
    doNothing: function() {
        // Ничего не делать или что-то ещё
    }
}

Для директивы v-confirm, если обратный вызов «ОК» не предоставлен, будет вызвано событие по умолчанию.

// Поведение по умолчанию при использовании на ссылках
<a href="http://example.com" v-confirm="'Это приведёт вас на http://example.com. Действуйте осторожно'">Перейти на example.com</a>

Установка заголовка диалогового окна (new)

Теперь вы можете установить заголовок диалогового окна, передав сообщение в виде объекта вместо строки. Объект сообщения должен содержать title и body.

let message = {
  title: 'Vuejs Dialog Plugin',
  body: 'Лёгкий, основанный на обещаниях диалог с оповещениями, приглашениями и подтверждениями'
};

this.$dialog.confirm(message);

Опции

// Параметры и опции

let message = "Вы уверены?";

let options = {
    html: false, // установите значение true, если ваше сообщение содержит HTML-теги. например: "Удалить <b>Foo</b> ?"
    loader: false, // установите значение true, если вы хотите, чтобы диалоговое окно показывало загрузчик после нажатия на "продолжить"
    reverse: false, // поменяйте местами кнопки (слева направо и наоборот)
    okText: 'Продолжить',
    cancelText: 'Закрыть',
    animation: 'zoom', // Доступно: "zoom", "bounce", "fade"
    type: 'basic', // скоро появится: 'soft', 'hard'
    verification: 'continue', // для жёсткого подтверждения пользователю будет предложено ввести это, чтобы включить кнопку продолжения
    verificationHelp: 'Введите "[+:verification]" ниже для подтверждения', // Справка по проверке. [+:verification] будет сопоставлен с 'options.verification' (т. е. 'Введите "continue" ниже для подтверждения')
    clicksCount: 3, // для мягкого подтверждения пользователю будет предложено нажать на кнопку "продолжить" 3 раза, прежде чем действительно продолжить
    backdropClose: false, // установите значение true, чтобы закрыть диалоговое окно при нажатии за пределами диалогового окна, т. е. при щелчке по маске
    customClass: '' // Пользовательский класс, который будет добавлен к родительскому узлу для текущего экземпляра диалога
};

this.$dialog.confirm(message, options)
    .then(function () {
        // Это будет вызвано, когда пользователь нажмёт "продолжить"
    })
    .catch(function () {
        // Это будет вызвано, когда пользователь нажмёт на отмену
    });

Глобальная конфигурация

// Вы также можете задать все свои значения по умолчанию в момент установки.
// Это будет ваша глобальная конфигурация

// используйте VuejsDialog.main.default, если включаете через тег скрипта
Vue.use(VuejsDialog, {
  html: true,
  loader: true,
  okText: 'Продолжать',
  cancelText: 'Отменить',
  animation: 'bounce'
});

// Обратите внимание, что локальные конфигурации будут учитываться перед глобальными конфигурациями.
// Это даёт вам возможность переопределить глобальную конфигурацию для отдельного вызова.

CSS

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Лёгкий компонент диалоговых окон с предупреждениями, подсказками и подтверждениями, разработанный на основе Promise. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-vuejs-dialog.git
git@api.gitlife.ru:oschina-mirror/mirrors-vuejs-dialog.git
oschina-mirror
mirrors-vuejs-dialog
mirrors-vuejs-dialog
master