Date Picker

Component

Interactive examples and API documentation

Basic
A basic date picker component.
Date Picker (default)
2026
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
January
January
February
March
April
May
June
July
August
September
October
November
December
Su Mo Tu We Th Fr Sa
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Week Picker
2026
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
January
January
February
March
April
May
June
July
August
September
October
November
December
Su Mo Tu We Th Fr Sa
1
28
29
30
31
1
2
3
2
4
5
6
7
8
9
10
3
11
12
13
14
15
16
17
4
18
19
20
21
22
23
24
5
25
26
27
28
29
30
31
Month Picker
2026
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
Quarter Picker
2026
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
Q1
Q2
Q3
Q4
Year Picker
2020-2029
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
Code
<%= render Hakumi::Space::Component.new(direction: :vertical, size: :large) do %>
  <%= render Hakumi::Space::Component.new(direction: :vertical, size: :small) do %>
    <span style="font-weight: 500;">Date Picker (default)</span>
    <%= render Hakumi::DatePicker::Component.new(
      name: "date_picker",
      picker: :date,
      placeholder: "Select date"
    ) %>
  <% end %>

  <%= render Hakumi::Space::Component.new(direction: :vertical, size: :small) do %>
    <span style="font-weight: 500;">Week Picker</span>
    <%= render Hakumi::DatePicker::Component.new(
      name: "week_picker",
      picker: :week,
      placeholder: "Select week"
    ) %>
  <% end %>

  <%= render Hakumi::Space::Component.new(direction: :vertical, size: :small) do %>
    <span style="font-weight: 500;">Month Picker</span>
    <%= render Hakumi::DatePicker::Component.new(
      name: "month_picker",
      picker: :month,
      placeholder: "Select month"
    ) %>
  <% end %>

  <%= render Hakumi::Space::Component.new(direction: :vertical, size: :small) do %>
    <span style="font-weight: 500;">Quarter Picker</span>
    <%= render Hakumi::DatePicker::Component.new(
      name: "quarter_picker",
      picker: :quarter,
      placeholder: "Select quarter"
    ) %>
  <% end %>

  <%= render Hakumi::Space::Component.new(direction: :vertical, size: :small) do %>
    <span style="font-weight: 500;">Year Picker</span>
    <%= render Hakumi::DatePicker::Component.new(
      name: "year_picker",
      picker: :year,
      placeholder: "Select year"
    ) %>
  <% end %>
<% end %>
DateTime Picker
Date picker with time selection (show_time: true).
2026
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
January
January
February
March
April
May
June
July
August
September
October
November
December
Su Mo Tu We Th Fr Sa
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Hours
  • 00
  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
Minutes
  • 00
  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
Seconds
  • 00
  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
2026
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
February
January
February
March
April
May
June
July
August
September
October
November
December
Su Mo Tu We Th Fr Sa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Hours
  • 00
  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
Minutes
  • 00
  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
Seconds
  • 00
  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
Code
<%= render Hakumi::Card::Component.new do %>
  <%= render Hakumi::Space::Component.new(direction: :vertical, size: :middle, block: true) do %>
    <%= render Hakumi::DatePicker::Component.new(
      name: "event_datetime",
      placeholder: "Select date and time",
      show_time: true,
      allow_clear: true
    ) %>

    <%= render Hakumi::DatePicker::Component.new(
      name: "meeting_datetime",
      placeholder: "Select meeting date and time",
      value: "2026-02-15 14:30:00",
      show_time: true,
      allow_clear: true
    ) %>
  <% end %>
<% end %>
Custom Format
Customize the display format using Day.js tokens (e.g. DD/MM/YYYY, MMMM DD, YYYY). The internal value always uses ISO format for Rails compatibility.
US Format (MM/DD/YYYY)
2026
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
January
January
February
March
April
May
June
July
August
September
October
November
December
Su Mo Tu We Th Fr Sa
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
European Format (DD/MM/YYYY)
2026
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
January
January
February
March
April
May
June
July
August
September
October
November
December
Su Mo Tu We Th Fr Sa
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Long Format (MMMM DD, YYYY)
2026
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
January
January
February
March
April
May
June
July
August
September
October
November
December
Su Mo Tu We Th Fr Sa
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Custom DateTime (DD/MM/YYYY HH:mm)
2026
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
January
January
February
March
April
May
June
July
August
September
October
November
December
Su Mo Tu We Th Fr Sa
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Hours
  • 00
  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
Minutes
  • 00
  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
12-hour Format (MM/DD/YYYY hh:mm A)
2026
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
January
January
February
March
April
May
June
July
August
September
October
November
December
Su Mo Tu We Th Fr Sa
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Hours
  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12
Minutes
  • 00
  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
Period
  • AM
  • PM
Code
<%= render Hakumi::Space::Component.new(direction: :vertical, size: :large) do %>
  <%= render Hakumi::Space::Component.new(direction: :vertical, size: :small) do %>
    <span style="font-weight: 500;">US Format (MM/DD/YYYY)</span>
    <%= render Hakumi::DatePicker::Component.new(
      name: "us_date",
      value: "2026-01-15",
      display_format: "MM/DD/YYYY",
      placeholder: "MM/DD/YYYY"
    ) %>
  <% end %>

  <%= render Hakumi::Space::Component.new(direction: :vertical, size: :small) do %>
    <span style="font-weight: 500;">European Format (DD/MM/YYYY)</span>
    <%= render Hakumi::DatePicker::Component.new(
      name: "eu_date",
      value: "2026-01-15",
      display_format: "DD/MM/YYYY",
      placeholder: "DD/MM/YYYY"
    ) %>
  <% end %>

  <%= render Hakumi::Space::Component.new(direction: :vertical, size: :small) do %>
    <span style="font-weight: 500;">Long Format (MMMM DD, YYYY)</span>
    <%= render Hakumi::DatePicker::Component.new(
      name: "long_date",
      value: "2026-01-15",
      display_format: "MMMM DD, YYYY",
      placeholder: "Select date"
    ) %>
  <% end %>

  <%= render Hakumi::Space::Component.new(direction: :vertical, size: :small) do %>
    <span style="font-weight: 500;">Custom DateTime (DD/MM/YYYY HH:mm)</span>
    <%= render Hakumi::DatePicker::Component.new(
      name: "custom_datetime",
      value: "2026-01-15 14:30:00",
      display_format: "DD/MM/YYYY HH:mm",
      show_time: true,
      show_seconds: false,
      placeholder: "Select date and time"
    ) %>
  <% end %>

  <%= render Hakumi::Space::Component.new(direction: :vertical, size: :small) do %>
    <span style="font-weight: 500;">12-hour Format (MM/DD/YYYY hh:mm A)</span>
    <%= render Hakumi::DatePicker::Component.new(
      name: "twelve_hour_datetime",
      value: "2026-01-15 14:30:00",
      display_format: "MM/DD/YYYY hh:mm A",
      show_time: true,
      show_seconds: false,
      placeholder: "Select date and time"
    ) %>
  <% end %>
<% end %>
Range Picker
Select a start and end date.
2026
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
January
January
February
March
April
May
June
July
August
September
October
November
December
Su Mo Tu We Th Fr Sa
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2026
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
January
January
February
March
April
May
June
July
August
September
October
November
December
Su Mo Tu We Th Fr Sa
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Code
<%= render Hakumi::DatePicker::RangePicker.new(
  name: "date_range",
  start_value: Date.today - 3,
  end_value: Date.today + 3,
  allow_clear: true
) %>
Sizes
Small, middle, and large date pickers.
2026
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
January
January
February
March
April
May
June
July
August
September
October
November
December
Su Mo Tu We Th Fr Sa
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2026
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
January
January
February
March
April
May
June
July
August
September
October
November
December
Su Mo Tu We Th Fr Sa
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2026
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
January
January
February
March
April
May
June
July
August
September
October
November
December
Su Mo Tu We Th Fr Sa
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Code
<%= render Hakumi::Space::Component.new(direction: :vertical, size: :small) do %>
  <%= render Hakumi::DatePicker::Component.new(name: "date_small", size: :small, placeholder: "Small") %>
  <%= render Hakumi::DatePicker::Component.new(name: "date_middle", size: :middle, placeholder: "Middle") %>
  <%= render Hakumi::DatePicker::Component.new(name: "date_large", size: :large, placeholder: "Large") %>
<% end %>
Allow Clear
Allow clearing the selected date.
2026
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
January
January
February
March
April
May
June
July
August
September
October
November
December
Su Mo Tu We Th Fr Sa
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Code
<%= render Hakumi::DatePicker::Component.new(
  name: "clearable_date",
  value: Date.today,
  allow_clear: true
) %>
Disabled
Disabled date picker state.
2026
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
January
January
February
March
April
May
June
July
August
September
October
November
December
Su Mo Tu We Th Fr Sa
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Code
<%= render Hakumi::DatePicker::Component.new(
  name: "disabled_date",
  value: Date.today,
  disabled: true
) %>

DatePicker API

Prop Type Default Description
value Date or String - Controlled selected value (always stored in ISO format)
default_value Date or String - Initial value
display_format String auto Display format using Day.js tokens (e.g. 'DD/MM/YYYY', 'MMMM DD, YYYY')
format String auto Legacy: Display format using strftime (e.g. '%d/%m/%Y'). Use display_format instead.
picker :date | :week | :month | :quarter | :year :date Picker mode
show_time Boolean false Display time portion
show_seconds Boolean nil Show seconds in time picker (defaults to show_time value)
disabled Boolean false Disable the picker
disabled_date Proc - Function to disable dates. Receives date argument.
allow_clear Boolean false Allow clearing the selected value
placeholder String or Array Select date Input placeholder text
size :small | :middle | :large :middle Picker size
bordered Boolean true Show border
name String auto Form input name
label String - Label for form mode
caption String - Help text
errors Array [] Validation errors
standalone Boolean true Render without form item wrapper

RangePicker API

Prop Type Default Description
start_value Date or String - Start date value
end_value Date or String - End date value
placeholder Array ['Start date', 'End date'] Placeholders for start/end inputs

JavaScript API (element.hakumiComponent.api)

Prop Type Default Description
getValue() Function - Returns current value or { startValue, endValue } for ranges
setValue(value) Function - Sets the value (string or { startValue, endValue })
open() Function - Open the picker panel
close() Function - Close the picker panel
toggle() Function - Toggle the picker panel
clear() Function - Clear the selection
focus() Function - Focus the input
blur() Function - Blur the input
setDisabledDate(fn) Function - Set a function to disable dates

Events

Prop Type Default Description
hakumi:date-picker:change Event - Fired on value change. Detail: { value } or { startValue, endValue }
hakumi:date-picker:open-change Event - Fired when panel opens/closes. Detail: { open }