{t('nav.files', 'Files')} · OxiCloud
{#if currentDrive?.policies?.read_only} {/if} 0 ? t('files.empty_hidden_title', { n: hiddenCount }, '{{n}} hidden item(s) in this folder') : t('files.empty_title', 'This folder is empty')} emptyHint={hiddenCount > 0 ? t( 'files.empty_hidden_hint', "Files whose name starts with '.' are hidden. Toggle the setting to see them." ) : t('files.empty_hint', 'Drop files here or use the Upload button to add files.')} emptyIcon={hiddenCount > 0 ? 'eye-slash' : undefined} {loading} error={error ?? undefined} selectable shiftRangeSelect showOwner showType showDate dateLabel={t('files.col_modified', 'Modified')} showPath={false} showDotfileToggle enableSystemDrop onsystemdrop={onDrop} systemDropOverlayActive={pageSystemDropOver} groupBys={rlGroupBys} bind:groupBy bind:reversed hasMore={pageCursor !== undefined} onloadmore={loadMore} onreload={(orderBy) => { sortField = orderBy as SortField; }} onopen={rlOnOpen} onfavorite={rlOnFavorite} onshared={(item) => openShare(isFile(item) ? 'file' : 'folder', item.id, item.name)} oncontextmenu={rlOnContextMenu} onselectionchange={(ids) => replaceSet(selected, ids)} isDraggable={rlIsDraggable} isDropTarget={rlIsDropTarget} dropTargetId={dropFolderId} onitemdragstart={rlOnItemDragStart} onitemdragover={rlOnItemDragOver} onitemdragleave={rlOnItemDragLeave} onitemdrop={rlOnItemDrop} > {#snippet emptyAction()} {#if hiddenCount > 0} {/if} {/snippet} {#snippet breadcrumb()} onCrumbDrop(e, target)} dragMime={DRAG_TYPE} /> {/snippet} {#snippet actions()}
{#if uploadMenuOpen}
{/if}
{/snippet} {#snippet batchActions(_sel)} {/snippet}
{#if moveDialog.component} {@const MoveDialog = moveDialog.component} { clearSelection(); void reload(); }} /> {/if} {#if shareDialog.component} {@const ShareDialog = shareDialog.component} { // Optimistic in-place flip so the shared chip appears on // the row without waiting for the next listing refetch. const row = orderedItems.find((it) => it.id === id); if (row) row.is_shared = true; }} /> {/if} {#if fileViewer.component} {@const FileViewer = fileViewer.component} {/if} {#if wopiEditor.component} {@const WopiEditor = wopiEditor.component} {/if} {#if ctxOpen && ctxTarget} {/if}