snice 3.11.0 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/templates/CLAUDE.md +7 -7
- package/bin/templates/base/package.json +1 -1
- package/bin/templates/pwa/package.json +1 -1
- package/dist/components/audio-recorder/snice-audio-recorder.js +6 -6
- package/dist/components/audio-recorder/snice-audio-recorder.js.map +1 -1
- package/dist/components/banner/snice-banner.js +3 -3
- package/dist/components/banner/snice-banner.js.map +1 -1
- package/dist/components/button/snice-button.js +1 -1
- package/dist/components/calendar/snice-calendar.js +2 -2
- package/dist/components/calendar/snice-calendar.js.map +1 -1
- package/dist/components/camera/snice-camera.js +4 -4
- package/dist/components/camera/snice-camera.js.map +1 -1
- package/dist/components/carousel/snice-carousel.js +1 -1
- package/dist/components/carousel/snice-carousel.js.map +1 -1
- package/dist/components/checkbox/snice-checkbox.js +3 -3
- package/dist/components/checkbox/snice-checkbox.js.map +1 -1
- package/dist/components/color-picker/snice-color-picker.js +4 -4
- package/dist/components/color-picker/snice-color-picker.js.map +1 -1
- package/dist/components/command-palette/snice-command-palette.js +5 -5
- package/dist/components/command-palette/snice-command-palette.js.map +1 -1
- package/dist/components/date-picker/snice-date-picker.js +8 -8
- package/dist/components/date-picker/snice-date-picker.js.map +1 -1
- package/dist/components/draw/snice-draw.js +5 -5
- package/dist/components/draw/snice-draw.js.map +1 -1
- package/dist/components/drawer/snice-drawer.js +2 -2
- package/dist/components/drawer/snice-drawer.js.map +1 -1
- package/dist/components/empty-state/snice-empty-state.js +1 -1
- package/dist/components/empty-state/snice-empty-state.js.map +1 -1
- package/dist/components/file-gallery/snice-file-gallery.js +8 -8
- package/dist/components/file-gallery/snice-file-gallery.js.map +1 -1
- package/dist/components/file-upload/snice-file-upload.js +2 -2
- package/dist/components/file-upload/snice-file-upload.js.map +1 -1
- package/dist/components/input/snice-input.js +5 -5
- package/dist/components/input/snice-input.js.map +1 -1
- package/dist/components/kanban/snice-kanban.js +2 -2
- package/dist/components/kanban/snice-kanban.js.map +1 -1
- package/dist/components/location/snice-location.js +1 -1
- package/dist/components/location/snice-location.js.map +1 -1
- package/dist/components/login/snice-login.js +4 -4
- package/dist/components/login/snice-login.js.map +1 -1
- package/dist/components/menu/snice-menu-item.js +1 -1
- package/dist/components/menu/snice-menu-item.js.map +1 -1
- package/dist/components/menu/snice-menu.js +3 -3
- package/dist/components/menu/snice-menu.js.map +1 -1
- package/dist/components/modal/snice-modal.js +2 -2
- package/dist/components/modal/snice-modal.js.map +1 -1
- package/dist/components/music-player/snice-music-player.js +10 -10
- package/dist/components/music-player/snice-music-player.js.map +1 -1
- package/dist/components/pagination/snice-pagination.js +1 -1
- package/dist/components/pagination/snice-pagination.js.map +1 -1
- package/dist/components/qr-reader/snice-qr-reader.js +3 -3
- package/dist/components/qr-reader/snice-qr-reader.js.map +1 -1
- package/dist/components/radio/snice-radio.js +1 -1
- package/dist/components/radio/snice-radio.js.map +1 -1
- package/dist/components/select/snice-select.js +3 -3
- package/dist/components/select/snice-select.js.map +1 -1
- package/dist/components/slider/snice-slider.js +2 -2
- package/dist/components/slider/snice-slider.js.map +1 -1
- package/dist/components/split-pane/snice-split-pane.js +1 -1
- package/dist/components/split-pane/snice-split-pane.js.map +1 -1
- package/dist/components/switch/snice-switch.js +1 -1
- package/dist/components/switch/snice-switch.js.map +1 -1
- package/dist/components/table/snice-cell-actions.js +1 -1
- package/dist/components/table/snice-cell-actions.js.map +1 -1
- package/dist/components/table/snice-column.js +1 -1
- package/dist/components/table/snice-column.js.map +1 -1
- package/dist/components/table/snice-header.js +3 -3
- package/dist/components/table/snice-header.js.map +1 -1
- package/dist/components/table/snice-row.js +3 -3
- package/dist/components/table/snice-row.js.map +1 -1
- package/dist/components/table/snice-table.js +3 -3
- package/dist/components/table/snice-table.js.map +1 -1
- package/dist/components/tabs/snice-tab.js +2 -2
- package/dist/components/tabs/snice-tab.js.map +1 -1
- package/dist/components/tabs/snice-tabs.js +2 -2
- package/dist/components/tabs/snice-tabs.js.map +1 -1
- package/dist/components/terminal/snice-terminal.js +3 -3
- package/dist/components/terminal/snice-terminal.js.map +1 -1
- package/dist/components/textarea/snice-textarea.js +4 -4
- package/dist/components/textarea/snice-textarea.js.map +1 -1
- package/dist/components/timer/snice-timer.js +4 -4
- package/dist/components/timer/snice-timer.js.map +1 -1
- package/dist/components/tree/snice-tree-item.js +1 -1
- package/dist/components/tree/snice-tree-item.js.map +1 -1
- package/dist/components/tree/snice-tree.js +5 -5
- package/dist/components/tree/snice-tree.js.map +1 -1
- package/dist/index.cjs +7 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.esm.js +7 -3
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +7 -3
- package/dist/index.iife.js.map +1 -1
- package/dist/symbols.cjs +1 -1
- package/dist/symbols.esm.js +1 -1
- package/dist/transitions.cjs +1 -1
- package/dist/transitions.esm.js +1 -1
- package/docs/ai/components/audio-recorder.md +6 -6
- package/docs/ai/components/calendar.md +2 -2
- package/docs/ai/components/camera.md +5 -5
- package/docs/ai/components/carousel.md +1 -1
- package/docs/ai/components/color-picker.md +1 -1
- package/docs/ai/components/command-palette.md +6 -6
- package/docs/ai/components/draw.md +5 -5
- package/docs/ai/components/drawer.md +2 -2
- package/docs/ai/components/empty-state.md +1 -1
- package/docs/ai/components/file-gallery.md +3 -3
- package/docs/ai/components/file-upload.md +2 -2
- package/docs/ai/components/kanban.md +3 -3
- package/docs/ai/components/menu.md +3 -3
- package/docs/ai/components/modal.md +2 -2
- package/docs/ai/components/music-player.md +9 -9
- package/docs/ai/components/pagination.md +2 -2
- package/docs/ai/components/qr-reader.md +4 -4
- package/docs/ai/components/select.md +4 -4
- package/docs/ai/components/slider.md +1 -1
- package/docs/ai/components/split-pane.md +1 -1
- package/docs/ai/components/switch.md +2 -2
- package/docs/ai/components/tabs.md +4 -4
- package/docs/ai/components/terminal.md +1 -1
- package/docs/ai/components/timer.md +4 -4
- package/docs/ai/components/tree.md +7 -7
- package/docs/components/audio-recorder.md +7 -7
- package/docs/components/banner.md +4 -4
- package/docs/components/calendar.md +11 -11
- package/docs/components/camera.md +9 -9
- package/docs/components/carousel.md +1 -1
- package/docs/components/color-picker.md +1 -1
- package/docs/components/command-palette.md +6 -6
- package/docs/components/draw.md +6 -6
- package/docs/components/drawer.md +6 -6
- package/docs/components/empty-state.md +1 -1
- package/docs/components/file-gallery.md +18 -18
- package/docs/components/file-upload.md +7 -7
- package/docs/components/kanban.md +7 -7
- package/docs/components/menu.md +11 -11
- package/docs/components/modal.md +7 -7
- package/docs/components/music-player.md +16 -16
- package/docs/components/pagination.md +5 -5
- package/docs/components/qr-reader.md +12 -12
- package/docs/components/select.md +9 -9
- package/docs/components/slider.md +6 -6
- package/docs/components/split-pane.md +2 -2
- package/docs/components/switch.md +4 -4
- package/docs/components/tabs.md +10 -10
- package/docs/components/terminal.md +6 -6
- package/docs/components/textarea.md +7 -7
- package/docs/components/timer.md +8 -8
- package/docs/components/tree.md +9 -9
- package/package.json +1 -1
package/dist/symbols.cjs
CHANGED
package/dist/symbols.esm.js
CHANGED
package/dist/transitions.cjs
CHANGED
package/dist/transitions.esm.js
CHANGED
|
@@ -43,12 +43,12 @@ interface AudioRecording {
|
|
|
43
43
|
|
|
44
44
|
## Events
|
|
45
45
|
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
-
|
|
51
|
-
-
|
|
46
|
+
- `recorder-start` - Recording started
|
|
47
|
+
- `recorder-stop` - Recording stopped
|
|
48
|
+
- `recorder-pause` - Paused
|
|
49
|
+
- `recorder-resume` - Resumed
|
|
50
|
+
- `recorder-cancel` - Cancelled
|
|
51
|
+
- `recorder-error` - Error
|
|
52
52
|
|
|
53
53
|
## Usage
|
|
54
54
|
|
|
@@ -47,8 +47,8 @@ getEventsForDate(date: Date | string): CalendarEvent[]
|
|
|
47
47
|
|
|
48
48
|
## Events
|
|
49
49
|
|
|
50
|
-
-
|
|
51
|
-
-
|
|
50
|
+
- `calendar-change` - Date selected (detail: { value, calendar })
|
|
51
|
+
- `calendar-event-click` - Event clicked (detail: { event, calendar })
|
|
52
52
|
|
|
53
53
|
## Usage
|
|
54
54
|
|
|
@@ -54,10 +54,10 @@ interface CapturedImage {
|
|
|
54
54
|
|
|
55
55
|
## Events
|
|
56
56
|
|
|
57
|
-
-
|
|
58
|
-
-
|
|
59
|
-
-
|
|
60
|
-
-
|
|
57
|
+
- `camera-start` - Camera started (detail: { stream })
|
|
58
|
+
- `camera-stop` - Camera stopped
|
|
59
|
+
- `camera-capture` - Photo captured (detail: { image })
|
|
60
|
+
- `camera-error` - Error occurred (detail: { error })
|
|
61
61
|
|
|
62
62
|
## Slots
|
|
63
63
|
|
|
@@ -114,7 +114,7 @@ const image = await camera.capture();
|
|
|
114
114
|
await camera.switchCamera();
|
|
115
115
|
|
|
116
116
|
// Events
|
|
117
|
-
camera.addEventListener('
|
|
117
|
+
camera.addEventListener('camera-capture', (e) => {
|
|
118
118
|
const img = e.detail.image;
|
|
119
119
|
console.log(img.dataURL);
|
|
120
120
|
});
|
|
@@ -58,7 +58,7 @@ presets: string[] = [...];
|
|
|
58
58
|
<snice-color-picker id="picker"></snice-color-picker>
|
|
59
59
|
<script>
|
|
60
60
|
const picker = document.querySelector('#picker');
|
|
61
|
-
picker.addEventListener('
|
|
61
|
+
picker.addEventListener('color-picker-change', (e) => {
|
|
62
62
|
console.log('Color:', e.detail.value);
|
|
63
63
|
});
|
|
64
64
|
</script>
|
|
@@ -45,11 +45,11 @@ interface CommandItem {
|
|
|
45
45
|
|
|
46
46
|
## Events
|
|
47
47
|
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
-
|
|
51
|
-
-
|
|
52
|
-
-
|
|
48
|
+
- `command-palette-open` - Opened (detail: { palette })
|
|
49
|
+
- `command-palette-close` - Closed (detail: { palette })
|
|
50
|
+
- `command-select` - Command selected (detail: { command, palette })
|
|
51
|
+
- `command-execute` - Command executed (detail: { command, palette })
|
|
52
|
+
- `command-search` - Search changed (detail: { query, results, palette })
|
|
53
53
|
|
|
54
54
|
## Usage
|
|
55
55
|
|
|
@@ -97,7 +97,7 @@ interface CommandItem {
|
|
|
97
97
|
|
|
98
98
|
<!-- Events -->
|
|
99
99
|
<script>
|
|
100
|
-
palette.addEventListener('
|
|
100
|
+
palette.addEventListener('command-execute', (e) => {
|
|
101
101
|
console.log('Executed:', e.detail.command.label);
|
|
102
102
|
});
|
|
103
103
|
</script>
|
|
@@ -49,11 +49,11 @@ interface DrawStroke {
|
|
|
49
49
|
|
|
50
50
|
## Events
|
|
51
51
|
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
-
|
|
56
|
-
-
|
|
52
|
+
- `draw-start` - Drawing started
|
|
53
|
+
- `draw-end` - Stroke completed (detail: { stroke })
|
|
54
|
+
- `draw-clear` - Canvas cleared
|
|
55
|
+
- `draw-undo` - Undo performed
|
|
56
|
+
- `draw-redo` - Redo performed
|
|
57
57
|
|
|
58
58
|
## Usage
|
|
59
59
|
|
|
@@ -52,7 +52,7 @@ actionHref: string = '';
|
|
|
52
52
|
<!-- Events -->
|
|
53
53
|
<snice-empty-state id="empty" action-text="Click"></snice-empty-state>
|
|
54
54
|
<script>
|
|
55
|
-
document.querySelector('#empty').addEventListener('
|
|
55
|
+
document.querySelector('#empty').addEventListener('empty-state-action', () => {
|
|
56
56
|
console.log('Action clicked');
|
|
57
57
|
});
|
|
58
58
|
</script>
|
|
@@ -172,7 +172,7 @@ const icon = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor">...</sv
|
|
|
172
172
|
const actionId = gallery.addCustomAction(icon, 'Camera');
|
|
173
173
|
|
|
174
174
|
// Handle custom action
|
|
175
|
-
gallery.addEventListener('
|
|
175
|
+
gallery.addEventListener('custom-action-click', (e) => {
|
|
176
176
|
if (e.detail.actionId === actionId) {
|
|
177
177
|
// Handle camera action
|
|
178
178
|
const file = capturePhoto(); // your implementation
|
|
@@ -181,10 +181,10 @@ gallery.addEventListener('@snice/custom-action-click', (e) => {
|
|
|
181
181
|
});
|
|
182
182
|
|
|
183
183
|
// Other events
|
|
184
|
-
gallery.addEventListener('
|
|
184
|
+
gallery.addEventListener('files-change', (e) => {
|
|
185
185
|
console.log('Files:', e.detail.files);
|
|
186
186
|
});
|
|
187
|
-
gallery.addEventListener('
|
|
187
|
+
gallery.addEventListener('upload-complete', (e) => {
|
|
188
188
|
console.log('Complete:', e.detail.url);
|
|
189
189
|
});
|
|
190
190
|
|
|
@@ -71,10 +71,10 @@ files: FileList | null;
|
|
|
71
71
|
<snice-file-upload id="upload"></snice-file-upload>
|
|
72
72
|
<script>
|
|
73
73
|
const upload = document.querySelector('#upload');
|
|
74
|
-
upload.addEventListener('
|
|
74
|
+
upload.addEventListener('file-upload-change', (e) => {
|
|
75
75
|
console.log('Files:', e.detail.files);
|
|
76
76
|
});
|
|
77
|
-
upload.addEventListener('
|
|
77
|
+
upload.addEventListener('file-upload-error', (e) => {
|
|
78
78
|
console.error('Error:', e.detail.message);
|
|
79
79
|
});
|
|
80
80
|
</script>
|
|
@@ -58,8 +58,8 @@ clearFilters(): void
|
|
|
58
58
|
|
|
59
59
|
## Events
|
|
60
60
|
|
|
61
|
-
-
|
|
62
|
-
-
|
|
61
|
+
- `kanban-card-move` - Card moved (detail: { card, fromColumn, toColumn, kanban })
|
|
62
|
+
- `kanban-card-click` - Card clicked (detail: { card, kanban })
|
|
63
63
|
|
|
64
64
|
## Usage
|
|
65
65
|
|
|
@@ -97,7 +97,7 @@ kanban.search('landing page');
|
|
|
97
97
|
kanban.clearFilters();
|
|
98
98
|
|
|
99
99
|
// Events
|
|
100
|
-
kanban.addEventListener('
|
|
100
|
+
kanban.addEventListener('kanban-card-move', (e) => {
|
|
101
101
|
console.log(`Moved ${e.detail.card.title}`);
|
|
102
102
|
});
|
|
103
103
|
```
|
|
@@ -25,8 +25,8 @@ distance: number = 4;
|
|
|
25
25
|
|
|
26
26
|
## Events
|
|
27
27
|
|
|
28
|
-
-
|
|
29
|
-
-
|
|
28
|
+
- `menu-open` - Fired when menu opens (detail: { menu: SniceMenuElement })
|
|
29
|
+
- `menu-close` - Fired when menu closes (detail: { menu: SniceMenuElement })
|
|
30
30
|
|
|
31
31
|
## Usage
|
|
32
32
|
|
|
@@ -95,7 +95,7 @@ selected: boolean = false;
|
|
|
95
95
|
|
|
96
96
|
### Events
|
|
97
97
|
|
|
98
|
-
-
|
|
98
|
+
- `menu-item-select` - Fired when item is clicked (detail: { item: SniceMenuItemElement, value: string })
|
|
99
99
|
|
|
100
100
|
## snice-menu-divider
|
|
101
101
|
|
|
@@ -56,16 +56,16 @@ interface Track {
|
|
|
56
56
|
|
|
57
57
|
## Events
|
|
58
58
|
|
|
59
|
-
-
|
|
60
|
-
-
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
66
|
-
-
|
|
59
|
+
- `player-play` - Playback started
|
|
60
|
+
- `player-pause` - Playback paused
|
|
61
|
+
- `player-stop` - Playback stopped
|
|
62
|
+
- `player-track-change` - Track changed
|
|
63
|
+
- `player-track-ended` - Track ended
|
|
64
|
+
- `player-shuffle-change` - Shuffle changed
|
|
65
|
+
- `player-repeat-change` - Repeat mode changed
|
|
66
|
+
- `player-volume-change` - Volume changed
|
|
67
67
|
- `@snice/player-time-update` - Time updated
|
|
68
|
-
-
|
|
68
|
+
- `player-error` - Error occurred
|
|
69
69
|
|
|
70
70
|
## Usage
|
|
71
71
|
|
|
@@ -29,7 +29,7 @@ lastPage() // Last page
|
|
|
29
29
|
## Events
|
|
30
30
|
|
|
31
31
|
```typescript
|
|
32
|
-
'
|
|
32
|
+
'pagination-change' // { page, previousPage }
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
## Usage
|
|
@@ -39,7 +39,7 @@ lastPage() // Last page
|
|
|
39
39
|
```
|
|
40
40
|
|
|
41
41
|
```typescript
|
|
42
|
-
pagination.addEventListener('
|
|
42
|
+
pagination.addEventListener('pagination-change', (e) => {
|
|
43
43
|
console.log(e.detail.page);
|
|
44
44
|
});
|
|
45
45
|
```
|
|
@@ -18,17 +18,17 @@ QR code scanner using device camera and ZXing WASM decoder.
|
|
|
18
18
|
- `snap()` - Take snapshot (manual-snap mode)
|
|
19
19
|
|
|
20
20
|
### Events
|
|
21
|
-
-
|
|
22
|
-
-
|
|
21
|
+
- `qr-scan` - detail: `{data: string, timestamp: number, reader: SniceQRReader}`
|
|
22
|
+
- `qr-error` - detail: `{error: any, reader: SniceQRReader}`
|
|
23
23
|
- `@snice/camera-ready` - detail: `{reader: SniceQRReader}`
|
|
24
|
-
-
|
|
24
|
+
- `camera-error` - detail: `{error: any, reader: SniceQRReader}`
|
|
25
25
|
|
|
26
26
|
## Usage
|
|
27
27
|
|
|
28
28
|
```html
|
|
29
29
|
<snice-qr-reader auto-start></snice-qr-reader>
|
|
30
30
|
<script>
|
|
31
|
-
reader.addEventListener('
|
|
31
|
+
reader.addEventListener('qr-scan', e => console.log(e.detail.data));
|
|
32
32
|
</script>
|
|
33
33
|
```
|
|
34
34
|
|
|
@@ -36,9 +36,9 @@ blur() // Blur and close
|
|
|
36
36
|
|
|
37
37
|
**Events:**
|
|
38
38
|
```typescript
|
|
39
|
-
'
|
|
40
|
-
'
|
|
41
|
-
'
|
|
39
|
+
'select-change' // { value, option, select }
|
|
40
|
+
'select-open' // { select }
|
|
41
|
+
'select-close' // { select }
|
|
42
42
|
```
|
|
43
43
|
|
|
44
44
|
### snice-option (Option Item)
|
|
@@ -66,7 +66,7 @@ optionData // { value, label, disabled, selected, icon }
|
|
|
66
66
|
```
|
|
67
67
|
|
|
68
68
|
```typescript
|
|
69
|
-
select.addEventListener('
|
|
69
|
+
select.addEventListener('select-change', (e) => {
|
|
70
70
|
console.log(e.detail.value);
|
|
71
71
|
});
|
|
72
72
|
|
|
@@ -67,7 +67,7 @@ vertical: boolean = false;
|
|
|
67
67
|
<snice-slider id="slider"></snice-slider>
|
|
68
68
|
<script>
|
|
69
69
|
const slider = document.querySelector('#slider');
|
|
70
|
-
slider.addEventListener('
|
|
70
|
+
slider.addEventListener('slider-change', (e) => {
|
|
71
71
|
console.log('Value:', e.detail.value);
|
|
72
72
|
});
|
|
73
73
|
</script>
|
|
@@ -29,7 +29,7 @@ click() // Programmatic click
|
|
|
29
29
|
## Events
|
|
30
30
|
|
|
31
31
|
```typescript
|
|
32
|
-
'
|
|
32
|
+
'switch-change' // { checked, switch }
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
## Usage
|
|
@@ -39,7 +39,7 @@ click() // Programmatic click
|
|
|
39
39
|
```
|
|
40
40
|
|
|
41
41
|
```typescript
|
|
42
|
-
switchEl.addEventListener('
|
|
42
|
+
switchEl.addEventListener('switch-change', (e) => {
|
|
43
43
|
console.log(e.detail.checked);
|
|
44
44
|
});
|
|
45
45
|
```
|
|
@@ -23,7 +23,7 @@ getPanel(index: number) // Get panel element
|
|
|
23
23
|
|
|
24
24
|
**Events:**
|
|
25
25
|
```typescript
|
|
26
|
-
'
|
|
26
|
+
'tab-change' // { index, oldIndex, tab, panel }
|
|
27
27
|
```
|
|
28
28
|
|
|
29
29
|
### snice-tab (Tab Button)
|
|
@@ -41,8 +41,8 @@ blur() // Remove focus
|
|
|
41
41
|
|
|
42
42
|
**Events:**
|
|
43
43
|
```typescript
|
|
44
|
-
'
|
|
45
|
-
'
|
|
44
|
+
'tab-select' // { tab }
|
|
45
|
+
'tab-close' // { tab }
|
|
46
46
|
```
|
|
47
47
|
|
|
48
48
|
### snice-tab-panel (Content Panel)
|
|
@@ -68,7 +68,7 @@ transitionDuration: number = 300; // Transition duration (ms)
|
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
```typescript
|
|
71
|
-
tabs.addEventListener('
|
|
71
|
+
tabs.addEventListener('tab-change', (e) => {
|
|
72
72
|
console.log(e.detail.index);
|
|
73
73
|
});
|
|
74
74
|
|
|
@@ -122,7 +122,7 @@ interface TerminalCommandResponse {
|
|
|
122
122
|
const terminal = document.querySelector('snice-terminal');
|
|
123
123
|
|
|
124
124
|
// Listen for commands (event pattern)
|
|
125
|
-
terminal.addEventListener('
|
|
125
|
+
terminal.addEventListener('terminal-command', (e) => {
|
|
126
126
|
console.log('Command:', e.detail.command, e.detail.args);
|
|
127
127
|
});
|
|
128
128
|
|
|
@@ -17,10 +17,10 @@
|
|
|
17
17
|
- `getTime()`: Get current time in seconds
|
|
18
18
|
|
|
19
19
|
## Events
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
20
|
+
- `timer-start`: { timer, time }
|
|
21
|
+
- `timer-stop`: { timer, time }
|
|
22
|
+
- `timer-reset`: { timer, time }
|
|
23
|
+
- `timer-complete`: { timer } - Countdown reached 0
|
|
24
24
|
|
|
25
25
|
## Implementation
|
|
26
26
|
- Uses requestAnimationFrame for smooth updates
|
|
@@ -58,11 +58,11 @@ interface TreeNode {
|
|
|
58
58
|
|
|
59
59
|
## Events
|
|
60
60
|
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
61
|
+
- `tree-node-expand` - Node expanded (detail: { nodeId, node, tree })
|
|
62
|
+
- `tree-node-collapse` - Node collapsed (detail: { nodeId, node, tree })
|
|
63
|
+
- `tree-node-select` - Node selected (detail: { nodeId, node, selectedNodes, tree })
|
|
64
|
+
- `tree-node-check` - Node checked/unchecked (detail: { nodeId, node, checked, checkedNodes, tree })
|
|
65
|
+
- `tree-node-lazy-load` - Lazy node expanded (detail: { nodeId, node, tree })
|
|
66
66
|
|
|
67
67
|
## Usage
|
|
68
68
|
|
|
@@ -114,7 +114,7 @@ interface TreeNode {
|
|
|
114
114
|
<snice-tree id="tree"></snice-tree>
|
|
115
115
|
<script>
|
|
116
116
|
const tree = document.getElementById('tree');
|
|
117
|
-
tree.addEventListener('
|
|
117
|
+
tree.addEventListener('tree-node-select', (e) => {
|
|
118
118
|
console.log('Selected:', e.detail.node.label);
|
|
119
119
|
console.log('All selected:', e.detail.selectedNodes.map(n => n.label));
|
|
120
120
|
});
|
|
@@ -134,7 +134,7 @@ interface TreeNode {
|
|
|
134
134
|
}
|
|
135
135
|
];
|
|
136
136
|
|
|
137
|
-
lazyTree.addEventListener('
|
|
137
|
+
lazyTree.addEventListener('tree-node-lazy-load', async (e) => {
|
|
138
138
|
const node = e.detail.node;
|
|
139
139
|
const data = await fetch(`/api/nodes/${node.id}`).then(r => r.json());
|
|
140
140
|
|
|
@@ -11,7 +11,7 @@ Record audio with visualization, pause/resume, and playback.
|
|
|
11
11
|
const recorder = document.getElementById('recorder');
|
|
12
12
|
|
|
13
13
|
// Listen for stop event
|
|
14
|
-
recorder.addEventListener('
|
|
14
|
+
recorder.addEventListener('recorder-stop', async () => {
|
|
15
15
|
// Recording complete
|
|
16
16
|
});
|
|
17
17
|
</script>
|
|
@@ -67,12 +67,12 @@ Download recorded audio.
|
|
|
67
67
|
|
|
68
68
|
## Events
|
|
69
69
|
|
|
70
|
-
-
|
|
71
|
-
-
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
-
|
|
75
|
-
-
|
|
70
|
+
- `recorder-start` - Recording started
|
|
71
|
+
- `recorder-stop` - Recording stopped
|
|
72
|
+
- `recorder-pause` - Recording paused
|
|
73
|
+
- `recorder-resume` - Recording resumed
|
|
74
|
+
- `recorder-cancel` - Recording cancelled
|
|
75
|
+
- `recorder-error` - Error occurred
|
|
76
76
|
|
|
77
77
|
## Examples
|
|
78
78
|
|
|
@@ -37,13 +37,13 @@ Toggle banner visibility.
|
|
|
37
37
|
|
|
38
38
|
## Events
|
|
39
39
|
|
|
40
|
-
###
|
|
40
|
+
### `banner-open`
|
|
41
41
|
Fired when banner opens.
|
|
42
42
|
|
|
43
|
-
###
|
|
43
|
+
### `banner-close`
|
|
44
44
|
Fired when banner closes.
|
|
45
45
|
|
|
46
|
-
###
|
|
46
|
+
### `banner-action`
|
|
47
47
|
Fired when action button is clicked.
|
|
48
48
|
|
|
49
49
|
## Examples
|
|
@@ -67,7 +67,7 @@ Fired when action button is clicked.
|
|
|
67
67
|
></snice-banner>
|
|
68
68
|
|
|
69
69
|
<script>
|
|
70
|
-
document.querySelector('snice-banner').addEventListener('
|
|
70
|
+
document.querySelector('snice-banner').addEventListener('banner-action', () => {
|
|
71
71
|
console.log('Update clicked');
|
|
72
72
|
});
|
|
73
73
|
</script>
|
|
@@ -11,7 +11,7 @@ Display and select dates with event support.
|
|
|
11
11
|
```javascript
|
|
12
12
|
const calendar = document.querySelector('snice-calendar');
|
|
13
13
|
|
|
14
|
-
calendar.addEventListener('
|
|
14
|
+
calendar.addEventListener('calendar-change', (e) => {
|
|
15
15
|
console.log('Selected date:', e.detail.value);
|
|
16
16
|
});
|
|
17
17
|
```
|
|
@@ -120,22 +120,22 @@ console.log(`Today has ${events.length} events`);
|
|
|
120
120
|
|
|
121
121
|
## Events
|
|
122
122
|
|
|
123
|
-
###
|
|
123
|
+
### `calendar-change`
|
|
124
124
|
Dispatched when selected date changes.
|
|
125
125
|
|
|
126
126
|
```javascript
|
|
127
|
-
calendar.addEventListener('
|
|
127
|
+
calendar.addEventListener('calendar-change', (e) => {
|
|
128
128
|
console.log('Selected:', e.detail.value);
|
|
129
129
|
});
|
|
130
130
|
```
|
|
131
131
|
|
|
132
132
|
**Detail:** `{ value: Date, calendar: SniceCalendarElement }`
|
|
133
133
|
|
|
134
|
-
###
|
|
134
|
+
### `calendar-event-click`
|
|
135
135
|
Dispatched when event is clicked.
|
|
136
136
|
|
|
137
137
|
```javascript
|
|
138
|
-
calendar.addEventListener('
|
|
138
|
+
calendar.addEventListener('calendar-event-click', (e) => {
|
|
139
139
|
console.log('Event clicked:', e.detail.event);
|
|
140
140
|
});
|
|
141
141
|
```
|
|
@@ -226,13 +226,13 @@ calendar.nextMonth();
|
|
|
226
226
|
|
|
227
227
|
```javascript
|
|
228
228
|
// Date selection
|
|
229
|
-
calendar.addEventListener('
|
|
229
|
+
calendar.addEventListener('calendar-change', (e) => {
|
|
230
230
|
console.log('Date selected:', e.detail.value);
|
|
231
231
|
updateBookingForm(e.detail.value);
|
|
232
232
|
});
|
|
233
233
|
|
|
234
234
|
// Event clicks
|
|
235
|
-
calendar.addEventListener('
|
|
235
|
+
calendar.addEventListener('calendar-event-click', (e) => {
|
|
236
236
|
showEventDetails(e.detail.event);
|
|
237
237
|
});
|
|
238
238
|
```
|
|
@@ -256,7 +256,7 @@ const fullyBooked = await getFullyBookedDates();
|
|
|
256
256
|
calendar.disabledDates = fullyBooked;
|
|
257
257
|
|
|
258
258
|
// Handle new booking
|
|
259
|
-
calendar.addEventListener('
|
|
259
|
+
calendar.addEventListener('calendar-change', (e) => {
|
|
260
260
|
if (hasAvailability(e.detail.value)) {
|
|
261
261
|
showBookingForm(e.detail.value);
|
|
262
262
|
}
|
|
@@ -290,7 +290,7 @@ calendar.events = teamMeetings.map(m => ({
|
|
|
290
290
|
}));
|
|
291
291
|
|
|
292
292
|
// Click to see meeting details
|
|
293
|
-
calendar.addEventListener('
|
|
293
|
+
calendar.addEventListener('calendar-event-click', (e) => {
|
|
294
294
|
const meeting = e.detail.event;
|
|
295
295
|
showModal({
|
|
296
296
|
title: meeting.title,
|
|
@@ -312,7 +312,7 @@ calendar.minDate = today;
|
|
|
312
312
|
calendar.maxDate = new Date(today.getFullYear(), today.getMonth() + 3, 0);
|
|
313
313
|
|
|
314
314
|
// Handle selection
|
|
315
|
-
calendar.addEventListener('
|
|
315
|
+
calendar.addEventListener('calendar-change', (e) => {
|
|
316
316
|
checkAvailability(e.detail.value).then(slots => {
|
|
317
317
|
if (slots.length > 0) {
|
|
318
318
|
showTimeSlots(slots);
|
|
@@ -355,7 +355,7 @@ calendar.events = vacations.map(v => ({
|
|
|
355
355
|
calendar.disabledDates = companyHolidays;
|
|
356
356
|
|
|
357
357
|
// Request new vacation
|
|
358
|
-
calendar.addEventListener('
|
|
358
|
+
calendar.addEventListener('calendar-change', (e) => {
|
|
359
359
|
if (canRequestVacation(e.detail.value)) {
|
|
360
360
|
showVacationRequestForm(e.detail.value);
|
|
361
361
|
}
|