playbook_ui 5.4.0 → 5.5.1.pre.alpha3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +1 -0
  3. data/app/pb_kits/playbook/data/menu.yml +2 -0
  4. data/app/pb_kits/playbook/index.js +2 -0
  5. data/app/pb_kits/playbook/packs/examples.js +2 -0
  6. data/app/pb_kits/playbook/packs/samples.js +2 -0
  7. data/app/pb_kits/playbook/pb_body/_body.jsx +2 -2
  8. data/app/pb_kits/playbook/pb_button/_button.jsx +2 -0
  9. data/app/pb_kits/playbook/pb_caption/_caption.scss +2 -2
  10. data/app/pb_kits/playbook/pb_dashboard_value/_dashboard_value.html.erb +3 -2
  11. data/app/pb_kits/playbook/pb_dashboard_value/_dashboard_value.jsx +15 -12
  12. data/app/pb_kits/playbook/pb_date_picker/_date_picker.html.erb +36 -0
  13. data/app/pb_kits/playbook/pb_date_picker/_date_picker.jsx +98 -0
  14. data/app/pb_kits/playbook/pb_date_picker/_date_picker.scss +59 -0
  15. data/app/pb_kits/playbook/pb_date_picker/date_picker.rb +38 -0
  16. data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.js +91 -0
  17. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default.html.erb +1 -0
  18. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default.jsx +12 -0
  19. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default_date.html.erb +24 -0
  20. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default_date.jsx +30 -0
  21. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_disabled.html.erb +43 -0
  22. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_disabled.jsx +48 -0
  23. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_error.html.erb +4 -0
  24. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_error.jsx +13 -0
  25. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_format.html.erb +19 -0
  26. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_format.jsx +25 -0
  27. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_label.html.erb +4 -0
  28. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_label.jsx +13 -0
  29. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_min_max.html.erb +14 -0
  30. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_min_max.jsx +22 -0
  31. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_range.html.erb +4 -0
  32. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_range.jsx +13 -0
  33. data/app/pb_kits/playbook/pb_date_picker/docs/example.yml +23 -0
  34. data/app/pb_kits/playbook/pb_date_picker/docs/index.js +8 -0
  35. data/app/pb_kits/playbook/pb_date_picker/index.js +11 -0
  36. data/app/pb_kits/playbook/pb_filter/docs/_filter_default.html.erb +1 -0
  37. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +1 -0
  38. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form.html.erb +3 -1
  39. data/app/pb_kits/playbook/pb_form/form_builder.rb +1 -0
  40. data/app/pb_kits/playbook/pb_form/form_builder/date_picker_field.rb +15 -0
  41. data/app/pb_kits/playbook/pb_image/_image.jsx +1 -1
  42. data/app/pb_kits/playbook/pb_layout/_layout.scss +16 -0
  43. data/app/pb_kits/playbook/pb_legend/_legend.html.erb +1 -0
  44. data/app/pb_kits/playbook/pb_legend/_legend.jsx +25 -4
  45. data/app/pb_kits/playbook/pb_nav/_vertical_nav.scss +3 -0
  46. data/app/pb_kits/playbook/pb_popover/_popover.html.erb +1 -1
  47. data/app/pb_kits/playbook/pb_popover/_popover.jsx +3 -1
  48. data/app/pb_kits/playbook/pb_popover/_popover.scss +4 -0
  49. data/app/pb_kits/playbook/pb_popover/popover.rb +4 -0
  50. data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.html.erb +2 -2
  51. data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.jsx +24 -10
  52. data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.scss +3 -1
  53. data/app/pb_kits/playbook/pb_time_range_inline/time_range_inline.rb +6 -0
  54. data/app/pb_kits/playbook/pb_title/_title.jsx +7 -4
  55. data/app/pb_kits/playbook/pb_title/_title.scss +7 -0
  56. data/app/pb_kits/playbook/pb_title/_title_mixin.scss +2 -0
  57. data/app/pb_kits/playbook/pb_title/title.rb +4 -1
  58. data/app/pb_kits/playbook/vendor.js +4 -0
  59. data/app/views/layouts/playbook/samples.html.erb +1 -0
  60. data/app/views/playbook/samples/collection_detail/index.html.erb +169 -0
  61. data/app/views/playbook/samples/collection_detail/index.jsx +372 -0
  62. data/lib/playbook/version.rb +1 -1
  63. metadata +31 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 55fa48f865b6b79cacae36a5e14f509a3cfefca7cb380e586657739f130d5e2d
4
- data.tar.gz: d7ac2b958cc908d72c50f2ba27068f9d3ca8c4f4dd8caa158adeeba6af7fc46a
3
+ metadata.gz: 31dff4bfa638b81a994e4ceac1efcab5d6125f9978a00355de496dce4f0353e8
4
+ data.tar.gz: 3e600ee35141d5a5338b8944c76caf17e437556703348c29a45a156ca99848b3
5
5
  SHA512:
6
- metadata.gz: 95ed9a7e3a31996a636129fd43ae63c41ab31f7011044588116b364023b326f9eecf33b40aa2fa9ba81ca269b8b29ba5ef51de7d0dbca9bd2f34efeca03b1150
7
- data.tar.gz: ca78aa387f3d479cd1c1e3ad81f2fc186cb182ab1353376f82baf321aa8afefb001207d1a0669e9bbc18647df210b8fbc48371eca53a6d1295bac6f0b6a351d4
6
+ metadata.gz: 1552e2015fb8dc9bfd47105e6e4fd8999cf7464b39b1cbfb03f799516a0e57431086343f666b8e2ab006805de9bbaa28c9e5dcab739e2e1bb9b3b9f5617cd058
7
+ data.tar.gz: c6fa49ddef9e87c9f59cc6e681337188ec22907dea394bdd4dc82edfed29f7a3505de4c71656df879d76c62875072955148ae1906f95e96b15cdf09792b1bb60
@@ -14,6 +14,7 @@
14
14
  @import 'pb_currency/currency';
15
15
  @import 'pb_dashboard_value/dashboard_value';
16
16
  @import 'pb_date/date';
17
+ @import 'pb_date_picker/date_picker';
17
18
  @import 'pb_date_range_inline/date_range_inline';
18
19
  @import 'pb_date_range_stacked/date_range_stacked';
19
20
  @import 'pb_date_stacked/date_stacked';
@@ -2,6 +2,7 @@ samples:
2
2
  - dashboards
3
3
  - registration
4
4
  - filter_table
5
+ - collection_detail
5
6
 
6
7
  kits:
7
8
  - avatar
@@ -23,6 +24,7 @@ kits:
23
24
  - fixed_confirmation_toast
24
25
  - flex
25
26
  - forms:
27
+ - date_picker
26
28
  - file_upload
27
29
  - form
28
30
  - form_pill
@@ -13,6 +13,7 @@ export Contact from './pb_contact/_contact.jsx'
13
13
  export Currency from './pb_currency/_currency.jsx'
14
14
  export DashboardValue from './pb_dashboard_value/_dashboard_value.jsx'
15
15
  export Date from './pb_date/_date.jsx'
16
+ export DatePicker from './pb_date_picker/_date_picker.jsx'
16
17
  export DateRangeInline from './pb_date_range_inline/_date_range_inline.jsx'
17
18
  export DateRangeStacked from './pb_date_range_stacked/_date_range_stacked.jsx'
18
19
  export DateStacked from './pb_date_stacked/_date_stacked.jsx'
@@ -90,6 +91,7 @@ export dashboardValueSettings from './pb_dashboard_value/dashboardValueSettings'
90
91
 
91
92
  // Other JS/Plugins
92
93
  export pbChart from './plugins/pb_chart.js'
94
+ export datePickerHelper from './pb_date_picker/date_picker_helper.js'
93
95
  export PbTypeahead from './pb_typeahead'
94
96
  export PbPopover from './pb_popover'
95
97
  export PbTable from './pb_table'
@@ -27,6 +27,7 @@ import * as Contact from 'pb_contact/docs'
27
27
  import * as Currency from 'pb_currency/docs'
28
28
  import * as DashboardValue from 'pb_dashboard_value/docs'
29
29
  import * as Date from 'pb_date/docs'
30
+ import * as DatePicker from 'pb_date_picker/docs'
30
31
  import * as DateRangeInline from 'pb_date_range_inline/docs'
31
32
  import * as DateRangeStacked from 'pb_date_range_stacked/docs'
32
33
  import * as DateStacked from 'pb_date_stacked/docs'
@@ -107,6 +108,7 @@ WebpackerReact.setup({
107
108
  ...Currency,
108
109
  ...DashboardValue,
109
110
  ...Date,
111
+ ...DatePicker,
110
112
  ...DateRangeInline,
111
113
  ...DateRangeStacked,
112
114
  ...DateStacked,
@@ -13,7 +13,9 @@ import WebpackerReact from 'webpacker-react'
13
13
  import Dashboards from '../../../views/playbook/samples/dashboards/index.jsx'
14
14
  import FilterTable from '../../../views/playbook/samples/filter_table/index.jsx'
15
15
  import Registration from '../../../views/playbook/samples/registration/index.jsx'
16
+ import CollectionDetail from '../../../views/playbook/samples/collection_detail/index.jsx'
16
17
 
17
18
  WebpackerReact.setup({ Dashboards })
18
19
  WebpackerReact.setup({ FilterTable })
19
20
  WebpackerReact.setup({ Registration })
21
+ WebpackerReact.setup({ CollectionDetail })
@@ -40,11 +40,11 @@ const Body = (props: BodyProps) => {
40
40
  const ariaProps = buildAriaProps(aria)
41
41
  const dataProps = buildDataProps(data)
42
42
  const classes = classnames(
43
- className,
44
43
  buildCss('pb_body_kit', color, status, {
45
44
  dark: dark,
46
45
  }),
47
- spacing(props)
46
+ spacing(props),
47
+ className
48
48
  )
49
49
  const Tag = `${tag}`
50
50
 
@@ -72,6 +72,7 @@ const Button = (props: ButtonPropTypes) => {
72
72
  const {
73
73
  children,
74
74
  className,
75
+ disabled,
75
76
  icon = null,
76
77
  id,
77
78
  loading = false,
@@ -120,6 +121,7 @@ const Button = (props: ButtonPropTypes) => {
120
121
  <button
121
122
  {...buttonAria}
122
123
  className={css}
124
+ disabled={disabled}
123
125
  id={id}
124
126
  onClick={onClick}
125
127
  type={htmlType}
@@ -3,11 +3,11 @@
3
3
  [class^=pb_caption_kit] {
4
4
  @include caption;
5
5
 
6
- &[class*=_lg] {
6
+ &[class^=pb_caption_kit_lg] {
7
7
  @include caption_lg;
8
8
  }
9
9
 
10
- &[class*=_xs] {
10
+ &[class^=pb_caption_kit_xs] {
11
11
  @include caption_xs;
12
12
  }
13
13
 
@@ -1,7 +1,8 @@
1
1
  <%= content_tag(:div,
2
- id: object.id,
2
+ aria: object.aria,
3
+ class: object.classname,
3
4
  data: object.data,
4
- class: object.classname) do %>
5
+ id: object.id) do %>
5
6
  <% if object.stat_label.present? %>
6
7
  <%= pb_rails("body", props: { color: "light", text: object.stat_label } ) %>
7
8
  <% end %>
@@ -2,6 +2,7 @@
2
2
 
3
3
  import React from 'react'
4
4
  import classnames from 'classnames'
5
+ import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
5
6
  import { spacing } from '../utilities/spacing.js'
6
7
  import {
7
8
  Body,
@@ -11,7 +12,9 @@ import {
11
12
 
12
13
  type DashboardValueProps = {
13
14
  align?: 'left' | 'center' | 'right',
15
+ aria?: object,
14
16
  className?: String,
17
+ data?: object,
15
18
  id?: String,
16
19
  statChange?: {
17
20
  change?: String,
@@ -24,27 +27,27 @@ type DashboardValueProps = {
24
27
  }
25
28
  }
26
29
 
27
- const dashboardValueCSS = ({
28
- align = 'left',
29
-
30
- }: DashboardValueProps) => {
31
- const alignStyle = align !== '' ? `_${align}` : ''
32
-
33
- return 'pb_dashboard_value_kit' + alignStyle
34
- }
35
-
36
30
  const DashboardValue = (props: DashboardValueProps) => {
37
31
  const {
32
+ align = 'left',
33
+ aria = {},
38
34
  className,
35
+ data = {},
39
36
  id,
40
- statChange,
37
+ statChange = {},
41
38
  statLabel,
42
- statValue,
39
+ statValue = {},
43
40
  } = props
44
41
 
42
+ const ariaProps = buildAriaProps(aria)
43
+ const dataProps = buildDataProps(data)
44
+ const classes = classnames(buildCss('pb_dashboard_value_kit', align), className, spacing(props))
45
+
45
46
  return (
46
47
  <div
47
- className={classnames(dashboardValueCSS(props), className, spacing(props))}
48
+ {...ariaProps}
49
+ {...dataProps}
50
+ className={classes}
48
51
  id={id}
49
52
  >
50
53
  <If condition={statLabel}>
@@ -0,0 +1,36 @@
1
+ <%= content_tag(:div,
2
+ aria: object.aria,
3
+ class: object.classname + " " + object.error_class,
4
+ data: object.data,
5
+ id: object.id) do %>
6
+ <%= pb_rails("caption", props: { text: object.label }) %>
7
+ <div class="input_wrapper">
8
+ <input
9
+ autocomplete="off"
10
+ id="<%= object.picker_id %>"
11
+ />
12
+ <% if object.error %>
13
+ <%= pb_rails("body", props: {
14
+ status: "negative",
15
+ text: object.error
16
+ }) %>
17
+ <% end %>
18
+ </div>
19
+
20
+ <%= javascript_tag do %>
21
+ document.addEventListener("DOMContentLoaded", () => {
22
+ datePickerHelper({
23
+ defaultDate: "<%= object.default_date %>",
24
+ disableDate: <%=raw object.disable_date %>,
25
+ disableRange: <%=raw object.disable_range.to_json %>,
26
+ disableWeekdays: <%=raw object.disable_weekdays %>,
27
+ format: "<%= object.format %>",
28
+ maxDate: "<%= object.max_date %>",
29
+ minDate: "<%= object.min_date %>",
30
+ mode: "<%= object.mode %>",
31
+ pickerId: "<%= object.picker_id %>",
32
+ propModel: "rails"
33
+ })
34
+ })
35
+ <% end %>
36
+ <% end %>
@@ -0,0 +1,98 @@
1
+ /* @flow */
2
+
3
+ import React, { useEffect } from 'react'
4
+ import classnames from 'classnames'
5
+ import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
6
+ import { spacing } from '../utilities/spacing.js'
7
+ import flatpickr from 'flatpickr'
8
+ import { Body, Caption } from '../'
9
+ import datePickerHelper from './date_picker_helper.js'
10
+
11
+ type DatePickerProps = {
12
+ aria?: object,
13
+ className?: String,
14
+ data?: object,
15
+ defaultDate?: String,
16
+ disableDate?: Array,
17
+ disableRange?: Array,
18
+ disableWeekdays?: Array,
19
+ error?: String,
20
+ format?: String,
21
+ id?: String,
22
+ label?: String,
23
+ maxDate: String,
24
+ minDate: String,
25
+ mode?: String,
26
+ pickerId?: String,
27
+ }
28
+ const DatePicker = (props: DatePickerProps) => {
29
+ const {
30
+ aria = {},
31
+ className,
32
+ data = {},
33
+ defaultDate = '',
34
+ disableDate = null,
35
+ disableRange = null,
36
+ disableWeekdays = null,
37
+ error,
38
+ format = 'm/d/Y',
39
+ id,
40
+ label = 'Date Picker',
41
+ maxDate,
42
+ minDate,
43
+ mode = 'single',
44
+ pickerId,
45
+ } = props
46
+
47
+ const ariaProps = buildAriaProps(aria)
48
+ const dataProps = buildDataProps(data)
49
+ const classes = classnames(
50
+ buildCss('pb_date_picker'),
51
+ className,
52
+ spacing(props),
53
+ error ? 'error' : null,
54
+ )
55
+
56
+ useEffect(() => {
57
+ datePickerHelper({
58
+ defaultDate: defaultDate,
59
+ disableDate: disableDate,
60
+ disableRange: disableRange,
61
+ disableWeekdays: disableWeekdays,
62
+ format: format,
63
+ maxDate: maxDate,
64
+ minDate: minDate,
65
+ mode: mode,
66
+ pickerId: pickerId,
67
+ propModel: 'React',
68
+ })
69
+ }, [])
70
+
71
+ return (
72
+ <div
73
+ {...ariaProps}
74
+ {...dataProps}
75
+ className={classes}
76
+ id={id}
77
+ >
78
+ {className}
79
+ <Caption
80
+ text={label}
81
+ />
82
+ <div className="input_wrapper">
83
+ <input
84
+ autoComplete="off"
85
+ id={pickerId}
86
+ />
87
+ <If condition={error}>
88
+ <Body
89
+ status="negative"
90
+ text={error}
91
+ />
92
+ </If>
93
+ </div>
94
+ </div>
95
+ )
96
+ }
97
+
98
+ export default DatePicker
@@ -0,0 +1,59 @@
1
+ @import '~flatpickr/dist/flatpickr.css';
2
+ @import "../pb_textarea/textarea_mixin";
3
+ @import "../pb_title/title_mixin";
4
+ @import "../tokens/colors";
5
+ @import "../pb_caption/caption_mixin";
6
+
7
+ [class^=pb_date_picker] {
8
+ // input styles
9
+ [class^=pb_caption_kit] {
10
+ margin-bottom: $space_xs;
11
+ display: block;
12
+ }
13
+ .input_wrapper {
14
+ margin-bottom: $space_sm;
15
+
16
+ .flatpickr-wrapper {
17
+ display: block;
18
+ input::placeholder {
19
+ @include pb_body_light;
20
+ }
21
+
22
+ > input:first-child {
23
+ @include pb_textarea_light;
24
+ @include pb_title_4;
25
+ overflow: hidden;
26
+ }
27
+
28
+ input:focus, input:-webkit-autofill:focus {
29
+ @include pb_textarea_focus;
30
+ -webkit-box-shadow: 0 0 0px 1000px $focus_input_light inset;
31
+ transition: background-color 5000s ease-in-out 0s;
32
+ }
33
+ }
34
+ }
35
+
36
+ &.error {
37
+ [class^=pb_body_kit] {
38
+ margin-top: $space_xs / 2;
39
+ }
40
+ .flatpickr-wrapper {
41
+ > input:first-child {
42
+ border-color: $error;
43
+ }
44
+ }
45
+ }
46
+ }
47
+
48
+ // date-picker styles
49
+
50
+ div.flatpickr-weekdays {
51
+ margin-top: 5px;
52
+ }
53
+ span.flatpickr-weekday {
54
+ @include caption;
55
+ }
56
+
57
+ .pb_popover_body {
58
+ overflow: visible !important;
59
+ }
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module PbDatePicker
5
+ class DatePicker
6
+ include Playbook::Props
7
+
8
+ partial "pb_date_picker/date_picker"
9
+
10
+ prop :default_date, type: Playbook::Props::String,
11
+ default: ""
12
+ prop :disable_date, type: Playbook::Props::Array,
13
+ default: []
14
+ prop :disable_range, type: Playbook::Props::Array,
15
+ default: []
16
+ prop :disable_weekdays, type: Playbook::Props::Array,
17
+ default: []
18
+ prop :error, type: Playbook::Props::String
19
+ prop :format, type: Playbook::Props::String,
20
+ default: "m/d/Y"
21
+ prop :label, type: Playbook::Props::String,
22
+ default: "Date Picker"
23
+ prop :max_date, type: Playbook::Props::String
24
+ prop :min_date, type: Playbook::Props::String
25
+ prop :mode, type: Playbook::Props::String,
26
+ default: "single"
27
+ prop :picker_id, type: Playbook::Props::String
28
+
29
+ def classname
30
+ generate_classname("pb_date_picker")
31
+ end
32
+
33
+ def error_class
34
+ error ? "error" : ""
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,91 @@
1
+ import flatpickr from 'flatpickr'
2
+
3
+ const datePickerHelper = (config) => {
4
+ const {
5
+ defaultDate,
6
+ disableDate,
7
+ disableRange,
8
+ disableWeekdays,
9
+ format,
10
+ maxDate,
11
+ minDate,
12
+ mode,
13
+ pickerId,
14
+ propModel,
15
+ } = config
16
+
17
+ const defaultDateGetter = () => {
18
+ if (defaultDate !== '') {
19
+ if (propModel === 'rails' && defaultDate.includes('[') == true) {
20
+ return JSON.parse(defaultDate.replace(/&quot;/g, '"'))
21
+ } else if (defaultDate === 'blank') {
22
+ return ''
23
+ } else {
24
+ return defaultDate
25
+ }
26
+ }
27
+ if (mode === 'single' && defaultDate === '') {
28
+ return new Date()
29
+ } else if (mode === 'range' && defaultDate === '') {
30
+ const today = new Date()
31
+ const tomorrow = new Date(today)
32
+ tomorrow.setDate(tomorrow.getDate() + 1)
33
+ return [today, tomorrow]
34
+ }
35
+ }
36
+ const disabledParser = () => {
37
+ if (disableDate && disableDate.length > 0) {
38
+ return disableDate
39
+ } else if (disableRange && disableRange.length > 0) {
40
+ return disableRange
41
+ } else {
42
+ return []
43
+ }
44
+ }
45
+
46
+ flatpickr(`#${pickerId}`, {
47
+ allowInput: true,
48
+ dateFormat: format,
49
+ defaultDate: defaultDateGetter(),
50
+ disable: disableWeekdays && disableWeekdays.length > 0 ? [
51
+ (date) => {
52
+ const weekdayObj = {
53
+ Sunday: 0,
54
+ Monday: 1,
55
+ Tuesday: 2,
56
+ Wednesday: 3,
57
+ Thursday: 4,
58
+ Friday: 5,
59
+ Saturday: 6,
60
+ }
61
+ return (
62
+ // try to refactor with for loop
63
+ date.getDay() === weekdayObj[disableWeekdays[0]] ||
64
+ date.getDay() === weekdayObj[disableWeekdays[1]] ||
65
+ date.getDay() === weekdayObj[disableWeekdays[2]] ||
66
+ date.getDay() === weekdayObj[disableWeekdays[3]] ||
67
+ date.getDay() === weekdayObj[disableWeekdays[4]] ||
68
+ date.getDay() === weekdayObj[disableWeekdays[5]] ||
69
+ date.getDay() === weekdayObj[disableWeekdays[6]]
70
+ )
71
+ },
72
+ ] : disabledParser(),
73
+ maxDate: maxDate,
74
+ minDate: minDate,
75
+ mode: mode,
76
+ static: true,
77
+ })
78
+
79
+ document.querySelector(`#${pickerId}`).addEventListener('input', (e) => {
80
+ const picker = document.querySelector(`#${pickerId}`)._flatpickr
81
+ picker.input.setAttribute('value', e.target.value)
82
+ const variant = picker.config.mode
83
+ if (variant === 'single' && e.target.value.split('').length === 10) {
84
+ picker.setDate(e.target.value)
85
+ } else if (variant === 'range' && e.target.value.split('').length === 24) {
86
+ picker.setDate(e.target.value)
87
+ }
88
+ })
89
+ }
90
+
91
+ export default datePickerHelper