From 4bad3f4beb706aea3e497d15dc03ec29b420f355 Mon Sep 17 00:00:00 2001 From: mricoul Date: Mon, 28 Nov 2022 13:01:01 +0100 Subject: [PATCH 1/7] chore (volta): fix node version to 10 --- package.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/package.json b/package.json index 6fa39b0..92c3789 100755 --- a/package.json +++ b/package.json @@ -15,5 +15,8 @@ "gulp-uglifycss": "^1.0.6", "gulp-watch": "^4.3.11", "jshint": "^2.9.4" + }, + "volta": { + "node": "10.24.1" } } From fd7aa6a788fadbd712f2c8b4ff6a25a7d839ee02 Mon Sep 17 00:00:00 2001 From: mricoul Date: Mon, 28 Nov 2022 13:11:57 +0100 Subject: [PATCH 2/7] chore (gulp): replace gulp-uglify with gulp-uglify-es --- gulpfile.js | 7 ++++--- package.json | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index eb0b7a5..58a5f6f 100755 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,19 +1,20 @@ /*Load all plugin define in package.json*/ var gulp = require('gulp'), gulpLoadPlugins = require('gulp-load-plugins'), - plugins = gulpLoadPlugins(); + plugins = gulpLoadPlugins(), + uglify = require('gulp-uglify-es').default; /*JS task*/ gulp.task('dist', function () { gulp.src([ 'assets/js/input-5.js' ]) .pipe(plugins.jshint()) - .pipe(plugins.uglify()) + .pipe(uglify()) .pipe(plugins.concat('input-5.min.js')) .pipe(gulp.dest('assets/js/')); gulp.src([ 'assets/js/input-56.js' ]) .pipe(plugins.jshint()) - .pipe(plugins.uglify()) + .pipe(uglify()) .pipe(plugins.concat('input-56.min.js')) .pipe(gulp.dest('assets/js/')); diff --git a/package.json b/package.json index 92c3789..53bbb3c 100755 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "gulp-concat": "^2.6.1", "gulp-jshint": "^2.0.4", "gulp-load-plugins": "^1.5.0", - "gulp-uglify": "^2.0.1", + "gulp-uglify-es": "^3.0.0", "gulp-uglifycss": "^1.0.6", "gulp-watch": "^4.3.11", "jshint": "^2.9.4" From d2ea56f192974f380c791f34215ee4e6ead955ec Mon Sep 17 00:00:00 2001 From: mricoul Date: Mon, 28 Nov 2022 13:12:31 +0100 Subject: [PATCH 3/7] feat (*): add sprite file name to id --- assets/css/style.min.css | 2 +- assets/js/input-5.js | 16 ++++++++++------ assets/js/input-5.min.js | 2 +- assets/js/input-56.js | 18 ++++++++++++------ assets/js/input-56.min.js | 2 +- fields/acf-base.php | 3 ++- 6 files changed, 27 insertions(+), 16 deletions(-) diff --git a/assets/css/style.min.css b/assets/css/style.min.css index 5e55734..4165f60 100755 --- a/assets/css/style.min.css +++ b/assets/css/style.min.css @@ -1 +1 @@ -.acf_svg__icon,.select2-results svg{width:40px;height:40px;margin-right:10px;vertical-align:middle}.acf_svg__icon.small,.select2-selection svg{width:25px;height:19px;margin-right:10px;margin-top:3px;float:left;size:2px}.acf_svg__span{font-size:1.2em} \ No newline at end of file +.select2-results svg,.acf_svg__icon{width:40px;height:40px;margin-right:10px;vertical-align:middle}.select2-selection svg,.acf_svg__icon.small{width:25px;height:19px;margin-right:10px;margin-top:3px;float:left;size:2px}.acf_svg__span{font-size:1.2em} \ No newline at end of file diff --git a/assets/js/input-5.js b/assets/js/input-5.js index efe725c..4d8d0d8 100644 --- a/assets/js/input-5.js +++ b/assets/js/input-5.js @@ -29,11 +29,13 @@ if (!css.id) { return css.text; } + var id = css.id; + if (css.url) { - fetchSvg(css.url, css.id, css.text); - return $('' + css.text + ''); + fetchSvg(css.url, id, css.text); + return $('' + css.text + ''); } else { - return $('' + css.text ); + return $('' + css.text + ''); } }; @@ -47,11 +49,13 @@ if (!css.id) { return css.text; } + var id = css.id; + if (css.url) { - fetchSvg(css.url, css.id, css.text); - return $('' + css.text + ''); + fetchSvg(css.url, id, css.text); + return $('' + css.text + ''); } else { - return $('' + css.text ); + return $('' + css.text ); } }; } diff --git a/assets/js/input-5.min.js b/assets/js/input-5.min.js index 8b143ee..80acffc 100644 --- a/assets/js/input-5.min.js +++ b/assets/js/input-5.min.js @@ -1 +1 @@ -!function(t){acf.add_action("ready append",function(a){acf.get_fields({type:"svg_icon"},a).each(function(){!function(a){var i=a.find(".acf-input input"),n=t(i).attr("data-allow-clear")||0,e={dropdownCssClass:"bigdrop widefat",dropdownAutoWidth:!0,formatResult:function(a){return a.id?a.url?(s(a.url,a.id,a.text),t(''+a.text+"")):t(''+a.text):a.text},formatSelection:function(a){return a.id?a.url?(s(a.url,a.id,a.text),t(''+a.text+"")):t(''+a.text):a.text},data:{results:svg_icon_format_data},allowClear:1==n};async function s(a,i,n){var e=await fetch(a),s=await e.text();t('span[data-id="'+i+'"]').html(s+n)}i.select2(e)}(t(this))})})}(jQuery); \ No newline at end of file +!function(t){acf.add_action("ready append",(function(a){acf.get_fields({type:"svg_icon"},a).each((function(){!function(a){var n=a.find(".acf-input input"),i=t(n).attr("data-allow-clear")||0,s={dropdownCssClass:"bigdrop widefat",dropdownAutoWidth:!0,formatResult:function(a){if(!a.id)return a.text;var n=a.id;return a.url?(e(a.url,n,a.text),t(''+a.text+"")):t(''+a.text+"")},formatSelection:function(a){if(!a.id)return a.text;var n=a.id;return a.url?(e(a.url,n,a.text),t(''+a.text+"")):t(''+a.text)},data:{results:svg_icon_format_data},allowClear:1==i};async function e(a,n,i){var s=await fetch(a),e=await s.text();t('span[data-id="'+n+'"]').html(e+i)}n.select2(s)}(t(this))}))}))}(jQuery); \ No newline at end of file diff --git a/assets/js/input-56.js b/assets/js/input-56.js index c478a21..017ca57 100755 --- a/assets/js/input-56.js +++ b/assets/js/input-56.js @@ -29,11 +29,14 @@ if (!css.id) { return css.text; } + + var id = css.id; + if (css.url) { - fetchSvg(css.url, css.id, css.text); - return $('' + css.text + ''); + fetchSvg(css.url, id, css.text); + return $('' + css.text + ''); } else { - return $('' + css.text + ''); + return $('' + css.text + ''); } }; @@ -47,11 +50,14 @@ if (!css.id) { return css.text; } + + var id = css.id; + if (css.url) { - fetchSvg(css.url, css.id, css.text); - return $('' + css.text + ''); + fetchSvg(css.url, id, css.text); + return $('' + css.text + ''); } else { - return $('' + css.text + ''); + return $('' + css.text + ''); } }; } diff --git a/assets/js/input-56.min.js b/assets/js/input-56.min.js index f430d20..b146069 100755 --- a/assets/js/input-56.min.js +++ b/assets/js/input-56.min.js @@ -1 +1 @@ -!function(a){acf.add_action("ready append",function(t){acf.get_fields({type:"svg_icon"},t).each(function(){!function(t){var n=t.find(".acf-input input"),s=a(n).attr("data-allow-clear")||0,i={dropdownCssClass:"bigdrop widefat",dropdownAutoWidth:!0,templateResult:function(t){return t.id?t.url?(e(t.url,t.id,t.text),a(''+t.text+"")):a(''+t.text+""):t.text},templateSelection:function(t){return t.id?t.url?(e(t.url,t.id,t.text),a(''+t.text+"")):a(''+t.text+""):t.text},data:svg_icon_format_data,allowClear:1==s};async function e(t,n,s){var i=await fetch(t),e=await i.text();a('span[data-id="'+n+'"]').html(e+s)}n.select2(i)}(a(this))})})}(jQuery); \ No newline at end of file +!function(a){acf.add_action("ready append",(function(t){acf.get_fields({type:"svg_icon"},t).each((function(){!function(t){var n=t.find(".acf-input input"),s=a(n).attr("data-allow-clear")||0,i={dropdownCssClass:"bigdrop widefat",dropdownAutoWidth:!0,templateResult:function(t){if(!t.id)return t.text;var n=t.id;return t.url?(e(t.url,n,t.text),a(''+t.text+"")):a(''+t.text+"")},templateSelection:function(t){if(!t.id)return t.text;var n=t.id;return t.url?(e(t.url,n,t.text),a(''+t.text+"")):a(''+t.text+"")},data:svg_icon_format_data,allowClear:1==s};async function e(t,n,s){var i=await fetch(t),e=await i.text();a('span[data-id="'+n+'"]').html(e+s)}n.select2(i)}(a(this))}))}))}(jQuery); \ No newline at end of file diff --git a/fields/acf-base.php b/fields/acf-base.php index 6f36a46..4040c20 100644 --- a/fields/acf-base.php +++ b/fields/acf-base.php @@ -170,8 +170,9 @@ public function parse_svg() { foreach ( $svg[1] as $id ) { $id = sanitize_title( $id ); + $value = 1 < count( $files ) ? basename( $file['file'] ) . '#' . $id : $id; $out[] = array( - 'id' => $id, + 'id' => $value, 'text' => self::get_nice_display_text( $id ), 'disabled' => false, ); From b92d33be786d7c6e8ed096e8b8513dc37f11189e Mon Sep 17 00:00:00 2001 From: mricoul Date: Mon, 28 Nov 2022 14:22:18 +0100 Subject: [PATCH 4/7] fix (js): add missing class icon --- assets/js/input-5.js | 2 +- assets/js/input-5.min.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/js/input-5.js b/assets/js/input-5.js index 4d8d0d8..43c5f4f 100644 --- a/assets/js/input-5.js +++ b/assets/js/input-5.js @@ -33,7 +33,7 @@ if (css.url) { fetchSvg(css.url, id, css.text); - return $('' + css.text + ''); + return $('' + css.text + ''); } else { return $('' + css.text + ''); } diff --git a/assets/js/input-5.min.js b/assets/js/input-5.min.js index 80acffc..5b2774b 100644 --- a/assets/js/input-5.min.js +++ b/assets/js/input-5.min.js @@ -1 +1 @@ -!function(t){acf.add_action("ready append",(function(a){acf.get_fields({type:"svg_icon"},a).each((function(){!function(a){var n=a.find(".acf-input input"),i=t(n).attr("data-allow-clear")||0,s={dropdownCssClass:"bigdrop widefat",dropdownAutoWidth:!0,formatResult:function(a){if(!a.id)return a.text;var n=a.id;return a.url?(e(a.url,n,a.text),t(''+a.text+"")):t(''+a.text+"")},formatSelection:function(a){if(!a.id)return a.text;var n=a.id;return a.url?(e(a.url,n,a.text),t(''+a.text+"")):t(''+a.text)},data:{results:svg_icon_format_data},allowClear:1==i};async function e(a,n,i){var s=await fetch(a),e=await s.text();t('span[data-id="'+n+'"]').html(e+i)}n.select2(s)}(t(this))}))}))}(jQuery); \ No newline at end of file +!function(t){acf.add_action("ready append",(function(a){acf.get_fields({type:"svg_icon"},a).each((function(){!function(a){var n=a.find(".acf-input input"),i=t(n).attr("data-allow-clear")||0,s={dropdownCssClass:"bigdrop widefat",dropdownAutoWidth:!0,formatResult:function(a){if(!a.id)return a.text;var n=a.id;return a.url?(e(a.url,n,a.text),t(''+a.text+"")):t(''+a.text+"")},formatSelection:function(a){if(!a.id)return a.text;var n=a.id;return a.url?(e(a.url,n,a.text),t(''+a.text+"")):t(''+a.text)},data:{results:svg_icon_format_data},allowClear:1==i};async function e(a,n,i){var s=await fetch(a),e=await s.text();t('span[data-id="'+n+'"]').html(e+i)}n.select2(s)}(t(this))}))}))}(jQuery); \ No newline at end of file From e6a7984c2523991bf28bf0da5a392a66dd17c581 Mon Sep 17 00:00:00 2001 From: mricoul Date: Mon, 28 Nov 2022 14:24:18 +0100 Subject: [PATCH 5/7] fix (input-5): markup --- assets/js/input-5.js | 2 +- assets/js/input-5.min.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/js/input-5.js b/assets/js/input-5.js index 43c5f4f..565941f 100644 --- a/assets/js/input-5.js +++ b/assets/js/input-5.js @@ -35,7 +35,7 @@ fetchSvg(css.url, id, css.text); return $('' + css.text + ''); } else { - return $('' + css.text + ''); + return $('' + css.text); } }; diff --git a/assets/js/input-5.min.js b/assets/js/input-5.min.js index 5b2774b..3d7f451 100644 --- a/assets/js/input-5.min.js +++ b/assets/js/input-5.min.js @@ -1 +1 @@ -!function(t){acf.add_action("ready append",(function(a){acf.get_fields({type:"svg_icon"},a).each((function(){!function(a){var n=a.find(".acf-input input"),i=t(n).attr("data-allow-clear")||0,s={dropdownCssClass:"bigdrop widefat",dropdownAutoWidth:!0,formatResult:function(a){if(!a.id)return a.text;var n=a.id;return a.url?(e(a.url,n,a.text),t(''+a.text+"")):t(''+a.text+"")},formatSelection:function(a){if(!a.id)return a.text;var n=a.id;return a.url?(e(a.url,n,a.text),t(''+a.text+"")):t(''+a.text)},data:{results:svg_icon_format_data},allowClear:1==i};async function e(a,n,i){var s=await fetch(a),e=await s.text();t('span[data-id="'+n+'"]').html(e+i)}n.select2(s)}(t(this))}))}))}(jQuery); \ No newline at end of file +!function(t){acf.add_action("ready append",(function(a){acf.get_fields({type:"svg_icon"},a).each((function(){!function(a){var n=a.find(".acf-input input"),i=t(n).attr("data-allow-clear")||0,s={dropdownCssClass:"bigdrop widefat",dropdownAutoWidth:!0,formatResult:function(a){if(!a.id)return a.text;var n=a.id;return a.url?(e(a.url,n,a.text),t(''+a.text+"")):t(''+a.text)},formatSelection:function(a){if(!a.id)return a.text;var n=a.id;return a.url?(e(a.url,n,a.text),t(''+a.text+"")):t(''+a.text)},data:{results:svg_icon_format_data},allowClear:1==i};async function e(a,n,i){var s=await fetch(a),e=await s.text();t('span[data-id="'+n+'"]').html(e+i)}n.select2(s)}(t(this))}))}))}(jQuery); \ No newline at end of file From 75d9b635ead4ef43252960936ebb12caa3f48ffe Mon Sep 17 00:00:00 2001 From: mricoul Date: Tue, 29 Nov 2022 10:45:51 +0100 Subject: [PATCH 6/7] fix (acf-base): check only file type !== media for $value --- fields/acf-base.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/fields/acf-base.php b/fields/acf-base.php index 4040c20..02225d2 100644 --- a/fields/acf-base.php +++ b/fields/acf-base.php @@ -149,7 +149,14 @@ public function parse_svg() { */ $allowed_tags = apply_filters( 'acf_svg_icon_svg_parse_tags', '' ); - $out = array(); + $out = array(); + $custom_files = array_filter( + $files, + function ( $file ) { + return 'media' !== $file['type']; + } + ); + foreach ( $files as $file ) { if ( ! is_file( $file['file'] ) ) { continue; @@ -170,7 +177,7 @@ public function parse_svg() { foreach ( $svg[1] as $id ) { $id = sanitize_title( $id ); - $value = 1 < count( $files ) ? basename( $file['file'] ) . '#' . $id : $id; + $value = 1 < count( $custom_files ) ? basename( $file['file'] ) . '#' . $id : $id; $out[] = array( 'id' => $value, 'text' => self::get_nice_display_text( $id ), From b2e5191a7bee4a296281eab4a0b000a55f6891b5 Mon Sep 17 00:00:00 2001 From: mricoul Date: Tue, 29 Nov 2022 11:22:24 +0100 Subject: [PATCH 7/7] docs (acf-base): add comments --- fields/acf-base.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/fields/acf-base.php b/fields/acf-base.php index 02225d2..fe0bcbf 100644 --- a/fields/acf-base.php +++ b/fields/acf-base.php @@ -149,7 +149,9 @@ public function parse_svg() { */ $allowed_tags = apply_filters( 'acf_svg_icon_svg_parse_tags', '' ); - $out = array(); + $out = array(); + + // Ignore SVG with type media to check if there are multiple sprite $custom_files = array_filter( $files, function ( $file ) { @@ -176,7 +178,8 @@ function ( $file ) { preg_match_all( '/id="(\S+)"/m', strip_tags( $contents, $allowed_tags ), $svg ); foreach ( $svg[1] as $id ) { - $id = sanitize_title( $id ); + $id = sanitize_title( $id ); + // If multiple sprites registered, return sprite name and icon name, otherwise return icon name only $value = 1 < count( $custom_files ) ? basename( $file['file'] ) . '#' . $id : $id; $out[] = array( 'id' => $value,