Added input icons

This commit is contained in:
Cory LaViska
2017-08-27 13:07:44 -04:00
parent 87c6a9bbcc
commit 7270d20793
5 changed files with 329 additions and 1 deletions

2
dist/shoelace.css vendored

File diff suppressed because one or more lines are too long

View File

@@ -9,6 +9,7 @@
<link rel="stylesheet" href="../dist/shoelace.css">
<link rel="stylesheet" href="../source/css/_docs.css">
<link rel="stylesheet" href="https://cdn.rawgit.com/AGMStudio/prism-theme-one-dark/f81fe477/prism-onedark.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css">
<title>Forms</title>
</head>
<body>
@@ -357,6 +358,129 @@
</div>
</div>
<h3 id="input-icons">Input Icons</h3>
<p>Input icons add visual context to form controls. To add icons to a form control, wrap it with an <code>input-icon</code> element and add icons before and after it.</p>
<p>This example uses Font Awesome, but you can use whatever icon library you want. For consistency, use fixed with icons if your icon library supports them.</p>
<pre><code class="lang-html">&lt;div class=&quot;input-icon&quot;&gt;
&lt;i class=&quot;fa fa-fw fa-phone&quot;&gt;&lt;/i&gt;
&lt;input type=&quot;text&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;input-icon&quot;&gt;
&lt;input type=&quot;text&quot;&gt;
&lt;i class=&quot;fa fa-fw fa-envelope-o&quot;&gt;&lt;/i&gt;
&lt;/div&gt;
&lt;div class=&quot;input-icon&quot;&gt;
&lt;i class=&quot;fa fa-fw fa-user&quot;&gt;&lt;/i&gt;
&lt;input type=&quot;text&quot;&gt;
&lt;i class=&quot;fa fa-check&quot;&gt;&lt;/i&gt;
&lt;/div&gt;
&lt;div class=&quot;input-icon&quot;&gt;
&lt;i class=&quot;fa fa-fw fa-map-marker&quot;&gt;&lt;/i&gt;
&lt;select&gt;&lt;option&gt;&lt;/option&gt;&lt;/select&gt;
&lt;/div&gt;
</code></pre>
<div class="row">
<div class="col-md-6 mar-b-md">
<div class="input-icon">
<i class="fa fa-fw fa-phone"></i>
<input type="text">
</div>
</div>
<div class="col-md-6 mar-b-md">
<div class="input-icon">
<input type="text">
<i class="fa fa-fw fa-envelope-o"></i>
</div>
</div>
<div class="col-md-6 mar-b-md">
<div class="input-icon">
<i class="fa fa-fw fa-user"></i>
<input type="text">
<i class="fa fa-check"></i>
</div>
</div>
<div class="col-md-6 mar-b-md">
<div class="input-icon">
<i class="fa fa-fw fa-map-marker"></i>
<select><option></option></select>
</div>
</div>
</div>
<p>Use the <code>input-icon-[xs|sm|lg|xs]</code> modifiers to change the size of input icons.</p>
<pre><code class="lang-html">&lt;div class=&quot;input-icon input-icon-xs&quot;&gt;
&lt;i class=&quot;fa fa-fw fa-user&quot;&gt;&lt;/i&gt;
&lt;input class=&quot;input-xs&quot; type=&quot;text&quot;&gt;
&lt;i class=&quot;fa fa-check&quot;&gt;&lt;/i&gt;
&lt;/div&gt;
&lt;div class=&quot;input-icon input-icon-sm&quot;&gt;
&lt;i class=&quot;fa fa-fw fa-user&quot;&gt;&lt;/i&gt;
&lt;input class=&quot;input-sm&quot; type=&quot;text&quot;&gt;
&lt;i class=&quot;fa fa-check&quot;&gt;&lt;/i&gt;
&lt;/div&gt;
&lt;div class=&quot;input-icon&quot;&gt;
&lt;i class=&quot;fa fa-fw fa-user&quot;&gt;&lt;/i&gt;
&lt;input type=&quot;text&quot;&gt;
&lt;i class=&quot;fa fa-check&quot;&gt;&lt;/i&gt;
&lt;/div&gt;
&lt;div class=&quot;input-icon input-icon-lg&quot;&gt;
&lt;i class=&quot;fa fa-fw fa-user&quot;&gt;&lt;/i&gt;
&lt;input class=&quot;input-lg&quot; type=&quot;text&quot;&gt;
&lt;i class=&quot;fa fa-check&quot;&gt;&lt;/i&gt;
&lt;/div&gt;
&lt;div class=&quot;input-icon input-icon-xl&quot;&gt;
&lt;i class=&quot;fa fa-fw fa-user&quot;&gt;&lt;/i&gt;
&lt;input class=&quot;input-xl&quot; type=&quot;text&quot;&gt;
&lt;i class=&quot;fa fa-check&quot;&gt;&lt;/i&gt;
&lt;/div&gt;
</code></pre>
<div class="input-field">
<div class="input-icon input-icon-xs">
<i class="fa fa-fw fa-user"></i>
<input class="input-xs" type="text">
<i class="fa fa-check"></i>
</div>
</div>
<div class="input-field">
<div class="input-icon input-icon-sm">
<i class="fa fa-fw fa-user"></i>
<input class="input-sm" type="text">
<i class="fa fa-check"></i>
</div>
</div>
<div class="input-field">
<div class="input-icon">
<i class="fa fa-fw fa-user"></i>
<input type="text">
<i class="fa fa-check"></i>
</div>
</div>
<div class="input-field">
<div class="input-icon input-icon-lg">
<i class="fa fa-fw fa-user"></i>
<input class="input-lg" type="text">
<i class="fa fa-check"></i>
</div>
</div>
<div class="input-field">
<div class="input-icon input-icon-xl">
<i class="fa fa-fw fa-user"></i>
<input class="input-xl" type="text">
<i class="fa fa-check"></i>
</div>
</div>
<h3 id="form-groups">Form Groups</h3>
<p>Related form controls can be grouped in a <code>&lt;fieldset&gt;</code>. An optional <code>&lt;legend&gt;</code> can be used to display a name for the group.</p>
<pre><code class="lang-html">&lt;fieldset&gt;

View File

@@ -358,6 +358,73 @@ input[type="range"] {
}
}
/* Input icons */
.input-icon {
position: relative;
/* Change default position for select controls so icons don't get hidden */
& select {
position: static;
}
& input:not(:first-child),
& select:not(:first-child) {
padding-left: var(--input-icon-width);
}
& input:not(:last-child) {
padding-right: var(--input-icon-width);
}
& :first-child:not(input, select),
& :last-child:not(input, select) {
position: absolute;
top: 0;
left: var(--input-icon-offset);
line-height: var(--input-height);
color: var(--input-icon-color);
vertical-align: middle;
pointer-events: none;
}
& :last-child:not(input, select) {
left: auto;
right: var(--input-icon-offset);
}
&.input-icon-xs {
& :first-child:not(input, select),
& :last-child:not(input, select) {
font-size: var(--input-font-size-xs);
line-height: var(--input-height-xs);
}
}
&.input-icon-sm {
& :first-child:not(input, select),
& :last-child:not(input, select) {
font-size: var(--input-font-size-sm);
line-height: var(--input-height-sm);
}
}
&.input-icon-lg {
& :first-child:not(input, select),
& :last-child:not(input, select) {
font-size: var(--input-font-size-lg);
line-height: var(--input-height-lg);
}
}
&.input-icon-xl {
& :first-child:not(input, select),
& :last-child:not(input, select) {
font-size: var(--input-font-size-xl);
line-height: var(--input-height-xl);
}
}
}
/* Validation */
.input-invalid {
& label {

View File

@@ -313,6 +313,10 @@
--input-addon-bg-color: var(--component-bg-color);
--input-addon-color: var(--state-secondary);
--input-icon-width: 2em;
--input-icon-offset: .5em;
--input-icon-color: var(--state-secondary);
--input-range-track-height: .5rem;
--input-range-track-color: var(--component-bg-color);
--input-range-track-box-shadow: var(--component-box-shadow-inner);

View File

@@ -2,6 +2,8 @@
layout: default.html
title: Forms
description: Default form control styles.
stylesheets:
- https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css
---
## Forms
@@ -331,6 +333,137 @@ To create an input addon, use `<span class="input-addon">`. Addons can appear an
</div>
</div>
### Input Icons
Input icons add visual context to form controls. To add icons to a form control, wrap it with an `input-icon` element and add icons before and after it.
This example uses Font Awesome, but you can use whatever icon library you want. For consistency, use fixed with icons if your icon library supports them.
```html
<div class="input-icon">
<i class="fa fa-fw fa-phone"></i>
<input type="text">
</div>
<div class="input-icon">
<input type="text">
<i class="fa fa-fw fa-envelope-o"></i>
</div>
<div class="input-icon">
<i class="fa fa-fw fa-user"></i>
<input type="text">
<i class="fa fa-check"></i>
</div>
<div class="input-icon">
<i class="fa fa-fw fa-map-marker"></i>
<select><option></option></select>
</div>
```
<div class="row">
<div class="col-md-6 mar-b-md">
<div class="input-icon">
<i class="fa fa-fw fa-phone"></i>
<input type="text">
</div>
</div>
<div class="col-md-6 mar-b-md">
<div class="input-icon">
<input type="text">
<i class="fa fa-fw fa-envelope-o"></i>
</div>
</div>
<div class="col-md-6 mar-b-md">
<div class="input-icon">
<i class="fa fa-fw fa-user"></i>
<input type="text">
<i class="fa fa-check"></i>
</div>
</div>
<div class="col-md-6 mar-b-md">
<div class="input-icon">
<i class="fa fa-fw fa-map-marker"></i>
<select><option></option></select>
</div>
</div>
</div>
Use the `input-icon-[xs|sm|lg|xs]` modifiers to change the size of input icons.
```html
<div class="input-icon input-icon-xs">
<i class="fa fa-fw fa-user"></i>
<input class="input-xs" type="text">
<i class="fa fa-check"></i>
</div>
<div class="input-icon input-icon-sm">
<i class="fa fa-fw fa-user"></i>
<input class="input-sm" type="text">
<i class="fa fa-check"></i>
</div>
<div class="input-icon">
<i class="fa fa-fw fa-user"></i>
<input type="text">
<i class="fa fa-check"></i>
</div>
<div class="input-icon input-icon-lg">
<i class="fa fa-fw fa-user"></i>
<input class="input-lg" type="text">
<i class="fa fa-check"></i>
</div>
<div class="input-icon input-icon-xl">
<i class="fa fa-fw fa-user"></i>
<input class="input-xl" type="text">
<i class="fa fa-check"></i>
</div>
```
<div class="input-field">
<div class="input-icon input-icon-xs">
<i class="fa fa-fw fa-user"></i>
<input class="input-xs" type="text">
<i class="fa fa-check"></i>
</div>
</div>
<div class="input-field">
<div class="input-icon input-icon-sm">
<i class="fa fa-fw fa-user"></i>
<input class="input-sm" type="text">
<i class="fa fa-check"></i>
</div>
</div>
<div class="input-field">
<div class="input-icon">
<i class="fa fa-fw fa-user"></i>
<input type="text">
<i class="fa fa-check"></i>
</div>
</div>
<div class="input-field">
<div class="input-icon input-icon-lg">
<i class="fa fa-fw fa-user"></i>
<input class="input-lg" type="text">
<i class="fa fa-check"></i>
</div>
</div>
<div class="input-field">
<div class="input-icon input-icon-xl">
<i class="fa fa-fw fa-user"></i>
<input class="input-xl" type="text">
<i class="fa fa-check"></i>
</div>
</div>
### Form Groups
Related form controls can be grouped in a `<fieldset>`. An optional `<legend>` can be used to display a name for the group.