@edifice.io/collect-frontend 1.0.1 → 1.0.2

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.
Files changed (114) hide show
  1. package/lib/components/AppActionHeader.d.ts +1 -0
  2. package/lib/components/AppActionHeaderContext.d.ts +11 -0
  3. package/lib/components/AppHeaderCollection.d.ts +12 -0
  4. package/lib/components/CollectApp/CollectApp.d.ts +26 -0
  5. package/lib/components/CollectApp/CollectAppContext.d.ts +13 -0
  6. package/lib/components/CollectAppActionHeader.d.ts +4 -0
  7. package/lib/components/InstructionCard.d.ts +5 -0
  8. package/lib/components/SearchBarCollect.d.ts +3 -0
  9. package/lib/components/SubmissionCard.d.ts +7 -0
  10. package/lib/config/constants.d.ts +6 -0
  11. package/lib/features/collect-form/components/CollectForm.d.ts +24 -0
  12. package/lib/features/collect-form/components/index.d.ts +3 -0
  13. package/lib/features/collect-form/hooks/index.d.ts +2 -0
  14. package/lib/features/collect-form/hooks/useCreateCollectionForm.d.ts +20 -0
  15. package/lib/features/collect-form/index.d.ts +3 -0
  16. package/lib/features/collection-actions/components/CollectionActions.d.ts +4 -0
  17. package/lib/features/collection-list/components/CollectionListTable.d.ts +1 -0
  18. package/lib/features/collection-list/components/CollectionListTableBody.d.ts +4 -0
  19. package/lib/features/collection-list/components/CollectionListTableFooter.d.ts +12 -0
  20. package/lib/features/collection-list/components/CollectionListTableHead.d.ts +1 -0
  21. package/lib/features/collection-list/hooks/useCollectionListTableBody.d.ts +7 -0
  22. package/lib/features/collection-list/hooks/useCollectionListTableHead.d.ts +12 -0
  23. package/lib/features/collection-list/hooks/useCollectionPagination.d.ts +11 -0
  24. package/lib/features/collection-list/store/collectionListStore.d.ts +26 -0
  25. package/lib/features/collection-submissions-list/components/CollectionSubmissionsList.d.ts +4 -0
  26. package/lib/features/collection-submissions-list/components/CollectionSubmissionsListMobile.d.ts +4 -0
  27. package/lib/features/collection-submissions-list/components/CollectionSubmissionsListTr.d.ts +4 -0
  28. package/lib/features/collection-submissions-list/components/CollectionSubmissionsListView.d.ts +4 -0
  29. package/lib/features/collection-submissions-list/components/CollectionSubmissionsRender.d.ts +3 -0
  30. package/lib/features/collection-submissions-list/hooks/useCollectionSubmissionsList.d.ts +10 -0
  31. package/lib/features/collection-submissions-list/store/collectionSubmissionListStore.d.ts +16 -0
  32. package/lib/features/creation-wizard/CreationWizard.d.ts +2 -0
  33. package/lib/features/creation-wizard/components/FormCreate.d.ts +7 -0
  34. package/lib/features/creation-wizard/components/Members.d.ts +9 -0
  35. package/lib/features/creation-wizard/components/WizardContext.d.ts +8 -0
  36. package/lib/features/creation-wizard/components/WizardHeader.d.ts +3 -0
  37. package/lib/features/creation-wizard/components/WizardLayout.d.ts +3 -0
  38. package/lib/features/creation-wizard/hooks/useAddMember.d.ts +15 -0
  39. package/lib/features/creation-wizard/sharing.utils.d.ts +12 -0
  40. package/lib/features/creation-wizard/store/wizardStore.d.ts +15 -0
  41. package/lib/features/dropdown-actions/components/DropdownActionTable.d.ts +7 -0
  42. package/lib/features/dropdown-actions/hooks/useDropdownActionTable.d.ts +13 -0
  43. package/lib/features/menu/components/CollectMenu.d.ts +5 -0
  44. package/lib/features/menu/components/DesktopMenu.d.ts +1 -0
  45. package/lib/features/menu/components/MenuContext.d.ts +13 -0
  46. package/lib/features/menu/components/MobileMenu.d.ts +1 -0
  47. package/lib/features/menu/store/menuStore.d.ts +20 -0
  48. package/lib/features/modal/components/DeleteCollectionModal.d.ts +3 -0
  49. package/lib/features/modal/components/InstructionModal.d.ts +4 -0
  50. package/lib/features/modal/components/UpdateSubmissionModal.d.ts +9 -0
  51. package/lib/features/modal/hooks/useDeleteCollectionModal.d.ts +5 -0
  52. package/lib/features/submission/components/SubmissionEdit.d.ts +4 -0
  53. package/lib/features/submission/components/SubmissionView.d.ts +5 -0
  54. package/lib/features/submission-actions/components/SubmissionActions.d.ts +6 -0
  55. package/lib/features/submission-list/components/SubmissionFilter.d.ts +1 -0
  56. package/lib/features/submission-list/components/SubmissionsListView.d.ts +1 -0
  57. package/lib/features/submission-list/hooks/useSubmissionPagination.d.ts +7 -0
  58. package/lib/features/submission-list/store/submissionListStore.d.ts +24 -0
  59. package/lib/hooks/useGetStatusSubmission.d.ts +12 -0
  60. package/lib/hooks/useSearch.d.ts +18 -0
  61. package/lib/hooks/useStepNavigations.d.ts +5 -0
  62. package/lib/hooks/useSubmissionForm.d.ts +12 -0
  63. package/lib/hooks/useWizard.d.ts +13 -0
  64. package/lib/i18n.d.ts +2 -0
  65. package/lib/index.d.ts +14 -1
  66. package/lib/index.js +14676 -15
  67. package/lib/main.d.ts +0 -0
  68. package/lib/models/collect.d.ts +12 -0
  69. package/lib/models/menu.d.ts +5 -0
  70. package/lib/pages/Collection.d.ts +4 -0
  71. package/lib/pages/CollectionsLayout.d.ts +2 -0
  72. package/lib/pages/CollectionsList.d.ts +3 -0
  73. package/lib/pages/FormEdit.d.ts +4 -0
  74. package/lib/pages/MembersEdit.d.ts +4 -0
  75. package/lib/pages/MineSubmission.d.ts +6 -0
  76. package/lib/pages/NotFound.d.ts +1 -0
  77. package/lib/pages/PageError.d.ts +1 -0
  78. package/lib/pages/Root.d.ts +2 -0
  79. package/lib/pages/Submission.d.ts +4 -0
  80. package/lib/pages/SubmissionList.d.ts +3 -0
  81. package/lib/providers/index.d.ts +6 -0
  82. package/lib/routes/wizard/wizard.d.ts +2 -0
  83. package/lib/services/api/collection.service.d.ts +14 -0
  84. package/lib/services/api/submission.services.d.ts +8 -0
  85. package/lib/services/api/user.service.d.ts +77 -0
  86. package/lib/services/queries/collection.queries.d.ts +76 -0
  87. package/lib/services/queries/index.d.ts +1 -0
  88. package/lib/services/queries/submission.queries.d.ts +36 -0
  89. package/lib/services/queries/user.queries.d.ts +76 -0
  90. package/lib/store/collectionActionStore.d.ts +29 -0
  91. package/lib/store/createSelectors.d.ts +10 -0
  92. package/lib/store/submissionActionStore.d.ts +32 -0
  93. package/lib/store/userActionStore.d.ts +26 -0
  94. package/lib/style.css +1 -1
  95. package/package.json +7 -6
  96. package/lib/AppHeaderCollection-CnQ2pqtl.js +0 -172
  97. package/lib/CXEL7IU7-Dei8UEaR.js +0 -42
  98. package/lib/Collection-BcJujQH9.js +0 -472
  99. package/lib/CollectionsLayout-BWau0fFT.js +0 -41
  100. package/lib/CollectionsList-DoYvRzYy.js +0 -324
  101. package/lib/DeleteCollectionModal-C8NPFHjI.js +0 -71
  102. package/lib/DropdownActionTable-CJA3djIr.js +0 -84
  103. package/lib/FormEdit-DrlhrKl6.js +0 -102
  104. package/lib/HASRA6WW-Lcj-6-Jg.js +0 -9093
  105. package/lib/I3HPI4QX-BiqSZkoI.js +0 -33
  106. package/lib/MembersEdit--SFUJ5dS.js +0 -77
  107. package/lib/Root-4Xv-j-fs.js +0 -20
  108. package/lib/SearchBarCollect-DBKaVVDV.js +0 -23
  109. package/lib/Submission-Bi1puhNG.js +0 -257
  110. package/lib/SubmissionList-BUexy8AF.js +0 -197
  111. package/lib/emptyscreen-list-collection-CWGxO4Ss.js +0 -4
  112. package/lib/index-DPvhGf6m.js +0 -3485
  113. package/lib/submission.queries-rlTI0q9h.js +0 -86
  114. package/lib/useGetStatusSubmission-DxHmLPxr.js +0 -57
package/lib/main.d.ts ADDED
File without changes
@@ -0,0 +1,12 @@
1
+ import { SharingItem, SingleAttachmentType } from '@edifice.io/react';
2
+ export interface WizardData {
3
+ title: string;
4
+ description: string;
5
+ deadline?: Date;
6
+ attachments: SingleAttachmentType[];
7
+ sharings: SharingItem[];
8
+ }
9
+ export declare enum CollectionContext {
10
+ COLLECTION = "COLLECTION",
11
+ SUBMISSION = "SUBMISSION"
12
+ }
@@ -0,0 +1,5 @@
1
+ export declare const MENU_FILTERS: {
2
+ readonly LIST_COLLECTIONS: "list-collections";
3
+ readonly LIST_SUBMISSIONS: "list-submissions";
4
+ };
5
+ export type MenuFilter = (typeof MENU_FILTERS)[keyof typeof MENU_FILTERS];
@@ -0,0 +1,4 @@
1
+ import { QueryClient } from '@tanstack/react-query';
2
+ import { LoaderFunctionArgs } from 'react-router-dom';
3
+ export declare const loader: (queryClient: QueryClient) => ({ params }: LoaderFunctionArgs) => Promise<null>;
4
+ export declare const Collection: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export declare const loader: () => Promise<null>;
2
+ export declare const Component: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import { QueryClient } from '@tanstack/react-query';
2
+ export declare const loader: (queryClient: QueryClient) => Promise<null>;
3
+ export declare const CollectionsList: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,4 @@
1
+ import { QueryClient } from '@tanstack/react-query';
2
+ import { LoaderFunctionArgs } from 'react-router-dom';
3
+ export declare const loader: (queryClient: QueryClient) => ({ params }: LoaderFunctionArgs) => Promise<null>;
4
+ export declare const FormEdit: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,4 @@
1
+ import { QueryClient } from '@tanstack/react-query';
2
+ import { LoaderFunctionArgs } from 'react-router-dom';
3
+ export declare const loader: (queryClient: QueryClient) => ({ params }: LoaderFunctionArgs) => Promise<null>;
4
+ export declare const MembersEdit: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Resolves the current user's submission for a collection and redirects to it.
3
+ * Used by contributor notifications (collect sharing/update) to display each
4
+ * recipient's own submission — same URL for all, works in batch.
5
+ */
6
+ export declare function MineSubmission(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export declare const NotFound: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export declare const PageError: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export declare const loader: () => Promise<null>;
2
+ export declare function Root(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,4 @@
1
+ import { QueryClient } from '@tanstack/react-query';
2
+ import { LoaderFunctionArgs } from 'react-router-dom';
3
+ export declare const loader: (queryClient: QueryClient) => ({ params }: LoaderFunctionArgs) => Promise<null>;
4
+ export declare const Submission: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import { QueryClient } from '@tanstack/react-query';
2
+ export declare const loader: (queryClient: QueryClient) => Promise<null>;
3
+ export declare const SubmissionsList: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,6 @@
1
+ import { QueryClient } from '@tanstack/react-query';
2
+ import { ReactNode } from 'react';
3
+ export declare const queryClient: QueryClient;
4
+ export declare const Providers: ({ children }: {
5
+ children: ReactNode;
6
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ declare function CreateComponent(): import("react/jsx-runtime").JSX.Element;
2
+ export default CreateComponent;
@@ -0,0 +1,14 @@
1
+ import { CreateCollectionDto, SearchCollectionDto, SearchCollectionToSubmitDto, UpdateCollectionDto, UpdateCollectionSharingDto } from '@edifice.io/collect-client-rest';
2
+ export declare const baseURL = "/collect/api";
3
+ export declare const collectionService: {
4
+ getCollections: (query?: SearchCollectionDto) => Promise<import('@edifice.io/collect-client-rest').SearchCollectionResponseDto>;
5
+ getCollectionsToSubmit: (query?: SearchCollectionToSubmitDto) => Promise<import('@edifice.io/collect-client-rest').SearchCollectionStudentViewDto>;
6
+ getCollection: (id: number) => Promise<import('@edifice.io/collect-client-rest').CollectionDto>;
7
+ createCollection: (data: CreateCollectionDto) => Promise<import('@edifice.io/collect-client-rest').CollectionDto>;
8
+ updateCollection: (id: number, data: UpdateCollectionDto) => Promise<import('@edifice.io/collect-client-rest').CollectionDto>;
9
+ deleteCollection: (id: number) => Promise<boolean>;
10
+ updateSharingCollection: (id: number, data: UpdateCollectionSharingDto) => Promise<import('@edifice.io/collect-client-rest').CollectionDto>;
11
+ getCollectionsToSubmitByIds: (ids: number[], query?: SearchCollectionToSubmitDto) => Promise<import('@edifice.io/collect-client-rest').SearchCollectionStudentViewDto>;
12
+ getCollectionsCount: (query?: SearchCollectionDto) => Promise<import('@edifice.io/collect-client-rest').CountCollectionsByStatusDto>;
13
+ getCollectionsToSubmitCount: (query?: SearchCollectionToSubmitDto) => Promise<import('@edifice.io/collect-client-rest').CountStudentSubmissionsByStatusDto>;
14
+ };
@@ -0,0 +1,8 @@
1
+ import { CreateSubmissionDto, SearchSubmissionDto, UpdateSubmissionStatusDto } from '@edifice.io/collect-client-rest';
2
+ export declare const baseURL = "/collect/api";
3
+ export declare const submissionService: {
4
+ getSubmissions: (collectionId: number, query?: SearchSubmissionDto) => Promise<import('@edifice.io/collect-client-rest').SearchSubmissionResponseDto>;
5
+ getSubmission: (collectionId: number, submissionId: number) => Promise<import('@edifice.io/collect-client-rest').SubmissionDto | null>;
6
+ updateSubmission: (collectionId: number, submissionId: number, data: CreateSubmissionDto) => Promise<import('@edifice.io/collect-client-rest').SubmissionDto>;
7
+ updateSubmissionStatus: (collectionId: number, submissionId: number, data: UpdateSubmissionStatusDto) => Promise<import('@edifice.io/collect-client-rest').SubmissionDto>;
8
+ };
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Flag to disable broadcast groups in user search.
3
+ * Set to true to disable broadcast groups.
4
+ */
5
+ export declare const DISABLE_BROADCASTGROUP_IN_SEARCH = true;
6
+ export declare enum VisibleType {
7
+ USER = "User",
8
+ GROUP = "Group",
9
+ BROADCAST_GROUP = "BroadcastGroup",
10
+ SHAREBOOKMARK = "ShareBookmark"
11
+ }
12
+ export interface VisibleUser {
13
+ id: string;
14
+ displayName: string;
15
+ structureName: string;
16
+ profile: string;
17
+ children: [];
18
+ relatives: Array<{
19
+ displayName: string;
20
+ id: string;
21
+ }>;
22
+ type: VisibleType.USER;
23
+ usedIn: string[];
24
+ }
25
+ export interface VisibleGroup {
26
+ id: string;
27
+ displayName: string;
28
+ structureName: string;
29
+ nbUsers: number;
30
+ groupType: string;
31
+ profile: string;
32
+ type: VisibleType.GROUP | VisibleType.BROADCAST_GROUP;
33
+ usedIn: string[];
34
+ }
35
+ export interface VisibleBookmark {
36
+ id: string;
37
+ displayName: string;
38
+ type: VisibleType.SHAREBOOKMARK;
39
+ usedIn: string[];
40
+ }
41
+ export type SearchVisiblesResponse = Array<VisibleUser | VisibleGroup | VisibleBookmark>;
42
+ export type UserForGroup = {
43
+ type: string;
44
+ id: string;
45
+ displayName: string;
46
+ login: string;
47
+ };
48
+ export type Sharebookmark = {
49
+ id: string;
50
+ name: string;
51
+ };
52
+ export type FetchSharebookmarkResponse = {
53
+ id: string;
54
+ name: string;
55
+ users: UserForSharebookmark[];
56
+ groups: GroupForSharebookmark[];
57
+ };
58
+ export type UserForSharebookmark = {
59
+ id: string;
60
+ displayName: string;
61
+ profile: string;
62
+ activationCode: boolean;
63
+ };
64
+ export type GroupForSharebookmark = {
65
+ id: string;
66
+ name: string;
67
+ groupType: string;
68
+ nbUsers: number;
69
+ activationCode: boolean;
70
+ profile: string;
71
+ sortName: string;
72
+ };
73
+ export declare const createUserService: () => {
74
+ searchVisibles(search?: string, includeHidden?: boolean): Promise<SearchVisiblesResponse>;
75
+ fetchUsersByGroup(groupId: string): Promise<UserForGroup[]>;
76
+ fetchSharebookmark(sharebookmarkId: string): Promise<FetchSharebookmarkResponse>;
77
+ };
@@ -0,0 +1,76 @@
1
+ import { CreateCollectionDto, SearchCollectionDto, SearchCollectionToSubmitDto, UpdateCollectionDto, UpdateCollectionSharingDto } from '@edifice.io/collect-client-rest';
2
+ export declare const collectionsQueryOptions: {
3
+ base: readonly ["collections"];
4
+ baseToSubmit: readonly ["collectionsToSubmit"];
5
+ };
6
+ export declare const collectionsInfiniteQueryOptions: (query?: SearchCollectionDto) => {
7
+ queryKey: (string | SearchCollectionDto | undefined)[];
8
+ queryFn: ({ pageParam }: {
9
+ pageParam?: number | undefined;
10
+ }) => Promise<import('@edifice.io/collect-client-rest').SearchCollectionResponseDto>;
11
+ staleTime: number;
12
+ initialPageParam: number;
13
+ refetchOnMount: boolean;
14
+ getNextPageParam: (lastPage: {
15
+ meta?: {
16
+ currentPage?: number;
17
+ totalPages?: number;
18
+ };
19
+ }) => number | undefined;
20
+ };
21
+ export declare const useCollectionsInfiniteQueryOptions: (query?: SearchCollectionDto) => import('@tanstack/react-query').UseInfiniteQueryResult<import('@tanstack/react-query').InfiniteData<import('@edifice.io/collect-client-rest').SearchCollectionResponseDto, unknown>, Error>;
22
+ export declare const collectionsToSubmitInfiniteQueryOptions: (query?: SearchCollectionToSubmitDto) => {
23
+ queryKey: (string | SearchCollectionToSubmitDto | undefined)[];
24
+ queryFn: ({ pageParam }: {
25
+ pageParam?: number | undefined;
26
+ }) => Promise<import('@edifice.io/collect-client-rest').SearchCollectionStudentViewDto>;
27
+ staleTime: number;
28
+ initialPageParam: number;
29
+ refetchOnMount: boolean;
30
+ getNextPageParam: (lastPage: {
31
+ meta?: {
32
+ currentPage?: number;
33
+ totalPages?: number;
34
+ };
35
+ }) => number | undefined;
36
+ };
37
+ export declare const useLoadNextPageCollectionToSubmit: (query?: SearchCollectionToSubmitDto) => import('@tanstack/react-query').UseInfiniteQueryResult<import('@tanstack/react-query').InfiniteData<import('@edifice.io/collect-client-rest').SearchCollectionStudentViewDto, unknown>, Error>;
38
+ export declare const collectionQueryOptions: (id: number) => {
39
+ queryKey: (string | number)[];
40
+ queryFn: () => Promise<import('@edifice.io/collect-client-rest').CollectionDto>;
41
+ };
42
+ export declare const useCollection: (id: number) => import('@tanstack/react-query').UseQueryResult<import('@edifice.io/collect-client-rest').CollectionDto, Error>;
43
+ export declare const collectionsByIdsQueryOptions: (ids: number[], query?: Omit<SearchCollectionDto, "ids">) => {
44
+ queryKey: (string | number[] | Omit<SearchCollectionDto, "ids">)[];
45
+ queryFn: () => Promise<import('@edifice.io/collect-client-rest').SearchCollectionResponseDto>;
46
+ enabled: boolean;
47
+ };
48
+ export declare const useCollectionsByIds: (ids: number[], query?: Omit<SearchCollectionDto, "ids">) => import('@tanstack/react-query').UseQueryResult<import('@edifice.io/collect-client-rest').SearchCollectionResponseDto, Error>;
49
+ export declare const collectionsToSubmitByIdsQueryOptions: (ids: number[], query?: Omit<SearchCollectionToSubmitDto, "ids">) => {
50
+ queryKey: (string | number[] | Omit<SearchCollectionToSubmitDto, "ids">)[];
51
+ queryFn: () => Promise<import('@edifice.io/collect-client-rest').SearchCollectionStudentViewDto>;
52
+ enabled: boolean;
53
+ };
54
+ export declare const useCollectionsToSubmitByIds: (ids: number[], query?: Omit<SearchCollectionToSubmitDto, "ids">) => import('@tanstack/react-query').UseQueryResult<import('@edifice.io/collect-client-rest').SearchCollectionStudentViewDto, Error>;
55
+ export declare const useCreateCollection: () => import('@tanstack/react-query').UseMutationResult<import('@edifice.io/collect-client-rest').CollectionDto, Error, CreateCollectionDto, unknown>;
56
+ export declare const useUpdateCollection: () => import('@tanstack/react-query').UseMutationResult<import('@edifice.io/collect-client-rest').CollectionDto, Error, {
57
+ id: number;
58
+ data: UpdateCollectionDto;
59
+ }, unknown>;
60
+ export declare const useDeleteCollection: () => import('@tanstack/react-query').UseMutationResult<boolean, Error, number, unknown>;
61
+ export declare const useUpdateSharingCollection: () => import('@tanstack/react-query').UseMutationResult<import('@edifice.io/collect-client-rest').CollectionDto, Error, {
62
+ id: number;
63
+ data: UpdateCollectionSharingDto;
64
+ }, unknown>;
65
+ export declare const collectionsCountQueryOptions: (query?: SearchCollectionDto) => {
66
+ queryKey: readonly ["collections", "count", SearchCollectionDto];
67
+ queryFn: () => Promise<import('@edifice.io/collect-client-rest').CountCollectionsByStatusDto>;
68
+ enabled: boolean;
69
+ };
70
+ export declare const useCollectionsCount: (query?: SearchCollectionDto) => import('@tanstack/react-query').UseQueryResult<import('@edifice.io/collect-client-rest').CountCollectionsByStatusDto, Error>;
71
+ export declare const collectionsToSubmitCountByIdsQueryOptions: (query?: SearchCollectionToSubmitDto) => {
72
+ queryKey: readonly ["collectionsToSubmit", "count", SearchCollectionToSubmitDto];
73
+ queryFn: () => Promise<import('@edifice.io/collect-client-rest').CountStudentSubmissionsByStatusDto>;
74
+ enabled: boolean;
75
+ };
76
+ export declare const useCollectionsToSubmitCountByIds: (query?: SearchCollectionToSubmitDto) => import('@tanstack/react-query').UseQueryResult<import('@edifice.io/collect-client-rest').CountStudentSubmissionsByStatusDto, Error>;
@@ -0,0 +1 @@
1
+ export * from './collection.queries';
@@ -0,0 +1,36 @@
1
+ import { CreateSubmissionDto, SearchSubmissionDto, UpdateSubmissionStatusDto } from '@edifice.io/collect-client-rest';
2
+ export declare const submissionsQueryOptions: {
3
+ base: readonly ["submissions"];
4
+ };
5
+ export declare const submissionsInfiniteQueryOptions: (collectionId: number, query?: SearchSubmissionDto) => {
6
+ queryKey: (number | SearchSubmissionDto | "submissions" | undefined)[];
7
+ queryFn: ({ pageParam }: {
8
+ pageParam?: number | undefined;
9
+ }) => Promise<import('@edifice.io/collect-client-rest').SearchSubmissionResponseDto>;
10
+ staleTime: number;
11
+ initialPageParam: number;
12
+ refetchOnMount: boolean;
13
+ getNextPageParam: (lastPage: {
14
+ meta?: {
15
+ currentPage?: number;
16
+ totalPages?: number;
17
+ };
18
+ }) => number | undefined;
19
+ };
20
+ export declare const useSubmissionsInfiniteQueryOptions: (collectionId: number, query?: SearchSubmissionDto) => import('@tanstack/react-query').UseInfiniteQueryResult<import('@tanstack/react-query').InfiniteData<import('@edifice.io/collect-client-rest').SearchSubmissionResponseDto, unknown>, Error>;
21
+ export declare const submissionQueryOptions: (collectionId: number, submissionId: number) => {
22
+ queryKey: (string | number)[];
23
+ queryFn: () => Promise<import('@edifice.io/collect-client-rest').SubmissionDto | null>;
24
+ staleTime: number;
25
+ };
26
+ export declare const useSubmission: (collectionId: number, submissionId: number) => import('@tanstack/react-query').UseQueryResult<import('@edifice.io/collect-client-rest').SubmissionDto | null, Error>;
27
+ export declare const useUpdateSubmission: () => import('@tanstack/react-query').UseMutationResult<import('@edifice.io/collect-client-rest').SubmissionDto, Error, {
28
+ collectionId: number;
29
+ submissionId: number;
30
+ data: CreateSubmissionDto;
31
+ }, unknown>;
32
+ export declare const useUpdateSubmissionStatus: () => import('@tanstack/react-query').UseMutationResult<import('@edifice.io/collect-client-rest').SubmissionDto, Error, {
33
+ collectionId: number;
34
+ submissionId: number;
35
+ data: UpdateSubmissionStatusDto;
36
+ }, unknown>;
@@ -0,0 +1,76 @@
1
+ import { VisibleBookmark, VisibleGroup, VisibleUser } from '../api/user.service';
2
+ export type Visible = VisibleUser | VisibleGroup | VisibleBookmark;
3
+ export interface Config {
4
+ maxDepth: number;
5
+ recallDelayMinutes: number;
6
+ getVisibleStrategy: "all-at-once" | "filtered";
7
+ }
8
+ export declare const userQueryOptions: {
9
+ base: readonly ["user"];
10
+ /**
11
+ * Get a filtered list of visible users. Filtering is done by the *backend*.
12
+ * @param search The search string to filter the users
13
+ * @returns The query options for the search visible users
14
+ */
15
+ searchVisibles(search?: string, includeHidden?: boolean): import('@tanstack/react-query').OmitKeyof<import('@tanstack/react-query').UseQueryOptions<import('../api/user.service').SearchVisiblesResponse, Error, import('../api/user.service').SearchVisiblesResponse, readonly ["user", "search", {
16
+ search: string;
17
+ } | undefined, {
18
+ includeHidden: true;
19
+ } | undefined]>, "queryFn"> & {
20
+ queryFn?: import('@tanstack/react-query').QueryFunction<import('../api/user.service').SearchVisiblesResponse, readonly ["user", "search", {
21
+ search: string;
22
+ } | undefined, {
23
+ includeHidden: true;
24
+ } | undefined], never> | undefined;
25
+ } & {
26
+ queryKey: readonly ["user", "search", {
27
+ search: string;
28
+ } | undefined, {
29
+ includeHidden: true;
30
+ } | undefined] & {
31
+ [dataTagSymbol]: import('../api/user.service').SearchVisiblesResponse;
32
+ [dataTagErrorSymbol]: Error;
33
+ };
34
+ };
35
+ /**
36
+ * Get users belonging to a specific group
37
+ * @param groupId The ID of the group to fetch users from
38
+ * @returns The query options for fetching users by group
39
+ */
40
+ fetchUsersByGroup(groupId: string): import('@tanstack/react-query').OmitKeyof<import('@tanstack/react-query').UseQueryOptions<import('../api/user.service').UserForGroup[], Error, import('../api/user.service').UserForGroup[], readonly ["user", "group", string]>, "queryFn"> & {
41
+ queryFn?: import('@tanstack/react-query').QueryFunction<import('../api/user.service').UserForGroup[], readonly ["user", "group", string], never> | undefined;
42
+ } & {
43
+ queryKey: readonly ["user", "group", string] & {
44
+ [dataTagSymbol]: import('../api/user.service').UserForGroup[];
45
+ [dataTagErrorSymbol]: Error;
46
+ };
47
+ };
48
+ fetchSharebookmark(sharebookmarkId: string): import('@tanstack/react-query').OmitKeyof<import('@tanstack/react-query').UseQueryOptions<import('../api/user.service').FetchSharebookmarkResponse, Error, import('../api/user.service').FetchSharebookmarkResponse, readonly ["user", "sharebookmark", string]>, "queryFn"> & {
49
+ queryFn?: import('@tanstack/react-query').QueryFunction<import('../api/user.service').FetchSharebookmarkResponse, readonly ["user", "sharebookmark", string], never> | undefined;
50
+ } & {
51
+ queryKey: readonly ["user", "sharebookmark", string] & {
52
+ [dataTagSymbol]: import('../api/user.service').FetchSharebookmarkResponse;
53
+ [dataTagErrorSymbol]: Error;
54
+ };
55
+ };
56
+ };
57
+ /**
58
+ * Hook to get the list of visible users
59
+ * @param search The search string to filter the users
60
+ * @returns list of visible users
61
+ */
62
+ export declare const useSearchVisible: (options?: {
63
+ includeHidden?: boolean;
64
+ }) => {
65
+ searchVisible: (search: string) => Promise<import('../api/user.service').SearchVisiblesResponse>;
66
+ };
67
+ /**
68
+ * Hook to fetch users belonging to a specific group
69
+ * @param groupId The ID of the group to fetch users from
70
+ * @returns Query result with users and groups in the specified group
71
+ */
72
+ export declare const useFetchUsersByGroup: (groupId: string) => {
73
+ users: VisibleUser[];
74
+ isLoading: boolean;
75
+ error: Error | null;
76
+ };
@@ -0,0 +1,29 @@
1
+ interface CollectionActionState {
2
+ isDeleteModalOpen: boolean;
3
+ deleteCollectionId: number | null;
4
+ isInstructionModalOpen: boolean;
5
+ isPastDeadline: boolean;
6
+ onOpenDeleteModal: (id: number) => void;
7
+ onCloseDeleteModal: () => void;
8
+ onOpenInstructionModal: () => void;
9
+ onCloseInstructionModal: () => void;
10
+ setIsPastDeadline: (isPast: boolean) => void;
11
+ }
12
+ export declare const useCollectionActionStore: {
13
+ (): CollectionActionState;
14
+ <U>(selector: (state: CollectionActionState) => U): U;
15
+ <U>(selector: (state: CollectionActionState) => U, equalityFn: (a: U, b: U) => boolean): U;
16
+ } & import('zustand').StoreApi<CollectionActionState> & {
17
+ use: {
18
+ isDeleteModalOpen: () => boolean;
19
+ deleteCollectionId: () => number | null;
20
+ isInstructionModalOpen: () => boolean;
21
+ isPastDeadline: () => boolean;
22
+ onOpenDeleteModal: () => (id: number) => void;
23
+ onCloseDeleteModal: () => () => void;
24
+ onOpenInstructionModal: () => () => void;
25
+ onCloseInstructionModal: () => () => void;
26
+ setIsPastDeadline: () => (isPast: boolean) => void;
27
+ };
28
+ };
29
+ export {};
@@ -0,0 +1,10 @@
1
+ import { StoreApi, UseBoundStore } from 'zustand';
2
+ type WithSelectors<S> = S extends {
3
+ getState: () => infer T;
4
+ } ? S & {
5
+ use: {
6
+ [K in keyof T]: () => T[K];
7
+ };
8
+ } : never;
9
+ export declare const createSelectors: <S extends UseBoundStore<StoreApi<object>>>(_store: S) => WithSelectors<S>;
10
+ export {};
@@ -0,0 +1,32 @@
1
+ import { SubmissionDto } from '@edifice.io/collect-client-rest';
2
+ interface SubmissionActionState {
3
+ submissionId: number | null;
4
+ submissionContent: string;
5
+ isUpdateSubmissionModalOpen: boolean;
6
+ submissionHasContent: boolean;
7
+ submissionIsLoading: boolean;
8
+ onOpenUpdateSubmissionModal: () => void;
9
+ onCloseUpdateSubmissionModal: () => void;
10
+ setSubmissionData: (content: string, hasContent: boolean) => void;
11
+ setSubmissionIsLoading: (isLoading: boolean) => void;
12
+ hydrateSubmissionContent: (submission: SubmissionDto) => void;
13
+ }
14
+ export declare const useSubmissionActionStore: {
15
+ (): SubmissionActionState;
16
+ <U>(selector: (state: SubmissionActionState) => U): U;
17
+ <U>(selector: (state: SubmissionActionState) => U, equalityFn: (a: U, b: U) => boolean): U;
18
+ } & import('zustand').StoreApi<SubmissionActionState> & {
19
+ use: {
20
+ submissionId: () => number | null;
21
+ submissionContent: () => string;
22
+ isUpdateSubmissionModalOpen: () => boolean;
23
+ submissionHasContent: () => boolean;
24
+ submissionIsLoading: () => boolean;
25
+ onOpenUpdateSubmissionModal: () => () => void;
26
+ onCloseUpdateSubmissionModal: () => () => void;
27
+ setSubmissionData: () => (content: string, hasContent: boolean) => void;
28
+ setSubmissionIsLoading: () => (isLoading: boolean) => void;
29
+ hydrateSubmissionContent: () => (submission: SubmissionDto) => void;
30
+ };
31
+ };
32
+ export {};
@@ -0,0 +1,26 @@
1
+ import { SharingItem } from '@edifice.io/react';
2
+ interface UsersCollectionActionState {
3
+ usersCollection: SharingItem[];
4
+ usersToAdd: SharingItem[];
5
+ usersToDelete: SharingItem[];
6
+ setUsersCollection: (usersCollection: SharingItem[]) => void;
7
+ addUsersToAdd: (items: SharingItem[]) => void;
8
+ addUsersToDelete: (items: SharingItem[]) => void;
9
+ resetUsersDiff: () => void;
10
+ }
11
+ export declare const useUsersCollectionActionStore: {
12
+ (): UsersCollectionActionState;
13
+ <U>(selector: (state: UsersCollectionActionState) => U): U;
14
+ <U>(selector: (state: UsersCollectionActionState) => U, equalityFn: (a: U, b: U) => boolean): U;
15
+ } & import('zustand').StoreApi<UsersCollectionActionState> & {
16
+ use: {
17
+ usersCollection: () => SharingItem[];
18
+ usersToAdd: () => SharingItem[];
19
+ usersToDelete: () => SharingItem[];
20
+ setUsersCollection: () => (usersCollection: SharingItem[]) => void;
21
+ addUsersToAdd: () => (items: SharingItem[]) => void;
22
+ addUsersToDelete: () => (items: SharingItem[]) => void;
23
+ resetUsersDiff: () => () => void;
24
+ };
25
+ };
26
+ export {};
package/lib/style.css CHANGED
@@ -1 +1 @@
1
- .table-collections table,.table-submissions table{border-radius:0}.btn.icon-button-hover-no-transition,.btn.icon-button-hover-no-transition span{transition:none}.separator-dashed{height:1px;--color: var(--edifice-gray-400);--dash: 8px;--gap: 6px;background:repeating-linear-gradient(90deg,var(--color) 0 var(--dash),transparent var(--dash) calc(var(--dash) + var(--gap)))}.cancel-gap{margin-left:calc(var(--edifice-gap) * -1);margin-right:-2.4rem}.collectionDescription .tiptap{min-height:150px}#submissionEdit .tiptap{min-height:350px}.wrapper{display:grid;grid-template-rows:0fr;transition:grid-template-rows .25s ease,margin-top .25s ease}.wrapper.open{grid-template-rows:1fr;margin-top:12px}.inner{overflow:hidden}.user-rights-list .table-responsive{max-height:70vh}.user-rights-list .table-responsive table{overflow:visible}.user-rights-list .table-responsive table thead{z-index:1}
1
+ .table-collections table,.table-submissions table{border-radius:0}.btn.icon-button-hover-no-transition,.btn.icon-button-hover-no-transition span{transition:none}.separator-dashed{height:1px;--color: var(--edifice-gray-400);--dash: 8px;--gap: 6px;background:repeating-linear-gradient(90deg,var(--color) 0 var(--dash),transparent var(--dash) calc(var(--dash) + var(--gap)))}.cancel-gap{margin-left:calc(var(--edifice-gap) * -1);margin-right:-2.4rem}.collectionDescription .tiptap{min-height:150px}#submissionEdit .tiptap{min-height:350px}.wrapper{display:grid;grid-template-rows:0fr;transition:grid-template-rows .25s ease,margin-top .25s ease}.wrapper.open{grid-template-rows:1fr;margin-top:12px}.inner{overflow:hidden}.user-rights-list .table-responsive{max-height:70vh}.user-rights-list .table-responsive table{overflow:visible}.user-rights-list .table-responsive table thead{z-index:1}.instruction-card-border{box-shadow:0 .2rem .6em #0000000a}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edifice.io/collect-frontend",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "private": false,
5
5
  "license": "GPL-3.0",
6
6
  "author": "Edifice",
@@ -8,7 +8,8 @@
8
8
  "scripts": {
9
9
  "build": "pnpm run typecheck && vite build && vite build --mode lib",
10
10
  "build:lib": "vite build --mode lib",
11
- "build:prod": "NODE_ENV=production pnpm run typecheck && vite build",
11
+ "build:prod:lib": "vite build --mode lib --debug",
12
+ "build:prod": "NODE_ENV=production pnpm run typecheck && vite build && pnpm run build:prod:lib",
12
13
  "clean": "rm -rf dist lib node_modules",
13
14
  "dev": "vite",
14
15
  "format": "prettier --write .",
@@ -26,9 +27,9 @@
26
27
  },
27
28
  "dependencies": {
28
29
  "@edifice.io/collect-client-rest": "workspace:*",
29
- "@edifice.io/bootstrap": "2.5.21",
30
- "@edifice.io/client": "2.5.21",
31
- "@edifice.io/react": "2.5.21",
30
+ "@edifice.io/bootstrap": "2.5.22",
31
+ "@edifice.io/client": "2.5.22",
32
+ "@edifice.io/react": "2.5.22",
32
33
  "@react-spring/web": "9.7.5",
33
34
  "@tanstack/react-query": "5.81.5",
34
35
  "@uidotdev/usehooks": "2.4.1",
@@ -36,7 +37,7 @@
36
37
  "clsx": "2.1.1",
37
38
  "i18next": "23.8.1",
38
39
  "i18next-http-backend": "2.4.2",
39
- "ode-explorer": "2.5.11",
40
+ "ode-explorer": "2.6.1",
40
41
  "pdfjs-dist": "5.4.394",
41
42
  "react": "18.3.1",
42
43
  "react-dom": "18.3.1",