Home

Awesome

<p align="center"> <a href="https://github.com/Celtian/ngx-cut" target="blank"><img src="assets/logo.svg?sanitize=true" alt="" width="120"></a> <h1 align="center">NgxCut</h1> </p>

npm version Package License NPM Downloads Build & Publish Snyk codecov stars forks HitCount

Angular directive for cutting texts with responsive options

Angular 18 compatible

Here's the demo or stackblitz live preview or codesandbox live preview

🛠️ Install

  1. Use yarn (or npm) to install the package
yarn add ngx-cut
  1. Add NgxCutModule into your imports

  export const appConfig: ApplicationConfig = {
    providers: [
      importProvidersFrom(
        BrowserModule,
        NgxCutModule.forRoot({
          size: 1,
          breakpoints: { sm: 300, md: 400, lg: 500, xl: 600 },
          responsiveSizes: {
            xs: { xs: 1, sm: 2, md: 3, lg: 4, xl: 5 },
            sm: { xs: 2, sm: 3, md: 4, lg: 5, xl: 6 },
            md: { xs: 3, sm: 4, md: 5, lg: 6, xl: 7 },
            lg: { xs: 4, sm: 5, md: 6, lg: 7, xl: 8 },
            xl: { xs: 5, sm: 6, md: 7, lg: 8, xl: 9 }
          }
        })
      )
    ]
  };

  // or

  import { NgxCutModule } from 'ngx-cut';

  @NgModule({
   // ...
   imports: [
     // ...
     NgxCutModule.forRoot({
       // directive without [size] uses this value
       size: 1,
       // custom breakpoints
       breakpoints: { sm: 300, md: 400, lg: 500, xl: 600 },
       // lines be truncated in responsive mode
       responsiveSizes: {
         xs: { xs: 1, sm: 2, md: 3, lg: 4, xl: 5 },
         sm: { xs: 2, sm: 3, md: 4, lg: 5, xl: 6 },
         md: { xs: 3, sm: 4, md: 5, lg: 6, xl: 7 },
         lg: { xs: 4, sm: 5, md: 6, lg: 7, xl: 8 },
         xl: { xs: 5, sm: 6, md: 7, lg: 8, xl: 9 }
       }
     })
   ]
  })

  // or

  @NgModule({
   // ...
   imports: [
     // ...
     NgxCutModule.forRoot({
       // directive without [size] uses responsiveSizes.sm
       size: 'sm',
       // predefined breakpoint ('BOOTSTRAP', 'FX_LAYOUT' or 'CDK')
       breakpoints: 'BOOTSTRAP',
       // lines be truncated in responsive mode
       responsiveSizes: {
         xs: { xs: 1, sm: 2, md: 3, lg: 4, xl: 5 },
         sm: { xs: 2, sm: 3, md: 4, lg: 5, xl: 6 },
         md: { xs: 3, sm: 4, md: 5, lg: 6, xl: 7 },
         lg: { xs: 4, sm: 5, md: 6, lg: 7, xl: 8 },
         xl: { xs: 5, sm: 6, md: 7, lg: 8, xl: 9 }
       }
     })
   ]
  })

  // or

  @NgModule({
   // ...
   imports: [
     // ...
     NgxCutModule
   ]
  })

🚀 Quick start

Example code

<p ngxCut>some long text</p>

Result

  some long...

🛠️ Options

Root options

OptionTypeDefaultDescription
sizestring or number1Number of truncated lines
breakpointsobjectDEFAULT_BREAKPOINTSBreakpoints used in responsive mode
responsiveSizesobjectDEFAULT_RESPONSIVE_SIZESHow many lines should be truncated for each breakpoint

Directive

OptionTypeDefaultDescription
[size]objectvalue taken from root optionsNumber of truncated lines or responsive mode
[truncateDisabled]booleanfalseWhether truncation is active or not
(truncateChange)() => objectnoneEvent called when truncation is changed.

🔧 Compatibility

Angularngx-cutInstall
>= 122.xyarn add ngx-cut
>= 5 < 131.xyarn add ngx-cut@1
>= 5 < 130.xyarn add ngx-cut@0

📦 Dependencies

None

🪪 License

Copyright © 2020 - 2024 Dominik Hladik

All contents are licensed under the MIT license.