@browser.style/data-entry
Version:
Dynamic data entry form component with JSON schema validation and internationalization support
122 lines (101 loc) • 2.45 kB
Markdown
A dynamic web component for creating data entry forms with JSON schema validation, internationalization support, and auto-save functionality.
```bash
npm install @browser.style/data-entry
```
```javascript
import '@browser.style/data-entry';
```
```html
<!-- Basic usage -->
<data-entry
data="/api/data"
schema="/api/schema"
i18n="/api/i18n"
lang="en">
</data-entry>
<!-- With all features -->
<data-entry
auto-save="30"
data="/api/data"
debug
i18n="/api/i18n"
lang="en"
lookup="/api/lookup"
messages="/api/messages"
primary-keys="id,code"
schema="/api/schema"
shadow>
</data-entry>
```
- `auto-save`: Auto-save interval in seconds
- `data`: URL to fetch form data
- `debug`: Enable debug logging
- `i18n`: URL to fetch translations
- `lang`: Language code (default: 'en')
- `lookup`: URL to fetch lookup data
- `messages`: URL to fetch validation messages
- `primary-keys`: Comma-separated primary key fields
- `schema`: URL to fetch JSON schema
- `shadow`: Use shadow DOM
## Properties
- `data`: Get/set form data object
- `schema`: Get/set JSON schema object
- `lookup`: Get/set lookup data array
- `i18n`: Get/set translations object
- `constants`: Get/set constants object
- `validateMethod`: Set custom validation function
## Events
- `de:custom`: Custom button clicked
- `de:entry`: Form data processed
- `de:notify`: Notification triggered
- `de:resetfields`: Fields reset
- `de:submit`: Form submitted
- `de:record-created`: New record created
- `de:record-deleted`: Record deleted
- `de:record-upserted`: Record updated
## Form Integration
```html
<form>
<data-entry name="entry"></data-entry>
</form>
```
Access form values:
```javascript
const form = document.querySelector('form');
const entry = form.elements.entry;
console.log(entry.value); // Current form data
```
```javascript
const entry = document.querySelector('data-entry');
entry.validateMethod = (schema, data) => {
// Custom validation logic
return {
valid: true,
errors: []
};
};
```
```json
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": {
"type": "string",
"title": "Name",
"render": {
"method": "input",
"attributes": [
{ "type": "text" },
{ "required": "required" }
]
}
}
}
}