@aphexcms/cms-core 2.0.10 → 2.1.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.
- package/dist/api/api-keys.d.ts +4 -0
- package/dist/api/api-keys.d.ts.map +1 -1
- package/dist/api/assets.d.ts.map +1 -1
- package/dist/api/index.d.ts +1 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +1 -0
- package/dist/api/roles.d.ts +22 -0
- package/dist/api/roles.d.ts.map +1 -0
- package/dist/api/roles.js +26 -0
- package/dist/api/schemas/api-keys.d.ts +50 -4
- package/dist/api/schemas/api-keys.d.ts.map +1 -1
- package/dist/api/schemas/api-keys.js +22 -3
- package/dist/api/schemas/organizations.d.ts +4 -22
- package/dist/api/schemas/organizations.d.ts.map +1 -1
- package/dist/api/schemas/organizations.js +13 -2
- package/dist/api/schemas/roles.d.ts +77 -0
- package/dist/api/schemas/roles.d.ts.map +1 -0
- package/dist/api/schemas/roles.js +42 -0
- package/dist/app-augment.d.ts +32 -0
- package/dist/app-augment.d.ts.map +1 -0
- package/dist/app-augment.js +18 -0
- package/dist/auth/auth-hooks.d.ts +2 -1
- package/dist/auth/auth-hooks.d.ts.map +1 -1
- package/dist/auth/auth-hooks.js +22 -2
- package/dist/client/index.d.ts +4 -2
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +6 -2
- package/dist/components/AdminApp.svelte +300 -140
- package/dist/components/AdminApp.svelte.d.ts +8 -0
- package/dist/components/AdminApp.svelte.d.ts.map +1 -1
- package/dist/components/admin/DocumentEditor.svelte +633 -350
- package/dist/components/admin/DocumentEditor.svelte.d.ts +2 -0
- package/dist/components/admin/DocumentEditor.svelte.d.ts.map +1 -1
- package/dist/components/admin/DocumentVersionPanel.svelte +46 -20
- package/dist/components/admin/DocumentVersionPanel.svelte.d.ts.map +1 -1
- package/dist/components/admin/MediaBrowser.svelte +70 -30
- package/dist/components/admin/MediaBrowser.svelte.d.ts.map +1 -1
- package/dist/components/admin/ObjectModal.svelte +70 -95
- package/dist/components/admin/ObjectModal.svelte.d.ts +1 -2
- package/dist/components/admin/ObjectModal.svelte.d.ts.map +1 -1
- package/dist/components/admin/PermissionsDebug.svelte +119 -0
- package/dist/components/admin/PermissionsDebug.svelte.d.ts +4 -0
- package/dist/components/admin/PermissionsDebug.svelte.d.ts.map +1 -0
- package/dist/components/admin/SchemaField.svelte +3 -1
- package/dist/components/admin/SchemaField.svelte.d.ts.map +1 -1
- package/dist/components/admin/confirm-dialog/ConfirmDialogHost.svelte +8 -10
- package/dist/components/admin/confirm-dialog/ConfirmDialogHost.svelte.d.ts.map +1 -1
- package/dist/components/admin/fields/ArrayField.svelte +104 -108
- package/dist/components/admin/fields/ArrayField.svelte.d.ts.map +1 -1
- package/dist/components/admin/fields/FileField.svelte +22 -17
- package/dist/components/admin/fields/FileField.svelte.d.ts.map +1 -1
- package/dist/components/admin/fields/ImageField.svelte +21 -15
- package/dist/components/admin/fields/ImageField.svelte.d.ts.map +1 -1
- package/dist/components/admin/fields/ReferenceField.svelte +142 -112
- package/dist/components/admin/fields/ReferenceField.svelte.d.ts.map +1 -1
- package/dist/components/admin/fields/TextareaField.svelte +4 -3
- package/dist/components/admin/fields/TextareaField.svelte.d.ts +2 -2
- package/dist/components/admin/fields/TextareaField.svelte.d.ts.map +1 -1
- package/dist/components/layout/Sidebar.svelte +21 -11
- package/dist/components/layout/Sidebar.svelte.d.ts.map +1 -1
- package/dist/components/layout/sidebar/NavMain.svelte +1 -0
- package/dist/db/interfaces/document.d.ts.map +1 -1
- package/dist/db/interfaces/index.d.ts +3 -1
- package/dist/db/interfaces/index.d.ts.map +1 -1
- package/dist/db/interfaces/organization.d.ts +1 -1
- package/dist/db/interfaces/organization.d.ts.map +1 -1
- package/dist/db/interfaces/role.d.ts +25 -0
- package/dist/db/interfaces/role.d.ts.map +1 -0
- package/dist/db/interfaces/role.js +1 -0
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +5 -0
- package/dist/field-access.d.ts +30 -0
- package/dist/field-access.d.ts.map +1 -0
- package/dist/field-access.js +79 -0
- package/dist/hooks.d.ts +2 -0
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +19 -13
- package/dist/lib/api/api-keys.d.ts +4 -0
- package/dist/lib/api/api-keys.d.ts.map +1 -1
- package/dist/lib/api/api-keys.js.map +1 -1
- package/dist/lib/api/assets.d.ts.map +1 -1
- package/dist/lib/api/assets.js.map +1 -1
- package/dist/lib/api/index.d.ts +1 -0
- package/dist/lib/api/index.d.ts.map +1 -1
- package/dist/lib/api/index.js +1 -0
- package/dist/lib/api/index.js.map +1 -1
- package/dist/lib/api/roles.d.ts +22 -0
- package/dist/lib/api/roles.d.ts.map +1 -0
- package/dist/lib/api/roles.js +27 -0
- package/dist/lib/api/roles.js.map +1 -0
- package/dist/lib/api/schemas/api-keys.d.ts +50 -4
- package/dist/lib/api/schemas/api-keys.d.ts.map +1 -1
- package/dist/lib/api/schemas/api-keys.js +22 -3
- package/dist/lib/api/schemas/api-keys.js.map +1 -1
- package/dist/lib/api/schemas/organizations.d.ts +4 -22
- package/dist/lib/api/schemas/organizations.d.ts.map +1 -1
- package/dist/lib/api/schemas/organizations.js +13 -2
- package/dist/lib/api/schemas/organizations.js.map +1 -1
- package/dist/lib/api/schemas/roles.d.ts +77 -0
- package/dist/lib/api/schemas/roles.d.ts.map +1 -0
- package/dist/lib/api/schemas/roles.js +43 -0
- package/dist/lib/api/schemas/roles.js.map +1 -0
- package/dist/lib/app-augment.d.ts +32 -0
- package/dist/lib/app-augment.d.ts.map +1 -0
- package/dist/lib/app-augment.js +19 -0
- package/dist/lib/app-augment.js.map +1 -0
- package/dist/lib/auth/auth-hooks.d.ts +2 -1
- package/dist/lib/auth/auth-hooks.d.ts.map +1 -1
- package/dist/lib/auth/auth-hooks.js +22 -2
- package/dist/lib/auth/auth-hooks.js.map +1 -1
- package/dist/lib/client/index.d.ts +4 -2
- package/dist/lib/client/index.d.ts.map +1 -1
- package/dist/lib/client/index.js +6 -2
- package/dist/lib/client/index.js.map +1 -1
- package/dist/lib/db/interfaces/document.d.ts.map +1 -1
- package/dist/lib/db/interfaces/index.d.ts +3 -1
- package/dist/lib/db/interfaces/index.d.ts.map +1 -1
- package/dist/lib/db/interfaces/organization.d.ts +1 -1
- package/dist/lib/db/interfaces/organization.d.ts.map +1 -1
- package/dist/lib/db/interfaces/role.d.ts +25 -0
- package/dist/lib/db/interfaces/role.d.ts.map +1 -0
- package/dist/lib/db/interfaces/role.js +2 -0
- package/dist/lib/db/interfaces/role.js.map +1 -0
- package/dist/lib/engine.d.ts.map +1 -1
- package/dist/lib/engine.js +5 -0
- package/dist/lib/engine.js.map +1 -1
- package/dist/lib/field-access.d.ts +30 -0
- package/dist/lib/field-access.d.ts.map +1 -0
- package/dist/lib/field-access.js +80 -0
- package/dist/lib/field-access.js.map +1 -0
- package/dist/lib/hooks.d.ts +2 -0
- package/dist/lib/hooks.d.ts.map +1 -1
- package/dist/lib/hooks.js +19 -13
- package/dist/lib/hooks.js.map +1 -1
- package/dist/lib/local-api/collection-api.d.ts +2 -0
- package/dist/lib/local-api/collection-api.d.ts.map +1 -1
- package/dist/lib/local-api/collection-api.js +98 -30
- package/dist/lib/local-api/collection-api.js.map +1 -1
- package/dist/lib/local-api/index.d.ts.map +1 -1
- package/dist/lib/local-api/index.js.map +1 -1
- package/dist/lib/local-api/permissions.d.ts +26 -26
- package/dist/lib/local-api/permissions.d.ts.map +1 -1
- package/dist/lib/local-api/permissions.js +122 -80
- package/dist/lib/local-api/permissions.js.map +1 -1
- package/dist/lib/permissions-context.svelte.d.ts +44 -0
- package/dist/lib/permissions-context.svelte.d.ts.map +1 -0
- package/dist/lib/permissions-context.svelte.js +80 -0
- package/dist/lib/permissions-context.svelte.js.map +1 -0
- package/dist/lib/routes/assets.d.ts.map +1 -1
- package/dist/lib/routes/assets.js.map +1 -1
- package/dist/lib/routes/document-versions.d.ts.map +1 -1
- package/dist/lib/routes/document-versions.js.map +1 -1
- package/dist/lib/routes/organizations-by-id.d.ts.map +1 -1
- package/dist/lib/routes/organizations-by-id.js +6 -3
- package/dist/lib/routes/organizations-by-id.js.map +1 -1
- package/dist/lib/routes/organizations-invitations.d.ts.map +1 -1
- package/dist/lib/routes/organizations-invitations.js +17 -7
- package/dist/lib/routes/organizations-invitations.js.map +1 -1
- package/dist/lib/routes/organizations-members.d.ts.map +1 -1
- package/dist/lib/routes/organizations-members.js +15 -7
- package/dist/lib/routes/organizations-members.js.map +1 -1
- package/dist/lib/routes/organizations.d.ts.map +1 -1
- package/dist/lib/routes/organizations.js +3 -0
- package/dist/lib/routes/organizations.js.map +1 -1
- package/dist/lib/routes/roles-by-name.d.ts +4 -0
- package/dist/lib/routes/roles-by-name.d.ts.map +1 -0
- package/dist/lib/routes/roles-by-name.js +112 -0
- package/dist/lib/routes/roles-by-name.js.map +1 -0
- package/dist/lib/routes/roles.d.ts +4 -0
- package/dist/lib/routes/roles.d.ts.map +1 -0
- package/dist/lib/routes/roles.js +91 -0
- package/dist/lib/routes/roles.js.map +1 -0
- package/dist/lib/routes-exports.d.ts +2 -0
- package/dist/lib/routes-exports.d.ts.map +1 -1
- package/dist/lib/routes-exports.js +3 -0
- package/dist/lib/routes-exports.js.map +1 -1
- package/dist/lib/save-state-context.svelte.d.ts +8 -0
- package/dist/lib/save-state-context.svelte.d.ts.map +1 -0
- package/dist/lib/save-state-context.svelte.js +9 -0
- package/dist/lib/save-state-context.svelte.js.map +1 -0
- package/dist/lib/schema-utils/validator.d.ts.map +1 -1
- package/dist/lib/schema-utils/validator.js +14 -0
- package/dist/lib/schema-utils/validator.js.map +1 -1
- package/dist/lib/server/index.d.ts +1 -0
- package/dist/lib/server/index.d.ts.map +1 -1
- package/dist/lib/server/index.js +1 -0
- package/dist/lib/server/index.js.map +1 -1
- package/dist/lib/services/index.d.ts +1 -0
- package/dist/lib/services/index.d.ts.map +1 -1
- package/dist/lib/services/index.js +1 -0
- package/dist/lib/services/index.js.map +1 -1
- package/dist/lib/services/roles-service.d.ts +35 -0
- package/dist/lib/services/roles-service.d.ts.map +1 -0
- package/dist/lib/services/roles-service.js +91 -0
- package/dist/lib/services/roles-service.js.map +1 -0
- package/dist/lib/services/version-service.d.ts.map +1 -1
- package/dist/lib/services/version-service.js.map +1 -1
- package/dist/lib/types/auth.d.ts +43 -9
- package/dist/lib/types/auth.d.ts.map +1 -1
- package/dist/lib/types/auth.js +31 -26
- package/dist/lib/types/auth.js.map +1 -1
- package/dist/lib/types/capabilities.d.ts +104 -0
- package/dist/lib/types/capabilities.d.ts.map +1 -0
- package/dist/lib/types/capabilities.js +217 -0
- package/dist/lib/types/capabilities.js.map +1 -0
- package/dist/lib/types/index.d.ts +1 -0
- package/dist/lib/types/index.d.ts.map +1 -1
- package/dist/lib/types/index.js +1 -0
- package/dist/lib/types/index.js.map +1 -1
- package/dist/lib/types/organization.d.ts +13 -4
- package/dist/lib/types/organization.d.ts.map +1 -1
- package/dist/lib/types/schemas.d.ts +71 -0
- package/dist/lib/types/schemas.d.ts.map +1 -1
- package/dist/lib/types/sidebar.d.ts +1 -1
- package/dist/lib/types/sidebar.d.ts.map +1 -1
- package/dist/lib/utils/mime-detect.d.ts.map +1 -1
- package/dist/lib/utils/mime-detect.js +28 -6
- package/dist/lib/utils/mime-detect.js.map +1 -1
- package/dist/local-api/collection-api.d.ts +2 -0
- package/dist/local-api/collection-api.d.ts.map +1 -1
- package/dist/local-api/collection-api.js +98 -30
- package/dist/local-api/index.d.ts.map +1 -1
- package/dist/local-api/permissions.d.ts +26 -26
- package/dist/local-api/permissions.d.ts.map +1 -1
- package/dist/local-api/permissions.js +122 -80
- package/dist/permissions-context.svelte.d.ts +44 -0
- package/dist/permissions-context.svelte.d.ts.map +1 -0
- package/dist/permissions-context.svelte.js +79 -0
- package/dist/plugins/README.md +20 -20
- package/dist/routes/assets.d.ts.map +1 -1
- package/dist/routes/document-versions.d.ts.map +1 -1
- package/dist/routes/organizations-by-id.d.ts.map +1 -1
- package/dist/routes/organizations-by-id.js +6 -3
- package/dist/routes/organizations-invitations.d.ts.map +1 -1
- package/dist/routes/organizations-invitations.js +17 -7
- package/dist/routes/organizations-members.d.ts.map +1 -1
- package/dist/routes/organizations-members.js +15 -7
- package/dist/routes/organizations.d.ts.map +1 -1
- package/dist/routes/organizations.js +3 -0
- package/dist/routes/roles-by-name.d.ts +4 -0
- package/dist/routes/roles-by-name.d.ts.map +1 -0
- package/dist/routes/roles-by-name.js +111 -0
- package/dist/routes/roles.d.ts +4 -0
- package/dist/routes/roles.d.ts.map +1 -0
- package/dist/routes/roles.js +90 -0
- package/dist/routes-exports.d.ts +2 -0
- package/dist/routes-exports.d.ts.map +1 -1
- package/dist/routes-exports.js +3 -0
- package/dist/save-state-context.svelte.d.ts +8 -0
- package/dist/save-state-context.svelte.d.ts.map +1 -0
- package/dist/save-state-context.svelte.js +8 -0
- package/dist/schema-utils/validator.d.ts.map +1 -1
- package/dist/schema-utils/validator.js +14 -0
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -0
- package/dist/services/index.d.ts +1 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +1 -0
- package/dist/services/roles-service.d.ts +35 -0
- package/dist/services/roles-service.d.ts.map +1 -0
- package/dist/services/roles-service.js +90 -0
- package/dist/services/version-service.d.ts.map +1 -1
- package/dist/types/auth.d.ts +43 -9
- package/dist/types/auth.d.ts.map +1 -1
- package/dist/types/auth.js +31 -26
- package/dist/types/capabilities.d.ts +104 -0
- package/dist/types/capabilities.d.ts.map +1 -0
- package/dist/types/capabilities.js +216 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/organization.d.ts +13 -4
- package/dist/types/organization.d.ts.map +1 -1
- package/dist/types/schemas.d.ts +71 -0
- package/dist/types/schemas.d.ts.map +1 -1
- package/dist/types/sidebar.d.ts +1 -1
- package/dist/types/sidebar.d.ts.map +1 -1
- package/dist/utils/mime-detect.d.ts.map +1 -1
- package/dist/utils/mime-detect.js +28 -6
- package/package.json +6 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PermissionsDebug.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/admin/PermissionsDebug.svelte.ts"],"names":[],"mappings":"AA6GA,QAAA,MAAM,gBAAgB,2DAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
|
|
@@ -264,7 +264,9 @@
|
|
|
264
264
|
<p class="text-destructive text-sm font-medium">
|
|
265
265
|
Failed to render field "{field.name}" ({field.type})
|
|
266
266
|
</p>
|
|
267
|
-
<p class="text-muted-foreground mt-1 text-xs">
|
|
267
|
+
<p class="text-muted-foreground mt-1 text-xs">
|
|
268
|
+
{error instanceof Error ? error.message : 'Unknown error'}
|
|
269
|
+
</p>
|
|
268
270
|
<button class="text-primary mt-2 text-xs underline" onclick={reset}> Try again </button>
|
|
269
271
|
</div>
|
|
270
272
|
{/snippet}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaField.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/admin/SchemaField.svelte.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,KAAK,EAGL,MAAM,qBAAqB,CAAC;AAyB9B,OAAO,WAAW,MAAM,sBAAsB,CAAC;AAG9C,UAAU,KAAK;IACd,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,GAAG,CAAC;IACX,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/B,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACrE,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;
|
|
1
|
+
{"version":3,"file":"SchemaField.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/admin/SchemaField.svelte.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,KAAK,EAGL,MAAM,qBAAqB,CAAC;AAyB9B,OAAO,WAAW,MAAM,sBAAsB,CAAC;AAG9C,UAAU,KAAK;IACd,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,GAAG,CAAC;IACX,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/B,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACrE,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AA6NF,QAAA,MAAM,WAAW;sCA/KgC,GAAG,YAAW,GAAG;MA+KT,CAAC;AAC1D,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAClD,eAAe,WAAW,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import * as AlertDialog from '@aphexcms/ui/shadcn/alert-dialog';
|
|
3
|
-
import {
|
|
3
|
+
import { Button } from '@aphexcms/ui/shadcn/button';
|
|
4
4
|
import { confirmDialogState, resolveConfirmDialog } from './confirm-dialog.svelte';
|
|
5
5
|
|
|
6
6
|
function handleOpenChange(open: boolean) {
|
|
@@ -13,25 +13,23 @@
|
|
|
13
13
|
<AlertDialog.Root bind:open={confirmDialogState.open} onOpenChange={handleOpenChange}>
|
|
14
14
|
<AlertDialog.Content>
|
|
15
15
|
<AlertDialog.Header>
|
|
16
|
-
<AlertDialog.Title>{confirmDialogState.title}</AlertDialog.Title>
|
|
16
|
+
<AlertDialog.Title class="break-words">{confirmDialogState.title}</AlertDialog.Title>
|
|
17
17
|
{#if confirmDialogState.description}
|
|
18
|
-
<AlertDialog.Description>
|
|
18
|
+
<AlertDialog.Description class="break-words">
|
|
19
19
|
{confirmDialogState.description}
|
|
20
20
|
</AlertDialog.Description>
|
|
21
21
|
{/if}
|
|
22
22
|
</AlertDialog.Header>
|
|
23
23
|
<AlertDialog.Footer>
|
|
24
|
-
<
|
|
24
|
+
<Button variant="outline" onclick={() => resolveConfirmDialog(false)}>
|
|
25
25
|
{confirmDialogState.cancelText}
|
|
26
|
-
</
|
|
27
|
-
<
|
|
28
|
-
|
|
29
|
-
variant: confirmDialogState.variant === 'destructive' ? 'destructive' : 'default'
|
|
30
|
-
})}
|
|
26
|
+
</Button>
|
|
27
|
+
<Button
|
|
28
|
+
variant={confirmDialogState.variant === 'destructive' ? 'destructive' : 'default'}
|
|
31
29
|
onclick={() => resolveConfirmDialog(true)}
|
|
32
30
|
>
|
|
33
31
|
{confirmDialogState.confirmText}
|
|
34
|
-
</
|
|
32
|
+
</Button>
|
|
35
33
|
</AlertDialog.Footer>
|
|
36
34
|
</AlertDialog.Content>
|
|
37
35
|
</AlertDialog.Root>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfirmDialogHost.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/admin/confirm-dialog/ConfirmDialogHost.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ConfirmDialogHost.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/admin/confirm-dialog/ConfirmDialogHost.svelte.ts"],"names":[],"mappings":"AA0CA,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,iBAAiB;;kBAA+E,CAAC;AACrF,KAAK,iBAAiB,GAAG,YAAY,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAClE,eAAe,iBAAiB,CAAC"}
|
|
@@ -342,7 +342,11 @@
|
|
|
342
342
|
});
|
|
343
343
|
}
|
|
344
344
|
|
|
345
|
-
|
|
345
|
+
// Add to array immediately so document auto-save captures it
|
|
346
|
+
const newArray = [...keyedItems, newItem];
|
|
347
|
+
onUpdate(newArray);
|
|
348
|
+
|
|
349
|
+
editingIndex = newArray.length - 1;
|
|
346
350
|
editingType = selectedType;
|
|
347
351
|
editingSchema = schema;
|
|
348
352
|
editingValue = newItem;
|
|
@@ -369,32 +373,22 @@
|
|
|
369
373
|
onUpdate(newArray);
|
|
370
374
|
}
|
|
371
375
|
|
|
372
|
-
|
|
376
|
+
// Write-through: propagate every field change from the modal to the array immediately
|
|
377
|
+
function handleModalUpdate(updatedData: Record<string, any>) {
|
|
373
378
|
if (editingIndex === null || !editingType) return;
|
|
374
379
|
|
|
375
|
-
const itemData: Record<string, any> = { ...
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
itemData._key = (editingValue as any)._key;
|
|
380
|
+
const itemData: Record<string, any> = { ...updatedData, _type: editingType };
|
|
381
|
+
if (editingValue._key) {
|
|
382
|
+
itemData._key = editingValue._key;
|
|
379
383
|
} else {
|
|
380
384
|
itemData._key = generateKey();
|
|
381
385
|
}
|
|
382
386
|
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
if (editingIndex >= newArray.length) {
|
|
386
|
-
newArray.push(itemData);
|
|
387
|
-
} else {
|
|
388
|
-
newArray[editingIndex] = itemData;
|
|
389
|
-
}
|
|
387
|
+
editingValue = itemData;
|
|
390
388
|
|
|
389
|
+
const newArray = [...keyedItems];
|
|
390
|
+
newArray[editingIndex] = itemData;
|
|
391
391
|
onUpdate(newArray);
|
|
392
|
-
|
|
393
|
-
modalOpen = false;
|
|
394
|
-
editingIndex = null;
|
|
395
|
-
editingType = null;
|
|
396
|
-
editingSchema = null;
|
|
397
|
-
editingValue = {};
|
|
398
392
|
}
|
|
399
393
|
|
|
400
394
|
function handleModalClose() {
|
|
@@ -440,9 +434,11 @@
|
|
|
440
434
|
{#if isGridLayout}
|
|
441
435
|
<!-- Grid layout for images -->
|
|
442
436
|
{#if arrayValue.length === 0}
|
|
443
|
-
<div
|
|
437
|
+
<div
|
|
438
|
+
class="border-border/50 flex h-32 items-center justify-center rounded-md border border-dashed"
|
|
439
|
+
>
|
|
444
440
|
<div class="text-center">
|
|
445
|
-
<ImageIcon class="mx-auto h-8 w-8
|
|
441
|
+
<ImageIcon class="text-muted-foreground mx-auto h-8 w-8" />
|
|
446
442
|
<p class="text-muted-foreground mt-1 text-xs">No images yet</p>
|
|
447
443
|
</div>
|
|
448
444
|
</div>
|
|
@@ -455,18 +451,16 @@
|
|
|
455
451
|
class="border-border/50 bg-background group relative aspect-square overflow-hidden rounded-md border"
|
|
456
452
|
class:opacity-50={sortable.isDragging}
|
|
457
453
|
>
|
|
458
|
-
<!-- svelte-ignore a11y_click_events_have_key_events -->
|
|
459
|
-
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
460
|
-
<!-- svelte-ignore a11y_click_events_have_key_events -->
|
|
461
|
-
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
462
454
|
<div
|
|
463
455
|
class="h-full w-full cursor-pointer"
|
|
464
456
|
onclick={() => handleOpenImageModal(index)}
|
|
465
457
|
>
|
|
466
458
|
{#if item?.asset?._ref}
|
|
467
459
|
{#await assets.getById(item.asset._ref)}
|
|
468
|
-
<div class="flex h-full w-full items-center justify-center
|
|
469
|
-
<div
|
|
460
|
+
<div class="bg-muted flex h-full w-full items-center justify-center">
|
|
461
|
+
<div
|
|
462
|
+
class="border-primary h-4 w-4 animate-spin rounded-full border-b-2"
|
|
463
|
+
></div>
|
|
470
464
|
</div>
|
|
471
465
|
{:then result}
|
|
472
466
|
{#if result.success && result.data?.url}
|
|
@@ -477,40 +471,41 @@
|
|
|
477
471
|
loading="lazy"
|
|
478
472
|
/>
|
|
479
473
|
{:else}
|
|
480
|
-
<div class="flex h-full w-full items-center justify-center
|
|
481
|
-
<ImageIcon class="h-8 w-8
|
|
474
|
+
<div class="bg-muted flex h-full w-full items-center justify-center">
|
|
475
|
+
<ImageIcon class="text-muted-foreground h-8 w-8" />
|
|
482
476
|
</div>
|
|
483
477
|
{/if}
|
|
484
478
|
{:catch}
|
|
485
|
-
<div class="flex h-full w-full items-center justify-center
|
|
486
|
-
<ImageIcon class="h-8 w-8
|
|
479
|
+
<div class="bg-muted flex h-full w-full items-center justify-center">
|
|
480
|
+
<ImageIcon class="text-muted-foreground h-8 w-8" />
|
|
487
481
|
</div>
|
|
488
482
|
{/await}
|
|
489
483
|
{:else}
|
|
490
|
-
<div class="flex h-full w-full items-center justify-center
|
|
491
|
-
<ImageIcon class="h-8 w-8
|
|
484
|
+
<div class="bg-muted flex h-full w-full items-center justify-center">
|
|
485
|
+
<ImageIcon class="text-muted-foreground h-8 w-8" />
|
|
492
486
|
</div>
|
|
493
487
|
{/if}
|
|
494
488
|
</div>
|
|
495
489
|
|
|
496
490
|
<!-- Overlay controls -->
|
|
497
491
|
{#if !readonly}
|
|
498
|
-
<div
|
|
492
|
+
<div
|
|
493
|
+
class="absolute top-1 left-1 opacity-0 transition-opacity group-hover:opacity-100"
|
|
494
|
+
>
|
|
499
495
|
<button
|
|
500
496
|
{@attach sortable.attachHandle}
|
|
501
|
-
class="bg-background/80 rounded p-1
|
|
497
|
+
class="bg-background/80 cursor-grab rounded p-1 active:cursor-grabbing"
|
|
502
498
|
>
|
|
503
499
|
<GripVertical class="h-3.5 w-3.5" />
|
|
504
500
|
</button>
|
|
505
501
|
</div>
|
|
506
|
-
<div
|
|
502
|
+
<div
|
|
503
|
+
class="absolute right-1 bottom-1 opacity-0 transition-opacity group-hover:opacity-100"
|
|
504
|
+
>
|
|
507
505
|
<DropdownMenu.Root>
|
|
508
506
|
<DropdownMenu.Trigger>
|
|
509
507
|
{#snippet child({ props })}
|
|
510
|
-
<button
|
|
511
|
-
{...props}
|
|
512
|
-
class="bg-background/80 rounded p-1"
|
|
513
|
-
>
|
|
508
|
+
<button {...props} class="bg-background/80 rounded p-1">
|
|
514
509
|
<Ellipsis class="h-3.5 w-3.5" />
|
|
515
510
|
</button>
|
|
516
511
|
{/snippet}
|
|
@@ -534,76 +529,74 @@
|
|
|
534
529
|
{/each}
|
|
535
530
|
</div>
|
|
536
531
|
{:else}
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
<div
|
|
542
|
-
{@attach sortable.attach}
|
|
543
|
-
class="border-border/50 bg-background hover:bg-muted/50 flex h-16 items-center gap-1 rounded border px-1 transition-colors"
|
|
544
|
-
class:opacity-50={sortable.isDragging}
|
|
545
|
-
>
|
|
546
|
-
{#if !readonly}
|
|
547
|
-
<button
|
|
548
|
-
{@attach sortable.attachHandle}
|
|
549
|
-
class="text-muted-foreground hover:text-foreground flex h-8 w-6 cursor-grab items-center justify-center active:cursor-grabbing"
|
|
550
|
-
>
|
|
551
|
-
<GripVertical class="h-4 w-4" />
|
|
552
|
-
</button>
|
|
553
|
-
{/if}
|
|
554
|
-
|
|
555
|
-
<!-- svelte-ignore a11y_click_events_have_key_events -->
|
|
556
|
-
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
532
|
+
<!-- Default list layout for images -->
|
|
533
|
+
<div class="space-y-1">
|
|
534
|
+
{#each arrayValue as item, index (`prim-${index}`)}
|
|
535
|
+
{@const sortable = createSortable({ id: `prim-${index}`, index, disabled: readonly })}
|
|
557
536
|
<div
|
|
558
|
-
|
|
559
|
-
|
|
537
|
+
{@attach sortable.attach}
|
|
538
|
+
class="border-border/50 bg-background hover:bg-muted/50 flex h-16 items-center gap-1 rounded border px-1 transition-colors"
|
|
539
|
+
class:opacity-50={sortable.isDragging}
|
|
560
540
|
>
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
onUpdate={() => {}}
|
|
570
|
-
{readonly}
|
|
571
|
-
arrayItem={true}
|
|
572
|
-
{organizationId}
|
|
573
|
-
/>
|
|
574
|
-
</div>
|
|
541
|
+
{#if !readonly}
|
|
542
|
+
<button
|
|
543
|
+
{@attach sortable.attachHandle}
|
|
544
|
+
class="text-muted-foreground hover:text-foreground flex h-8 w-6 cursor-grab items-center justify-center active:cursor-grabbing"
|
|
545
|
+
>
|
|
546
|
+
<GripVertical class="h-4 w-4" />
|
|
547
|
+
</button>
|
|
548
|
+
{/if}
|
|
575
549
|
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
550
|
+
<div
|
|
551
|
+
class="min-w-0 flex-1 cursor-pointer text-left"
|
|
552
|
+
onclick={() => handleOpenImageModal(index)}
|
|
553
|
+
>
|
|
554
|
+
<ImageField
|
|
555
|
+
field={{
|
|
556
|
+
...field.of?.[0],
|
|
557
|
+
name: `image-${index}`,
|
|
558
|
+
type: 'image',
|
|
559
|
+
title: `Image ${index + 1}`
|
|
560
|
+
}}
|
|
561
|
+
value={item}
|
|
562
|
+
onUpdate={() => {}}
|
|
563
|
+
{readonly}
|
|
564
|
+
arrayItem={true}
|
|
565
|
+
{organizationId}
|
|
566
|
+
/>
|
|
567
|
+
</div>
|
|
568
|
+
|
|
569
|
+
{#if !readonly}
|
|
570
|
+
<DropdownMenu.Root>
|
|
571
|
+
<DropdownMenu.Trigger>
|
|
572
|
+
{#snippet child({ props })}
|
|
573
|
+
<button
|
|
574
|
+
{...props}
|
|
575
|
+
class="text-muted-foreground hover:text-foreground flex h-8 w-8 shrink-0 items-center justify-center rounded transition-colors hover:bg-transparent"
|
|
576
|
+
>
|
|
577
|
+
<Ellipsis class="h-4 w-4" />
|
|
578
|
+
</button>
|
|
579
|
+
{/snippet}
|
|
580
|
+
</DropdownMenu.Trigger>
|
|
581
|
+
<DropdownMenu.Content align="end">
|
|
582
|
+
<DropdownMenu.Item onclick={() => handleOpenImageModal(index)}>
|
|
583
|
+
<Pencil class="mr-2 h-4 w-4" />
|
|
584
|
+
Edit
|
|
585
|
+
</DropdownMenu.Item>
|
|
586
|
+
<DropdownMenu.Separator />
|
|
587
|
+
<DropdownMenu.Item
|
|
588
|
+
class="text-destructive focus:text-destructive"
|
|
589
|
+
onclick={() => handleRemoveItem(index)}
|
|
583
590
|
>
|
|
584
|
-
<
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
<DropdownMenu.Separator />
|
|
594
|
-
<DropdownMenu.Item
|
|
595
|
-
class="text-destructive focus:text-destructive"
|
|
596
|
-
onclick={() => handleRemoveItem(index)}
|
|
597
|
-
>
|
|
598
|
-
<Trash2 class="mr-2 h-4 w-4" />
|
|
599
|
-
Remove
|
|
600
|
-
</DropdownMenu.Item>
|
|
601
|
-
</DropdownMenu.Content>
|
|
602
|
-
</DropdownMenu.Root>
|
|
603
|
-
{/if}
|
|
604
|
-
</div>
|
|
605
|
-
{/each}
|
|
606
|
-
</div>
|
|
591
|
+
<Trash2 class="mr-2 h-4 w-4" />
|
|
592
|
+
Remove
|
|
593
|
+
</DropdownMenu.Item>
|
|
594
|
+
</DropdownMenu.Content>
|
|
595
|
+
</DropdownMenu.Root>
|
|
596
|
+
{/if}
|
|
597
|
+
</div>
|
|
598
|
+
{/each}
|
|
599
|
+
</div>
|
|
607
600
|
{/if}
|
|
608
601
|
</DragDropProvider>
|
|
609
602
|
{/key}
|
|
@@ -787,7 +780,10 @@
|
|
|
787
780
|
</div>
|
|
788
781
|
|
|
789
782
|
<!-- Title (clickable to edit) -->
|
|
790
|
-
<button
|
|
783
|
+
<button
|
|
784
|
+
class="flex-1 cursor-pointer truncate text-left text-sm"
|
|
785
|
+
onclick={() => handleEditItem(index)}
|
|
786
|
+
>
|
|
791
787
|
{getItemTitle(item)}
|
|
792
788
|
</button>
|
|
793
789
|
|
|
@@ -869,7 +865,7 @@
|
|
|
869
865
|
schema={editingSchema}
|
|
870
866
|
value={editingValue}
|
|
871
867
|
onClose={handleModalClose}
|
|
872
|
-
|
|
868
|
+
onUpdate={handleModalUpdate}
|
|
873
869
|
{onOpenReference}
|
|
874
870
|
{readonly}
|
|
875
871
|
{organizationId}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArrayField.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/admin/fields/ArrayField.svelte.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,IAAI,cAAc,EAAc,MAAM,wBAAwB,CAAC;AAyBtF,UAAU,KAAK;IACd,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,GAAG,CAAC;IACX,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/B,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;
|
|
1
|
+
{"version":3,"file":"ArrayField.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/admin/fields/ArrayField.svelte.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,IAAI,cAAc,EAAc,MAAM,wBAAwB,CAAC;AAyBtF,UAAU,KAAK;IACd,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,GAAG,CAAC;IACX,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/B,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AA0xBF,QAAA,MAAM,UAAU,2CAAwC,CAAC;AACzD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAChD,eAAe,UAAU,CAAC"}
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
import elementEvents from '../../../utils/element-events';
|
|
18
18
|
import { copyUrlToClipboard, downloadFile } from '../../../utils/asset-actions';
|
|
19
19
|
import AssetBrowserModal from '../AssetBrowserModal.svelte';
|
|
20
|
+
import { usePermissions } from '../../../permissions-context.svelte';
|
|
20
21
|
|
|
21
22
|
interface Props {
|
|
22
23
|
field: FileFieldType;
|
|
@@ -44,6 +45,12 @@
|
|
|
44
45
|
organizationId
|
|
45
46
|
}: Props = $props();
|
|
46
47
|
|
|
48
|
+
// Read-only when forced by caller OR the user lacks asset.upload. Keeps
|
|
49
|
+
// the `readonly` prop as an explicit override for hosts that want to
|
|
50
|
+
// neutralise the field regardless of RBAC state.
|
|
51
|
+
const perms = usePermissions();
|
|
52
|
+
const isReadOnly = $derived(readonly || !perms.can('asset.upload'));
|
|
53
|
+
|
|
47
54
|
let isDragging = $state(false);
|
|
48
55
|
let isUploading = $state(false);
|
|
49
56
|
let uploadError = $state<string | null>(null);
|
|
@@ -97,7 +104,7 @@
|
|
|
97
104
|
}
|
|
98
105
|
|
|
99
106
|
async function handleFileSelect(files: FileList | null) {
|
|
100
|
-
if (
|
|
107
|
+
if (isReadOnly || !files || files.length === 0) return;
|
|
101
108
|
|
|
102
109
|
const file = files[0]!;
|
|
103
110
|
|
|
@@ -115,37 +122,37 @@
|
|
|
115
122
|
}
|
|
116
123
|
|
|
117
124
|
function handleDragOver(event: DragEvent) {
|
|
118
|
-
if (
|
|
125
|
+
if (isReadOnly) return;
|
|
119
126
|
event.preventDefault();
|
|
120
127
|
isDragging = true;
|
|
121
128
|
}
|
|
122
129
|
|
|
123
130
|
function handleDragLeave(event: DragEvent) {
|
|
124
|
-
if (
|
|
131
|
+
if (isReadOnly) return;
|
|
125
132
|
event.preventDefault();
|
|
126
133
|
isDragging = false;
|
|
127
134
|
}
|
|
128
135
|
|
|
129
136
|
function handleDrop(event: DragEvent) {
|
|
130
|
-
if (
|
|
137
|
+
if (isReadOnly) return;
|
|
131
138
|
event.preventDefault();
|
|
132
139
|
isDragging = false;
|
|
133
140
|
handleFileSelect(event.dataTransfer?.files || null);
|
|
134
141
|
}
|
|
135
142
|
|
|
136
143
|
function handleFileInputChange(event: Event) {
|
|
137
|
-
if (
|
|
144
|
+
if (isReadOnly) return;
|
|
138
145
|
const target = event.target as HTMLInputElement;
|
|
139
146
|
handleFileSelect(target.files);
|
|
140
147
|
}
|
|
141
148
|
|
|
142
149
|
function openFileDialog() {
|
|
143
|
-
if (
|
|
150
|
+
if (isReadOnly) return;
|
|
144
151
|
fileInputRef?.click();
|
|
145
152
|
}
|
|
146
153
|
|
|
147
154
|
function removeFile() {
|
|
148
|
-
if (
|
|
155
|
+
if (isReadOnly) return;
|
|
149
156
|
onUpdate(null);
|
|
150
157
|
uploadError = null;
|
|
151
158
|
}
|
|
@@ -271,7 +278,7 @@
|
|
|
271
278
|
{/if}
|
|
272
279
|
</div>
|
|
273
280
|
|
|
274
|
-
{#if !
|
|
281
|
+
{#if !isReadOnly}
|
|
275
282
|
<DropdownMenu>
|
|
276
283
|
<DropdownMenuTrigger>
|
|
277
284
|
<Button variant="ghost" size="sm" class="h-8 w-8 p-0">
|
|
@@ -312,7 +319,7 @@
|
|
|
312
319
|
variant="outline"
|
|
313
320
|
class="w-full justify-start"
|
|
314
321
|
onclick={openFileDialog}
|
|
315
|
-
disabled={isUploading ||
|
|
322
|
+
disabled={isUploading || isReadOnly}
|
|
316
323
|
type="button"
|
|
317
324
|
>
|
|
318
325
|
{#if isUploading}
|
|
@@ -330,9 +337,7 @@
|
|
|
330
337
|
<div class="border-border overflow-hidden rounded-md border {validationClasses}">
|
|
331
338
|
<!-- File info card -->
|
|
332
339
|
<div class="flex items-center gap-4 p-4">
|
|
333
|
-
<div
|
|
334
|
-
class="bg-muted flex h-14 w-14 flex-shrink-0 items-center justify-center rounded-lg"
|
|
335
|
-
>
|
|
340
|
+
<div class="bg-muted flex h-14 w-14 flex-shrink-0 items-center justify-center rounded-lg">
|
|
336
341
|
{#if loadingAsset}
|
|
337
342
|
<div class="border-primary h-6 w-6 animate-spin rounded-full border-b-2"></div>
|
|
338
343
|
{:else}
|
|
@@ -353,7 +358,7 @@
|
|
|
353
358
|
</div>
|
|
354
359
|
|
|
355
360
|
<!-- Controls -->
|
|
356
|
-
{#if !
|
|
361
|
+
{#if !isReadOnly}
|
|
357
362
|
<DropdownMenu>
|
|
358
363
|
<DropdownMenuTrigger>
|
|
359
364
|
<Button variant="secondary" size="icon" class="h-8 w-8">
|
|
@@ -404,7 +409,7 @@
|
|
|
404
409
|
{:else}
|
|
405
410
|
<!-- Upload bar -->
|
|
406
411
|
<div
|
|
407
|
-
class="border-border flex h-10 items-center overflow-hidden rounded-md border transition-colors {validationClasses} {
|
|
412
|
+
class="border-border flex h-10 items-center overflow-hidden rounded-md border transition-colors {validationClasses} {isReadOnly
|
|
408
413
|
? ''
|
|
409
414
|
: isDragging
|
|
410
415
|
? 'bg-primary/5'
|
|
@@ -426,7 +431,7 @@
|
|
|
426
431
|
{:else}
|
|
427
432
|
<FileIcon size={16} class="text-muted-foreground" />
|
|
428
433
|
<span class="text-muted-foreground text-sm">
|
|
429
|
-
{
|
|
434
|
+
{isReadOnly ? 'No file' : isDragging ? 'Drop file here' : 'Drag or select a file'}
|
|
430
435
|
</span>
|
|
431
436
|
{/if}
|
|
432
437
|
</div>
|
|
@@ -434,7 +439,7 @@
|
|
|
434
439
|
<div class="flex items-center gap-1 pr-2">
|
|
435
440
|
<button
|
|
436
441
|
onclick={openFileDialog}
|
|
437
|
-
disabled={isUploading ||
|
|
442
|
+
disabled={isUploading || isReadOnly}
|
|
438
443
|
type="button"
|
|
439
444
|
class="text-muted-foreground hover:text-foreground flex items-center gap-1 px-2 py-1 text-sm transition-colors disabled:opacity-50"
|
|
440
445
|
>
|
|
@@ -442,7 +447,7 @@
|
|
|
442
447
|
Upload
|
|
443
448
|
</button>
|
|
444
449
|
<button
|
|
445
|
-
disabled={isUploading ||
|
|
450
|
+
disabled={isUploading || isReadOnly}
|
|
446
451
|
type="button"
|
|
447
452
|
onclick={() => {
|
|
448
453
|
showAssetBrowser = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileField.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/admin/fields/FileField.svelte.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"FileField.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/admin/fields/FileField.svelte.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAkBxE,UAAU,KAAK;IACd,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAuaF,QAAA,MAAM,SAAS,2CAAwC,CAAC;AACxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAC9C,eAAe,SAAS,CAAC"}
|