HPMD.ui - Набор интерфейсов на основе Bootstrap 4 (и нескольких более мелких библиотек), сделанный для быстрого создания дэшбордов и подобных интерфейсов. Библиотека включает:
- Набор CSS - в виде подключаемого SCSS файла с возможностью кастомизации до сборки
- Vue-компоненты (Vue 2): набор отдельных компонентов для использования в Vue-приложениях.
HTTPS:
npm install git+https://github.com/hpmd/hpmd.ui.git
SSH:
npm install git+ssh://git@github.com/hpmd/hpmd.ui.git
// main.js
import Vue from 'vue';
import { HpmdUI } from 'hpmd.ui';
import 'hpmd.ui/src/scss/hpmd.ui.scss';
// ...
Vue.use(HpmdUI);
// main.js
import Vue from 'vue';
import {
ButtonPlugin
TablePlugin
} from 'hpmd.ui';
// import global scss
import 'hpmd.ui/src/scss/hpmd.ui.scss';
Vue.use(ButtonPlugin);
Vue.use(TablePlugin);
// MyComponent.js
import {
HmButton,
HmTable
} from 'hpmd.ui';
export default {
components: {
HmButton,
HmTable
}
};
SCSS можно подключить как глобально (предпочтительно при импорте библиотеки полностью):
// main.js
import 'hpmd.ui/src/scss/hpmd.ui.scss';
так и отдельными модулями, для того чтобы сэкономить на весе итогового css-файла.
Обязательным для подключения является файл base.scss
(основные переменные и функции Bootstrap)
// main.js
import './path/to/your.scss';
@import '~hpmd.ui/src/scss/base';
@import '~hpmd.ui/src/scss/button';
@import '~hpmd.ui/src/scss/table';
Документация Без изменений
Реализованные компоненты:
- HmAlert
Component: HmAvatar
// MyComponent.vue
<hm-avatar
:src="imageURL"
variant="danger"
size="sm"
/>
Свойства
Свойство | Тип | По-умолчанию | Допустимые значения | Описание |
---|---|---|---|---|
size |
String | 'md' | xs, sm, md, lg | Размер аватара |
src |
String | '' | URL изображения | |
variant |
String | 'secondary' | Значения из цветов темы | Цвет подложки аватара |
События
Событие | Передаваемые данные | Описание |
---|---|---|
imageLoadError |
Error Event data | Данные из события image.onerror |
Документация Без изменений
Реализованные компоненты:
- HmBadge
Документация Без изменений
Реализованные компоненты:
- HmButton (HmBtn)
- HmButtonClose (HmBtnClose)
Документация Без изменений
Реализованные компоненты:
- HmButtonGroup
Реализованные компоненты:
- HmCalendar
Добавленные свойства
Свойство | Тип | По-умолчанию | Допустимые значения | Описание |
---|---|---|---|---|
isRange |
Boolean | false | Выбрать диапазон дат | |
showYearBtns |
Boolean | false | Цвет подложки аватара | |
value |
String, Date, Date[] | строка в формате YYYY-MM-DD , объект даты или массив из двух дат |
Изменяемое значение даты |
DEPRECATED: use css classes instead
Документация Без изменений
Реализованные компоненты:
- HmCard
Документация Без изменений
Реализованные компоненты:
- HmCheckbox
- HmCheckboxGroup
WARN: возможна переработка
Реализованные компоненты:
- HmCollapse
Добавленные свойства
Свойство | Тип | По-умолчанию | Допустимые значения | Описание |
---|---|---|---|---|
buttonText |
String | '' | Текст кнопки, которая разворачивает блок |
Реализованные компоненты:
- HmDatepicker
Добавленные свойства
Свойство | Тип | По-умолчанию | Допустимые значения | Описание |
---|---|---|---|---|
range |
Boolean | false | Выбрать диапазон дат | |
useNative |
Boolean | (Detect mobile OS) | Использовать нативный ввод даты (input type="date") |
Документация Без изменений
Реализованные компоненты:
- HmDropdown
- HmDropdownItemButton
- HmDropdownDivider
- HmDropdownItem
Реализованные компоненты:
- HmFileInput
Документация Без изменений
Документация Form Group Без изменений
Реализованные компоненты:
- HmForm
- HmFormDatalist
- HmFormGroup
- HmFormInvalidFeedback
- HmFormText
- HmFormValidFeedback
Компонент для отрисовки SVG-иконок в тексте или любых блоках. Основной случай использования - монохромные иконки для элементов интерфейса.
Для того чтобы размер приложения не страдал от кучи неиспользуемых иконов, все иконки добавляются вручную. Есть два варианта добавления (регистрации) иконок:
$hmIcon.add() - При установке глобально
// MyComponent.vue
export default {
created() {
this.$hmIcon.add(iconObject);
}
}
HmIcon.add() - При импорте компонента
// MyComponent.vue
import { HmIcon } from 'hpmd.ui';
HmIcon.add(iconObject);
В обоих случаях новая иконка будет доступна для всего приложения (т.е. не обязательно добавлять ее в каждом месте, где она будет использоваться)
Размер иконки равен размеру текста блока-родителя (1em). Для установки отличного от текста размера заверните иконку в контейнер и проставьте font-size
.
Цвет иконки по-умолчанию равен цвету текста - это довольно удобно для мягких переходов при hover-эффектах, например, кнопок. При желании можно указать свой собственный цвет через свойство fill
.
Можно (и часто нужно) подключать свои иконки. Формат следующий:
export {
"name": "sort",
"style": "line",
"width": 24,
"height": 24,
"content": "<path d=\"M16.29,14.29,12,18.59l-4.29-4.3a1,1,0,0,0-1.42,1.42l5,5a1,1,0,0,0,1.42,0l5-5a1,1,0,0,0-1.42-1.42ZM7.71,9.71,12,5.41l4.29,4.3a1,1,0,0,0,1.42,0,1,1,0,0,0,0-1.42l-5-5a1,1,0,0,0-1.42,0l-5,5A1,1,0,0,0,7.71,9.71Z\"/>"
}
Component: HmAvatar
import { HmIcon } from 'hpmd.ui';
import { uniTimes } from 'hpmd.ui/src/assets/icons/unicons';
HmIcon.add(uniTimes)
// MyComponent.vue
<hm-icon
name="times"
fill="#990000"
/>
Свойства
Свойство | Тип | По-умолчанию | Допустимые значения | Описание |
---|---|---|---|---|
fill |
String | 'currentColor' | Цвет иконки, по-умолчанию - цвет текста родительского элемента | |
name |
String | '' | Имя иконки, определенное в Icon.name |
Реализованные компоненты
- HmInput
Основное изменение - компонент завернут в контейнер для того, чтобы сопутствующие вводу элементы интерфейса можно было выводить прямо в нем (кнопки, лэйбл)
Добавленные свойства
Свойство | Тип | По-умолчанию | Допустимые значения | Описание |
---|---|---|---|---|
label |
String? | '' | Текст лэйбла над полем ввода: рекомендуется использовать отдельно от placeholder, либо описать свои стили для placeholder, чтобы избежать визуального наложения | |
mask |
IMask | undefined | IMask instance | Маска ввода для текстовых полей: документация IMask, Документация Vue IMask |
showClearBtn |
Boolean | true | Показывать кнопку очистки поля ввода | |
showPasswordBtn |
Boolean | false | Показывать кнопку "показать ввод" для type="password" |
Добавленные события
Событие | Передаваемые данные | Описание |
---|---|---|
accept |
IMask Accept event data | Событие отправляется каждый раз когда меняется значение маски при вводе. Практической ценности не имеет, добавлено в большей степени для дебага |
complete |
IMask Complete event data | Событие отправляется когда маска ввода заполнена |
inputRaw |
Imask.AcceptEvent.detail.unmaskedValue | Сырой ввод пользователя в поле с маской - может быть нужно для получения неформатированного значения (например, номера телефона в виде +79998887766 , а не +7 (999) 888-77-66 ) |
Добавленные слоты
| Имя слота | Описание |
| append
| Слот для вывода элементов после (справа от) поля ввода |
| prepend
| Слот для вывода элементов перед (слева от) полем ввода |
Документация Без изменений
Реализованные компоненты:
- HmInputGroup
- HmInputGroupAddon
- HmInputGroupAppend
- HmInputGroupPrepend
- HmInputGroupText
WARN: в плане добавить для компонента возможность выводить его на полный экран (
size = "fs"
). Документация Без изменений
Реализованные компоненты:
- HmModal
Документация Без изменений
Реализованные компоненты
- HmNav
- HmNavItem
- HmNavItemDropdown
- HmNavText
Документация Без изменений
Реализованные компоненты:
- HmPopover
Документация Без изменений
Реализованные компоненты:
- HmProgress
Документация Без изменений
Реализованные компоненты:
- HmRadio
- HmRadioGroup
Документация Без изменений
Реализованные компоненты
- HmRangeSlider
Документация Без изменений
Реализованные компоненты
- HmSelect
DEPRECATED: компонент ждет неминуемый рефакторинг (скорее всего весь функционал будет вынесен в Radio и Checkbox), старайтесь пока избегать его использования
Компоненты для реализации чекбоксов в виде набора "кнопок"
Реализованные компоненты
- HmSelector
- HmSelectorEl
Документация Без изменений
Реализованные компоненты
- HmSpinButton
Документация Без изменений
Реализованные компоненты
- HmTable
- HmTableLite
- HmTableSimple
- HmTbody
- HmThead
- HmTfoot
- HmTr
- HmTd
- HmTh
Компонент для вывода блока (например слова или заголовка) с подсказкой
Реализованные компоненты
| Свойство | Тип | По-умолчанию | Допустимые значения | Описание |
| iconName
| String | 'info-circle'
| Icon.name зарегистрированной иконки | Иконка подсказки |
| iconPosition
| String | 'center'
| left, center, right | Положение иконки в кружке (по-горизонтали) |
| iconVariant
| String | primary
| Название цвета из $theme-colors | Цвет иконки |
| inText
| Boolean | false
| | Подсказка внутри текста (на слове) |
| tip
| String | ''
| | Текст подсказки |
| tooltipVariant
| String | ``
| tooltipPlacemenet
|
| `triggers` |
inText tip tooltipVariant tooltipPlacemenet triggers iconPosition iconName iconVariant
npm install
npm run serve
npm run build
npm run lint