Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixed Range Control Reset Button #14919

Closed
wants to merge 5 commits into from
Closed
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
3 changes: 3 additions & 0 deletions packages/block-library/src/rss/edit.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ class RSSEdit extends Component {

this.state = {
editing: ! this.props.attributes.feedURL,
initialItemsToShow: this.props.attributes.itemsToShow,
};

this.toggleAttribute = this.toggleAttribute.bind( this );
Expand Down Expand Up @@ -119,6 +120,8 @@ class RSSEdit extends Component {
onChange={ ( value ) => setAttributes( { itemsToShow: value } ) }
min={ DEFAULT_MIN_ITEMS }
max={ DEFAULT_MAX_ITEMS }
allowReset={ true }
initialValue={ this.state.initialItemsToShow }
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I noticed that there is already initialPosition prop which plays exactly the same role. We should use it instead. See:
https://github.com/WordPress/gutenberg/tree/c2c112846126e786939c2525a2c802d6016a2c82/packages/components/src/range-control#initialposition

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The initialPosistion prop updates each time the slider button is changed. If I simply reset to initialPosition, nothing would change. This is why I created the initialValue

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The initialPosistion prop updates each time the slider button is changed. If I simply reset to initialPosition, nothing would change. This is why I created the initialValue

@jorgefilipecosta - I see that you have added initialPosition in #6088. Can you clarify its intended behavior?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The initialPosition property allows the slider circle to appear as if a given value was select, when in fact the value is undefined.
image
This was the functionality that allowed the font size picker to appear in a position that makes sense instead of appearing in the middle when the font size is unset.
The font size picker was meanwhile redesigned and core is not using this feature anymore, but I guess we need to keep it in order to be back-compatible with existing plugins.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Interesting, this means it's something different and its description should be updated to better reflect it. I remember what was the case, we wanted to show the current font size inherited from the CSS used by the theme author.

required
/>
<ToggleControl
Expand Down
5 changes: 3 additions & 2 deletions packages/components/src/range-control/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,15 @@ function RangeControl( {
min,
max,
setState,
initialValue,
...props
} ) {
const id = `inspector-range-control-${ instanceId }`;
const currentInputValue = currentInput === null ? value : currentInput;
const initialInputValue = ( initialValue && initialValue >= min && initialValue <= max ) ? parseFloat( initialValue ) : undefined;
const resetValue = () => {
resetCurrentInput();
onChange();
onChange( initialInputValue );
};
const resetCurrentInput = () => {
if ( currentInput !== null ) {
Expand All @@ -45,7 +47,6 @@ function RangeControl( {
} );
}
};

const onChangeValue = ( event ) => {
const newValue = event.target.value;
// If the input value is invalid temporarily save it to the state,
Expand Down