@orthacms/media-admin 0.9.1 → 0.10.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/MediaPagination/index.tsx"],"names":[],"mappings":"AAwCA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,EAC5B,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,gBAAgB,EACnB,EAAE;IACC,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD,+BAmFA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/MediaPagination/index.tsx"],"names":[],"mappings":"AA2CA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,EAC5B,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,gBAAgB,EACnB,EAAE;IACC,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD,+BAsFA"}
@@ -5,6 +5,9 @@ import { Button, Pagination, PaginationContent, PaginationItem, Select, SelectCo
5
5
  import { ASSETS_PAGE_SIZE_OPTIONS } from '../../constants';
6
6
  /** Intl descriptors for {@link MediaPagination}, co-located here. */
7
7
  const messages = defineMessages({
8
+ // Names the `<nav>` landmark. The design system's own default is an
9
+ // untranslated, lower-case "pagination".
10
+ nav: { id: 'media.pagination.nav', defaultMessage: 'Pagination' },
8
11
  perPage: {
9
12
  id: 'media.pagination.perPage',
10
13
  defaultMessage: 'Assets per page'
@@ -45,7 +48,7 @@ export function MediaPagination({ page, pageCount, pageSize, total, onPageChange
45
48
  const perPageLabel = intl.formatMessage(messages.perPage);
46
49
  const from = total === 0 ? 0 : (page - 1) * pageSize + 1;
47
50
  const to = Math.min(page * pageSize, total);
48
- return (_jsxs("div", { className: "mt-4 flex flex-wrap items-center justify-between gap-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "text-sm text-muted-foreground", children: perPageLabel }), _jsxs(Select, { value: String(pageSize), onValueChange: (value) => onPageSizeChange(Number(value)), children: [_jsx(SelectTrigger, { className: "h-8 w-[72px] rounded-lg shadow-none", "aria-label": perPageLabel, children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { className: "rounded-lg shadow-none", children: _jsx(SelectGroup, { children: ASSETS_PAGE_SIZE_OPTIONS.map((size) => (_jsx(SelectItem, { value: String(size), children: size }, size))) }) })] })] }), _jsxs("div", { className: "flex items-center gap-3", children: [_jsx("span", { className: "text-sm text-muted-foreground", children: intl.formatMessage(messages.range, { from, to, total }) }), pageCount > 1 ? (_jsx(Pagination, { className: "mx-0 w-auto", children: _jsxs(PaginationContent, { className: "gap-3", children: [_jsx(PaginationItem, { children: _jsx(Button, { variant: "outline", size: "icon", className: "size-8 shadow-none", disabled: page <= 1, onClick: () => onPageChange(page - 1), "aria-label": intl.formatMessage(messages.previous), children: _jsx(ChevronLeft, {}) }) }), _jsx(PaginationItem, { children: _jsx("span", { className: "text-sm text-muted-foreground", children: intl.formatMessage(messages.page, {
51
+ return (_jsxs("div", { className: "mt-4 flex flex-wrap items-center justify-between gap-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "text-sm text-muted-foreground", children: perPageLabel }), _jsxs(Select, { value: String(pageSize), onValueChange: (value) => onPageSizeChange(Number(value)), children: [_jsx(SelectTrigger, { className: "h-8 w-[72px] rounded-lg shadow-none", "aria-label": perPageLabel, children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { className: "rounded-lg shadow-none", children: _jsx(SelectGroup, { children: ASSETS_PAGE_SIZE_OPTIONS.map((size) => (_jsx(SelectItem, { value: String(size), children: size }, size))) }) })] })] }), _jsxs("div", { className: "flex items-center gap-3", children: [_jsx("span", { className: "text-sm text-muted-foreground", children: intl.formatMessage(messages.range, { from, to, total }) }), pageCount > 1 ? (_jsx(Pagination, { className: "mx-0 w-auto", "aria-label": intl.formatMessage(messages.nav), children: _jsxs(PaginationContent, { className: "gap-3", children: [_jsx(PaginationItem, { children: _jsx(Button, { variant: "outline", size: "icon", className: "size-8 shadow-none", disabled: page <= 1, onClick: () => onPageChange(page - 1), "aria-label": intl.formatMessage(messages.previous), children: _jsx(ChevronLeft, {}) }) }), _jsx(PaginationItem, { children: _jsx("span", { className: "text-sm text-muted-foreground", children: intl.formatMessage(messages.page, {
49
52
  page,
50
53
  pageCount
51
54
  }) }) }), _jsx(PaginationItem, { children: _jsx(Button, { variant: "outline", size: "icon", className: "size-8 shadow-none", disabled: page >= pageCount, onClick: () => onPageChange(page + 1), "aria-label": intl.formatMessage(messages.next), children: _jsx(ChevronRight, {}) }) })] }) })) : null] })] }));
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/hooks/useMediaLibrary/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAEH,eAAe,EAIf,KAAK,SAAS,EACd,KAAK,SAAS,EACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAM3D,4EAA4E;AAC5E,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,OAAO,eAAe,CAAC;AAE5D,sDAAsD;AACtD,MAAM,MAAM,mBAAmB,GAAG;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AA0BF;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC3B,OAAO,UAAO,EACd,EACI,QAAQ,EAAE,eAA0C,EACvD,GAAE,mBAAwB;;;;;;;;;;;;;oBA8JhB,MAAM;wBASN,MAAM;;IA6Lb;;;;;;;;;OASG;;;;;;uBAvI+B,MAAM;;;qBASR,MAAM;;;sBA1D/B,MAAM;;oBAiBN,SAAS;;0BATT,UAAU;2BAmBN,MAAM;yBAiFV,MAAM,aAAY,MAAM;uBAK1B,MAAM,QAAQ,MAAM;sBASpB,MAAM,QAAQ,MAAM;sBAKpB,MAAM,OAAO,MAAM;wBAclB,MAAM,EAAE;uBAvBT,MAAM;2BAmBL,MAAM,EAAE;sBALR,MAAM,EAAE,YAAY,MAAM;;;;;;;EA4FvC;AAED,oEAAoE;AACpE,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/hooks/useMediaLibrary/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAEH,eAAe,EAIf,KAAK,SAAS,EACd,KAAK,SAAS,EACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAM3D,4EAA4E;AAC5E,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,OAAO,eAAe,CAAC;AAE5D,sDAAsD;AACtD,MAAM,MAAM,mBAAmB,GAAG;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AA0BF;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC3B,OAAO,UAAO,EACd,EACI,QAAQ,EAAE,eAA0C,EACvD,GAAE,mBAAwB;;;;;;;;;;;;;oBA0KhB,MAAM;wBASN,MAAM;;IA6Lb;;;;;;;;;OASG;;;;;;uBAvI+B,MAAM;;;qBASR,MAAM;;;sBA1D/B,MAAM;;oBAiBN,SAAS;;0BATT,UAAU;2BAmBN,MAAM;yBAiFV,MAAM,aAAY,MAAM;uBAK1B,MAAM,QAAQ,MAAM;sBASpB,MAAM,QAAQ,MAAM;sBAKpB,MAAM,OAAO,MAAM;wBAclB,MAAM,EAAE;uBAvBT,MAAM;2BAmBL,MAAM,EAAE;sBALR,MAAM,EAAE,YAAY,MAAM;;;;;;;EA4FvC;AAED,oEAAoE;AACpE,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -89,6 +89,14 @@ export function useMediaLibrary(enabled = true, { pageSize: initialPageSize = DE
89
89
  const invalidate = useCallback(() => {
90
90
  queryClient.invalidateQueries({ queryKey: mediaKeys.all(workspaceId) });
91
91
  }, [queryClient, workspaceId]);
92
+ /**
93
+ * {@link invalidate}, but the mutation waits for the refetch. A delete's
94
+ * confirmation stays busy until then, so it closes onto a grid the deleted
95
+ * rows are already gone from instead of one still showing them.
96
+ */
97
+ const invalidateAndWait = useCallback(() => queryClient.invalidateQueries({
98
+ queryKey: mediaKeys.all(workspaceId)
99
+ }), [queryClient, workspaceId]);
92
100
  /**
93
101
  * Surfaces a mutation failure and resyncs from the server. The API's own
94
102
  * sentence wins over our generic copy — `apiMessage` reads it off the
@@ -221,7 +229,7 @@ export function useMediaLibrary(enabled = true, { pageSize: initialPageSize = DE
221
229
  });
222
230
  const deleteFolderM = useMutation({
223
231
  mutationFn: httpMediaGateway.deleteFolder,
224
- onSuccess: invalidate,
232
+ onSuccess: invalidateAndWait,
225
233
  onError
226
234
  });
227
235
  const renameAssetM = useMutation({
@@ -241,7 +249,7 @@ export function useMediaLibrary(enabled = true, { pageSize: initialPageSize = DE
241
249
  });
242
250
  const deleteAssetsM = useMutation({
243
251
  mutationFn: httpMediaGateway.deleteAssets,
244
- onSuccess: invalidate,
252
+ onSuccess: invalidateAndWait,
245
253
  onError
246
254
  });
247
255
  const updateAssetM = useMutation({
@@ -13,6 +13,13 @@ export type AssetResponse = {
13
13
  mimeType: string;
14
14
  size: number;
15
15
  url: string;
16
+ /**
17
+ * Where the `thumb` / `preview` derivatives are fetched. Explicit because
18
+ * `url` may be a CDN URL (ADR-0021), where `?variant=` means nothing.
19
+ * Optional only for a server older than the field.
20
+ */
21
+ thumbUrl?: string;
22
+ previewUrl?: string;
16
23
  variants: string[];
17
24
  width: number | null;
18
25
  height: number | null;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/infrastructure/mediaMapper/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,kEAAkE;AAClE,MAAM,MAAM,cAAc,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,yEAAyE;AACzE,MAAM,MAAM,eAAe,GAAG;IAC1B,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,iEAAiE;AACjE,MAAM,MAAM,iBAAiB,GAAG;IAC5B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,GAAG,EAAE,cAAc,GAAG,WAAW,CAO9D;AASD,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,GAAG,EAAE,aAAa,GAAG,UAAU,CAsB3D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/infrastructure/mediaMapper/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,kEAAkE;AAClE,MAAM,MAAM,cAAc,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,yEAAyE;AACzE,MAAM,MAAM,eAAe,GAAG;IAC1B,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,iEAAiE;AACjE,MAAM,MAAM,iBAAiB,GAAG;IAC5B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,GAAG,EAAE,cAAc,GAAG,WAAW,CAO9D;AAqBD,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,GAAG,EAAE,aAAa,GAAG,UAAU,CAsB3D"}
@@ -8,8 +8,18 @@ export function toMediaFolder(dto) {
8
8
  createdAt: dto.createdAt
9
9
  };
10
10
  }
11
- /** The `?variant=` download URL when the asset has that derivative, else null. */
11
+ /**
12
+ * Where a derivative is fetched: the server's explicit URL, else — for a server
13
+ * that predates the field, and so can only ever report its own `/raw` route as
14
+ * `url` — that route's `?variant=` form when the derivative exists.
15
+ *
16
+ * The server's field wins because `url` may be a CDN URL, which ignores the
17
+ * query string and would quietly load the full original into every tile.
18
+ */
12
19
  function variantUrl(dto, name) {
20
+ const explicit = name === 'thumb' ? dto.thumbUrl : dto.previewUrl;
21
+ if (explicit)
22
+ return explicit;
13
23
  return dto.variants.includes(name)
14
24
  ? `${dto.url}?variant=${name}`
15
25
  : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/pages/MediaLibraryPage/index.tsx"],"names":[],"mappings":"AA2KA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,gCA2jB/B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/pages/MediaLibraryPage/index.tsx"],"names":[],"mappings":"AA2KA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,gCAqkB/B"}
@@ -175,6 +175,8 @@ export function MediaLibraryPage() {
175
175
  const [renameTarget, setRenameTarget] = useState(null);
176
176
  const [moveIds, setMoveIds] = useState(null);
177
177
  const [deleteTarget, setDeleteTarget] = useState(null);
178
+ /** A confirmed delete is in flight — the dialog shows a spinner meanwhile. */
179
+ const [deleting, setDeleting] = useState(false);
178
180
  /**
179
181
  * Puts focus on the grid and **keeps** it there for a few frames.
180
182
  *
@@ -295,31 +297,38 @@ export function MediaLibraryPage() {
295
297
  });
296
298
  store.clearSelection();
297
299
  };
298
- const confirmDelete = () => {
299
- if (!deleteTarget)
300
+ /**
301
+ * Runs the confirmed delete with the dialog held open and `busy` — a
302
+ * spinner on Delete, no dismissal, no second request — and closes it only
303
+ * once the server has answered. Closing at dispatch left the tile on screen
304
+ * with nothing saying a request was running.
305
+ */
306
+ const confirmDelete = async () => {
307
+ if (!deleteTarget || deleting)
300
308
  return;
309
+ setDeleting(true);
310
+ let ok;
301
311
  if (deleteTarget.kind === 'assets') {
302
312
  const count = deleteTarget.ids.length;
303
- void store.deleteAssets(deleteTarget.ids).then((ok) => {
304
- if (ok) {
305
- toast.success(intl.formatMessage(messages.tDeletedAssets, { count }));
306
- }
307
- });
313
+ ok = await store.deleteAssets(deleteTarget.ids);
314
+ if (ok) {
315
+ toast.success(intl.formatMessage(messages.tDeletedAssets, { count }));
316
+ }
308
317
  }
309
318
  else {
310
319
  const name = deleteTarget.folder.name;
311
- void store.deleteFolder(deleteTarget.folder.id).then((ok) => {
312
- if (ok) {
313
- toast.success(intl.formatMessage(messages.tDeletedFolder, { name }));
314
- }
315
- });
320
+ ok = await store.deleteFolder(deleteTarget.folder.id);
321
+ if (ok) {
322
+ toast.success(intl.formatMessage(messages.tDeletedFolder, { name }));
323
+ }
316
324
  }
317
- setDeleteTarget(null);
325
+ setDeleting(false);
318
326
  // The dialog restores focus to whatever opened it — a tile's ⋯ trigger
319
- // the delete is about to remove from the DOM, leaving focus on `<body>`.
320
- // Claim the close so it lands on the grid instead. Cancelling leaves the
321
- // flag false, so the trigger (which still exists) keeps focus.
322
- focusGridOnCloseRef.current = true;
327
+ // the delete has just removed from the DOM, leaving focus on `<body>`.
328
+ // Claim the close so it lands on the grid instead. Cancelling, or a
329
+ // failed delete, leaves the flag false: the trigger still exists.
330
+ focusGridOnCloseRef.current = ok;
331
+ setDeleteTarget(null);
323
332
  };
324
333
  // What the pending folder delete would take with it, so the confirmation
325
334
  // can say so — a folder delete cascades now, and an unqualified "Delete?"
@@ -415,11 +424,11 @@ export function MediaLibraryPage() {
415
424
  assets: doomed?.assets ?? 0,
416
425
  folders: doomed?.folders ?? 0
417
426
  })
418
- : intl.formatMessage(messages.deleteAssetsBody), confirmLabel: intl.formatMessage(messages.confirmDelete), confirmVariant: "destructive", onCloseAutoFocus: (event) => {
427
+ : intl.formatMessage(messages.deleteAssetsBody), confirmLabel: intl.formatMessage(messages.confirmDelete), confirmVariant: "destructive", busy: deleting, onCloseAutoFocus: (event) => {
419
428
  if (!focusGridOnCloseRef.current)
420
429
  return;
421
430
  focusGridOnCloseRef.current = false;
422
431
  event.preventDefault();
423
432
  focusGrid();
424
- }, onConfirm: confirmDelete })] }));
433
+ }, onConfirm: () => void confirmDelete() })] }));
425
434
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orthacms/media-admin",
3
- "version": "0.9.1",
3
+ "version": "0.10.0",
4
4
  "description": "@orthacms/media-admin — part of Ortha CMS.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://orthacms.com",
@@ -25,15 +25,15 @@
25
25
  "dist"
26
26
  ],
27
27
  "dependencies": {
28
- "@orthacms/bootstrap-admin": "^0.9.1",
29
- "@orthacms/content-admin": "^0.9.1",
30
- "@orthacms/content-domain": "^0.9.1",
31
- "@orthacms/design-system": "^0.9.1",
32
- "@orthacms/identity-admin": "^0.9.1",
33
- "@orthacms/insights-admin": "^0.9.1",
34
- "@orthacms/utils-admin": "^0.9.1",
35
- "@orthacms/workspaces-admin": "^0.9.1",
36
- "@orthacms/wysiwyg-admin": "^0.9.1",
28
+ "@orthacms/bootstrap-admin": "^0.10.0",
29
+ "@orthacms/content-admin": "^0.10.0",
30
+ "@orthacms/content-domain": "^0.10.0",
31
+ "@orthacms/design-system": "^0.10.0",
32
+ "@orthacms/identity-admin": "^0.10.0",
33
+ "@orthacms/insights-admin": "^0.10.0",
34
+ "@orthacms/utils-admin": "^0.10.0",
35
+ "@orthacms/workspaces-admin": "^0.10.0",
36
+ "@orthacms/wysiwyg-admin": "^0.10.0",
37
37
  "@tanstack/react-query": "^5.0.0",
38
38
  "lucide-react": "^1.17.0",
39
39
  "react-intl": "^7.0.0",