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

spread condition for input element #5004

Merged
merged 3 commits into from
Jul 7, 2020

Conversation

tanhauhau
Copy link
Member

Fixes #4418

When updating input.value, we check whether input.value === value before setting it:

p(ctx, [dirty]) {
	if (dirty & /*value*/ 1 && input.value !== /*value*/ ctx[0]) {
		input.value = /*value*/ ctx[0];
	}
},

however we didnt check this when using spread:

p(ctx, [dirty]) {
	set_attributes(input, input_data = get_spread_update(input_levels, [
		{}, 
		dirty & /*value*/ 1 && { value: /*value*/ ctx[0] }
	]));
},

this MR tries to fix this

p(ctx, [dirty]) {
	set_attributes(input, input_data = get_spread_update(input_levels, [
		{}, 
-		dirty & /*value*/ 1 && { value: /*value*/ ctx[0] }
+		dirty & /*value*/ 1 && input.value !== /*value*/ ctx[0] && { value: /*value*/ ctx[0] }
	]));
},

I did some moving code around, so i can extract the logic from Attribute#render that handles the special case for input.value, input.src, should_cache, etc, still figuring out what's the best way to refactor them, suggestions welcome.

Before submitting the PR, please make sure you do the following

  • It's really useful if your PR relates to an outstanding issue, so please reference it in your PR, or create an explanatory one for discussion. In many cases features are absent for a reason.
  • This message body should clearly illustrate what problems it solves. If there are related issues, remember to reference them.
  • Ideally, include a test that fails without this PR but passes with it. PRs will only be merged once they pass CI. (Remember to npm run lint!)

Tests

  • Run the tests tests with npm test or yarn test)

@Conduitry
Copy link
Member

@tanhauhau Can you take a look at the conflict here please? In particular, we need to make sure the changes in #5054 are reflected in the code that this PR moves to another location.

@antony antony self-requested a review July 4, 2020 22:54
@Conduitry Conduitry merged commit 4021063 into sveltejs:master Jul 7, 2020
hontas added a commit to hontas/svelte that referenced this pull request Jul 18, 2020
* upstream/master: (190 commits)
  invalidate $$props and $$restProps only when there are changes (sveltejs#5123)
  site: use https in link in blog (sveltejs#5148)
  Simplify each block bindings example (sveltejs#5094)
  fix $$props reactive for slots (sveltejs#5125)
  site: add FAQ entry for how to document a svelte component (sveltejs#5131)
  site: remove an obsolete TODO in blog post (sveltejs#5135)
  Increase timeout for unit build
  Increase timeout for unit tests
  -> v3.24.0
  spread condition for input element (sveltejs#5004)
  update changelog
  fix(5018): compare wholeText instead of data (sveltejs#5028)
  html anchor in head (sveltejs#5071)
  error on expression scope store (sveltejs#5079)
  update changelog
  preprocess self-closing script and style tags (sveltejs#5082)
  update changelog
  fix: Parameters with default values are optional (sveltejs#5083)
  make builds time out after a reasonable period (sveltejs#5100)
  site: fix blog typo (sveltejs#5090)
  ...
hontas added a commit to hontas/svelte that referenced this pull request Jul 18, 2020
* master: (67 commits)
  add updating guard to binding callback (sveltejs#5126)
  Bump lodash from 4.17.15 to 4.17.19 (sveltejs#5152)
  Bump lodash from 4.17.15 to 4.17.19 in /site (sveltejs#5155)
  Fixes sveltejs#5153 (sveltejs#5154)
  invalidate $$props and $$restProps only when there are changes (sveltejs#5123)
  site: use https in link in blog (sveltejs#5148)
  Simplify each block bindings example (sveltejs#5094)
  fix $$props reactive for slots (sveltejs#5125)
  site: add FAQ entry for how to document a svelte component (sveltejs#5131)
  site: remove an obsolete TODO in blog post (sveltejs#5135)
  Increase timeout for unit build
  Increase timeout for unit tests
  -> v3.24.0
  spread condition for input element (sveltejs#5004)
  update changelog
  fix(5018): compare wholeText instead of data (sveltejs#5028)
  html anchor in head (sveltejs#5071)
  error on expression scope store (sveltejs#5079)
  update changelog
  preprocess self-closing script and style tags (sveltejs#5082)
  ...
taylorzane pushed a commit to taylorzane/svelte that referenced this pull request Dec 17, 2020
Wojmis3 added a commit to Wojmis3/svelte that referenced this pull request Sep 22, 2021
Didn't break what sveltejs#5004 fixed, hopefully didn't break anything else - no tests changed thei results after this change.
@Wojmis3 Wojmis3 mentioned this pull request Sep 22, 2021
5 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Weird input validation breakage when using $$props
3 participants