File tree Expand file tree Collapse file tree
plugins/wp-react-blocks-plugin/blocks/posts-filter Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ ---
2+ " @devgateway/dvz-wp-commons " : patch
3+ ---
4+
5+ Normalize default values in posts filter
Original file line number Diff line number Diff line change @@ -266,16 +266,19 @@ export class BlockEditWithFilters extends ComponentWithSettings {
266266
267267 onDefaultCategoryChanged ( value , filterType = 'multi-select' , checked ) {
268268 const { setAttributes, attributes : { defaultValues } } = this . props ;
269+ const normalizedValue = value === null || value === undefined || value === 'none'
270+ ? value
271+ : Number ( value ) ;
269272
270273 if ( filterType === 'multi-select' ) {
271274 if ( ! checked ) {
272- setAttributes ( { defaultValues : defaultValues . filter ( i => i !== value ) } ) ;
275+ setAttributes ( { defaultValues : defaultValues . filter ( i => Number ( i ) !== normalizedValue ) } ) ;
273276 } else {
274- setAttributes ( { defaultValues : [ ...defaultValues , value ] } ) ;
277+ setAttributes ( { defaultValues : [ ...defaultValues , normalizedValue ] } ) ;
275278 }
276279 } else {
277280 // For single-select, 'checked' parameter is not used, 'value' is the selected value
278- setAttributes ( { defaultValues : [ value ] } ) ;
281+ setAttributes ( { defaultValues : [ normalizedValue ] } ) ;
279282 }
280283 }
281284
@@ -520,7 +523,7 @@ export class BlockEditWithFilters extends ComponentWithSettings {
520523 </ Text >
521524 < SelectControl
522525 options = { [ { label : 'None' , value : 'none' } , ...this . categoriesOptions ( ) ] }
523- value = { defaultValues [ 0 ] } onChange = { ( value ) => {
526+ value = { defaultValues [ 0 ] !== undefined ? String ( defaultValues [ 0 ] ) : 'none' } onChange = { ( value ) => {
524527 this . onDefaultCategoryChanged ( value , filterType ) ;
525528 } } />
526529 </ PanelBody >
Original file line number Diff line number Diff line change @@ -84,7 +84,7 @@ class BlockEdit extends BlockEditWithFilters {
8484 label = { __ ( 'Filter Type' ) }
8585 value = { filterType }
8686 onChange = { ( filterType ) => {
87- setAttributes ( { filterType : filterType } ) ;
87+ setAttributes ( { filterType : filterType , defaultValues : [ ] } ) ;
8888 } }
8989 options = { [
9090 { label : "Single select" , value : "single-select" } ,
@@ -99,7 +99,8 @@ class BlockEdit extends BlockEditWithFilters {
9999 onChange = { ( ) => setAttributes ( {
100100 isCountryFilter : ! isCountryFilter ,
101101 isYearFilter : false ,
102- selectedYear : null
102+ selectedYear : null ,
103+ defaultValues : [ ]
103104 } ) } />
104105
105106 < ToggleControl
@@ -109,7 +110,8 @@ class BlockEdit extends BlockEditWithFilters {
109110 onChange = { ( ) => setAttributes ( {
110111 isYearFilter : ! isYearFilter ,
111112 isCountryFilter : false ,
112- selectedYear : null
113+ selectedYear : null ,
114+ defaultValues : [ ]
113115 } ) } />
114116
115117 </ PanelBody >
Original file line number Diff line number Diff line change @@ -28,6 +28,17 @@ const SaveComponent = (props) => {
2828 }
2929 } = props ;
3030
31+ const normalizedDefaultValues = Array . isArray ( defaultValues )
32+ ? defaultValues
33+ . map ( ( value ) => {
34+ if ( value === null || value === undefined || value === 'none' ) {
35+ return value ;
36+ }
37+ const numericValue = Number ( value ) ;
38+ return Number . isNaN ( numericValue ) ? value : numericValue ;
39+ } )
40+ : defaultValues ;
41+
3142 const divClass = { } ;
3243 const divStyles = { } ;
3344
@@ -49,12 +60,12 @@ const SaveComponent = (props) => {
4960 data-all-none-same-behaviour = { allNoneSameBehaviour }
5061 data-auto-apply = { autoApply }
5162 data-taxonomy = { taxonomy }
52- data-categories = { categories . toString ( ) }
63+ data-categories = { encodeURIComponent ( JSON . stringify ( categories ) ) }
5364 data-is-country-filter = { isCountryFilter }
5465 data-is-year-filter = { isYearFilter }
5566 data-selected-year = { selectedYear }
5667 data-type = { type }
57- data-default-values = { encodeURIComponent ( JSON . stringify ( defaultValues ) ) }
68+ data-default-values = { encodeURIComponent ( JSON . stringify ( normalizedDefaultValues ) ) }
5869 data-wordpress-source = { wordpressSource }
5970 data-wordpress-source-type = { wordpressSourceType } >
6071 </ div >
You can’t perform that action at this time.
0 commit comments