@kbss-cvut/s-forms
Version:
Semantic forms generator and processor
56 lines (38 loc) • 2.5 kB
Markdown
# SForms
[](https://app.netlify.com/sites/s-forms-kbss/deploys)
**S**emantic **form** generator and processor for ontology-based smart forms. Besides this core library, there exists also [library of advanced components](https://github.com/kbss-cvut/s-forms-components).
## Live Demo
Checkout [live demo using storybook](https://s-forms-kbss.netlify.app).
## Supported features
- Validation
- Question comments
- Navigation to the selected question
- Emphasizing selected questions
### Components
- Input/Textarea
- Tree Typeahead
- Datetime picker
- Select
- Checkbox
- Numeric input
## Representation in JSON-LD
Semantic form is a structure that holds a form (set of questions) and its data (set of answers).
A conceptual model of Semantic forms is [questions/answers model](https://github.com/kbss-cvut/s-forms-model).
The conceptual model is described in RDF language. This library processes and generates Semantic forms using JSON-LD
format, a JSON-compatible serialization of the RDF language.
## Development
Building SForms library can be done using `npm run build:lib`.
### StorybookJS
#### Debugging forms and components with StorybookJS
Storybook is an open-source tool for building UI components and pages in isolation. Rendering of a form or a specific component can be tested through a story provided in `./src/stories/`. The application can be started by executing npm script through `npm run dev` and then accessing `localhost:6006` from a browser. It renders the forms provided by the file `./src/stories/assets/`. See `./src/stories/SForms/SForms.stories.tsx` for more details.
#### Testing forms with Storybook toolbar
With the Storybook [toolbar](https://storybook.js.org/docs/essentials/toolbars-and-globals), testing a set of predefined global variables is possible. The toolbar supports the following features:
- Icon behavior: Set the behavior for the icons
- Locale: Set the internationalization locale
- Debug mode: Show irrelevant questions
- Navbar position: Set the navigation bar to horizontal/vertical position
- Timeout: Set time-out for possible values (in ms)
- Print form specification: Print the form specification in the console
- Validate form: Triggers the form validation
### NPM release workflow
NPM packages are created automatically for each commit to this repository, see [npm release workflow guide](./docs/npm-release-workflow.md).