0.1.0 • Published 4 years ago
cms-lib-test v0.1.0
CMS-VUE-LIB
Установка
$ git clone https://github.com/marketing-technologies/cms-vue-lib.git
$ cd cms-vue-lib
$ npm i
$ npm run build
Инициализация
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta
name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"
/>
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Vue minesweeper</title>
<link rel="stylesheet" href="public/font/bootstrap-icons.css" />
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css"
integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2"
crossorigin="anonymous"
/>
<link rel="stylesheet" href="dist/cms-lib-test.css" />
</head>
<body>
<div id="app">
<button
@click="reviewModalVisibly = true"
type="button"
class="btn btn-success"
>
Оставить отзыв
</button>
<button
@click="recordModalVisibly = true"
type="button"
class="btn btn-primary"
>
Записаться
</button>
<button
@click="questionModalVisibly = true"
type="button"
class="btn btn-success"
>
Задать вопрос
</button>
<review-dialog v-model="reviewModalVisibly"></review-dialog>
<record-dialog v-model="recordModalVisibly"></record-dialog>
<question-dialog v-model="questionModalVisibly"></question-dialog>
</div>
<script
src="https://code.jquery.com/jquery-3.5.1.slim.min.js"
integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj"
crossorigin="anonymous"
></script>
<script
src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"
integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN"
crossorigin="anonymous"
></script>
<script
src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.min.js"
integrity="sha384-w1Q4orYjBQndcko6MimVbzY0tgp4pWB4lZ7lr30WKz0vr/aWKhXdBNmNb5D92v7s"
crossorigin="anonymous"
></script>
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script src="dist/cms-lib-test.umd.min.js"></script>
<script>
var app = new Vue({
data() {
return {
recordModalVisibly: false,
questionModalVisibly: false,
reviewModalVisibly: false,
};
},
});
app.$mount("#app");
</script>
</body>
</html>
ПРИМЕЧАНИЕ В ДОКУМЕНТЕ НЕЛЬЗЯ ВЫЗВАТЬ КОМПОНЕНТЫ ОДИНАРНЫМИ ТЕГАМИ ИСПОЛЬЗУЙТЕ ДВОЙНЫЕ
<review-dialog v-model="reviewModalVisibly"/> <!--НЕЛЬЗЯ ТАК ДЕЛАТЬ--->
<record-dialog v-model="recordModalVisibly"/> <!--НЕЛЬЗЯ ТАК ДЕЛАТЬ--->
<question-dialog v-model="questionModalVisibly"/> <!--НЕЛЬЗЯ ТАК ДЕЛАТЬ--->
<!------------------------------------------------------------------------>
<review-dialog v-model="reviewModalVisibly"></review-dialog> <!-- НУЖНО ТАК ДЕЛАТЬ --->
<record-dialog v-model="recordModalVisibly"></record-dialog> <!-- НУЖНО ТАК ДЕЛАТЬ --->
<question-dialog v-model="questionModalVisibly"></question-dialog> <!-- НУЖНО ТАК ДЕЛАТЬ --->
уже имеются предконфигурированные компоненты uniclinic.pro
- question-dialog --- Модальное окно для вопроса
- record-dialog --- Модальное окно для записи
- review-dialog --- Модальное окно для отзыва
Props(основные)
title:"", //- заголовок
subTitle:"", //- Под заголовок
modalSize:"", //- размер(стандарты bootstrap)
navigation: Boolean //- Включить или выключить навигацию(смотрите ниже - поле section)
sections:[
....
{
//- настройка поле section
},
{
//- настройка поле section
},
{
//- настройка поле section
},
.....
]
Props - sections
Другими словами это массив из обьетов описываюший страницы модального окна на пример
{
"navigation": {
// - Если хотите использовать этот пункт вам нужно включить section.navigation (смотрите выше)
// - Если поле navigation: false; то може этот пункт не указать он всё ровно не отабразится))
"className": "my-custom-class", //- Класс для div которое обарачивет icon и caption у него ещё есть класс col
"icon": {
// - Можете использовать любой иконочный шрифт которое вам нужно
"active": "bi bi-pencil",
"disabled": "bi bi-bootstrap-fill",
"done": "bi bi-check-circle",
},
"caption": "Пункт Данные",
},
"className": "", //- класс страницы
"fields":[
{
//- КОНФИГУРАЦИИ РЕДАКТРОРА (пункт section.field)
},
{
//- КОНФИГУРАЦИИ РЕДАКТРОРА (пункт section.field)
},
{
//- КОНФИГУРАЦИИ РЕДАКТРОРА (пункт section.field)
}
],
"actions":{
"className": "actions", //-класс для div кторое содержит в себе всех кнопок
"prevBtn":{
// - настройки кнопоки
},
"nextBtn":{
// - настройки кнопоки
},
"buttons": [
.....
{
// - настройки кнопоки
},
{
// - настройки кнопоки
},
{
// - настройки кнопоки
},
....
],
}, //-Обьект описываюший кнопки
}
Кнопки
- prevBtn и nextBtn нужны для перехода на перде следующюю секци ЕСЛИ У ВАС ТОЛЬКО ОДНА СЕКЦИЯ ТО НЕ НУЖНО их ПОДКЛЮЧАТЬ
- prevBtn и nextBtn у них есть поле action туда вы можете передать функцию которая вам нужна. Если вам нужен просто переход на след. или пред. секцию то можете action не указать
- buttons Это массив из кнопок
- у всех кнопок одинаковый модель данных т.е.
пример оформление одной кнопки
{
"className": "", //- класс для кнопки (bootstrap)
"caption":"",//- Текст кнопки
"action": () => this.someFunction() //- фунция должен описываться внутри поля methods
}
Section.fields (конфигурация редактора)
{
"editor": "input-editor", //- нужно написать editor (смотрите ниже)
"value": "",
"className": "col-md-12",
"props": {
// - нужно казать соответсвии с editor
},
"validation": {
// - можете указать только нужные вам поля. НО У УКАЗАННОГО ПОЛЯ ОБЬЯЗАТЕЛЬНО ДОЛЖЕН БЫТЬ 2 ПОЛЯ ))
"required": {
"value": true,
"text": "Поле должно быть обязательным",
},
"regular": {
"value": /^([а-яё]+|[a-z]+)$/i,
"text": "Введите корректное имя",
},
"min": {
"value": 3,
"text": "Поле должно содержать не менее 3 символов",
},
"max": {
"value": 10,
"text": "Поле должно содержать не менее 10 символов",
},
},
},
editors
input-editor
используется тег input props должен быть следуюшим
{
"label": "",
"placeholder":"",
"type":"", //-<input :type="type"/> ЗМЕЧАНИЕ можно указать text, number, email а для дугих есть свои редакторы
"className": "", //- здесь вы можете использовать сеточную систему bootstrap т.е. col-md-4 col-sm-6 ..
}
text-editor
поле использует тег textarea props должен быть следуюшим
{
"label": "",
"placeholder":"",
"className": "", //- здесь вы можете использовать сеточную систему bootstrap т.е. col-md-4 col-sm-6 ..
}
boolean-editor
поле использует тег input checkbox props должен быть следуюшим
{
"label": "",
"link":{
// - Это поле вы можете указать если вам понадбиться добавить туда ссылку на пример для политики конфедициальности
// - Ссылка подставиться полсе label
"text":"",
"href":""
},
"className": "", //- здесь вы можете использовать сеточную систему bootstrap т.е. col-md-4 col-sm-6 ..
}
telephone-editor
поле использует тег input c маской ввода телефонного номера props должен быть следуюшим
{
"label": "",
"placeholder":"",
"className": "", //- здесь вы можете использовать сеточную систему bootstrap т.е. col-md-4 col-sm-6 ..
}
select-editor
поле использует компонент v-select props должен быть следуюшим
{
"label": "",
"placeholder": "",
"type": "text-field", //ПОЛЕ ОБЯЗАТЕЛЬНО нужно указать тип option
"apiAdress":"", //ПОЛЕ ОБЯЗАТЕЛЬНО url api от куда должны взяться данные
"selectValue": "", //ПОЛЕ ОБЯЗАТЕЛЬНО поле из выбранного обьекта в массиве которое должен вернуть редактор
"selectLabel":"" ,//ПОЛЕ ОБЯЗАТЕЛЬНО поле из выбранного обьекта в массиве котрое должен отображаться как выбранный элемент
"optionValue": {
//ПОЛЕ ОБЯЗАТЕЛЬНО нужно настроить с соответсвии с type (смотрите ниже)
}
}
типы options
- text-image-field --- option с картинкой и текстом optionValue нужно настроить след. образом
{
"img":"" //имя поля в котором содержится url картинки для отображение в option
"title":"" //имя поля в котором содержится заголовок для отображение о option
}
- text-field --- option с текстом optionValue нужно настроить след. образом
{
"title":"" //имя поля в котором содержится заголовок для отображение о option
}
rating-editor
поле использует кастомный компонент для оцеки по 5 бальной шкале props должен быть следуюшим
{
"label": "",
}
0.1.0
4 years ago