@nordicsemiconductor/pc-nrfconnect-shared 168.0.0 → 169.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.
- package/Changelog.md +17 -0
- package/package.json +1 -1
- package/src/About/About.tsx +3 -2
- package/src/About/Feedback.tsx +170 -0
- package/src/About/SupportCard.tsx +10 -2
- package/src/{Feedback → About}/sendFeedback.ts +1 -0
- package/src/App/App.tsx +12 -21
- package/src/index.ts +1 -1
- package/typings/generated/src/About/About.d.ts +2 -1
- package/typings/generated/src/About/About.d.ts.map +1 -1
- package/typings/generated/src/About/Feedback.d.ts +11 -0
- package/typings/generated/src/About/Feedback.d.ts.map +1 -0
- package/typings/generated/src/About/SupportCard.d.ts +3 -1
- package/typings/generated/src/About/SupportCard.d.ts.map +1 -1
- package/typings/generated/src/About/sendFeedback.d.ts.map +1 -0
- package/typings/generated/src/App/App.d.ts +1 -2
- package/typings/generated/src/App/App.d.ts.map +1 -1
- package/typings/generated/src/index.d.ts +1 -1
- package/typings/generated/src/index.d.ts.map +1 -1
- package/src/Feedback/FeedbackPane.tsx +0 -153
- package/typings/generated/src/Feedback/FeedbackPane.d.ts +0 -7
- package/typings/generated/src/Feedback/FeedbackPane.d.ts.map +0 -1
- package/typings/generated/src/Feedback/sendFeedback.d.ts.map +0 -1
- /package/typings/generated/src/{Feedback → About}/sendFeedback.d.ts +0 -0
package/Changelog.md
CHANGED
|
@@ -7,6 +7,23 @@ This project does _not_ adhere to
|
|
|
7
7
|
[Semantic Versioning](https://semver.org/spec/v2.0.0.html) but contrary to it
|
|
8
8
|
every new version is a new major version.
|
|
9
9
|
|
|
10
|
+
## 169.0.0 - 2024-03-25
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- `Feedback` dialog accessible from the `About` pane.
|
|
15
|
+
- `feedbackCallback` property in `App` component.
|
|
16
|
+
|
|
17
|
+
### Removed
|
|
18
|
+
|
|
19
|
+
- `Feedback` pane.
|
|
20
|
+
- `feedback` property in `App` component.
|
|
21
|
+
|
|
22
|
+
### Steps to upgrade when using this package
|
|
23
|
+
|
|
24
|
+
- If categories where passed to the `feedback` property in the `App`
|
|
25
|
+
component, pass them directly to `feedbackCategories`.
|
|
26
|
+
|
|
10
27
|
## 168.0.0 - 2024-03-22
|
|
11
28
|
|
|
12
29
|
### Fixed
|
package/package.json
CHANGED
package/src/About/About.tsx
CHANGED
|
@@ -15,9 +15,10 @@ import './about.scss';
|
|
|
15
15
|
|
|
16
16
|
interface AboutPaneProps {
|
|
17
17
|
documentation?: ReactNode[];
|
|
18
|
+
feedbackCategories?: string[];
|
|
18
19
|
}
|
|
19
20
|
|
|
20
|
-
export default ({ documentation }: AboutPaneProps) => (
|
|
21
|
+
export default ({ documentation, feedbackCategories }: AboutPaneProps) => (
|
|
21
22
|
<div className="about">
|
|
22
23
|
<div className="about-inner">
|
|
23
24
|
<ApplicationCard />
|
|
@@ -25,7 +26,7 @@ export default ({ documentation }: AboutPaneProps) => (
|
|
|
25
26
|
{documentation && documentation.length && (
|
|
26
27
|
<DocumentationCard documentationSections={documentation} />
|
|
27
28
|
)}
|
|
28
|
-
<SupportCard />
|
|
29
|
+
<SupportCard feedbackCategories={feedbackCategories} />
|
|
29
30
|
</div>
|
|
30
31
|
</div>
|
|
31
32
|
);
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Nordic Semiconductor ASA
|
|
3
|
+
*
|
|
4
|
+
* SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import React, { useMemo, useState } from 'react';
|
|
8
|
+
|
|
9
|
+
import { DialogButton, GenericDialog } from '../Dialog/Dialog';
|
|
10
|
+
import Dropdown, { DropdownItem } from '../Dropdown/Dropdown';
|
|
11
|
+
import logger from '../logging';
|
|
12
|
+
import describeError from '../logging/describeError';
|
|
13
|
+
import AboutButton from './AboutButton';
|
|
14
|
+
import sendFeedback from './sendFeedback';
|
|
15
|
+
|
|
16
|
+
export interface FeedbackPaneProps {
|
|
17
|
+
isVisible: boolean;
|
|
18
|
+
onHide: () => void;
|
|
19
|
+
categories?: string[];
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const FeedbackDialog = ({
|
|
23
|
+
categories,
|
|
24
|
+
onHide,
|
|
25
|
+
isVisible,
|
|
26
|
+
}: FeedbackPaneProps) => {
|
|
27
|
+
const [feedback, setFeedback] = useState('');
|
|
28
|
+
const [sayThankYou, setSayThankYou] = useState(false);
|
|
29
|
+
const [sendingFeedback, setSendingFeedback] = useState(false);
|
|
30
|
+
|
|
31
|
+
const categoryItems = useMemo(() => {
|
|
32
|
+
if (!categories?.length) return undefined;
|
|
33
|
+
|
|
34
|
+
const items = ['Select a category', ...categories].map(category => ({
|
|
35
|
+
label: category,
|
|
36
|
+
value: category,
|
|
37
|
+
}));
|
|
38
|
+
return items;
|
|
39
|
+
}, [categories]);
|
|
40
|
+
|
|
41
|
+
const [selectedCategory, setSelectedCategory] = useState<
|
|
42
|
+
DropdownItem | undefined
|
|
43
|
+
>(categoryItems ? categoryItems[0] : undefined);
|
|
44
|
+
|
|
45
|
+
return (
|
|
46
|
+
<GenericDialog
|
|
47
|
+
isVisible={isVisible}
|
|
48
|
+
onHide={onHide}
|
|
49
|
+
closeOnUnfocus
|
|
50
|
+
title="Feedback"
|
|
51
|
+
showSpinner={sendingFeedback}
|
|
52
|
+
footer={
|
|
53
|
+
<>
|
|
54
|
+
{sayThankYou ? (
|
|
55
|
+
<DialogButton
|
|
56
|
+
variant="secondary"
|
|
57
|
+
onClick={() => {
|
|
58
|
+
setSayThankYou(false);
|
|
59
|
+
setFeedback('');
|
|
60
|
+
}}
|
|
61
|
+
>
|
|
62
|
+
Give more feedback
|
|
63
|
+
</DialogButton>
|
|
64
|
+
) : (
|
|
65
|
+
<DialogButton
|
|
66
|
+
variant="primary"
|
|
67
|
+
onClick={() => {
|
|
68
|
+
setSendingFeedback(true);
|
|
69
|
+
handleFormData(
|
|
70
|
+
feedback,
|
|
71
|
+
setSayThankYou,
|
|
72
|
+
selectedCategory?.value
|
|
73
|
+
).then(() => setSendingFeedback(false));
|
|
74
|
+
}}
|
|
75
|
+
disabled={feedback === '' || sendingFeedback}
|
|
76
|
+
>
|
|
77
|
+
Send feedback
|
|
78
|
+
</DialogButton>
|
|
79
|
+
)}
|
|
80
|
+
<DialogButton onClick={onHide}>Close</DialogButton>
|
|
81
|
+
</>
|
|
82
|
+
}
|
|
83
|
+
>
|
|
84
|
+
<div className="tw-flex tw-flex-col tw-items-start tw-justify-center tw-bg-white">
|
|
85
|
+
{sayThankYou ? (
|
|
86
|
+
<>
|
|
87
|
+
<b className="tw-mb-3">Thank you!</b>
|
|
88
|
+
<p>
|
|
89
|
+
Thank you for providing feedback about how to
|
|
90
|
+
improve nRF Connect for Desktop applications.
|
|
91
|
+
</p>
|
|
92
|
+
</>
|
|
93
|
+
) : (
|
|
94
|
+
<>
|
|
95
|
+
<p>
|
|
96
|
+
We value your feedback and any ideas you may have
|
|
97
|
+
for improving nRF Connect for Desktop applications.
|
|
98
|
+
Use the form below.
|
|
99
|
+
</p>
|
|
100
|
+
<p>
|
|
101
|
+
We only collect the following information when you
|
|
102
|
+
send feedback:
|
|
103
|
+
</p>
|
|
104
|
+
<ul className="tw-list-disc tw-pl-8">
|
|
105
|
+
<li>Application name</li>
|
|
106
|
+
<li>Your feedback</li>
|
|
107
|
+
<li>Operating system</li>
|
|
108
|
+
</ul>
|
|
109
|
+
<form className="tw-flex tw-w-full tw-flex-col tw-gap-4">
|
|
110
|
+
{categoryItems?.length && (
|
|
111
|
+
<div className="tw-w-52">
|
|
112
|
+
<Dropdown
|
|
113
|
+
items={categoryItems}
|
|
114
|
+
onSelect={setSelectedCategory}
|
|
115
|
+
selectedItem={
|
|
116
|
+
selectedCategory || categoryItems[0]
|
|
117
|
+
}
|
|
118
|
+
/>
|
|
119
|
+
</div>
|
|
120
|
+
)}
|
|
121
|
+
<div className="tw-pt-4">
|
|
122
|
+
<textarea
|
|
123
|
+
name="feedback-text"
|
|
124
|
+
className="tw-h-32 tw-w-full tw-border tw-border-gray-700 tw-p-2"
|
|
125
|
+
required
|
|
126
|
+
value={feedback}
|
|
127
|
+
onChange={e => setFeedback(e.target.value)}
|
|
128
|
+
/>
|
|
129
|
+
</div>
|
|
130
|
+
</form>
|
|
131
|
+
</>
|
|
132
|
+
)}
|
|
133
|
+
</div>
|
|
134
|
+
</GenericDialog>
|
|
135
|
+
);
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
const handleFormData = async (
|
|
139
|
+
feedback: string,
|
|
140
|
+
setResponse: (response: boolean) => void,
|
|
141
|
+
category?: string
|
|
142
|
+
) => {
|
|
143
|
+
try {
|
|
144
|
+
await sendFeedback(feedback, category);
|
|
145
|
+
|
|
146
|
+
setResponse(true);
|
|
147
|
+
} catch (error: unknown) {
|
|
148
|
+
logger.error(
|
|
149
|
+
`FeedbackForm: Could not send feedback. ${describeError(error)}`
|
|
150
|
+
);
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
export default ({ categories }: { categories?: string[] }) => {
|
|
155
|
+
const [isVisible, setIsVisible] = useState(false);
|
|
156
|
+
|
|
157
|
+
return (
|
|
158
|
+
<>
|
|
159
|
+
<AboutButton
|
|
160
|
+
label="Give Feedback"
|
|
161
|
+
onClick={() => setIsVisible(true)}
|
|
162
|
+
/>
|
|
163
|
+
<FeedbackDialog
|
|
164
|
+
isVisible={isVisible}
|
|
165
|
+
categories={categories}
|
|
166
|
+
onHide={() => setIsVisible(false)}
|
|
167
|
+
/>
|
|
168
|
+
</>
|
|
169
|
+
);
|
|
170
|
+
};
|
|
@@ -20,9 +20,10 @@ import { Toggle } from '../Toggle/Toggle';
|
|
|
20
20
|
import { doNotResetVerboseLogginOnRestart } from '../utils/persistentStore';
|
|
21
21
|
import systemReport from '../utils/systemReport';
|
|
22
22
|
import AboutButton from './AboutButton';
|
|
23
|
+
import Feedback from './Feedback';
|
|
23
24
|
import Section from './Section';
|
|
24
25
|
|
|
25
|
-
export default () => {
|
|
26
|
+
export default ({ feedbackCategories }: { feedbackCategories?: string[] }) => {
|
|
26
27
|
const dispatch = useDispatch();
|
|
27
28
|
const devices = useSelector(getDevices);
|
|
28
29
|
const currentSerialNumber = useSelector(selectedSerialNumber);
|
|
@@ -60,7 +61,14 @@ export default () => {
|
|
|
60
61
|
label="Create system report"
|
|
61
62
|
/>
|
|
62
63
|
</Section>
|
|
63
|
-
<Section title="
|
|
64
|
+
<Section title="Other feedback">
|
|
65
|
+
<p>
|
|
66
|
+
Provide feedback about how to improve this and other nRF
|
|
67
|
+
Connect for Desktop applications.
|
|
68
|
+
</p>
|
|
69
|
+
<Feedback categories={feedbackCategories} />
|
|
70
|
+
</Section>
|
|
71
|
+
<Section title="Verbose logging">
|
|
64
72
|
<p>
|
|
65
73
|
Aid our support team with additional log information.
|
|
66
74
|
Enable this only when necessary as the log will grow
|
package/src/App/App.tsx
CHANGED
|
@@ -25,7 +25,6 @@ import {
|
|
|
25
25
|
} from '../Device/deviceSlice';
|
|
26
26
|
import ErrorBoundary from '../ErrorBoundary/ErrorBoundary';
|
|
27
27
|
import ErrorDialog from '../ErrorDialog/ErrorDialog';
|
|
28
|
-
import FeedbackPane, { FeedbackPaneProps } from '../Feedback/FeedbackPane';
|
|
29
28
|
import FlashMessages from '../FlashMessage/FlashMessage';
|
|
30
29
|
import LogViewer from '../Log/LogViewer';
|
|
31
30
|
import logger from '../logging';
|
|
@@ -68,7 +67,7 @@ interface ConnectedAppProps {
|
|
|
68
67
|
sidePanel?: ReactNode;
|
|
69
68
|
showLogByDefault?: boolean;
|
|
70
69
|
documentation?: ReactNode[];
|
|
71
|
-
|
|
70
|
+
feedbackCategories?: string[];
|
|
72
71
|
children?: ReactNode;
|
|
73
72
|
autoReselectByDefault?: boolean;
|
|
74
73
|
}
|
|
@@ -79,7 +78,7 @@ const ConnectedApp: FC<ConnectedAppProps> = ({
|
|
|
79
78
|
sidePanel,
|
|
80
79
|
showLogByDefault = true,
|
|
81
80
|
documentation,
|
|
82
|
-
|
|
81
|
+
feedbackCategories,
|
|
83
82
|
children,
|
|
84
83
|
autoReselectByDefault = false,
|
|
85
84
|
}) => {
|
|
@@ -95,7 +94,7 @@ const ConnectedApp: FC<ConnectedAppProps> = ({
|
|
|
95
94
|
usePersistedPane();
|
|
96
95
|
const isLogVisible = useSelector(isLogVisibleSelector);
|
|
97
96
|
const currentPane = useSelector(currentPaneSelector);
|
|
98
|
-
const allPanes = useAllPanes(panes, documentation,
|
|
97
|
+
const allPanes = useAllPanes(panes, documentation, feedbackCategories);
|
|
99
98
|
const paneName = useRef(allPanes.map(({ name }) => name));
|
|
100
99
|
const dispatch = useDispatch();
|
|
101
100
|
|
|
@@ -226,34 +225,26 @@ const usePersistedPane = () => {
|
|
|
226
225
|
const useAllPanes = (
|
|
227
226
|
panes: Pane[],
|
|
228
227
|
documentation: ReactNode[] | undefined,
|
|
229
|
-
|
|
228
|
+
feedbackCategories?: string[]
|
|
230
229
|
) => {
|
|
231
230
|
const dispatch = useDispatch();
|
|
232
231
|
|
|
233
232
|
const allPanes = useMemo(() => {
|
|
234
233
|
const newPanes = [...panes];
|
|
235
234
|
|
|
236
|
-
if (feedback) {
|
|
237
|
-
newPanes.push({
|
|
238
|
-
name: 'Feedback',
|
|
239
|
-
Main: props => (
|
|
240
|
-
<FeedbackPane
|
|
241
|
-
{...(typeof feedback === 'object'
|
|
242
|
-
? feedback
|
|
243
|
-
: undefined)}
|
|
244
|
-
{...props}
|
|
245
|
-
/>
|
|
246
|
-
),
|
|
247
|
-
});
|
|
248
|
-
}
|
|
249
|
-
|
|
250
235
|
newPanes.push({
|
|
251
236
|
name: 'About',
|
|
252
|
-
Main: props =>
|
|
237
|
+
Main: props => (
|
|
238
|
+
<About
|
|
239
|
+
documentation={documentation}
|
|
240
|
+
feedbackCategories={feedbackCategories}
|
|
241
|
+
{...props}
|
|
242
|
+
/>
|
|
243
|
+
),
|
|
253
244
|
});
|
|
254
245
|
|
|
255
246
|
return newPanes;
|
|
256
|
-
}, [panes, documentation,
|
|
247
|
+
}, [panes, documentation, feedbackCategories]);
|
|
257
248
|
|
|
258
249
|
useEffect(() => {
|
|
259
250
|
dispatch(setPanes(allPanes));
|
package/src/index.ts
CHANGED
|
@@ -56,7 +56,7 @@ export { default as Spinner } from './Spinner/Spinner';
|
|
|
56
56
|
|
|
57
57
|
export { default as MasonryLayout } from './MasonryLayout/MasonryLayout';
|
|
58
58
|
|
|
59
|
-
export { default as sendFeedback } from './
|
|
59
|
+
export { default as sendFeedback } from './About/sendFeedback';
|
|
60
60
|
|
|
61
61
|
export { default as useStopwatch } from './utils/useStopwatch';
|
|
62
62
|
export { default as useFocusedOnVisible } from './utils/useFocusedOnVisible';
|
|
@@ -2,7 +2,8 @@ import { ReactNode } from 'react';
|
|
|
2
2
|
import './about.scss';
|
|
3
3
|
interface AboutPaneProps {
|
|
4
4
|
documentation?: ReactNode[];
|
|
5
|
+
feedbackCategories?: string[];
|
|
5
6
|
}
|
|
6
|
-
declare const _default: ({ documentation }: AboutPaneProps) => JSX.Element;
|
|
7
|
+
declare const _default: ({ documentation, feedbackCategories }: AboutPaneProps) => JSX.Element;
|
|
7
8
|
export default _default;
|
|
8
9
|
//# sourceMappingURL=About.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"About.d.ts","sourceRoot":"","sources":["../../../../src/About/About.tsx"],"names":[],"mappings":"AAMA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAOzC,OAAO,cAAc,CAAC;AAEtB,UAAU,cAAc;IACpB,aAAa,CAAC,EAAE,SAAS,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"About.d.ts","sourceRoot":"","sources":["../../../../src/About/About.tsx"],"names":[],"mappings":"AAMA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAOzC,OAAO,cAAc,CAAC;AAEtB,UAAU,cAAc;IACpB,aAAa,CAAC,EAAE,SAAS,EAAE,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CACjC;gEAEsD,cAAc;AAArE,wBAWE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export interface FeedbackPaneProps {
|
|
3
|
+
isVisible: boolean;
|
|
4
|
+
onHide: () => void;
|
|
5
|
+
categories?: string[];
|
|
6
|
+
}
|
|
7
|
+
declare const _default: ({ categories }: {
|
|
8
|
+
categories?: string[] | undefined;
|
|
9
|
+
}) => JSX.Element;
|
|
10
|
+
export default _default;
|
|
11
|
+
//# sourceMappingURL=Feedback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Feedback.d.ts","sourceRoot":"","sources":["../../../../src/About/Feedback.tsx"],"names":[],"mappings":";AAeA,MAAM,WAAW,iBAAiB;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;;;;AAsID,wBAgBE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupportCard.d.ts","sourceRoot":"","sources":["../../../../src/About/SupportCard.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SupportCard.d.ts","sourceRoot":"","sources":["../../../../src/About/SupportCard.tsx"],"names":[],"mappings":";;;;AAyBA,wBA+EE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sendFeedback.d.ts","sourceRoot":"","sources":["../../../../src/About/sendFeedback.ts"],"names":[],"mappings":"mCAcgC,MAAM,aAAa,MAAM;AAAzD,wBA0BE"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import 'focus-visible';
|
|
2
2
|
import React, { FC, ReactNode } from 'react';
|
|
3
3
|
import { Reducer } from 'redux';
|
|
4
|
-
import { FeedbackPaneProps } from '../Feedback/FeedbackPane';
|
|
5
4
|
import './app.scss';
|
|
6
5
|
import './shared.scss';
|
|
7
6
|
import './tailwind.css';
|
|
@@ -19,7 +18,7 @@ interface ConnectedAppProps {
|
|
|
19
18
|
sidePanel?: ReactNode;
|
|
20
19
|
showLogByDefault?: boolean;
|
|
21
20
|
documentation?: ReactNode[];
|
|
22
|
-
|
|
21
|
+
feedbackCategories?: string[];
|
|
23
22
|
children?: ReactNode;
|
|
24
23
|
autoReselectByDefault?: boolean;
|
|
25
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../../../src/App/App.tsx"],"names":[],"mappings":"AAMA,OAAO,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAA8B,MAAM,OAAO,CAAC;AAIzE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../../../src/App/App.tsx"],"names":[],"mappings":"AAMA,OAAO,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAA8B,MAAM,OAAO,CAAC;AAIzE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAqChC,OAAO,YAAY,CAAC;AACpB,OAAO,eAAe,CAAC;AACvB,OAAO,gBAAgB,CAAC;AAExB,MAAM,WAAW,SAAS;IACtB,MAAM,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,IAAI;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;IACpB,SAAS,CAAC,EAAE,EAAE,CAAC;CAClB;AAED,UAAU,iBAAiB;IACvB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,SAAS,EAAE,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACnC;;;;AAqID,wBASE;AAyCF,eAAO,MAAM,MAAM,QAAS,MAAM,YAAY,SAM7C,CAAC"}
|
|
@@ -40,7 +40,7 @@ export { default as NumberInputWithDropdown } from './InlineInput/NumberInputWit
|
|
|
40
40
|
export type { NumberDropdownItem } from './InlineInput/NumberInputWithDropdown';
|
|
41
41
|
export { default as Spinner } from './Spinner/Spinner';
|
|
42
42
|
export { default as MasonryLayout } from './MasonryLayout/MasonryLayout';
|
|
43
|
-
export { default as sendFeedback } from './
|
|
43
|
+
export { default as sendFeedback } from './About/sendFeedback';
|
|
44
44
|
export { default as useStopwatch } from './utils/useStopwatch';
|
|
45
45
|
export { default as useFocusedOnVisible } from './utils/useFocusedOnVisible';
|
|
46
46
|
export { reducer as errorDialogReducer } from './ErrorDialog/errorDialogSlice';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,kBAAkB;;;;;;;;;CAA6B,CAAC;AAE7D,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACH,OAAO,IAAI,cAAc,EACzB,KAAK,KAAK,IAAI,mBAAmB,GACpC,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACH,MAAM,EACN,aAAa,EACb,kBAAkB,EAClB,UAAU,EACV,WAAW,EACX,YAAY,EACZ,YAAY,GACf,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACpD,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAC3F,YAAY,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAEhF,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEzE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2023 Nordic Semiconductor ASA
|
|
3
|
-
*
|
|
4
|
-
* SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import React, { useMemo, useState } from 'react';
|
|
8
|
-
|
|
9
|
-
import Button from '../Button/Button';
|
|
10
|
-
import Dropdown, { DropdownItem } from '../Dropdown/Dropdown';
|
|
11
|
-
import logger from '../logging';
|
|
12
|
-
import describeError from '../logging/describeError';
|
|
13
|
-
import sendFeedback from './sendFeedback';
|
|
14
|
-
|
|
15
|
-
export interface FeedbackPaneProps {
|
|
16
|
-
categories?: string[];
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export default ({ categories }: FeedbackPaneProps) => {
|
|
20
|
-
const [feedback, setFeedback] = useState('');
|
|
21
|
-
const [sayThankYou, setSayThankYou] = useState(false);
|
|
22
|
-
|
|
23
|
-
const categoryItems = useMemo(() => {
|
|
24
|
-
if (!categories?.length) return undefined;
|
|
25
|
-
|
|
26
|
-
const items = ['Select a category', ...categories].map(category => ({
|
|
27
|
-
label: category,
|
|
28
|
-
value: category,
|
|
29
|
-
}));
|
|
30
|
-
return items;
|
|
31
|
-
}, [categories]);
|
|
32
|
-
|
|
33
|
-
const [selectedCategory, setSelectedCategory] = useState<
|
|
34
|
-
DropdownItem | undefined
|
|
35
|
-
>(categoryItems ? categoryItems[0] : undefined);
|
|
36
|
-
|
|
37
|
-
if (sayThankYou === true) {
|
|
38
|
-
return (
|
|
39
|
-
<div className="tw-preflight tw-flex tw-w-full tw-justify-center">
|
|
40
|
-
<div className="tw-mb-3 tw-flex tw-flex-col tw-items-start tw-justify-center tw-bg-white tw-px-3 tw-py-4">
|
|
41
|
-
<b className="tw-mb-3">Thank you!</b>
|
|
42
|
-
<section>
|
|
43
|
-
<p>
|
|
44
|
-
We value your feedback and any ideas you may have
|
|
45
|
-
for improving our applications.
|
|
46
|
-
</p>
|
|
47
|
-
<p>
|
|
48
|
-
Click the button below in order to send more
|
|
49
|
-
feedback.
|
|
50
|
-
</p>
|
|
51
|
-
</section>
|
|
52
|
-
<Button
|
|
53
|
-
size="lg"
|
|
54
|
-
className="tw-align-self-end tw-self-end"
|
|
55
|
-
onClick={() => {
|
|
56
|
-
setSayThankYou(false);
|
|
57
|
-
setFeedback('');
|
|
58
|
-
}}
|
|
59
|
-
variant="secondary"
|
|
60
|
-
>
|
|
61
|
-
Give more feedback
|
|
62
|
-
</Button>
|
|
63
|
-
</div>
|
|
64
|
-
</div>
|
|
65
|
-
);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
return (
|
|
69
|
-
<div className="tw-preflight tw-flex tw-w-full tw-justify-center">
|
|
70
|
-
<div className="tw-mb-3 tw-flex tw-flex-col tw-items-start tw-justify-center tw-gap-4 tw-bg-white tw-px-3 tw-py-4">
|
|
71
|
-
<b>Give Feedback</b>
|
|
72
|
-
<p>
|
|
73
|
-
We value your feedback and any ideas you may have for
|
|
74
|
-
improving our applications. Please use the form below to
|
|
75
|
-
give feedback.
|
|
76
|
-
</p>
|
|
77
|
-
<p>
|
|
78
|
-
Note: this is not a support channel, and you will not
|
|
79
|
-
receive a response. For help and support, visit the{' '}
|
|
80
|
-
<a
|
|
81
|
-
href="https://devzone.nordicsemi.com/"
|
|
82
|
-
target="_blank"
|
|
83
|
-
rel="noreferrer noopener"
|
|
84
|
-
className="tw-text-nordicBlue"
|
|
85
|
-
>
|
|
86
|
-
Nordic DevZone
|
|
87
|
-
</a>
|
|
88
|
-
.
|
|
89
|
-
</p>
|
|
90
|
-
<form className="tw-flex tw-w-full tw-flex-col tw-gap-4">
|
|
91
|
-
{categoryItems?.length && (
|
|
92
|
-
<div className="tw-w-52">
|
|
93
|
-
<Dropdown
|
|
94
|
-
items={categoryItems}
|
|
95
|
-
onSelect={setSelectedCategory}
|
|
96
|
-
selectedItem={
|
|
97
|
-
selectedCategory || categoryItems[0]
|
|
98
|
-
}
|
|
99
|
-
/>
|
|
100
|
-
</div>
|
|
101
|
-
)}
|
|
102
|
-
<div>
|
|
103
|
-
<b>What is your feedback?</b>
|
|
104
|
-
<textarea
|
|
105
|
-
name="feedback-text"
|
|
106
|
-
className="tw-h-32 tw-w-full tw-border tw-border-gray-700 tw-p-2"
|
|
107
|
-
required
|
|
108
|
-
value={feedback}
|
|
109
|
-
onChange={e => setFeedback(e.target.value)}
|
|
110
|
-
/>
|
|
111
|
-
</div>
|
|
112
|
-
</form>
|
|
113
|
-
<p>We only collect this information when you send feedback:</p>
|
|
114
|
-
<ul className="tw-list-disc tw-pl-8">
|
|
115
|
-
<li>Application name</li>
|
|
116
|
-
<li>Your feedback</li>
|
|
117
|
-
<li>Operating system</li>
|
|
118
|
-
</ul>
|
|
119
|
-
<Button
|
|
120
|
-
size="lg"
|
|
121
|
-
className="tw-self-end"
|
|
122
|
-
variant="primary"
|
|
123
|
-
onClick={() =>
|
|
124
|
-
handleFormData(
|
|
125
|
-
feedback,
|
|
126
|
-
setSayThankYou,
|
|
127
|
-
selectedCategory?.value
|
|
128
|
-
)
|
|
129
|
-
}
|
|
130
|
-
disabled={feedback === ''}
|
|
131
|
-
>
|
|
132
|
-
Send Feedback
|
|
133
|
-
</Button>
|
|
134
|
-
</div>
|
|
135
|
-
</div>
|
|
136
|
-
);
|
|
137
|
-
};
|
|
138
|
-
|
|
139
|
-
const handleFormData = async (
|
|
140
|
-
feedback: string,
|
|
141
|
-
setResponse: (response: boolean) => void,
|
|
142
|
-
category?: string
|
|
143
|
-
) => {
|
|
144
|
-
try {
|
|
145
|
-
await sendFeedback(feedback, category);
|
|
146
|
-
|
|
147
|
-
setResponse(true);
|
|
148
|
-
} catch (error: unknown) {
|
|
149
|
-
logger.error(
|
|
150
|
-
`FeedbackForm: Could not send feedback. ${describeError(error)}`
|
|
151
|
-
);
|
|
152
|
-
}
|
|
153
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FeedbackPane.d.ts","sourceRoot":"","sources":["../../../../src/Feedback/FeedbackPane.tsx"],"names":[],"mappings":";AAcA,MAAM,WAAW,iBAAiB;IAC9B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;yCAE+B,iBAAiB;AAAjD,wBAsHE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sendFeedback.d.ts","sourceRoot":"","sources":["../../../../src/Feedback/sendFeedback.ts"],"names":[],"mappings":"mCAcgC,MAAM,aAAa,MAAM;AAAzD,wBAyBE"}
|
|
File without changes
|