Picker component with vue3
and react
.
- Supports
single-column
andcascade
picker - Scroll wheel 3D effect for smooth selection
- Customize
title
,confirm
andcancel
buttons - Flexible column structure for different use cases
- Built-in
DatePicker
andTimePicker
components - Full TypeScript support
For detailed documentation and usage examples, please visit: Official Docs.
# Using npm
$ npm install @component-hook/picker
# Using yarn
$ yarn add @component-hook/picker
# Using pnpm
$ pnpm install @component-hook/picker
<script setup lang="ts">
import { Picker } from '@component-hook/picker/vue';
import { ref } from 'vue';
const isShowPicker = ref(false);
const pickerValues = ref<number[]>([]);
const columns = Array.from({ length: 50 }, (_, index) => ({ label: index, value: index }));
function onConfirm(value: number[]) {
pickerValues.value = value;
}
function onCancel() {
console.log('cancel');
}
</script>
<template>
<picker
v-model:show="isShowPicker"
:columns="columns"
title="Base Selector"
@confirm="onConfirm"
@cancel="onCancel"
/>
<button @click="isShowPicker = true">toggle Base picker</button>
<p class="mt-6 text-sm font-mono">Selected value: {{ pickerValues.join('') || 'not selected yet' }}</p>
</template>
import { Picker } from '@component-hook/picker/react';
import { useState } from 'react';
const columns = Array.from({ length: 50 }, (_, index) => ({ label: index, value: index }));
export function BasePicker() {
const [showPicker, setShowPicker] = useState(false);
const [pickerValues, setPickerValues] = useState<number[]>([]);
function onConfirm(values: number[]) {
setPickerValues(values);
}
return (
<>
<Picker
show={showPicker}
columns={columns}
title="Base Selector"
onClose={() => setShowPicker(false)}
onConfirm={onConfirm}
onCancel={onCancel}
/>
<button onClick={() => setShowPicker(true)}>toggle Base picker</button>
<p>Selected value: {pickerValues.join('') || 'not selected yet'}</p>
</>
);
}
function onCancel() {
console.log('cancel');
}
This project is licensed under the MIT License.