@atlaskit/reactions 21.8.1 → 22.0.0

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 (104) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/cjs/MockReactionsClient.js +24 -16
  3. package/dist/cjs/analytics/analytics.js +9 -1
  4. package/dist/cjs/analytics/ufo.js +24 -2
  5. package/dist/cjs/components/Counter/Counter.js +16 -20
  6. package/dist/cjs/components/Reaction/Reaction.js +52 -18
  7. package/dist/cjs/components/Reaction/styles.js +8 -1
  8. package/dist/cjs/components/ReactionDialog/ReactionView.js +121 -0
  9. package/dist/cjs/components/ReactionDialog/ReactionsDialog.js +187 -0
  10. package/dist/cjs/components/ReactionDialog/ReactionsList.js +104 -0
  11. package/dist/cjs/components/ReactionDialog/index.js +13 -0
  12. package/dist/cjs/components/ReactionDialog/styles.js +202 -0
  13. package/dist/cjs/components/ReactionPicker/ReactionPicker.js +15 -20
  14. package/dist/cjs/components/ReactionTooltip/ReactionTooltip.js +26 -12
  15. package/dist/cjs/components/ReactionTooltip/styles.js +11 -2
  16. package/dist/cjs/components/Reactions/Reactions.js +166 -21
  17. package/dist/cjs/components/Reactions/styles.js +11 -6
  18. package/dist/cjs/components/Trigger/Trigger.js +1 -2
  19. package/dist/cjs/components/index.js +9 -1
  20. package/dist/cjs/containers/ConnectedReactionPicker/ConnectedReactionPicker.js +6 -2
  21. package/dist/cjs/containers/ConnectedReactionsView/ConnectedReactionsView.js +9 -4
  22. package/dist/cjs/shared/constants.js +62 -10
  23. package/dist/cjs/shared/i18n.js +40 -0
  24. package/dist/cjs/shared/utils.js +60 -2
  25. package/dist/cjs/types/reaction.js +13 -1
  26. package/dist/cjs/version.json +1 -1
  27. package/dist/es2019/MockReactionsClient.js +22 -14
  28. package/dist/es2019/analytics/analytics.js +3 -0
  29. package/dist/es2019/analytics/ufo.js +19 -0
  30. package/dist/es2019/components/Counter/Counter.js +16 -15
  31. package/dist/es2019/components/Reaction/Reaction.js +43 -18
  32. package/dist/es2019/components/Reaction/styles.js +9 -2
  33. package/dist/es2019/components/ReactionDialog/ReactionView.js +69 -0
  34. package/dist/es2019/components/ReactionDialog/ReactionsDialog.js +145 -0
  35. package/dist/es2019/components/ReactionDialog/ReactionsList.js +69 -0
  36. package/dist/es2019/components/ReactionDialog/index.js +1 -0
  37. package/dist/es2019/components/ReactionDialog/styles.js +169 -0
  38. package/dist/es2019/components/ReactionPicker/ReactionPicker.js +12 -20
  39. package/dist/es2019/components/ReactionTooltip/ReactionTooltip.js +22 -12
  40. package/dist/es2019/components/ReactionTooltip/styles.js +9 -1
  41. package/dist/es2019/components/Reactions/Reactions.js +146 -22
  42. package/dist/es2019/components/Reactions/styles.js +9 -5
  43. package/dist/es2019/components/Trigger/Trigger.js +1 -2
  44. package/dist/es2019/components/index.js +2 -1
  45. package/dist/es2019/containers/ConnectedReactionPicker/ConnectedReactionPicker.js +8 -2
  46. package/dist/es2019/containers/ConnectedReactionsView/ConnectedReactionsView.js +5 -4
  47. package/dist/es2019/shared/constants.js +55 -6
  48. package/dist/es2019/shared/i18n.js +43 -0
  49. package/dist/es2019/shared/utils.js +51 -0
  50. package/dist/es2019/types/reaction.js +13 -1
  51. package/dist/es2019/version.json +1 -1
  52. package/dist/esm/MockReactionsClient.js +24 -13
  53. package/dist/esm/analytics/analytics.js +5 -0
  54. package/dist/esm/analytics/ufo.js +19 -0
  55. package/dist/esm/components/Counter/Counter.js +17 -17
  56. package/dist/esm/components/Reaction/Reaction.js +51 -19
  57. package/dist/esm/components/Reaction/styles.js +9 -2
  58. package/dist/esm/components/ReactionDialog/ReactionView.js +98 -0
  59. package/dist/esm/components/ReactionDialog/ReactionsDialog.js +161 -0
  60. package/dist/esm/components/ReactionDialog/ReactionsList.js +79 -0
  61. package/dist/esm/components/ReactionDialog/index.js +1 -0
  62. package/dist/esm/components/ReactionDialog/styles.js +177 -0
  63. package/dist/esm/components/ReactionPicker/ReactionPicker.js +15 -20
  64. package/dist/esm/components/ReactionTooltip/ReactionTooltip.js +26 -12
  65. package/dist/esm/components/ReactionTooltip/styles.js +9 -1
  66. package/dist/esm/components/Reactions/Reactions.js +158 -22
  67. package/dist/esm/components/Reactions/styles.js +9 -5
  68. package/dist/esm/components/Trigger/Trigger.js +1 -2
  69. package/dist/esm/components/index.js +2 -1
  70. package/dist/esm/containers/ConnectedReactionPicker/ConnectedReactionPicker.js +6 -2
  71. package/dist/esm/containers/ConnectedReactionsView/ConnectedReactionsView.js +8 -4
  72. package/dist/esm/shared/constants.js +57 -6
  73. package/dist/esm/shared/i18n.js +40 -0
  74. package/dist/esm/shared/utils.js +53 -0
  75. package/dist/esm/types/reaction.js +13 -1
  76. package/dist/esm/version.json +1 -1
  77. package/dist/types/MockReactionsClient.d.ts +7 -3
  78. package/dist/types/analytics/analytics.d.ts +10 -0
  79. package/dist/types/analytics/ufo.d.ts +18 -2
  80. package/dist/types/components/Counter/Counter.d.ts +0 -1
  81. package/dist/types/components/Reaction/Reaction.d.ts +11 -1
  82. package/dist/types/components/ReactionDialog/ReactionView.d.ts +19 -0
  83. package/dist/types/components/ReactionDialog/ReactionsDialog.d.ts +32 -0
  84. package/dist/types/components/ReactionDialog/ReactionsList.d.ts +23 -0
  85. package/dist/types/components/ReactionDialog/index.d.ts +1 -0
  86. package/dist/types/components/ReactionDialog/styles.d.ts +11 -0
  87. package/dist/types/components/ReactionPicker/ReactionPicker.d.ts +5 -0
  88. package/dist/types/components/ReactionTooltip/ReactionTooltip.d.ts +12 -0
  89. package/dist/types/components/ReactionTooltip/styles.d.ts +1 -0
  90. package/dist/types/components/Reactions/Reactions.d.ts +45 -6
  91. package/dist/types/components/Reactions/styles.d.ts +1 -0
  92. package/dist/types/components/index.d.ts +1 -0
  93. package/dist/types/containers/ConnectedReactionPicker/ConnectedReactionPicker.d.ts +0 -4
  94. package/dist/types/containers/ConnectedReactionsView/ConnectedReactionsView.d.ts +2 -11
  95. package/dist/types/index.d.ts +1 -1
  96. package/dist/types/shared/constants.d.ts +11 -5
  97. package/dist/types/shared/i18n.d.ts +40 -0
  98. package/dist/types/shared/utils.d.ts +7 -0
  99. package/dist/types/types/User.d.ts +10 -0
  100. package/dist/types/types/index.d.ts +1 -1
  101. package/dist/types/types/reaction.d.ts +15 -2
  102. package/docs/0-intro.tsx +3 -0
  103. package/docs/5-graphql-support.tsx +153 -0
  104. package/package.json +8 -6
@@ -0,0 +1,153 @@
1
+ import React from 'react';
2
+ import { md, code, Props } from '@atlaskit/docs';
3
+ import SectionMessage from '@atlaskit/section-message';
4
+
5
+ export default md`
6
+
7
+ ### How to get reactions support GraphQL?
8
+
9
+ The pre-built \`ReactionClient\` is supporting REST APIs, if you want to support GraphQL, please follow best practice below.
10
+
11
+ We have a \`ReactionClient\` interface which can be extended to support integrating with Graphql APIs.
12
+
13
+ You can simply create your own \`ReactionGraphQLClient\` to extend our \`ReactionClient\` interface, and implement each method from interface by using your own GraphQL queries or mutations. Just ensure the payload is matched with the type defined from interface. You may need the data transformation before return the promise.
14
+
15
+ #### 1. Create your own \`ReactionsGraphQLClient\` to support your own GraphQL APIs:
16
+
17
+ ${code`
18
+ import type { ReactionClient } from "@atlaskit/reactions"
19
+
20
+ /**
21
+ * demo purpose, assume apolloClient has initialized in 'graphqlClient'
22
+ */
23
+ import apolloClient from 'graphqlClient'
24
+
25
+ export class ReactionsGraphQLClient implements ReactionClient {
26
+ private clientConfig: ClientConfig;
27
+ // optional, you can set up a clientConfig if you need some extra options that params from methods of ReactionClient doesn't provide.
28
+ constructor(clientConfig: ClientConfig) {
29
+ this.clientConfig = clientConfig;
30
+ }
31
+ getReactions(containerAri: string, aris: string[]) {
32
+ return apolloClient.
33
+ .query({
34
+ query: GET_REACTIONS_QUERY, // your own query to fetch reactions
35
+ variables: {
36
+ containerAri,
37
+ aris,
38
+ })
39
+ .then((response) => {
40
+ // transform data if needed to match return type from interface
41
+ return response.data; // type needs to be Reactions
42
+ });
43
+ }
44
+ getDetailedReaction(containerAri: string, ari: string, emojiId: string) {
45
+ return apolloClient.
46
+ .query({
47
+ query: GET_DETAILED_REACTION, // your own query to fetch detailed reaction
48
+ variables: {
49
+ containerAri,
50
+ aris,
51
+ })
52
+ .then((response) => {
53
+ // transform data if needed to match return type from interface
54
+ return response.data; // type needs to be Reactions
55
+ });
56
+ }
57
+ addReaction(containerAri: string, ari: string, emojiId: string) {
58
+ return apolloClient.
59
+ .mutate({
60
+ mutation: ADD_REACTION, // your own mutation to add reaction
61
+ variables: {
62
+ containerAri,
63
+ ari,
64
+ emojiId,
65
+ })
66
+ .then((response) => {
67
+ // transform data if needed to match return type from interface
68
+ return response.data; // type needs to be Reactions
69
+ });
70
+ }
71
+ deleteReaction(containerAri: string, ari: string, emojiId: string) {
72
+ return apolloClient.
73
+ .mutate({
74
+ mutation: REMOVE_REACTION, // your own mutation to delete reaction
75
+ variables: {
76
+ containerAri,
77
+ ari,
78
+ emojiId,
79
+ })
80
+ .then((response) => {
81
+ // transform data if needed to match return type from interface
82
+ return response.data; // type needs to be Reactions
83
+ });
84
+ }
85
+ }
86
+ `}
87
+
88
+ #### 2. Set up ReactionsStore with \`ReactionGraphQLClient\`:
89
+
90
+ ${code`
91
+ const intialState: State = {
92
+ reactions: {},
93
+ flash: {}
94
+ };
95
+
96
+ const reactionsStore = useMemo(() => {
97
+ return new MemoryReactionsStore(
98
+ new ReactionsGraphQLClient(
99
+ clientConfig, // client config from your own to provie extra options for your GraphQL APIs
100
+ ),
101
+ initialState,
102
+ {
103
+ subproduct: 'atlaskit', // e.g. jira, confluence, etc
104
+ }
105
+ );
106
+ }, [clientConfig]);
107
+ `}
108
+
109
+ #### 3. Consume your reactionsStore in your ConnectedReactionsView
110
+
111
+ ${code`
112
+ ReactDOM.render(
113
+ <ConnectedReactionsView
114
+ store={reactionsStore}
115
+ containerAri={containerAri}
116
+ ari={demoAri}
117
+ emojiProvider={Promise.resolve(emojiResource)}
118
+ />
119
+ container,
120
+ };`}
121
+
122
+ ${(
123
+ <>
124
+ <br />
125
+ <SectionMessage
126
+ appearance="information"
127
+ title="There should be only one instance of EmojiResource in your application"
128
+ >
129
+ <p>
130
+ Above examples show the best practice to integrate Graphql APIs. By
131
+ extending from our `ReactionsClient` interface, you are free to use any
132
+ GrapqhQL client, any queries or mutations, as long as they return the
133
+ same type as defined in the interface.
134
+ </p>
135
+ </SectionMessage>
136
+ <br />
137
+ <SectionMessage appearance="warning">
138
+ Use base UI Components `Reactions` from `@atlaskit/reactions` directly
139
+ with your own implementation around to support GraphQL or custom behavior
140
+ is at your own risk. Without using ReactionsStore, we can't track the
141
+ operations of reactions, please add your own tracking to measure. The
142
+ custom implementation will lead to limited support from us.
143
+ </SectionMessage>
144
+ </>
145
+ )}
146
+
147
+ ${(
148
+ <Props
149
+ heading="ReactionClient type"
150
+ props={require('!!extract-react-types-loader!../extract-react-type/reactionClient')}
151
+ />
152
+ )}
153
+ `;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/reactions",
3
- "version": "21.8.1",
3
+ "version": "22.0.0",
4
4
  "description": "Reactions component",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -28,12 +28,16 @@
28
28
  "@atlaskit/analytics-gas-types": "^5.0.0",
29
29
  "@atlaskit/analytics-namespaced-context": "^6.5.0",
30
30
  "@atlaskit/analytics-next": "^8.2.0",
31
- "@atlaskit/button": "^16.4.0",
31
+ "@atlaskit/avatar": "^21.0.0",
32
+ "@atlaskit/button": "^16.5.0",
32
33
  "@atlaskit/ds-lib": "^2.1.0",
33
- "@atlaskit/emoji": "^66.0.0",
34
+ "@atlaskit/emoji": "^66.1.0",
34
35
  "@atlaskit/icon": "^21.11.0",
36
+ "@atlaskit/modal-dialog": "^12.2.0",
35
37
  "@atlaskit/motion": "^1.3.0",
36
- "@atlaskit/popper": "^5.0.0",
38
+ "@atlaskit/popper": "^5.4.0",
39
+ "@atlaskit/spinner": "^15.3.0",
40
+ "@atlaskit/tabs": "^13.2.12",
37
41
  "@atlaskit/theme": "^12.2.0",
38
42
  "@atlaskit/tokens": "^0.11.0",
39
43
  "@atlaskit/tooltip": "^17.6.0",
@@ -64,8 +68,6 @@
64
68
  "@testing-library/react-hooks": "^8.0.1",
65
69
  "@testing-library/user-event": "^14.4.3",
66
70
  "dotenv": "^8.2.0",
67
- "enzyme": "^3.10.0",
68
- "enzyme-adapter-react-16": "^1.15.1",
69
71
  "es6-promise": "^4.0.5",
70
72
  "fetch-mock": "^8.0.0",
71
73
  "react": "^16.8.0",