Boa tarde.
Consigo utiliza um switch para substituir um checkbox na tela?
Exemplo:
Att,
Nielson Santos
Boa tarde.
Consigo utiliza um switch para substituir um checkbox na tela?
Exemplo:
Att,
Nielson Santos
Olá @nielson.santos.
É possível sim!
Inspirado neste exemplo do W3 School, criei um CSS e um JS para transformar a Checkbox do Formulário em campo do tipo Switch.
Nesta implementação, todas as Checkboxes com nome precedido por “swi” serão transformadas em Switches. Você pode adicionar os códigos no CSS / JS Público ou no CSS / JS do Formulário.
O resultado é este:
Adicione o este código no CSS Público do Sistema ou no CSS do Formulário:
.switch-parent >label:first-child {
display: inline-block;
margin-right: 6px;
}
.switch {
position: relative;
display: inline-block;
width: 30px !important;
height: 16px;
}
.switch input {
opacity: 0;
width: 0;
height: 0;
}
.slider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #ccc;
-webkit-transition: .2s;
transition: .2s;
}
.slider:before {
position: absolute;
content: "";
height: 12px;
width: 12px;
left: 2px;
bottom: 2px;
background-color: white;
-webkit-transition: .2s;
transition: .2s;
}
input:checked + .slider {
background-color: #ee9090;
}
input:focus + .slider {
box-shadow: 0 0 1px #ee9090;
}
input:checked + .slider:before {
-webkit-transform: translateX(14px);
-ms-transform: translateX(14px);
transform: translateX(14px);
}
/* Rounded sliders */
.slider.round {
border-radius: 22px;
}
.slider.round:before {
border-radius: 50%;
}
Adicione o este código no JavaScript Público do Sistema ou no JavaScript do Formulário:
// Adiciona Callbacks no Formulário
latromi.formManager.setOnFormCreatedCallback( function(arguments){
let fieldNames = Object.keys(arguments.form.fields);
for (let n = 0; n < fieldNames.length; n++) {
let field = arguments.form.fields[fieldNames[n]];
// Todos campos do tipo "6" (checkbox) com nome
// precedido de "swi" serão transformados em Switch
if (field.type == 6 && field.name.indexOf('swi') === 0) {
// Obtem elemento checkbox
checkbox = document.getElementById(field.clientId);
// Elemento superior
let checkboxParent = checkbox.parentNode;
// Remove Checkbox
checkbox.remove();
// Cria elementos do Switch, e adiciona a checkbox dentro
let switchLabel = document.createElement('label');
switchLabel.className = 'switch';
switchLabel.appendChild(checkbox);
let slider = document.createElement('span');
slider.className = 'slider round'
switchLabel.appendChild(slider);
// Adiciona o Swith no documento
checkboxParent.className = 'switch-parent';
checkboxParent.appendChild(switchLabel);
}
}
});
Bah, ficou muito top!
Mas fica a dica para deixar a opção direto no client, vale a pena.
Talvez, seja até uma opção do checkbox, como forma de exibição.
É uma boa ideia! Vamos cogitar isso!