@makolabs/ripple 3.5.0 → 3.6.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.
@@ -316,10 +316,18 @@
316
316
  return scopeData.length > 0 && scopeData.every((r) => isRowSelected(r));
317
317
  }
318
318
 
319
+ // Row click toggles expansion only when nothing else claims the click —
320
+ // an explicit `onrowclick` (e.g. navigation) or selection takes priority,
321
+ // leaving the chevron as the sole expand control in those modes.
322
+ const rowClickExpands = $derived(expandable && !!expandedContent && !onrowclick && !selectable);
323
+
319
324
  function handleRowClick(row: DataRow, index: number) {
320
325
  if (selectable && canSelectRow(row)) {
321
326
  toggleRowSelection(row);
322
327
  }
328
+ if (rowClickExpands) {
329
+ toggleRowExpanded(row, index);
330
+ }
323
331
  onrowclick?.(row, index);
324
332
  }
325
333
 
@@ -500,7 +508,8 @@
500
508
  <tr
501
509
  class={cn(trClasses, rowClass(row, rowIndex), {
502
510
  'bg-primary-100': selectable && isRowSelected(row),
503
- 'cursor-pointer': onrowclick || (selectable && canSelectRow(row))
511
+ 'cursor-pointer':
512
+ onrowclick || rowClickExpands || (selectable && canSelectRow(row))
504
513
  })}
505
514
  onclick={() => handleRowClick(row, rowIndex)}
506
515
  aria-selected={selectable && isRowSelected(row)}
@@ -112,7 +112,7 @@
112
112
  <div class="border-default-300 bg-default-50 flex items-center gap-2 rounded-lg border px-3 py-2">
113
113
  <code
114
114
  class="text-default-900 min-w-0 flex-1 font-mono text-sm break-all"
115
- data-testid={testId ? `${testId}-value` : undefined}
115
+ data-testid={testId ? `${testId}-input` : undefined}
116
116
  >
117
117
  {display}
118
118
  </code>
@@ -122,6 +122,7 @@
122
122
  onclick={() => (revealed = !revealed)}
123
123
  class="text-default-500 hover:text-default-700 shrink-0 cursor-pointer"
124
124
  aria-label={revealed ? 'Hide API key' : 'Show API key'}
125
+ data-testid={testId ? `toggle-${testId}-visibility` : undefined}
125
126
  >
126
127
  {#if revealed}
127
128
  <svg class="h-5 w-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
@@ -267,7 +267,7 @@
267
267
  bind:value={formData.first_name}
268
268
  errors={formErrors.first_name ? [formErrors.first_name] : []}
269
269
  required
270
- testId="first-name-input"
270
+ testId="first-name"
271
271
  />
272
272
  <Input
273
273
  name="last_name"
@@ -276,7 +276,7 @@
276
276
  bind:value={formData.last_name}
277
277
  errors={formErrors.last_name ? [formErrors.last_name] : []}
278
278
  required
279
- testId="last-name-input"
279
+ testId="last-name"
280
280
  />
281
281
  </div>
282
282
 
@@ -288,7 +288,7 @@
288
288
  bind:value={formData.email_addresses![0].email_address}
289
289
  errors={formErrors.email ? [formErrors.email] : []}
290
290
  required
291
- testId="email-input"
291
+ testId="email"
292
292
  />
293
293
  </div>
294
294
 
@@ -349,6 +349,7 @@
349
349
  <div class="space-y-2">
350
350
  <ApiKeyField
351
351
  value={apiKey}
352
+ testId="api-key"
352
353
  label="Mako API Key"
353
354
  error={formErrors.apiKey}
354
355
  helperText={formErrors.apiKey
@@ -359,7 +360,7 @@
359
360
  label: 'Verify',
360
361
  loading: verifyingToken,
361
362
  onclick: handleVerifyToken,
362
- testId: 'verify-token-button'
363
+ testId: 'verify-token'
363
364
  }
364
365
  : undefined}
365
366
  regenerate={adapter?.generateApiKey
@@ -368,7 +369,7 @@
368
369
  loading: regeneratingApiKey,
369
370
  disabled: !canRegenerate,
370
371
  onclick: handleRegenerateApiKey,
371
- testId: 'regenerate-api-key-button'
372
+ testId: 'regenerate-api-key'
372
373
  }
373
374
  : undefined}
374
375
  />
@@ -405,13 +406,7 @@
405
406
  </form>
406
407
 
407
408
  {#snippet footer()}
408
- <Button
409
- variant="outline"
410
- onclick={handleClose}
411
- disabled={saving}
412
- type="button"
413
- testId="cancel-button"
414
- >
409
+ <Button variant="outline" onclick={handleClose} disabled={saving} type="button" testId="cancel">
415
410
  Cancel
416
411
  </Button>
417
412
  <Button
@@ -420,7 +415,7 @@
420
415
  onclick={() => formElement?.requestSubmit()}
421
416
  disabled={saving}
422
417
  loading={saving}
423
- testId="save-user-button"
418
+ testId="save-user"
424
419
  >
425
420
  {mode === 'create' ? 'Create user' : 'Save changes'}
426
421
  </Button>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@makolabs/ripple",
3
- "version": "3.5.0",
3
+ "version": "3.6.0",
4
4
  "description": "Simple Svelte 5 powered component library ✨",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "repository": {
@@ -134,6 +134,13 @@
134
134
  "lint-staged": {
135
135
  "*.{js,ts,svelte,css,md,json}": "prettier --write"
136
136
  },
137
+ "overrides": {
138
+ "ws": ">=8.20.1",
139
+ "uuid": ">=11.1.1",
140
+ "devalue": ">=5.8.1",
141
+ "fast-xml-builder": ">=1.1.7",
142
+ "esbuild": ">=0.28.1"
143
+ },
137
144
  "dependencies": {
138
145
  "@aws-sdk/client-s3": "^3.1029.0",
139
146
  "@aws-sdk/s3-request-presigner": "^3.1029.0",