@canard/schema-form-mui-plugin
v0.13.1
Published
Material-UI (MUI) components plugin for @canard/schema-form providing pre-built form inputs with modern MUI styling and MUI X integration
Maintainers
Readme
@canard/schema-form-mui-plugin
Overview
@canard/schema-form-mui-plugin is a plugin for @canard/schema-form that provides Material-UI (MUI) components.
Notice
⚠️ This plugin provides pre-implemented core components commonly needed when using @canard/schema-form in Ant Design Mobile environments.
📌 As the plugin's purpose is to enhance development convenience, it does not include every possible component.
💡 If you need FormTypeInput components not included in this plugin, you can freely implement them following the official @canard/schema-form guidelines.
How to use
yarn add @canard/schema-form @canard/schema-form-mui-pluginimport { SchemaForm, registerPlugin } from '@canard/schema-form';
import { plugin } from '@canard/schema-form-mui-plugin';
// Plugin will be registered globally
registerPlugin(plugin);Supported Components
This plugin provides the following Material-UI components:
FormTypeInputBooleanSwitch.tsx
- Role: Display boolean type data as a Switch component
- Applied when:
typeis"boolean"andformTypeis"switch" - Additional features: Support for custom labels for
checked/uncheckedstates, adjustable switch size (small, medium)
FormTypeInputStringCheckbox.tsx
- Role: Display string arrays as checkbox groups
- Applied when:
typeis"array",formTypeis"checkbox",items.typeis"string", andenumvalues exist - Additional features: Support for custom labels for each checkbox option
FormTypeInputStringSwitch.tsx
- Role: Toggle between two string values using a Switch
- Applied when:
typeis"string",formTypeis"switch", and theenumarray has exactly 2 values - Additional features: Support for custom labels per switch state
FormTypeInputUri.tsx
- Role: Special input field for URI entry (with protocol dropdown)
- Applied when:
typeis"string"andformatorformTypeis"uri" - Additional features: Protocol selection dropdown, default protocol list support (http, https), configurable custom protocol list, support for single-colon protocols like mailto/tel
FormTypeInputMonth.tsx
- Role: DatePicker for month selection (month mode)
- Applied when:
typeis"string"andformatis"month" - Additional features: Uses MUI X DatePickers, support for
minimum,maximumrange limits, YYYY-MM format
FormTypeInputDate.tsx
- Role: DatePicker for date selection
- Applied when:
typeis"string"andformatis"date" - Additional features: Uses MUI X DatePickers with Dayjs, support for
minimum,maximumdate range limits, YYYY-MM-DD format
FormTypeInputTime.tsx
- Role: TimePicker for time selection
- Applied when:
typeis"string"andformatis"time" - Additional features: Uses MUI X DatePickers, time stored in HH:mm:00Z format
FormTypeInputRadioGroup.tsx
- Role: Display single selection of string or number as radio group
- Applied when:
typeis"string","number", or"integer",formTypeis"radio"or"radiogroup", andenumvalues exist - Additional features: Support for custom labels for radio options
FormTypeInputStringEnum.tsx
- Role: Display string or string array selection as Select dropdown
- Applied when:
typeis"string"andenumvalues exist - Additional features: Material Design styling with FormControl and InputLabel, support for custom labels per option (alias)
FormTypeInputArray.tsx
- Role: Display array data as a list with dynamic add/remove capabilities
- Applied when:
typeis"array" - Additional features: Add/Remove buttons with Material-UI icons, add/remove buttons hidden in read-only mode
FormTypeInputSlider.tsx
- Role: Input numeric values using a slider
- Applied when:
typeis"number"or"integer"andformTypeis"slider" - Additional features: Support for
minimum,maximum,multipleOfschema properties, lazy update option, mark display option, automatic value label display
FormTypeInputTextarea.tsx
- Role: Text area for multiline text input
- Applied when:
typeis"string"andformatorformTypeis"textarea" - Additional features: Support for automatic resizing via
minRows,maxRows
FormTypeInputString.tsx
- Role: Default string input field
- Applied when:
typeis"string"(fallback when other conditions don't match) - Additional features: Operates as password input field when
formatis"password", uses Material-UI TextField
FormTypeInputNumber.tsx
- Role: TextField component for numeric input (number type)
- Applied when:
typeis"number"or"integer"(fallback when other conditions don't match) - Additional features: Support for
minimum,maximum,multipleOfschema properties
FormTypeInputBoolean.tsx
- Role: Display boolean values as checkboxes
- Applied when:
typeis"boolean"(fallback when other conditions don't match) - Additional features: Support for
indeterminatestate forundefinedvalues, uses FormControlLabel
Component Priority
Component selection is determined by the following priority order:
- In-line component: Component specified as
FormTypeInputproperty in the schema - FormTypeInputMap: Component explicitly mapped to a path
- FormTypeInputDefinition: Automatic selection through each component's
testcondition - Provider FormTypeInputDefinition: Component definitions provided by parent Provider
- Plugin: Components from registered plugins (including this plugin)
- Fallback: Default fallback components
Within the same priority level, earlier items in the array take precedence. Components in this plugin are defined in the following order:
FormTypeInputBooleanSwitch → FormTypeInputStringCheckbox → FormTypeInputStringSwitch → FormTypeInputUri → FormTypeInputMonth → FormTypeInputDate → FormTypeInputTime → FormTypeInputRadioGroup → FormTypeInputStringEnum → FormTypeInputArray → FormTypeInputSlider → FormTypeInputTextarea → FormTypeInputString → FormTypeInputNumber → FormTypeInputBoolean
Compatibility
@canard/schema-form-mui-plugin is built with ECMAScript 2020 (ES2020) syntax.
If you're using a JavaScript environment that doesn't support ES2020, you'll need to include this package in your transpilation process.
Supported environments:
- Node.js 14.17.0 or later
- Modern browsers (Chrome 91+, Firefox 90+, Safari 14+)
For legacy environment support: Please use a transpiler like Babel to transform the code for your target environment.
Dependency requirements:
- React 18.0.0 or later (below 19.0.0)
- @mui/material 7.0.0 or later
- @mui/x-date-pickers 8.0.0 or later (for date/time related components)
- @emotion/react, @emotion/styled (MUI styling engine)
- dayjs 1.0.0 or later (for date processing)
License
This repository is licensed under the MIT License. Please refer to the LICENSE file for details.
Contact
For inquiries or suggestions related to the project, please create an issue.
