# vue-smooth-picker [](https://npmjs.com/package/vue-smooth-picker)
🏄🏼 A smooth picker component for Vue 3.
[](https://npmjs.org/package/vue-smooth-picker)


[](https://npmjs.org/package/vue-smooth-picker)
> Let's simplify selecting data on the touchscreen device, such as time, city, gender, seat number, product, etc.


## Usage
### Install
```bash
npm i -S vue-smooth-picker
```
### Quick look
```typescript
```
### Demo
| Name | Complexity | Code |
| -------------- | --------------- | --------- |
| [Product](https://hiyali.github.io/vue-smooth-picker/pages/example/product/) | ⭐⭐⭐ | [Link](https://github.com/hiyali/vue-smooth-picker/tree/gh-pages/example/product) |
| [Datetime](https://hiyali.github.io/vue-smooth-picker/pages/example/datetime/) | ⭐⭐ | [Link](https://github.com/hiyali/vue-smooth-picker/tree/gh-pages/example/datetime) |
| [Gender](https://hiyali.github.io/vue-smooth-picker/pages/example/gender/) | ⭐ | [Link](https://github.com/hiyali/vue-smooth-picker/tree/gh-pages/example/product) |
### Data Structure
```typescript
interface Props {
data: PickerGroup[]
onChange?: (groupIndex: number, itemIndex: number) => void
}
interface PickerGroup {
list?: PickerItem[] // List of items in this group
divider?: boolean // Indicates if this is a divider, default is false
text?: string // Text used when divider is true
flex?: number // Weight of the group in the parent container, range from 1 to 12
className?: string // Custom class name
textAlign?: string // Text alignment for items, can be 'left', 'center', or 'right'
currentIndex?: number // Current index of the selected item, default is 0
onClick?: (groupIndex: number, itemIndex: number) => void // Click event handler
}
interface PickerItem {
value: string | number // The value of the item, can be a string or a number
[key: string]: any // Other optional properties
}
```
### Instance Methods
| Name | Type | Description |
| ---------- | ---------- | ------------------ |
| `setGroupData` | `(groupIndex: number, groupData: PickerGroup) => void` | Dynamically updates the data for a specific group, allowing for real-time changes to the picker. |
| `getCurrentIndexList` | `() => number[]` | Returns an array of the current index for each group, reflecting the selected items. |
| `getGroupsRectList` | `() => void` | Updates the dimensions of the groups, which is useful for gesture handling. Call this method when the component's visibility changes. |
## Features
- 🎯 Vue 3 Support
- 💪 TypeScript Support
- 🎨 Customizable styles
- 📱 Touch-friendly
- 🔄 Smooth animations
## Contributors
## Vue 2 version (No longer maintained)
> Looking for Vue 2 version? Check out [vue-smooth-picker for Vue 2](https://github.com/hiyali/vue-smooth-picker/tree/vue2)
## License
MIT