diff --git a/assets/src/js/formgent-integration/components/style.js b/assets/src/js/formgent-integration/components/style.js
index cbcc18c0ef..a028f1bf45 100644
--- a/assets/src/js/formgent-integration/components/style.js
+++ b/assets/src/js/formgent-integration/components/style.js
@@ -220,7 +220,9 @@ const EnquiryDetailsModalStyle = styled.div`
}
}
.directorist-enquiry-listing {
- margin-bottom: 24px;
+ margin-bottom: 16px;
+ border-bottom: 1px solid var(--directorist-color-border);
+ padding-bottom: 16px;
h3 {
margin: 0 0 4px 0;
font-size: 16px;
@@ -268,40 +270,32 @@ const EnquiryDetailsModalStyle = styled.div`
font-size: 14px;
font-weight: 400;
}
- .directorist-enquiry-answer-repeater {
- table {
- width: 100%;
- border-collapse: separate;
- border-spacing: 0;
- border-radius: 8px;
- overflow: hidden;
- border: 1px solid #eee;
- }
-
- thead {
- background: linear-gradient(to bottom, #f9f9f9, #f1f3f5);
- }
-
- th {
- text-align: left;
- padding: 12px 16px;
- font-weight: 600;
- font-size: 14px;
- color: #333;
- }
-
- td {
- padding: 12px 16px;
- font-size: 14px;
- color: #000;
- border-top: 1px solid #eee;
- }
-
- /* Hover effect */
- tr:hover td {
- background-color: #fafafa;
+ .directorist-repeater-table-wrapper {
+ max-width: 600px;
+ @media (max-width: 768px) {
+ max-width: 500px;
}
}
+ .formgent-editor-rating {
+ display: flex;
+ align-items: center;
+ gap: 12px;
+ margin: 5px 0;
+ }
+ .formgent-editor-rating__icons {
+ display: flex;
+ align-items: center;
+ gap: 5px;
+ }
+ .formgent-editor-rating__icons
+ .formgent-editor-rating__icon--active
+ svg
+ path {
+ fill: var(--directorist-color-primary);
+ }
+ .formgent-google-map-external-link {
+ color: var(--directorist-color-info);
+ }
//stick footer to bottom
.directorist-enquiry-modal-footer {
border-top: 1px solid #e5e7eb;
@@ -353,6 +347,131 @@ const EnquiryDetailsModalStyle = styled.div`
color: var(--directorist-color-info);
}
}
+ .directorist-answers-section {
+ display: flex;
+ gap: 24px;
+ flex-direction: column;
+ align-items: flex-start;
+ }
+
+ .formgent-response-badge {
+ background-color: var(--directorist-color-light);
+ padding: 0 8px;
+ color: var(--directorist-color-dark);
+ font-size: 14px;
+ line-height: 1.6;
+ font-weight: 400;
+ border-radius: 4px;
+ }
+
+ .formgent-response-table__drawer__tab__item {
+ display: flex;
+ gap: 12px;
+ width: 100%;
+ &.formgent-response-table__drawer__tab__item--tag {
+ .formgent-response-table__drawer__tab__item__title {
+ height: 40px;
+ }
+ }
+ .formgent-response-table__drawer__tab__item__icon {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ height: 40px;
+ width: 40px;
+ min-width: 40px;
+ border-radius: 10px;
+ color: var(--directorist-color-dark);
+ background-color: var(--directorist-color-light);
+ }
+ .formgent-response-table__drawer__tab__item__content {
+ display: flex;
+ gap: 6px;
+ flex-direction: column;
+ flex: 1;
+ }
+ .formgent-response-table__drawer__tab__item__title {
+ display: block;
+ font-size: 15px;
+ font-weight: 600;
+ color: var(--formgent-color-dark);
+ margin: 0;
+ &:first-letter {
+ text-transform: uppercase;
+ }
+ }
+ .formgent-response-table__drawer__tab__item__desc {
+ display: flex;
+ gap: 5px;
+ flex-wrap: wrap;
+ font-size: 14px;
+ font-weight: 400;
+ color: var(--directorist-color-light-gray);
+ margin: 0;
+ img {
+ max-width: 200px;
+ }
+ .formgent-signature-image-preview,
+ .formgent-file-upload-preview {
+ width: 100%;
+ max-width: 350px;
+ }
+ .formgent-file-upload-answer {
+ padding: 8px 0;
+ &:last-child {
+ border-bottom: 0 none;
+ padding-bottom: 0;
+ }
+ }
+ }
+ .formgent-response-table__drawer__tab__item__desc__key {
+ font-size: 14px;
+ font-weight: 500;
+ display: inline-flex;
+ padding-right: 4px;
+ &::first-letter {
+ text-transform: uppercase;
+ }
+ }
+ .formgent-response-table__drawer__tab__item__desc__value {
+ font-size: 14px;
+ color: var(--directorist-color-light-gray);
+ }
+ .formgent-response-table__drawer__tab__item__add {
+ display: flex;
+ align-items: center;
+ background: transparent;
+ border: none;
+ margin: 0;
+ padding: 0;
+ cursor: pointer;
+ &:hover {
+ color: var(--directorist-color-primary);
+ }
+ }
+ .formgent-response-table__drawer__tab__item__btns {
+ display: flex;
+ gap: 8px;
+ flex-wrap: wrap;
+ .formgent-response-table__drawer__tab__item__btn {
+ font-size: 14px;
+ font-weight: 500;
+ padding: 0 8px;
+ margin: 0;
+ height: 28px;
+ color: var(--directorist-color-gray);
+ background: var(--formgent-color-border);
+ border: none;
+ border-radius: 8px;
+ cursor: pointer;
+ transition: all ease 0.3s;
+ &:hover {
+ color: var(--formgent-color-white);
+ background: var(--formgent-color-light-gray);
+ }
+ }
+ }
+ }
`;
export { EnquiriesComponentStyle, EnquiryDetailsModalStyle };
diff --git a/assets/src/js/formgent-integration/index.scss b/assets/src/js/formgent-integration/index.scss
index ee0ecb7d55..618dc6ffda 100644
--- a/assets/src/js/formgent-integration/index.scss
+++ b/assets/src/js/formgent-integration/index.scss
@@ -1,38 +1,22 @@
@import "~@wordpress/dataviews/build-style/style.css";
-// Modal Styles
-.directorist-answers-modal {
- .directorist-modal-content {
- max-height: 70vh;
- overflow-y: auto;
- padding: 20px;
- }
-
- .directorist-enquiry-info {
- margin-bottom: 30px;
- padding-bottom: 20px;
- border-bottom: 1px solid #e0e0e0;
-
- h3 {
- margin: 0 0 15px 0;
- color: #333;
- }
-
- p {
- margin: 8px 0;
- color: #666;
- }
- }
-
- .directorist-answers-section {
- h3 {
- margin: 0 0 20px 0;
- color: #333;
- }
- }
-}
-
.directorist-enquiry-modal {
+ --formgent-color-primary: #5e53f9;
+ --formgent-color-primary-hover: #563dee;
+ --formgent-color-primary-2: #2188ff;
+ --formgent-color-primary-50: #edefff;
+ --formgent-color-primary-100: #dee3ff;
+ --formgent-color-primary-200: #c4cbff;
+ --formgent-color-gray-100: #f3f4f6;
+ --formgent-color-gray-200: #e5e7eb;
+ --formgent-color-gray-300: #d2d6db;
+ --formgent-color-gray-400: #a1a9b2;
+ --formgent-color-gray-500: #747c89;
+ --formgent-color-gray-600: #4d5761;
+ --formgent-color-gray-700: #383f47;
+ --formgent-color-gray-800: #2c3239;
+ --formgent-color-gray-900: #141921;
+
.components-modal__header {
border-bottom: 1px solid #e0e0e0;
}
diff --git a/assets/src/js/formgent-integration/utils/renderAnswerValue.js b/assets/src/js/formgent-integration/utils/renderAnswerValue.js
deleted file mode 100644
index 56910c1028..0000000000
--- a/assets/src/js/formgent-integration/utils/renderAnswerValue.js
+++ /dev/null
@@ -1,176 +0,0 @@
-/**
- * Utility function to render different types of form answer values
- * @param {Object} answer - The answer object containing field_type, value, and other properties
- * @returns {JSX.Element} - The rendered answer value component
- */
-export const renderAnswerValue = (answer) => {
- const {
- field_type,
- value,
- options,
- option_label,
- rating_limit,
- rating_icon,
- children,
- } = answer;
-
- switch (field_type) {
- case 'name':
- case 'address':
- return (
-
- {children?.map((child) => (
-
-
- {child.label || 'Unknown Field'}:
-
-
- {child.value}
-
-
- ))}
-
- );
-
- case 'email':
- return
{value};
-
- case 'website':
- return (
-
- {value}
-
- );
-
- case 'file-upload':
- if (Array.isArray(value)) {
- return (
-
- );
- }
- return (
-
- {value}
-
- );
-
- case 'rating':
- const rating = parseInt(value);
- return (
-
-
- {rating} out of {rating_limit || 5}
-
-
- );
-
- case 'dropdown':
- case 'single-choice':
- return
{option_label || value};
-
- case 'multiple-choice':
- if (options && Array.isArray(options)) {
- const selectedValues = JSON.parse(value || '[]');
- const selectedOptions = options.filter((opt) =>
- selectedValues.includes(opt.value)
- );
- return (
-
- {selectedOptions.map((option, index) => (
-
- {option.label}
-
- ))}
-
- );
- }
- return
{value};
-
- case 'google-map':
- try {
- const mapData = JSON.parse(value);
- return (
-
-
- Address: {mapData.address}
-
-
- Coordinates: {mapData.map.lat},{' '}
- {mapData.map.lng}
-
-
- );
- } catch (e) {
- return
{value};
- }
-
- case 'repeater':
- try {
- // Check if value is already an array or needs to be parsed
- const repeaterData = Array.isArray(value)
- ? value
- : JSON.parse(value);
- return (
-
-
-
-
- {Object.entries(repeaterData[0]).map(
- ([key, val]) => (
- |
- {val.label || key}
- |
- )
- )}
-
-
-
- {repeaterData.map((item, index) => (
-
- {Object.entries(item).map(
- ([key, val]) => (
- | {val.value} |
- )
- )}
-
- ))}
-
-
-
- );
- } catch (e) {
- return
Error rendering repeater data;
- }
-
- case 'digital-signature':
- return (
-
-

-
- );
-
- default:
- return
{value};
- }
-};
diff --git a/assets/src/scss/component/listing-details/_details-content.scss b/assets/src/scss/component/listing-details/_details-content.scss
index e69de29bb2..2831cd1a33 100644
--- a/assets/src/scss/component/listing-details/_details-content.scss
+++ b/assets/src/scss/component/listing-details/_details-content.scss
@@ -0,0 +1,14 @@
+// Formgent Integration Styles
+.directorist-single-wrapper {
+ .formgent-form-general {
+ .formgent-field-list--frontend {
+ padding: 0;
+ }
+ }
+ .formgent-file-upload-progress-text {
+ min-width: 40px;
+ }
+ .formgent-file-preview-action .formgent-file-delete {
+ line-height: 1;
+ }
+}
diff --git a/includes/model/ListingDashboard.php b/includes/model/ListingDashboard.php
index 9f0bf2da79..594b2679ff 100644
--- a/includes/model/ListingDashboard.php
+++ b/includes/model/ListingDashboard.php
@@ -517,6 +517,8 @@ public function render_shortcode( $atts ) {
return $this->restrict_access_template();
}
+ do_action( 'directorist_before_load_dashboard', $atts, $this );
+
return Helper::get_template_contents( 'dashboard-contents', [ 'dashboard' => $this ] );
}
diff --git a/package.json b/package.json
index c34c419854..3907e24f98 100644
--- a/package.json
+++ b/package.json
@@ -41,6 +41,7 @@
"lodash": "^4.17.20",
"prettier": "^3.5.3",
"react-hot-toast": "^2.6.0",
+ "react-inlinesvg": "^4.2.0",
"styled-components": "^6.1.19",
"vue": "^2.6.11",
"vue-dndrop": "^1.3.0",