Giter VIP home page Giter VIP logo

react-multiline-clamping's Introduction

React Multiline Clamping

React component that uses the css line clamping to truncate given text in specified lines.

Codesandbox demo

Features

  • ๐ŸŽ‰ Uses the css line clamp property
  • ๐Ÿ˜ฑ It works both with plain text and HTML/Components
  • ๐Ÿ’ฅ Integrated show more/less behaviour
  • ๐Ÿ‘‚ Listens to text and lines changes and responds accordingly
  • โš™๏ธ Easy-to-use component API
  • ๐ŸŒณ Tiny size, only 1.4kb

Installation

npm install react-multiline-clamp

Basic example

import Clamp from 'react-multiline-clamp';

const MyComponent = () => {
    return (
        <Clamp withTooltip lines={2}>
            <p>Multiline text</p>
        </Clamp>
    );
};

With show more/less behaviour

import Clamp from 'react-multiline-clamp';

const MyComponent = () => {
    return (
        <Clamp
            lines={2}
            maxLines={6}
            withToggle
            showMoreElement={({ toggle }) => (
                <button type="button" onClick={toggle}>
                    Show more
                </button>
            )}
            showLessElement={({ toggle }) => (
                <span type="button" onClick={toggle}>
                    menossssss
                </span>
            )}
        >
            <p>Multiline text</p>
        </Clamp>
    );
};

API

Name Type Default Description
children Element The expected element to which the ellipsis would be applied. It could be plain text or any HTML/Component
lines Number 2 The number of lines we want the text to be truncated to
maxLines Number 8 The maximum number of lines we want to show after clicking on showMore button
withTooltip Boolean true Indicates if we want the text to have a tooltip title
withToggle Boolean false Indicates if we want to have the show more/less actions
showMoreElement Element More Element that triggers the show more action
showLessElement Element Less Element that triggers the show less action
onShowMore (isExpanded) => Boolean () => {} A callback function that gets calls every time we click on the show more/less buttons. It returns whether the text is expanded or not (Boolean)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.