@atlaskit/contextual-survey 2.0.11
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 +258 -0
- package/LICENSE +13 -0
- package/README.md +13 -0
- package/build/tsconfig.json +17 -0
- package/constants/package.json +7 -0
- package/dist/cjs/components/ContextualSurvey.js +274 -0
- package/dist/cjs/components/FeedbackAcknowledgement.js +26 -0
- package/dist/cjs/components/FeedbackScoreButtons.js +60 -0
- package/dist/cjs/components/SignUpPrompt.js +84 -0
- package/dist/cjs/components/SignUpSuccess.js +29 -0
- package/dist/cjs/components/SuccessContainer.js +35 -0
- package/dist/cjs/components/SurveyContainer.js +48 -0
- package/dist/cjs/components/SurveyForm.js +159 -0
- package/dist/cjs/components/SurveyMarshal.js +67 -0
- package/dist/cjs/components/useEscapeToDismiss.js +78 -0
- package/dist/cjs/constants.js +15 -0
- package/dist/cjs/index.js +35 -0
- package/dist/cjs/types.js +5 -0
- package/dist/cjs/version.json +5 -0
- package/dist/es2019/components/ContextualSurvey.js +178 -0
- package/dist/es2019/components/FeedbackAcknowledgement.js +12 -0
- package/dist/es2019/components/FeedbackScoreButtons.js +69 -0
- package/dist/es2019/components/SignUpPrompt.js +46 -0
- package/dist/es2019/components/SignUpSuccess.js +12 -0
- package/dist/es2019/components/SuccessContainer.js +22 -0
- package/dist/es2019/components/SurveyContainer.js +37 -0
- package/dist/es2019/components/SurveyForm.js +121 -0
- package/dist/es2019/components/SurveyMarshal.js +62 -0
- package/dist/es2019/components/useEscapeToDismiss.js +69 -0
- package/dist/es2019/constants.js +4 -0
- package/dist/es2019/index.js +2 -0
- package/dist/es2019/types.js +1 -0
- package/dist/es2019/version.json +5 -0
- package/dist/esm/components/ContextualSurvey.js +244 -0
- package/dist/esm/components/FeedbackAcknowledgement.js +13 -0
- package/dist/esm/components/FeedbackScoreButtons.js +44 -0
- package/dist/esm/components/SignUpPrompt.js +66 -0
- package/dist/esm/components/SignUpSuccess.js +16 -0
- package/dist/esm/components/SuccessContainer.js +21 -0
- package/dist/esm/components/SurveyContainer.js +30 -0
- package/dist/esm/components/SurveyForm.js +132 -0
- package/dist/esm/components/SurveyMarshal.js +55 -0
- package/dist/esm/components/useEscapeToDismiss.js +68 -0
- package/dist/esm/constants.js +4 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/version.json +5 -0
- package/dist/types/components/ContextualSurvey.d.ts +39 -0
- package/dist/types/components/FeedbackAcknowledgement.d.ts +2 -0
- package/dist/types/components/FeedbackScoreButtons.d.ts +6 -0
- package/dist/types/components/SignUpPrompt.d.ts +5 -0
- package/dist/types/components/SignUpSuccess.d.ts +4 -0
- package/dist/types/components/SuccessContainer.d.ts +6 -0
- package/dist/types/components/SurveyContainer.d.ts +7 -0
- package/dist/types/components/SurveyForm.d.ts +11 -0
- package/dist/types/components/SurveyMarshal.d.ts +13 -0
- package/dist/types/components/useEscapeToDismiss.d.ts +6 -0
- package/dist/types/constants.d.ts +2 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/types.d.ts +5 -0
- package/docs/0-intro.tsx +115 -0
- package/package.json +58 -0
- package/tsconfig.json +16 -0
- package/types/package.json +7 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
11
|
+
|
|
12
|
+
var _core = require("@emotion/core");
|
|
13
|
+
|
|
14
|
+
var _constants = require("@atlaskit/theme/constants");
|
|
15
|
+
|
|
16
|
+
var _SuccessContainer = _interopRequireDefault(require("./SuccessContainer"));
|
|
17
|
+
|
|
18
|
+
var _templateObject;
|
|
19
|
+
|
|
20
|
+
var _default = function _default() {
|
|
21
|
+
return (0, _core.jsx)(_SuccessContainer.default, null, (0, _core.jsx)("h1", {
|
|
22
|
+
css: (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n font-size: ", "px;\n font-weight: 600;\n margin-top: 0;\n line-height: ", "px;\n "])), (0, _constants.fontSize)(), (0, _constants.gridSize)() * 3)
|
|
23
|
+
}, "Thanks for your feedback"));
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
exports.default = _default;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
11
|
+
|
|
12
|
+
var _core = require("@emotion/core");
|
|
13
|
+
|
|
14
|
+
var _customThemeButton = _interopRequireDefault(require("@atlaskit/button/custom-theme-button"));
|
|
15
|
+
|
|
16
|
+
var _colors = require("@atlaskit/theme/colors");
|
|
17
|
+
|
|
18
|
+
var _constants = require("@atlaskit/theme/constants");
|
|
19
|
+
|
|
20
|
+
var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
|
|
21
|
+
|
|
22
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4;
|
|
23
|
+
|
|
24
|
+
var tooltipMessage = ['Strongly disagree', 'Disagree', 'Slightly disagree', 'Neutral', 'Slightly agree', 'Agree', 'Strongly agree'];
|
|
25
|
+
|
|
26
|
+
var _default = function _default(_ref) {
|
|
27
|
+
var onChange = _ref.onChange,
|
|
28
|
+
value = _ref.value;
|
|
29
|
+
return (0, _core.jsx)("div", null, (0, _core.jsx)("div", {
|
|
30
|
+
css: (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n display: flex;\n justify-content: space-between;\n\n & > * + * {\n margin-left: ", "px;\n }\n\n & > * {\n flex: 1;\n\n & > button {\n justify-content: center;\n }\n }\n "])), (0, _constants.gridSize)())
|
|
31
|
+
}, Array.from({
|
|
32
|
+
length: 7
|
|
33
|
+
}, function (_, i) {
|
|
34
|
+
var score = i + 1;
|
|
35
|
+
var isSelected = value === score;
|
|
36
|
+
return (0, _core.jsx)(_tooltip.default, {
|
|
37
|
+
content: tooltipMessage[i],
|
|
38
|
+
key: score,
|
|
39
|
+
hideTooltipOnClick: true
|
|
40
|
+
}, (0, _core.jsx)(_customThemeButton.default, {
|
|
41
|
+
onClick: function onClick() {
|
|
42
|
+
return onChange(score);
|
|
43
|
+
},
|
|
44
|
+
isSelected: isSelected,
|
|
45
|
+
"aria-pressed": isSelected,
|
|
46
|
+
"aria-describedby": "contextualSurveyStatement",
|
|
47
|
+
"aria-label": tooltipMessage[i],
|
|
48
|
+
shouldFitContainer: true
|
|
49
|
+
}, score));
|
|
50
|
+
})), (0, _core.jsx)("div", {
|
|
51
|
+
css: (0, _core.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n font-size: 12px;\n font-weight: 600;\n color: ", ";\n display: flex;\n margin-top: ", "px;\n margin-bottom: ", "px;\n\n & > span {\n width: ", "px;\n }\n "])), _colors.N200, (0, _constants.gridSize)(), (0, _constants.gridSize)() * 3, (0, _constants.gridSize)() * 10),
|
|
52
|
+
"aria-hidden": true
|
|
53
|
+
}, (0, _core.jsx)("span", null, "Strongly disagree"), (0, _core.jsx)("span", {
|
|
54
|
+
css: (0, _core.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n text-align: center;\n margin: 0 auto;\n padding: 0 ", "px;\n "])), (0, _constants.gridSize)() * 6)
|
|
55
|
+
}, "Neutral"), (0, _core.jsx)("span", {
|
|
56
|
+
css: (0, _core.css)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["\n text-align: right;\n "])))
|
|
57
|
+
}, "Strongly agree")));
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
exports.default = _default;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
11
|
+
|
|
12
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
13
|
+
|
|
14
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
15
|
+
|
|
16
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
17
|
+
|
|
18
|
+
var _react = require("react");
|
|
19
|
+
|
|
20
|
+
var _core = require("@emotion/core");
|
|
21
|
+
|
|
22
|
+
var _customThemeButton = _interopRequireDefault(require("@atlaskit/button/custom-theme-button"));
|
|
23
|
+
|
|
24
|
+
var _constants = require("@atlaskit/theme/constants");
|
|
25
|
+
|
|
26
|
+
var _SuccessContainer = _interopRequireDefault(require("./SuccessContainer"));
|
|
27
|
+
|
|
28
|
+
var _templateObject, _templateObject2;
|
|
29
|
+
|
|
30
|
+
var _default = function _default(_ref) {
|
|
31
|
+
var onAnswer = _ref.onAnswer;
|
|
32
|
+
|
|
33
|
+
var _useState = (0, _react.useState)(null),
|
|
34
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
35
|
+
pending = _useState2[0],
|
|
36
|
+
setPending = _useState2[1];
|
|
37
|
+
|
|
38
|
+
var answeredWith = (0, _react.useCallback)( /*#__PURE__*/function () {
|
|
39
|
+
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(answer) {
|
|
40
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
41
|
+
while (1) {
|
|
42
|
+
switch (_context.prev = _context.next) {
|
|
43
|
+
case 0:
|
|
44
|
+
setPending(answer ? 'yes' : 'no');
|
|
45
|
+
_context.next = 3;
|
|
46
|
+
return onAnswer(answer);
|
|
47
|
+
|
|
48
|
+
case 3:
|
|
49
|
+
case "end":
|
|
50
|
+
return _context.stop();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}, _callee);
|
|
54
|
+
}));
|
|
55
|
+
|
|
56
|
+
return function (_x) {
|
|
57
|
+
return _ref2.apply(this, arguments);
|
|
58
|
+
};
|
|
59
|
+
}(), [setPending, onAnswer]);
|
|
60
|
+
var isDisabled = Boolean(pending);
|
|
61
|
+
return (0, _core.jsx)(_SuccessContainer.default, null, (0, _core.jsx)("h1", {
|
|
62
|
+
css: (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n font-size: ", "px;\n font-weight: 600;\n margin: 0;\n line-height: ", "px;\n "])), (0, _constants.fontSize)(), (0, _constants.gridSize)() * 3)
|
|
63
|
+
}, "Thanks for your feedback"), (0, _core.jsx)("p", null, "Are you interested in participating in our research?"), (0, _core.jsx)("p", null, "Sign up for the", ' ', (0, _core.jsx)("a", {
|
|
64
|
+
href: "https://www.atlassian.com/research-group"
|
|
65
|
+
}, "Atlassian Research Group"), ' ', "and we may contact you in the future with research opportunities."), (0, _core.jsx)("div", {
|
|
66
|
+
css: (0, _core.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n margin-top: ", "px;\n display: flex;\n justify-content: flex-end;\n\n & > * + * {\n margin-left: ", "px;\n }\n "])), (0, _constants.gridSize)() * 4, (0, _constants.gridSize)())
|
|
67
|
+
}, (0, _core.jsx)(_customThemeButton.default, {
|
|
68
|
+
appearance: "subtle",
|
|
69
|
+
onClick: function onClick() {
|
|
70
|
+
return answeredWith(false);
|
|
71
|
+
},
|
|
72
|
+
isDisabled: isDisabled,
|
|
73
|
+
isLoading: pending === 'no'
|
|
74
|
+
}, "No, thanks"), (0, _core.jsx)(_customThemeButton.default, {
|
|
75
|
+
appearance: "primary",
|
|
76
|
+
onClick: function onClick() {
|
|
77
|
+
return answeredWith(true);
|
|
78
|
+
},
|
|
79
|
+
isDisabled: isDisabled,
|
|
80
|
+
isLoading: pending === 'yes'
|
|
81
|
+
}, "Yes, sign me up")));
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
exports.default = _default;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
11
|
+
|
|
12
|
+
var _objectDestructuringEmpty2 = _interopRequireDefault(require("@babel/runtime/helpers/objectDestructuringEmpty"));
|
|
13
|
+
|
|
14
|
+
var _core = require("@emotion/core");
|
|
15
|
+
|
|
16
|
+
var _constants = require("@atlaskit/theme/constants");
|
|
17
|
+
|
|
18
|
+
var _SuccessContainer = _interopRequireDefault(require("./SuccessContainer"));
|
|
19
|
+
|
|
20
|
+
var _templateObject;
|
|
21
|
+
|
|
22
|
+
var _default = function _default(_ref) {
|
|
23
|
+
(0, _objectDestructuringEmpty2.default)(_ref);
|
|
24
|
+
return (0, _core.jsx)(_SuccessContainer.default, null, (0, _core.jsx)("h1", {
|
|
25
|
+
css: (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n font-size: ", "px;\n font-weight: 600;\n line-height: ", "px;\n margin: 0;\n "])), (0, _constants.fontSize)(), (0, _constants.gridSize)() * 3)
|
|
26
|
+
}, "Thanks for signing up"), (0, _core.jsx)("p", null, "We may reach out to you in the future to participate in additional research."));
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
exports.default = _default;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
11
|
+
|
|
12
|
+
var _core = require("@emotion/core");
|
|
13
|
+
|
|
14
|
+
var _checkCircle = _interopRequireDefault(require("@atlaskit/icon/glyph/check-circle"));
|
|
15
|
+
|
|
16
|
+
var _colors = require("@atlaskit/theme/colors");
|
|
17
|
+
|
|
18
|
+
var _constants = require("@atlaskit/theme/constants");
|
|
19
|
+
|
|
20
|
+
var _templateObject, _templateObject2;
|
|
21
|
+
|
|
22
|
+
var _default = function _default(_ref) {
|
|
23
|
+
var children = _ref.children;
|
|
24
|
+
return (0, _core.jsx)("section", {
|
|
25
|
+
css: (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n margin-left: ", "px;\n "])), (0, _constants.gridSize)() * 5)
|
|
26
|
+
}, (0, _core.jsx)("div", {
|
|
27
|
+
css: (0, _core.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n position: absolute;\n top: ", "px;\n left: ", "px;\n "])), (0, _constants.gridSize)() * 3, (0, _constants.gridSize)() * 3)
|
|
28
|
+
}, (0, _core.jsx)(_checkCircle.default, {
|
|
29
|
+
label: "",
|
|
30
|
+
"aria-hidden": true,
|
|
31
|
+
primaryColor: _colors.G300
|
|
32
|
+
})), children);
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
exports.default = _default;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
11
|
+
|
|
12
|
+
var _core = require("@emotion/core");
|
|
13
|
+
|
|
14
|
+
var _customThemeButton = _interopRequireDefault(require("@atlaskit/button/custom-theme-button"));
|
|
15
|
+
|
|
16
|
+
var _cross = _interopRequireDefault(require("@atlaskit/icon/glyph/cross"));
|
|
17
|
+
|
|
18
|
+
var _colors = require("@atlaskit/theme/colors");
|
|
19
|
+
|
|
20
|
+
var _constants = require("@atlaskit/theme/constants");
|
|
21
|
+
|
|
22
|
+
var _elevation = require("@atlaskit/theme/elevation");
|
|
23
|
+
|
|
24
|
+
var _constants2 = require("../constants");
|
|
25
|
+
|
|
26
|
+
var _templateObject, _templateObject2;
|
|
27
|
+
|
|
28
|
+
var padding = (0, _constants.gridSize)() * 3;
|
|
29
|
+
|
|
30
|
+
var _default = function _default(_ref) {
|
|
31
|
+
var children = _ref.children,
|
|
32
|
+
onDismiss = _ref.onDismiss;
|
|
33
|
+
return (0, _core.jsx)("div", {
|
|
34
|
+
css: (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n background-color: ", ";\n border-radius: ", "px;\n padding: ", "px;\n ", "\n width: ", "px;\n "])), _colors.N0, (0, _constants.borderRadius)(), padding, (0, _elevation.e500)(), _constants2.surveyInnerWidth)
|
|
35
|
+
}, (0, _core.jsx)("div", {
|
|
36
|
+
css: (0, _core.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n position: absolute;\n top: ", "px;\n right: ", "px;\n "])), padding - (0, _constants.gridSize)(), padding - (0, _constants.gridSize)())
|
|
37
|
+
}, (0, _core.jsx)(_customThemeButton.default, {
|
|
38
|
+
iconBefore: (0, _core.jsx)(_cross.default, {
|
|
39
|
+
label: "",
|
|
40
|
+
primaryColor: _colors.N50
|
|
41
|
+
}),
|
|
42
|
+
"aria-label": "Dismiss",
|
|
43
|
+
appearance: "subtle",
|
|
44
|
+
onClick: onDismiss
|
|
45
|
+
})), children);
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
exports.default = _default;
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.default = void 0;
|
|
11
|
+
|
|
12
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
|
+
|
|
14
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
15
|
+
|
|
16
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
17
|
+
|
|
18
|
+
var _react = require("react");
|
|
19
|
+
|
|
20
|
+
var _core = require("@emotion/core");
|
|
21
|
+
|
|
22
|
+
var _reactTransitionGroup = require("react-transition-group");
|
|
23
|
+
|
|
24
|
+
var _customThemeButton = _interopRequireDefault(require("@atlaskit/button/custom-theme-button"));
|
|
25
|
+
|
|
26
|
+
var _checkbox = require("@atlaskit/checkbox");
|
|
27
|
+
|
|
28
|
+
var _form = _interopRequireWildcard(require("@atlaskit/form"));
|
|
29
|
+
|
|
30
|
+
var _textarea = _interopRequireDefault(require("@atlaskit/textarea"));
|
|
31
|
+
|
|
32
|
+
var _constants = require("@atlaskit/theme/constants");
|
|
33
|
+
|
|
34
|
+
var _FeedbackScoreButtons = _interopRequireDefault(require("./FeedbackScoreButtons"));
|
|
35
|
+
|
|
36
|
+
var _templateObject, _templateObject2;
|
|
37
|
+
|
|
38
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
39
|
+
|
|
40
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
41
|
+
|
|
42
|
+
var getExpandedHeight = function getExpandedHeight(ref, state) {
|
|
43
|
+
if (!ref.current) {
|
|
44
|
+
return '0';
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
switch (state) {
|
|
48
|
+
case 'entering':
|
|
49
|
+
return "".concat(ref.current.scrollHeight, "px");
|
|
50
|
+
|
|
51
|
+
case 'entered':
|
|
52
|
+
// needed for TextField auto height expand
|
|
53
|
+
return "none";
|
|
54
|
+
|
|
55
|
+
default:
|
|
56
|
+
return '0';
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
var transitionDuration = 200;
|
|
61
|
+
|
|
62
|
+
var _default = function _default(_ref) {
|
|
63
|
+
var question = _ref.question,
|
|
64
|
+
statement = _ref.statement,
|
|
65
|
+
textPlaceholder = _ref.textPlaceholder,
|
|
66
|
+
textLabel = _ref.textLabel,
|
|
67
|
+
onSubmit = _ref.onSubmit;
|
|
68
|
+
|
|
69
|
+
var _useState = (0, _react.useState)(false),
|
|
70
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
71
|
+
expanded = _useState2[0],
|
|
72
|
+
setExpanded = _useState2[1];
|
|
73
|
+
|
|
74
|
+
var _useState3 = (0, _react.useState)(false),
|
|
75
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
76
|
+
canContactDefault = _useState4[0],
|
|
77
|
+
setCanContactDefault = _useState4[1];
|
|
78
|
+
|
|
79
|
+
var hasAutoFilledCanContactRef = (0, _react.useRef)(false);
|
|
80
|
+
var expandedAreaRef = (0, _react.useRef)(null);
|
|
81
|
+
var onScoreSelect = (0, _react.useCallback)(function () {
|
|
82
|
+
setExpanded(true);
|
|
83
|
+
}, [setExpanded]); // On the first type the user types some feedback we auto select
|
|
84
|
+
// the option for allowing feedback. This automatic selection only
|
|
85
|
+
// happens once. After that it is up to the user to control
|
|
86
|
+
|
|
87
|
+
var onFeedbackChange = (0, _react.useCallback)(function () {
|
|
88
|
+
if (hasAutoFilledCanContactRef.current) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
hasAutoFilledCanContactRef.current = true;
|
|
93
|
+
setCanContactDefault(true);
|
|
94
|
+
}, []);
|
|
95
|
+
return (0, _core.jsx)("section", {
|
|
96
|
+
"aria-labelledby": "contextualSurveyQuestion"
|
|
97
|
+
}, (0, _core.jsx)("h1", {
|
|
98
|
+
id: "contextualSurveyQuestion",
|
|
99
|
+
css: (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n font-size: ", "px;\n font-weight: 600;\n "])), (0, _constants.fontSize)())
|
|
100
|
+
}, question), statement && (0, _core.jsx)("p", {
|
|
101
|
+
id: "contextualSurveyStatement"
|
|
102
|
+
}, statement), (0, _core.jsx)(_form.default, {
|
|
103
|
+
onSubmit: onSubmit
|
|
104
|
+
}, function (_ref2) {
|
|
105
|
+
var formProps = _ref2.formProps,
|
|
106
|
+
submitting = _ref2.submitting;
|
|
107
|
+
return (0, _core.jsx)("form", formProps, (0, _core.jsx)(_form.Field, {
|
|
108
|
+
name: "feedbackScore",
|
|
109
|
+
isDisabled: submitting,
|
|
110
|
+
isRequired: true
|
|
111
|
+
}, function (_ref3) {
|
|
112
|
+
var fieldProps = _ref3.fieldProps;
|
|
113
|
+
return (0, _core.jsx)(_FeedbackScoreButtons.default, (0, _extends2.default)({}, fieldProps, {
|
|
114
|
+
onChange: function onChange(score) {
|
|
115
|
+
fieldProps.onChange(score);
|
|
116
|
+
onScoreSelect();
|
|
117
|
+
}
|
|
118
|
+
}));
|
|
119
|
+
}), (0, _core.jsx)(_reactTransitionGroup.Transition, {
|
|
120
|
+
in: expanded,
|
|
121
|
+
timeout: transitionDuration,
|
|
122
|
+
mountOnEnter: true
|
|
123
|
+
}, function (state) {
|
|
124
|
+
return (0, _core.jsx)("div", {
|
|
125
|
+
css: (0, _core.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n transition: max-height ", "ms ease-in-out;\n overflow: hidden;\n max-height: ", ";\n "])), transitionDuration, getExpandedHeight(expandedAreaRef, state)),
|
|
126
|
+
ref: expandedAreaRef
|
|
127
|
+
}, (0, _core.jsx)(_form.Field, {
|
|
128
|
+
name: "writtenFeedback",
|
|
129
|
+
defaultValue: "",
|
|
130
|
+
isDisabled: submitting
|
|
131
|
+
}, function (_ref4) {
|
|
132
|
+
var fieldProps = _ref4.fieldProps;
|
|
133
|
+
return (0, _core.jsx)(_textarea.default, (0, _extends2.default)({}, fieldProps, {
|
|
134
|
+
"aria-label": textLabel,
|
|
135
|
+
placeholder: textPlaceholder,
|
|
136
|
+
onChange: function onChange(event) {
|
|
137
|
+
fieldProps.onChange(event);
|
|
138
|
+
onFeedbackChange();
|
|
139
|
+
}
|
|
140
|
+
}));
|
|
141
|
+
}), (0, _core.jsx)(_form.CheckboxField, {
|
|
142
|
+
name: "canContact",
|
|
143
|
+
isDisabled: submitting,
|
|
144
|
+
defaultIsChecked: canContactDefault
|
|
145
|
+
}, function (_ref5) {
|
|
146
|
+
var fieldProps = _ref5.fieldProps;
|
|
147
|
+
return (0, _core.jsx)(_checkbox.Checkbox, (0, _extends2.default)({}, fieldProps, {
|
|
148
|
+
label: "Atlassian can contact me about this feedback"
|
|
149
|
+
}));
|
|
150
|
+
}), (0, _core.jsx)(_form.FormFooter, null, (0, _core.jsx)(_customThemeButton.default, {
|
|
151
|
+
type: "submit",
|
|
152
|
+
appearance: "primary",
|
|
153
|
+
isLoading: submitting
|
|
154
|
+
}, "Submit")));
|
|
155
|
+
}));
|
|
156
|
+
}));
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
exports.default = _default;
|