Commit 7394fd48 authored by Nikolay Gromov's avatar Nikolay Gromov

forms - more blocks

parent aff64001
......@@ -2,6 +2,6 @@
Установка: выполнить в папке проекта: `npm i`.
Использование: `npm run gulp` (дабы не ставить глобально 4-ю версию, которая сейчас в альфе). После слова `gulp` можно через пробел указать другие команды (см. `gulpfile.js`).
Использование: `npm start` (дабы не ставить глобально 4-ю версию gulp, которая сейчас в альфе). После `npm start` можно через пробел указать задачу. К примеру `npm start less` выполнит только задачу `less` из `gulpfile.js` (полный список задач смотри в `gulpfile.js`).
`port=3004 npm run gulp` — для запуска сервера автообновлений на указанном порту.
\ No newline at end of file
`port=3004 npm start` — для запуска сервера автообновлений на указанном порту.
......@@ -4,7 +4,7 @@
"description": "",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"gulp": "./node_modules/.bin/gulp"
"start": "./node_modules/.bin/gulp"
},
"author": "Nikolay Gromov",
"license": "MIT",
......
......@@ -143,6 +143,8 @@
</div>
</section>
<section class="blocks-library__item">
<h2 class="blocks-library__title" id="tables">Таблицы</h2>
<p>Стилизация: теги (см. глобальные стили)</p>
......@@ -209,8 +211,11 @@
<section class="blocks-library__item">
<h2 id="form">Формы по умолчанию</h2>
<p>Стилизация: теги (см. глобальные стили)</p>
<form action="">
<fieldset>
<legend>Это <code>legend</code> <code>fieldset</code></legend>
......@@ -270,59 +275,63 @@
<h2 id="form-style">Стилизованные формы</h2>
<p>Стилизация: БЭМ-блоки <code>.field</code>, <code>.form</code> и модификаторы. Опирается на стилизацию форм по умолчанию.</p>
<p>Стилизация: БЭМ-блоки <code>.field-text</code>, <code>.field-checkbox</code>, <code>.field-radio</code>, <code>.field-select</code>, <code>.field-file</code>, <code>.field-actions</code>, <code>.form</code> и модификаторы. Опирается на стилизацию форм по умолчанию.</p>
<div class="row">
<div class="col-md-6">
<form action="" class="form">
<fieldset>
<legend>Варианты разметки и модификаторы</legend>
<div class="field">
<label class="field__name" for="field_id_001">Название поля</label>
<div class="field__input-wrap">
<input class="field__input" id="field_id_001" type="text" placeholder="input[type=text]">
<div class="field__help-text">Лейбл отдельно, обёртка — <code>&lt;div&gt;</code>, связь с лейблом по <code>id</code>.</div>
<div class="field-text">
<label class="field-text__name" for="field-text_id_001">Название поля</label>
<div class="field-text__input-wrap">
<input class="field-text__input" id="field-text_id_001" type="text" placeholder="input[type=text]">
<div class="field-text__help-text">Лейбл отдельно, обёртка — <code>&lt;div&gt;</code>, связь с лейблом по <code>id</code>.</div>
</div>
</div>
<label class="field">
<div class="field__name">Название поля</div>
<div class="field__input-wrap">
<input class="field__input" type="text" placeholder="input[type=text]">
<div class="field__help-text">Обёртка — <code>&lt;label&gt;</code>.</div>
<label class="field-text">
<div class="field-text__name">Название поля</div>
<div class="field-text__input-wrap">
<input class="field-text__input" type="text" placeholder="input[type=text]">
<div class="field-text__help-text">Обёртка — <code>&lt;label&gt;</code>.</div>
</div>
</label>
<label class="field">
<div class="field__name">Название поля</div>
<div class="field__input-wrap">
<textarea class="field__input" rows="3" placeholder="textarea"></textarea>
<div class="field__help-text">Обёртка — <code>&lt;label&gt;</code>.</div>
<label class="field-text">
<div class="field-text__name">Название поля</div>
<div class="field-text__input-wrap">
<textarea class="field-text__input" rows="3" placeholder="textarea"></textarea>
<div class="field-text__help-text">Обёртка — <code>&lt;label&gt;</code>.</div>
</div>
</label>
<div class="field field--checkbox">
<div class="field__input-wrap">
<label class="field__name">
<input class="field__input" type="checkbox">
Чекбокс, более известный как флажок
<div class="field-checkbox">
<div class="field-checkbox__input-wrap">
<label class="field-checkbox__name">
<input class="field-checkbox__input" type="checkbox">
<span class="field-checkbox__name-text">Флажок</span>
</label>
<div class="field__help-text">Пояснительный тест.</div>
<label class="field-checkbox__name">
<input class="field-checkbox__input" type="checkbox">
<span class="field-checkbox__name-text">Флажок</span>
</label>
<div class="field-checkbox__help-text">Пояснительный тест.</div>
</div>
</div>
<div class="field field--radio">
<div class="field__input-wrap">
<label class="field__name">
<input class="field__input" type="radio">
Радиобатон
<div class="field-radio">
<div class="field-radio__input-wrap">
<label class="field-radio__name">
<input class="field-radio__input" type="radio" name="one">
<span class="field-checkbox__name-text">Радиокнопка</span>
</label>
<label class="field__name">
<input class="field__input" type="radio">
Радиобатон 2
<label class="field-radio__name">
<input class="field-radio__input" type="radio" name="one">
<span class="field-checkbox__name-text">Радиокнопка</span>
</label>
<div class="field__help-text">Пояснительный тест.</div>
<div class="field-radio__help-text">Пояснительный тест.</div>
</div>
</div>
<label class="field">
<div class="field__name">Название поля</div>
<div class="field__input-wrap">
<select class="field__select">
<label class="field-select">
<div class="field-select__name">Название поля</div>
<div class="field-select__input-wrap">
<select class="field-select__select">
<optgroup label="optgroup">
<option>Значение 1</option>
<option>Значение 2</option>
......@@ -330,60 +339,18 @@
</optgroup>
<option>Значение 10</option>
</select>
<div class="field__help-text">Обёртка — <code>&lt;label&gt;</code>.</div>
</div>
</label>
<label class="field">
<div class="field__name">Название поля</div>
<div class="field__input-wrap">
<input class="field__input" type="file">
<div class="field__help-text">Обёртка — <code>&lt;label&gt;</code>.</div>
<small class="field-select__help-text">Обёртка — <code>&lt;label&gt;</code>.</small>
</div>
</label>
<label class="field field--error">
<div class="field__name">Ошибочное поле</div>
<div class="field__input-wrap">
<input class="field__input" type="text" placeholder="input[type=text]">
<div class="field__help-text">Обёртка — <code>&lt;label&gt;</code>.</div>
<label class="field-file">
<div class="field-file__name">Название поля</div>
<div class="field-file__input-wrap">
<input class="field-file__input" type="file">
<div class="field-file__help-text">Обёртка — <code>&lt;label&gt;</code>.</div>
</div>
</label>
<div class="field field--checkbox field--error">
<div class="field__input-wrap">
<label class="field__name">
<input class="field__input" type="checkbox">
Чекбокс, более известный как флажок
</label>
<div class="field__help-text">Пояснительный тест.</div>
</div>
</div>
<div class="field field--radio field--error">
<div class="field__input-wrap">
<label class="field__name">
<input class="field__input" type="radio">
Радиобатон
</label>
<label class="field__name">
<input class="field__input" type="radio">
Радиобатон 2
</label>
<div class="field__help-text">Пояснительный тест.</div>
</div>
</div>
<label class="field field--error">
<div class="field__name">Название поля</div>
<div class="field__input-wrap">
<select class="field__select">
<optgroup label="optgroup">
<option>Значение 1</option>
<option>Значение 2</option>
<option>Значение 3</option>
</optgroup>
<option>Значение 10</option>
</select>
<div class="field__help-text">Обёртка — <code>&lt;label&gt;</code>.</div>
</div>
</label>
<div class="field field--actions">
<div class="field-actions">
<button class="btn">Отправить</button>
</div>
</fieldset>
......@@ -454,10 +421,12 @@
</div>
</section>
<section class="blocks-library__item">
<h2 id="btn">Кнопки</h2>
<p>Стилизация: БЭМ-блок <code>.btn</code> и модификаторы.</p>
<p class="alert alert--success">Приоритетным является подход, в котором используются LESS-примеси <code>.btn()</code> и <code>.btn-color-variant(цвет_текста; цвет_фона; цвет_бордюра)</code>.</p>
<p class="alert alert--success">Приоритетным является подход, в котором используются LESS-примеси <code>.btn()</code> и <code>.btn-color-variant(цвет_текста; цвет_фона; цвет_бордюра)</code>. Это не всегда удобно (бывает сложно получить цвета состояний кнопки преобразованием цветов по умолчанию).</p>
<p>
<!-- <input type="text" value="Текстово поле" style="width:80px"> -->
<a href="" class="btn">Cсылка</a>
......@@ -475,6 +444,8 @@
</p>
</section>
<section class="blocks-library__item">
<h2 id="grid">Модульная сетка на flexbox</h2>
<p>Стилизация: БЭМ-блоки <code>.row</code>, <code>.col-[ID]-[COL]</code>, <code>.col-[ID]-offset-[COL]</code></p>
......
.field-actions {
display: block;
margin-top: @line-height;
margin-bottom: (@line-height / 2);
}
.field-checkbox {
display: block;
margin-bottom: (@line-height / 2);
&__input-wrap {}
&__name {
position: relative;
padding-left: 1.3em;
font-weight: 400;
display: inline-block;
margin-right: .6em;
}
&__input {
position: absolute;
top: .25em;
left: 0;
}
&__help-text {
display: block;
font-size: @font-size--small;
color: @text-color--muted;
padding-left: 1.6em; // 1.3 + 0.3
}
}
.field-file {
display: block;
margin-bottom: (@line-height / 2);
&__name {
font-weight: 700;
display: block;
margin-bottom: round(@line-height / 4, 2);
}
&__input-wrap {}
&__input {
margin-bottom: round(@line-height / 4, 2);
}
&__help-text {
display: block;
font-size: @font-size--small;
color: @text-color--muted;
}
}
.field-radio {
display: block;
margin-bottom: (@line-height / 2);
&__input-wrap {}
&__name {
position: relative;
padding-left: 1.3em;
font-weight: 400;
display: inline-block;
margin-right: .6em;
}
&__input {
position: absolute;
top: .25em;
left: 0;
}
&__help-text {
display: block;
font-size: @font-size--small;
color: @text-color--muted;
padding-left: 1.6em; // 1.3 + 0.3
}
}
.field-select {
display: block;
margin-bottom: (@line-height / 2);
&__name {
font-weight: 700;
display: block;
margin-bottom: round(@line-height / 4, 2);
}
&__input-wrap {}
&__select {
margin-bottom: round(@line-height / 4, 2);
}
&__help-text {
display: block;
font-size: @font-size--small;
color: @text-color--muted;
}
}
.field-text {
display: block;
margin-bottom: (@line-height / 2);
&__name {
font-weight: 700;
display: block;
margin-bottom: round(@line-height / 4, 2);
}
&__input-wrap {}
&__input {
margin-bottom: round(@line-height / 4, 2);
}
&__help-text {
display: block;
font-size: @font-size--small;
color: @text-color--muted;
}
}
.field {
display: block;
margin-bottom: (@line-height / 2);
&--error {
color: @color-danger;
.field__help-text {
color: @color-danger;
}
.field__input {
color: @color-danger;
border-color: @color-danger;
background-image: data-uri('image/svg+xml;charset=UTF-8', '../img/form_field_bg/close.svg');
background-repeat: no-repeat;
background-position: right .3em center;
&::placeholder {
color: @color-danger;
}
&:focus {
outline-color: @color-danger;
}
}
.field__select {
color: @color-danger;
border-color: @color-danger;
&:focus {
outline-color: @color-danger;
}
}
}
// Закомментировал, в связи с редкой надобностью
// &--success {
// color: @color-success;
// .field__help-text {
// color: @color-success;
// }
// .field__input {
// color: @color-success;
// border-color: @color-success;
// background-image: data-uri('image/svg+xml;charset=UTF-8', '../img/form_field_bg/check.svg');
// background-repeat: no-repeat;
// background-position: right .3em center;
// &::placeholder {
// color: @color-success;
// }
// &:focus {
// outline-color: @color-success;
// }
// }
// .field__select {
// color: @color-success;
// border-color: @color-success;
// &:focus {
// outline-color: @color-success;
// }
// }
// }
&--checkbox,
&--radio {
.field__name {
display: inline-block;
vertical-align: top;
font-weight: inherit;
font-family: inherit;
margin-bottom: 0;
margin-right: .6em;
}
.field__input {
margin-top: .25em;
margin-bottom: 0;
display: inline-block;
vertical-align: top;
}
}
&__name {
font-weight: 700;
display: block;
margin-bottom: round(@line-height / 4, 2);
}
&__input-wrap {}
&__input,
&__select {
margin-bottom: round(@line-height / 4, 2);
}
&__select {
// appearance: none;
}
&__help-text {
font-size: @font-size--small;
color: @text-color--muted;
}
}
......@@ -3,51 +3,51 @@
margin-bottom: @line-height;
}
&--horizontal {
.field {
display: flex;
}
.field__name {
width: 15rem;
padding-top: .42em;
padding-right: .3em;
}
.field__input-wrap {
flex-grow: 10;
}
.field--actions {
padding-left: 15rem;
}
.field--checkbox {
& > .field__name {
margin-right: 0;
}
.field__input-wrap .field__name {
width: auto;
padding-top: 0;
}
}
}
&--inline {
.field {
display: inline-block;
vertical-align: top;
}
.field__name {
display: inline-block;
vertical-align: top;
padding-top: .42em;
}
.field__input-wrap {
display: inline-block;
vertical-align: top;
}
}
// &--horizontal {
// .field {
// display: flex;
// }
// .field__name {
// width: 15rem;
// padding-top: .42em;
// padding-right: .3em;
// }
// .field__input-wrap {
// flex-grow: 10;
// }
// .field--actions {
// padding-left: 15rem;
// }
// .field--checkbox {
// & > .field__name {
// margin-right: 0;
// }
// .field__input-wrap .field__name {
// width: auto;
// padding-top: 0;
// }
// }
// }
// &--inline {
// .field {
// display: inline-block;
// vertical-align: top;
// }
// .field__name {
// display: inline-block;
// vertical-align: top;
// padding-top: .42em;
// }
// .field__input-wrap {
// display: inline-block;
// vertical-align: top;
// }
// }
}
......@@ -6,5 +6,9 @@
@import "blocks/table-responsive.less";
@import "blocks/btn.less";
@import "blocks/form.less";
@import "blocks/field.less";
@import "blocks/field-text.less";
@import "blocks/field-checkbox.less";
@import "blocks/field-radio.less";
@import "blocks/field-select.less";
@import "blocks/field-file.less";
@import "blocks/field-actions.less";
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment