+ {#each items as item}
+ {@const metaPreview = getKnowledgeMetaPreview(item)}
+
{
+ if (shouldIgnoreRowClick(e.target)) return;
+ openKnowledge(item);
+ }}
+ on:keydown={(e) => {
+ if (e.currentTarget !== e.target) return;
+ if (e.key === 'Enter' || e.key === ' ') {
+ e.preventDefault();
+ openKnowledge(item);
+ }
+ }}
+ >
+
+
+
+
+
+
+ {item.name}
+
+
+
+ {#if item?.meta?.source === 'external'}
-
-
-
- {:else}
-
-
-
- {/if}
+ {/if}
- {#if !item?.write_access && item?.meta?.source !== 'external'}
-
+ {#if !item?.write_access && item?.meta?.source !== 'external'}
-
- {/if}
-
+ {/if}
- {#if item?.write_access || $user?.role === 'admin'}
-
-
- {
- exportHandler(item);
- }
- : null}
- on:delete={() => {
- selectedItem = item;
- showDeleteConfirm = true;
- }}
- />
-
-
- {/if}
-
-
-
-
-
-
-
-
-
-
- {$i18n.t('Updated')}
- {dayjs(item.updated_at * 1000).fromNow()}
-
-
-
-
-
- {$i18n.t('By {{name}}', {
- name: capitalizeFirstLetter(
- item?.user?.name ?? item?.user?.email ?? $i18n.t('Deleted User')
- )
- })}
+
+
+ {dayjs(item.updated_at * 1000).fromNow()}
+
+
+ {#if metaPreview}
+
+
+ {metaPreview}
+
+
+ {/if}
+
+
+
+
+ {capitalizeFirstLetter(
+ item?.user?.name ?? item?.user?.email ?? $i18n.t('Deleted User')
+ )}
+
+
+
+
+ {#if item?.write_access || $user?.role === 'admin'}
+
+ {
+ exportHandler(item);
+ }
+ : null}
+ on:delete={() => {
+ selectedItem = item;
+ showDeleteConfirm = true;
+ }}
+ />
+
+ {/if}