30 lines
901 B
TypeScript
30 lines
901 B
TypeScript
import * as schema from '~~/drizzle/schema';
|
|
|
|
type Generation = typeof schema.generations.$inferSelect;
|
|
|
|
export const useTokenDropdown = () => {
|
|
const isOpen = useState('token-dropdown:open', () => false);
|
|
const activeGeneration = useState<Generation | null>('token-dropdown:generation', () => null);
|
|
const triggerElement = useState<HTMLElement | null>('token-dropdown:trigger', () => null);
|
|
|
|
const open = (generation: Generation, trigger: HTMLElement) => {
|
|
console.log("open", generation, trigger);
|
|
|
|
activeGeneration.value = generation;
|
|
triggerElement.value = trigger;
|
|
isOpen.value = true;
|
|
};
|
|
|
|
const close = () => {
|
|
isOpen.value = false;
|
|
};
|
|
|
|
return {
|
|
isOpen: readonly(isOpen),
|
|
activeGeneration: readonly(activeGeneration),
|
|
triggerElement: readonly(triggerElement),
|
|
open,
|
|
close,
|
|
};
|
|
};
|