Progress
Barra de progreso para mostrar el avance de una tarea, con un tirador arrastrable opcional.
Úsalo cuando necesites una barra que muestre el avance de una tarea. Usa
<r-progress>tal cual para un progreso de solo lectura, otype="drag"cuando el usuario deba fijar el valor con un tirador arrastrable.
Inicio rápido
<r-progress percent="40%"></r-progress>💡 Consejo:
r-progresses un elemento de bloque sin ancho intrínseco. Dentro de una fila flex puede colapsar a ancho cero; dale un ancho explícito (por ejemplostyle="width:100%") o colócalo en un contexto de bloque.
Referencia de la API
Propiedades
| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
percent | string | '0' | Progreso actual; admite un número o un porcentaje. Se limita a total. |
total | string | '100' | Progreso total; admite un número o un porcentaje. |
type | string | 'primary' | Tipo de barra: primary (estática) o drag (clicable y arrastrable). |
dot | string | 'true' | Si se muestra el tirador de arrastre: true o false. |
sheet | string | '' | CSS inyectado en el shadow DOM del componente. |
Valor del progreso percent
Define el progreso actual. Admite un número o una cadena de porcentaje y no puede superar total. Cuando total no está definido, vale 100 por defecto (es decir, percent se lee como porcentaje de 100).
<r-progress percent="30%"></r-progress>
<r-progress percent="70%"></r-progress>
<r-progress percent="100%"></r-progress>Progreso total total
Define el denominador de percent. Se admiten tanto números como porcentajes, así que percent="30" total="1000" llena la barra al 3%.
<r-progress percent="30" total="1000"></r-progress>
<r-progress percent="70" total="100"></r-progress>
<r-progress percent="10%" total="100%"></r-progress>Tipo de barra type
primary: barra de progreso estática. Es el valor por defecto si no definestype.drag: barra clicable y arrastrable. Hacer clic en la pista o arrastrar el tirador actualizapercenty dispara un eventochange. Arrastrar el tirador requieredot="true".
<r-progress type="drag" percent="30%"></r-progress> <r-progress type="primary" percent="40%"></r-progress>Tirador de arrastre dot
Activa o desactiva el tirador. Solo se dibuja cuando dot="true" y type="drag"; en una barra primary estática se omite a propósito, así que allí dot no tiene efecto visible.
<r-progress type="drag" percent="30%" dot="true"></r-progress>
<r-progress type="drag" percent="30%" dot="false"></r-progress>Eventos
change
Se despacha en el tipo drag cada vez que el usuario hace clic en la pista o arrastra el tirador, actualizando percent. El objeto detail lleva:
| Campo | Tipo | Descripción |
|---|---|---|
value | string | Progreso actual |
percent | string | Progreso actual |
total | string | Progreso total |
<r-progress type="drag" percent="30%"></r-progress>
<script>
const progress = document.createElement('r-progress');
progress.type = 'drag';
progress.percent = '30%';
progress.addEventListener('change', (e) => {
console.log(e.detail.value, e.detail.percent, e.detail.total);
});
container.append(progress);
</script>Partes CSS
| Parte | Descripción |
|---|---|
track | La pista del progreso (el fondo). |
fill | La porción llena de la pista. |
dot | El tirador de arrastre. |
r-progress::part(fill) {
background: var(--ran-color-primary);
}Buenas prácticas
- Barras estáticas: usa el
type="primary"por defecto para mostrar un progreso de solo lectura. - Barras interactivas: usa
type="drag"cuando el usuario deba poder fijar el valor, y escucha el eventochange. - Porcentaje o número: mezcla
percentytotalcon libertad; pasa números crudos cuando correspondan a un total conocido, o porcentajes para un control directo. - Ancho en la maqueta: envuelve la barra en un contenedor de bloque o dale un ancho explícito para que no colapse en maquetas flex.