Add component update instructions to text_field_max_lengths migration doc

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
root
2025-12-29 10:53:21 +00:00
parent 12b742fbdf
commit b4bfd28f9f

View File

@@ -54,13 +54,61 @@ This is generated automatically from database schema metadata.
## Migration Checklist
### 1. Find all Text_Input components
### 1. Update Text_Input component files
**rsx/theme/components/inputs/text/text_input.js** - Add on_create() method:
```javascript
class Text_Input extends Form_Input_Abstract {
on_create() {
super.on_create();
// Only require $max_length when Text_Input is used directly, not subclasses
if (this.constructor === Text_Input && this.args.max_length === undefined) {
console.error(
`Text_Input with $name="${this.args.name}" requires $max_length. ` +
`Use $max_length=Model_Name.field_length('column_name') for database-driven limits, ` +
`a numeric value for custom limits, or -1 for unlimited.`
);
}
}
// ... rest of existing code (keep _get_value, _set_value, on_ready, seed)
}
```
**rsx/theme/components/inputs/text/text_input.jqhtml** - Update template:
1. Change all `this.args.maxlength` to `this.args.max_length`
2. Change condition from `if (this.args.maxlength)` to `if (this.args.max_length > 0)`
3. Add maxlength to textarea (was missing before):
```html
<textarea $sid="input"
class="form-control"
rows="<%= this.args.rows || 3 %>"
placeholder="<%= this.args.placeholder || '' %>"
<% if (this.args.max_length > 0) { %>maxlength="<%= this.args.max_length %>"<% } %>
<% if (this.args.disabled) { %>disabled<% } %>></textarea>
```
Apply the same `max_length > 0` check to both input elements in the template.
### 2. Rebuild manifest
```bash
php artisan rsx:manifest:build --clean
```
This regenerates JS model stubs with the new `field_length()` method.
### 3. Find all Text_Input usage in forms
```bash
grep -rn '<Text_Input' rsx/app --include="*.jqhtml" --include="*.blade.php"
```
### 2. Add $max_length to each
### 4. Add $max_length to each
For database-backed fields (recommended):
```html
@@ -77,7 +125,7 @@ For truly unlimited fields (use sparingly):
<Text_Input $name="notes" $type="textarea" $max_length=-1 />
```
### 3. Verify no console errors
### 5. Verify no console errors
Load each form and check browser console. Any Text_Input missing `$max_length` will log: