@makolabs/ripple 1.2.3 → 1.2.8
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/README.md +77 -0
- package/dist/adapters/ai/OpenAIAdapter.js +16 -11
- package/dist/adapters/ai/types.d.ts +3 -3
- package/dist/adapters/storage/BaseAdapter.d.ts +1 -1
- package/dist/adapters/storage/BaseAdapter.js +1 -1
- package/dist/adapters/storage/S3Adapter.js +2 -2
- package/dist/ai/AIChatInterface.svelte +32 -34
- package/dist/ai/AIChatInterface.svelte.d.ts +0 -1
- package/dist/ai/AIChatInterfaceTestWrapper.svelte +26 -0
- package/dist/ai/AIChatInterfaceTestWrapper.svelte.d.ts +17 -0
- package/dist/ai/ChatInput.svelte +7 -15
- package/dist/ai/ChatInput.svelte.d.ts +0 -2
- package/dist/ai/CodeRenderer.svelte +25 -12
- package/dist/ai/ComposeDropdown.svelte +17 -14
- package/dist/ai/MermaidRenderer.svelte +21 -17
- package/dist/ai/MermaidRenderer.svelte.d.ts +0 -1
- package/dist/ai/MessageBox.svelte +10 -7
- package/dist/ai/ThinkingDisplay.svelte +67 -43
- package/dist/ai/ai-chat-interface.d.ts +22 -21
- package/dist/ai/ai-chat-interface.js +8 -7
- package/dist/ai/content-detector.js +2 -2
- package/dist/button/ButtonTestWrapper.svelte +10 -0
- package/dist/button/ButtonTestWrapper.svelte.d.ts +7 -0
- package/dist/charts/Chart.svelte +6 -1
- package/dist/config/ai.js +1 -0
- package/dist/drawer/DrawerTestWrapper.svelte +19 -0
- package/dist/drawer/DrawerTestWrapper.svelte.d.ts +9 -0
- package/dist/drawer/drawer.d.ts +19 -18
- package/dist/drawer/drawer.js +7 -6
- package/dist/elements/accordion/Accordion.svelte +1 -1
- package/dist/elements/accordion/Accordion.svelte.d.ts +1 -1
- package/dist/elements/accordion/AccordionTestWrapper.svelte +21 -0
- package/dist/elements/accordion/AccordionTestWrapper.svelte.d.ts +10 -0
- package/dist/elements/badge/Badge.svelte +5 -4
- package/dist/elements/badge/BadgeTestWrapper.svelte +14 -0
- package/dist/elements/badge/BadgeTestWrapper.svelte.d.ts +9 -0
- package/dist/elements/badge/badge.d.ts +40 -39
- package/dist/elements/badge/badge.js +14 -13
- package/dist/elements/dropdown/Dropdown.svelte +0 -1
- package/dist/elements/pagination/Pagination.svelte +20 -26
- package/dist/elements/progress/Progress.svelte +3 -3
- package/dist/elements/timeline/Timeline.svelte +1 -1
- package/dist/file-browser/FileBrowser.svelte +7 -10
- package/dist/filters/CompactFilters.svelte +3 -3
- package/dist/forms/Checkbox.svelte +0 -1
- package/dist/forms/CheckboxTestWrapper.svelte +8 -0
- package/dist/forms/CheckboxTestWrapper.svelte.d.ts +4 -0
- package/dist/forms/DateRange.svelte +186 -198
- package/dist/forms/Form.svelte +1 -0
- package/dist/forms/Input.svelte +14 -5
- package/dist/forms/InputTestWrapper.svelte +8 -0
- package/dist/forms/InputTestWrapper.svelte.d.ts +4 -0
- package/dist/forms/NumberInput.svelte +2 -2
- package/dist/forms/RadioInputs.svelte +1 -1
- package/dist/forms/RadioPill.svelte +1 -1
- package/dist/forms/Slider.svelte +2 -2
- package/dist/forms/Tags.svelte +3 -3
- package/dist/forms/ToggleTestWrapper.svelte +8 -0
- package/dist/forms/ToggleTestWrapper.svelte.d.ts +7 -0
- package/dist/forms/slider.js +1 -1
- package/dist/header/PageHeader.svelte +2 -1
- package/dist/header/breadcrumbs.d.ts +47 -33
- package/dist/header/breadcrumbs.js +12 -11
- package/dist/index.d.ts +3 -2
- package/dist/index.js +2 -0
- package/dist/layout/activity-list/ActivityList.svelte +9 -11
- package/dist/layout/card/CardTestWrapper.svelte +15 -0
- package/dist/layout/card/CardTestWrapper.svelte.d.ts +7 -0
- package/dist/layout/card/RankedCard.svelte +2 -3
- package/dist/layout/navbar/navbar.d.ts +19 -18
- package/dist/layout/navbar/navbar.js +7 -6
- package/dist/layout/sidebar/NavGroup.svelte +1 -0
- package/dist/layout/table/Cells.svelte +5 -5
- package/dist/layout/table/Table.svelte +8 -8
- package/dist/layout/table/table.d.ts +28 -24
- package/dist/layout/table/table.js +14 -13
- package/dist/modal/Modal.svelte +1 -1
- package/dist/modal/ModalTestWrapper.svelte +20 -0
- package/dist/modal/ModalTestWrapper.svelte.d.ts +8 -0
- package/dist/modal/modal.d.ts +1 -20
- package/dist/pipeline/Pipeline.svelte +29 -17
- package/dist/user-management/README.md +417 -0
- package/dist/user-management/UserManagement.svelte +245 -0
- package/dist/user-management/UserManagement.svelte.d.ts +4 -0
- package/dist/user-management/UserManagementTestWrapper.svelte +33 -0
- package/dist/user-management/UserManagementTestWrapper.svelte.d.ts +13 -0
- package/dist/user-management/UserModal.svelte +285 -0
- package/dist/user-management/UserModal.svelte.d.ts +4 -0
- package/dist/user-management/UserModalTestWrapper.svelte +22 -0
- package/dist/user-management/UserModalTestWrapper.svelte.d.ts +7 -0
- package/dist/user-management/UserTable.svelte +219 -0
- package/dist/user-management/UserTable.svelte.d.ts +4 -0
- package/dist/user-management/UserTableTestWrapper.svelte +41 -0
- package/dist/user-management/UserTableTestWrapper.svelte.d.ts +7 -0
- package/dist/user-management/UserViewModal.svelte +276 -0
- package/dist/user-management/UserViewModal.svelte.d.ts +4 -0
- package/dist/user-management/UserViewModalTestWrapper.svelte +22 -0
- package/dist/user-management/UserViewModalTestWrapper.svelte.d.ts +7 -0
- package/dist/user-management/adapters/UserManagement.remote.d.ts +68 -0
- package/dist/user-management/adapters/UserManagement.remote.js +487 -0
- package/dist/user-management/adapters/index.d.ts +10 -0
- package/dist/user-management/adapters/index.js +12 -0
- package/dist/user-management/adapters/mockUserManagement.d.ts +70 -0
- package/dist/user-management/adapters/mockUserManagement.js +187 -0
- package/dist/user-management/adapters/types.d.ts +24 -0
- package/dist/user-management/adapters/types.js +7 -0
- package/dist/user-management/index.d.ts +12 -0
- package/dist/user-management/index.js +11 -0
- package/dist/user-management/user-management.d.ts +126 -0
- package/dist/user-management/user-management.js +42 -0
- package/package.json +4 -1
- package/dist/types/markdown.d.ts +0 -14
- package/dist/types/variants.d.ts +0 -1
- package/dist/types/variants.js +0 -1
|
@@ -125,15 +125,11 @@
|
|
|
125
125
|
|
|
126
126
|
// Computed values
|
|
127
127
|
const totalPages = $derived(Math.ceil(validTotalItems / validPageSize));
|
|
128
|
-
const startItem = $derived(
|
|
129
|
-
Math.min((currentPage - 1) * validPageSize + 1, validTotalItems)
|
|
130
|
-
);
|
|
128
|
+
const startItem = $derived(Math.min((currentPage - 1) * validPageSize + 1, validTotalItems));
|
|
131
129
|
const endItem = $derived(Math.min(currentPage * validPageSize, validTotalItems));
|
|
132
130
|
|
|
133
131
|
// Ensure currentPage is within valid range
|
|
134
|
-
const validCurrentPage = $derived(
|
|
135
|
-
Math.max(1, Math.min(currentPage, totalPages || 1))
|
|
136
|
-
);
|
|
132
|
+
const validCurrentPage = $derived(Math.max(1, Math.min(currentPage, totalPages || 1)));
|
|
137
133
|
|
|
138
134
|
// Navigation functions
|
|
139
135
|
function goToPage(page: number) {
|
|
@@ -244,21 +240,19 @@
|
|
|
244
240
|
}
|
|
245
241
|
|
|
246
242
|
// Determine if we should show pagination
|
|
247
|
-
const shouldShowPagination = $derived(
|
|
248
|
-
|
|
249
|
-
);
|
|
250
|
-
const shouldShowControls = $derived(
|
|
251
|
-
!hideWhenSinglePage || totalPages > 1
|
|
252
|
-
);
|
|
243
|
+
const shouldShowPagination = $derived(!hideWhenNoItems || validTotalItems > 0);
|
|
244
|
+
const shouldShowControls = $derived(!hideWhenSinglePage || totalPages > 1);
|
|
253
245
|
|
|
254
246
|
// Default classes using ripple-ui design system
|
|
255
247
|
const defaultWrapperClass = 'flex items-center justify-between p-4';
|
|
256
248
|
const defaultInfoClass = 'text-default-500 text-sm';
|
|
257
|
-
const defaultButtonClass =
|
|
249
|
+
const defaultButtonClass =
|
|
250
|
+
'relative inline-flex items-center rounded-md px-2 py-1 text-sm font-medium';
|
|
258
251
|
const defaultActiveButtonClass = 'bg-primary-100 text-primary-700';
|
|
259
252
|
const defaultInactiveButtonClass = 'text-default-700 hover:bg-default-100';
|
|
260
253
|
const defaultDisabledButtonClass = 'text-default-300 cursor-not-allowed';
|
|
261
|
-
const defaultPageButtonClass =
|
|
254
|
+
const defaultPageButtonClass =
|
|
255
|
+
'relative inline-flex items-center rounded-md px-3 py-1 text-sm font-medium';
|
|
262
256
|
</script>
|
|
263
257
|
|
|
264
258
|
{#if shouldShowPagination}
|
|
@@ -276,9 +270,9 @@
|
|
|
276
270
|
)}
|
|
277
271
|
value={pageSize}
|
|
278
272
|
onchange={handlePageSizeChange}
|
|
279
|
-
|
|
273
|
+
{disabled}
|
|
280
274
|
>
|
|
281
|
-
{#each pageSizeOptions as option}
|
|
275
|
+
{#each pageSizeOptions as option (option)}
|
|
282
276
|
<option value={option}>{option}</option>
|
|
283
277
|
{/each}
|
|
284
278
|
</select>
|
|
@@ -330,11 +324,11 @@
|
|
|
330
324
|
{#if template === 'full' && showPageNumbers}
|
|
331
325
|
{#if totalPages <= maxVisiblePages}
|
|
332
326
|
<!-- Show all pages if total is less than or equal to maxVisiblePages -->
|
|
333
|
-
{#each Array(totalPages) as
|
|
327
|
+
{#each Array(totalPages) as page, i (page + '-' + i)}
|
|
334
328
|
{@const pageNum = i + 1}
|
|
335
329
|
<button
|
|
336
330
|
onclick={() => goToPage(pageNum)}
|
|
337
|
-
|
|
331
|
+
{disabled}
|
|
338
332
|
class={cn(
|
|
339
333
|
defaultPageButtonClass,
|
|
340
334
|
buttonClass,
|
|
@@ -353,12 +347,13 @@
|
|
|
353
347
|
<!-- Smart pagination for many pages -->
|
|
354
348
|
{@const pageNumbers = getPageNumbers()}
|
|
355
349
|
{@const showFirst = alwaysShowFirstLast && pageNumbers[0] > 1}
|
|
356
|
-
{@const showLast =
|
|
350
|
+
{@const showLast =
|
|
351
|
+
alwaysShowFirstLast && pageNumbers[pageNumbers.length - 1] < totalPages}
|
|
357
352
|
|
|
358
353
|
{#if showFirst}
|
|
359
354
|
<button
|
|
360
355
|
onclick={() => goToPage(1)}
|
|
361
|
-
|
|
356
|
+
{disabled}
|
|
362
357
|
class={cn(
|
|
363
358
|
defaultPageButtonClass,
|
|
364
359
|
buttonClass,
|
|
@@ -373,14 +368,14 @@
|
|
|
373
368
|
1
|
|
374
369
|
</button>
|
|
375
370
|
{#if pageNumbers[0] > 2}
|
|
376
|
-
<span class="px-2 text-sm
|
|
371
|
+
<span class="text-default-400 px-2 text-sm">...</span>
|
|
377
372
|
{/if}
|
|
378
373
|
{/if}
|
|
379
374
|
|
|
380
|
-
{#each pageNumbers as pageNum}
|
|
375
|
+
{#each pageNumbers as pageNum (pageNum)}
|
|
381
376
|
<button
|
|
382
377
|
onclick={() => goToPage(pageNum)}
|
|
383
|
-
|
|
378
|
+
{disabled}
|
|
384
379
|
class={cn(
|
|
385
380
|
defaultPageButtonClass,
|
|
386
381
|
buttonClass,
|
|
@@ -398,11 +393,11 @@
|
|
|
398
393
|
|
|
399
394
|
{#if showLast}
|
|
400
395
|
{#if pageNumbers[pageNumbers.length - 1] < totalPages - 1}
|
|
401
|
-
<span class="px-2 text-sm
|
|
396
|
+
<span class="text-default-400 px-2 text-sm">...</span>
|
|
402
397
|
{/if}
|
|
403
398
|
<button
|
|
404
399
|
onclick={() => goToPage(totalPages)}
|
|
405
|
-
|
|
400
|
+
{disabled}
|
|
406
401
|
class={cn(
|
|
407
402
|
defaultPageButtonClass,
|
|
408
403
|
buttonClass,
|
|
@@ -461,4 +456,3 @@
|
|
|
461
456
|
{/if}
|
|
462
457
|
</div>
|
|
463
458
|
{/if}
|
|
464
|
-
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { cn } from '../../helper/cls.js';
|
|
3
3
|
import { Color, Size } from '../../variants.js';
|
|
4
|
-
import type { ProgressProps,
|
|
4
|
+
import type { ProgressProps, VariantColors } from '../../index.js';
|
|
5
5
|
|
|
6
6
|
let {
|
|
7
7
|
value,
|
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
aria-valuemax="100"
|
|
105
105
|
>
|
|
106
106
|
{#if segments}
|
|
107
|
-
{#each segmentPercentages as segment}
|
|
107
|
+
{#each segmentPercentages as segment (segment.label || segment.value)}
|
|
108
108
|
{#if segment.percentage > 0}
|
|
109
109
|
<div
|
|
110
110
|
class={cn(getColorClass(segment.color), barClass)}
|
|
@@ -120,7 +120,7 @@
|
|
|
120
120
|
|
|
121
121
|
{#if segments && (showLabels || showValues)}
|
|
122
122
|
<div class="mt-1 flex justify-between">
|
|
123
|
-
{#each segmentPercentages as segment}
|
|
123
|
+
{#each segmentPercentages as segment (segment.label || segment.value)}
|
|
124
124
|
{#if segment.percentage > 0}
|
|
125
125
|
<div class={labelTextClass}>
|
|
126
126
|
{#if showLabels && segment.label}
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
import type { TableColumn, FileBrowserProps } from '../index.js';
|
|
5
5
|
import { formatDate } from '../utils/dateUtils.js';
|
|
6
6
|
import type {
|
|
7
|
-
StorageAdapter,
|
|
8
7
|
FileItem,
|
|
9
8
|
Breadcrumb,
|
|
10
9
|
FileAction,
|
|
@@ -198,7 +197,9 @@
|
|
|
198
197
|
const folderFile = files.find((file) => file.key === folderPath);
|
|
199
198
|
if (folderFile && folderFile.name && adapter.getName() === 'Google Drive') {
|
|
200
199
|
// Assuming the adapter might have a setFolderName method
|
|
201
|
-
(adapter
|
|
200
|
+
if ('setFolderName' in adapter && typeof adapter.setFolderName === 'function') {
|
|
201
|
+
adapter.setFolderName(folderPath, folderFile.name);
|
|
202
|
+
}
|
|
202
203
|
}
|
|
203
204
|
|
|
204
205
|
// Store the currently selected files before navigation
|
|
@@ -416,13 +417,11 @@
|
|
|
416
417
|
// Check if any single action allows this file
|
|
417
418
|
const hasAllowedAction = actions.some((action) => {
|
|
418
419
|
// Only check single file actions for individual file selection
|
|
419
|
-
if ('action' in action && typeof action.action === 'function'
|
|
420
|
+
if ('action' in action && typeof action.action === 'function') {
|
|
420
421
|
return action.isAllowed(item);
|
|
421
422
|
}
|
|
422
423
|
return false;
|
|
423
|
-
});
|
|
424
|
-
|
|
425
|
-
// Always allow folders to be selected (for recursive selection)
|
|
424
|
+
}); // Always allow folders to be selected (for recursive selection)
|
|
426
425
|
return item.isFolder || hasAllowedAction;
|
|
427
426
|
});
|
|
428
427
|
|
|
@@ -446,9 +445,6 @@
|
|
|
446
445
|
newFolders.forEach((folder) => {
|
|
447
446
|
handleSelectFolder(folder);
|
|
448
447
|
});
|
|
449
|
-
|
|
450
|
-
// Update select all state
|
|
451
|
-
const nonFolderFiles = displayFiles.filter((file) => !file.isFolder);
|
|
452
448
|
}
|
|
453
449
|
|
|
454
450
|
async function fetchFilesFromFolder(folderKey: string, folderName: string) {
|
|
@@ -493,6 +489,7 @@
|
|
|
493
489
|
if (!folder.isFolder) return;
|
|
494
490
|
|
|
495
491
|
isFetchingRecursively = true;
|
|
492
|
+
// eslint-disable-next-line svelte/prefer-svelte-reactivity
|
|
496
493
|
processedFolders = new Set();
|
|
497
494
|
// Don't clear fileQueue entirely, it will lose files from other folders
|
|
498
495
|
// Store existing fileQueue
|
|
@@ -727,7 +724,7 @@
|
|
|
727
724
|
<span class="text-default-400 mx-1 text-sm">/</span>
|
|
728
725
|
|
|
729
726
|
<div class="flex flex-wrap items-center">
|
|
730
|
-
{#each breadcrumbs as crumb, i}
|
|
727
|
+
{#each breadcrumbs as crumb, i (crumb.path)}
|
|
731
728
|
{#if i > 0}
|
|
732
729
|
<span class="text-default-400 mx-1 text-sm">/</span>
|
|
733
730
|
{/if}
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
{#if !isExpanded}
|
|
101
101
|
<!-- Summary of selected filters when collapsed -->
|
|
102
102
|
<div class={cn('flex flex-wrap gap-2', summaryClass)}>
|
|
103
|
-
{#each filterGroups as group}
|
|
103
|
+
{#each filterGroups as group (group.label)}
|
|
104
104
|
{#if group.tabs.length > 0}
|
|
105
105
|
<div
|
|
106
106
|
class="bg-primary-50 text-primary-700 border-primary-200 flex items-center gap-1 rounded-full border px-3 py-1 text-xs"
|
|
@@ -113,7 +113,7 @@
|
|
|
113
113
|
</div>
|
|
114
114
|
{:else}
|
|
115
115
|
<div class={cn('flex flex-col gap-2', expandedClass)}>
|
|
116
|
-
{#each filterGroups as group, index}
|
|
116
|
+
{#each filterGroups as group, index (group.label)}
|
|
117
117
|
{#if group.tabs.length > 0}
|
|
118
118
|
<div
|
|
119
119
|
class={cn(
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
{group.label}
|
|
126
126
|
</div>
|
|
127
127
|
<div class="flex flex-wrap gap-2">
|
|
128
|
-
{#each group.tabs as tab}
|
|
128
|
+
{#each group.tabs as tab (tab.value)}
|
|
129
129
|
<button
|
|
130
130
|
onclick={() => group.onChange(tab.value)}
|
|
131
131
|
class={cn(
|