Un mixin es un utilitario o helper que nos en términos de programación nos ayuda a reutilizar código de manera fácil y estandarizada. En nuestro flujo frontend lo aplicamos para formularios, para embeber etiquetas o para embeber código. Cabe mencionar que los mixins también pueden recibir parámetros.

Mixins web

Mixin social

Éste mixin es utilizado para poder cargar las librerias JS de las redes sociales básicas: Facebook, Twitter y Google+.

Éste mixin recibe 1 parámetro del tipo Array, en el cual debemos indicar las redes sociales que deseamos incrustar, a continuación los ejemplos:

Si deseamos incrustar solo Facebook, el código sería:

+social(['fb'])

Y si desearamos agregar Facebook y Twitter sería:

+social(['fb', 'tw'])

Mixin tracking

Es utilizado para embeber el código UA de Google Analytics. No recibe ningún argumento, para su correcto funcionamiento es necesario que se haya configurado previamente el atributo analytics_ua dentro del archivo base.js, el cual se encuentra en:

├── frontend
│   ├── site
│   │   ├── settings
│   │   │   ├── base.js

Para usar éste mixin solo se coloca

+tracking

Y por lo general esta ubicado en _layout.jade, en la ruta

├── frontend
│   ├── site
│   │   ├── templates
│   │   │   ├── _layout.jade

Mixin requireTag

Éste mixin requiere de un parámetro que es el nombre de nuestro archivo JS que deseamos incluir en nuestro Jade.

Es importante mencionar que en éste mixin además de incluir nuestro modulo de Require, se incluye todo el archivo require-config como si fuera Javascript inline.

Su forma de uso es la siguiente:

+requireTag('site.home')

Mixins para Formularios

Para el uso de mixins en formularios, existen mixins especiales para cada tipo de input. La lista es la siguiente:

  • input_text(config)
  • input_date(config)
  • input_number(config)
  • input_email(config)
  • input_search(config)
  • input_file(config)
  • list_checkbox(config)
  • checkbox(config)
  • list_radiobox(config)
  • radiobox(config)
  • select(config)

Cada uno recibe por parámetro un objeto “config” con las propiedades de cada mixin. Las propiedades pueden variar entre uno y otro, sin embargo existen algunas propiedades en común, a continuación las propiedades detalladas:

input_text

Éste mixin se utiliza para colocar un input del tipo text. Sus atributos son los siguientes:

  • name

    valor por defecto = ""
    Ésta propiedad es el nombre del input, debe ser el mismo que se ha declarado de lado de backend.

  • id

    valor por defecto = name
    Ésta propiedad asigna el atributo id del input, en caso no esté asignado tomará por defecto el valor de name.

  • minLength

    valor por defecto = 3 Ésta propiedad asigna la cantidad mínima de caracteres con las que debe contar el input.

  • defaultValue

    valor por defecto = ""
    Ésta propiedad indica el valor por defecto que tendrá el input.

  • isDisabled

    valor por defecto = false
    Ésta propiedad indica si el input está deshabilitado o no.

  • hasNoLabel

    valor por defecto = false
    Ésta propiedad indica si el input no tiene label

  • placeholder

    valor por defecto = ""
    Ésta propiedad asigna un placeholder al input.

  • label

    valor por defecto = ""
    Ésta propiedad indica el valor del label para el input.

input_date

Éste mixin generea un input del tipo date, el cual solo permite el ingreso de fechas. Sus atributos son los siguientes.

  • name

    valor por defecto = ""
    Ésta propiedad es el nombre del input, debe ser el mismo que se ha declarado de lado de backend.

  • id

    valor por defecto = name
    Ésta propiedad asigna el atributo id del input, en caso no esté asignado tomará por defecto el valor de name.

  • minLength

    valor por defecto = 3 Ésta propiedad asigna la cantidad mínima de caracteres con las que debe contar el input.

  • defaultValue

    valor por defecto = ""
    Ésta propiedad indica el valor por defecto que tendrá el input.

  • isDisabled

    valor por defecto = false
    Ésta propiedad indica si el input está deshabilitado o no.

  • hasNoLabel

    valor por defecto = false
    Ésta propiedad indica si el input no tiene label

  • placeholder

    valor por defecto = ""
    Ésta propiedad asigna un placeholder al input.

  • label

    valor por defecto = ""
    Ésta propiedad indica el valor del label para el input.

  • dateFormat

    valor por defecto = 'dd/mm/yyyy'
    Ésta propiedad especifica el formato de fecha que se utilizará, por defecto es día, mes y año.

  • minDate

    valor por defecto = '01/01/1920'
    Especifica una fecha mínima aceptada, éste valor debe respetar el formato de fecha especificado anteriormente.

  • maxDate

    valor por defecto = false Especifica una fecha máxima aceptada. Por defecto no existe éste límite.

input_number

Éste mixin genera un input que solo permite el ingreso de números. Sus atributos son los siguientes.

  • name

    valor por defecto = ""
    Ésta propiedad es el nombre del input, debe ser el mismo que se ha declarado de lado de backend.

  • id

    valor por defecto = name
    Ésta propiedad asigna el atributo id del input, en caso no esté asignado tomará por defecto el valor de name.

  • minLength

    valor por defecto = 3 Ésta propiedad asigna la cantidad mínima de caracteres con las que debe contar el input.

  • defaultValue

    valor por defecto = ""
    Ésta propiedad indica el valor por defecto que tendrá el input.

  • isDisabled

    valor por defecto = false
    Ésta propiedad indica si el input está deshabilitado o no.

  • hasNoLabel

    valor por defecto = false
    Ésta propiedad indica si el input no tiene label

  • placeholder

    valor por defecto = ""
    Ésta propiedad asigna un placeholder al input.

  • label

    valor por defecto = ""
    Ésta propiedad indica el valor del label para el input.

input_email

Éste mixin genera un input que solo permite el ingreso de correos electrónicos. Sus atributos son los siguientes.

  • name

    valor por defecto = ""
    Ésta propiedad es el nombre del input, debe ser el mismo que se ha declarado de lado de backend.

  • id

    valor por defecto = name
    Ésta propiedad asigna el atributo id del input, en caso no esté asignado tomará por defecto el valor de name.

  • minLength

    valor por defecto = 3 Ésta propiedad asigna la cantidad mínima de caracteres con las que debe contar el input.

  • defaultValue

    valor por defecto = ""
    Ésta propiedad indica el valor por defecto que tendrá el input.

  • isDisabled

    valor por defecto = false
    Ésta propiedad indica si el input está deshabilitado o no.

  • hasNoLabel

    valor por defecto = false
    Ésta propiedad indica si el input no tiene label

  • placeholder

    valor por defecto = ""
    Ésta propiedad asigna un placeholder al input.

  • label

    valor por defecto = ""
    Ésta propiedad indica el valor del label para el input.

input_file

Éste mixin genera un input del tipo file, por ello es importante considerar que el form que lo contiene contenga el atributo enctype="multipart/form-data" Sus atributos son los siguientes.

  • name

    valor por defecto = ""
    Ésta propiedad es el nombre del input, debe ser el mismo que se ha declarado de lado de backend.

  • id

    valor por defecto = name
    Ésta propiedad asigna el atributo id del input, en caso no esté asignado tomará por defecto el valor de name.

  • minLength

    valor por defecto = 3 Ésta propiedad asigna la cantidad mínima de caracteres con las que debe contar el input.

  • defaultValue

    valor por defecto = ""
    Ésta propiedad indica el valor por defecto que tendrá el input.

  • isDisabled

    valor por defecto = false
    Ésta propiedad indica si el input está deshabilitado o no.

  • hasNoLabel

    valor por defecto = false
    Ésta propiedad indica si el input no tiene label

  • placeholder

    valor por defecto = ""
    Ésta propiedad asigna un placeholder al input.

  • label

    valor por defecto = ""
    Ésta propiedad indica el valor del label para el input.

list_checkbox

Éste mixin genera una lista de inputs del tipo checkbox. Sus atributos son los siguientes.

  • name

    valor por defecto = ""
    Ésta propiedad es el nombre del input, debe ser el mismo que se ha declarado de lado de backend.

  • id

    valor por defecto = name
    Ésta propiedad asigna el atributo id del input, en caso no esté asignado tomará por defecto el valor de name.

  • minLength

    valor por defecto = 3 Ésta propiedad asigna la cantidad mínima de caracteres con las que debe contar el input.

  • hasNoLabel

    valor por defecto = false
    Ésta propiedad indica si el input no tiene label

  • label

    valor por defecto = ""
    Ésta propiedad indica el valor del label para el input.

checkbox

Éste mixin genera un input del tipo checkbox, a diferencia de list_checkbox, éste mixin se utiliza comunmente para el checkbox de términos y condiciones. Sus atributos son los siguientes.

  • name

    valor por defecto = ""
    Ésta propiedad es el nombre del input, debe ser el mismo que se ha declarado de lado de backend.

  • id

    valor por defecto = name
    Ésta propiedad asigna el atributo id del input, en caso no esté asignado tomará por defecto el valor de name.

  • minLength

    valor por defecto = 3 Ésta propiedad asigna la cantidad mínima de caracteres con las que debe contar el input.

  • hasNoLabel

    valor por defecto = false
    Ésta propiedad indica si el input no tiene label

  • label

    valor por defecto = ""
    Ésta propiedad indica el valor del label para el input.

  • isRequired

    valor por defecto = false
    Ésta propiedad indica si el checkbox es requerido o no.

  • has_link

    valor por defecto = false
    Indica si el label de nuestro checkbox tendrá algún enlace o no.

  • link_href

    valor por defecto = ""
    Aquí se indica la url del link a donde queremos apuntar. Por lo general es la url de términos y condiciones.

  • link_text

    valor por defecto = ""
    Aquí va el texto que estará enlazando a la url declarada en el atributo anterior

list_radiobox

Éste mixin genera una lista de inputs del tipo checkbox. Sus atributos son los siguientes.

  • name

    valor por defecto = ""
    Ésta propiedad es el nombre del input, debe ser el mismo que se ha declarado de lado de backend.

  • id

    valor por defecto = name
    Ésta propiedad asigna el atributo id del input, en caso no esté asignado tomará por defecto el valor de name.

  • minLength

    valor por defecto = 3 Ésta propiedad asigna la cantidad mínima de caracteres con las que debe contar el input.

  • hasNoLabel

    valor por defecto = false
    Ésta propiedad indica si el input no tiene label

  • label

    valor por defecto = ""
    Ésta propiedad indica el valor del label para el input.

radiobox

Éste mixin genera un input del tipo checkbox. Sus atributos son los siguientes.

  • name

    valor por defecto = ""
    Ésta propiedad es el nombre del input, debe ser el mismo que se ha declarado de lado de backend.

  • id

    valor por defecto = name
    Ésta propiedad asigna el atributo id del input, en caso no esté asignado tomará por defecto el valor de name.

  • minLength

    valor por defecto = 3 Ésta propiedad asigna la cantidad mínima de caracteres con las que debe contar el input.

  • hasNoLabel

    valor por defecto = false
    Ésta propiedad indica si el input no tiene label

  • label

    valor por defecto = ""
    Ésta propiedad indica el valor del label para el input.

  • defaultValue

    valor por defecto = ""
    Ésta propiedad indica el valor por defecto que tendrá el input.

select

Éste mixin genera un input del tipo select. Sus atributos son los siguientes.

  • name

    valor por defecto = ""
    Ésta propiedad es el nombre del input, debe ser el mismo que se ha declarado de lado de backend.

  • id

    valor por defecto = name
    Ésta propiedad asigna el atributo id del input, en caso no esté asignado tomará por defecto el valor de name.

  • minLength

    valor por defecto = 3 Ésta propiedad asigna la cantidad mínima de caracteres con las que debe contar el input.

  • valueSelected

    valor por defecto = false
    Ésta propiedad asigna un valor por defecto.

  • isAjax

    valor por defecto = false
    Ésta propiedad nos indica si el input efectúa una llamada del tipo ajax, usualmente utilizado para ubigeo.

  • dataSource

    valor por defecto = ''
    Ésta propiedad indica una URL a la que se hará una llamada AJAX si es que el atributo anterior fue asignado como TRUE.

  • isDisabled

    valor por defecto = false
    Ésta propiedad indica si el input está deshabilitado o no.

  • hasNoLabel

    valor por defecto = false
    Ésta propiedad indica si el input no tiene label

  • label

    valor por defecto = ""
    Ésta propiedad indica el valor del label para el input.

  • defaultText

    valor por defecto = ""
    Ésta propiedad asigna un texto por defecto. Ésta propiedad es usualmente utilizada cuando el input select ha sido personalizado.