mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-20 21:41:57 +00:00
feat(FE): Add project flock closing modal and zustand store
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
'use client';
|
||||
|
||||
import { create } from 'zustand';
|
||||
import { devtools } from 'zustand/middleware';
|
||||
import { createProjectFlockClosingSlice } from '@/stores/production/project-flock-closing/slices/project-flock-closing.slice';
|
||||
import { ProjectFlockClosingSlice } from '@/stores/production/project-flock-closing/slices/project-flock-closing.slice';
|
||||
|
||||
export type ProjectFlockClosingStore = ProjectFlockClosingSlice;
|
||||
|
||||
export const useProjectFlockClosingStore = create<ProjectFlockClosingStore>()(
|
||||
devtools(
|
||||
(...args) => ({
|
||||
...createProjectFlockClosingSlice(...args),
|
||||
}),
|
||||
{
|
||||
name: 'ProjectFlockClosingStore',
|
||||
}
|
||||
)
|
||||
);
|
||||
@@ -0,0 +1,70 @@
|
||||
import { StateCreator } from 'zustand';
|
||||
import { ProjectFlockKandang } from '@/types/api/production/project-flock-kandang';
|
||||
|
||||
export type ProjectFlockClosingSlice = {
|
||||
// State
|
||||
isClosingModalOpen: boolean;
|
||||
selectedProjectFlockKandang: ProjectFlockKandang | null;
|
||||
projectFlockId: number | null;
|
||||
isKandangClosed: boolean;
|
||||
isClosingLoading: boolean;
|
||||
closingCallback: ((action: 'close' | 'unclose') => Promise<void>) | null;
|
||||
|
||||
// Actions
|
||||
openClosingModal: (
|
||||
data: ProjectFlockKandang,
|
||||
projectFlockId: number,
|
||||
isClosed: boolean,
|
||||
callback: (action: 'close' | 'unclose') => Promise<void>
|
||||
) => void;
|
||||
closeClosingModal: () => void;
|
||||
setClosingLoading: (loading: boolean) => void;
|
||||
resetClosing: () => void;
|
||||
};
|
||||
|
||||
export const createProjectFlockClosingSlice: StateCreator<
|
||||
ProjectFlockClosingSlice,
|
||||
[],
|
||||
[],
|
||||
ProjectFlockClosingSlice
|
||||
> = (set) => ({
|
||||
// Initial state
|
||||
isClosingModalOpen: false,
|
||||
selectedProjectFlockKandang: null,
|
||||
projectFlockId: null,
|
||||
isKandangClosed: false,
|
||||
isClosingLoading: false,
|
||||
closingCallback: null,
|
||||
|
||||
// Actions
|
||||
openClosingModal: (data, projectFlockId, isClosed, callback) =>
|
||||
set({
|
||||
isClosingModalOpen: true,
|
||||
selectedProjectFlockKandang: data,
|
||||
projectFlockId,
|
||||
isKandangClosed: isClosed,
|
||||
closingCallback: callback,
|
||||
}),
|
||||
|
||||
closeClosingModal: () =>
|
||||
set({
|
||||
isClosingModalOpen: false,
|
||||
selectedProjectFlockKandang: null,
|
||||
projectFlockId: null,
|
||||
isKandangClosed: false,
|
||||
closingCallback: null,
|
||||
}),
|
||||
|
||||
setClosingLoading: (loading) =>
|
||||
set({ isClosingLoading: loading }),
|
||||
|
||||
resetClosing: () =>
|
||||
set({
|
||||
isClosingModalOpen: false,
|
||||
selectedProjectFlockKandang: null,
|
||||
projectFlockId: null,
|
||||
isKandangClosed: false,
|
||||
isClosingLoading: false,
|
||||
closingCallback: null,
|
||||
}),
|
||||
});
|
||||
Reference in New Issue
Block a user