Skip to content

Checkbox

CCheckbox es un checkbox nativo con su label, compatible con v-model booleano. Renderiza un <label> que envuelve el <input type="checkbox"> y el texto del label en <span class="label">.


Importación

js
import { CCheckbox } from '@bedrock/core/vue';
scss
@use '@bedrock/core/checkbox';

Props

PropTipoDefaultDescripción
modelValueBooleanfalseEstado del checkbox. Vinculado con v-model.
disabledBooleanfalseDeshabilita el checkbox y aplica data-disabled.
valueStringnullValor HTML del input. Útil en grupos de checkboxes.
nameStringnullNombre del campo para envío de formulario.
idStringnullID del input nativo. Necesario si se usa fuera de CField.

Slots

SlotDescripción
defaultTexto del label. Si está vacío, no se renderiza el <span class="label">.

Emits

EventoPayloadDescripción
update:modelValueBooleanEmitido al cambiar el estado. Permite usar v-model.

Atributos de datos generados

AtributoCuándo aparece
data-disabledCuando disabled es true.

Estructura HTML generada

html
<label class="c-checkbox">
  <input type="checkbox" />
  <span class="label">Acepto los términos</span>
</label>

Ejemplos de uso

Básico con v-model

html
<CCheckbox v-model="aceptado">Acepto los términos y condiciones</CCheckbox>

Deshabilitado

html
<CCheckbox v-model="valor" :disabled="true">Opción no disponible</CCheckbox>

Grupo de checkboxes

html
<CCheckbox
  v-for="opcion in opciones"
  :key="opcion.value"
  v-model="seleccionados"
  :value="opcion.value"
  name="preferencias"
>
  {{ opcion.label }}
</CCheckbox>

Sin label visible

html
<CCheckbox v-model="activo" :id="'toggle-activo'" aria-label="Activar notificaciones" />

Estilos en el proyecto consumidor

scss
@use 'bedrock-config' as *;
@use '@bedrock/core/checkbox';

.c-checkbox {
  display: inline-flex;
  align-items: center;
  gap: spacing(2);
  cursor: pointer;

  input[type='checkbox'] {
    width: spacing(4);
    height: spacing(4);
    accent-color: color(primary);
    cursor: pointer;
  }

  .label {
    @include typeset(label);
    color: color(text);
    user-select: none;
  }

  @include attr(disabled) {
    opacity: 0.5;
    cursor: not-allowed;

    input[type='checkbox'] { cursor: not-allowed; }
  }
}

Publicado bajo licencia MIT.