RatingPro
FormKit Pro Quick Installation Guide 🚀
Basic example
The rating input allows users to provide feedback based on a numeric scale represented by icons/images:
<FormKit type="rating" name="rating" label="Did we provide good service?"/>Min/max
The min and max props define the minimum and maximum values an end-user can select. The max determines the number of icons rendered:
<FormKit type="rating" :min="1" :max="10" label="Rate the durability of the Vitamix 5200 Blender" name="ratingVitamix" id="rating-max" inner-class="!w-[250px]" on-item-wrapper-class="!basis-[25px]" off-item-wrapper-class="!basis-[25px]"/>Step
By default, the rating input will increment by 1. The step prop will allow you to set the step size between each value. For example, if you set step="0.5", the end-user can select any value that is a multiple of 0.5. Steps must be a value between 0.01 and 1:
<FormKit type="rating" step="0.5" name="ratingLaCasa">Icons
By default, the rating input uses FormKit's own star icon. You can change which icon is being used by setting the rating-icon prop. This prop accepts a string that will use FormKit's icon plugin:
<FormKit type="rating" rating-icon="android" name="ratingAmongUs" label="Rate the Android video game: Among Us"/>Slots for icons
Default slot
Instead of specifying an icon via the FormKit icon plugin, you can pass a raw SVG using the default slot:
<FormKit type="rating" name="priceCategory" label="How expensive was the meal?"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="M8,8.5s-.04,0-.07,0c-1.14-.15-2.51-.68-2.51-2.38,0-1.02,.68-2.12,2.57-2.12s2.51,1.36,2.57,2.08c.02,.28-.18,.52-.46,.54-.27,.02-.51-.18-.54-.45-.02-.19-.19-1.16-1.58-1.16-1.04,0-1.57,.38-1.57,1.12,0,.38,0,1.18,1.64,1.39,.27,.04,.47,.29,.43,.56-.03,.25-.25,.44-.5,.44Z" fill="currentColor"/><path d="M8,12c-1.9,0-2.51-1.36-2.57-2.08-.02-.28,.18-.52,.46-.54,.27-.02,.51,.18,.54,.45,.02,.19,.19,1.16,1.58,1.16,1.04,0,1.57-.38,1.57-1.12,0-.38,0-1.18-1.64-1.39-.27-.04-.47-.29-.43-.56,.04-.27,.29-.47,.56-.43,1.14,.15,2.51,.68,2.51,2.38,0,1.02-.68,2.12-2.57,2.12Z" fill="currentColor"/><path d="M8,15c-3.86,0-7-3.14-7-7S4.14,1,8,1s7,3.14,7,7-3.14,7-7,7Zm0-13c-3.31,0-6,2.69-6,6s2.69,6,6,6,6-2.69,6-6-2.69-6-6-6Z" fill="currentColor"/><path d="M8,13c-.28,0-.5-.22-.5-.5V3.5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5V12.5c0,.28-.22,.5-.5,.5Z" fill="currentColor"/></svg></FormKit>Named slots
Lastly, you can use the offItem and onItem slots to pass whatever assets you want.In this example, we'll use different images for the off and on states:
<FormKit type="rating" name="rating" value="3" label="Rate our t-rex exhibit!"> <template #offItem> <img src="https://cdn.formk.it/example-assets/t-rex-outline-s.png" /> </template> <template #onItem> <img src="https://cdn.formk.it/example-assets/dino-s.png" /> </template></FormKit>Colors
In addition to supplying an icon, you can also specify the color via props. Setting the off-color prop will change the color of the icons when they are not selected. The on-color prop will change the color of the icons when they are selected:
<FormKit type="rating" off-color="black" on-color="#DA012D" rating-icon="heart" label="How much love do you have for FormKit?" name="love"/>Props & Attributes
| Prop | Type | Default | Description |
|---|---|---|---|
min | Number | 0 | The minimum number of icons that can be selected. |
max | Number | 5 | The maximum number of icons that are rendered. |
step | Number | 1 | The step or increment that should be applied to the rating icons. Accepted values are between 0.01 and 1 |
hover-highlight | Boolean | true | Determines whether to show the selected state of the icon/image when hovered over. |
off-color | String | undefined | Sets the color to be applied on the given icons when they have not been selected. |
on-color | String | undefined | Sets the color to be applied on the given icons when they have been selected. |
| Show Universal props | |||
config | Object | {} | Configuration options to provide to the input’s node and any descendent node of this input. |
delay | Number | 20 | Number of milliseconds to debounce an input’s value before the commit hook is dispatched. |
dirtyBehavior | string | touched | Determines how the "dirty" flag of this input is set. Can be set to touched or compare — touched (the default) is more performant, but will not detect when the form is once again matching its initial state. |
errors | Array | [] | Array of strings to show as error messages on this field. |
help | String | '' | Text for help text associated with the input. |
id | String | input_{n} | The unique id of the input. Providing an id also allows the input’s node to be globally accessed. |
ignore | Boolean | false | Prevents an input from being included in any parent (group, list, form etc). Useful when using inputs for UI instead of actual values. |
index | Number | undefined | Allows an input to be inserted at the given index if the parent is a list. If the input’s value is undefined, it inherits the value from that index position. If it has a value it inserts it into the lists’s values at the given index. |
label | String | '' | Text for the label element associated with the input. |
name | String | input_{n} | The name of the input as identified in the data object. This should be unique within a group of fields. |
parent | FormKitNode | contextual | By default the parent is a wrapping group, list or form — but this props allows explicit assignment of the parent node. |
prefix-icon | String | '' | Specifies an icon to put in the prefixIcon section. |
preserve | Boolean | false | Preserves the value of the input on a parent group, list, or form when the input unmounts. |
preserve-errors | Boolean | false | By default errors set on inputs using setErrors are automatically cleared on input, setting this prop to true maintains the error until it is explicitly cleared. |
sections-schema | Object | {} | An object of section keys and schema partial values, where each schema partial is applied to the respective section. |
suffix-icon | String | '' | Specifies an icon to put in the suffixIcon section. |
type | String | text | The type of input to render from the library. |
validation | String, Array | [] | The validation rules to be applied to the input. |
validation-visibility | String | blur | Determines when to show an input's failing validation rules. Valid values are blur, dirty, and live. |
validation-label | String | {label prop} | Determines what label to use in validation error messages, by default it uses the label prop if available, otherwise it uses the name prop. |
validation-rules | Object | {} | Additional custom validation rules to make available to the validation prop. |
value | Any | undefined | Seeds the initial value of an input and/or its children. Not reactive. Can seed entire groups (forms) and lists.. |
Sections & slot data
You can target a specific section of an input using that section's "key", allowing you to modify that section's classes, HTML (via :sections-schema, or content (via slots)). Read more about sections here.
Click on a section to lock focus to the chosen section. Click locked section again to unlock.
| Section-key | Description |
|---|---|
itemsWrapper | A wrapper for all of the rating items (both on and off). |
offItems | A container around all of the off items. |
offItemWrapper | Immediate parent around each off item. |
onItems | A container around all of the on items. |
onItemWrapper | Immediate parent around each on item. |
| Show Universal section keys | |
outer | The outermost wrapping element. |
wrapper | A wrapper around the label and input. |
label | The label of the input. |
prefix | Has no output by default, but allows content directly before an input element. |
prefixIcon | An element for outputting an icon before the prefix section. |
inner | A wrapper around the actual input element. |
suffix | Has no output by default, but allows content directly after an input element. |
suffixIcon | An element for outputting an icon after the suffix section. |
input | The input element itself. |
help | The element containing help text. |
messages | A wrapper around all the messages. |
message | The element (or many elements) containing a message — most often validation and error messages. |
Accessibility
All FormKit inputs are designed with the following accessibility considerations in mind. Help us continually improve accessibility for all by filing accessibility issues here:
- Semantic markup
- ARIA attributes
- Keyboard accessibility
- Focus indicators
- Color contrast with the provided theme
- Accessible labels, help text, and errors
Accessibility attributes
| Section Key | Attribute | Value | Description |
|---|---|---|---|
label | label | for | Associates a label to an input element. Users can click on the label to focus the input or to toggle between states. |
input | input | disabled | Disables an HTML element, preventing user interaction and signaling a non-interactive state. |
aria-describedby | Associates an element with a description, aiding screen readers. | ||
aria-required | Added when input validation is set to required. | ||
icon | icon | for | Links icon to input element when icon in rendered as a label. |
Keyboard Interactions
| Keyboard Event | Description |
|---|---|
| ↑ | Increases the rating input value by one step. |
| → | Increases the rating input value by one step. |
| ↓ | Decreases the rating input value by one step. |
| ← | Decreases the rating input value by one step. |
| Home | Sets the rating input value to the min value. |
| End | Sets the rating input value to the max value. |
| Universal Keyboard Events | |
| Tab | Moves the focus to the next focusable element on the page. |
| Shift+Tab | Moves the focus to the previous focusable element on the page. |