diff --git a/frontend/src/components/regex/RegexCard.jsx b/frontend/src/components/regex/RegexCard.jsx index cae86b7..0406aff 100644 --- a/frontend/src/components/regex/RegexCard.jsx +++ b/frontend/src/components/regex/RegexCard.jsx @@ -1,15 +1,31 @@ import PropTypes from 'prop-types'; -function RegexCard({ regex, onEdit, showDate, formatDate }) { +function RegexCard({ regex, onEdit, onClone, showDate, formatDate }) { return (
onEdit(regex)} > -

- {regex.name} -

-
+
+

+ {regex.name} +

+ +
+
           {regex.pattern}
         
@@ -43,6 +59,7 @@ RegexCard.propTypes = { tags: PropTypes.arrayOf(PropTypes.string), }).isRequired, onEdit: PropTypes.func.isRequired, + onClone: PropTypes.func.isRequired, // Added clone handler prop showDate: PropTypes.bool.isRequired, formatDate: PropTypes.func.isRequired, }; diff --git a/frontend/src/components/regex/RegexManager.jsx b/frontend/src/components/regex/RegexManager.jsx index ab8d337..405eac6 100644 --- a/frontend/src/components/regex/RegexManager.jsx +++ b/frontend/src/components/regex/RegexManager.jsx @@ -45,6 +45,11 @@ function RegexManager() { handleCloseModal(); }; + const handleCloneRegex = (regex) => { + const clonedRegex = { ...regex, id: 0, name: `${regex.name} [COPY]` }; + handleOpenModal(clonedRegex); + }; + const formatDate = (dateString) => { return new Date(dateString).toLocaleString(); }; @@ -68,41 +73,41 @@ function RegexManager() { return 0; }); - return ( -
-

Manage Regex Patterns

-
- - -
-
- {sortedAndFilteredRegexes.map((regex) => ( - handleOpenModal(regex)} - showDate={sortBy !== 'title'} - formatDate={formatDate} - /> - ))} - handleOpenModal()} /> -
- +

Manage Regex Patterns

+
+ +
- ); - } - +
+ {sortedAndFilteredRegexes.map((regex) => ( + handleOpenModal(regex)} + onClone={handleCloneRegex} // Pass the clone handler + showDate={sortBy !== 'title'} + formatDate={formatDate} + /> + ))} + handleOpenModal()} /> +
+ +
+ ); +} -export default RegexManager; \ No newline at end of file +export default RegexManager;