-
+
+
{
@@ -55,6 +57,7 @@ const QuestionSet = ({ templates, questionset, sets, values, disabled, isManager
createSet={createSet}
updateSet={updateSet}
deleteSet={deleteSet}
+ copySet={copySet}
createValue={createValue}
updateValue={updateValue}
deleteValue={deleteValue}
@@ -112,6 +115,7 @@ QuestionSet.propTypes = {
createSet: PropTypes.func.isRequired,
updateSet: PropTypes.func.isRequired,
deleteSet: PropTypes.func.isRequired,
+ copySet: PropTypes.func.isRequired,
createValue: PropTypes.func.isRequired,
updateValue: PropTypes.func.isRequired,
deleteValue: PropTypes.func.isRequired,
diff --git a/rdmo/projects/assets/js/interview/components/main/questionset/QuestionSetCopyModal.js b/rdmo/projects/assets/js/interview/components/main/questionset/QuestionSetCopyModal.js
new file mode 100644
index 000000000..151059eb6
--- /dev/null
+++ b/rdmo/projects/assets/js/interview/components/main/questionset/QuestionSetCopyModal.js
@@ -0,0 +1,21 @@
+import React from 'react'
+import PropTypes from 'prop-types'
+
+import Modal from 'rdmo/core/assets/js/components/Modal'
+
+const QuestionSetCopyModal = ({ title, show, onClose, onSubmit }) => {
+ return (
+
+
+ )
+}
+
+QuestionSetCopyModal.propTypes = {
+ title: PropTypes.string.isRequired,
+ show: PropTypes.bool.isRequired,
+ onClose: PropTypes.func.isRequired,
+ onSubmit: PropTypes.func.isRequired,
+}
+
+export default QuestionSetCopyModal
diff --git a/rdmo/projects/assets/js/interview/components/main/questionset/QuestionSetCopySet.js b/rdmo/projects/assets/js/interview/components/main/questionset/QuestionSetCopySet.js
new file mode 100644
index 000000000..f472b099c
--- /dev/null
+++ b/rdmo/projects/assets/js/interview/components/main/questionset/QuestionSetCopySet.js
@@ -0,0 +1,44 @@
+import React from 'react'
+import PropTypes from 'prop-types'
+import { capitalize, last } from 'lodash'
+
+import useModal from 'rdmo/core/assets/js/hooks/useModal'
+
+import QuestionSetCopyModal from './QuestionSetCopyModal'
+
+const QuestionCopySet = ({ questionset, sets, currentSet, copySet }) => {
+
+ const [showCopyModal, openCopyModal, closeCopyModal] = useModal()
+
+ const handleCopySet = () => {
+ copySet(currentSet, null, {
+ set_prefix: currentSet.set_prefix,
+ set_index: last(sets) ? last(sets).set_index + 1 : 0,
+ })
+ closeCopyModal()
+ }
+
+ return questionset.is_collection && (
+ <>
+
+
+
+ >
+ )
+}
+
+QuestionCopySet.propTypes = {
+ questionset: PropTypes.object.isRequired,
+ sets: PropTypes.array.isRequired,
+ currentSet: PropTypes.object.isRequired,
+ copySet: PropTypes.func.isRequired
+}
+
+export default QuestionCopySet
diff --git a/rdmo/projects/assets/js/interview/components/main/questionset/QuestionSetRemoveSet.js b/rdmo/projects/assets/js/interview/components/main/questionset/QuestionSetRemoveSet.js
index a7364a890..06a0dcae6 100644
--- a/rdmo/projects/assets/js/interview/components/main/questionset/QuestionSetRemoveSet.js
+++ b/rdmo/projects/assets/js/interview/components/main/questionset/QuestionSetRemoveSet.js
@@ -6,12 +6,12 @@ import useModal from 'rdmo/core/assets/js/hooks/useModal'
import QuestionSetDeleteModal from './QuestionSetDeleteModal'
-const QuestionAddSet = ({ questionset, set, deleteSet }) => {
+const QuestionRemoveSet = ({ questionset, currentSet, deleteSet }) => {
const {show: showDeleteModal, open: openDeleteModal, close: closeDeleteModal} = useModal()
const handleDeleteSet = () => {
- deleteSet(set)
+ deleteSet(currentSet)
closeDeleteModal()
}
@@ -31,10 +31,10 @@ const QuestionAddSet = ({ questionset, set, deleteSet }) => {
)
}
-QuestionAddSet.propTypes = {
+QuestionRemoveSet.propTypes = {
questionset: PropTypes.object.isRequired,
- set: PropTypes.object.isRequired,
+ currentSet: PropTypes.object.isRequired,
deleteSet: PropTypes.func.isRequired
}
-export default QuestionAddSet
+export default QuestionRemoveSet
diff --git a/rdmo/projects/assets/scss/interview.scss b/rdmo/projects/assets/scss/interview.scss
index 20eb128e6..b26bd1037 100644
--- a/rdmo/projects/assets/scss/interview.scss
+++ b/rdmo/projects/assets/scss/interview.scss
@@ -100,22 +100,20 @@
.interview-block-options {
position: absolute;
- top: 0;
- right: 0;
+ top: 6px;
+ right: 8px;
z-index: 5;
+ display: flex;
+ gap: 4px;
+
+ .btn-copy-set,
.btn-remove-set {
opacity: 0.8;
line-height: 20px;
font-size: 14px;
- position: absolute;
- z-index: 5;
- top: 0;
- right: 0;
-
- padding-left: 8px;
- padding-right: 8px;
+ padding: 0;
&:hover {
opacity: 1;