Skip to content

Pass uiSchema to the field template #379

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

Merged
merged 27 commits into from
Nov 9, 2016

Conversation

olzraiti
Copy link
Contributor

@olzraiti olzraiti commented Nov 8, 2016

Reasons for making this change

I need to do some heavy customization on the rendering of the fields. Passing the uiSchema object to the field template allows the users to extend the functionality of this library.

There was discussion about if uiSchema should be passed to the template field in #304. There were many good reasons to not pass the uiSchema, but it was also implied that it could be passed in the future if given reason. The template field is a functionality for flexible UI. uiSchema is a description for the UI, and therefore I find it reasonable to be able to allows users to extend their own functionality to the UI rendering. Use cases would be for example more fine grained control of rendering different types of titles/descriptions, help block, tooltips which could be described in uiSchema.

This allows users to implement dirty hacks and abuse, like @n1k0 suggested in #304, but on the other hand this might make the hackering more clean, when hackering must be done to implement a feature.

Checklist

  • I'm updating documentation
    • I've checked the rendering of the Markdown text I've added
    • If I'm adding a new section, I've updated the Table of Content
  • I'm adding or updating code
    • I've added and/or updated tests
    • I've updated docs if needed
  • I'm adding a new feature
    • I've updated the playground with an example use of the feature

@n1k0
Copy link
Collaborator

n1k0 commented Nov 9, 2016

Yeah, and I'd even go as far as passing the schema as well. The more you can. Invalid usage of these will be easy to spot I think.

Could you please alter the patch so we pass schema to the template component too?

@olzraiti
Copy link
Contributor Author

olzraiti commented Nov 9, 2016

Agree! I almost added schema to the fields being passed in the initial commit, but decided to go with baby steps.

@n1k0
Copy link
Collaborator

n1k0 commented Nov 9, 2016

Thank you so much for your reactivity, really appreciated 👍

@n1k0 n1k0 merged commit fdbbf94 into rjsf-team:master Nov 9, 2016
n1k0 added a commit that referenced this pull request Nov 9, 2016
This release has been made possible by the combined work of @olzraiti, @maartenth, @vinhlh, @tiemevanveen , @dehli, @enjoylife, @PabloEn, @israelshirk, @sjhewitt and @rom10. Thank you folks!

Breaking changes
----------------

Support for passing `DescriptionField`, `TitleField` and `SchemaField` as `Form` props as been dropped in this release. You now have to always pass them through the `fields` prop.

Deprecations
------------

* Leverage `ui:options` everywhere (fix #370) (#378)

There's now a unique recommended way to specify options for widgets in uiSchema, which is the `ui:options` directive. Previous ways are still supported, but you'll get a warning in the console if you use them.

New features
------------

* Allow overriding the default fields/widgets (#371)
* Pass data to `FieldTemplate` as strings instead of as React components (#341)
* Pass `schema` & `uiSchema` to the field template component (#379)
* Add `ui:order` wildcard feature and improve error messages (#368)
* Add support for widget autofocus (#288)
* Array field optional sortability (#345)
* Radio widget support for integers and numbers (#325)
* Add support for inline radios and checkboxes. (fix #346) (#348)
* Added ref to `FileWidget`. (#355)
* Added `removable` and `addable` options for array items (#373)
* Enable Windows development (#320)

Enhancements and bugfixes
-------------------------

* Fix `minimum/maximum==0` for `UpDownWidget` and `RangeWidget` (#344)
* Handle numbers requiring trailing zeros with more grace (#334)
* Pass empty title to `TitleField` instead of name (#311)
* `asNumber`: return `undefined` when value is empty string (#369)
* Use [glyphicons](http://getbootstrap.com/components/#glyphicons) for buttons by default. (fix #337) (#375)
* Support old versions of React (#312)
@n1k0
Copy link
Collaborator

n1k0 commented Nov 9, 2016

Released in v0.41.0.

@olzraiti olzraiti mentioned this pull request Feb 1, 2017
8 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants