MuK IT GmbH
6 years ago
5 changed files with 259 additions and 18 deletions
-
2muk_web_utils/__manifest__.py
-
155muk_web_utils/static/src/scss/switch.scss
-
36muk_web_utils/static/src/scss/variables.scss
-
65muk_web_utils/static/src/xml/switch.xml
-
19muk_web_utils/template/assets.xml
@ -0,0 +1,155 @@ |
|||
/********************************************************************************** |
|||
* |
|||
* Copyright (C) 2017 MuK IT GmbH |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU Affero General Public License as |
|||
* published by the Free Software Foundation, either version 3 of the |
|||
* License, or (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU Affero General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU Affero General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
* |
|||
**********************************************************************************/ |
|||
|
|||
.switch { |
|||
font-size: $font-size-base; |
|||
position: relative; |
|||
|
|||
input { |
|||
position: absolute; |
|||
height: 1px; |
|||
width: 1px; |
|||
background: none; |
|||
border: 0; |
|||
clip: rect(0 0 0 0); |
|||
clip-path: inset(50%); |
|||
overflow: hidden; |
|||
padding: 0; |
|||
|
|||
+ label { |
|||
position: relative; |
|||
min-width: calc(#{$switch-height} * 2); |
|||
border-radius: $switch-border-radius; |
|||
height: $switch-height; |
|||
line-height: $switch-height; |
|||
display: inline-block; |
|||
cursor: pointer; |
|||
outline: none; |
|||
user-select: none; |
|||
vertical-align: middle; |
|||
text-indent: calc(calc(#{$switch-height} * 2) + .5rem); |
|||
} |
|||
|
|||
+ label::before, |
|||
+ label::after { |
|||
content: ''; |
|||
position: absolute; |
|||
top: 0; |
|||
left: 0; |
|||
width: calc(#{$switch-height} * 2); |
|||
bottom: 0; |
|||
display: block; |
|||
} |
|||
|
|||
+ label::before { |
|||
right: 0; |
|||
background-color: $switch-bg; |
|||
border-radius: $switch-border-radius; |
|||
transition: $switch-transition; |
|||
} |
|||
|
|||
+ label::after { |
|||
top: $switch-thumb-padding; |
|||
left: $switch-thumb-padding; |
|||
width: calc(#{$switch-height} - calc(#{$switch-thumb-padding} * 2)); |
|||
height: calc(#{$switch-height} - calc(#{$switch-thumb-padding} * 2)); |
|||
border-radius: $switch-thumb-border-radius; |
|||
background-color: $switch-thumb-bg; |
|||
transition: $switch-transition; |
|||
} |
|||
|
|||
&:checked + label::before { |
|||
background-color: $switch-checked-bg; |
|||
} |
|||
|
|||
&:checked + label::after { |
|||
margin-left: $switch-height; |
|||
} |
|||
|
|||
&:focus + label::before { |
|||
outline: none; |
|||
box-shadow: $switch-focus-box-shadow; |
|||
} |
|||
|
|||
&:disabled + label { |
|||
color: $switch-disabled-color; |
|||
cursor: not-allowed; |
|||
} |
|||
|
|||
&:disabled + label::before { |
|||
background-color: $switch-disabled-bg; |
|||
} |
|||
} |
|||
|
|||
&.switch-sm { |
|||
font-size: $font-size-sm; |
|||
|
|||
input { |
|||
+ label { |
|||
min-width: calc(#{$switch-height-sm} * 2); |
|||
height: $switch-height-sm; |
|||
line-height: $switch-height-sm; |
|||
text-indent: calc(calc(#{$switch-height-sm} * 2) + .5rem); |
|||
} |
|||
|
|||
+ label::before { |
|||
width: calc(#{$switch-height-sm} * 2); |
|||
} |
|||
|
|||
+ label::after { |
|||
width: calc(#{$switch-height-sm} - calc(#{$switch-thumb-padding} * 2)); |
|||
height: calc(#{$switch-height-sm} - calc(#{$switch-thumb-padding} * 2)); |
|||
} |
|||
|
|||
&:checked + label::after { |
|||
margin-left: $switch-height-sm; |
|||
} |
|||
} |
|||
} |
|||
|
|||
&.switch-lg { |
|||
font-size: $font-size-lg; |
|||
|
|||
input { |
|||
+ label { |
|||
min-width: calc(#{$switch-height-lg} * 2); |
|||
height: $switch-height-lg; |
|||
line-height: $switch-height-lg; |
|||
text-indent: calc(calc(#{$switch-height-lg} * 2) + .5rem); |
|||
} |
|||
|
|||
+ label::before { |
|||
width: calc(#{$switch-height-lg} * 2); |
|||
} |
|||
|
|||
+ label::after { |
|||
width: calc(#{$switch-height-lg} - calc(#{$switch-thumb-padding} * 2)); |
|||
height: calc(#{$switch-height-lg} - calc(#{$switch-thumb-padding} * 2)); |
|||
} |
|||
|
|||
&:checked + label::after { |
|||
margin-left: $switch-height-lg; |
|||
} |
|||
} |
|||
} |
|||
|
|||
+ .switch { |
|||
margin-left: 1rem; |
|||
} |
|||
} |
@ -0,0 +1,36 @@ |
|||
/********************************************************************************** |
|||
* |
|||
* Copyright (C) 2017 MuK IT GmbH |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU Affero General Public License as |
|||
* published by the Free Software Foundation, either version 3 of the |
|||
* License, or (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU Affero General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU Affero General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
* |
|||
**********************************************************************************/ |
|||
|
|||
//---------------------------------------------------------- |
|||
// Switch |
|||
//---------------------------------------------------------- |
|||
|
|||
$switch-bg: #dee2e6; |
|||
$switch-disabled-bg: #e9ecef; |
|||
$switch-disabled-color: #868e96; |
|||
$switch-height: calc(#{$input-height} * .8) !default; |
|||
$switch-height-sm: calc(#{$input-height-sm} * .8) !default; |
|||
$switch-height-lg: calc(#{$input-height-lg} * .8) !default; |
|||
$switch-checked-bg: map-get($theme-colors, 'primary') !default; |
|||
$switch-thumb-bg: $white !default; |
|||
$switch-thumb-border-radius: 50% !default; |
|||
$switch-thumb-padding: 2px !default; |
|||
$switch-transition: .2s all !default; |
|||
$switch-border-radius: $switch-height; |
|||
$switch-focus-box-shadow: 0 0 0 $input-btn-focus-width rgba(map-get($theme-colors, 'primary'), .25); |
@ -0,0 +1,65 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
|
|||
<!-- |
|||
Copyright (C) 2017 MuK IT GmbH |
|||
|
|||
Odoo Proprietary License v1.0 |
|||
|
|||
This software and associated files (the "Software") may only be used |
|||
(executed, modified, executed after modifications) if you have |
|||
purchased a valid license from the authors, typically via Odoo Apps, |
|||
or if you have received a written agreement from the authors of the |
|||
Software (see the COPYRIGHT file). |
|||
|
|||
You may develop Odoo modules that use the Software as a library |
|||
(typically by depending on it, importing it and using its resources), |
|||
but without copying any source code or material from the Software. |
|||
You may distribute those modules under the license of your choice, |
|||
provided that this license is compatible with the terms of the Odoo |
|||
Proprietary License (For example: LGPL, MIT, or proprietary licenses |
|||
similar to this one). |
|||
|
|||
It is forbidden to publish, distribute, sublicense, or sell copies of |
|||
the Software or modified copies of the Software. |
|||
|
|||
The above copyright notice and this permission notice must be included |
|||
in all copies or substantial portions of the Software. |
|||
|
|||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
|||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
|||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
|||
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
|||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
|||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
|||
DEALINGS IN THE SOFTWARE. |
|||
--> |
|||
<templates id="template" xml:space="preserve"> |
|||
|
|||
<t t-name="muk_web_utils.switch"> |
|||
<span class="switch"> |
|||
<input type="checkbox" t-att-id="id" /> |
|||
<label t-att-for="id"> |
|||
<t t-if="label"><t t-esc="label"/></t> |
|||
</label> |
|||
</span> |
|||
</t> |
|||
|
|||
<t t-name="muk_web_utils.switch_sm"> |
|||
<span class="switch switch-sm"> |
|||
<input type="checkbox" t-att-id="id" /> |
|||
<label t-att-for="id"> |
|||
<t t-if="label"><t t-esc="label"/></t> |
|||
</label> |
|||
</span> |
|||
</t> |
|||
|
|||
<t t-name="muk_web_utils.switch_lg"> |
|||
<span class="switch switch-lg"> |
|||
<input type="checkbox" t-att-id="id" /> |
|||
<label t-att-for="id"> |
|||
<t t-if="label"><t t-esc="label"/></t> |
|||
</label> |
|||
</span> |
|||
</t> |
|||
|
|||
</templates> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue