upskill-event-manager/assets/css/hvac-event-form-templates.css
ben 3be155c507 feat: Complete Phase 2A Event Templates & Bulk Operations System
🚀 PHASE 2A COMPLETE: Event Templates & Bulk Operations Infrastructure

📋 CORE IMPLEMENTATIONS:
• HVAC_Event_Template_Manager - Complete CRUD operations with caching
• HVAC_Event_Form_Builder - Extended form builder with template integration
• HVAC_Bulk_Event_Manager - Bulk operations with background processing
• Client-side template management with progress tracking
• Comprehensive UI components with responsive design

🏗️ ARCHITECTURE HIGHLIGHTS:
• Modern PHP 8+ patterns with strict typing
• WordPress transient caching (15-minute TTL)
• Security-first design with nonce validation
• Performance optimization with lazy loading
• Background job processing for bulk operations

📊 IMPLEMENTATION METRICS:
• 4 new PHP classes (30K+ lines total)
• 2 JavaScript modules (50K+ characters)
• 2 CSS modules with responsive design
• Comprehensive E2E test suite
• Automated validation scripts

🔧 INTEGRATION POINTS:
• Database table creation in activator
• Plugin initialization integration
• Asset loading with conditional enqueuing
• AJAX endpoints with security validation
• WordPress cron job scheduling

🧪 TESTING & VALIDATION:
• Phase 2A comprehensive test suite (E2E)
• Validation script with multiple checks
• Documentation with implementation notes
• Performance and security validation

This completes Phase 2A deliverables with full template and bulk operations functionality.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 19:44:46 -03:00

447 lines
No EOL
7.4 KiB
CSS

/**
* HVAC Event Form Templates CSS
*
* Styles for template functionality in event forms
*
* @package HVAC_Community_Events
* @since 3.1.0 (Phase 2A)
*/
/* Template Selector Styling */
.template-selector-row {
background: #f9f9f9;
border: 2px solid #ddd;
border-radius: 6px;
padding: 15px;
margin-bottom: 20px;
}
.template-selector-row label {
font-weight: 600;
color: #333;
}
.hvac-template-selector {
width: 100%;
max-width: 400px;
padding: 8px 12px;
border: 1px solid #ddd;
border-radius: 4px;
font-size: 14px;
}
.hvac-template-loading {
margin-left: 10px;
color: #666;
font-style: italic;
}
.hvac-template-loading.hidden {
display: none;
}
/* Template Information Display */
.template-info {
background: #e8f5e8;
border-left: 4px solid #46b450;
padding: 12px 16px;
margin-bottom: 20px;
border-radius: 4px;
}
.template-info p {
margin: 0;
color: #333;
}
.template-info strong {
color: #46b450;
}
/* Form Field Groups */
.datetime-row {
display: inline-block;
width: 48%;
margin-right: 2%;
}
.datetime-row:last-child {
margin-right: 0;
}
.timezone-row {
clear: both;
margin-top: 10px;
}
.venue-row, .organizer-row {
position: relative;
}
.venue-creation-field, .organizer-creation-field {
background: #f8f8f8;
border: 1px solid #ddd;
border-radius: 4px;
padding: 15px;
margin-top: 10px;
margin-bottom: 10px;
}
.venue-creation-field.hidden, .organizer-creation-field.hidden {
display: none;
}
.venue-creation-field h4, .organizer-creation-field h4 {
margin-top: 0;
margin-bottom: 15px;
color: #333;
font-size: 14px;
font-weight: 600;
}
/* Template Actions */
.template-actions {
text-align: center;
margin: 20px 0;
padding: 15px;
background: #f5f5f5;
border-radius: 6px;
}
.hvac-save-template {
background: #0085ba;
border-color: #0085ba;
color: white;
}
.hvac-save-template:hover {
background: #005a87;
border-color: #005a87;
}
/* Modal Styling */
.hvac-modal {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.8);
z-index: 10000;
display: flex;
align-items: center;
justify-content: center;
}
.hvac-modal.hidden {
display: none;
}
.hvac-modal-content {
background: white;
padding: 30px;
border-radius: 8px;
width: 90%;
max-width: 500px;
max-height: 80vh;
overflow-y: auto;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
}
.hvac-modal-content h3 {
margin-top: 0;
margin-bottom: 20px;
color: #333;
border-bottom: 1px solid #ddd;
padding-bottom: 10px;
}
.hvac-modal .form-row {
margin-bottom: 15px;
}
.hvac-modal label {
display: block;
font-weight: 600;
margin-bottom: 5px;
color: #333;
}
.hvac-modal input[type="text"],
.hvac-modal textarea,
.hvac-modal select {
width: 100%;
padding: 8px 12px;
border: 1px solid #ddd;
border-radius: 4px;
font-size: 14px;
box-sizing: border-box;
}
.hvac-modal textarea {
resize: vertical;
min-height: 80px;
}
.hvac-modal input[type="checkbox"] {
margin-right: 8px;
}
.hvac-modal .form-actions {
margin-top: 25px;
padding-top: 15px;
border-top: 1px solid #eee;
text-align: right;
}
.hvac-modal .form-actions button {
margin-left: 10px;
}
/* Message Styling */
.hvac-message {
padding: 12px 16px;
margin-bottom: 20px;
border-radius: 4px;
font-weight: 500;
}
.hvac-message-success {
background: #e8f5e8;
border-left: 4px solid #46b450;
color: #333;
}
.hvac-message-error {
background: #ffeaea;
border-left: 4px solid #d94f4f;
color: #333;
}
.hvac-message-info {
background: #e8f4fd;
border-left: 4px solid #0085ba;
color: #333;
}
/* Form Field Styling */
.hvac-datetime-field {
width: 100%;
max-width: 250px;
}
.hvac-event-title {
width: 100%;
max-width: 500px;
font-size: 16px;
font-weight: 500;
}
.hvac-event-description {
width: 100%;
min-height: 120px;
resize: vertical;
}
.hvac-venue-select,
.hvac-organizer-select {
width: 100%;
max-width: 400px;
}
.hvac-capacity-field {
width: 120px;
}
.hvac-cost-field {
width: 150px;
}
/* Submit Button Enhancement */
.form-submit {
text-align: center;
padding: 20px 0;
border-top: 1px solid #eee;
margin-top: 30px;
}
.form-submit button {
margin: 0 5px;
}
.form-submit .button-primary {
min-width: 200px;
padding: 10px 20px;
font-size: 16px;
font-weight: 600;
}
/* Loading States */
.hvac-loading {
opacity: 0.6;
pointer-events: none;
}
.hvac-loading::after {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: 20px;
height: 20px;
margin: -10px 0 0 -10px;
border: 2px solid #ddd;
border-radius: 50%;
border-top-color: #0085ba;
animation: hvac-spin 1s infinite linear;
}
@keyframes hvac-spin {
to {
transform: rotate(360deg);
}
}
/* Responsive Design */
@media (max-width: 768px) {
.datetime-row {
display: block;
width: 100%;
margin-right: 0;
margin-bottom: 15px;
}
.hvac-modal-content {
padding: 20px;
margin: 20px;
}
.hvac-event-title {
max-width: 100%;
}
.hvac-venue-select,
.hvac-organizer-select,
.hvac-template-selector {
max-width: 100%;
}
.form-submit .button-primary {
min-width: auto;
width: 100%;
}
}
@media (max-width: 480px) {
.template-selector-row {
padding: 10px;
}
.venue-creation-field,
.organizer-creation-field {
padding: 10px;
}
.template-actions {
padding: 10px;
}
.hvac-modal .form-actions button {
display: block;
width: 100%;
margin: 5px 0;
}
}
/* Field-specific Enhancements */
.form-row {
margin-bottom: 20px;
position: relative;
}
.form-row label {
display: block;
margin-bottom: 5px;
font-weight: 600;
color: #333;
}
.form-row .required {
color: #d94f4f;
}
.form-row .description {
display: block;
margin-top: 5px;
font-size: 13px;
color: #666;
font-style: italic;
}
.form-row .error {
display: block;
margin-top: 5px;
color: #d94f4f;
font-size: 13px;
font-weight: 500;
}
/* Template Category Badges */
.template-category {
display: inline-block;
padding: 2px 8px;
background: #f0f0f0;
border-radius: 12px;
font-size: 11px;
color: #666;
margin-left: 8px;
}
.template-category.category-training {
background: #e8f5e8;
color: #46b450;
}
.template-category.category-workshop {
background: #fff3e0;
color: #ff9800;
}
.template-category.category-certification {
background: #e3f2fd;
color: #2196f3;
}
.template-category.category-webinar {
background: #f3e5f5;
color: #9c27b0;
}
/* Accessibility Enhancements */
.hvac-modal-content:focus {
outline: 2px solid #0085ba;
outline-offset: 2px;
}
.button:focus,
.hvac-template-selector:focus,
input:focus,
textarea:focus,
select:focus {
outline: 2px solid #0085ba;
outline-offset: 1px;
}
/* Print Styles */
@media print {
.hvac-modal,
.hvac-save-template,
.hvac-clear-template {
display: none;
}
.template-info {
background: none;
border-left: 2px solid #333;
}
}