Cómo Personalizar ion-searchbar en Ionic

Cómo Personalizar ion-searchbar en Ionic: Búsqueda Avanzada y Estilos Únicos


Si deseas mejorar la experiencia de búsqueda en tus aplicaciones Ionic, el componente ion-searchbar es una herramienta versátil que puedes personalizar según tus necesidades. En este tutorial, aprenderás a implementar una barra de búsqueda avanzada con filtros personalizados, estilos únicos y animaciones fluidas. Además, utilizaremos Angular Pipes para optimizar la búsqueda en listas variadas, logrando un diseño moderno y funcional.


Paso 1: Instalación de Ionic CLI y Creación del Proyecto

Antes de comenzar, asegúrate de instalar Ionic CLI en tu computadora. Este paso es fundamental para generar un entorno de desarrollo adecuado.

  1. Instala Ionic CLI (si aún no lo tienes):
   npm install -g @ionic/cli
  1. Crea un nuevo proyecto:
   ionic start CustomSearchApp blank --type=angular
  1. Accede al directorio del proyecto:
   cd CustomSearchApp

Paso 2: Configuración Básica del Proyecto en Angular e Ionic

Antes de continuar, ejecuta el proyecto para ver los cambios en tiempo real. Abre el proyecto en tu editor de código favorito y en la terminal, inicia el servidor de desarrollo con:

ionic serve

Esto abrirá el proyecto en un navegador, permitiéndote ver el progreso mientras implementamos el componente ion-searchbar y personalizamos la interfaz.


Paso 3: Crear un Componente de Búsqueda Dedicado

En lugar de añadir todo el código en la página principal, vamos a crear un componente exclusivo para la búsqueda. Esto mejorará la estructura y reutilización del código.

  1. Ejecuta el comando para crear un componente:
   ionic generate component search
  1. Dirígete a src/app/search/search.component.ts. Aquí definiremos la lista de elementos y la lógica de búsqueda para que el componente ion-searchbar funcione.

Paso 4: Definir los Datos para la Búsqueda en el Componente search.component.ts

Dentro de search.component.ts, añadimos una lista de elementos variados (frutas, verduras y animales) y una función para realizar el filtrado.

import { Component } from '@angular/core';

@Component({
  selector: 'app-search',
  templateUrl: './search.component.html',
  styleUrls: ['./search.component.scss'],
})
export class SearchComponent {
  searchTerm: string = '';
  items: string[] = [
    'Apple', 'Banana', 'Carrot', 'Dog', 'Elephant', 'Frog', 'Grapes', 'Horse', 'Iceberg Lettuce', 'Jaguar',
    'Kiwi', 'Lion', 'Mango', 'Nectarine', 'Orange', 'Pineapple', 'Quail', 'Rabbit', 'Strawberry', 'Tomato',
    'Umbrella Bird', 'Vegetable', 'Walnut', 'Xylophone Fish', 'Yam', 'Zebra'
  ];

  constructor() {}

  filterItems() {
    return this.items.filter(item => 
      item.toLowerCase().includes(this.searchTerm.toLowerCase()));
  }
}

Paso 5: Crear la Estructura HTML para ion-searchbar y Mostrar Resultados Filtrados

Ahora, vamos a trabajar en el archivo search.component.html para configurar la estructura de la búsqueda con ion-searchbar y mostrar los elementos filtrados en una lista.

<ion-header>
  <ion-toolbar color="primary">
    <ion-title>Custom Search</ion-title>
  </ion-toolbar>
</ion-header>

<ion-content>
  <ion-searchbar [(ngModel)]="searchTerm" (ionInput)="filterItems()" placeholder="Search items..."></ion-searchbar>

  <ion-list>
    <ion-item *ngFor="let item of filterItems()">
      {{ item }}
    </ion-item>
  </ion-list>
</ion-content>

Explicación de la Estructura HTML:

  • ion-header: Define el encabezado de la página de búsqueda.
  • ion-toolbar: Contiene el título de la barra de búsqueda.
  • ion-searchbar: Barra de búsqueda personalizada con enlace bidireccional ([(ngModel)]) al término de búsqueda.
  • ion-list y ion-item: Muestra la lista filtrada de elementos usando *ngFor.

Paso 6: Personalización Básica de la Barra de Búsqueda en search.component.scss

Para mejorar la apariencia de ion-searchbar, añadiremos CSS personalizado. Abre search.component.scss y añade lo siguiente:

ion-searchbar {
  --background: linear-gradient(to right, #ff7e5f, #feb47b);
  --color: white;
  --placeholder-color: rgba(255, 255, 255, 0.7);
  border-radius: 10px;
  margin: 20px;
}

Esto le dará a ion-searchbar un fondo degradado y un texto blanco para una apariencia más sofisticada.


Paso 7: Añadir una Animación Sutil al ion-searchbar

Agregaremos un efecto de escalado (zoom) cuando el usuario pase el cursor sobre ion-searchbar para mejorar la interactividad.

.searchbar-input-container {
  transition: transform 0.2s;
}

&:hover .searchbar-input-container {
  transform: scale(1.05);
}

Paso 8: Añadir una Animación para los Elementos Filtrados

Añadiremos una animación de desvanecimiento a los elementos de la lista filtrada para que aparezcan suavemente.

ion-item {
  animation: fadeIn 0.3s ease;
}

@keyframes fadeIn {
  from {
    opacity: 0;
    transform: translateY(10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}


Paso 9: Crear un Pipe Personalizado para la Búsqueda

Para estructurar mejor el código, vamos a crear un Pipe que maneje la lógica de filtrado. Esto también facilita la reutilización.

  1. Ejecuta el comando para crear un Pipe:
   ionic generate pipe filter
  1. Dirígete a filter.pipe.ts y agrega el siguiente código:
import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'filter'
})
export class FilterPipe implements PipeTransform {
  transform(items: string[], searchTerm: string): string[] {
    if (!items || !searchTerm) {
      return items;
    }
    return items.filter(item => item.toLowerCase().includes(searchTerm.toLowerCase()));
  }
}

Paso 10: Implementar el Pipe en el HTML

Para usar el Pipe de búsqueda, reemplaza el método de filtrado en el archivo HTML con el Pipe filter.

<ion-list>
  <ion-item *ngFor="let item of items | filter:searchTerm">
    {{ item }}
  </ion-item>
</ion-list>

Paso 11: Añadir el Botón de Limpieza de Búsqueda

Añadimos un botón de limpiar en ion-searchbar para facilitar al usuario el reinicio de la búsqueda.

<ion-searchbar [(ngModel)]="searchTerm" (ionClear)="searchTerm=''" showCancelButton="focus"></ion-searchbar>

Paso 12: Optimización de la Barra de Búsqueda para Dispositivos Móviles

Para mejorar la experiencia en móviles, ajustaremos el tamaño del texto y los márgenes de ion-searchbar.

@media (max-width: 600px) {
  ion-searchbar {
    font-size: 1.2rem;
    margin: 10px;
  }
}

Paso 13: Personalización Avanzada con Iconos Personalizados

Podemos reemplazar el icono de búsqueda con uno personalizado. Cambia el valor de search-icon en ion-searchbar:

<ion-searchbar [(ngModel)]="searchTerm" (ionClear)="searchTerm=''" searchIcon="heart-outline"></ion-searchbar>

Conclusión

En este tutorial, exploramos diversas formas de personalizar y mejorar ion-searchbar en Ionic. Desde la implementación de una búsqueda eficiente con Pipes hasta la aplicación de animaciones y estilos avanzados, cada paso nos acerca a una experiencia de usuario más atractiva. Ahora tienes las herramientas para personalizar tu barra de búsqueda según las necesidades de tu proyecto. ¡Explora y crea interfaces sorprendentes!

También puedes ver más Aquí

Comparte:
Scroll al inicio