leifermendez / swipe-angular-list

You can now have a swipe effect on your angle application, with which you can place delete or edit options. Ideal for task list or contacts

Home Page:https://stackblitz.com/edit/angular-ejzvpz

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Angular Swiper List (swipe-angular-list)

You can now have a swipe effect on your Angular application, with which you can place delete or edit options. Ideal for task list or contacts.

VER DEMO

Buy Me A Coffee

Preview
Preview 1


Examples
Preview 1 Preview 2 Preview 3

Install

npm i swipe-angular-list@latest --save

Import

main.ts

Import hammerjs

import './polyfills';
import 'hammerjs'; // < ----- ********************************  IMPORT
import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';

app.module.ts

import { BrowserModule, HammerModule } from "@angular/platform-browser";
import { NgModule } from "@angular/core";
import { AppComponent } from "./app.component";

import { SwipeAngularListModule } from "swipe-angular-list"; // <------ IMPORT

@NgModule({
  declarations: [AppComponent],

  imports: [
    BrowserModule,
    HammerModule, // < ----- ******************************** IMPORTANT ******************
    SwipeAngularListModule, // < ----- ******************************** IMPORTANT ******************
  ],

  providers: [],

  bootstrap: [AppComponent],
})
export class AppModule {}

style.css

The scroll doesn't work on mobile devices?

* {
  touch-action: pan-y !important;
}

Use

Use in your component

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

@Component({
  selector: "app-root",

  templateUrl: "./app.component.html",

  styleUrls: ["./app.component.css"],
})
export class AppComponent {
  title = "for-test";

  list = [
    {
      id: 1,
      title: "Realizar la tarea asignada!",
      subTitle: "9:00pm",
    },
    {
      id: 2,
      title: "Visitar al perro en casa de tu amiga",
      subTitle: "9:00pm",
    },
    {
      id: 3,
      title: "Llamar al doctor",
      subTitle: "9:00pm",
    },
    {
      id: 4,
      title: "Buscar el auto en el taller",
      subTitle: "9:00pm",
    }
  ];

  action = (a) => {
    console.log(a);
  };
  
  swipeCallback = (a) => {
    console.log('Callback Swipe', a);
  }
}

Template

<div>
  <h3 style="text-align: center;">Task List</h3>

  <div>
    <sw-item-list
      *ngFor="let item of list"
      [inside]="item"
      [item-class]="'list-custom'"
      [editTemplate]="editTemplate"
      [trashTemplate]="trashTemplate"
      (callback)="action($event)"
      (swipeCb)="swipeCallback($event)">
    </sw-item-list>
  </div>
</div>

!<-- Defined yout template for icon button (edit)-->

<ng-template #editTemplate>
  <i class="fas fa-edit"></i>
</ng-template>

!<-- Defined yout template for icon button (trash)-->

<ng-template #trashTemplate>
  <i class="fas fa-trash"></i>
</ng-template>

Options

item structure defined :

{
   "id":1,
   "title":"Realizar la tarea asignada!",
   "subTitle":"9:00pm"
}

Inputs

Name Default Description
item-class (string) '' name of style class custom
show-mark (boolean) true boolean show icon done or not
editTemplate (TemplateRef) or null template for edit button
trashTemplate (TemplateRef) or null template for trash button
markTemplate (TemplateRef) template for icon check template
notMarkTemplat (TemplateRef) template for icon not check template

Output

Name Default Description
(callback) (function) function callback click option
(swClick) (function) click on item
(swipeCb) (function) function callback swipe item
<sw-item-list
  *ngFor="let item of list"
  [inside]="item"
  [item-class]="'list-custom'"
  [show-mark]="true"
  (swClick)="click(item)"
  (swipeCb)="swipeCallback($event)"
  [editTemplate]="editTemplate"
  [trashTemplate]="trashTemplate"
  [markTemplate]="defaultMark"
  [notMarkTemplate]="defaultNotMark"
  (callback)="action($event)"
>
</sw-item-list>

Example completed

<div>
  <h3 style="text-align: center;">TASK LIST</h3>
  <div>
    <sw-item-list
      *ngFor="let item of list"
      [inside]="item"
      [item-class]="'list-custom'"
      [show-mark]="false"
      [disable-mark]="item?.disable"
      (swClick)="click(item)"
      [editTemplate]="editTemplate"
      [trashTemplate]="trashTemplate"
      [markTemplate]="defaultMark"
      [customTemplate]="customTemplateSrc"
      [notMarkTemplate]="defaultNotMark"
      (callback)="action($event)">
    </sw-item-list>
  </div>
</div>

<ng-template #editTemplate>
  <i class="fas fa-edit"></i>
</ng-template>

<ng-template #trashTemplate>
  <i class="fas fa-trash"></i>
</ng-template>

<ng-template #defaultMark>
  <i class="far fa-check-circle"></i>
</ng-template>

<ng-template #defaultNotMark>
  <i class="far fa-circle"></i>
</ng-template>

<ng-template #customTemplateSrc let-item="item" let-id="id">
  <div style="display: flex;">
    <div style="padding-right: 10px;">
      <img
        style="width: 60px; height: 60px; border-radius: 60px;"
        [src]="'https://api.adorable.io/avatars/400/' + id + '.png'"
        alt=""/>
    </div>
    <div>
      <h3 style="margin-top: 0; margin-bottom: 0;">Lorem, ipsum dolor.</h3>
      <small style="color: gray; font-weight: 500;">
      Lorem ipsum dolor sit amet consectetur adipisicing elit. Non,optio.
      </small>
    </div>
  </div>
</ng-template>

About

You can now have a swipe effect on your angle application, with which you can place delete or edit options. Ideal for task list or contacts

https://stackblitz.com/edit/angular-ejzvpz

License:GNU General Public License v3.0


Languages

Language:TypeScript 71.7%Language:CSS 11.3%Language:HTML 10.5%Language:JavaScript 6.5%