@apolitical/component-library 6.1.1 → 6.1.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 (32) hide show
  1. package/discussion/components/form/form.type.d.ts +2 -21
  2. package/discussion/components/form/index.d.ts +1 -1
  3. package/discussion/feeds/replies-feed/cache/hooks/feed/index.d.ts +1 -0
  4. package/discussion/feeds/replies-feed/cache/hooks/feed/parse-replies/index.d.ts +1 -0
  5. package/discussion/feeds/replies-feed/cache/hooks/feed/parse-replies/mocks/index.d.ts +2 -0
  6. package/discussion/feeds/replies-feed/cache/hooks/feed/parse-replies/mocks/replies.mock.d.ts +2 -0
  7. package/discussion/feeds/replies-feed/cache/hooks/feed/parse-replies/mocks/user.mock.d.ts +4 -0
  8. package/discussion/feeds/replies-feed/cache/hooks/feed/parse-replies/parse-replies.d.ts +28 -0
  9. package/discussion/feeds/replies-feed/components/add-reply-form/add-reply-form.d.ts +16 -0
  10. package/discussion/feeds/replies-feed/components/add-reply-form/index.d.ts +1 -0
  11. package/discussion/feeds/replies-feed/components/index.d.ts +3 -0
  12. package/discussion/feeds/replies-feed/components/load-more-replies-button/index.d.ts +1 -0
  13. package/discussion/feeds/replies-feed/components/load-more-replies-button/load-more-replies-button.d.ts +13 -0
  14. package/discussion/feeds/replies-feed/{nested-replies-feed → components/nested-replies-feed}/nested-replies-feed.d.ts +3 -3
  15. package/discussion/feeds/replies-feed/components/reply-item/index.d.ts +1 -0
  16. package/discussion/feeds/replies-feed/components/reply-item/reply-item.d.ts +26 -0
  17. package/discussion/feeds/replies-feed/mocks/index.d.ts +1 -0
  18. package/discussion/feeds/replies-feed/mocks/parsed-replies-feed.mock.d.ts +13 -0
  19. package/discussion/feeds/replies-feed/replies-feed.d.ts +4 -2
  20. package/discussion/sections/activity-section/activity-section.helpers.d.ts +2 -0
  21. package/discussion/sections/activity-section/activity-section.mock.d.ts +103 -0
  22. package/discussion/sections/activity-section/mocks/activity-functions.mock.d.ts +46 -0
  23. package/discussion/sections/activity-section/mocks/activity-section.mock.d.ts +45 -39
  24. package/discussion/sections/activity-section/mocks/index.d.ts +1 -0
  25. package/discussion/shared/interfaces/discussion.interface.d.ts +19 -0
  26. package/helpers/intl.d.ts +1 -0
  27. package/index.js +36 -36
  28. package/index.mjs +7714 -7601
  29. package/package.json +1 -1
  30. /package/discussion/feeds/replies-feed/{nested-replies-feed → components/nested-replies-feed}/index.d.ts +0 -0
  31. /package/discussion/feeds/replies-feed/{nested-replies-feed → components/nested-replies-feed}/mocks/index.d.ts +0 -0
  32. /package/discussion/feeds/replies-feed/{nested-replies-feed → components/nested-replies-feed}/mocks/nested-replies-feed.mock.d.ts +0 -0
@@ -1,6 +1,6 @@
1
1
  import type { IEnrichedUrlData } from '../../../navigation';
2
- import { DiscussionCreateContentFunction, IDiscussionContent, IListMemberData, IMentions, IDiscussionFormFns } from './../../discussion';
3
- import { ICategory } from '../../shared';
2
+ import { IDiscussionContent, IMentions } from './../../discussion';
3
+ import { ICategory, IDiscussionFormFunctions } from '../../shared';
4
4
  export interface IDiscussionFormMeta {
5
5
  /** Whether the form data is still loading */
6
6
  isLoading?: boolean;
@@ -36,24 +36,6 @@ export interface IDiscussionFormMeta {
36
36
  /** Whether the success message should show on a successful submit */
37
37
  showSuccessMessage?: boolean;
38
38
  }
39
- interface IDiscussionFormFunctions extends IDiscussionFormFns {
40
- onChange?: (args: {
41
- [key: string]: string | boolean;
42
- }) => void;
43
- create: DiscussionCreateContentFunction;
44
- handleSaveEdit?: (({ title, body }: {
45
- title: string;
46
- body: string;
47
- }) => Promise<void>) | (() => void);
48
- handleCancel?: () => void;
49
- callback?: (args: void) => void;
50
- onMention?: (value?: IListMemberData) => void;
51
- props?: {
52
- create: {
53
- projectNames: ['questions-answers'];
54
- };
55
- };
56
- }
57
39
  export interface IDiscussionForm {
58
40
  /** A unique ID for the form */
59
41
  id?: string;
@@ -107,4 +89,3 @@ export interface IDiscussionFormState {
107
89
  link?: false | IEnrichedUrlData;
108
90
  };
109
91
  }
110
- export {};
@@ -1,2 +1,2 @@
1
- export type { IDiscussionForm, IDiscussionFormMeta } from './form.type';
1
+ export type { IDiscussionForm, IDiscussionFormMeta, } from './form.type';
2
2
  export { default as DiscussionForm } from './form';
@@ -1 +1,2 @@
1
1
  export * from './feed.hook';
2
+ export type { IParsedReplies } from './parse-replies';
@@ -0,0 +1 @@
1
+ export * from './parse-replies';
@@ -0,0 +1,2 @@
1
+ export * from './replies.mock';
2
+ export * from './user.mock';
@@ -0,0 +1,2 @@
1
+ import { IReaction } from '../../../../../../../../discussion/shared';
2
+ export declare const repliesMock: IReaction[];
@@ -0,0 +1,4 @@
1
+ export declare const userMock: {
2
+ id: string;
3
+ isLoading: boolean;
4
+ };
@@ -0,0 +1,28 @@
1
+ import { IUserContext } from '../../../../../../../context';
2
+ import { IMentions, IReaction } from '../../../../../../../discussion/shared';
3
+ import { DefaultGenerics, EnrichedUser } from 'getstream';
4
+ interface ExtractedReplyData {
5
+ mentions?: IMentions;
6
+ [key: string]: unknown;
7
+ }
8
+ export interface IParsedReplies {
9
+ body: string;
10
+ data: ExtractedReplyData;
11
+ likeId: string;
12
+ liked: boolean;
13
+ likes: number;
14
+ peopleWhoLiked: {
15
+ id: string;
16
+ name: string;
17
+ }[] | false;
18
+ replyId: string;
19
+ userLiked: boolean;
20
+ createdAt: string;
21
+ parent: string;
22
+ user: EnrichedUser<DefaultGenerics> | undefined;
23
+ }
24
+ export declare function parseReplies({ replies, user, }: {
25
+ replies: IReaction[];
26
+ user: IUserContext;
27
+ }): IParsedReplies[];
28
+ export {};
@@ -0,0 +1,16 @@
1
+ /// <reference types="react" />
2
+ import { IDiscussionFormFunctions } from '../../../../../discussion/shared';
3
+ interface Props {
4
+ /** Whether the user is a member of the community */
5
+ isMember: boolean;
6
+ /** The ID of the parent, used for slugs */
7
+ parentId: string;
8
+ /** Query functions for the mentions */
9
+ formFunctions: IDiscussionFormFunctions;
10
+ /** Function to join the community */
11
+ join: () => Promise<void>;
12
+ /** Function to leave the community */
13
+ leave: () => Promise<void>;
14
+ }
15
+ export default function AddReplyForm({ parentId, isMember, formFunctions, leave, join, }: Props): JSX.Element;
16
+ export {};
@@ -0,0 +1 @@
1
+ export { default as AddReplyForm } from './add-reply-form';
@@ -0,0 +1,3 @@
1
+ export * from './add-reply-form';
2
+ export * from './load-more-replies-button';
3
+ export * from './reply-item';
@@ -0,0 +1 @@
1
+ export { default as LoadMoreRepliesButton } from './load-more-replies-button';
@@ -0,0 +1,13 @@
1
+ /// <reference types="react" />
2
+ interface Props {
3
+ /** Whether there is a next page */
4
+ hasNextPage: boolean;
5
+ /** Function to fetch the next page */
6
+ fetchNextPage: () => void;
7
+ /** The index to focus on */
8
+ setFocusReplyIndex: (index: number) => void;
9
+ /** The total number of replies */
10
+ totalReplies: number;
11
+ }
12
+ export default function LoadMoreRepliesButton({ hasNextPage, fetchNextPage, setFocusReplyIndex, totalReplies, }: Props): JSX.Element;
13
+ export {};
@@ -1,7 +1,7 @@
1
1
  /// <reference types="react" />
2
- import type { IDiscussionFormFns } from '../../../../discussion/discussion.d';
3
- import { ILikesFeedQueryFns } from '../../../../discussion/feeds/likes-feed';
4
- import { type IQueryFns } from './../cache';
2
+ import type { IDiscussionFormFns } from '../../../../../discussion/discussion.d';
3
+ import { ILikesFeedQueryFns } from '../../../../../discussion/feeds/likes-feed';
4
+ import { type IQueryFns } from '../../cache';
5
5
  interface NestedRepliesFunctions {
6
6
  /** Functions for the replies query */
7
7
  reactions: IQueryFns;
@@ -0,0 +1 @@
1
+ export { default as ReplyItem } from './reply-item';
@@ -0,0 +1,26 @@
1
+ /// <reference types="react" />
2
+ import { ILikesFeedQueryFns } from '../../../../../discussion/feeds/likes-feed';
3
+ import type { IDiscussionFormFns } from '../../../../discussion';
4
+ import type { IQueryFns, IParsedReplies } from '../../cache';
5
+ interface Props {
6
+ /** The ID of the activity the replies are for */
7
+ activityId: string;
8
+ /** The base path, used for slugs */
9
+ basePath: string;
10
+ /** The ID of the parent, used for slugs */
11
+ parentId: string;
12
+ /** Whether the user is a member of the community */
13
+ isMember: boolean;
14
+ /** The reply data */
15
+ reply: IParsedReplies;
16
+ /** Whether to show the replies */
17
+ focus: boolean;
18
+ /** Functions for the replies query */
19
+ formFns: {
20
+ form: IDiscussionFormFns;
21
+ reactions: IQueryFns;
22
+ likes: ILikesFeedQueryFns;
23
+ };
24
+ }
25
+ export default function ReplyItem({ formFns, activityId, basePath, focus, isMember, parentId, reply, }: Props): JSX.Element;
26
+ export {};
@@ -1 +1,2 @@
1
+ export * from './parsed-replies-feed.mock';
1
2
  export * from './replies-feed.mock';
@@ -0,0 +1,13 @@
1
+ export declare const parsedRepliesMock: {
2
+ user: string;
3
+ body: string;
4
+ createdAt: string;
5
+ data: {};
6
+ likeId: string;
7
+ liked: boolean;
8
+ likes: number;
9
+ peopleWhoLiked: never[];
10
+ replyId: string;
11
+ parent: string;
12
+ userLiked: boolean;
13
+ }[];
@@ -1,12 +1,12 @@
1
1
  /// <reference types="react" />
2
2
  import { type IProfileFormProps } from '../../../form';
3
3
  import { ILikesFeedQueryFns } from '../../../discussion/feeds/likes-feed';
4
- import type { IDiscussionFormFns } from './../../discussion';
4
+ import type { IDiscussionFormFns } from '../../discussion';
5
5
  import { type IQueryFns } from './cache';
6
6
  interface RepliesFunctions {
7
7
  /** Functions for the replies query */
8
8
  reactions: IQueryFns;
9
- /** Functions for the likes query */
9
+ /** Functions for likes query */
10
10
  likes: ILikesFeedQueryFns;
11
11
  /** Query functions for the mentions */
12
12
  form: IDiscussionFormFns;
@@ -30,6 +30,8 @@ interface Props {
30
30
  functions: RepliesFunctions;
31
31
  /** Props to pass into the profile form */
32
32
  profile: IProfileFormProps;
33
+ /** Whether to show the replies */
34
+ showReplies: boolean;
33
35
  }
34
36
  declare const RepliesFeed: React.FC<Props>;
35
37
  export default RepliesFeed;
@@ -0,0 +1,2 @@
1
+ import type { ReactionsRecords, DefaultGenerics } from 'getstream';
2
+ export declare function checkIfUserHasVoted(activityType: string, latestReactions: ReactionsRecords<DefaultGenerics> | undefined): boolean;
@@ -0,0 +1,103 @@
1
+ import type { IActivity, IReaction } from '../../shared';
2
+ import { type IMention } from '../../../form';
3
+ export declare const functions: {
4
+ activities: {
5
+ read: () => Promise<IActivity>;
6
+ edit: () => Promise<IActivity>;
7
+ like: () => Promise<IReaction>;
8
+ remove: () => Promise<void>;
9
+ unlike: () => Promise<IReaction>;
10
+ pin: () => Promise<IReaction>;
11
+ unpin: () => Promise<IReaction>;
12
+ };
13
+ reactions: {
14
+ create: () => Promise<IReaction>;
15
+ edit: () => Promise<IReaction>;
16
+ like: () => Promise<IReaction>;
17
+ list: () => Promise<{
18
+ results: IReaction[];
19
+ next: string;
20
+ duration: string;
21
+ }>;
22
+ remove: () => Promise<void>;
23
+ unlike: () => Promise<IReaction>;
24
+ };
25
+ form: {
26
+ listMembers: () => Promise<IMention[]>;
27
+ clickMentionFallback: () => Promise<unknown>;
28
+ };
29
+ likes: {
30
+ list: () => Promise<{
31
+ results: never[];
32
+ next: string;
33
+ duration: string;
34
+ }>;
35
+ };
36
+ join: () => Promise<void>;
37
+ leave: () => Promise<void>;
38
+ };
39
+ export declare const args: {
40
+ basePath: string;
41
+ parentId: string;
42
+ activityId: string;
43
+ isMember: boolean;
44
+ isOwner: boolean;
45
+ profile: {
46
+ hooks: {
47
+ useMaps: () => {
48
+ buildLocation: (input: string) => Promise<{
49
+ id: string;
50
+ en: string;
51
+ code: string;
52
+ }>;
53
+ isValidPlace: (input: string) => boolean;
54
+ predictPlaces: (input: string) => Promise<never[]>;
55
+ };
56
+ };
57
+ functions: {
58
+ uploadImage: () => Promise<void>;
59
+ onSuccess: () => Promise<void>;
60
+ onFailure: () => void;
61
+ };
62
+ };
63
+ functions: {
64
+ activities: {
65
+ read: () => Promise<IActivity>;
66
+ edit: () => Promise<IActivity>;
67
+ like: () => Promise<IReaction>;
68
+ remove: () => Promise<void>;
69
+ unlike: () => Promise<IReaction>;
70
+ pin: () => Promise<IReaction>;
71
+ unpin: () => Promise<IReaction>;
72
+ };
73
+ reactions: {
74
+ create: () => Promise<IReaction>;
75
+ edit: () => Promise<IReaction>;
76
+ like: () => Promise<IReaction>;
77
+ list: () => Promise<{
78
+ results: IReaction[];
79
+ next: string;
80
+ duration: string;
81
+ }>;
82
+ remove: () => Promise<void>;
83
+ unlike: () => Promise<IReaction>;
84
+ };
85
+ form: {
86
+ listMembers: () => Promise<IMention[]>;
87
+ clickMentionFallback: () => Promise<unknown>;
88
+ };
89
+ likes: {
90
+ list: () => Promise<{
91
+ results: never[];
92
+ next: string;
93
+ duration: string;
94
+ }>;
95
+ };
96
+ join: () => Promise<void>;
97
+ leave: () => Promise<void>;
98
+ };
99
+ categories: {
100
+ name: string;
101
+ slug: string;
102
+ }[];
103
+ };
@@ -0,0 +1,46 @@
1
+ export declare const mockFunctions: {
2
+ activities: {
3
+ edit: jest.Mock<any, any, any>;
4
+ like: jest.Mock<any, any, any>;
5
+ read: jest.Mock<any, any, any>;
6
+ remove: jest.Mock<any, any, any>;
7
+ unlike: jest.Mock<any, any, any>;
8
+ pin: jest.Mock<any, any, any>;
9
+ unpin: jest.Mock<any, any, any>;
10
+ };
11
+ reactions: {
12
+ add: jest.Mock<any, any, any>;
13
+ remove: jest.Mock<any, any, any>;
14
+ create: jest.Mock<any, any, any>;
15
+ edit: jest.Mock<any, any, any>;
16
+ like: jest.Mock<any, any, any>;
17
+ list: jest.Mock<any, any, any>;
18
+ unlike: jest.Mock<any, any, any>;
19
+ };
20
+ likes: {
21
+ add: jest.Mock<any, any, any>;
22
+ remove: jest.Mock<any, any, any>;
23
+ list: jest.Mock<any, any, any>;
24
+ };
25
+ form: {
26
+ submit: jest.Mock<any, any, any>;
27
+ validate: jest.Mock<any, any, any>;
28
+ listMembers: jest.Mock<any, any, any>;
29
+ clickMentionFallback: jest.Mock<any, any, any>;
30
+ };
31
+ join: jest.Mock<any, any, any>;
32
+ leave: jest.Mock<any, any, any>;
33
+ };
34
+ export declare const mockProfileHooks: {
35
+ useProfile: jest.Mock<any, any, any>;
36
+ useProfileUpdate: jest.Mock<any, any, any>;
37
+ useMaps: jest.Mock<any, any, any>;
38
+ };
39
+ export declare const mockProfileFunctions: {
40
+ updateProfile: jest.Mock<any, any, any>;
41
+ getProfile: jest.Mock<any, any, any>;
42
+ uploadImage: jest.Mock<any, any, any>;
43
+ onSuccess: jest.Mock<any, any, any>;
44
+ onCancel: jest.Mock<any, any, any>;
45
+ onFailure: jest.Mock<any, any, any>;
46
+ };
@@ -1,46 +1,52 @@
1
1
  export declare const activitySectionMock: {
2
- actor: {
3
- created_at: string;
4
- updated_at: string;
5
- id: string;
6
- data: {
7
- jobTitle: string;
8
- name: string;
9
- organization: string;
10
- location: {
11
- en: string;
12
- };
13
- badges: {
14
- communities: {
15
- 'community-slug': string[];
2
+ POST: {
3
+ actor: {
4
+ created_at: string;
5
+ updated_at: string;
6
+ id: string;
7
+ data: {
8
+ jobTitle: string;
9
+ name: string;
10
+ organization: string;
11
+ location: {
12
+ en: string;
13
+ };
14
+ badges: {
15
+ communities: {
16
+ 'community-slug': string[];
17
+ };
16
18
  };
17
19
  };
18
20
  };
21
+ categories: never[];
22
+ content: string;
23
+ feed_id: string;
24
+ foreign_id: string;
25
+ id: string;
26
+ latest_reactions: {
27
+ like: never[];
28
+ reply: never[];
29
+ };
30
+ latest_reactions_extra: {
31
+ like: never[];
32
+ reply: never[];
33
+ };
34
+ object: string;
35
+ origin: null;
36
+ own_reactions: {
37
+ like: never[];
38
+ reply: never[];
39
+ };
40
+ reaction_counts: {
41
+ like: number;
42
+ reply: number;
43
+ };
44
+ target: string;
45
+ time: string;
46
+ verb: string;
19
47
  };
20
- categories: string[];
21
- content: string;
22
- feed_id: string;
23
- foreign_id: string;
24
- id: string;
25
- latest_reactions: {
26
- like: never[];
27
- reply: never[];
28
- };
29
- latest_reactions_extra: {
30
- like: never[];
31
- reply: never[];
32
- };
33
- object: string;
34
- origin: null;
35
- own_reactions: {
36
- like: never[];
37
- reply: never[];
38
- };
39
- reaction_counts: {
40
- like: number;
41
- reply: number;
48
+ POLL: {
49
+ total_replies: number;
50
+ verb: string;
42
51
  };
43
- target: string;
44
- time: string;
45
- verb: string;
46
52
  };
@@ -1,2 +1,3 @@
1
1
  export { repliesFeedMock } from '../../../feeds/replies-feed';
2
+ export * from './activity-functions.mock';
2
3
  export * from './activity-section.mock';
@@ -1,6 +1,7 @@
1
1
  import { MemberProps, MemberDetailsProps } from '../../../user';
2
2
  import type { ListMembers, ClickMentionFallback } from '../../../form';
3
3
  import type { IEnrichedUrlData } from '../../../navigation';
4
+ import { IDiscussionFormFns } from '../../discussion';
4
5
  export type IDiscussionContentType = 'answer' | 'post' | 'response' | 'reply' | 'question';
5
6
  export interface IDiscussionContent {
6
7
  /** The type of content */
@@ -90,3 +91,21 @@ export interface IConversation {
90
91
  prepopulateForm?: string;
91
92
  mentionData?: IListMemberData;
92
93
  }
94
+ export interface IDiscussionFormFunctions extends IDiscussionFormFns {
95
+ onChange?: (args: {
96
+ [key: string]: string | boolean;
97
+ }) => void;
98
+ create: DiscussionCreateContentFunction;
99
+ handleSaveEdit?: (({ title, body }: {
100
+ title: string;
101
+ body: string;
102
+ }) => Promise<void>) | (() => void);
103
+ handleCancel?: () => void;
104
+ callback?: (args: void) => void;
105
+ onMention?: (value?: IListMemberData) => void;
106
+ props?: {
107
+ create: {
108
+ projectNames: ['questions-answers'];
109
+ };
110
+ };
111
+ }
package/helpers/intl.d.ts CHANGED
@@ -350,6 +350,7 @@ export declare const checkIntlPathExists: (path: string, language?: {
350
350
  poll_num_votes: string;
351
351
  poll_remove_vote_button: string;
352
352
  poll_aria_votes: string;
353
+ replies_feed_missing_polls_vote_message: string;
353
354
  tableOfContents: string;
354
355
  timeToComplete_hours: string;
355
356
  timeToComplete_hours_short: string;