playbook_ui 6.4.2 → 6.6.1
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.
- checksums.yaml +4 -4
- data/README.md +3 -4
- data/app/pb_kits/playbook/_playbook.scss +1 -0
- data/app/pb_kits/playbook/data/menu.yml +1 -0
- data/app/pb_kits/playbook/index.js +3 -0
- data/app/pb_kits/playbook/packs/examples.js +4 -1
- data/app/pb_kits/playbook/packs/site_styles/docs/_kit_doc.scss +6 -0
- data/app/pb_kits/playbook/pb_button/_button.jsx +1 -0
- data/app/pb_kits/playbook/pb_button/_button_mixins.scss +1 -1
- data/app/pb_kits/playbook/pb_button/docs/_button_default.jsx +3 -7
- data/app/pb_kits/playbook/pb_button/docs/_button_default_dark.jsx +3 -0
- data/app/pb_kits/playbook/pb_button/docs/_button_link.jsx +2 -0
- data/app/pb_kits/playbook/pb_button/docs/_button_loading.jsx +2 -0
- data/app/pb_kits/playbook/pb_circle_icon_button/docs/_circle_icon_button_link.html.erb +2 -1
- data/app/pb_kits/playbook/pb_date/date.rb +2 -1
- data/app/pb_kits/playbook/pb_date/docs/_date_default.html.erb +8 -1
- data/app/pb_kits/playbook/pb_date/docs/_date_timezone.html.erb +51 -0
- data/app/pb_kits/playbook/pb_date/docs/_date_timezone.md +6 -0
- data/app/pb_kits/playbook/pb_date/docs/_description.md +2 -0
- data/app/pb_kits/playbook/pb_date/docs/example.yml +1 -0
- data/app/pb_kits/playbook/pb_date_picker/_date_picker.html.erb +39 -0
- data/app/pb_kits/playbook/pb_date_picker/_date_picker.jsx +149 -0
- data/app/pb_kits/playbook/pb_date_picker/_date_picker.scss +33 -0
- data/app/pb_kits/playbook/pb_date_picker/date_picker.rb +85 -0
- data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.js +165 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_allow_input.html.erb +4 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_allow_input.jsx +13 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_allow_input.md +1 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_dark.html.erb +4 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_dark.jsx +13 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default.html.erb +1 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default.jsx +12 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default_date.html.erb +24 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default_date.jsx +30 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_disabled.html.erb +43 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_disabled.jsx +48 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_error.html.erb +4 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_error.jsx +13 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_format.html.erb +19 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_format.jsx +25 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_format.md +1 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_hide_icon.html.erb +4 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_hide_icon.jsx +13 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_hooks.html.erb +37 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_hooks.jsx +37 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_hooks.md +1 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_input.html.erb +26 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_input.jsx +32 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_input.md +3 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_label.html.erb +9 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_label.jsx +17 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_label.md +1 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_min_max.html.erb +14 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_min_max.jsx +22 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_range.html.erb +4 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_range.jsx +13 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_year_range.html.erb +7 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_year_range.jsx +16 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_year_range.md +1 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_description.md +7 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/example.yml +35 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/index.js +14 -0
- data/app/pb_kits/playbook/pb_date_picker/sass_partials/_calendar_input_icon.scss +33 -0
- data/app/pb_kits/playbook/pb_date_picker/sass_partials/_day_styles.scss +53 -0
- data/app/pb_kits/playbook/pb_date_picker/sass_partials/_flatpickr_styles.scss +785 -0
- data/app/pb_kits/playbook/pb_date_picker/sass_partials/_header_styles.scss +108 -0
- data/app/pb_kits/playbook/pb_date_picker/sass_partials/_overrides.scss +44 -0
- data/app/pb_kits/playbook/pb_filter/_filter.scss +1 -1
- data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +1 -0
- data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +1 -0
- data/app/pb_kits/playbook/pb_form/docs/_form_simple_form.html.erb +2 -0
- data/app/pb_kits/playbook/pb_form/docs/_form_simple_form_validate.html.erb +2 -0
- data/app/pb_kits/playbook/pb_form/form_builder.rb +1 -0
- data/app/pb_kits/playbook/pb_form/form_builder/date_picker_field.rb +20 -0
- data/app/pb_kits/playbook/pb_progress_step/progress_step.rb +2 -2
- data/app/pb_kits/playbook/pb_progress_step/progress_step_item.rb +0 -1
- data/app/pb_kits/playbook/pb_table/table.rb +3 -3
- data/app/pb_kits/playbook/pb_text_input/_text_input.html.erb +1 -0
- data/app/pb_kits/playbook/pb_text_input/_text_input.jsx +21 -17
- data/app/pb_kits/playbook/pb_text_input/_text_input.scss +17 -8
- data/app/pb_kits/playbook/pb_text_input/text_input.rb +2 -0
- data/app/pb_kits/playbook/pb_time/_time.html.erb +23 -17
- data/app/pb_kits/playbook/pb_time/_time.jsx +20 -11
- data/app/pb_kits/playbook/pb_time/_time.scss +16 -8
- data/app/pb_kits/playbook/pb_time/docs/_time_align.html.erb +18 -0
- data/app/pb_kits/playbook/pb_time/docs/_time_align.jsx +3 -3
- data/app/pb_kits/playbook/pb_time/docs/_time_dark.html.erb +70 -0
- data/app/pb_kits/playbook/pb_time/docs/_time_dark.jsx +1 -6
- data/app/pb_kits/playbook/pb_time/docs/_time_default.html.erb +47 -3
- data/app/pb_kits/playbook/pb_time/docs/_time_default.jsx +33 -4
- data/app/pb_kits/playbook/pb_time/docs/_time_sizes.html.erb +11 -0
- data/app/pb_kits/playbook/pb_time/docs/_time_sizes.jsx +19 -0
- data/app/pb_kits/playbook/pb_time/docs/_time_timestamp.html.erb +3 -1
- data/app/pb_kits/playbook/pb_time/docs/_time_timestamp.jsx +0 -7
- data/app/pb_kits/playbook/pb_time/docs/_time_timezone.html.erb +37 -0
- data/app/pb_kits/playbook/pb_time/docs/_time_timezone.jsx +12 -14
- data/app/pb_kits/playbook/pb_time/docs/example.yml +7 -2
- data/app/pb_kits/playbook/pb_time/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_time/time.rb +14 -2
- data/app/pb_kits/playbook/pb_typeahead/_typeahead.jsx +60 -0
- data/app/pb_kits/playbook/pb_typeahead/_typeahead.scss +20 -3
- data/app/pb_kits/playbook/pb_typeahead/components/Control.jsx +30 -0
- data/app/pb_kits/playbook/pb_typeahead/components/IndicatorsContainer.jsx +13 -0
- data/app/pb_kits/playbook/pb_typeahead/components/MenuList.jsx +12 -0
- data/app/pb_kits/playbook/pb_typeahead/components/MultiValue.jsx +51 -0
- data/app/pb_kits/playbook/pb_typeahead/components/Option.jsx +34 -0
- data/app/pb_kits/playbook/pb_typeahead/components/Placeholder.jsx +13 -0
- data/app/pb_kits/playbook/pb_typeahead/components/ValueContainer.jsx +13 -0
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_default.jsx +22 -0
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.jsx +29 -0
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async.jsx +84 -0
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async_summary.jsx +45 -0
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async_users.jsx +101 -0
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_summary.jsx +27 -0
- data/app/pb_kits/playbook/pb_typeahead/docs/example.yml +8 -2
- data/app/pb_kits/playbook/pb_typeahead/docs/index.js +4 -0
- data/app/pb_kits/playbook/tokens/_typography.scss +3 -3
- data/app/pb_kits/playbook/vendor.js +6 -0
- data/lib/playbook/version.rb +1 -1
- metadata +73 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7aacc8a728ea6fd1e2c6b488b60372046190c1b8bc352c574156b70504f4d467
|
|
4
|
+
data.tar.gz: 8ea081b09cab41543fb85684ff221923c771378dc36aca624ebe267da990c336
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1378adf616298af5873b341f3097cb8c59619c566f9d98eebfe179514f1da519083cbc47b708193054123ad196c0bfff8d98b6be6e7a9b3828241b6bcf916a96
|
|
7
|
+
data.tar.gz: b66e0d31fce9704a5470168ba435a91ac5e82554e1957c1d5852f50dbc09b18536606b8461a647eaa9f49e8608a15b4d9b31d40da07ceef75de1098c17a4029f
|
data/README.md
CHANGED
|
@@ -35,10 +35,9 @@ To run the tests, do `bin/test`. To launch a shell in the container run `make sh
|
|
|
35
35
|
|
|
36
36
|
See [docs/upgrade-guide](./docs/upgrade-guide)
|
|
37
37
|
|
|
38
|
-
###
|
|
38
|
+
### Releases
|
|
39
39
|
|
|
40
|
-
* [
|
|
41
|
-
* [Creating Releases](https://github.com/powerhome/playbook/wiki/Releasing-a-New-Version)
|
|
40
|
+
* [Playbook Releases](https://github.com/powerhome/playbook/wiki/Playbook-Releases)
|
|
42
41
|
|
|
43
42
|
### Development Environment
|
|
44
43
|
|
|
@@ -63,4 +62,4 @@ See [docs/upgrade-guide](./docs/upgrade-guide)
|
|
|
63
62
|
5. When finished, inside of the directory you want to test with playbook, run `yarn unlink playbook-ui`.
|
|
64
63
|
6. Inside of your Playbook repository, run `yarn unlink`.
|
|
65
64
|
|
|
66
|
-
Keep in mind: Styles are brought in from playbook through the rails gem, so you will not be able to test scss updates with yarn linking.
|
|
65
|
+
Keep in mind: Styles are brought in from playbook through the rails gem, so you will not be able to test scss updates with yarn linking.
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
@import 'pb_currency/currency';
|
|
16
16
|
@import 'pb_dashboard_value/dashboard_value';
|
|
17
17
|
@import 'pb_date/date';
|
|
18
|
+
@import 'pb_date_picker/date_picker';
|
|
18
19
|
@import 'pb_date_range_inline/date_range_inline';
|
|
19
20
|
@import 'pb_date_range_stacked/date_range_stacked';
|
|
20
21
|
@import 'pb_date_stacked/date_stacked';
|
|
@@ -14,6 +14,7 @@ export Contact from './pb_contact/_contact.jsx'
|
|
|
14
14
|
export Currency from './pb_currency/_currency.jsx'
|
|
15
15
|
export DashboardValue from './pb_dashboard_value/_dashboard_value.jsx'
|
|
16
16
|
export Date from './pb_date/_date.jsx'
|
|
17
|
+
export DatePicker from './pb_date_picker/_date_picker.jsx'
|
|
17
18
|
export DateRangeInline from './pb_date_range_inline/_date_range_inline.jsx'
|
|
18
19
|
export DateRangeStacked from './pb_date_range_stacked/_date_range_stacked.jsx'
|
|
19
20
|
export DateStacked from './pb_date_stacked/_date_stacked.jsx'
|
|
@@ -79,6 +80,7 @@ export Title from './pb_title/_title.jsx'
|
|
|
79
80
|
export TitleCount from './pb_title_count/_title_count.jsx'
|
|
80
81
|
export TitleDetail from './pb_title_detail/_title_detail.jsx'
|
|
81
82
|
export Toggle from './pb_toggle/_toggle.jsx'
|
|
83
|
+
export Typeahead from './pb_typeahead/_typeahead.jsx'
|
|
82
84
|
export User from './pb_user/_user.jsx'
|
|
83
85
|
export UserBadge from './pb_user_badge/_user_badge.jsx'
|
|
84
86
|
export WeekdayStacked from './pb_weekday_stacked/_weekday_stacked.jsx'
|
|
@@ -91,6 +93,7 @@ export dashboardValueSettings from './pb_dashboard_value/dashboardValueSettings'
|
|
|
91
93
|
|
|
92
94
|
// Other JS/Plugins
|
|
93
95
|
export pbChart from './plugins/pb_chart.js'
|
|
96
|
+
export datePickerHelper from './pb_date_picker/date_picker_helper.js'
|
|
94
97
|
export PbTypeahead from './pb_typeahead'
|
|
95
98
|
export PbPopover from './pb_popover'
|
|
96
99
|
export PbTable from './pb_table'
|
|
@@ -28,6 +28,7 @@ import * as Contact from 'pb_contact/docs'
|
|
|
28
28
|
import * as Currency from 'pb_currency/docs'
|
|
29
29
|
import * as DashboardValue from 'pb_dashboard_value/docs'
|
|
30
30
|
import * as Date from 'pb_date/docs'
|
|
31
|
+
import * as DatePicker from 'pb_date_picker/docs'
|
|
31
32
|
import * as DateRangeInline from 'pb_date_range_inline/docs'
|
|
32
33
|
import * as DateRangeStacked from 'pb_date_range_stacked/docs'
|
|
33
34
|
import * as DateStacked from 'pb_date_stacked/docs'
|
|
@@ -87,6 +88,7 @@ import * as TimeRangeInline from 'pb_time_range_inline/docs'
|
|
|
87
88
|
import * as Title from 'pb_title/docs'
|
|
88
89
|
import * as TitleCount from 'pb_title_count/docs'
|
|
89
90
|
import * as TitleDetail from 'pb_title_detail/docs'
|
|
91
|
+
import * as Typeahead from 'pb_typeahead/docs'
|
|
90
92
|
import * as Toggle from 'pb_toggle/docs'
|
|
91
93
|
import * as User from 'pb_user/docs'
|
|
92
94
|
import * as UserBadge from 'pb_user_badge/docs'
|
|
@@ -108,6 +110,7 @@ WebpackerReact.setup({
|
|
|
108
110
|
...Currency,
|
|
109
111
|
...DashboardValue,
|
|
110
112
|
...Date,
|
|
113
|
+
...DatePicker,
|
|
111
114
|
...DateRangeInline,
|
|
112
115
|
...DateRangeStacked,
|
|
113
116
|
...DateStacked,
|
|
@@ -167,9 +170,9 @@ WebpackerReact.setup({
|
|
|
167
170
|
...Title,
|
|
168
171
|
...TitleCount,
|
|
169
172
|
...TitleDetail,
|
|
173
|
+
...Typeahead,
|
|
170
174
|
...Toggle,
|
|
171
175
|
...User,
|
|
172
176
|
...UserBadge,
|
|
173
177
|
...WeekdayStacked,
|
|
174
178
|
})
|
|
175
|
-
|
|
@@ -4,26 +4,22 @@ import { Button } from '../../'
|
|
|
4
4
|
const ButtonDefault = () => (
|
|
5
5
|
<div>
|
|
6
6
|
<Button
|
|
7
|
-
dark
|
|
8
|
-
marginRight="xl"
|
|
9
7
|
onClick={() => alert('button clicked!')}
|
|
10
8
|
text="Button Primary"
|
|
11
9
|
/>
|
|
10
|
+
{' '}
|
|
12
11
|
<Button
|
|
13
12
|
onClick={() => alert('button clicked!')}
|
|
14
13
|
text="Button Secondary"
|
|
15
14
|
variant="secondary"
|
|
16
15
|
/>
|
|
16
|
+
{' '}
|
|
17
17
|
<Button
|
|
18
18
|
onClick={() => alert('button clicked!')}
|
|
19
19
|
text="Button Link"
|
|
20
20
|
variant="link"
|
|
21
21
|
/>
|
|
22
|
-
|
|
23
|
-
disabled
|
|
24
|
-
onClick={() => alert('button clicked!')}
|
|
25
|
-
text="Button Disabled"
|
|
26
|
-
/>
|
|
22
|
+
{' '}
|
|
27
23
|
<Button
|
|
28
24
|
disabled
|
|
29
25
|
onClick={() => alert('button clicked!')}
|
|
@@ -7,16 +7,19 @@ const ButtonDefaultDark = () => (
|
|
|
7
7
|
dark
|
|
8
8
|
text="Button Primary"
|
|
9
9
|
/>
|
|
10
|
+
{' '}
|
|
10
11
|
<Button
|
|
11
12
|
dark
|
|
12
13
|
text="Button Secondary"
|
|
13
14
|
variant="secondary"
|
|
14
15
|
/>
|
|
16
|
+
{' '}
|
|
15
17
|
<Button
|
|
16
18
|
dark
|
|
17
19
|
text="Button Link"
|
|
18
20
|
variant="link"
|
|
19
21
|
/>
|
|
22
|
+
{' '}
|
|
20
23
|
<Button
|
|
21
24
|
dark
|
|
22
25
|
disabled
|
|
@@ -13,6 +13,7 @@ module Playbook
|
|
|
13
13
|
prop :size, type: Playbook::Props::Enum,
|
|
14
14
|
values: %w[lg sm xs],
|
|
15
15
|
default: "sm"
|
|
16
|
+
prop :timezone, default: "America/New_York"
|
|
16
17
|
|
|
17
18
|
def classname
|
|
18
19
|
generate_classname("pb_date_kit")
|
|
@@ -33,7 +34,7 @@ module Playbook
|
|
|
33
34
|
private
|
|
34
35
|
|
|
35
36
|
def pb_date_time
|
|
36
|
-
Playbook::PbKit::PbDateTime.new(date)
|
|
37
|
+
Playbook::PbKit::PbDateTime.new(date, timezone)
|
|
37
38
|
end
|
|
38
39
|
end
|
|
39
40
|
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
<%= pb_rails("caption", props: { text: "East Coast (Default)"}) %>
|
|
2
|
+
<%= pb_rails("date", props: {
|
|
3
|
+
date: DateTime.now,
|
|
4
|
+
timezone: "America/New_York"
|
|
5
|
+
}) %>
|
|
6
|
+
|
|
7
|
+
<br>
|
|
8
|
+
|
|
9
|
+
<%= pb_rails("caption", props: { text: "West Coast"}) %>
|
|
10
|
+
<%= pb_rails("date", props: {
|
|
11
|
+
date: DateTime.now,
|
|
12
|
+
timezone: "America/Los_Angeles"
|
|
13
|
+
}) %>
|
|
14
|
+
|
|
15
|
+
<br>
|
|
16
|
+
|
|
17
|
+
<%= pb_rails("caption", props: { text: "Toyko, Japan"}) %>
|
|
18
|
+
<%= pb_rails("date", props: {
|
|
19
|
+
date: DateTime.now,
|
|
20
|
+
timezone: "Asia/Tokyo"
|
|
21
|
+
}) %>
|
|
22
|
+
|
|
23
|
+
<br>
|
|
24
|
+
|
|
25
|
+
<%= pb_rails("caption", props: { text: "Anti-pattern example"}) %>
|
|
26
|
+
|
|
27
|
+
<%= pb_rails("date", props: {
|
|
28
|
+
date: Date.today,
|
|
29
|
+
timezone: "Australia/Sydney"
|
|
30
|
+
}) %>
|
|
31
|
+
<%= pb_rails("body", props: { text: "Date.today ignores Timezone"}) %>
|
|
32
|
+
|
|
33
|
+
<br>
|
|
34
|
+
|
|
35
|
+
<%= pb_rails("caption", props: { text: "DateTime respects Timezone"}) %>
|
|
36
|
+
|
|
37
|
+
<%= pb_rails("date", props: {
|
|
38
|
+
date: DateTime.now,
|
|
39
|
+
timezone: "Australia/Sydney"
|
|
40
|
+
}) %>
|
|
41
|
+
|
|
42
|
+
<%= pb_rails("body", props: { text: "'.now' in Australia is tomorrow (if you're EST after 10am)"}) %>
|
|
43
|
+
|
|
44
|
+
<br>
|
|
45
|
+
|
|
46
|
+
<%= pb_rails("caption", props: { text: "String Dates"}) %>
|
|
47
|
+
<%= pb_rails("date", props: {
|
|
48
|
+
date: "2012-08-02T00:49:29Z",
|
|
49
|
+
}) %>
|
|
50
|
+
|
|
51
|
+
<%= pb_rails("body", props: { text: "Defaults to UTC, then changes due to EST Timezone."}) %>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
Depending on the data you send to the `date` prop you might have unexpected results due to ruby `Date` and `DateTime` classes.
|
|
2
|
+
|
|
3
|
+
Don't care about timezones? Use `Date`.
|
|
4
|
+
|
|
5
|
+
If you need a date that recognizes a timezone, especially when paired with the [Time kit](/kits/time), leverage `DateTime`.
|
|
6
|
+
|
|
@@ -0,0 +1,39 @@
|
|
|
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
|
+
<div class="input_wrapper">
|
|
7
|
+
<%= pb_rails("text_input", props: {
|
|
8
|
+
aria: object.input_aria,
|
|
9
|
+
autocomplete: false,
|
|
10
|
+
dark: object.dark,
|
|
11
|
+
data: object.input_data,
|
|
12
|
+
disabled: object.disable_input,
|
|
13
|
+
error: object.error,
|
|
14
|
+
id: object.picker_id,
|
|
15
|
+
label: object.hide_label ? nil : object.label,
|
|
16
|
+
name: object.name,
|
|
17
|
+
placeholder: object.placeholder,
|
|
18
|
+
required: object.required,
|
|
19
|
+
type: object.type
|
|
20
|
+
}) %>
|
|
21
|
+
<% if !object.hide_icon %>
|
|
22
|
+
<div
|
|
23
|
+
class="<%= object.icon_wrapper_class %>"
|
|
24
|
+
id="cal-icon-<%= object.picker_id %>"
|
|
25
|
+
>
|
|
26
|
+
<%= pb_rails("icon", props: {
|
|
27
|
+
classname: "cal_icon",
|
|
28
|
+
icon: "calendar-alt"
|
|
29
|
+
}) %>
|
|
30
|
+
</div>
|
|
31
|
+
<% end %>
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
<%= javascript_tag do %>
|
|
35
|
+
window.addEventListener("DOMContentLoaded", () => {
|
|
36
|
+
datePickerHelper(<%= object.date_picker_config %>)
|
|
37
|
+
})
|
|
38
|
+
<% end %>
|
|
39
|
+
<% end %>
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/* @flow */
|
|
2
|
+
|
|
3
|
+
import React, { useEffect } from 'react'
|
|
4
|
+
import classnames from 'classnames'
|
|
5
|
+
import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
|
|
6
|
+
import { globalProps } from '../utilities/globalProps.js'
|
|
7
|
+
import { Icon, TextInput } from '../'
|
|
8
|
+
import datePickerHelper from './date_picker_helper.js'
|
|
9
|
+
|
|
10
|
+
type DatePickerProps = {
|
|
11
|
+
allowInput?: Boolean,
|
|
12
|
+
aria?: object,
|
|
13
|
+
className?: String,
|
|
14
|
+
dark?: Boolean,
|
|
15
|
+
data?: object,
|
|
16
|
+
defaultDate?: String,
|
|
17
|
+
disableDate?: Array,
|
|
18
|
+
disableInput?: Boolean,
|
|
19
|
+
disableRange?: Array,
|
|
20
|
+
disableWeekdays?: Array,
|
|
21
|
+
error?: String,
|
|
22
|
+
format?: String,
|
|
23
|
+
hideIcon?: Boolean,
|
|
24
|
+
hideLabel?: Boolean,
|
|
25
|
+
id?: String,
|
|
26
|
+
inputAria?: object,
|
|
27
|
+
inputData?: object,
|
|
28
|
+
label?: String,
|
|
29
|
+
maxDate: String,
|
|
30
|
+
minDate: String,
|
|
31
|
+
mode?: String,
|
|
32
|
+
name: String,
|
|
33
|
+
onChange: (String) => void,
|
|
34
|
+
pickerId?: String,
|
|
35
|
+
placeholder?: String,
|
|
36
|
+
type?: String,
|
|
37
|
+
yearRange?: Array,
|
|
38
|
+
}
|
|
39
|
+
const DatePicker = (props: DatePickerProps) => {
|
|
40
|
+
const {
|
|
41
|
+
allowInput = false,
|
|
42
|
+
aria = {},
|
|
43
|
+
className,
|
|
44
|
+
dark = false,
|
|
45
|
+
data = {},
|
|
46
|
+
defaultDate = '',
|
|
47
|
+
disableDate = null,
|
|
48
|
+
disableInput,
|
|
49
|
+
disableRange = null,
|
|
50
|
+
disableWeekdays = null,
|
|
51
|
+
error,
|
|
52
|
+
format = 'm/d/Y',
|
|
53
|
+
hideIcon = false,
|
|
54
|
+
hideLabel = false,
|
|
55
|
+
id,
|
|
56
|
+
inputAria,
|
|
57
|
+
inputData,
|
|
58
|
+
label = 'Date Picker',
|
|
59
|
+
maxDate,
|
|
60
|
+
minDate,
|
|
61
|
+
mode = 'single',
|
|
62
|
+
name,
|
|
63
|
+
onChange = () => {},
|
|
64
|
+
pickerId,
|
|
65
|
+
placeholder,
|
|
66
|
+
type,
|
|
67
|
+
yearRange = [ 1900, 2100 ],
|
|
68
|
+
} = props
|
|
69
|
+
|
|
70
|
+
const ariaProps = buildAriaProps(aria)
|
|
71
|
+
const dataProps = buildDataProps(data)
|
|
72
|
+
const classes = classnames(
|
|
73
|
+
buildCss('pb_date_picker_kit'),
|
|
74
|
+
className,
|
|
75
|
+
globalProps(props),
|
|
76
|
+
error ? 'error' : null,
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
useEffect(() => {
|
|
80
|
+
datePickerHelper({
|
|
81
|
+
allowInput: allowInput,
|
|
82
|
+
defaultDate: defaultDate,
|
|
83
|
+
disableDate: disableDate,
|
|
84
|
+
disableRange: disableRange,
|
|
85
|
+
disableWeekdays: disableWeekdays,
|
|
86
|
+
format: format,
|
|
87
|
+
hideIcon: hideIcon,
|
|
88
|
+
maxDate: maxDate,
|
|
89
|
+
minDate: minDate,
|
|
90
|
+
mode: mode,
|
|
91
|
+
pickerId: pickerId,
|
|
92
|
+
yearRange: yearRange,
|
|
93
|
+
})
|
|
94
|
+
}, [])
|
|
95
|
+
|
|
96
|
+
const iconWrapperClass = () => {
|
|
97
|
+
let base = 'cal_icon_wrapper'
|
|
98
|
+
if (dark){
|
|
99
|
+
base += ' dark'
|
|
100
|
+
}
|
|
101
|
+
if (hideLabel){
|
|
102
|
+
base += ' no_label_shift'
|
|
103
|
+
}
|
|
104
|
+
if (error){
|
|
105
|
+
base += ' error'
|
|
106
|
+
}
|
|
107
|
+
return base
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
return (
|
|
111
|
+
<div
|
|
112
|
+
{...ariaProps}
|
|
113
|
+
{...dataProps}
|
|
114
|
+
className={classes}
|
|
115
|
+
id={id}
|
|
116
|
+
>
|
|
117
|
+
{className}
|
|
118
|
+
<div className="input_wrapper">
|
|
119
|
+
<TextInput
|
|
120
|
+
aria={inputAria}
|
|
121
|
+
autoComplete="off"
|
|
122
|
+
dark={dark}
|
|
123
|
+
data={inputData}
|
|
124
|
+
disabled={disableInput}
|
|
125
|
+
error={error}
|
|
126
|
+
id={pickerId}
|
|
127
|
+
label={hideLabel ? null : label}
|
|
128
|
+
name={name}
|
|
129
|
+
onChange={onChange}
|
|
130
|
+
placeholder={placeholder}
|
|
131
|
+
type={type}
|
|
132
|
+
/>
|
|
133
|
+
<If condition={!hideIcon}>
|
|
134
|
+
<div
|
|
135
|
+
className={iconWrapperClass()}
|
|
136
|
+
id={`cal-icon-${pickerId}`}
|
|
137
|
+
>
|
|
138
|
+
<Icon
|
|
139
|
+
className="cal_icon"
|
|
140
|
+
icon="calendar-alt"
|
|
141
|
+
/>
|
|
142
|
+
</div>
|
|
143
|
+
</If>
|
|
144
|
+
</div>
|
|
145
|
+
</div>
|
|
146
|
+
)
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
export default DatePicker
|