Checkbox
Checkbox layout is pretty simple:
To create Checkbox group/list we need to use List View with few additions:
<ul>
<!-- Single checkbox item -->
<li>
<label class="item-checkbox item-content">
<!-- Checkbox input -->
<input type="checkbox"/>
<!-- Checkbox icon -->
<i class="icon icon-checkbox"></i>
<div class="item-inner">
<!-- Checkbox Title -->
<div class="item-title">Books</div>
</div>
</label>
</li>
<!-- Another checkbox item -->
<li>
<label class="item-checkbox item-content">
<!-- Checked by default -->
<input type="checkbox" checked/>
<i class="icon icon-checkbox"></i>
<div class="item-inner">
<div class="item-title">Music</div>
</div>
</label>
</li>
...
</ul>
</div>
item-content
must be a**<label>**
element with additional**item-checkbox**
class- Checkbox input (
<input type="checkbox">
) must be a first child ofitem-content
- Checkbox icon must be after checkbox input
In HTML it is not possible to set this state with attribute, it can be set only via JavaScript:
<input type="checkbox" id="my-checkbox">
var checkboxEl = document.querySelector('#my-checkbox');
checkboxEl.indeterminate = true;
Or with Dom7
<input type="checkbox" {{#if something}}indeterminate{{/if}} id="my-checkbox" />
Below is the list of related (CSS custom properties).
Note that commented variables are not specified by default and their values is what they fallback to in this case.
:root {
/* --f7-checkbox-active-color: var(--f7-theme-color); */
--f7-checkbox-icon-color: #fff;
}
:root .theme-dark,
:root.theme-dark {
--f7-checkbox-inactive-color: rgba(255, 255, 255, 0.3);
}
.ios {
--f7-checkbox-size: 22px;
--f7-checkbox-border-radius: 50%;
--f7-checkbox-border-width: 1px;
--f7-checkbox-inactive-color: #c7c7cc;
--f7-checkbox-extra-margin: 0px;
}
.md {
--f7-checkbox-size: 18px;
--f7-checkbox-border-radius: 2px;
--f7-checkbox-border-width: 2px;
--f7-checkbox-extra-margin: 22px;
}
.aurora {
--f7-checkbox-size: 14px;
--f7-checkbox-border-width: 1px;
--f7-checkbox-inactive-color: #888;
--f7-checkbox-extra-margin: 0px;
}
Inline
<div class="block block-strong">
<p>Lorem <label class="checkbox"><input type="checkbox"><i class="icon-checkbox"></i></label> ipsum dolor sit amet, consectetur adipisicing elit. Alias beatae illo nihil aut eius commodi sint eveniet aliquid eligendi <label class="checkbox"><input type="checkbox"><i class="icon-checkbox"></i></label> ad delectus impedit tempore nemo, enim vel praesentium consequatur nulla mollitia!</p>
</div>
Checkbox Group
Indeterminate State
<div class="list">
<ul>
<li>
<label class="item-checkbox item-content">
<input type="checkbox" name="demo-checkbox-movies" />
<i class="icon icon-checkbox"></i>
<div class="item-inner">
<div class="item-title">Movies</div>
</div>
</label>
<ul>
<li>
<label class="item-checkbox item-content">
<input type="checkbox" name="demo-checkbox-movie" value="Movie 1"/>
<i class="icon icon-checkbox"></i>
<div class="item-inner">
<div class="item-title">Movie 1</div>
</div>
</label>
</li>
<li>
<label class="item-checkbox item-content">
<input type="checkbox" name="demo-checkbox-movie" value="Movie 2"/>
<i class="icon icon-checkbox"></i>
<div class="item-inner">
<div class="item-title">Movie 2</div>
</div>
</label>
</li>
</ul>
</li>
</ul>
</div>
var $ = Dom7;
// Child checkbox change
$('[name="demo-checkbox-movie"]').on('change', function (e) {
var totalChecked = $('[name="demo-checkbox-movie"]:checked').length;
if (totalChecked === 0) {
$('[name="demo-checkbox-movies"]').prop('checked', false);
} else if (totalChecked === 2) {
$('[name="demo-checkbox-movies"]').prop('checked', true);
}
if (totalChecked === 1) {
$('[name="demo-checkbox-movies"]').prop('indeterminate', true);
} else {
$('[name="demo-checkbox-movies"]').prop('indeterminate', false);
}
});
// Parent checkbox change
$('[name="demo-checkbox-movies"]').on('change', function (e) {
$('[name="demo-checkbox-movie"]').prop('checked', true);
$('[name="demo-checkbox-movie"]').prop('checked', false);
}
});
With Media Lists
<div class="list media-list">
<ul>
<li>
<label class="item-checkbox item-content">
<input type="checkbox" name="demo-media-checkbox" value="1"/>
<i class="icon icon-checkbox"></i>
<div class="item-inner">
<div class="item-title-row">
<div class="item-title">Facebook</div>
<div class="item-after">17:14</div>
</div>
<div class="item-subtitle">New messages from John Doe</div>
<div class="item-text">Lorem ipsum...</div>
</div>
</label>
</li>
<li>
<label class="item-checkbox item-content">
<input type="checkbox" name="demo-media-checkbox" value="2"/>
<i class="icon icon-checkbox"></i>
<div class="item-inner">
<div class="item-title-row">
<div class="item-title">John Doe (via Twitter)</div>
<div class="item-after">17:11</div>
</div>
<div class="item-subtitle">John Doe (@_johndoe) mentioned you on Twitter!</div>
<div class="item-text">Lorem ipsum...</div>
</div>
</label>
</li>
<li>
<label class="item-checkbox item-content">
<input type="checkbox" name="demo-media-checkbox" value="3"/>
<i class="icon icon-checkbox"></i>
<div class="item-inner">
<div class="item-title-row">
<div class="item-title">Facebook</div>
<div class="item-after">16:48</div>
</div>
<div class="item-subtitle">New messages from John Doe</div>
<div class="item-text">Lorem ipsum...</div>
</div>
</label>
</li>
<li>
<label class="item-checkbox item-content">
<input type="checkbox" name="demo-media-checkbox" value="4"/>
<i class="icon icon-checkbox"></i>
<div class="item-inner">
<div class="item-title-row">
<div class="item-title">John Doe (via Twitter)</div>
<div class="item-after">15:32</div>
</div>
<div class="item-subtitle">John Doe (@_johndoe) mentioned you on Twitter!</div>
<div class="item-text">Lorem ipsum...</div>
</div>
</label>
</li>