# vue-ellipsis
**Repository Path**: wangankeji-fe/vue-ellipsis
## Basic Information
- **Project Name**: vue-ellipsis
- **Description**: 基于 Vue2 的自定义文本省略支持
- **Primary Language**: JavaScript
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 25
- **Forks**: 4
- **Created**: 2019-07-11
- **Last Updated**: 2024-12-10
## Categories & Tags
**Categories**: vue-extensions
**Tags**: None
## README
# vue-ellipsis
Customize ellipsis-like support for Vue2.
Samples: https://hyjiacan.github.io/vue-ellipsis/
## Install
```bash
yarn add @hyjiacan/vue-ellipsis
```
or
```bash
npm install @hyjiacan/vue-ellipsis
```
## Usage
```javascript
import ellipsis from '@hyjiacan/vue-ellipsis'
Vue.use(ellipsis)
```
or
```javascript
import {ellipsisDirective, ellipsisComponent} from '@hyjiacan/vue-ellipsis'
// For directive usage
Vue.directive(ellipsisDirective.name, ellipsisDirective)
// For component usage
Vue.component(ellipsisComponent.name, ellipsisComponent)
// Use one of above makes it works.
```
You should specify the width via CSS.
```css
.ellipsis-style {
width: 200px;
}
.ellipsis-style {
width: 80%;
}
.ellipsis-style {
max-width: 200px;
}
```
or `STYLE`
```html
```
## Directive
- The value of directive `v-ellipsis` is the rows, default value: `1` , set `0` to show all text.
> Since 1.2.0
While modifier `scale` is specified, the value of directive should in form of `{min: 0, max: 40}`,
it's the limit of fontsize to scale。
When the `scale` modifier is specified, the value format should be `{min: 0, max: 40}`,
which indicates that it no longer represents the number of lines, but rather the range of `font-size` that are allowed
to scale.
### Modifiers
| name | description |
|--------|--------------------------------------------------------------------------|
| start | Show ellipsis as prefix |
| middle | Show ellipsis in the middle |
| end | Show ellipsis as suffix |
| always | **ALWAYS** show title while text overflow |
| none | **DO NOT** show title while text overflow |
| scale | Auto scale (`font-size`) text to fit container width, **WON'T** ellipsis |
- Modifiers `start`, `middle`, `end` are mutex, you should specify only one of them (default: `end`).
- Modifiers `always`, `none` are mutex, you should specify only one of them,
or leave it empty(Set `title` when there is an ellipsis, just like `auto` for property `showTitle`).
### Attributes
| name | default | description |
|---------------|---------|---------------------------------------------|
| data-ellipsis | `...` | Default fill text (ellipsis like text) |
| data-delay | `200` | the delay(milliseconds) for making ellipsis |
## Component
### Props
| name | type | default | description |
|------------|------------------------------|---------|---------------------------------------------------------------------------|
| fill | String | `...` | Default fill text (ellipsis like text) |
| position | String | end | Ellipsis position, options: `start`, `middle`, `end` |
| show-title | String | - | options: `always`, `none`, `auto`(default) |
| rows | Number | `1` | Number of rows, set `0` to show all text |
| scale | Boolean\|`{min: 0, max: 40}` | false | Auto scale (`font-size`) text to fit container width, **DO NOT** ellipsis |
| content | String | end | The content, makes the slot `default` ignored |
### Slots
| name | description |
|---------|-------------|
| default | The content |
## FAQ
1. Q: I have an element with padding by percentage, got unexpected display ?
A: Padding by percentage is not supported for now.