@originallyus/feedback-rn-sdk 3.0.9 → 4.0.0-beta.1

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 (166) hide show
  1. package/{LICENSE.txt → LICENSE} +1 -2
  2. package/README.md +69 -176
  3. package/lib/module/AIAContentUsefulness.js +273 -0
  4. package/lib/module/AIAContentUsefulness.js.map +1 -0
  5. package/lib/module/AIAFeedback.js +295 -0
  6. package/lib/module/AIAFeedback.js.map +1 -0
  7. package/lib/module/AIAFeedbackForm.js +212 -0
  8. package/lib/module/AIAFeedbackForm.js.map +1 -0
  9. package/lib/module/AIAFeedbackSplash.js +57 -0
  10. package/lib/module/AIAFeedbackSplash.js.map +1 -0
  11. package/lib/module/AIAFeedbackStyles.js +329 -0
  12. package/lib/module/AIAFeedbackStyles.js.map +1 -0
  13. package/lib/module/AIAFeedbackSuccess.js +68 -0
  14. package/lib/module/AIAFeedbackSuccess.js.map +1 -0
  15. package/lib/module/assets/CheckIcon.js +21 -0
  16. package/lib/module/assets/CheckIcon.js.map +1 -0
  17. package/lib/module/assets/CloseIcon.js +21 -0
  18. package/lib/module/assets/CloseIcon.js.map +1 -0
  19. package/lib/module/assets/ErrorIcon.js +23 -0
  20. package/lib/module/assets/ErrorIcon.js.map +1 -0
  21. package/lib/module/assets/PlusIcon.js +21 -0
  22. package/lib/module/assets/PlusIcon.js.map +1 -0
  23. package/lib/module/assets/StarIcon.js +21 -0
  24. package/lib/module/assets/StarIcon.js.map +1 -0
  25. package/lib/module/component/Button.js +49 -0
  26. package/lib/module/component/Button.js.map +1 -0
  27. package/lib/module/component/ButtonSubmit.js +194 -0
  28. package/lib/module/component/ButtonSubmit.js.map +1 -0
  29. package/lib/module/component/Input.js +172 -0
  30. package/lib/module/component/Input.js.map +1 -0
  31. package/lib/module/component/MultiSelectButtons.js +174 -0
  32. package/lib/module/component/MultiSelectButtons.js.map +1 -0
  33. package/lib/module/component/README.md +215 -0
  34. package/lib/module/component/READMEVI.md +192 -0
  35. package/lib/module/component/Rating.js +168 -0
  36. package/lib/module/component/Rating.js.map +1 -0
  37. package/lib/module/component/RatingNumber.js +268 -0
  38. package/lib/module/component/RatingNumber.js.map +1 -0
  39. package/lib/module/component/Textarea.js +163 -0
  40. package/lib/module/component/Textarea.js.map +1 -0
  41. package/lib/module/component/YesNoButtons.js +161 -0
  42. package/lib/module/component/YesNoButtons.js.map +1 -0
  43. package/lib/module/index.js +13 -0
  44. package/lib/module/index.js.map +1 -0
  45. package/lib/module/package.json +1 -0
  46. package/lib/module/service/feedbackService.js +77 -0
  47. package/lib/module/service/feedbackService.js.map +1 -0
  48. package/lib/module/utils/common.js +199 -0
  49. package/lib/module/utils/common.js.map +1 -0
  50. package/lib/module/utils/constants.js +48 -0
  51. package/lib/module/utils/constants.js.map +1 -0
  52. package/lib/module/utils/index.js +140 -0
  53. package/lib/module/utils/index.js.map +1 -0
  54. package/lib/module/utils/networking.js +121 -0
  55. package/lib/module/utils/networking.js.map +1 -0
  56. package/lib/typescript/AIAContentUsefulness.d.ts +14 -0
  57. package/lib/typescript/AIAContentUsefulness.d.ts.map +1 -0
  58. package/lib/typescript/AIAFeedback.d.ts +15 -0
  59. package/lib/typescript/AIAFeedback.d.ts.map +1 -0
  60. package/lib/typescript/AIAFeedbackForm.d.ts +22 -0
  61. package/lib/typescript/AIAFeedbackForm.d.ts.map +1 -0
  62. package/lib/typescript/AIAFeedbackSplash.d.ts +10 -0
  63. package/lib/typescript/AIAFeedbackSplash.d.ts.map +1 -0
  64. package/lib/typescript/AIAFeedbackStyles.d.ts +342 -0
  65. package/lib/typescript/AIAFeedbackStyles.d.ts.map +1 -0
  66. package/lib/typescript/AIAFeedbackSuccess.d.ts +11 -0
  67. package/lib/typescript/AIAFeedbackSuccess.d.ts.map +1 -0
  68. package/lib/typescript/assets/CheckIcon.d.ts +7 -0
  69. package/lib/typescript/assets/CheckIcon.d.ts.map +1 -0
  70. package/lib/typescript/assets/CloseIcon.d.ts +7 -0
  71. package/lib/typescript/assets/CloseIcon.d.ts.map +1 -0
  72. package/lib/typescript/assets/ErrorIcon.d.ts +7 -0
  73. package/lib/typescript/assets/ErrorIcon.d.ts.map +1 -0
  74. package/lib/typescript/assets/PlusIcon.d.ts +7 -0
  75. package/lib/typescript/assets/PlusIcon.d.ts.map +1 -0
  76. package/lib/typescript/assets/StarIcon.d.ts +7 -0
  77. package/lib/typescript/assets/StarIcon.d.ts.map +1 -0
  78. package/lib/typescript/component/Button.d.ts +30 -0
  79. package/lib/typescript/component/Button.d.ts.map +1 -0
  80. package/lib/typescript/component/ButtonSubmit.d.ts +115 -0
  81. package/lib/typescript/component/ButtonSubmit.d.ts.map +1 -0
  82. package/lib/typescript/component/Input.d.ts +112 -0
  83. package/lib/typescript/component/Input.d.ts.map +1 -0
  84. package/lib/typescript/component/MultiSelectButtons.d.ts +103 -0
  85. package/lib/typescript/component/MultiSelectButtons.d.ts.map +1 -0
  86. package/lib/typescript/component/Rating.d.ts +83 -0
  87. package/lib/typescript/component/Rating.d.ts.map +1 -0
  88. package/lib/typescript/component/RatingNumber.d.ts +135 -0
  89. package/lib/typescript/component/RatingNumber.d.ts.map +1 -0
  90. package/lib/typescript/component/Textarea.d.ts +115 -0
  91. package/lib/typescript/component/Textarea.d.ts.map +1 -0
  92. package/lib/typescript/component/YesNoButtons.d.ts +94 -0
  93. package/lib/typescript/component/YesNoButtons.d.ts.map +1 -0
  94. package/lib/typescript/index.d.ts +21 -0
  95. package/lib/typescript/index.d.ts.map +1 -0
  96. package/lib/typescript/package.json +1 -0
  97. package/lib/typescript/service/feedbackService.d.ts +33 -0
  98. package/lib/typescript/service/feedbackService.d.ts.map +1 -0
  99. package/lib/typescript/utils/common.d.ts +23 -0
  100. package/lib/typescript/utils/common.d.ts.map +1 -0
  101. package/lib/typescript/utils/constants.d.ts +38 -0
  102. package/lib/typescript/utils/constants.d.ts.map +1 -0
  103. package/lib/typescript/utils/index.d.ts +12 -0
  104. package/lib/typescript/utils/index.d.ts.map +1 -0
  105. package/lib/typescript/utils/networking.d.ts +12 -0
  106. package/lib/typescript/utils/networking.d.ts.map +1 -0
  107. package/package.json +175 -39
  108. package/src/AIAContentUsefulness.tsx +296 -0
  109. package/src/AIAFeedback.tsx +354 -0
  110. package/src/AIAFeedbackForm.tsx +267 -0
  111. package/src/AIAFeedbackSplash.tsx +49 -0
  112. package/src/AIAFeedbackStyles.ts +311 -0
  113. package/src/AIAFeedbackSuccess.tsx +67 -0
  114. package/src/assets/CheckIcon.tsx +18 -0
  115. package/src/assets/CloseIcon.tsx +18 -0
  116. package/src/assets/ErrorIcon.tsx +18 -0
  117. package/src/assets/PlusIcon.tsx +18 -0
  118. package/src/assets/StarIcon.tsx +18 -0
  119. package/src/component/Button.tsx +68 -0
  120. package/src/component/ButtonSubmit.tsx +335 -0
  121. package/src/component/Input.tsx +288 -0
  122. package/src/component/MultiSelectButtons.tsx +272 -0
  123. package/src/component/README.md +215 -0
  124. package/src/component/READMEVI.md +192 -0
  125. package/src/component/Rating.tsx +248 -0
  126. package/src/component/RatingNumber.tsx +421 -0
  127. package/src/component/Textarea.tsx +282 -0
  128. package/src/component/YesNoButtons.tsx +236 -0
  129. package/src/index.tsx +33 -0
  130. package/src/service/feedbackService.ts +108 -0
  131. package/src/utils/common.ts +241 -0
  132. package/src/utils/constants.ts +60 -0
  133. package/src/utils/index.ts +167 -0
  134. package/src/utils/networking.ts +134 -0
  135. package/fonts/AIAEverest-CondensedMedium.ttf +0 -0
  136. package/fonts/AIAEverest-Medium.ttf +0 -0
  137. package/fonts/AIAEverest-Regular.ttf +0 -0
  138. package/fonts/AIAEverestBold.ttf +0 -0
  139. package/fonts/OpenSans-Bold.ttf +0 -0
  140. package/fonts/OpenSans-Light.ttf +0 -0
  141. package/fonts/OpenSans-Regular.ttf +0 -0
  142. package/fonts/OpenSans-SemiBold.ttf +0 -0
  143. package/lib/commonjs/api/index.js +0 -1
  144. package/lib/commonjs/assets/index.js +0 -1
  145. package/lib/commonjs/component/confirmStep.js +0 -1
  146. package/lib/commonjs/component/confirmStepTablet.js +0 -1
  147. package/lib/commonjs/component/contentUI.js +0 -1
  148. package/lib/commonjs/component/contentUITablet.js +0 -1
  149. package/lib/commonjs/component/header.js +0 -1
  150. package/lib/commonjs/component/index.js +0 -1
  151. package/lib/commonjs/component/inlineSurvey.js +0 -1
  152. package/lib/commonjs/index.js +0 -1
  153. package/lib/commonjs/ui/ButtonSubmit.js +0 -1
  154. package/lib/commonjs/ui/Fineprint.js +0 -1
  155. package/lib/commonjs/ui/Instruction.js +0 -1
  156. package/lib/commonjs/ui/MultipleSelectInput.js +0 -1
  157. package/lib/commonjs/ui/Question.js +0 -1
  158. package/lib/commonjs/ui/RatingNumber.js +0 -1
  159. package/lib/commonjs/ui/RatingStar.js +0 -1
  160. package/lib/commonjs/ui/SecondaryQuestion.js +0 -1
  161. package/lib/commonjs/ui/TextArea.js +0 -1
  162. package/lib/commonjs/ui/index.js +0 -1
  163. package/lib/commonjs/utils/MyFunction.js +0 -1
  164. package/lib/commonjs/utils/NetworkHelper.js +0 -1
  165. package/lib/commonjs/utils/StatusBarHeight.js +0 -1
  166. package/lib/commonjs/utils/const.js +0 -1
@@ -1,7 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 20-present, OUS Group Pte Ltd.
4
-
3
+ Copyright (c) 2026 Tiempham
5
4
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
5
  of this software and associated documentation files (the "Software"), to deal
7
6
  in the Software without restriction, including without limitation the rights
package/README.md CHANGED
@@ -1,199 +1,92 @@
1
- # React Native FeedbackSDK
1
+ # @originallyus/feedback-rn-sdk
2
2
 
3
- A cross-platform Feedback component for React Native.
3
+ Cross-platform Feedback UI components for React Native.
4
4
 
5
5
  ## Installation
6
6
 
7
- Install the package using either Yarn:
8
-
9
- ```sh
10
- yarn add @originallyus/feedback-rn-sdk
11
- ```
12
- or npm:
13
-
14
7
  ```sh
15
8
  npm install @originallyus/feedback-rn-sdk
9
+ # or
10
+ yarn add @originallyus/feedback-rn-sdk
16
11
  ```
17
12
 
18
- ## Install Peer Dependencies
19
-
20
- These packages are specified as peerDependencies and need to be installed separately.
13
+ ## Peer dependencies
21
14
 
22
- ```bash
23
- yarn add axios crypto-js \
24
- react-native-encrypted-storage \
25
- react-native-device-info \
26
- react-native-rate
27
- ```
15
+ ### Required
16
+ - `react-native-reanimated` (>= 3.0.0)
17
+ - `react-native-keyboard-controller` – for Input/Textarea to work correctly with keyboard
28
18
 
29
- or using npm:
19
+ ### Device info (choose one)
30
20
 
21
+ **Expo**:
31
22
  ```sh
32
- npm install axios crypto-js \
33
- react-native-encrypted-storage \
34
- react-native-device-info \
35
- react-native-rate
23
+ npx expo install react-native-reanimated react-native-svg react-native-keyboard-controller expo-device expo-application
36
24
  ```
37
25
 
38
- ## Install Custom Fonts
39
-
40
- Package requires custom fonts found in `fonts` folder:
41
-
26
+ **React Native CLI**:
42
27
  ```sh
43
- OpenSans-Bold.ttf
44
- OpenSans-Light.ttf
45
- OpenSans-Regular.ttf
46
- OpenSans-SemiBold.ttf
28
+ npm install react-native-reanimated react-native-svg react-native-keyboard-controller react-native-device-info
29
+ # iOS: cd ios && pod install
47
30
  ```
48
31
 
49
- Please follow this guide to install fonts: [`Install Fonts to RN App`](https://medium.com/@prathiba2796/how-to-add-and-use-custom-fonts-in-react-native-369d5bba9203)
50
-
51
- Please do not change the filenames as Android are using those to identify fonts. These filenames follows actual PostScript Name of the fonts.
52
-
53
- ## Quick Start
54
-
55
- Please initalize the SDK once in App.js. The mounting point of the SDK should be placed directly in your App.js for it to stay on top of all other views.
56
-
57
- Note: **XXXXXXXXXXX** is to be replaced with correct class name. Please refer to the full documentation provided separately by us.
58
-
59
-
60
- ```js
61
- import XXXXXXXXXXX from '@originallyus/feedback-rn-sdk';
62
-
63
- const App = (props) => {
64
- // This initialization should done once inside App.js
65
- const feedbackRef = useRef();
66
- };
67
-
68
- // in your render function
69
- return (
70
- {/* The root view wrapper makes sure the app is full screen and vertical align center */}
71
- <View style={{ flex: 1, justifyContent: 'center' }}>
72
- <YourAppContainerView></YourAppContainerView>
73
-
74
- {/* Please insert this mount point directly in your App.js,
75
- preferably at the bottom of your root view tree for it to stay on top of all other views */}
76
- <XXXXXXXXXXX ref={feedbackRef} />
77
- </View>
78
- );
32
+ ### Keyboard setup (for Input/Textarea)
33
+
34
+ Wrap your app with `KeyboardProvider` and use `KeyboardAwareScrollView` for forms with Input/Textarea:
35
+
36
+ ```tsx
37
+ import { KeyboardProvider, KeyboardAwareScrollView } from 'react-native-keyboard-controller'
38
+
39
+ export default function App() {
40
+ return (
41
+ <KeyboardProvider>
42
+ <KeyboardAwareScrollView
43
+ keyboardShouldPersistTaps="handled"
44
+ contentContainerStyle={{ padding: 16 }}
45
+ >
46
+ <Input appWidth={width} value={val} onChangeText={setVal} />
47
+ <Textarea appWidth={width} value={val} onChangeText={setVal} />
48
+ </KeyboardAwareScrollView>
49
+ </KeyboardProvider>
50
+ )
51
+ }
79
52
  ```
80
- **Optional inline feedback component**
81
-
82
- Place `<FeedbackInlineSurvey />` component anywhere in your app view hierarchy where the feedback inline prompt should be shown.
83
-
84
- - If `<FeedbackInlineSurvey />` component is not present, feedback survey will shown as non-intrusive style
85
- - The inline component may or may not be shown depends on configuration of the survey in backend
86
-
87
- ```js
88
- import { FeedbackInlineSurvey } from '@originallyus/feedback-rn-sdk';
89
-
90
- return (
91
- ...
92
- <SomeContainerView>
93
- <FeedbackInlineSurvey />
94
- </SomeContainerView>
95
- ...
96
- );
97
- ```
98
-
99
- All other functions to be invoked on feedbackRef.current can be done anywhere in your application code (can also be inside App.js)
100
-
101
- ```js
102
- import XXXXXXXXXXX from '@originallyus/feedback-rn-sdk';
103
-
104
- const OtherComponent = (props) => {
105
- // This is a singleton. The initialization should have already been done inside App.js
106
- const feedbackRef = useRef();
107
-
108
- const setupFeedbackSDK = () => {
109
- // Please contact us to obtain an App Secret specific to your Bundle ID/Package ID
110
- feedbackRef.current.setAppSecret('QcJasjiu2olMBxHyFohKJ');
111
- };
112
-
113
- const setLanguage = (language) => {
114
- // Use international language codes: "en", "zh", "zh_tw", "ms", "ta", "id", "th", "tl", "vi"
115
- // Note: our backend must be loaded with the translation content before a language can be used. Invalid languages will automatically fallback to English
116
- feedbackRef.current.setLanguage(language);
117
- };
118
-
119
- const setAppUserId = () => {
120
- // This is an optional User ID provided by the host app.
121
- feedbackRef.current.setAppUserId('1234');
122
- };
123
-
124
- const setMetadata = () => {
125
- // This is an optional metadata provided by the host app. Supports string format only.
126
- feedbackRef.current.setMetadata('policy_1234567890');
127
- };
128
-
129
- const testRatingForm = (eventTag) => {
130
- // This will always show the Feedback form for testing/debugging purpose
131
- // You may troubleshoot this in "Request (Testing)" section in CMS
132
- feedbackRef.current.setFormSlug('native_rating_form');
133
- feedbackRef.current.testRatingForm(eventTag);
134
- };
135
-
136
- const testInlineForm = (eventTag, slug) => {
137
- // This will always show the inline Feedback component for testing/debugging purpose
138
- // You may troubleshoot this in "Request (Testing)" section in CMS
139
- feedbackRef.current.testInlineForm(eventTag, slug);
140
- };
141
-
142
- const showRatingForm = (eventTag) => {
143
- // This may not always show/trigger the form, depending on the Response Frequency & Prompt Frequency configuration on backend
144
- // You may troubleshoot this in "Request" section in CMS
145
- feedbackRef.current.showRatingForm(eventTag);
146
- };
147
-
148
- const showInlineForm = (eventTag, slug) => {
149
- // This may not always show/trigger the form, depending on the Response Frequency & Prompt Frequency configuration on backend
150
- // You may troubleshoot this in "Request" section in CMS
151
- feedbackRef.current.showInlineForm(eventTag, slug);
152
- };
153
-
154
- };
155
- ```
156
-
157
- ## Callback Function (optional)
158
-
159
- An optional callback function can be provided as parameter to capture the outcome of the SDK.
160
-
161
- - **formDidShow = false** is triggered when there is no form to be shown, this callback function will be triggered almost immediately.
162
- - **formDidShow = true** is triggered when has been shown and user has finished interacting with it or dismiss/cancel it
163
-
164
- ```js
165
- feedbackRef.current.testRatingForm(eventTag, (formDidShow) => {
166
- console.log('formDidShow', formDidShow);
167
- });
168
-
169
- feedbackRef.current.showRatingForm(eventTag, (formDidShow) => {
170
- console.log('formDidShow', formDidShow);
171
- });
172
-
173
- feedbackRef.current.showInlineForm(eventTag, slug, (formDidShow) => {
174
- console.log('formDidShow', formDidShow);
175
- });
176
53
 
54
+ ## Usage
55
+
56
+ ```tsx
57
+ import {
58
+ Rating,
59
+ RatingNumber,
60
+ Input,
61
+ Textarea,
62
+ ButtonSubmit,
63
+ YesNoButtons,
64
+ MultiSelectButtons,
65
+ } from '@originallyus/feedback-rn-sdk'
66
+ import { Dimensions } from 'react-native'
67
+
68
+ const { width: appWidth } = Dimensions.get('window')
69
+
70
+ // Star rating
71
+ <Rating value={rating} onRate={setRating} />
72
+
73
+ // Numeric scale (1-10)
74
+ <RatingNumber
75
+ appWidth={appWidth}
76
+ numStar={rating}
77
+ rating_min={1}
78
+ rating_max={10}
79
+ scale_label_color="#666"
80
+ handlePressRating={setRating}
81
+ />
82
+
83
+ // Input / Textarea
84
+ <Input appWidth={appWidth} value={val} onChangeText={setVal} placeholder="..." />
85
+ <Textarea appWidth={appWidth} value={val} onChangeText={setVal} />
177
86
  ```
178
87
 
179
- ## Extra configuration
180
-
88
+ For full props documentation, see [src/component/README.md](src/component/README.md)
181
89
 
182
- To ensure that the External Survey works properly, check your AndroidManifest.xml file for the following configuration.
90
+ ## License
183
91
 
184
- _For the app targeting Android 11 (SDK 30) or higher need to implement._
185
-
186
- ```
187
- <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example">
188
- <queries>
189
- <intent>
190
- <action android:name="android.intent.action.VIEW" />
191
- <data android:scheme="http" />
192
- <data android:scheme="https" />
193
- </intent>
194
- </queries>
195
- ...
196
- <!-- Another config -->
197
- </manifest>
198
-
199
- ```
92
+ MIT
@@ -0,0 +1,273 @@
1
+ "use strict";
2
+
3
+ import React, { useState, useEffect, useCallback } from 'react';
4
+ import { View, Text, StyleSheet, ActivityIndicator } from 'react-native';
5
+ import { feedbackService } from '@service/feedbackService';
6
+ import { PRIMARY_COLOR, TEXT_DARK, BORDER_DEFAULT } from "./utils/constants.js";
7
+ import YesNoButtons from "./component/YesNoButtons.js";
8
+ import Rating from "./component/Rating.js";
9
+ import MultiSelectButtons from "./component/MultiSelectButtons.js";
10
+ import Textarea from "./component/Textarea.js";
11
+ import ButtonSubmit from "./component/ButtonSubmit.js";
12
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
13
+ const AIAContentUsefulness = ({
14
+ slug,
15
+ options,
16
+ style,
17
+ initialVisible = false,
18
+ onSuccess,
19
+ onError
20
+ }) => {
21
+ const [visible, setVisible] = useState(initialVisible);
22
+ const [step, setStep] = useState('PROMPT');
23
+ const [formData, setFormData] = useState(null);
24
+ const [loading, setLoading] = useState(true);
25
+ const [submitting, setSubmitting] = useState(false);
26
+ const [containerWidth, setContainerWidth] = useState(0);
27
+
28
+ // Form values
29
+ const [rating, setRating] = useState(0);
30
+ const [selectedOptions, setSelectedOptions] = useState([]);
31
+ const [freeText, setFreeText] = useState('');
32
+ const loadForm = useCallback(() => {
33
+ setLoading(true);
34
+ feedbackService.requestForm({
35
+ ...options,
36
+ formSlug: slug
37
+ }, res => {
38
+ setLoading(false);
39
+ if (res && !res.error) {
40
+ setFormData(res);
41
+ } else {
42
+ onError?.(new Error(res?.error || 'Failed to load form'));
43
+ }
44
+ });
45
+ }, [slug, options, onError]);
46
+ useEffect(() => {
47
+ if (visible) {
48
+ loadForm();
49
+ }
50
+ }, [visible, loadForm]);
51
+ useEffect(() => {
52
+ const unsubscribe = feedbackService.onShow((triggerSlug, showOptions) => {
53
+ if (triggerSlug === slug && !showOptions?.forceModal) {
54
+ setVisible(true);
55
+ return true; // Handled
56
+ }
57
+ return false;
58
+ });
59
+ return unsubscribe;
60
+ }, [slug]);
61
+ const onPromptSelect = async value => {
62
+ setStep('LOADING');
63
+ try {
64
+ const selectionData = {
65
+ slug,
66
+ debug: options.debug || false,
67
+ event_tag: options.eventTag || '',
68
+ metadata: options.metadata || {},
69
+ rating: value === 'yes' ? 2 : 1,
70
+ request_id: formData?.id || ''
71
+ };
72
+ const res = await feedbackService.submitSelection(selectionData, options);
73
+ if (res && !res.error) {
74
+ // Hide itself and trigger modal for the rest of the flow
75
+ setVisible(false);
76
+ feedbackService.emitShow(slug, {
77
+ forceModal: true,
78
+ initialData: res
79
+ });
80
+ } else {
81
+ setStep('PROMPT');
82
+ onError?.(new Error(res?.error || 'Failed to submit selection'));
83
+ }
84
+ } catch (err) {
85
+ setStep('PROMPT');
86
+ onError?.(err);
87
+ }
88
+ };
89
+ const onSubmitDetails = async () => {
90
+ setSubmitting(true);
91
+ try {
92
+ const submitData = {
93
+ slug: formData.slug || slug,
94
+ debug: options.debug || false,
95
+ event_tag: options.eventTag || '',
96
+ metadata: options.metadata || {},
97
+ request_id: formData.id || '',
98
+ rating: rating,
99
+ selected_options: selectedOptions.join(','),
100
+ free_text: freeText
101
+ };
102
+ const res = await feedbackService.submitForm(submitData, options);
103
+ if (res && !res.error) {
104
+ setStep('SUCCESS');
105
+ onSuccess?.(res);
106
+ } else {
107
+ onError?.(new Error(res?.error || 'Failed to submit feedback'));
108
+ }
109
+ } catch (err) {
110
+ onError?.(err);
111
+ } finally {
112
+ setSubmitting(false);
113
+ }
114
+ };
115
+ const getThemeColor = (key, fallback) => {
116
+ return formData?.theme?.[key] || fallback;
117
+ };
118
+ const textAlign = formData?.alignment === 'left' ? 'left' : 'center';
119
+ const align = formData?.alignment === 'left' ? 'flex-start' : 'center';
120
+ if (!visible) return null;
121
+ if (loading) {
122
+ return /*#__PURE__*/_jsx(View, {
123
+ style: [styles.container, style, styles.center],
124
+ children: /*#__PURE__*/_jsx(ActivityIndicator, {
125
+ color: PRIMARY_COLOR
126
+ })
127
+ });
128
+ }
129
+ if (!formData) return null;
130
+ const renderPrompt = () => /*#__PURE__*/_jsx(YesNoButtons, {
131
+ question: formData.question,
132
+ value: null,
133
+ yesLabel: formData.positive_feedback_button || 'Yes',
134
+ noLabel: formData.negative_feedback_button || 'No',
135
+ onSelect: onPromptSelect,
136
+ appWidth: containerWidth || 300,
137
+ selectedVariant: "secondary",
138
+ questionStyle: {
139
+ color: getThemeColor('question_color', TEXT_DARK),
140
+ textAlign
141
+ }
142
+ });
143
+ const renderForm = () => /*#__PURE__*/_jsxs(View, {
144
+ style: {
145
+ alignItems: align
146
+ },
147
+ children: [/*#__PURE__*/_jsx(Text, {
148
+ style: [styles.title, {
149
+ color: getThemeColor('title_color', TEXT_DARK),
150
+ textAlign
151
+ }],
152
+ children: formData.title
153
+ }), formData.question && /*#__PURE__*/_jsx(Text, {
154
+ style: [styles.question, {
155
+ color: getThemeColor('question_color', TEXT_DARK),
156
+ textAlign
157
+ }],
158
+ children: formData.question
159
+ }), formData.show_rating_star === 1 && /*#__PURE__*/_jsx(View, {
160
+ style: styles.mv16,
161
+ children: /*#__PURE__*/_jsx(Rating, {
162
+ value: rating,
163
+ onRate: setRating,
164
+ selectedStarColor: getThemeColor('selected_star_color', PRIMARY_COLOR)
165
+ })
166
+ }), formData.options && formData.options.length > 0 && /*#__PURE__*/_jsx(MultiSelectButtons, {
167
+ question: formData.instruction || '',
168
+ options: formData.options.map(o => ({
169
+ label: o.text || o.title || '',
170
+ value: o.value || o.slug || ''
171
+ })),
172
+ value: selectedOptions,
173
+ onSelect: setSelectedOptions,
174
+ appWidth: containerWidth || 300,
175
+ style: styles.mv16
176
+ }), (formData.type === 'comment' || formData.show_comment) && /*#__PURE__*/_jsx(Textarea, {
177
+ value: freeText,
178
+ onChangeText: setFreeText,
179
+ placeholder: formData.comment_placeholder,
180
+ label: formData.secondary_question || 'Please specify',
181
+ appWidth: containerWidth || 300
182
+ }), /*#__PURE__*/_jsx(ButtonSubmit, {
183
+ title: formData.submit_button_text || 'Submit',
184
+ onPress: onSubmitDetails,
185
+ loading: submitting,
186
+ appWidth: containerWidth || 300,
187
+ backgroundColor: getThemeColor('button_bg_color', PRIMARY_COLOR)
188
+ })]
189
+ });
190
+ const renderSuccess = () => /*#__PURE__*/_jsxs(View, {
191
+ style: styles.center,
192
+ children: [/*#__PURE__*/_jsx(Text, {
193
+ style: [styles.successTitle, {
194
+ textAlign
195
+ }],
196
+ children: formData.success_title || 'Submitted'
197
+ }), formData.success_message && /*#__PURE__*/_jsx(Text, {
198
+ style: [styles.successMsg, {
199
+ textAlign
200
+ }],
201
+ children: formData.success_message
202
+ })]
203
+ });
204
+ if (!visible) return null;
205
+ return /*#__PURE__*/_jsx(View, {
206
+ style: [styles.container, style],
207
+ onLayout: event => {
208
+ const {
209
+ width
210
+ } = event.nativeEvent.layout;
211
+ setContainerWidth(width);
212
+ },
213
+ children: /*#__PURE__*/_jsx(View, {
214
+ style: styles.expandedContent,
215
+ children: loading ? /*#__PURE__*/_jsx(View, {
216
+ style: styles.center,
217
+ children: /*#__PURE__*/_jsx(ActivityIndicator, {
218
+ color: PRIMARY_COLOR
219
+ })
220
+ }) : !formData ? null : /*#__PURE__*/_jsxs(_Fragment, {
221
+ children: [step === 'PROMPT' && renderPrompt(), step === 'LOADING' && /*#__PURE__*/_jsx(View, {
222
+ style: styles.center,
223
+ children: /*#__PURE__*/_jsx(ActivityIndicator, {
224
+ color: PRIMARY_COLOR
225
+ })
226
+ }), step === 'FORM' && renderForm(), step === 'SUCCESS' && renderSuccess()]
227
+ })
228
+ })
229
+ });
230
+ };
231
+ const styles = StyleSheet.create({
232
+ container: {
233
+ padding: 16,
234
+ backgroundColor: '#FFF',
235
+ borderRadius: 8,
236
+ borderWidth: 1,
237
+ borderColor: BORDER_DEFAULT,
238
+ marginVertical: 10
239
+ },
240
+ expandedContent: {
241
+ marginTop: 0
242
+ },
243
+ center: {
244
+ padding: 20,
245
+ alignItems: 'center',
246
+ justifyContent: 'center'
247
+ },
248
+ title: {
249
+ fontSize: 18,
250
+ fontWeight: '700',
251
+ marginBottom: 8
252
+ },
253
+ question: {
254
+ fontSize: 14,
255
+ marginBottom: 16
256
+ },
257
+ successTitle: {
258
+ fontSize: 18,
259
+ fontWeight: '700',
260
+ color: PRIMARY_COLOR
261
+ },
262
+ successMsg: {
263
+ fontSize: 14,
264
+ marginTop: 8,
265
+ color: TEXT_DARK
266
+ },
267
+ mv16: {
268
+ marginVertical: 16,
269
+ width: '100%'
270
+ }
271
+ });
272
+ export default AIAContentUsefulness;
273
+ //# sourceMappingURL=AIAContentUsefulness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useState","useEffect","useCallback","View","Text","StyleSheet","ActivityIndicator","feedbackService","PRIMARY_COLOR","TEXT_DARK","BORDER_DEFAULT","YesNoButtons","Rating","MultiSelectButtons","Textarea","ButtonSubmit","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","AIAContentUsefulness","slug","options","style","initialVisible","onSuccess","onError","visible","setVisible","step","setStep","formData","setFormData","loading","setLoading","submitting","setSubmitting","containerWidth","setContainerWidth","rating","setRating","selectedOptions","setSelectedOptions","freeText","setFreeText","loadForm","requestForm","formSlug","res","error","Error","unsubscribe","onShow","triggerSlug","showOptions","forceModal","onPromptSelect","value","selectionData","debug","event_tag","eventTag","metadata","request_id","id","submitSelection","emitShow","initialData","err","onSubmitDetails","submitData","selected_options","join","free_text","submitForm","getThemeColor","key","fallback","theme","textAlign","alignment","align","styles","container","center","children","color","renderPrompt","question","yesLabel","positive_feedback_button","noLabel","negative_feedback_button","onSelect","appWidth","selectedVariant","questionStyle","renderForm","alignItems","title","show_rating_star","mv16","onRate","selectedStarColor","length","instruction","map","o","label","text","type","show_comment","onChangeText","placeholder","comment_placeholder","secondary_question","submit_button_text","onPress","backgroundColor","renderSuccess","successTitle","success_title","success_message","successMsg","onLayout","event","width","nativeEvent","layout","expandedContent","create","padding","borderRadius","borderWidth","borderColor","marginVertical","marginTop","justifyContent","fontSize","fontWeight","marginBottom"],"sourceRoot":"../../src","sources":["AIAContentUsefulness.tsx"],"mappings":"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","ignoreList":[]}