@constructor-io/constructorio-ui-quizzes 1.17.6 → 1.17.7
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/dist/constructorio-ui-quizzes-bundled.js +12 -12
- package/lib/cjs/components/ShareResultsModal/CloseSVG.js +2 -2
- package/lib/cjs/components/ShareResultsModal/EmailField.js +14 -7
- package/lib/cjs/components/ShareResultsModal/LinkField.js +15 -6
- package/lib/cjs/components/ShareResultsModal/Toaster.js +13 -0
- package/lib/cjs/version.js +1 -1
- package/lib/mjs/components/ShareResultsModal/CloseSVG.js +2 -2
- package/lib/mjs/components/ShareResultsModal/EmailField.js +15 -8
- package/lib/mjs/components/ShareResultsModal/LinkField.js +16 -7
- package/lib/mjs/components/ShareResultsModal/Toaster.js +9 -0
- package/lib/mjs/version.js +1 -1
- package/lib/styles.css +6 -0
- package/lib/types/components/ShareResultsModal/CloseSVG.d.ts +1 -1
- package/lib/types/components/ShareResultsModal/Toaster.d.ts +7 -0
- package/lib/types/version.d.ts +1 -1
- package/package.json +1 -1
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
4
|
const react_1 = tslib_1.__importDefault(require("react"));
|
|
5
|
-
function CloseSVG() {
|
|
6
|
-
return (react_1.default.createElement("svg", { width: '24', height: '24', viewBox: '0 0 24 24', fill: 'none', xmlns: 'http://www.w3.org/2000/svg' },
|
|
5
|
+
function CloseSVG(props) {
|
|
6
|
+
return (react_1.default.createElement("svg", Object.assign({}, props, { role: 'button', "aria-label": 'Close', width: '24', height: '24', viewBox: '0 0 24 24', fill: 'none', xmlns: 'http://www.w3.org/2000/svg' }),
|
|
7
7
|
react_1.default.createElement("path", { d: 'M18.4748 4.11089C18.8653 3.72036 19.4985 3.72036 19.889 4.11089C20.2795 4.50141 20.2795 5.13458 19.889 5.5251L5.52503 19.8891C5.13451 20.2796 4.50134 20.2796 4.11082 19.8891C3.72029 19.4985 3.72029 18.8654 4.11082 18.4748L18.4748 4.11089Z', fill: '#505A75' }),
|
|
8
8
|
react_1.default.createElement("path", { d: 'M4.11076 5.5251C3.72024 5.13458 3.72024 4.50141 4.11076 4.11089C4.50129 3.72036 5.13445 3.72036 5.52498 4.11089L19.8889 18.4748C20.2795 18.8654 20.2795 19.4985 19.8889 19.8891C19.4984 20.2796 18.8652 20.2796 18.4747 19.8891L4.11076 5.5251Z', fill: '#505A75' })));
|
|
9
9
|
}
|
|
@@ -4,10 +4,12 @@ const tslib_1 = require("tslib");
|
|
|
4
4
|
const react_1 = tslib_1.__importStar(require("react"));
|
|
5
5
|
const CheckMarkCircleSVG_1 = tslib_1.__importDefault(require("./CheckMarkCircleSVG"));
|
|
6
6
|
const AlertCircleSVG_1 = tslib_1.__importDefault(require("./AlertCircleSVG"));
|
|
7
|
+
const Toaster_1 = tslib_1.__importDefault(require("./Toaster"));
|
|
7
8
|
function EmailField({ onSubmit }) {
|
|
8
9
|
const [formError, setFormError] = (0, react_1.useState)(null);
|
|
9
10
|
const [isSubmitted, setIsSubmitted] = (0, react_1.useState)(false);
|
|
10
11
|
const [email, setEmail] = (0, react_1.useState)('');
|
|
12
|
+
const [showNotification, setShowNotification] = react_1.default.useState(false);
|
|
11
13
|
const validate = () => {
|
|
12
14
|
if (email.length > 0 && /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
|
|
13
15
|
setFormError(null);
|
|
@@ -32,19 +34,24 @@ function EmailField({ onSubmit }) {
|
|
|
32
34
|
});
|
|
33
35
|
}
|
|
34
36
|
});
|
|
37
|
+
const onCloseToaster = () => {
|
|
38
|
+
setShowNotification(false);
|
|
39
|
+
setIsSubmitted(false);
|
|
40
|
+
setFormError(null);
|
|
41
|
+
};
|
|
42
|
+
(0, react_1.useEffect)(() => {
|
|
43
|
+
if (isSubmitted || (formError === null || formError === void 0 ? void 0 : formError.type) === 'callback') {
|
|
44
|
+
setShowNotification(true);
|
|
45
|
+
}
|
|
46
|
+
}, [isSubmitted, formError === null || formError === void 0 ? void 0 : formError.type]);
|
|
35
47
|
return (react_1.default.createElement("div", { className: 'cio-share-results-feature-group' },
|
|
36
48
|
react_1.default.createElement("form", { onSubmit: handleSubmit },
|
|
37
49
|
react_1.default.createElement("div", { className: 'cio-share-results-description' }, "Share by email"),
|
|
38
50
|
react_1.default.createElement("div", { className: 'cio-share-results-button-group' },
|
|
39
51
|
react_1.default.createElement("div", { className: 'cio-share-results-email-input-group' },
|
|
40
|
-
react_1.default.createElement("input", { className: `cio-share-results-email-input ${formError ? 'cio-share-results-email-input--error' : ''}`, onChange: (e) => setEmail(e.target.value) }),
|
|
52
|
+
react_1.default.createElement("input", { className: `cio-share-results-email-input ${formError ? 'cio-share-results-email-input--error' : ''}`, onChange: (e) => setEmail(e.target.value), placeholder: 'Enter an email address to receive and share the results' }),
|
|
41
53
|
(formError === null || formError === void 0 ? void 0 : formError.type) === 'validate' && (react_1.default.createElement("div", { className: 'cio-share-results-email-input-error-message' }, formError.message))),
|
|
42
54
|
react_1.default.createElement("button", { className: 'cio-share-results-share-button', type: 'submit' }, "Send"))),
|
|
43
|
-
|
|
44
|
-
react_1.default.createElement(CheckMarkCircleSVG_1.default, null),
|
|
45
|
-
react_1.default.createElement("div", null, "Email sent"))),
|
|
46
|
-
(formError === null || formError === void 0 ? void 0 : formError.type) === 'callback' && (react_1.default.createElement("div", { className: 'cio-share-results-notification' },
|
|
47
|
-
react_1.default.createElement(AlertCircleSVG_1.default, null),
|
|
48
|
-
react_1.default.createElement("div", null, formError.message)))));
|
|
55
|
+
showNotification && (react_1.default.createElement(Toaster_1.default, { icon: isSubmitted ? CheckMarkCircleSVG_1.default : AlertCircleSVG_1.default, message: isSubmitted ? 'Email sent' : formError === null || formError === void 0 ? void 0 : formError.message, onCloseToaster: onCloseToaster }))));
|
|
49
56
|
}
|
|
50
57
|
exports.default = EmailField;
|
|
@@ -4,9 +4,21 @@ const tslib_1 = require("tslib");
|
|
|
4
4
|
const react_1 = tslib_1.__importStar(require("react"));
|
|
5
5
|
const CheckMarkCircleSVG_1 = tslib_1.__importDefault(require("./CheckMarkCircleSVG"));
|
|
6
6
|
const AlertCircleSVG_1 = tslib_1.__importDefault(require("./AlertCircleSVG"));
|
|
7
|
+
const Toaster_1 = tslib_1.__importDefault(require("./Toaster"));
|
|
7
8
|
function LinkField({ url }) {
|
|
8
9
|
const [isCopied, setIsCopied] = (0, react_1.useState)(false);
|
|
9
10
|
const [isError, setIsError] = (0, react_1.useState)(false);
|
|
11
|
+
const [showNotification, setShowNotification] = react_1.default.useState(false);
|
|
12
|
+
const onCloseToaster = () => {
|
|
13
|
+
setShowNotification(false);
|
|
14
|
+
setIsCopied(false);
|
|
15
|
+
setIsError(false);
|
|
16
|
+
};
|
|
17
|
+
(0, react_1.useEffect)(() => {
|
|
18
|
+
if (isCopied || isError) {
|
|
19
|
+
setShowNotification(true);
|
|
20
|
+
}
|
|
21
|
+
}, [isCopied, isError]);
|
|
10
22
|
return (react_1.default.createElement("div", { className: 'cio-share-results-feature-group' },
|
|
11
23
|
react_1.default.createElement("div", { className: 'cio-share-results-description' }, "Share by link"),
|
|
12
24
|
react_1.default.createElement("div", { className: 'cio-share-results-button-group' },
|
|
@@ -20,11 +32,8 @@ function LinkField({ url }) {
|
|
|
20
32
|
setIsError(true);
|
|
21
33
|
}
|
|
22
34
|
} }, "Copy link")),
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
isError && (react_1.default.createElement("div", { className: 'cio-share-results-notification' },
|
|
27
|
-
react_1.default.createElement(AlertCircleSVG_1.default, null),
|
|
28
|
-
react_1.default.createElement("div", null, "Sorry, there was an error copying. Please try again.")))));
|
|
35
|
+
showNotification && (react_1.default.createElement(Toaster_1.default, { icon: isCopied ? CheckMarkCircleSVG_1.default : AlertCircleSVG_1.default, message: isCopied
|
|
36
|
+
? 'Link copied to clipboard'
|
|
37
|
+
: 'Sorry, there was an error copying. Please try again.', onCloseToaster: onCloseToaster }))));
|
|
29
38
|
}
|
|
30
39
|
exports.default = LinkField;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const React = tslib_1.__importStar(require("react"));
|
|
5
|
+
const CloseSVG_1 = tslib_1.__importDefault(require("./CloseSVG"));
|
|
6
|
+
function Toaster(props) {
|
|
7
|
+
const { icon: Icon, message, onCloseToaster } = props;
|
|
8
|
+
return (React.createElement("div", { className: 'cio-share-results-notification' },
|
|
9
|
+
React.createElement(Icon, null),
|
|
10
|
+
React.createElement("div", null, message),
|
|
11
|
+
React.createElement(CloseSVG_1.default, { className: 'cio-toaster-close-button', onClick: () => onCloseToaster() })));
|
|
12
|
+
}
|
|
13
|
+
exports.default = Toaster;
|
package/lib/cjs/version.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
export default function CloseSVG() {
|
|
3
|
-
return (React.createElement("svg", { width: '24', height: '24', viewBox: '0 0 24 24', fill: 'none', xmlns: 'http://www.w3.org/2000/svg' },
|
|
2
|
+
export default function CloseSVG(props) {
|
|
3
|
+
return (React.createElement("svg", { ...props, role: 'button', "aria-label": 'Close', width: '24', height: '24', viewBox: '0 0 24 24', fill: 'none', xmlns: 'http://www.w3.org/2000/svg' },
|
|
4
4
|
React.createElement("path", { d: 'M18.4748 4.11089C18.8653 3.72036 19.4985 3.72036 19.889 4.11089C20.2795 4.50141 20.2795 5.13458 19.889 5.5251L5.52503 19.8891C5.13451 20.2796 4.50134 20.2796 4.11082 19.8891C3.72029 19.4985 3.72029 18.8654 4.11082 18.4748L18.4748 4.11089Z', fill: '#505A75' }),
|
|
5
5
|
React.createElement("path", { d: 'M4.11076 5.5251C3.72024 5.13458 3.72024 4.50141 4.11076 4.11089C4.50129 3.72036 5.13445 3.72036 5.52498 4.11089L19.8889 18.4748C20.2795 18.8654 20.2795 19.4985 19.8889 19.8891C19.4984 20.2796 18.8652 20.2796 18.4747 19.8891L4.11076 5.5251Z', fill: '#505A75' })));
|
|
6
6
|
}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import React, { useState } from 'react';
|
|
1
|
+
import React, { useEffect, useState } from 'react';
|
|
2
2
|
import CheckMarkCircleSVG from './CheckMarkCircleSVG';
|
|
3
3
|
import AlertCircleSVG from './AlertCircleSVG';
|
|
4
|
+
import Toaster from './Toaster';
|
|
4
5
|
export default function EmailField({ onSubmit }) {
|
|
5
6
|
const [formError, setFormError] = useState(null);
|
|
6
7
|
const [isSubmitted, setIsSubmitted] = useState(false);
|
|
7
8
|
const [email, setEmail] = useState('');
|
|
9
|
+
const [showNotification, setShowNotification] = React.useState(false);
|
|
8
10
|
const validate = () => {
|
|
9
11
|
if (email.length > 0 && /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
|
|
10
12
|
setFormError(null);
|
|
@@ -29,18 +31,23 @@ export default function EmailField({ onSubmit }) {
|
|
|
29
31
|
});
|
|
30
32
|
}
|
|
31
33
|
};
|
|
34
|
+
const onCloseToaster = () => {
|
|
35
|
+
setShowNotification(false);
|
|
36
|
+
setIsSubmitted(false);
|
|
37
|
+
setFormError(null);
|
|
38
|
+
};
|
|
39
|
+
useEffect(() => {
|
|
40
|
+
if (isSubmitted || formError?.type === 'callback') {
|
|
41
|
+
setShowNotification(true);
|
|
42
|
+
}
|
|
43
|
+
}, [isSubmitted, formError?.type]);
|
|
32
44
|
return (React.createElement("div", { className: 'cio-share-results-feature-group' },
|
|
33
45
|
React.createElement("form", { onSubmit: handleSubmit },
|
|
34
46
|
React.createElement("div", { className: 'cio-share-results-description' }, "Share by email"),
|
|
35
47
|
React.createElement("div", { className: 'cio-share-results-button-group' },
|
|
36
48
|
React.createElement("div", { className: 'cio-share-results-email-input-group' },
|
|
37
|
-
React.createElement("input", { className: `cio-share-results-email-input ${formError ? 'cio-share-results-email-input--error' : ''}`, onChange: (e) => setEmail(e.target.value) }),
|
|
49
|
+
React.createElement("input", { className: `cio-share-results-email-input ${formError ? 'cio-share-results-email-input--error' : ''}`, onChange: (e) => setEmail(e.target.value), placeholder: 'Enter an email address to receive and share the results' }),
|
|
38
50
|
formError?.type === 'validate' && (React.createElement("div", { className: 'cio-share-results-email-input-error-message' }, formError.message))),
|
|
39
51
|
React.createElement("button", { className: 'cio-share-results-share-button', type: 'submit' }, "Send"))),
|
|
40
|
-
|
|
41
|
-
React.createElement(CheckMarkCircleSVG, null),
|
|
42
|
-
React.createElement("div", null, "Email sent"))),
|
|
43
|
-
formError?.type === 'callback' && (React.createElement("div", { className: 'cio-share-results-notification' },
|
|
44
|
-
React.createElement(AlertCircleSVG, null),
|
|
45
|
-
React.createElement("div", null, formError.message)))));
|
|
52
|
+
showNotification && (React.createElement(Toaster, { icon: isSubmitted ? CheckMarkCircleSVG : AlertCircleSVG, message: isSubmitted ? 'Email sent' : formError?.message, onCloseToaster: onCloseToaster }))));
|
|
46
53
|
}
|
|
@@ -1,9 +1,21 @@
|
|
|
1
|
-
import React, { useState } from 'react';
|
|
1
|
+
import React, { useEffect, useState } from 'react';
|
|
2
2
|
import CheckMarkCircleSVG from './CheckMarkCircleSVG';
|
|
3
3
|
import AlertCircleSVG from './AlertCircleSVG';
|
|
4
|
+
import Toaster from './Toaster';
|
|
4
5
|
export default function LinkField({ url }) {
|
|
5
6
|
const [isCopied, setIsCopied] = useState(false);
|
|
6
7
|
const [isError, setIsError] = useState(false);
|
|
8
|
+
const [showNotification, setShowNotification] = React.useState(false);
|
|
9
|
+
const onCloseToaster = () => {
|
|
10
|
+
setShowNotification(false);
|
|
11
|
+
setIsCopied(false);
|
|
12
|
+
setIsError(false);
|
|
13
|
+
};
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
if (isCopied || isError) {
|
|
16
|
+
setShowNotification(true);
|
|
17
|
+
}
|
|
18
|
+
}, [isCopied, isError]);
|
|
7
19
|
return (React.createElement("div", { className: 'cio-share-results-feature-group' },
|
|
8
20
|
React.createElement("div", { className: 'cio-share-results-description' }, "Share by link"),
|
|
9
21
|
React.createElement("div", { className: 'cio-share-results-button-group' },
|
|
@@ -17,10 +29,7 @@ export default function LinkField({ url }) {
|
|
|
17
29
|
setIsError(true);
|
|
18
30
|
}
|
|
19
31
|
} }, "Copy link")),
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
isError && (React.createElement("div", { className: 'cio-share-results-notification' },
|
|
24
|
-
React.createElement(AlertCircleSVG, null),
|
|
25
|
-
React.createElement("div", null, "Sorry, there was an error copying. Please try again.")))));
|
|
32
|
+
showNotification && (React.createElement(Toaster, { icon: isCopied ? CheckMarkCircleSVG : AlertCircleSVG, message: isCopied
|
|
33
|
+
? 'Link copied to clipboard'
|
|
34
|
+
: 'Sorry, there was an error copying. Please try again.', onCloseToaster: onCloseToaster }))));
|
|
26
35
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import CloseSVG from './CloseSVG';
|
|
3
|
+
export default function Toaster(props) {
|
|
4
|
+
const { icon: Icon, message, onCloseToaster } = props;
|
|
5
|
+
return (React.createElement("div", { className: 'cio-share-results-notification' },
|
|
6
|
+
React.createElement(Icon, null),
|
|
7
|
+
React.createElement("div", null, message),
|
|
8
|
+
React.createElement(CloseSVG, { className: 'cio-toaster-close-button', onClick: () => onCloseToaster() })));
|
|
9
|
+
}
|
package/lib/mjs/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export default '1.17.
|
|
1
|
+
export default '1.17.7';
|
package/lib/styles.css
CHANGED
|
@@ -1026,6 +1026,12 @@
|
|
|
1026
1026
|
gap: 12px;
|
|
1027
1027
|
}
|
|
1028
1028
|
|
|
1029
|
+
.cio-quiz .cio-share-results-notification .cio-toaster-close-button{
|
|
1030
|
+
margin-left: auto;
|
|
1031
|
+
cursor: pointer;
|
|
1032
|
+
width: 16px;
|
|
1033
|
+
}
|
|
1034
|
+
|
|
1029
1035
|
.cio-quiz .cio-share-results-link-input {
|
|
1030
1036
|
font-size: 1rem;
|
|
1031
1037
|
padding: 12px 20px;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
export default function CloseSVG(): JSX.Element;
|
|
2
|
+
export default function CloseSVG(props: any): JSX.Element;
|
package/lib/types/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const _default: "1.17.
|
|
1
|
+
declare const _default: "1.17.7";
|
|
2
2
|
export default _default;
|