Implement Phase 7: Contact Form 7 Integration (v0.7.0)
All checks were successful
Create Release Package / build-release (push) Successful in 1m1s
All checks were successful
Create Release Package / build-release (push) Successful in 1m1s
Add custom CF7 form tags for booking requests: - [bnb_building_select] - Building filter dropdown - [bnb_room_select] - Room selection with capacity data - [bnb_date_checkin/checkout] - Date pickers with validation - [bnb_guests] - Guest count with capacity limits Features: - Server-side validation for all fields - Real-time AJAX availability checking - Automatic price calculation display - Booking creation on form submission - Guest record creation/linking - Custom mail tags for CF7 templates Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
344
assets/css/cf7-integration.css
Normal file
344
assets/css/cf7-integration.css
Normal file
@@ -0,0 +1,344 @@
|
||||
/**
|
||||
* WP BnB Contact Form 7 Integration Styles
|
||||
*
|
||||
* Styling for CF7 booking forms.
|
||||
*
|
||||
* @package Magdev\WpBnb
|
||||
*/
|
||||
|
||||
/* Custom Properties */
|
||||
:root {
|
||||
--wp-bnb-cf7-primary: #2271b1;
|
||||
--wp-bnb-cf7-success: #00a32a;
|
||||
--wp-bnb-cf7-warning: #dba617;
|
||||
--wp-bnb-cf7-error: #d63638;
|
||||
--wp-bnb-cf7-text: #1d2327;
|
||||
--wp-bnb-cf7-text-light: #646970;
|
||||
--wp-bnb-cf7-border: #c3c4c7;
|
||||
--wp-bnb-cf7-bg: #f0f0f1;
|
||||
--wp-bnb-cf7-radius: 4px;
|
||||
--wp-bnb-cf7-spacing: 1rem;
|
||||
}
|
||||
|
||||
/* Form Layout */
|
||||
.wp-bnb-booking-form,
|
||||
.wp-bnb-inquiry-form {
|
||||
max-width: 700px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.wp-bnb-booking-form h3,
|
||||
.wp-bnb-booking-form h4,
|
||||
.wp-bnb-inquiry-form h3,
|
||||
.wp-bnb-inquiry-form h4 {
|
||||
margin-top: 1.5em;
|
||||
margin-bottom: 0.75em;
|
||||
padding-bottom: 0.5em;
|
||||
border-bottom: 1px solid var(--wp-bnb-cf7-border);
|
||||
}
|
||||
|
||||
.wp-bnb-booking-form h3:first-child,
|
||||
.wp-bnb-inquiry-form h3:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
/* Form Rows */
|
||||
.wp-bnb-form-row {
|
||||
margin-bottom: var(--wp-bnb-cf7-spacing);
|
||||
}
|
||||
|
||||
.wp-bnb-form-row-2col {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
gap: var(--wp-bnb-cf7-spacing);
|
||||
}
|
||||
|
||||
@media (max-width: 480px) {
|
||||
.wp-bnb-form-row-2col {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
|
||||
/* Form Fields */
|
||||
.wp-bnb-form-field {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.wp-bnb-form-field label {
|
||||
display: block;
|
||||
margin-bottom: 0.25rem;
|
||||
font-weight: 600;
|
||||
font-size: 0.875rem;
|
||||
color: var(--wp-bnb-cf7-text);
|
||||
}
|
||||
|
||||
/* Custom CF7 Tags Styling */
|
||||
.wp-bnb-building-select,
|
||||
.wp-bnb-room-select,
|
||||
.wp-bnb-date-checkin,
|
||||
.wp-bnb-date-checkout,
|
||||
.wp-bnb-guests {
|
||||
width: 100%;
|
||||
padding: 0.5rem 0.75rem;
|
||||
font-size: 1rem;
|
||||
line-height: 1.5;
|
||||
border: 1px solid var(--wp-bnb-cf7-border);
|
||||
border-radius: var(--wp-bnb-cf7-radius);
|
||||
background-color: #fff;
|
||||
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
|
||||
}
|
||||
|
||||
.wp-bnb-building-select:focus,
|
||||
.wp-bnb-room-select:focus,
|
||||
.wp-bnb-date-checkin:focus,
|
||||
.wp-bnb-date-checkout:focus,
|
||||
.wp-bnb-guests:focus {
|
||||
outline: none;
|
||||
border-color: var(--wp-bnb-cf7-primary);
|
||||
box-shadow: 0 0 0 2px rgba(34, 113, 177, 0.25);
|
||||
}
|
||||
|
||||
/* Select dropdown */
|
||||
.wp-bnb-room-select optgroup {
|
||||
font-weight: 600;
|
||||
font-style: normal;
|
||||
color: var(--wp-bnb-cf7-text);
|
||||
}
|
||||
|
||||
/* Date inputs */
|
||||
.wp-bnb-date-checkin,
|
||||
.wp-bnb-date-checkout {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/* Number input */
|
||||
.wp-bnb-guests {
|
||||
max-width: 120px;
|
||||
}
|
||||
|
||||
/* Availability Status */
|
||||
.wp-bnb-availability-status {
|
||||
padding: var(--wp-bnb-cf7-spacing);
|
||||
margin: var(--wp-bnb-cf7-spacing) 0;
|
||||
background-color: var(--wp-bnb-cf7-bg);
|
||||
border-radius: var(--wp-bnb-cf7-radius);
|
||||
text-align: center;
|
||||
min-height: 50px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.wp-bnb-availability-status:empty {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.wp-bnb-checking {
|
||||
color: var(--wp-bnb-cf7-text-light);
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.wp-bnb-checking::before {
|
||||
content: "";
|
||||
display: inline-block;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin-right: 8px;
|
||||
border: 2px solid var(--wp-bnb-cf7-border);
|
||||
border-top-color: var(--wp-bnb-cf7-primary);
|
||||
border-radius: 50%;
|
||||
animation: wp-bnb-spin 0.8s linear infinite;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
@keyframes wp-bnb-spin {
|
||||
to {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
.wp-bnb-available {
|
||||
color: var(--wp-bnb-cf7-success);
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.wp-bnb-available::before {
|
||||
content: "\2713";
|
||||
display: inline-block;
|
||||
margin-right: 8px;
|
||||
font-size: 1.25em;
|
||||
}
|
||||
|
||||
.wp-bnb-unavailable {
|
||||
color: var(--wp-bnb-cf7-error);
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.wp-bnb-unavailable::before {
|
||||
content: "\2717";
|
||||
display: inline-block;
|
||||
margin-right: 8px;
|
||||
font-size: 1.25em;
|
||||
}
|
||||
|
||||
/* Price Display */
|
||||
.wp-bnb-price-display {
|
||||
padding: var(--wp-bnb-cf7-spacing);
|
||||
margin: var(--wp-bnb-cf7-spacing) 0;
|
||||
background-color: #e7f5ea;
|
||||
border: 1px solid var(--wp-bnb-cf7-success);
|
||||
border-radius: var(--wp-bnb-cf7-radius);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.wp-bnb-price-display:empty {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.wp-bnb-price-label {
|
||||
color: var(--wp-bnb-cf7-text-light);
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
|
||||
.wp-bnb-price-amount {
|
||||
font-size: 1.5rem;
|
||||
font-weight: 700;
|
||||
color: var(--wp-bnb-cf7-success);
|
||||
margin: 0 0.5rem;
|
||||
}
|
||||
|
||||
.wp-bnb-nights {
|
||||
color: var(--wp-bnb-cf7-text-light);
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
|
||||
/* Capacity Warning */
|
||||
.wp-bnb-capacity-warning {
|
||||
display: block;
|
||||
margin-top: 0.25rem;
|
||||
padding: 0.25rem 0.5rem;
|
||||
font-size: 0.8125rem;
|
||||
color: var(--wp-bnb-cf7-error);
|
||||
background-color: #fcf0f1;
|
||||
border-radius: var(--wp-bnb-cf7-radius);
|
||||
}
|
||||
|
||||
/* Validation Errors */
|
||||
.wpcf7-form-control-wrap .wpcf7-not-valid-tip {
|
||||
color: var(--wp-bnb-cf7-error);
|
||||
font-size: 0.8125rem;
|
||||
margin-top: 0.25rem;
|
||||
}
|
||||
|
||||
.wpcf7-form-control.wpcf7-not-valid {
|
||||
border-color: var(--wp-bnb-cf7-error);
|
||||
}
|
||||
|
||||
/* Response Messages */
|
||||
.wpcf7 form.sent .wpcf7-response-output {
|
||||
border-color: var(--wp-bnb-cf7-success);
|
||||
background-color: #e7f5ea;
|
||||
color: var(--wp-bnb-cf7-success);
|
||||
}
|
||||
|
||||
.wpcf7 form.failed .wpcf7-response-output,
|
||||
.wpcf7 form.aborted .wpcf7-response-output,
|
||||
.wpcf7 form.spam .wpcf7-response-output,
|
||||
.wpcf7 form.invalid .wpcf7-response-output {
|
||||
border-color: var(--wp-bnb-cf7-error);
|
||||
background-color: #fcf0f1;
|
||||
color: var(--wp-bnb-cf7-error);
|
||||
}
|
||||
|
||||
/* Submit Button */
|
||||
.wp-bnb-booking-form .wpcf7-submit,
|
||||
.wp-bnb-inquiry-form .wpcf7-submit {
|
||||
display: inline-block;
|
||||
padding: 0.75rem 1.5rem;
|
||||
font-size: 1rem;
|
||||
font-weight: 600;
|
||||
color: #fff;
|
||||
background-color: var(--wp-bnb-cf7-primary);
|
||||
border: none;
|
||||
border-radius: var(--wp-bnb-cf7-radius);
|
||||
cursor: pointer;
|
||||
transition: background-color 0.15s ease-in-out;
|
||||
}
|
||||
|
||||
.wp-bnb-booking-form .wpcf7-submit:hover,
|
||||
.wp-bnb-inquiry-form .wpcf7-submit:hover {
|
||||
background-color: #135e96;
|
||||
}
|
||||
|
||||
.wp-bnb-booking-form .wpcf7-submit:disabled,
|
||||
.wp-bnb-inquiry-form .wpcf7-submit:disabled {
|
||||
opacity: 0.7;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
/* Spinner */
|
||||
.wpcf7 .wpcf7-spinner {
|
||||
margin-left: 0.5rem;
|
||||
}
|
||||
|
||||
/* Hidden Room Field (for inquiry forms) */
|
||||
.wp-bnb-inquiry-form input[type="hidden"] + .wpcf7-form-control-wrap {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Form Section Headers */
|
||||
.wp-bnb-booking-form hr,
|
||||
.wp-bnb-inquiry-form hr {
|
||||
margin: 1.5rem 0;
|
||||
border: none;
|
||||
border-top: 1px solid var(--wp-bnb-cf7-border);
|
||||
}
|
||||
|
||||
/* Dark Mode Support */
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
--wp-bnb-cf7-text: #f0f0f1;
|
||||
--wp-bnb-cf7-text-light: #a7aaad;
|
||||
--wp-bnb-cf7-border: #50575e;
|
||||
--wp-bnb-cf7-bg: #2c3338;
|
||||
}
|
||||
|
||||
.wp-bnb-building-select,
|
||||
.wp-bnb-room-select,
|
||||
.wp-bnb-date-checkin,
|
||||
.wp-bnb-date-checkout,
|
||||
.wp-bnb-guests {
|
||||
background-color: #3c434a;
|
||||
color: var(--wp-bnb-cf7-text);
|
||||
}
|
||||
|
||||
.wp-bnb-price-display {
|
||||
background-color: #1a3320;
|
||||
border-color: var(--wp-bnb-cf7-success);
|
||||
}
|
||||
|
||||
.wp-bnb-capacity-warning {
|
||||
background-color: #3c1618;
|
||||
}
|
||||
|
||||
.wpcf7 form.sent .wpcf7-response-output {
|
||||
background-color: #1a3320;
|
||||
}
|
||||
|
||||
.wpcf7 form.failed .wpcf7-response-output,
|
||||
.wpcf7 form.aborted .wpcf7-response-output,
|
||||
.wpcf7 form.spam .wpcf7-response-output,
|
||||
.wpcf7 form.invalid .wpcf7-response-output {
|
||||
background-color: #3c1618;
|
||||
}
|
||||
}
|
||||
|
||||
/* Print Styles */
|
||||
@media print {
|
||||
.wp-bnb-availability-status,
|
||||
.wp-bnb-price-display,
|
||||
.wpcf7-submit {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user