Giter VIP home page Giter VIP logo

Comments (5)

triskweline avatar triskweline commented on June 25, 2024 1

I decided to revert the default event to always be change.

Mobile date pickers don't have the original issue (#336) of emitting too many change events, so defaulting to blur is not a universally good default even if we discounted custom date picker libraries.

from unpoly.

triskweline avatar triskweline commented on June 25, 2024

Case 1: flatpicker is faster then unpoly
Case 2: unpoly is faster then flatpicker (usual case)

What causes the initialization order to not be deterministic?

Consider using a compiler to initialize flatpicker instead of MutationObserver. This way [up-validate] should always run before your flat picker initialization. The order can be changed with a { priority } option.

Flatpicker itself changes the input type from date to text to disable the browsers native date picker.

It seems the issue is the input element changing its type after initialization, which Unpoly cannot support.

I'm closing this issue as there are numerous workarounds:

  • Using text inputs instead of date inputs (if they're going through flatpicker anyway)
  • Adding [up-watch-event=change] to date inputs, manually or with a macro
  • Initializing flatpicker before [up-validate]
  • Configuring up.form.config.watchChangeEvents to not watch blur events for date inputs.

from unpoly.

marc-mabe avatar marc-mabe commented on June 25, 2024

Hi @triskweline,

Consider using a compiler to initialize flatpicker instead of MutationObserver. This way [up-validate] should always run before your flat picker initialization. The order can be changed with a { priority } option.

This was only for the minimal example - In real the flatpicker is behind a stimulus controller.

I'm closing this issue as there are numerous workarounds:

  • Using text inputs instead of date inputs (if they're going through flatpicker anyway)

Trying to avoid this as the custom date picker needs javascript and the field should work fine without

  • Adding [up-watch-event=change] to date inputs, manually or with a macro
  • Configuring up.form.config.watchChangeEvents to not watch blur events for date inputs.

OK this works - wasn't aware of such configuration yet.

Still wondering why there is a default "hack" in place making date input behave differently than all other inputs. If it's as simple to configure it to solve the issue in #336.
Especially as that's how all custom date pickers are working to disable browsers default behavior and as they are only needs sometimes they will be lazy loaded.

Anyway thanks for your help

from unpoly.

triskweline avatar triskweline commented on June 25, 2024

We can either provide a good default experience for people who use native date picker, or for people who use a custom date picker with the particular behavior of flatpickr.

I will think about changing the default to just change, but it looks like some group will always be surprised by the default.

from unpoly.

marc-mabe avatar marc-mabe commented on June 25, 2024

I totally agree and it's not my decision.

I just would feel it consistent to say by default unpoly listens on the change event, which can be customized and probably with an example of date input instead of by default unpoly listens on change event except it's a date input which then defaults to blur.

from unpoly.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.