Skip to content

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

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

Date & Time Picker #101

Closed
garritfra opened this issue Jul 17, 2020 · 19 comments
Closed

Date & Time Picker #101

garritfra opened this issue Jul 17, 2020 · 19 comments
Assignees
Labels
feature Feature requests. new component Feature request for a new component. Please vote with reactions!

Comments

@garritfra
Copy link

Is your feature request related to a problem? Please describe.

I need a way to pick a date and a time. A lot of Frameworks I know (including Bootstrap!) are lacking this Feature, even though it's quite an essential Component.

Describe the solution you'd like

AntDesign has a very neat implementation, maybe that can be a starting point.

Describe alternatives you've considered

None

@garritfra garritfra added the feature Feature requests. label Jul 17, 2020
@alesvaupotic
Copy link

Combine pickers with display. Prepare for i18n, manual input, expose machine-readable (like "2020-01-15") formats as well as human-readable display (like "an hour ago").

@claviska
Copy link
Member

claviska commented Jul 17, 2020

The makers of Duet DS rolled their own using Stencil and are rumored to be open sourcing it soon. They spent a lot of time ensuring the component is accessible and lightweight, so I'd like to see if that's something that makes sense to incorporate into Shoelace.

I'm not interested in writing and maintaining a date/time picker from scratch, so this will either be that 👆 or a wrap of a vanilla date picker.

Possible candidates for wrapping:

Feel free to suggest other vanilla, minimal dependency alternatives.

@claviska claviska changed the title Date- and Timepicker Components Date & Time Picker Jul 17, 2020
@alesvaupotic
Copy link

I've used flatpickr before with good results.

@next-direction
Copy link

Used flatpickr too in the past, so far there was nothing I couldn't do with it.

@MisterAnmar
Copy link

in the current browsers the date picker is implemented and getting better.
Why not a calendar that can be extended for events and scheduler. Just a thought.
basic features.
Select start day (Week)
can add a marker on days contain event
has event listener on the day
div container for results after event. possibly by ajax json

@EugeneDae
Copy link

EugeneDae commented Oct 13, 2020

The makers of Duet DS rolled their own using Stencil and are rumored to be open sourcing it soon.

Already: https://github.com/duetds/date-picker

Looks very nice. I'd love to see it in Shoelace.

@matthewp
Copy link

matthewp commented Oct 23, 2020

Quick size comparison (all gzipped):

Litepicker Duet flatpickr
13.9 kB 11.54 kB 14 kB

@claviska
Copy link
Member

I don't think 812 B is accurate for Duet. It may be the size of the lazy loader script, but that doesn't include the component itself.

@matthewp
Copy link

Could be, this was a quick check in curl. I'll look again on the demos.

@matthewp
Copy link

I've updated the table after examining Duet's demo pages.

@devmount
Copy link
Contributor

I'm just using <sl-input type="date"></sl-input> which is working fine for me.

@macta
Copy link

macta commented Mar 25, 2021

I'm just using <sl-input type="date"></sl-input> which is working fine for me.

This should be updated in the docs as it wasn't obvious to me but makes sense in retrospect

@devmount
Copy link
Contributor

I guess it's not in the docs because it's not officially supported by Shoelace, there may be unwanted side effects. But as long as there is no native Shoelace date picker this is enough for me.

@claviska
Copy link
Member

It seems to work fine, but I probably wouldn't use it for anything cross-browser. My concern is that Safari doesn't support it, although it's available in Safari TP (but it's very tiny and hard to use):

CleanShot 2021-03-25 at 07 59 35@2x

I hope they make it bigger. For comparison, here's Firefox:

CleanShot 2021-03-25 at 08 00 02@2x

And Chrome:

CleanShot 2021-03-25 at 08 00 20@2x

Another thing to note is that Chrome is the only browser to implement a visual cue. This is good and bad. It's good that the user is tipped off that it's a date input, but clicking the input will not open the date picker. You have to click on the calendar icon and I'm not sure if it's possible to provide your own.

Both Firefox and Safari open the picker when you focus on the field. This is convenient, but unexpected to users since it looks like a normal text input.

At this point, none of the browsers are really nailing it, so I'm going to keep this feature request open for the sake of offering a better UX. (It's quite an undertaking though, and definitely won't make it before 2.0 stable.)

@devmount
Copy link
Contributor

Thank you Cory for this analysis and your hard work towards stable 2.0 👏🏻. I agree with you, no browser has the perfect solution here.

You have to click on the calendar icon and I'm not sure if it's possible to provide your own

Here an (untested!) idea of providing an own icon using the suffix slot:

<sl-input class="date" type="date">
  <sl-icon name="calendar" slot="suffix"></sl-icon>
</sl-input>
/* hide calendar icon on webkit browsers */
.date::-webkit-calendar-picker-indicator {
  display: none;
}

I'm not sure this works given that you actually need to call ::-webkit-calendar-picker-indicator on .date::part(input). But maybe this helps someone who needs an idea for supporting webkit browsers.

@mcjazzyfunky
Copy link

mcjazzyfunky commented Apr 21, 2021

I personally love the idea of using vanilla js components that can be styled/customized in a way that they are looking 100% shoelaceish afterwards. If date pickers are using select boxes for months and/or years this may be a bit difficult or often not even possible perfectly.
The other day I have seen this vanilla js date picker - I have not spent too much time in evaluating its possiblities, but it looks promising, I guess:
https://raw.githack.com/mymth/vanillajs-datepicker/v1.1.4/demo/plain-css.html
I know it does not have all the features requested above, but at least more features than I personally have ever needed in my work life 😉

Size: 32 kB min / 10 kb min+gzip

@claviska
Copy link
Member

I've been experimenting with <sl-calendar> as a date picker primitive in the calendar branch.

Preview: https://shoelace-7gqkj2lyo-shoelace.vercel.app/components/calendar

There's also activity in the Lit community to build a similar primitive based on Duet Date Picker, so that may be a candidate as well.

@kaiszybiak
Copy link

Hey @claviska 👋🏼 awesome to see progress here 🙂. We are looking forward to use the calendar / date picker component in our projects 🤩.

Do you have a roadmap in mind at which point these components will be included into the next / current branch?

While reading through the past issues and feature requests regarding this topic I noticed you initially had no interest in writing and maintaining a date/time picker from scratch. It seems like you changed your mind as the calendar branch looks like a custom implementation?

How do you plan to decide if shoelace makes use of the Duet Date Picker or calendar branch and what requirements still have to be fulfilled in order to be able to go forward with one option?

Our team would be grateful if you could give us some more insights. We plan to include a calendar / date picker component into our fork in the next weeks and would like to avoid duplicate and diverging work and potentially like to support here and accelerate the development process 🙂🙏🏼

@claviska
Copy link
Member

claviska commented May 5, 2022

The calendar branch is a proof of concept. I may evolve it further, but my current focus is on the new docs website, feature #413, and getting the design tokens stable to prep for the 2.0 release.

There's also some activity in the WC community to build a Lit-based calendar/date picker that libraries can import and reuse, so there could be some duplication of efforts happening that I'd like to avoid. More info here: https://github.com/AlaskaAirlines/auro-calendar/pull/8

All this means that a Shoelace date picker is unlikely to land before 2.0 stable.

How do you plan to decide if shoelace makes use of the Duet Date Picker or calendar branch and what requirements still have to be fulfilled in order to be able to go forward with one option?

Duet is Stencil-based, so it would be a fork. Given my work on the calendar branch, I'd probably just continue with that rather than forking and translating it. There's also a stalled PR #486 that was initially promising, but has many known issues in its current form.

@claviska claviska added the new component Feature request for a new component. Please vote with reactions! label Nov 8, 2022
@shoelace-style shoelace-style locked and limited conversation to collaborators Oct 16, 2023
@claviska claviska converted this issue into discussion #1653 Oct 16, 2023

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

Labels
feature Feature requests. new component Feature request for a new component. Please vote with reactions!
Projects
None yet
Development

No branches or pull requests