Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Select #19

Open
productdevbook opened this issue Apr 26, 2023 · 0 comments
Open

Select #19

productdevbook opened this issue Apr 26, 2023 · 0 comments
Assignees

Comments

@productdevbook
Copy link
Contributor

productdevbook commented Apr 26, 2023

  1. Accessibility (a11y)
    • Keyboard navigation: Support arrow keys, Enter, Space, Escape, and Tab for seamless navigation.
    • ARIA attributes: Properly set aria-expanded, aria-controls, aria-activedescendant, and aria-labelledby.
    • Focus management: Ensure correct focus handling when opening and closing the dropdown.
    • Screen reader support: The selected item and menu state should be clearly conveyed.

  2. Headless & Unstyled Design
    • No built-in styles: Allow full customization through user-defined styles.
    • Slot or render prop pattern: Enable flexible UI customization.

  3. Strong Type Safety (TypeScript Support)
    • Generic types: Use T extends string | number | symbol for type safety.
    • Well-defined TypeScript interfaces: Ensure proper typings for props and events.

  4. Composable Architecture

The component should be modular and split into smaller parts:
• – Wrapper component
• – The button that opens the dropdown
• – The dropdown list container
• – Individual selectable items
• – Label for grouped items
• – Used for grouping items
• – Divider between sections

  1. Controlled & Uncontrolled Usage
    • Support v-model (for Vue users).
    • Provide internal state management for uncontrolled usage (useVModel or similar).

  2. High Performance
    • Virtual scrolling: Optimize rendering when dealing with large option lists.
    • Debounced filtering: Prevent unnecessary re-renders when searching.

  3. Animations & Positioning
    • Use a positioning library: Floating UI or Popper.js for proper menu placement.
    • Support Vue’s Transition API for smooth animations.

  4. Asynchronous Data Handling
    • Lazy loading: Fetch options dynamically when needed.
    • Loading state: Display a loading indicator when fetching data.

@productdevbook productdevbook moved this to 👀 In review in oku-ui Jul 16, 2023
@productdevbook productdevbook self-assigned this Jul 16, 2023
@productdevbook productdevbook moved this from 👀 In review to 🏗 In progress in oku-ui Jul 16, 2023
@productdevbook productdevbook removed their assignment Aug 14, 2023
@productdevbook productdevbook moved this from 🏗 In progress to 📋 Backlog in oku-ui Aug 14, 2023
@dammy001 dammy001 self-assigned this Aug 24, 2023
@dammy001 dammy001 moved this from 📋 Backlog to 🏗 In progress in oku-ui Aug 24, 2023
@productdevbook productdevbook linked a pull request Sep 30, 2023 that will close this issue
@productdevbook productdevbook moved this from 🏗 In progress to 📋 Backlog in oku-ui Mar 9, 2024
@productdevbook productdevbook removed a link to a pull request Nov 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: 📋 Backlog
Development

No branches or pull requests

3 participants