Files
testdrive-jsui/docs/features/edit-control.md
tegwick 66cbd5c3d8 docs: comprehensive feature documentation and HTML generation system
Added complete documentation for all TestDrive-JSUI controls and features,
plus flexible HTML generation system supporting standalone and external modes.

Documentation (8 files, 3,533 lines):
- docs/features/README.md: Central hub with overview, config, examples
- docs/features/section-editing.md: Section editing guide
- docs/features/edit-control.md: Document actions and editing tools
- docs/features/status-control.md: Real-time statistics and tracking
- docs/features/contents-control.md: Table of contents navigation
- docs/features/debug-control.md: Development and debugging tools
- docs/features/keyboard-shortcuts.md: Complete shortcuts reference
- docs/features/themes.md: Visual theming and customization

HTML Generation System (3 files, 1,104 lines):
- js/utils/html-generator.js: Dual-mode HTML generator class
  * Standalone mode: All CSS/JS embedded inline
  * External mode: References _jsui/ directory
  * Configurable options for title, content, controls, theme
  * Download and save functionality

- _jsui/ directory: External resources structure
  * README.md: Comprehensive usage guide
  * css/: Symlinked CSS files (base, editor, controls, themes)
  * js/: Symlinked JavaScript files (core, components, controls)
  * Enables smaller HTML files with browser caching

- examples/html-generator-demo.html: Interactive demo
  * Web-based configuration form
  * Side-by-side mode comparison
  * Live generation and preview
  * Download and copy functionality

Key Features:
- 4,637 total lines of documentation and code
- All controls documented with examples and troubleshooting
- Flexible deployment options (standalone vs external)
- Developer-friendly structure with clear guides
- Production-ready system

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-16 14:31:56 +01:00

459 lines
9.2 KiB
Markdown

# Edit Control
**Document actions and editing tools** 📝
The Edit Control provides comprehensive document-level actions including save, export, print, navigation tools, text formatting, and markdown shortcuts. Positioned in the northeast by default.
---
## Overview
The Edit Control is your command center for document-wide operations. It groups related actions into organized sections for easy access.
### Position
- **Default**: Northeast (ne) - top-right corner
- **Appearance**: ✏️ icon when collapsed
- **Title**: "Edit"
### Key Features
- 📄 Document actions (save, print, export, reset)
- 🧭 Navigation tools (scroll to top/bottom, go to line)
- 🔍 Text tools (find & replace, font size)
- ✍️ Markdown shortcuts (bold, italic, headers, links)
---
## Configuration
### Enable/Disable
```javascript
new TestDriveJSUI({
container: '#editor',
controls: {
editControl: true // Enable (default: true)
}
});
```
### Custom Position
```javascript
new TestDriveJSUI({
container: '#editor',
controlPositions: {
editControl: 'ne' // Northeast (default), or: nw, e, se, s, sw, w
}
});
```
---
## Features
### 1. Document Actions
#### 🖨️ Print Document
Opens browser print dialog for the current document.
**Usage**:
- Click "Print Document" button
- Or use keyboard shortcut: `Ctrl+P`
**What happens**:
- Formats document for printing
- Opens browser print dialog
- Preserves markdown formatting
#### 💾 Save Changes
Downloads the current document as a markdown file.
**Usage**:
- Click "Save Changes" button
- Or use keyboard shortcut: `Ctrl+S`
**Behavior**:
- Generates timestamped filename
- Downloads as `.md` file
- Includes all accepted edits
**Example filename**: `document-edited-2025-12-16-143052.md`
#### 📄 Export Document
Export document in various formats.
**Usage**:
- Click "Export Document" button
- Choose format in dialog
**Formats** (coming soon):
- Markdown (`.md`)
- HTML (`.html`)
- PDF (`.pdf`)
- Plain text (`.txt`)
#### 🔄 Reset All
Resets all sections to their original content.
**Usage**:
- Click "Reset All" button
- Confirm in dialog
**Warning**: This discards ALL changes! Cannot be undone.
---
### 2. Navigation Tools
#### ⬆️ Scroll to Top
Instantly scrolls to the beginning of the document.
**Usage**:
- Click "Top" button
- Smooth scroll animation
#### ⬇️ Scroll to Bottom
Instantly scrolls to the end of the document.
**Usage**:
- Click "Bottom" button
- Smooth scroll animation
#### 🎯 Go to Line
Jump to a specific line or section in the document.
**Usage**:
- Click "Go to Line" button
- Enter line number or section name
- Press Enter to navigate
---
### 3. Text Tools
#### 🔍 Find & Replace
Search and replace text across the document.
**Usage**:
- Click "Find & Replace" button
- Or use keyboard shortcut: `Ctrl+F`
**Features**:
- Case-sensitive option
- Replace one or all occurrences
- Regex support (coming soon)
- Highlight matches
#### 🔍+ / 🔍- Font Size
Adjust document font size for better readability.
**Usage**:
- Click "🔍+ Font" to increase
- Click "🔍- Font" to decrease
**Range**: 12px - 24px
**Tip**: Useful for presentations or accessibility
#### 📋 Copy Page Link
Copies the current page URL to clipboard.
**Usage**:
- Click "Copy Page Link" button
- Link copied to clipboard
- Paste anywhere with `Ctrl+V`
---
### 4. Markdown Tools
Quick markdown formatting shortcuts.
#### **B** Bold
Wraps selected text in `**bold**` markers.
**Usage**:
- Select text
- Click "B" button
- Or use: `Ctrl+B`
**Result**: `**selected text**`
#### *I* Italic
Wraps selected text in `*italic*` markers.
**Usage**:
- Select text
- Click "I" button
- Or use: `Ctrl+I`
**Result**: `*selected text*`
#### # Header
Converts line to heading.
**Levels**:
- H1: `# Heading`
- H2: `## Heading`
- H3: `### Heading`
#### 🔗 Link
Inserts markdown link format.
**Usage**:
- Click "Link" button
- Inserts: `[text](url)`
#### 📋 Code
Wraps text in code markers.
**Inline**: `` `code` ``
**Block**:
```
```language
code block
```
```
---
## Examples
### Basic Usage
```javascript
const editor = new TestDriveJSUI({
container: '#editor',
markdown: '# My Document\n\nContent here...',
controls: {
editControl: true
}
});
```
### Custom Position
```javascript
// Move to northwest (top-left)
const editor = new TestDriveJSUI({
container: '#editor',
controlPositions: {
editControl: 'nw' // Top-left instead of top-right
}
});
```
### With Event Tracking
```javascript
const editor = new TestDriveJSUI({
container: '#editor',
controls: { editControl: true }
});
// Listen to save events
editor.on('save', (data) => {
console.log('Document saved:', data.markdown);
// Send to backend, update UI, etc.
});
// Access edit control directly
if (editor.editControl) {
// Programmatically trigger actions
editor.editControl.saveDocument();
}
```
---
## API Reference
### Methods
Access via `editor.editControl`:
```javascript
const editCtrl = editor.editControl;
// Document actions
editCtrl.printDocument(); // Open print dialog
editCtrl.saveDocument(); // Download as .md
editCtrl.exportDocument(); // Export in format
editCtrl.resetAll(); // Reset all sections
// Navigation
editCtrl.scrollToTop(); // Scroll to top
editCtrl.scrollToBottom(); // Scroll to bottom
editCtrl.showGoToLine(); // Show go-to dialog
// Text tools
editCtrl.showFindReplace(); // Open find & replace
editCtrl.increaseFontSize(); // Increase font
editCtrl.decreaseFontSize(); // Decrease font
editCtrl.copyLink(); // Copy page URL
// Markdown tools
editCtrl.insertMarkdown(before, after, placeholder);
// Example: insertMarkdown('**', '**', 'bold text')
```
### Properties
```javascript
editCtrl.config.position // Current position (e.g., 'ne')
editCtrl.config.icon // Icon emoji ('✏️')
editCtrl.config.title // Panel title ('Edit')
editCtrl.isExpanded // true if panel expanded
editCtrl.fontSize // Current font size (px)
```
---
## Keyboard Shortcuts
The Edit Control provides these shortcuts:
| Shortcut | Action |
|----------|--------|
| `Ctrl+S` | Save document |
| `Ctrl+P` | Print document |
| `Ctrl+F` | Find & replace |
| `Ctrl+B` | Bold selected text |
| `Ctrl+I` | Italic selected text |
| `Escape` | Exit edit mode |
**Enable/disable**:
```javascript
new TestDriveJSUI({
container: '#editor',
shortcuts: true // Enable shortcuts (default: true)
});
```
---
## Customization
### Disable Specific Actions
Currently, all Edit Control actions are enabled by default. To hide the control entirely:
```javascript
new TestDriveJSUI({
container: '#editor',
controls: {
editControl: false // Hide completely
}
});
```
### Future: Granular Control
Planned for v1.1:
```javascript
new TestDriveJSUI({
container: '#editor',
controls: {
editControl: {
enabled: true,
actions: {
print: true,
save: true,
export: false, // Hide export
reset: false // Hide reset
}
}
}
});
```
---
## Best Practices
### For Writers
1. **Save frequently** - Use `Ctrl+S` or Save button regularly
2. **Use shortcuts** - Learn `Ctrl+B`, `Ctrl+I` for quick formatting
3. **Navigate efficiently** - Use Top/Bottom for long documents
4. **Find & Replace** - Bulk edit repetitive content
### For Developers
1. **Listen to events** - Track saves for auto-sync
2. **Custom save handlers** - Override default behavior
3. **Programmatic control** - Trigger actions via API
4. **Error handling** - Catch save failures
Example custom save:
```javascript
const editor = new TestDriveJSUI({ container: '#editor' });
editor.on('save', async (data) => {
try {
// Send to backend
await fetch('/api/save', {
method: 'POST',
body: JSON.stringify({ markdown: data.markdown })
});
alert('Saved to server!');
} catch (error) {
alert('Save failed: ' + error.message);
}
});
```
---
## Troubleshooting
### "Save Changes" Not Working
**Problem**: Clicking save does nothing
**Solutions**:
1. Check browser console for errors
2. Verify EditControl is loaded: `typeof EditControl !== 'undefined'`
3. Check if control is enabled in config
4. Test programmatically: `editor.editControl.saveDocument()`
### Print Dialog Not Opening
**Problem**: Print button doesn't open dialog
**Solutions**:
1. Check browser pop-up blocker
2. Test with `Ctrl+P` keyboard shortcut
3. Verify browser print permissions
4. Try programmatically: `window.print()`
### Font Size Not Changing
**Problem**: Font buttons don't affect text size
**Solutions**:
1. Check CSS conflicts with `font-size: inherit`
2. Inspect element to verify font-size style applied
3. Clear browser cache
4. Test with browser zoom instead
---
## Related Features
- **[Section Editing](section-editing.md)** - Edit individual sections
- **[Keyboard Shortcuts](keyboard-shortcuts.md)** - All available shortcuts
- **[Status Control](status-control.md)** - Track editing progress
---
**See Also**:
- [API Reference](../api/edit-control.md)
- [Examples](../../examples/)
---
**Version**: 1.0.0
**Last Updated**: 2025-12-16