@userfrosting/sprinkle-admin
Version:
Admin Sprinkle for UserFrosting 6
57 lines (56 loc) • 2.01 kB
TypeScript
import { ApiErrorResponse } from '@userfrosting/sprinkle-core/interfaces';
import { RoleCreateRequest, RoleEditRequest, RoleResponse } from '../interfaces';
/**
* Vue composable for Role CRUD operations.
*
* Endpoints:
* - GET /api/roles/r/{slug} -> RoleResponse
* - POST /api/roles -> RoleCreateResponse
* - PUT /api/roles/r/{slug} -> RoleEditResponse
* - DELETE /api/roles/r/{slug} -> RoleDeleteResponse
*
* Reactive state:
* - apiLoading: boolean
* - apiError: ApiErrorResponse | null
* - formData: RoleCreateRequest
* - r$: validation state from Regle for formData
*
* Methods:
* - fetchRole(slug: string): Promise<RoleResponse>
* - createRole(data: RoleCreateRequest): Promise<void>
* - updateRole(slug: string, data: RoleEditRequest): Promise<void>
* - deleteRole(slug: string): Promise<void>
* - resetForm(): void
*/
export declare function useRoleApi(): {
fetchRole: (slug: string) => Promise<RoleResponse>;
createRole: (data: RoleCreateRequest) => Promise<void>;
updateRole: (slug: string, data: RoleEditRequest) => Promise<void>;
deleteRole: (slug: string) => Promise<void>;
apiLoading: import('vue').Ref<boolean, boolean>;
apiError: import('vue').Ref<{
title: string;
description: string;
status: number;
} | null, ApiErrorResponse | {
title: string;
description: string;
status: number;
} | null>;
formData: import('vue').Ref<{
name: string;
slug: string;
description: string;
}, RoleCreateRequest | {
name: string;
slug: string;
description: string;
}>;
r$: import('vue').Raw<import('@regle/core').RegleRoot<{
name: string;
slug: string;
description: string;
}, Record<string, any>, Record<string, import('@regle/core').RegleValidationGroupEntry[]>, import('@regle/core').RegleShortcutDefinition<any>>>;
resetForm: () => void;
slugLocked: import('vue').Ref<boolean, boolean>;
};