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

OSCHINA-MIRROR/bl_it-vue-bl-markdown-editor

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

Vue-BL-Markdown-Editor

Один из основанных на markdown-it высоко расширяемых компонентов редактора Vue.

Позволяет предоставлять слоты для пользовательских инструментов.

Позволяет динамически регистрировать компоненты и вставлять их в определённые позиции панели инструментов.

Преимущества: можно полностью настроить функции панели инструментов, вызовы markdown-it плагинов и т. д.

Демонстрационный сайт.

Установка

$ npm install vue-bl-markdown-editor --save

Использование (как включить)

main.js:

    // Глобальная регистрация
    // import with ES6
    import Vue from 'vue'
    import MarkDownEditor from 'vue-bl-markdown-editor'
    import 'vue-bl-markdown-editor/dist/css/main.css'
    // use
    Vue.use(MarkDownEditor);
    new Vue({
        'el': '#main',
        data() {
            return { value: '' }
        }
    })

Требования к конфигурации

<!--Этот компонент использует библиотеку шрифтов font-awesome, пожалуйста, предварительно импортируйте её в index.html-->
<link href="//cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
<!--Стиль кода, подробнее см. https://highlightjs.org -->
<link href="//cdn.bootcss.com/highlight.js/9.14.1/styles/atom-one-dark.min.css" rel="stylesheet">
<!--Тема редактора-->
<link href="//cdn.bootcss.com/github-markdown-css/3.0.1/github-markdown.min.css" rel="stylesheet">

Конфигурация

Имя Тип Значение по умолчанию Описание
placeholder String Введите контент Текст подсказки
height Number 500 Высота редактора
isShowToolBar Boolean true Отображать ли панель инструментов
isShowToolBarRight Boolean true Отображать ли правую панель инструментов
showMode String edit Режим отображения, edit, see режим редактирования/предварительного просмотра, isSplit не действует при истинном значении
isShowSplit Boolean true Разделять ли экран, только один может отображаться на мобильном телефоне, это состояние недействительно
toolBars Array См. ниже Панель инструментов, порядок и отображение
config Object См. ниже Конфигурация панели инструментов
isSyncScroll Boolean true Синхронно ли прокручивать

Панель инструментов

Пример панели инструментов разработчика см. src/dev/toolBar

Имя Описание
bold Жирный
italic Курсив
header Заголовок
underline Подчёркивание
strikethrough Зачёркивание
thumb-tack Пометка
superscript Верхний индекс
subscript Нижний индекс
align-left Выравнивание по левому краю
align-center Выравнивание по центру
align-right Выравнивание по правому краю
quote-left Цитата абзаца
list-ol Нумерованный список
list-ul Маркированный список
link Ссылка
picture Изображение
code Блок кода
table Таблица
emoji Эмоджи
undo Отменить
repeat Повторить
trash Очистить
about О программе, сохранить
separator Разделитель

Конфигурации панели инструментов

config: {
  emojis:{
    // Настройка нескольких эмодзи
    more:[{name:'test',datas:['1','2']}],
    // перекрывать ли по умолчанию
    isCover: true
  },
  // Конфигурация загрузки изображений
  picture:{
    // Необходимо передать путь после загрузки/перетаскивания/загрузки
    // from paste/drag/upload вставить/перетащить/загрузить
    // Обратный вызов асинхронный, используйте promise для примера, см. src/dev/App.vue
    uploadCallback: (file,from)=>{
      return new Promise(resolve => {
        resolve({name:'',url: ''});
      });
    },
    // Анализировать ли список изображений
    resolving: true
  }
}
toolBars:[
  'bold','italic',...больше
]

Пользовательская панель инструментов

let editor = this.$refs.editor;
let toolBar1 = editor.registerToolBarComponent('demo1',require(Example1.vue));
editor.addToolBar(toolBar1/*,0 вставить позицию*/);

Методы

Имя Параметр Описание
registerToolBarComponent Имя компонента, компонент Динамически зарегистрировать компонент как панель инструментов, посмотреть, как использовать выше
addToolBar Экземпляр компонента registerToolBarComponent, добавить позицию (по умолчанию последняя) Добавить панель инструментов компонента
delToolBar Удалить позицию Удалить панель инструментов указанной позиции (не включая вставленную через слот)
insertContent Префикс, содержимое, суффикс, принудительно ли заменять содержимое, вставлять ли при выборе Вставить содержимое

События

Имя Параметр Описание
input Содержимое Ввести содержимое
ready markdownit Загрузка завершена

Слот

Имя Описание
tool-bar-left-head Слот панели инструментов слева
tool-bar-left-foot Слот левой панели инструментов в конце
tool-bar-right-head Слот правой панели инструментов в начале
tool-bar-right-foot Слот правой панели инструментов в конце

Расширенное использование

  • Разрешить самостоятельно вызывать markdownit для регистрации плагинов (получать из события ready или напрямую из ref)

TODO

  • Базовая панель инструментов
  • Реализовать функцию отмены и повтора
  • Совместимость с мобильными устройствами
  • Улучшение стиля
  • Пакет dev демонстрационной страницы проекта
  • Ссылка на стиль highlight (*)
  • Конфигурация обратного вызова загрузки изображения
  • Загрузка изображений путём вставки
  • Загрузка изображений перетаскиванием
  • Синхронная прокрутка (временно рассчитывается в соответствии с высотой полосы прокрутки**)

Проблемы совместимости записи звука (тестирование chrom/firefox нормальное, edge не удалось)

Должен работать под https, тестовый запуск нормальный

  • Пользовательский компонент панели инструментов для записи звука (*)
  • Не поддерживается загрузка локальных изображений (ожидается решение)

Тестирование

  • Пользовательская панель инструментов
  • Конфигурация эмодзи
  • Загрузка изображения
  • Вставка изображения
  • Перетаскивание для загрузки

ОШИБКА

  • Невозможно автоматически перенести последнюю строку списка в следующую строку для отображения (используйте клавишу ввода для автоматической прокрутки вниз)
  • Проблема с положением последнего элемента панели инструментов на мобильных устройствах (восстановление невозможно, поскольку ПК имитирует мобильные устройства)
  • Рендеринг в реальном времени слишком медленный, что приводит к зависанию и неправильному отображению

Надеемся, что мы сможем разработать полезные панели инструментов вместе

Поддержка

UTOOLS1567434353534.png

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

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

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления

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

Участники

все

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

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