Giter Club home page Giter Club logo

qwik-ui's People

Contributors

adamgen avatar allcontributors[bot] avatar balastrong avatar cwoolum avatar ditadi avatar dmitry-stepanenko avatar fabiobiondi avatar gilf avatar gioboa avatar github-actions[bot] avatar gparlakov avatar gregonnet avatar igalklebanov avatar ilteoood avatar itaim18 avatar luisbeqja avatar maiieul avatar naorpeled avatar nexontreehouse avatar nsdonato avatar patrickjs avatar reemardelarosa avatar shairez avatar shiroinegai avatar thejackshelton avatar themcnafaha avatar tleperou avatar wmertens avatar yishayhaz avatar zankel-engineering avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

qwik-ui's Issues

upgrade packages to latest

Upgrade all of the packages (especially the Qwik ones) to latest versions so we could update the qwik-nx plugin

Introduce a style guide

A style guide should be written to maintain consistency across contributions.

E.g. Including a Signal suffix at the end of variables that utilizes Qwik's useSignal

write a full headless select box + daisy component

Still missing:

  • Keyboard navigation
  • Verify ARIA is fully implemented by the spec
  • Fix the flickering issue
  • placeholder?
  • Design a theme-daisy implementation
  • Auto placements
  • storybook stories
  • component testing
  • multi-selection
  • disabled items (skip them)
  • arrow
  • hidden inputs for selected value / values (plus enabling selecting a complicated object and not just a primitive value with item[prop])
  • mouse clicking outside the list should close
  • transitions / animations
  • Grouping items

Headless UI?

Accessibility is super important in my environment, and DaisyUI has real issues when it comes to accessibility.

Have you considered using a UI set like Headless UI that puts accessibility first?

Add playwright tests

@gioboa wanted to work on this

We already have Cypress set up, which has a great DX (but no tests yet)
I wonder if we need to add playwright or is Cypress enough

Prefer "class" over "className"

Reproduction

  • Starting the website
cd packages/website
npm start
  • The following warning is shown

CleanShot 2023-01-29 at 21 23 20@2x

Proposed solution

We might want to replace className with class.

Final thoughts

  • I am willing preparing a PR for it.

Qwik's handling of preventDefault makes it difficult to create accessible behavior for keyboard events

This problem surfaced in trying to re-create native Select behavior.

Native Tab behavior on a select element activates the currently focused option and moves to the next tabbable element, usually the next form input element. As we have re-implemented the Select component without using native elements in favor of better styling capability, additional keyboard event listeners have to be implemented for accessibility.

However, Qwik currently only works with preventDefault as an attribute to an element like so:

<button preventDefault:onKeyUp>
</button>

and the following does not work:

<button onKeyUp$={(e) => {
    if (e.key === 'Tab') {
        e.preventDefault()
    }
}}>
</button>

This means that in order for us to recreate native Tab behavior for a Select component, we would have to set preventDefault on the element, and then re-implement existing behavior like Enter or Space to activate the element. This is potentially extra tedium or would clash with what users may expect when using Qwik UI in the future to compose their own components.

Add dialog component

Motivation

A Dialog is an UX-concept that is often used in projects.
We can provide a Dialog having an API that guides developers through the most common use cases:

  • Responsiveness
  • Animations/Transitions
  • Dragging
  • Scrolling long Content

Inspiration

Next Steps

  • Study implementation of a11y-dialog
  • Study implementation of react-a11y-dialog
  • Come up with API-Design (hook-API for headless UI vs. component-API)
  • Write Tests
  • Write documentation
  • Research features of other libraries
    • Sticky Actions Bar for long scrolling content (comes with Dialog.Actions)
    • Display Dialog as FullScreen
    • Allow custom open/close Animations
    • Allow Dragging Dialog
  • Decide which features make it into the BETA

Task `storybook:build-storybook` failes

Hi there

Great idea and work on this UI lib ๐Ÿ™
Wanted to have a look at your storybook impl. end found this error below while building a static version of storybook.

 *  Executing task: npx nx run core:build-storybook 


> nx run core:build-storybook


>  NX  ui framework: @storybook/html


>  NX  Storybook builder starting ...

info => Cleaning outputDir: /Users/zanettin/development/tests/qwik-ui/dist/storybook/core
info => Loading presets
info => Loading custom manager config
info => Compiling manager..
info => Loading custom manager config
vite v3.2.1 building for production...
transforming (616) ../../node_modules/@mdx-js/react/dist/esm.js
๐ŸŒผ daisyUI components 2.38.0  https://github.com/saadeghi/daisyui
  โœ”๏ธŽ Including:  base, components, themes[29], utilities
  
โœ“ 1052 modules transformed.
[vite]: Rollup failed to resolve import "@qwik-city-plan" from "packages/core/src/s_aaalzkh0klq.js".
This is most likely unintended because it can break your application at runtime.
If you do want to externalize this module explicitly add it to
`build.rollupOptions.external`
transforming (1258) ../../node_modules/lodash/_cacheHas.jsinfo => Manager built (21 s)

 >  NX   [vite]: Rollup failed to resolve import "@qwik-city-plan" from "packages/core/src/s_aaalzkh0klq.js".

   This is most likely unintended because it can break your application at runtime.
   If you do want to externalize this module explicitly add it to
   `build.rollupOptions.external`
   Pass --verbose to see the stacktrace.


 โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”

 >  NX   Ran target build-storybook for project core (23s)
 
    โœ–    1/1 failed
    โœ”    0/1 succeeded [0 read from cache]
 
   See Nx Cloud run details at https://nx.app/runs/4wHL3jkmOH


 *  The terminal process "/bin/zsh '-c', 'npx nx run core:build-storybook'" terminated with exit code: 1. 
 *  Terminal will be reused by tasks, press any key to close it. 

Add "merge" to class / className

Currently the `...props` is overriding the inner `class` of the component

for example:

<Alert class="alert-success">Message</Alert>

Will not render correctly because it'll replace the built in alert class inside the component

We need to merge them so both alert and alert-success will be part of the inner component's css class

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.