Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
147 changes: 83 additions & 64 deletions Gruntfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@
module.exports = function( grunt) {
const tailwindFileMap = {
'admin/form-builder/views/form-builder-v4.1.php': 'admin/form-builder.css',
'admin/form-builder/views/post-form-settings.php': 'admin/form-builder.css',
'assets/js/forms-list.js': 'admin/form-builder.css',
'templates/account.php': 'frontend/account.css',
'ai-form-builder': 'ai-form-builder.css'
'ai-form-builder': 'ai-form-builder.css',
// Vue cleanup: forms-list CSS now handled by React build
// 'forms-list': 'forms-list.css'
}

var formBuilderAssets = require('./admin/form-builder/assets/js/form-builder-assets.js');
// Vue cleanup: form builder assets manifest no longer needed (React replaces Vue)
// var formBuilderAssets = require('./admin/form-builder/assets/js/form-builder-assets.js');

var pkg = grunt.file.readJSON('package.json');

Expand All @@ -34,7 +35,8 @@ module.exports = function( grunt) {

admin: {
files: {
'<%= dirs.css %>/wpuf-form-builder.css': ['admin/form-builder/assets/less/form-builder.less'],
// Vue cleanup: form-builder LESS no longer compiled (React uses Tailwind/CSS)
// '<%= dirs.css %>/wpuf-form-builder.css': ['admin/form-builder/assets/less/form-builder.less'],
'<%= dirs.css %>/admin.css': ['<%= dirs.less %>/admin.less'],
'<%= dirs.css %>/admin/whats-new.css': ['<%= dirs.less %>/whats-new.less'],
'<%= dirs.css %>/registration-forms.css': ['<%= dirs.less %>/registration-forms.less']
Expand Down Expand Up @@ -97,23 +99,25 @@ module.exports = function( grunt) {
tasks: ['less:front', 'less:admin']
},

formBuilder: {
files: [
'admin/form-builder/assets/less/*',
'admin/form-builder/assets/js/**/*',
'assets/js/wpuf-form-builder-wpuf-forms.js',
'<%= dirs.css %>/frontend-forms.less',
],
tasks: [
'jshint:formBuilder', 'less:admin',
'concat:formBuilder', 'concat:templates', 'less:front'
]
},
// Vue cleanup: old Vue form builder watch removed (React has its own watch)
// formBuilder: {
// files: [
// 'admin/form-builder/assets/less/*',
// 'admin/form-builder/assets/js/**/*',
// 'assets/js/wpuf-form-builder-wpuf-forms.js',
// '<%= dirs.css %>/frontend-forms.less',
// ],
// tasks: [
// 'jshint:formBuilder', 'less:admin',
// 'concat:formBuilder', 'concat:templates', 'less:front'
// ]
// },

vue: {
files: [
'assets/js/subscriptions.js',
'assets/js/forms-list.js',
// Vue cleanup: forms-list.js removed (React replaces Vue forms list)
// 'assets/js/forms-list.js',
'assets/css/admin/subscriptions.css',
'assets/js/components/**/*.vue',
'assets/js/stores/**/*.js',
Expand All @@ -123,6 +127,15 @@ module.exports = function( grunt) {
]
},

reactFormBuilder: {
files: [
'admin/form-builder/src/**/*.{js,jsx}',
],
tasks: [
'shell:npm_build_form_builder_react'
]
},

aiFormBuilderVue: {
files: [
'assets/js/ai-form-builder.js',
Expand All @@ -138,13 +151,16 @@ module.exports = function( grunt) {
files: [
'src/css/**/*.css',
'admin/form-builder/views/*.php',
'admin/form-builder/assets/js/**/*.php',
'admin/form-builder/assets/js/**/*.js',
// Vue cleanup: old Vue component PHP templates removed
// 'admin/form-builder/assets/js/**/*.php',
// 'admin/form-builder/assets/js/**/*.js',
'admin/form-builder/src/**/*.{js,jsx}',
'includes/Admin/**/*.php',
'templates/**/*.php',
'includes/Free/Free_Loader.php',
'wpuf-functions.php',
'assets/js/forms-list.js',
// Vue cleanup: forms-list.js removed (React replaces Vue)
// 'assets/js/forms-list.js',
],
tasks: ['tailwind'],
options: {
Expand Down Expand Up @@ -231,44 +247,40 @@ module.exports = function( grunt) {
}
},

// jshint
jshint: {
options: {
jshintrc: '.jshintrc',
reporter: require('jshint-stylish')
},

formBuilder: [
'admin/form-builder/assets/js/**/*.js',
'!admin/form-builder/assets/js/jquery-siaf-start.js',
'!admin/form-builder/assets/js/jquery-siaf-end.js',
'assets/js/wpuf-form-builder-wpuf-forms.js',
]
},

// concat/join files
concat: {
formBuilder: {
files: {
'<%= dirs.js %>/wpuf-form-builder.js': 'admin/form-builder/assets/js/form-builder.js',
'<%= dirs.js %>/wpuf-form-builder-mixins.js': formBuilderAssets.mixins,
'<%= dirs.js %>/wpuf-form-builder-components.js': formBuilderAssets.components,
},
},

templates: {
options: {
process: function(src, filepath) {
var id = filepath.replace('/template.php', '').split('/').pop();

return '<script type="text/x-template" id="tmpl-wpuf-' + id + '">\n' + src + '</script>\n';
}
},
files: {
'<%= dirs.template %>/form-components.php': formBuilderAssets.componentTemplates,
}
}
},
// Vue cleanup: jshint and concat for Vue form builder removed (React replaces Vue)
// jshint: {
// options: {
// jshintrc: '.jshintrc',
// reporter: require('jshint-stylish')
// },
// formBuilder: [
// 'admin/form-builder/assets/js/**/*.js',
// '!admin/form-builder/assets/js/jquery-siaf-start.js',
// '!admin/form-builder/assets/js/jquery-siaf-end.js',
// 'assets/js/wpuf-form-builder-wpuf-forms.js',
// ]
// },

// concat: {
// formBuilder: {
// files: {
// '<%= dirs.js %>/wpuf-form-builder.js': 'admin/form-builder/assets/js/form-builder.js',
// '<%= dirs.js %>/wpuf-form-builder-mixins.js': formBuilderAssets.mixins,
// '<%= dirs.js %>/wpuf-form-builder-components.js': formBuilderAssets.components,
// },
// },
// templates: {
// options: {
// process: function(src, filepath) {
// var id = filepath.replace('/template.php', '').split('/').pop();
// return '<script type="text/x-template" id="tmpl-wpuf-' + id + '">\n' + src + '</script>\n';
// }
// },
// files: {
// '<%= dirs.template %>/form-components.php': formBuilderAssets.componentTemplates,
// }
// }
// },

// is to run NPM commands through Grunt
shell: {
Expand All @@ -278,6 +290,9 @@ module.exports = function( grunt) {
npm_build_ai_form_builder: {
command: 'npm run build:ai-form-builder',
},
npm_build_form_builder_react: {
command: 'npm run build:form-builder',
},
tailwind: {
command: function ( input, output ) {
return `npx tailwindcss -i ${input} -o ${output} --minify`;
Expand All @@ -293,8 +308,9 @@ module.exports = function( grunt) {

// Load NPM tasks to be used here
grunt.loadNpmTasks( 'grunt-contrib-less' );
grunt.loadNpmTasks( 'grunt-contrib-concat' );
grunt.loadNpmTasks( 'grunt-contrib-jshint' );
// Vue cleanup: concat and jshint no longer needed for form builder
// grunt.loadNpmTasks( 'grunt-contrib-concat' );
// grunt.loadNpmTasks( 'grunt-contrib-jshint' );
grunt.loadNpmTasks( 'grunt-wp-i18n' );
grunt.loadNpmTasks( 'grunt-contrib-uglify' );
grunt.loadNpmTasks( 'grunt-contrib-watch' );
Expand All @@ -306,14 +322,16 @@ module.exports = function( grunt) {
grunt.loadNpmTasks( 'grunt-shell' );
grunt.loadNpmTasks( 'grunt-postcss' );

grunt.registerTask( 'default', [ 'less', 'concat', 'uglify', 'i18n', 'tailwind' ] );
// Vue cleanup: removed 'concat' (Vue form builder concat no longer needed)
grunt.registerTask( 'default', [ 'less', 'uglify', 'i18n', 'tailwind' ] );

// file auto generation
grunt.registerTask( 'i18n', [ 'makepot' ] );
grunt.registerTask( 'readme', [ 'wp_readme_to_markdown' ] );

// build stuff
grunt.registerTask( 'release', [ 'less', 'concat', 'uglify', 'i18n', 'readme', 'tailwind', 'tailwind-minify' ] );
// Vue cleanup: removed 'concat' (Vue form builder concat no longer needed)
grunt.registerTask( 'release', [ 'less', 'uglify', 'i18n', 'readme', 'tailwind', 'tailwind-minify' ] );
grunt.registerTask( 'zip', [ 'shell:npm_build', 'clean', 'copy', 'compress' ] );

grunt.event.on('watch', function(action, filepath, target) {
Expand Down Expand Up @@ -342,7 +360,8 @@ module.exports = function( grunt) {

grunt.registerTask('tailwind-minify', function() {
const cssFiles = [
{ input: 'assets/css/forms-list.css', output: 'assets/css/forms-list.min.css' },
// Vue cleanup: forms-list CSS minification handled by React build pipeline
// { input: 'assets/css/forms-list.css', output: 'assets/css/forms-list.min.css' },
{ input: 'assets/css/frontend-subscriptions.css', output: 'assets/css/frontend-subscriptions.min.css' },
{ input: 'assets/css/ai-form-builder.css', output: 'assets/css/ai-form-builder.min.css' },
{ input: 'assets/css/admin/subscriptions.css', output: 'assets/css/admin/subscriptions.min.css' }
Expand Down
Loading
Loading