-
Notifications
You must be signed in to change notification settings - Fork 40
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
Forms - Input #14
Forms - Input #14
Conversation
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
…r outline floating label
… official version
lgtm |
🎉 This PR is included in version 1.0.0-beta.1 🎉 The release is available on: Your semantic-release bot 📦🚀 |
Warning Rate limit exceeded@MGREMY has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 29 minutes and 40 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
Hi,
I've been working on a concept for forms fields (currently only text/number/etc. inputs, but later can be expanded with others). This is the first draft, with further adjustments coming once I get some feedback. It's inspired by Angular Material, in the sense that it uses content projection to render the elements such as the input, label, hint, etc. without compromising the customizability. For example, attributes such as formControl from Reactive Forms wouldn't have to be supported by flowbite components in order for them to be functional with the native element.
I've thus created a few directives that add flowbite classes to the elements. The targetting in the form field component is done by attribute and element, with prefix and hint only by attribute. As showcased below, elements can be further customized, such as in the case of the label, where I changed the font for only a part of the text. Furthermore, inputs passed onto the form field component are further passed towards the directives, such that there is cohesion. Of course, you can still directly pass inputs to only directives. I haven't played with the edge case where inputs of directives are different from the component's, so I can't vouch for what happens then. I'm thinking there could be a mechanism to ensure only unidirectional flow, if the directive is used within the form field (i.e., perhaps leaving current inputs but also adding a properties input and prioritizing the properties over the direct inputs).
Besides that, I've also added an utility mechanism that autogenerates an ID to the input, such that the label can be linked to it. This can be further expanded to generate an ID for the rest of the elements and I could refactor the code to allow the user to give a custom ID to each element. I've also assumed that hint is the same as helper text. Perhaps there could also be a distinction between error and hint. Then, prefix is yet to be implemented, as of right now I'm thinking that there could be a svg for the icon and a span for the addon. I'll also refactor the demo page such that it better reflects the original flowbite documentation, currently it's only a testing showcase of how it works currently.
As a final note, I placed all form field related components/directives into one module, since they're quite strongly linked between each other.
Looking forward to hearing an opinion!
Edit: Wrapped up with the implementation and refactored examples. I think this is a good starting point.