Add massive collection of CSS, JavaScript and theme assets that were previously excluded: **CSS Files (681 total):** - HVAC plugin-specific styles (hvac-*.css): 34 files including dashboard, certificates, registration, mobile nav, accessibility fixes, animations, and welcome popup - Theme framework files (Astra, builder systems, layouts): 200+ files - Plugin compatibility styles (WooCommerce, WPForms, Elementor, Contact Form 7): 150+ files - WordPress core and editor styles: 50+ files - Responsive and RTL language support: 200+ files **JavaScript Files (400+ total):** - HVAC plugin functionality (hvac-*.js): 27 files including menu systems, dashboard enhancements, profile sharing, mobile responsive features, accessibility, and animations - Framework and library files: jQuery plugins, GSAP, AOS, Swiper, Chart.js, Lottie, Isotope - Plugin compatibility scripts: WPForms, WooCommerce, Elementor, Contact Form 7, LifterLMS - WordPress core functionality: customizer, admin, block editor compatibility - Third-party integrations: Stripe, SMTP, analytics, search functionality **Assets:** - Certificate background images and logos - Comprehensive theme styling infrastructure - Mobile-responsive design systems - Cross-browser compatibility assets - Performance-optimized minified versions **Updated .gitignore:** - Fixed asset directory whitelisting patterns to properly include CSS/JS/images - Added proper directory structure recognition (!/assets/css/, !/assets/js/, etc.) - Maintains security by excluding sensitive files while including essential assets This commit provides the complete frontend infrastructure needed for: - Full theme functionality and styling - Plugin feature implementations - Mobile responsiveness and accessibility - Cross-browser compatibility - Performance optimization - Developer workflow support
		
			
				
	
	
		
			80 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| const updatingBlock = ['core/group'];
 | |
| 
 | |
| wp.hooks.addFilter(
 | |
| 	'blocks.registerBlockType',
 | |
| 	'astra/meta/groupLayoutSettings',
 | |
| 	(settings, name) => {
 | |
| 		if (!updatingBlock.includes(name)) {
 | |
| 			return settings;
 | |
| 		}
 | |
| 
 | |
| 		const newSettings = {
 | |
| 			...settings,
 | |
| 			supports: {
 | |
| 				...(settings.supports || {}),
 | |
| 				layout: {
 | |
| 					...(settings.supports.layout || {}),
 | |
| 					allowEditing: true,
 | |
| 					allowSwitching: false,
 | |
| 					allowInheriting: true,
 | |
| 				},
 | |
| 				__experimentalLayout: {
 | |
| 					...(settings.supports.__experimentalLayout || {}),
 | |
| 					allowEditing: true,
 | |
| 					allowSwitching: false,
 | |
| 					allowInheriting: true,
 | |
| 				},
 | |
| 			},
 | |
| 		};
 | |
| 		return newSettings;
 | |
| 	},
 | |
| 	20
 | |
| );
 | |
| 
 | |
| // Get the block editor's data module.
 | |
| const { dispatch } = wp.data;
 | |
| 
 | |
| // Create a function to set the default align attribute
 | |
| function setWooDefaultAlignments() {
 | |
| 	const checkoutBlocks = wp.blocks.getBlockTypes().some(block => block.name === 'woocommerce/checkout');
 | |
| 	const cartBlocks = wp.blocks.getBlockTypes().some(block => block.name === 'woocommerce/cart');
 | |
| 
 | |
| 	if ( checkoutBlocks ) {
 | |
| 	const checkoutBlock = wp.data.select('core/block-editor').getBlocks().find(block => block.name === 'woocommerce/checkout');
 | |
| 		if (checkoutBlock && checkoutBlock.attributes.align !== 'none') {
 | |
| 			const checkoutClientId = checkoutBlock.clientId;
 | |
| 			const checkoutLocalStorageKey = 'hasCheckoutBlockInserted';
 | |
| 			const checkoutLocalStorageData = JSON.parse(localStorage.getItem(checkoutLocalStorageKey)) || {};
 | |
| 
 | |
| 			if ( ! checkoutLocalStorageData[checkoutClientId] ) {
 | |
| 				const updatedCheckoutAttributes = { ...checkoutBlock.attributes, align: 'none' };
 | |
| 				dispatch('core/block-editor').updateBlockAttributes(checkoutClientId, updatedCheckoutAttributes);
 | |
| 
 | |
| 				checkoutLocalStorageData[checkoutClientId] = true;
 | |
| 				localStorage.setItem(checkoutLocalStorageKey, JSON.stringify(checkoutLocalStorageData));
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	if ( cartBlocks ) {
 | |
| 	const cartBlock = wp.data.select('core/block-editor').getBlocks().find(block => block.name === 'woocommerce/cart');
 | |
| 		if (cartBlock && cartBlock.attributes.align !== 'none') {
 | |
| 			const cartClientId = cartBlock.clientId;
 | |
| 			const cartLocalStorageKey = 'hasCartBlockInserted';
 | |
| 			const cartLocalStorageData = JSON.parse(localStorage.getItem(cartLocalStorageKey)) || {};
 | |
| 
 | |
| 			if ( ! cartLocalStorageData[cartClientId] ) {
 | |
| 				const updatedCartAttributes = { ...cartBlock.attributes, align: 'none' };
 | |
| 				dispatch('core/block-editor').updateBlockAttributes(cartBlock.clientId, updatedCartAttributes);
 | |
| 
 | |
| 				cartLocalStorageData[cartClientId] = true;
 | |
| 				localStorage.setItem(cartLocalStorageKey, JSON.stringify(cartLocalStorageData));
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // Listen for the first insertion of a WooCommerce block
 | |
| wp.data.subscribe(() => {
 | |
| 	setWooDefaultAlignments();
 | |
| });
 |