snice 3.10.5 → 4.0.0
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/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.d.ts +2 -0
- package/dist/components/camera/snice-camera.js +26 -7
- 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.d.ts +1 -1
- package/dist/components/file-gallery/snice-file-gallery.js +20 -20
- package/dist/components/file-gallery/snice-file-gallery.js.map +1 -1
- package/dist/components/file-gallery/snice-file-gallery.types.d.ts +0 -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/theme/theme.css +3 -0
- 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 +13 -6
- 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 +7 -6
- 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 +33 -10
- 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 +24 -23
- 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/docs/components/modal.md
CHANGED
|
@@ -36,7 +36,7 @@ const modal = document.querySelector('snice-modal');
|
|
|
36
36
|
modal.show();
|
|
37
37
|
|
|
38
38
|
// Listen for events
|
|
39
|
-
modal.addEventListener('
|
|
39
|
+
modal.addEventListener('modal-close', () => {
|
|
40
40
|
console.log('Modal closed');
|
|
41
41
|
});
|
|
42
42
|
```
|
|
@@ -71,7 +71,7 @@ modal.close();
|
|
|
71
71
|
|
|
72
72
|
## Events
|
|
73
73
|
|
|
74
|
-
###
|
|
74
|
+
### `modal-open`
|
|
75
75
|
Fired when the modal opens.
|
|
76
76
|
|
|
77
77
|
**Event Detail:**
|
|
@@ -83,12 +83,12 @@ Fired when the modal opens.
|
|
|
83
83
|
|
|
84
84
|
**Usage:**
|
|
85
85
|
```typescript
|
|
86
|
-
modal.addEventListener('
|
|
86
|
+
modal.addEventListener('modal-open', (e) => {
|
|
87
87
|
console.log('Modal opened:', e.detail.modal);
|
|
88
88
|
});
|
|
89
89
|
```
|
|
90
90
|
|
|
91
|
-
###
|
|
91
|
+
### `modal-close`
|
|
92
92
|
Fired when the modal closes.
|
|
93
93
|
|
|
94
94
|
**Event Detail:**
|
|
@@ -100,7 +100,7 @@ Fired when the modal closes.
|
|
|
100
100
|
|
|
101
101
|
**Usage:**
|
|
102
102
|
```typescript
|
|
103
|
-
modal.addEventListener('
|
|
103
|
+
modal.addEventListener('modal-close', (e) => {
|
|
104
104
|
console.log('Modal closed:', e.detail.modal);
|
|
105
105
|
});
|
|
106
106
|
```
|
|
@@ -343,12 +343,12 @@ import type { SniceModalElement } from 'snice/components/modal/snice-modal.types
|
|
|
343
343
|
|
|
344
344
|
const modal = document.querySelector<SniceModalElement>('snice-modal');
|
|
345
345
|
|
|
346
|
-
modal.addEventListener('
|
|
346
|
+
modal.addEventListener('modal-open', () => {
|
|
347
347
|
console.log('Modal opened');
|
|
348
348
|
// Pause video, etc.
|
|
349
349
|
});
|
|
350
350
|
|
|
351
|
-
modal.addEventListener('
|
|
351
|
+
modal.addEventListener('modal-close', () => {
|
|
352
352
|
console.log('Modal closed');
|
|
353
353
|
// Resume video, etc.
|
|
354
354
|
});
|
|
@@ -24,7 +24,7 @@ A full-featured audio player with playlist support, shuffle, repeat modes, and v
|
|
|
24
24
|
];
|
|
25
25
|
|
|
26
26
|
// Listen for events
|
|
27
|
-
player.addEventListener('
|
|
27
|
+
player.addEventListener('player-play', (e) => {
|
|
28
28
|
console.log('Playing:', e.detail.track.title);
|
|
29
29
|
});
|
|
30
30
|
</script>
|
|
@@ -117,16 +117,16 @@ Get current track.
|
|
|
117
117
|
|
|
118
118
|
## Events
|
|
119
119
|
|
|
120
|
-
-
|
|
121
|
-
-
|
|
122
|
-
-
|
|
123
|
-
-
|
|
124
|
-
-
|
|
125
|
-
-
|
|
126
|
-
-
|
|
127
|
-
-
|
|
120
|
+
- `player-play` - Playback started
|
|
121
|
+
- `player-pause` - Playback paused
|
|
122
|
+
- `player-stop` - Playback stopped
|
|
123
|
+
- `player-track-change` - Track changed
|
|
124
|
+
- `player-track-ended` - Track ended
|
|
125
|
+
- `player-shuffle-change` - Shuffle changed
|
|
126
|
+
- `player-repeat-change` - Repeat mode changed
|
|
127
|
+
- `player-volume-change` - Volume changed
|
|
128
128
|
- `@snice/player-time-update` - Playback time updated
|
|
129
|
-
-
|
|
129
|
+
- `player-error` - Error occurred
|
|
130
130
|
|
|
131
131
|
## Examples
|
|
132
132
|
|
|
@@ -228,19 +228,19 @@ player.seek(30); // Jump to 30 seconds
|
|
|
228
228
|
```javascript
|
|
229
229
|
const player = document.querySelector('snice-music-player');
|
|
230
230
|
|
|
231
|
-
player.addEventListener('
|
|
231
|
+
player.addEventListener('player-play', (e) => {
|
|
232
232
|
console.log('Playing:', e.detail.track);
|
|
233
233
|
});
|
|
234
234
|
|
|
235
|
-
player.addEventListener('
|
|
235
|
+
player.addEventListener('player-pause', (e) => {
|
|
236
236
|
console.log('Paused:', e.detail.track);
|
|
237
237
|
});
|
|
238
238
|
|
|
239
|
-
player.addEventListener('
|
|
239
|
+
player.addEventListener('player-track-change', (e) => {
|
|
240
240
|
console.log('Track changed:', e.detail.track);
|
|
241
241
|
});
|
|
242
242
|
|
|
243
|
-
player.addEventListener('
|
|
243
|
+
player.addEventListener('player-track-ended', (e) => {
|
|
244
244
|
console.log('Track ended:', e.detail.track);
|
|
245
245
|
});
|
|
246
246
|
|
|
@@ -248,7 +248,7 @@ player.addEventListener('@snice/player-time-update', (e) => {
|
|
|
248
248
|
console.log('Time:', e.detail.currentTime, '/', e.detail.duration);
|
|
249
249
|
});
|
|
250
250
|
|
|
251
|
-
player.addEventListener('
|
|
251
|
+
player.addEventListener('player-error', (e) => {
|
|
252
252
|
console.error('Error:', e.detail.error);
|
|
253
253
|
});
|
|
254
254
|
```
|
|
@@ -280,7 +280,7 @@ await player.play();
|
|
|
280
280
|
```javascript
|
|
281
281
|
// Tracks in playlist are clickable by default
|
|
282
282
|
// Listen for track changes
|
|
283
|
-
player.addEventListener('
|
|
283
|
+
player.addEventListener('player-track-change', (e) => {
|
|
284
284
|
console.log('User selected:', e.detail.track.title);
|
|
285
285
|
});
|
|
286
286
|
```
|
|
@@ -20,7 +20,7 @@ The `<snice-pagination>` component provides a flexible pagination interface for
|
|
|
20
20
|
import 'snice/components/pagination/snice-pagination';
|
|
21
21
|
|
|
22
22
|
const pagination = document.querySelector('snice-pagination');
|
|
23
|
-
pagination.addEventListener('
|
|
23
|
+
pagination.addEventListener('pagination-change', (e) => {
|
|
24
24
|
console.log('Page changed to:', e.detail.page);
|
|
25
25
|
});
|
|
26
26
|
```
|
|
@@ -78,7 +78,7 @@ pagination.lastPage();
|
|
|
78
78
|
|
|
79
79
|
## Events
|
|
80
80
|
|
|
81
|
-
###
|
|
81
|
+
### `pagination-change`
|
|
82
82
|
Fired when the page changes.
|
|
83
83
|
|
|
84
84
|
**Event Detail:**
|
|
@@ -91,7 +91,7 @@ Fired when the page changes.
|
|
|
91
91
|
|
|
92
92
|
**Usage:**
|
|
93
93
|
```typescript
|
|
94
|
-
pagination.addEventListener('
|
|
94
|
+
pagination.addEventListener('pagination-change', (e) => {
|
|
95
95
|
const { page, previousPage } = e.detail;
|
|
96
96
|
console.log(`Changed from page ${previousPage} to ${page}`);
|
|
97
97
|
});
|
|
@@ -194,7 +194,7 @@ pagination.lastPage();
|
|
|
194
194
|
```typescript
|
|
195
195
|
const pagination = document.querySelector('snice-pagination');
|
|
196
196
|
|
|
197
|
-
pagination.addEventListener('
|
|
197
|
+
pagination.addEventListener('pagination-change', (e) => {
|
|
198
198
|
const { page } = e.detail;
|
|
199
199
|
|
|
200
200
|
// Fetch data for the new page
|
|
@@ -258,7 +258,7 @@ async function fetchPageData(page: number) {
|
|
|
258
258
|
}
|
|
259
259
|
|
|
260
260
|
// Listen for page changes
|
|
261
|
-
pagination.addEventListener('
|
|
261
|
+
pagination.addEventListener('pagination-change', (e) => {
|
|
262
262
|
renderPage(e.detail.page);
|
|
263
263
|
});
|
|
264
264
|
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
<script>
|
|
20
20
|
const reader = document.querySelector('snice-qr-reader');
|
|
21
21
|
|
|
22
|
-
reader.addEventListener('
|
|
22
|
+
reader.addEventListener('qr-scan', (event) => {
|
|
23
23
|
console.log('QR Code:', event.detail.data);
|
|
24
24
|
});
|
|
25
25
|
</script>
|
|
@@ -117,7 +117,7 @@ const result = await reader.snap(); // Returns QR data or null
|
|
|
117
117
|
|
|
118
118
|
## Events
|
|
119
119
|
|
|
120
|
-
###
|
|
120
|
+
### `qr-scan`
|
|
121
121
|
Fired when a QR code is successfully detected.
|
|
122
122
|
|
|
123
123
|
**Detail Properties:**
|
|
@@ -126,13 +126,13 @@ Fired when a QR code is successfully detected.
|
|
|
126
126
|
- `reader` (SniceQRReader): Reference to the component
|
|
127
127
|
|
|
128
128
|
```javascript
|
|
129
|
-
reader.addEventListener('
|
|
129
|
+
reader.addEventListener('qr-scan', (event) => {
|
|
130
130
|
console.log('Data:', event.detail.data);
|
|
131
131
|
console.log('Time:', new Date(event.detail.timestamp));
|
|
132
132
|
});
|
|
133
133
|
```
|
|
134
134
|
|
|
135
|
-
###
|
|
135
|
+
### `qr-error`
|
|
136
136
|
Fired when an error occurs during scanning.
|
|
137
137
|
|
|
138
138
|
**Detail Properties:**
|
|
@@ -140,7 +140,7 @@ Fired when an error occurs during scanning.
|
|
|
140
140
|
- `reader` (SniceQRReader): Reference to the component
|
|
141
141
|
|
|
142
142
|
```javascript
|
|
143
|
-
reader.addEventListener('
|
|
143
|
+
reader.addEventListener('qr-error', (event) => {
|
|
144
144
|
console.error('Error:', event.detail.error);
|
|
145
145
|
});
|
|
146
146
|
```
|
|
@@ -157,7 +157,7 @@ reader.addEventListener('@snice/camera-ready', (event) => {
|
|
|
157
157
|
});
|
|
158
158
|
```
|
|
159
159
|
|
|
160
|
-
###
|
|
160
|
+
### `camera-error`
|
|
161
161
|
Fired when camera initialization fails.
|
|
162
162
|
|
|
163
163
|
**Detail Properties:**
|
|
@@ -165,7 +165,7 @@ Fired when camera initialization fails.
|
|
|
165
165
|
- `reader` (SniceQRReader): Reference to the component
|
|
166
166
|
|
|
167
167
|
```javascript
|
|
168
|
-
reader.addEventListener('
|
|
168
|
+
reader.addEventListener('camera-error', (event) => {
|
|
169
169
|
console.error('Camera error:', event.detail.error);
|
|
170
170
|
});
|
|
171
171
|
```
|
|
@@ -192,7 +192,7 @@ reader.addEventListener('@snice/camera-error', (event) => {
|
|
|
192
192
|
reader.stop();
|
|
193
193
|
}
|
|
194
194
|
|
|
195
|
-
reader.addEventListener('
|
|
195
|
+
reader.addEventListener('qr-scan', (e) => {
|
|
196
196
|
result.textContent = `Scanned: ${e.detail.data}`;
|
|
197
197
|
});
|
|
198
198
|
</script>
|
|
@@ -206,7 +206,7 @@ reader.addEventListener('@snice/camera-error', (event) => {
|
|
|
206
206
|
<script>
|
|
207
207
|
const scanner = document.getElementById('scanner');
|
|
208
208
|
|
|
209
|
-
scanner.addEventListener('
|
|
209
|
+
scanner.addEventListener('qr-scan', (e) => {
|
|
210
210
|
// Process the scan
|
|
211
211
|
processQRCode(e.detail.data);
|
|
212
212
|
|
|
@@ -251,7 +251,7 @@ reader.addEventListener('@snice/camera-error', (event) => {
|
|
|
251
251
|
<script>
|
|
252
252
|
// Useful for self-scanning scenarios
|
|
253
253
|
document.querySelector('snice-qr-reader')
|
|
254
|
-
.addEventListener('
|
|
254
|
+
.addEventListener('qr-scan', (e) => {
|
|
255
255
|
validateTicket(e.detail.data);
|
|
256
256
|
});
|
|
257
257
|
</script>
|
|
@@ -267,12 +267,12 @@ reader.addEventListener('@snice/camera-error', (event) => {
|
|
|
267
267
|
const reader = document.getElementById('reader');
|
|
268
268
|
const status = document.getElementById('status');
|
|
269
269
|
|
|
270
|
-
reader.addEventListener('
|
|
270
|
+
reader.addEventListener('qr-scan', (e) => {
|
|
271
271
|
status.textContent = `✓ Scanned: ${e.detail.data}`;
|
|
272
272
|
status.style.color = 'green';
|
|
273
273
|
});
|
|
274
274
|
|
|
275
|
-
reader.addEventListener('
|
|
275
|
+
reader.addEventListener('qr-error', (e) => {
|
|
276
276
|
status.textContent = `✗ Error: ${e.detail.error}`;
|
|
277
277
|
status.style.color = 'red';
|
|
278
278
|
|
|
@@ -28,7 +28,7 @@ import 'snice/components/select/snice-select';
|
|
|
28
28
|
import 'snice/components/select/snice-option';
|
|
29
29
|
|
|
30
30
|
const select = document.querySelector('snice-select');
|
|
31
|
-
select.addEventListener('
|
|
31
|
+
select.addEventListener('select-change', (e) => {
|
|
32
32
|
console.log('Selected:', e.detail.value);
|
|
33
33
|
});
|
|
34
34
|
```
|
|
@@ -111,7 +111,7 @@ select.blur();
|
|
|
111
111
|
|
|
112
112
|
#### Events
|
|
113
113
|
|
|
114
|
-
#####
|
|
114
|
+
##### `select-change`
|
|
115
115
|
Fired when the selection changes.
|
|
116
116
|
|
|
117
117
|
**Event Detail:**
|
|
@@ -125,13 +125,13 @@ Fired when the selection changes.
|
|
|
125
125
|
|
|
126
126
|
**Usage:**
|
|
127
127
|
```typescript
|
|
128
|
-
select.addEventListener('
|
|
128
|
+
select.addEventListener('select-change', (e) => {
|
|
129
129
|
const { value, option } = e.detail;
|
|
130
130
|
console.log(`Selected ${option?.label} with value ${value}`);
|
|
131
131
|
});
|
|
132
132
|
```
|
|
133
133
|
|
|
134
|
-
#####
|
|
134
|
+
##### `select-open`
|
|
135
135
|
Fired when the dropdown opens.
|
|
136
136
|
|
|
137
137
|
**Event Detail:**
|
|
@@ -141,7 +141,7 @@ Fired when the dropdown opens.
|
|
|
141
141
|
}
|
|
142
142
|
```
|
|
143
143
|
|
|
144
|
-
#####
|
|
144
|
+
##### `select-close`
|
|
145
145
|
Fired when the dropdown closes.
|
|
146
146
|
|
|
147
147
|
**Event Detail:**
|
|
@@ -348,7 +348,7 @@ select.value = 'banana';
|
|
|
348
348
|
```typescript
|
|
349
349
|
const select = document.querySelector('snice-select');
|
|
350
350
|
|
|
351
|
-
select.addEventListener('
|
|
351
|
+
select.addEventListener('select-change', (e) => {
|
|
352
352
|
const { value, option } = e.detail;
|
|
353
353
|
|
|
354
354
|
if (option) {
|
|
@@ -359,11 +359,11 @@ select.addEventListener('@snice/select-change', (e) => {
|
|
|
359
359
|
updateDependentFields(value);
|
|
360
360
|
});
|
|
361
361
|
|
|
362
|
-
select.addEventListener('
|
|
362
|
+
select.addEventListener('select-open', () => {
|
|
363
363
|
console.log('Dropdown opened');
|
|
364
364
|
});
|
|
365
365
|
|
|
366
|
-
select.addEventListener('
|
|
366
|
+
select.addEventListener('select-close', () => {
|
|
367
367
|
console.log('Dropdown closed');
|
|
368
368
|
});
|
|
369
369
|
```
|
|
@@ -501,7 +501,7 @@ Selected options will display as removable tags. Click the × on a tag to remove
|
|
|
501
501
|
import 'snice/components/select/snice-option';
|
|
502
502
|
|
|
503
503
|
// Handle select changes
|
|
504
|
-
document.addEventListener('
|
|
504
|
+
document.addEventListener('select-change', (e) => {
|
|
505
505
|
console.log('Selection changed:', e.detail);
|
|
506
506
|
});
|
|
507
507
|
</script>
|
|
@@ -27,7 +27,7 @@ The `<snice-slider>` component provides an interactive range slider for selectin
|
|
|
27
27
|
import 'snice/components/slider/snice-slider';
|
|
28
28
|
|
|
29
29
|
const slider = document.querySelector('snice-slider');
|
|
30
|
-
slider.addEventListener('
|
|
30
|
+
slider.addEventListener('slider-change', (e) => {
|
|
31
31
|
console.log('Value:', e.detail.value);
|
|
32
32
|
});
|
|
33
33
|
```
|
|
@@ -93,24 +93,24 @@ slider.setCustomValidity('Value must be between 10 and 90');
|
|
|
93
93
|
|
|
94
94
|
## Events
|
|
95
95
|
|
|
96
|
-
###
|
|
96
|
+
### `slider-input`
|
|
97
97
|
Fired continuously while dragging the slider.
|
|
98
98
|
|
|
99
99
|
**Detail**: `{ value: number, slider: SniceSliderElement }`
|
|
100
100
|
|
|
101
101
|
```typescript
|
|
102
|
-
slider.addEventListener('
|
|
102
|
+
slider.addEventListener('slider-input', (e) => {
|
|
103
103
|
console.log('Current value:', e.detail.value);
|
|
104
104
|
});
|
|
105
105
|
```
|
|
106
106
|
|
|
107
|
-
###
|
|
107
|
+
### `slider-change`
|
|
108
108
|
Fired when the slider value is committed (after drag ends or keyboard input).
|
|
109
109
|
|
|
110
110
|
**Detail**: `{ value: number, slider: SniceSliderElement }`
|
|
111
111
|
|
|
112
112
|
```typescript
|
|
113
|
-
slider.addEventListener('
|
|
113
|
+
slider.addEventListener('slider-change', (e) => {
|
|
114
114
|
console.log('Final value:', e.detail.value);
|
|
115
115
|
});
|
|
116
116
|
```
|
|
@@ -290,7 +290,7 @@ document.getElementById('settings-form').addEventListener('submit', (e) => {
|
|
|
290
290
|
const slider = document.getElementById('volume-slider');
|
|
291
291
|
const display = document.getElementById('volume-display');
|
|
292
292
|
|
|
293
|
-
slider.addEventListener('
|
|
293
|
+
slider.addEventListener('slider-input', (e) => {
|
|
294
294
|
display.textContent = `Volume: ${e.detail.value}`;
|
|
295
295
|
});
|
|
296
296
|
</script>
|
|
@@ -54,11 +54,11 @@ splitPane.reset();
|
|
|
54
54
|
|
|
55
55
|
## Events
|
|
56
56
|
|
|
57
|
-
###
|
|
57
|
+
### `pane-resize`
|
|
58
58
|
Dispatched when pane is resized.
|
|
59
59
|
|
|
60
60
|
```javascript
|
|
61
|
-
splitPane.addEventListener('
|
|
61
|
+
splitPane.addEventListener('pane-resize', (e) => {
|
|
62
62
|
console.log('Primary:', e.detail.primarySize);
|
|
63
63
|
console.log('Secondary:', e.detail.secondarySize);
|
|
64
64
|
});
|
|
@@ -20,7 +20,7 @@ The `<snice-switch>` component provides a toggle switch input for boolean select
|
|
|
20
20
|
import 'snice/components/switch/snice-switch';
|
|
21
21
|
|
|
22
22
|
const switchEl = document.querySelector('snice-switch');
|
|
23
|
-
switchEl.addEventListener('
|
|
23
|
+
switchEl.addEventListener('switch-change', (e) => {
|
|
24
24
|
console.log('Switch is now:', e.detail.checked);
|
|
25
25
|
});
|
|
26
26
|
```
|
|
@@ -72,7 +72,7 @@ switchEl.click();
|
|
|
72
72
|
|
|
73
73
|
## Events
|
|
74
74
|
|
|
75
|
-
###
|
|
75
|
+
### `switch-change`
|
|
76
76
|
Fired when the switch state changes.
|
|
77
77
|
|
|
78
78
|
**Event Detail:**
|
|
@@ -85,7 +85,7 @@ Fired when the switch state changes.
|
|
|
85
85
|
|
|
86
86
|
**Usage:**
|
|
87
87
|
```typescript
|
|
88
|
-
switchEl.addEventListener('
|
|
88
|
+
switchEl.addEventListener('switch-change', (e) => {
|
|
89
89
|
const { checked } = e.detail;
|
|
90
90
|
console.log(`Switch is ${checked ? 'on' : 'off'}`);
|
|
91
91
|
});
|
|
@@ -199,7 +199,7 @@ switchEl.disabled = true;
|
|
|
199
199
|
```typescript
|
|
200
200
|
const switchEl = document.querySelector('snice-switch');
|
|
201
201
|
|
|
202
|
-
switchEl.addEventListener('
|
|
202
|
+
switchEl.addEventListener('switch-change', (e) => {
|
|
203
203
|
const { checked, switch: sw } = e.detail;
|
|
204
204
|
|
|
205
205
|
if (checked) {
|
package/docs/components/tabs.md
CHANGED
|
@@ -34,7 +34,7 @@ import 'snice/components/tabs/snice-tab';
|
|
|
34
34
|
import 'snice/components/tabs/snice-tab-panel';
|
|
35
35
|
|
|
36
36
|
const tabs = document.querySelector('snice-tabs');
|
|
37
|
-
tabs.addEventListener('
|
|
37
|
+
tabs.addEventListener('tab-change', (e) => {
|
|
38
38
|
console.log('Tab changed to:', e.detail.index);
|
|
39
39
|
});
|
|
40
40
|
```
|
|
@@ -86,7 +86,7 @@ const panel = tabs.getPanel(0);
|
|
|
86
86
|
|
|
87
87
|
#### Events
|
|
88
88
|
|
|
89
|
-
#####
|
|
89
|
+
##### `tab-change`
|
|
90
90
|
Fired when the active tab changes.
|
|
91
91
|
|
|
92
92
|
**Event Detail:**
|
|
@@ -101,7 +101,7 @@ Fired when the active tab changes.
|
|
|
101
101
|
|
|
102
102
|
**Usage:**
|
|
103
103
|
```typescript
|
|
104
|
-
tabs.addEventListener('
|
|
104
|
+
tabs.addEventListener('tab-change', (e) => {
|
|
105
105
|
const { index, oldIndex, tab, panel } = e.detail;
|
|
106
106
|
console.log(`Changed from tab ${oldIndex} to ${index}`);
|
|
107
107
|
});
|
|
@@ -136,7 +136,7 @@ tab.blur();
|
|
|
136
136
|
|
|
137
137
|
#### Events
|
|
138
138
|
|
|
139
|
-
#####
|
|
139
|
+
##### `tab-select`
|
|
140
140
|
Fired when the tab is clicked (bubbles to parent tabs container).
|
|
141
141
|
|
|
142
142
|
**Event Detail:**
|
|
@@ -146,7 +146,7 @@ Fired when the tab is clicked (bubbles to parent tabs container).
|
|
|
146
146
|
}
|
|
147
147
|
```
|
|
148
148
|
|
|
149
|
-
#####
|
|
149
|
+
##### `tab-close`
|
|
150
150
|
Fired when the close button is clicked (only if `closable` is true).
|
|
151
151
|
|
|
152
152
|
**Event Detail:**
|
|
@@ -216,7 +216,7 @@ Control where the tab navigation appears relative to the content.
|
|
|
216
216
|
|
|
217
217
|
const tabs = document.querySelectorAll('snice-tab');
|
|
218
218
|
tabs.forEach(tab => {
|
|
219
|
-
tab.addEventListener('
|
|
219
|
+
tab.addEventListener('tab-close', (e) => {
|
|
220
220
|
console.log('Tab closed:', e.detail.tab);
|
|
221
221
|
// Handle tab removal
|
|
222
222
|
});
|
|
@@ -302,7 +302,7 @@ const panel = tabs.getPanel(0);
|
|
|
302
302
|
```typescript
|
|
303
303
|
const tabs = document.querySelector('snice-tabs');
|
|
304
304
|
|
|
305
|
-
tabs.addEventListener('
|
|
305
|
+
tabs.addEventListener('tab-change', (e) => {
|
|
306
306
|
const { index, oldIndex, tab, panel } = e.detail;
|
|
307
307
|
|
|
308
308
|
// Load content dynamically
|
|
@@ -349,7 +349,7 @@ async function loadPanelContent(index: number, panel: HTMLElement) {
|
|
|
349
349
|
tabs.appendChild(panel);
|
|
350
350
|
|
|
351
351
|
// Handle close
|
|
352
|
-
tab.addEventListener('
|
|
352
|
+
tab.addEventListener('tab-close', () => {
|
|
353
353
|
const index = Array.from(tabs.querySelectorAll('snice-tab')).indexOf(tab);
|
|
354
354
|
const panelToRemove = tabs.querySelectorAll('snice-tab-panel')[index];
|
|
355
355
|
|
|
@@ -461,13 +461,13 @@ async function loadPanelContent(index: number, panel: HTMLElement) {
|
|
|
461
461
|
const tabs = document.querySelector('snice-tabs');
|
|
462
462
|
|
|
463
463
|
// Handle tab changes
|
|
464
|
-
tabs.addEventListener('
|
|
464
|
+
tabs.addEventListener('tab-change', (e) => {
|
|
465
465
|
console.log('Active tab:', e.detail.index);
|
|
466
466
|
});
|
|
467
467
|
|
|
468
468
|
// Handle tab close
|
|
469
469
|
document.querySelectorAll('snice-tab[closable]').forEach(tab => {
|
|
470
|
-
tab.addEventListener('
|
|
470
|
+
tab.addEventListener('tab-close', (e) => {
|
|
471
471
|
if (confirm('Close this tab?')) {
|
|
472
472
|
const index = Array.from(tabs.querySelectorAll('snice-tab')).indexOf(e.detail.tab);
|
|
473
473
|
const panel = tabs.querySelectorAll('snice-tab-panel')[index];
|
|
@@ -115,12 +115,12 @@ terminal.clearHistory();
|
|
|
115
115
|
|
|
116
116
|
## Events
|
|
117
117
|
|
|
118
|
-
###
|
|
118
|
+
### `terminal-command`
|
|
119
119
|
|
|
120
120
|
Emitted when a command is entered.
|
|
121
121
|
|
|
122
122
|
```javascript
|
|
123
|
-
terminal.addEventListener('
|
|
123
|
+
terminal.addEventListener('terminal-command', (e) => {
|
|
124
124
|
console.log('Command:', e.detail.command);
|
|
125
125
|
console.log('Args:', e.detail.args);
|
|
126
126
|
});
|
|
@@ -130,22 +130,22 @@ terminal.addEventListener('@snice/terminal-command', (e) => {
|
|
|
130
130
|
- `command: string` - The command name
|
|
131
131
|
- `args: string[]` - Command arguments
|
|
132
132
|
|
|
133
|
-
###
|
|
133
|
+
### `terminal-clear`
|
|
134
134
|
|
|
135
135
|
Emitted when the terminal is cleared.
|
|
136
136
|
|
|
137
137
|
```javascript
|
|
138
|
-
terminal.addEventListener('
|
|
138
|
+
terminal.addEventListener('terminal-clear', () => {
|
|
139
139
|
console.log('Terminal was cleared');
|
|
140
140
|
});
|
|
141
141
|
```
|
|
142
142
|
|
|
143
|
-
###
|
|
143
|
+
### `terminal-ready`
|
|
144
144
|
|
|
145
145
|
Emitted when the terminal is ready.
|
|
146
146
|
|
|
147
147
|
```javascript
|
|
148
|
-
terminal.addEventListener('
|
|
148
|
+
terminal.addEventListener('terminal-ready', () => {
|
|
149
149
|
console.log('Terminal is ready');
|
|
150
150
|
});
|
|
151
151
|
```
|
|
@@ -24,7 +24,7 @@ The `<snice-textarea>` component provides a multi-line text input with validatio
|
|
|
24
24
|
import 'snice/components/textarea/snice-textarea';
|
|
25
25
|
|
|
26
26
|
const textarea = document.querySelector('snice-textarea');
|
|
27
|
-
textarea.addEventListener('
|
|
27
|
+
textarea.addEventListener('textarea-change', (e) => {
|
|
28
28
|
console.log('Value:', e.detail.value);
|
|
29
29
|
});
|
|
30
30
|
```
|
|
@@ -99,34 +99,34 @@ textarea.setCustomValidity('This field is required');
|
|
|
99
99
|
|
|
100
100
|
## Events
|
|
101
101
|
|
|
102
|
-
###
|
|
102
|
+
### `textarea-input`
|
|
103
103
|
Fired when the textarea value changes during input.
|
|
104
104
|
|
|
105
105
|
**Detail**: `{ value: string, textarea: SniceTextareaElement }`
|
|
106
106
|
|
|
107
107
|
```typescript
|
|
108
|
-
textarea.addEventListener('
|
|
108
|
+
textarea.addEventListener('textarea-input', (e) => {
|
|
109
109
|
console.log('Input value:', e.detail.value);
|
|
110
110
|
});
|
|
111
111
|
```
|
|
112
112
|
|
|
113
|
-
###
|
|
113
|
+
### `textarea-change`
|
|
114
114
|
Fired when the textarea value is committed (blur or enter).
|
|
115
115
|
|
|
116
116
|
**Detail**: `{ value: string, textarea: SniceTextareaElement }`
|
|
117
117
|
|
|
118
118
|
```typescript
|
|
119
|
-
textarea.addEventListener('
|
|
119
|
+
textarea.addEventListener('textarea-change', (e) => {
|
|
120
120
|
console.log('Changed to:', e.detail.value);
|
|
121
121
|
});
|
|
122
122
|
```
|
|
123
123
|
|
|
124
|
-
###
|
|
124
|
+
### `textarea-focus`
|
|
125
125
|
Fired when the textarea receives focus.
|
|
126
126
|
|
|
127
127
|
**Detail**: `{ textarea: SniceTextareaElement }`
|
|
128
128
|
|
|
129
|
-
###
|
|
129
|
+
### `textarea-blur`
|
|
130
130
|
Fired when the textarea loses focus.
|
|
131
131
|
|
|
132
132
|
**Detail**: `{ textarea: SniceTextareaElement }`
|
package/docs/components/timer.md
CHANGED
|
@@ -33,10 +33,10 @@ The `<snice-timer>` component provides a stopwatch and countdown timer.
|
|
|
33
33
|
|
|
34
34
|
| Event | Detail | Description |
|
|
35
35
|
|-------|--------|-------------|
|
|
36
|
-
|
|
|
37
|
-
|
|
|
38
|
-
|
|
|
39
|
-
|
|
|
36
|
+
| `timer-start` | `{ timer, time }` | Timer started |
|
|
37
|
+
| `timer-stop` | `{ timer, time }` | Timer stopped |
|
|
38
|
+
| `timer-reset` | `{ timer, time }` | Timer reset |
|
|
39
|
+
| `timer-complete` | `{ timer }` | Countdown completed (timer mode only) |
|
|
40
40
|
|
|
41
41
|
## Examples
|
|
42
42
|
|
|
@@ -63,7 +63,7 @@ The `<snice-timer>` component provides a stopwatch and countdown timer.
|
|
|
63
63
|
<script>
|
|
64
64
|
const timer = document.getElementById('timer');
|
|
65
65
|
|
|
66
|
-
timer.addEventListener('
|
|
66
|
+
timer.addEventListener('timer-complete', () => {
|
|
67
67
|
console.log('Time is up!');
|
|
68
68
|
});
|
|
69
69
|
|
|
@@ -83,11 +83,11 @@ The `<snice-timer>` component provides a stopwatch and countdown timer.
|
|
|
83
83
|
<script>
|
|
84
84
|
const timer = document.getElementById('my-timer');
|
|
85
85
|
|
|
86
|
-
timer.addEventListener('
|
|
86
|
+
timer.addEventListener('timer-start', (e) => {
|
|
87
87
|
console.log('Timer started at', e.detail.time);
|
|
88
88
|
});
|
|
89
89
|
|
|
90
|
-
timer.addEventListener('
|
|
90
|
+
timer.addEventListener('timer-stop', (e) => {
|
|
91
91
|
console.log('Timer stopped at', e.detail.time);
|
|
92
92
|
});
|
|
93
93
|
</script>
|
|
@@ -101,7 +101,7 @@ The `<snice-timer>` component provides a stopwatch and countdown timer.
|
|
|
101
101
|
<script>
|
|
102
102
|
const workout = document.getElementById('workout');
|
|
103
103
|
|
|
104
|
-
workout.addEventListener('
|
|
104
|
+
workout.addEventListener('timer-complete', () => {
|
|
105
105
|
alert('Rest time!');
|
|
106
106
|
// Start rest period
|
|
107
107
|
workout.initialTime = 15;
|