@userfrosting/sprinkle-admin
Version:
Admin Sprinkle for UserFrosting 6
60 lines (59 loc) • 2.11 kB
TypeScript
import { ApiErrorResponse } from '@userfrosting/sprinkle-core/interfaces';
import { GroupCreateRequest, GroupEditRequest, GroupResponse } from '../interfaces';
/**
* Vue composable for Group CRUD operations.
*
* Endpoints:
* - GET /api/groups/g/{slug} -> GroupResponse
* - POST /api/groups -> GroupCreateResponse
* - PUT /api/groups/g/{slug} -> GroupEditResponse
* - DELETE /api/groups/g/{slug} -> GroupDeleteResponse
*
* Reactive state:
* - apiLoading: boolean
* - apiError: ApiErrorResponse | null
* - formData: GroupCreateRequest
* - r$: validation state from Regle for formData
*
* Methods:
* - fetchGroup(slug: string): Promise<GroupResponse>
* - createGroup(data: GroupCreateRequest): Promise<void>
* - updateGroup(slug: string, data: GroupEditRequest): Promise<void>
* - deleteGroup(slug: string): Promise<void>
* - resetForm(): void
*/
export declare function useGroupApi(): {
fetchGroup: (slug: string) => Promise<GroupResponse>;
createGroup: (data: GroupCreateRequest) => Promise<void>;
updateGroup: (slug: string, data: GroupEditRequest) => Promise<void>;
deleteGroup: (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<{
slug: string;
name: string;
description: string;
icon: string;
}, GroupCreateRequest | {
slug: string;
name: string;
description: string;
icon: string;
}>;
r$: import('vue').Raw<import('@regle/core').RegleRoot<{
slug: string;
name: string;
description: string;
icon: string;
}, Record<string, any>, Record<string, import('@regle/core').RegleValidationGroupEntry[]>, import('@regle/core').RegleShortcutDefinition<any>>>;
resetForm: () => void;
slugLocked: import('vue').Ref<boolean, boolean>;
};