@open-mercato/documents 0.7.1-develop.7152.1.a69e92f9c9 → 0.7.1-develop.7154.1.981330c924
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/dist/modules/documents/backend/documents/DocumentsTable.js +1 -0
- package/dist/modules/documents/backend/documents/DocumentsTable.js.map +2 -2
- package/dist/modules/documents/backend/documents/templates/TemplatesTable.js +1 -0
- package/dist/modules/documents/backend/documents/templates/TemplatesTable.js.map +2 -2
- package/package.json +6 -6
- package/src/modules/documents/backend/documents/DocumentsTable.tsx +1 -0
- package/src/modules/documents/backend/documents/templates/TemplatesTable.tsx +1 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/modules/documents/backend/documents/DocumentsTable.tsx"],
|
|
4
|
-
"sourcesContent": ["\"use client\"\n\nimport * as React from 'react'\nimport Link from 'next/link'\nimport { useRouter } from 'next/navigation'\nimport { Star } from 'lucide-react'\nimport type { LegacyColumnDef as ColumnDef } from '@tanstack/react-table/legacy'\nimport { DataTable } from '@open-mercato/ui/backend/DataTable'\nimport { RowActions } from '@open-mercato/ui/backend/RowActions'\nimport type { RowActionItem } from '@open-mercato/ui/backend/RowActions'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { IconButton } from '@open-mercato/ui/primitives/icon-button'\nimport { LinkButton } from '@open-mercato/ui/primitives/link-button'\nimport { Badge } from '@open-mercato/ui/primitives/badge'\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@open-mercato/ui/primitives/select'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport { DOCUMENTS_ENTITY_IDS } from '../../lib/constants'\nimport { formatDateTime } from './documentUi'\nimport type { DocumentRow } from './documentsListTypes'\n\nexport type DocumentsArchivedFilter = 'exclude' | 'include' | 'only'\n\ntype DocumentsTableProps = {\n title: string\n rows: DocumentRow[]\n isLoading: boolean\n isCreating: boolean\n search: string\n page: number\n pageSize: number\n total: number\n totalPages: number\n totalIsCapped: boolean\n hasTemplates: boolean\n canCreateDocument: boolean\n canInstantiateTemplate: boolean\n canManageTemplates: boolean\n onSearchChange: (search: string) => void\n onPageChange: (page: number) => void\n onPageSizeChange: (pageSize: number) => void\n onRefresh: () => void\n onCreate: () => void\n onNewFromTemplate: () => void\n onShare: (row: DocumentRow) => void\n onMove: (row: DocumentRow) => void\n onDelete: (row: DocumentRow) => void\n archivedFilter: DocumentsArchivedFilter\n favoritesOnly: boolean\n onArchivedFilterChange: (value: DocumentsArchivedFilter) => void\n onFavoritesOnlyChange: (value: boolean) => void\n onToggleFavorite: (row: DocumentRow) => void\n onDuplicate: (row: DocumentRow) => void\n onArchiveToggle: (row: DocumentRow) => void\n}\n\nexport function DocumentsTable(props: DocumentsTableProps) {\n const t = useT()\n const router = useRouter()\n const columns = React.useMemo<ColumnDef<DocumentRow>[]>(() => [\n {\n id: 'favorite', header: '', meta: { alwaysVisible: true, maxWidth: '48px' },\n cell: ({ row }) => (\n <IconButton\n type=\"button\"\n variant=\"ghost\"\n aria-pressed={row.original.isFavorite}\n aria-label={t(row.original.isFavorite ? 'documents.actions.unfavorite' : 'documents.actions.favorite')}\n onClick={(event) => {\n event.stopPropagation()\n props.onToggleFavorite(row.original)\n }}\n >\n <Star className={row.original.isFavorite ? 'fill-current text-status-warning-icon' : 'text-muted-foreground'} />\n </IconButton>\n ),\n },\n {\n accessorKey: 'title', header: t('documents.columns.title'), meta: { alwaysVisible: true, maxWidth: '260px', truncate: true },\n cell: ({ row }) => (\n <span className=\"flex items-center gap-2\">\n <Link href={`/backend/documents/${row.original.id}`} className=\"font-medium hover:underline\">{row.original.title}</Link>\n {row.original.archivedAt ? <Badge variant=\"outline\">{t('documents.list.archivedBadge')}</Badge> : null}\n </span>\n ),\n },\n {\n accessorKey: 'folderName', header: t('documents.columns.folder'), meta: { maxWidth: '180px', truncate: true },\n cell: ({ row }) => row.original.folderName ?? <span className=\"text-sm text-muted-foreground\">{t('documents.folders.none')}</span>,\n },\n { accessorKey: 'ownerLabel', header: t('documents.columns.owner'), meta: { maxWidth: '220px', truncate: true } },\n { accessorKey: 'sharedWithCount', header: t('documents.columns.sharedWith') },\n {\n accessorKey: 'updatedAt', header: t('documents.columns.updatedAt'), meta: { maxWidth: '180px' },\n cell: ({ row }) => <span className=\"text-sm\">{formatDateTime(row.original.updatedAt, t('documents.list.noValue'))}</span>,\n },\n ], [t, props.onToggleFavorite])\n // A fragment, not a nested flex box: the DataTable header owns the wrapping\n // row, so on narrow layouts the refresh control and these buttons wrap as\n // one group instead of a lone refresh icon above a second left-aligned row.\n const actions = (\n <>\n <Button\n type=\"button\"\n variant={props.favoritesOnly ? 'secondary' : 'outline'}\n aria-pressed={props.favoritesOnly}\n onClick={() => props.onFavoritesOnlyChange(!props.favoritesOnly)}\n >\n <Star />{t('documents.list.filters.favorites')}\n </Button>\n <Select value={props.archivedFilter} onValueChange={(value) => props.onArchivedFilterChange(value as DocumentsArchivedFilter)}>\n <SelectTrigger className=\"w-36\" aria-label={t('documents.list.filters.archived.label')}>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"exclude\">{t('documents.list.filters.archived.active')}</SelectItem>\n <SelectItem value=\"include\">{t('documents.list.filters.archived.all')}</SelectItem>\n <SelectItem value=\"only\">{t('documents.list.filters.archived.archivedOnly')}</SelectItem>\n </SelectContent>\n </Select>\n {props.canManageTemplates ? <LinkButton asChild variant=\"gray\"><Link href=\"/backend/documents/templates\">{t('documents.templates.actions.manage')}</Link></LinkButton> : null}\n {props.hasTemplates && props.canInstantiateTemplate ? <Button type=\"button\" variant=\"outline\" onClick={props.onNewFromTemplate}>{t('documents.templates.instantiate.title')}</Button> : null}\n {props.canCreateDocument ? <Button type=\"button\" onClick={props.onCreate} disabled={props.isCreating}>{t('documents.actions.create')}</Button> : null}\n </>\n )\n return (\n <DataTable<DocumentRow>\n title={props.title}\n actions={actions}\n refreshButton={{ label: t('documents.actions.refresh'), onRefresh: props.onRefresh, isRefreshing: props.isLoading }}\n columns={columns}\n data={props.rows}\n isLoading={props.isLoading}\n searchValue={props.search}\n onSearchChange={props.onSearchChange}\n searchPlaceholder={t('documents.list.searchPlaceholder')}\n emptyState={t('documents.list.empty')}\n entityId={DOCUMENTS_ENTITY_IDS.document}\n extensionTableId=\"documents.documents.list\"\n onRowClick={(row) => router.push(`/backend/documents/${row.id}`)}\n rowClickActionIds={['open']}\n stickyActionsColumn\n pagination={{\n page: props.page, pageSize: props.pageSize, total: props.total, totalPages: props.totalPages,\n totalIsCapped: props.totalIsCapped,\n onPageChange: props.onPageChange, onPageSizeChange: props.onPageSizeChange,\n }}\n rowActions={(row) => {\n const items: RowActionItem[] = [{ id: 'open', label: t('documents.actions.open'), onSelect: () => router.push(`/backend/documents/${row.id}`) }]\n if (row.capabilities.canShare) items.push({ id: 'share', label: t('documents.actions.share'), onSelect: () => props.onShare(row) })\n if (row.capabilities.canEdit) items.push({ id: 'move', label: t('documents.folders.actions.moveDocument'), onSelect: () => props.onMove(row) })\n if (row.capabilities.canDuplicate) items.push({ id: 'duplicate', label: t('documents.actions.duplicate'), onSelect: () => props.onDuplicate(row) })\n if (row.capabilities.canArchive) {\n items.push({\n id: row.archivedAt ? 'unarchive' : 'archive',\n label: t(row.archivedAt ? 'documents.actions.unarchive' : 'documents.actions.archive'),\n onSelect: () => props.onArchiveToggle(row),\n })\n }\n if (row.capabilities.canDelete) items.push({ id: 'delete', label: t('documents.actions.delete'), destructive: true, onSelect: () => props.onDelete(row) })\n return <RowActions items={items} />\n }}\n />\n )\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["\"use client\"\n\nimport * as React from 'react'\nimport Link from 'next/link'\nimport { useRouter } from 'next/navigation'\nimport { Star } from 'lucide-react'\nimport type { LegacyColumnDef as ColumnDef } from '@tanstack/react-table/legacy'\nimport { DataTable } from '@open-mercato/ui/backend/DataTable'\nimport { RowActions } from '@open-mercato/ui/backend/RowActions'\nimport type { RowActionItem } from '@open-mercato/ui/backend/RowActions'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { IconButton } from '@open-mercato/ui/primitives/icon-button'\nimport { LinkButton } from '@open-mercato/ui/primitives/link-button'\nimport { Badge } from '@open-mercato/ui/primitives/badge'\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@open-mercato/ui/primitives/select'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport { DOCUMENTS_ENTITY_IDS } from '../../lib/constants'\nimport { formatDateTime } from './documentUi'\nimport type { DocumentRow } from './documentsListTypes'\n\nexport type DocumentsArchivedFilter = 'exclude' | 'include' | 'only'\n\ntype DocumentsTableProps = {\n title: string\n rows: DocumentRow[]\n isLoading: boolean\n isCreating: boolean\n search: string\n page: number\n pageSize: number\n total: number\n totalPages: number\n totalIsCapped: boolean\n hasTemplates: boolean\n canCreateDocument: boolean\n canInstantiateTemplate: boolean\n canManageTemplates: boolean\n onSearchChange: (search: string) => void\n onPageChange: (page: number) => void\n onPageSizeChange: (pageSize: number) => void\n onRefresh: () => void\n onCreate: () => void\n onNewFromTemplate: () => void\n onShare: (row: DocumentRow) => void\n onMove: (row: DocumentRow) => void\n onDelete: (row: DocumentRow) => void\n archivedFilter: DocumentsArchivedFilter\n favoritesOnly: boolean\n onArchivedFilterChange: (value: DocumentsArchivedFilter) => void\n onFavoritesOnlyChange: (value: boolean) => void\n onToggleFavorite: (row: DocumentRow) => void\n onDuplicate: (row: DocumentRow) => void\n onArchiveToggle: (row: DocumentRow) => void\n}\n\nexport function DocumentsTable(props: DocumentsTableProps) {\n const t = useT()\n const router = useRouter()\n const columns = React.useMemo<ColumnDef<DocumentRow>[]>(() => [\n {\n id: 'favorite', header: '', meta: { alwaysVisible: true, maxWidth: '48px' },\n cell: ({ row }) => (\n <IconButton\n type=\"button\"\n variant=\"ghost\"\n aria-pressed={row.original.isFavorite}\n aria-label={t(row.original.isFavorite ? 'documents.actions.unfavorite' : 'documents.actions.favorite')}\n onClick={(event) => {\n event.stopPropagation()\n props.onToggleFavorite(row.original)\n }}\n >\n <Star className={row.original.isFavorite ? 'fill-current text-status-warning-icon' : 'text-muted-foreground'} />\n </IconButton>\n ),\n },\n {\n accessorKey: 'title', header: t('documents.columns.title'), meta: { alwaysVisible: true, maxWidth: '260px', truncate: true },\n cell: ({ row }) => (\n <span className=\"flex items-center gap-2\">\n <Link href={`/backend/documents/${row.original.id}`} className=\"font-medium hover:underline\">{row.original.title}</Link>\n {row.original.archivedAt ? <Badge variant=\"outline\">{t('documents.list.archivedBadge')}</Badge> : null}\n </span>\n ),\n },\n {\n accessorKey: 'folderName', header: t('documents.columns.folder'), meta: { maxWidth: '180px', truncate: true },\n cell: ({ row }) => row.original.folderName ?? <span className=\"text-sm text-muted-foreground\">{t('documents.folders.none')}</span>,\n },\n { accessorKey: 'ownerLabel', header: t('documents.columns.owner'), meta: { maxWidth: '220px', truncate: true } },\n { accessorKey: 'sharedWithCount', header: t('documents.columns.sharedWith') },\n {\n accessorKey: 'updatedAt', header: t('documents.columns.updatedAt'), meta: { maxWidth: '180px' },\n cell: ({ row }) => <span className=\"text-sm\">{formatDateTime(row.original.updatedAt, t('documents.list.noValue'))}</span>,\n },\n ], [t, props.onToggleFavorite])\n // A fragment, not a nested flex box: the DataTable header owns the wrapping\n // row, so on narrow layouts the refresh control and these buttons wrap as\n // one group instead of a lone refresh icon above a second left-aligned row.\n const actions = (\n <>\n <Button\n type=\"button\"\n variant={props.favoritesOnly ? 'secondary' : 'outline'}\n aria-pressed={props.favoritesOnly}\n onClick={() => props.onFavoritesOnlyChange(!props.favoritesOnly)}\n >\n <Star />{t('documents.list.filters.favorites')}\n </Button>\n <Select value={props.archivedFilter} onValueChange={(value) => props.onArchivedFilterChange(value as DocumentsArchivedFilter)}>\n <SelectTrigger className=\"w-36\" aria-label={t('documents.list.filters.archived.label')}>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"exclude\">{t('documents.list.filters.archived.active')}</SelectItem>\n <SelectItem value=\"include\">{t('documents.list.filters.archived.all')}</SelectItem>\n <SelectItem value=\"only\">{t('documents.list.filters.archived.archivedOnly')}</SelectItem>\n </SelectContent>\n </Select>\n {props.canManageTemplates ? <LinkButton asChild variant=\"gray\"><Link href=\"/backend/documents/templates\">{t('documents.templates.actions.manage')}</Link></LinkButton> : null}\n {props.hasTemplates && props.canInstantiateTemplate ? <Button type=\"button\" variant=\"outline\" onClick={props.onNewFromTemplate}>{t('documents.templates.instantiate.title')}</Button> : null}\n {props.canCreateDocument ? <Button type=\"button\" onClick={props.onCreate} disabled={props.isCreating}>{t('documents.actions.create')}</Button> : null}\n </>\n )\n return (\n <DataTable<DocumentRow>\n title={props.title}\n titleHeadingLevel={1}\n actions={actions}\n refreshButton={{ label: t('documents.actions.refresh'), onRefresh: props.onRefresh, isRefreshing: props.isLoading }}\n columns={columns}\n data={props.rows}\n isLoading={props.isLoading}\n searchValue={props.search}\n onSearchChange={props.onSearchChange}\n searchPlaceholder={t('documents.list.searchPlaceholder')}\n emptyState={t('documents.list.empty')}\n entityId={DOCUMENTS_ENTITY_IDS.document}\n extensionTableId=\"documents.documents.list\"\n onRowClick={(row) => router.push(`/backend/documents/${row.id}`)}\n rowClickActionIds={['open']}\n stickyActionsColumn\n pagination={{\n page: props.page, pageSize: props.pageSize, total: props.total, totalPages: props.totalPages,\n totalIsCapped: props.totalIsCapped,\n onPageChange: props.onPageChange, onPageSizeChange: props.onPageSizeChange,\n }}\n rowActions={(row) => {\n const items: RowActionItem[] = [{ id: 'open', label: t('documents.actions.open'), onSelect: () => router.push(`/backend/documents/${row.id}`) }]\n if (row.capabilities.canShare) items.push({ id: 'share', label: t('documents.actions.share'), onSelect: () => props.onShare(row) })\n if (row.capabilities.canEdit) items.push({ id: 'move', label: t('documents.folders.actions.moveDocument'), onSelect: () => props.onMove(row) })\n if (row.capabilities.canDuplicate) items.push({ id: 'duplicate', label: t('documents.actions.duplicate'), onSelect: () => props.onDuplicate(row) })\n if (row.capabilities.canArchive) {\n items.push({\n id: row.archivedAt ? 'unarchive' : 'archive',\n label: t(row.archivedAt ? 'documents.actions.unarchive' : 'documents.actions.archive'),\n onSelect: () => props.onArchiveToggle(row),\n })\n }\n if (row.capabilities.canDelete) items.push({ id: 'delete', label: t('documents.actions.delete'), destructive: true, onSelect: () => props.onDelete(row) })\n return <RowActions items={items} />\n }}\n />\n )\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -22,6 +22,7 @@ function TemplatesTable({ rows, page, pageSize, total, totalPages, totalIsCapped
|
|
|
22
22
|
DataTable,
|
|
23
23
|
{
|
|
24
24
|
title: t("documents.templates.list.title"),
|
|
25
|
+
titleHeadingLevel: 1,
|
|
25
26
|
actions: canManageTemplates ? /* @__PURE__ */ jsx(Button, { type: "button", onClick: () => onEdit(null), children: t("documents.templates.actions.new") }) : void 0,
|
|
26
27
|
refreshButton: { label: t("documents.actions.refresh"), onRefresh, isRefreshing: isLoading },
|
|
27
28
|
columns,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/modules/documents/backend/documents/templates/TemplatesTable.tsx"],
|
|
4
|
-
"sourcesContent": ["\"use client\"\n\nimport * as React from 'react'\nimport type { LegacyColumnDef as ColumnDef } from '@tanstack/react-table/legacy'\nimport { DataTable } from '@open-mercato/ui/backend/DataTable'\nimport { RowActions } from '@open-mercato/ui/backend/RowActions'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { StatusBadge } from '@open-mercato/ui/primitives/status-badge'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport { DOCUMENTS_ENTITY_IDS } from '../../../lib/constants'\nimport { getEntityRegistryEntry } from '../../../lib/entityRegistry'\nimport { formatDateTime } from '../documentUi'\nimport type { TemplateRow } from '../components/templateUi'\n\nexport function TemplatesTable({ rows, page, pageSize, total, totalPages, totalIsCapped, search, isLoading, canManageTemplates, onSearchChange, onPageChange, onPageSizeChange, onRefresh, onEdit, onDelete }: {\n rows: TemplateRow[]\n page: number\n pageSize: number\n total: number\n totalPages: number\n totalIsCapped: boolean\n search: string\n isLoading: boolean\n canManageTemplates: boolean\n onSearchChange: (search: string) => void\n onPageChange: (page: number) => void\n onPageSizeChange: (pageSize: number) => void\n onRefresh: () => void\n onEdit: (template: TemplateRow | null) => void\n onDelete: (template: TemplateRow) => void\n}) {\n const t = useT()\n const columns = React.useMemo<ColumnDef<TemplateRow>[]>(() => [\n { accessorKey: 'name', header: t('documents.templates.columns.name'), meta: { alwaysVisible: true, maxWidth: '240px', truncate: true }, cell: ({ row }) => <span className=\"font-medium\">{row.original.name}</span> },\n { accessorKey: 'description', header: t('documents.templates.columns.description'), meta: { maxWidth: '320px', truncate: true }, cell: ({ row }) => row.original.description ?? <span className=\"text-muted-foreground\">{t('documents.templates.list.noDescription')}</span> },\n { id: 'slots', header: t('documents.templates.columns.slots'), meta: { maxWidth: '260px', truncate: true }, cell: ({ row }) => row.original.contextSlots.length > 0 ? row.original.contextSlots.map((slot) => t(getEntityRegistryEntry(slot.entityType)?.labelKey ?? 'documents.relatedRecords.restricted')).join(', ') : t('documents.templates.slots.none') },\n { accessorKey: 'isActive', header: t('documents.templates.columns.active'), cell: ({ row }) => <StatusBadge variant={row.original.isActive ? 'success' : 'neutral'} dot>{t(row.original.isActive ? 'documents.templates.status.active' : 'documents.templates.status.inactive')}</StatusBadge> },\n { accessorKey: 'updatedAt', header: t('documents.columns.updatedAt'), meta: { maxWidth: '180px' }, cell: ({ row }) => formatDateTime(row.original.updatedAt, t('documents.list.noValue')) },\n ], [t])\n return (\n <DataTable<TemplateRow>\n title={t('documents.templates.list.title')}\n actions={canManageTemplates ? <Button type=\"button\" onClick={() => onEdit(null)}>{t('documents.templates.actions.new')}</Button> : undefined}\n refreshButton={{ label: t('documents.actions.refresh'), onRefresh, isRefreshing: isLoading }}\n columns={columns}\n data={rows}\n isLoading={isLoading}\n searchValue={search}\n onSearchChange={onSearchChange}\n searchPlaceholder={t('documents.templates.list.searchPlaceholder')}\n emptyState={t('documents.templates.list.empty')}\n entityId={DOCUMENTS_ENTITY_IDS.documentTemplate}\n extensionTableId=\"documents.templates.list\"\n onRowClick={canManageTemplates ? onEdit : undefined}\n rowClickActionIds={canManageTemplates ? ['edit'] : []}\n stickyActionsColumn\n pagination={{\n page,\n pageSize,\n total,\n totalPages,\n totalIsCapped,\n onPageChange,\n onPageSizeChange,\n pageSizeOptions: [25, 50, 100],\n }}\n rowActions={canManageTemplates ? (row) => <RowActions items={[\n { id: 'edit', label: t('documents.actions.edit'), onSelect: () => onEdit(row) },\n { id: 'delete', label: t('documents.actions.delete'), destructive: true, onSelect: () => onDelete(row) },\n ]} /> : undefined}\n />\n )\n}\n"],
|
|
5
|
-
"mappings": ";AAiC+J;AA/B/J,YAAY,WAAW;AAEvB,SAAS,iBAAiB;AAC1B,SAAS,kBAAkB;AAC3B,SAAS,cAAc;AACvB,SAAS,mBAAmB;AAC5B,SAAS,YAAY;AACrB,SAAS,4BAA4B;AACrC,SAAS,8BAA8B;AACvC,SAAS,sBAAsB;AAGxB,SAAS,eAAe,EAAE,MAAM,MAAM,UAAU,OAAO,YAAY,eAAe,QAAQ,WAAW,oBAAoB,gBAAgB,cAAc,kBAAkB,WAAW,QAAQ,SAAS,GAgBzM;AACD,QAAM,IAAI,KAAK;AACf,QAAM,UAAU,MAAM,QAAkC,MAAM;AAAA,IAC5D,EAAE,aAAa,QAAQ,QAAQ,EAAE,kCAAkC,GAAG,MAAM,EAAE,eAAe,MAAM,UAAU,SAAS,UAAU,KAAK,GAAG,MAAM,CAAC,EAAE,IAAI,MAAM,oBAAC,UAAK,WAAU,eAAe,cAAI,SAAS,MAAK,EAAQ;AAAA,IACpN,EAAE,aAAa,eAAe,QAAQ,EAAE,yCAAyC,GAAG,MAAM,EAAE,UAAU,SAAS,UAAU,KAAK,GAAG,MAAM,CAAC,EAAE,IAAI,MAAM,IAAI,SAAS,eAAe,oBAAC,UAAK,WAAU,yBAAyB,YAAE,wCAAwC,GAAE,EAAQ;AAAA,IAC7Q,EAAE,IAAI,SAAS,QAAQ,EAAE,mCAAmC,GAAG,MAAM,EAAE,UAAU,SAAS,UAAU,KAAK,GAAG,MAAM,CAAC,EAAE,IAAI,MAAM,IAAI,SAAS,aAAa,SAAS,IAAI,IAAI,SAAS,aAAa,IAAI,CAAC,SAAS,EAAE,uBAAuB,KAAK,UAAU,GAAG,YAAY,qCAAqC,CAAC,EAAE,KAAK,IAAI,IAAI,EAAE,gCAAgC,EAAE;AAAA,IAC9V,EAAE,aAAa,YAAY,QAAQ,EAAE,oCAAoC,GAAG,MAAM,CAAC,EAAE,IAAI,MAAM,oBAAC,eAAY,SAAS,IAAI,SAAS,WAAW,YAAY,WAAW,KAAG,MAAE,YAAE,IAAI,SAAS,WAAW,sCAAsC,qCAAqC,GAAE,EAAe;AAAA,IAC/R,EAAE,aAAa,aAAa,QAAQ,EAAE,6BAA6B,GAAG,MAAM,EAAE,UAAU,QAAQ,GAAG,MAAM,CAAC,EAAE,IAAI,MAAM,eAAe,IAAI,SAAS,WAAW,EAAE,wBAAwB,CAAC,EAAE;AAAA,EAC5L,GAAG,CAAC,CAAC,CAAC;AACN,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,EAAE,gCAAgC;AAAA,MACzC,SAAS,qBAAqB,oBAAC,UAAO,MAAK,UAAS,SAAS,MAAM,OAAO,IAAI,GAAI,YAAE,iCAAiC,GAAE,IAAY;AAAA,MACnI,eAAe,EAAE,OAAO,EAAE,2BAA2B,GAAG,WAAW,cAAc,UAAU;AAAA,MAC3F;AAAA,MACA,MAAM;AAAA,MACN;AAAA,MACA,aAAa;AAAA,MACb;AAAA,MACA,mBAAmB,EAAE,4CAA4C;AAAA,MACjE,YAAY,EAAE,gCAAgC;AAAA,MAC9C,UAAU,qBAAqB;AAAA,MAC/B,kBAAiB;AAAA,MACjB,YAAY,qBAAqB,SAAS;AAAA,MAC1C,mBAAmB,qBAAqB,CAAC,MAAM,IAAI,CAAC;AAAA,MACpD,qBAAmB;AAAA,MACnB,YAAY;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,iBAAiB,CAAC,IAAI,IAAI,GAAG;AAAA,MAC/B;AAAA,MACA,YAAY,qBAAqB,CAAC,QAAQ,oBAAC,cAAW,OAAO;AAAA,QAC3D,EAAE,IAAI,QAAQ,OAAO,EAAE,wBAAwB,GAAG,UAAU,MAAM,OAAO,GAAG,EAAE;AAAA,QAC9E,EAAE,IAAI,UAAU,OAAO,EAAE,0BAA0B,GAAG,aAAa,MAAM,UAAU,MAAM,SAAS,GAAG,EAAE;AAAA,MACzG,GAAG,IAAK;AAAA;AAAA,EACV;AAEJ;",
|
|
4
|
+
"sourcesContent": ["\"use client\"\n\nimport * as React from 'react'\nimport type { LegacyColumnDef as ColumnDef } from '@tanstack/react-table/legacy'\nimport { DataTable } from '@open-mercato/ui/backend/DataTable'\nimport { RowActions } from '@open-mercato/ui/backend/RowActions'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { StatusBadge } from '@open-mercato/ui/primitives/status-badge'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport { DOCUMENTS_ENTITY_IDS } from '../../../lib/constants'\nimport { getEntityRegistryEntry } from '../../../lib/entityRegistry'\nimport { formatDateTime } from '../documentUi'\nimport type { TemplateRow } from '../components/templateUi'\n\nexport function TemplatesTable({ rows, page, pageSize, total, totalPages, totalIsCapped, search, isLoading, canManageTemplates, onSearchChange, onPageChange, onPageSizeChange, onRefresh, onEdit, onDelete }: {\n rows: TemplateRow[]\n page: number\n pageSize: number\n total: number\n totalPages: number\n totalIsCapped: boolean\n search: string\n isLoading: boolean\n canManageTemplates: boolean\n onSearchChange: (search: string) => void\n onPageChange: (page: number) => void\n onPageSizeChange: (pageSize: number) => void\n onRefresh: () => void\n onEdit: (template: TemplateRow | null) => void\n onDelete: (template: TemplateRow) => void\n}) {\n const t = useT()\n const columns = React.useMemo<ColumnDef<TemplateRow>[]>(() => [\n { accessorKey: 'name', header: t('documents.templates.columns.name'), meta: { alwaysVisible: true, maxWidth: '240px', truncate: true }, cell: ({ row }) => <span className=\"font-medium\">{row.original.name}</span> },\n { accessorKey: 'description', header: t('documents.templates.columns.description'), meta: { maxWidth: '320px', truncate: true }, cell: ({ row }) => row.original.description ?? <span className=\"text-muted-foreground\">{t('documents.templates.list.noDescription')}</span> },\n { id: 'slots', header: t('documents.templates.columns.slots'), meta: { maxWidth: '260px', truncate: true }, cell: ({ row }) => row.original.contextSlots.length > 0 ? row.original.contextSlots.map((slot) => t(getEntityRegistryEntry(slot.entityType)?.labelKey ?? 'documents.relatedRecords.restricted')).join(', ') : t('documents.templates.slots.none') },\n { accessorKey: 'isActive', header: t('documents.templates.columns.active'), cell: ({ row }) => <StatusBadge variant={row.original.isActive ? 'success' : 'neutral'} dot>{t(row.original.isActive ? 'documents.templates.status.active' : 'documents.templates.status.inactive')}</StatusBadge> },\n { accessorKey: 'updatedAt', header: t('documents.columns.updatedAt'), meta: { maxWidth: '180px' }, cell: ({ row }) => formatDateTime(row.original.updatedAt, t('documents.list.noValue')) },\n ], [t])\n return (\n <DataTable<TemplateRow>\n title={t('documents.templates.list.title')}\n titleHeadingLevel={1}\n actions={canManageTemplates ? <Button type=\"button\" onClick={() => onEdit(null)}>{t('documents.templates.actions.new')}</Button> : undefined}\n refreshButton={{ label: t('documents.actions.refresh'), onRefresh, isRefreshing: isLoading }}\n columns={columns}\n data={rows}\n isLoading={isLoading}\n searchValue={search}\n onSearchChange={onSearchChange}\n searchPlaceholder={t('documents.templates.list.searchPlaceholder')}\n emptyState={t('documents.templates.list.empty')}\n entityId={DOCUMENTS_ENTITY_IDS.documentTemplate}\n extensionTableId=\"documents.templates.list\"\n onRowClick={canManageTemplates ? onEdit : undefined}\n rowClickActionIds={canManageTemplates ? ['edit'] : []}\n stickyActionsColumn\n pagination={{\n page,\n pageSize,\n total,\n totalPages,\n totalIsCapped,\n onPageChange,\n onPageSizeChange,\n pageSizeOptions: [25, 50, 100],\n }}\n rowActions={canManageTemplates ? (row) => <RowActions items={[\n { id: 'edit', label: t('documents.actions.edit'), onSelect: () => onEdit(row) },\n { id: 'delete', label: t('documents.actions.delete'), destructive: true, onSelect: () => onDelete(row) },\n ]} /> : undefined}\n />\n )\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@open-mercato/documents",
|
|
3
|
-
"version": "0.7.1-develop.
|
|
3
|
+
"version": "0.7.1-develop.7154.1.981330c924",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -75,8 +75,8 @@
|
|
|
75
75
|
"@hocuspocus/server": "^4.4.0",
|
|
76
76
|
"@hocuspocus/transformer": "^4.3.0",
|
|
77
77
|
"@mikro-orm/core": "^7.1.8",
|
|
78
|
-
"@open-mercato/events": "0.7.1-develop.
|
|
79
|
-
"@open-mercato/ui": "0.7.1-develop.
|
|
78
|
+
"@open-mercato/events": "0.7.1-develop.7154.1.981330c924",
|
|
79
|
+
"@open-mercato/ui": "0.7.1-develop.7154.1.981330c924",
|
|
80
80
|
"@tiptap/core": "^3",
|
|
81
81
|
"@tiptap/extension-bubble-menu": "^3",
|
|
82
82
|
"@tiptap/extension-collaboration": "^3.27.3",
|
|
@@ -113,13 +113,13 @@
|
|
|
113
113
|
},
|
|
114
114
|
"peerDependencies": {
|
|
115
115
|
"@mikro-orm/postgresql": "^7.0.14",
|
|
116
|
-
"@open-mercato/shared": "0.7.1-develop.
|
|
116
|
+
"@open-mercato/shared": "0.7.1-develop.7154.1.981330c924",
|
|
117
117
|
"react": "^19.0.0",
|
|
118
118
|
"react-dom": "^19.0.0"
|
|
119
119
|
},
|
|
120
120
|
"devDependencies": {
|
|
121
|
-
"@open-mercato/core": "0.7.1-develop.
|
|
122
|
-
"@open-mercato/shared": "0.7.1-develop.
|
|
121
|
+
"@open-mercato/core": "0.7.1-develop.7154.1.981330c924",
|
|
122
|
+
"@open-mercato/shared": "0.7.1-develop.7154.1.981330c924",
|
|
123
123
|
"@types/jest": "^30.0.0",
|
|
124
124
|
"@types/pg": "^8.20.0",
|
|
125
125
|
"@types/react": "^19.2.16",
|
|
@@ -131,6 +131,7 @@ export function DocumentsTable(props: DocumentsTableProps) {
|
|
|
131
131
|
return (
|
|
132
132
|
<DataTable<DocumentRow>
|
|
133
133
|
title={props.title}
|
|
134
|
+
titleHeadingLevel={1}
|
|
134
135
|
actions={actions}
|
|
135
136
|
refreshButton={{ label: t('documents.actions.refresh'), onRefresh: props.onRefresh, isRefreshing: props.isLoading }}
|
|
136
137
|
columns={columns}
|
|
@@ -40,6 +40,7 @@ export function TemplatesTable({ rows, page, pageSize, total, totalPages, totalI
|
|
|
40
40
|
return (
|
|
41
41
|
<DataTable<TemplateRow>
|
|
42
42
|
title={t('documents.templates.list.title')}
|
|
43
|
+
titleHeadingLevel={1}
|
|
43
44
|
actions={canManageTemplates ? <Button type="button" onClick={() => onEdit(null)}>{t('documents.templates.actions.new')}</Button> : undefined}
|
|
44
45
|
refreshButton={{ label: t('documents.actions.refresh'), onRefresh, isRefreshing: isLoading }}
|
|
45
46
|
columns={columns}
|