playbook_ui 5.3.0 → 5.5.1.pre.alpha2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/pb_kits/playbook/_playbook.scss +2 -1
- data/app/pb_kits/playbook/data/menu.yml +2 -0
- data/app/pb_kits/playbook/index.js +2 -0
- data/app/pb_kits/playbook/packs/examples.js +2 -0
- data/app/pb_kits/playbook/packs/samples.js +2 -0
- data/app/pb_kits/playbook/pb_body/_body.html.erb +1 -0
- data/app/pb_kits/playbook/pb_body/_body.jsx +33 -24
- data/app/pb_kits/playbook/pb_body/docs/_body_dark.html.erb +1 -1
- data/app/pb_kits/playbook/pb_body/docs/_body_dark.jsx +0 -2
- data/app/pb_kits/playbook/pb_body/docs/_body_light.html.erb +1 -0
- data/app/pb_kits/playbook/pb_body/docs/_body_light.jsx +3 -7
- data/app/pb_kits/playbook/pb_button/_button.jsx +2 -0
- data/app/pb_kits/playbook/pb_caption/_caption.scss +2 -2
- data/app/pb_kits/playbook/pb_checkbox/_checkbox.html.erb +2 -1
- data/app/pb_kits/playbook/pb_checkbox/_checkbox.jsx +18 -5
- data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_checked.jsx +17 -0
- data/app/pb_kits/playbook/pb_checkbox/docs/example.yml +1 -0
- data/app/pb_kits/playbook/pb_checkbox/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.html.erb +1 -0
- data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.jsx +17 -1
- data/app/pb_kits/playbook/pb_dashboard_value/_dashboard_value.html.erb +3 -2
- data/app/pb_kits/playbook/pb_dashboard_value/_dashboard_value.jsx +15 -12
- data/app/pb_kits/playbook/pb_date_picker/_date_picker.html.erb +36 -0
- data/app/pb_kits/playbook/pb_date_picker/_date_picker.jsx +98 -0
- data/app/pb_kits/playbook/pb_date_picker/_date_picker.scss +59 -0
- data/app/pb_kits/playbook/pb_date_picker/date_picker.rb +38 -0
- data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.js +91 -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_label.html.erb +4 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_label.jsx +13 -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/example.yml +23 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/index.js +8 -0
- data/app/pb_kits/playbook/pb_date_picker/index.js +11 -0
- data/app/pb_kits/playbook/pb_filter/docs/_filter_default.html.erb +1 -0
- data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +1 -0
- data/app/pb_kits/playbook/pb_form/docs/_form_simple_form.html.erb +3 -1
- 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 +15 -0
- data/app/pb_kits/playbook/pb_highlight/docs/_highlight_default.html.erb +1 -1
- data/app/pb_kits/playbook/pb_image/_image.jsx +1 -1
- data/app/pb_kits/playbook/pb_layout/_layout.scss +16 -0
- data/app/pb_kits/playbook/pb_legend/_legend.html.erb +1 -0
- data/app/pb_kits/playbook/pb_legend/_legend.jsx +25 -4
- data/app/pb_kits/playbook/pb_nav/_item.jsx +20 -10
- data/app/pb_kits/playbook/pb_nav/_vertical_nav.scss +3 -0
- data/app/pb_kits/playbook/pb_popover/_popover.html.erb +1 -1
- data/app/pb_kits/playbook/pb_popover/_popover.jsx +3 -1
- data/app/pb_kits/playbook/pb_popover/_popover.scss +4 -0
- data/app/pb_kits/playbook/pb_popover/popover.rb +4 -0
- data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.html.erb +2 -2
- data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.jsx +24 -10
- data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.scss +3 -1
- data/app/pb_kits/playbook/pb_time_range_inline/time_range_inline.rb +6 -0
- data/app/pb_kits/playbook/pb_title/_title.jsx +7 -4
- data/app/pb_kits/playbook/pb_title/_title.scss +7 -0
- data/app/pb_kits/playbook/pb_title/_title_mixin.scss +2 -0
- data/app/pb_kits/playbook/pb_title/title.rb +4 -1
- data/app/pb_kits/playbook/vendor.js +4 -0
- data/app/views/layouts/playbook/samples.html.erb +1 -0
- data/app/views/playbook/samples/collection_detail/index.html.erb +169 -0
- data/app/views/playbook/samples/collection_detail/index.jsx +372 -0
- data/lib/generators/kit/kit_generator.rb +6 -3
- data/lib/generators/kit/templates/kit_html.erb.tt +3 -2
- data/lib/generators/kit/templates/kit_jsx.erb.tt +38 -10
- data/lib/playbook/version.rb +1 -1
- metadata +32 -4
@@ -0,0 +1,13 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import { DatePicker } from '../../'
|
3
|
+
|
4
|
+
const DatePickerError = () => (
|
5
|
+
<div>
|
6
|
+
<DatePicker
|
7
|
+
error="Invalid date. Please pick a valid date."
|
8
|
+
pickerId="date-picker-error"
|
9
|
+
/>
|
10
|
+
</div>
|
11
|
+
)
|
12
|
+
|
13
|
+
export default DatePickerError
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<%= pb_rails("date_picker", props: {
|
2
|
+
format: "m-d-Y",
|
3
|
+
picker_id: "date-picker-format1"
|
4
|
+
}) %>
|
5
|
+
|
6
|
+
<%= pb_rails("date_picker", props: {
|
7
|
+
format: "m/d/y",
|
8
|
+
picker_id: "date-picker-format2"
|
9
|
+
}) %>
|
10
|
+
|
11
|
+
<%= pb_rails("date_picker", props: {
|
12
|
+
format: "n-j-y",
|
13
|
+
picker_id: "date-picker-format3"
|
14
|
+
}) %>
|
15
|
+
|
16
|
+
<%= pb_rails("date_picker", props: {
|
17
|
+
format: "Y-d-m",
|
18
|
+
picker_id: "date-picker-format4"
|
19
|
+
}) %>
|
@@ -0,0 +1,25 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import { DatePicker } from '../../'
|
3
|
+
|
4
|
+
const DatePickerFormat = () => (
|
5
|
+
<div>
|
6
|
+
<DatePicker
|
7
|
+
format="m-d-Y"
|
8
|
+
pickerId="date-picker-format1"
|
9
|
+
/>
|
10
|
+
<DatePicker
|
11
|
+
format="m/d/y"
|
12
|
+
pickerId="date-picker-format2"
|
13
|
+
/>
|
14
|
+
<DatePicker
|
15
|
+
format="n-j-y"
|
16
|
+
pickerId="date-picker-format3"
|
17
|
+
/>
|
18
|
+
<DatePicker
|
19
|
+
format="Y-d-m"
|
20
|
+
pickerId="date-picker-format4"
|
21
|
+
/>
|
22
|
+
</div>
|
23
|
+
)
|
24
|
+
|
25
|
+
export default DatePickerFormat
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<%= pb_rails("date_picker", props: {
|
2
|
+
label: "Dynamic dates.",
|
3
|
+
max_date: (Date.today + 3).httpdate,
|
4
|
+
min_date: (Date.today - 3).httpdate,
|
5
|
+
picker_id: "date-picker-min-max1"
|
6
|
+
}) %>
|
7
|
+
|
8
|
+
<%= pb_rails("date_picker", props: {
|
9
|
+
format: "m/d/Y",
|
10
|
+
label: "Absolute formatted dates.",
|
11
|
+
max_date: "10/20/2020",
|
12
|
+
min_date: "10/10/2020",
|
13
|
+
picker_id: "date-picker-min-max2"
|
14
|
+
}) %>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import { DatePicker } from '../../'
|
3
|
+
|
4
|
+
const DatePickerMinMax = () => (
|
5
|
+
<div>
|
6
|
+
<DatePicker
|
7
|
+
label="Dynamic dates using flatpickr increment function."
|
8
|
+
maxDate={new Date().fp_incr(3)}
|
9
|
+
minDate={new Date().fp_incr(-3)}
|
10
|
+
pickerId="date-picker-min-max1"
|
11
|
+
/>
|
12
|
+
<DatePicker
|
13
|
+
format="m/d/Y"
|
14
|
+
label="Absolute formatted dates."
|
15
|
+
maxDate="10/20/2020"
|
16
|
+
minDate="10/10/2020"
|
17
|
+
pickerId="date-picker-min-max2"
|
18
|
+
/>
|
19
|
+
</div>
|
20
|
+
)
|
21
|
+
|
22
|
+
export default DatePickerMinMax
|
@@ -0,0 +1,23 @@
|
|
1
|
+
examples:
|
2
|
+
|
3
|
+
rails:
|
4
|
+
- date_picker_default: Default
|
5
|
+
- date_picker_default_date: Default Date
|
6
|
+
- date_picker_label: Label
|
7
|
+
- date_picker_range: Range
|
8
|
+
- date_picker_format: Format
|
9
|
+
- date_picker_disabled: Disabled Dates
|
10
|
+
- date_picker_min_max: Min Max
|
11
|
+
- date_picker_error: Error
|
12
|
+
|
13
|
+
|
14
|
+
react:
|
15
|
+
- date_picker_default: Default
|
16
|
+
- date_picker_default_date: Default Date
|
17
|
+
- date_picker_label: Label
|
18
|
+
- date_picker_range: Range
|
19
|
+
- date_picker_format: Format
|
20
|
+
- date_picker_disabled: Disabled Dates
|
21
|
+
- date_picker_min_max: Min Max
|
22
|
+
- date_picker_error: Error
|
23
|
+
|
@@ -0,0 +1,8 @@
|
|
1
|
+
export { default as DatePickerDefault } from './_date_picker_default.jsx'
|
2
|
+
export { default as DatePickerDefaultDate } from './_date_picker_default_date.jsx'
|
3
|
+
export { default as DatePickerLabel } from './_date_picker_label.jsx'
|
4
|
+
export { default as DatePickerRange } from './_date_picker_range.jsx'
|
5
|
+
export { default as DatePickerFormat } from './_date_picker_format.jsx'
|
6
|
+
export { default as DatePickerDisabled } from './_date_picker_disabled.jsx'
|
7
|
+
export { default as DatePickerMinMax } from './_date_picker_min_max.jsx'
|
8
|
+
export { default as DatePickerError } from './_date_picker_error.jsx'
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import PbEnhancedElement from '../pb_enhanced_element'
|
2
|
+
|
3
|
+
export default class PbDatePicker extends PbEnhancedElement {
|
4
|
+
static get selector() {
|
5
|
+
return '[data-pb-date-picker-kit]'
|
6
|
+
}
|
7
|
+
|
8
|
+
connect() {
|
9
|
+
this.element.addEventListener('keydown', (event) => this.handleKeydown(event))
|
10
|
+
}
|
11
|
+
}
|
@@ -30,6 +30,7 @@
|
|
30
30
|
<%= pb_rails("form", props: { form_system_options: { scope: :example, method: :get } }) do |form| %>
|
31
31
|
<%= form.text_field :example_text_field, props: { label: true } %>
|
32
32
|
<%= form.collection_select :example_collection_select, example_collection, :value, :name, props: { label: true } %>
|
33
|
+
<%= form.date_picker :example_date_picker %>
|
33
34
|
|
34
35
|
<%= form.actions do |action| %>
|
35
36
|
<%= action.submit props: { text: "Apply", data: { disable_with: "<i class='far fa-spinner fa-spin mr-3'></i>Searching...".html_safe },}%>
|
@@ -24,6 +24,7 @@
|
|
24
24
|
<%= form.text_area :example_text_area, props: { label: true } %>
|
25
25
|
<%= form.select :example_select, [ ["Yes", 1], ["No", 2] ], props: { label: true } %>
|
26
26
|
<%= form.collection_select :example_collection_select, example_collection, :value, :name, props: { label: true } %>
|
27
|
+
<%= form.date_picker :example_date_picker, props: { picker_id: 'date-picker', default_date: 'blank' } %>
|
27
28
|
|
28
29
|
<%= form.actions do |action| %>
|
29
30
|
<%= action.submit %>
|
@@ -13,7 +13,8 @@
|
|
13
13
|
:example_url_field,
|
14
14
|
:example_text_area,
|
15
15
|
:example_select_field,
|
16
|
-
:example_collection_select_field
|
16
|
+
:example_collection_select_field,
|
17
|
+
:example_date_picker
|
17
18
|
|
18
19
|
|
19
20
|
def self.model_name
|
@@ -49,6 +50,7 @@
|
|
49
50
|
<%= form.input :example_text_area, as: :text %>
|
50
51
|
<%= form.select :example_select_field, [["Yes", 1], ["No", 2]], props: { label: true } %>
|
51
52
|
<%= form.collection_select :example_collection_select_field, example_collection, :value, :name, props: { label: true } %>
|
53
|
+
<%= form.date_picker :example_date_picker, props: { picker_id: 'date-picker', default_date: 'blank' } %>
|
52
54
|
|
53
55
|
<%= form.actions do |action| %>
|
54
56
|
<%= action.submit %>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Playbook
|
4
|
+
module PbForm
|
5
|
+
module FormBuilder
|
6
|
+
module DatePickerField
|
7
|
+
def date_picker(name, props: {})
|
8
|
+
props[:name] = name
|
9
|
+
|
10
|
+
@template.pb_rails("date_picker", props: props)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -10,7 +10,7 @@ This an example<%= pb_rails("highlight") do%>Highlight Example<% end %>around.
|
|
10
10
|
<br>
|
11
11
|
<br>
|
12
12
|
<%= pb_rails("title", props: {text: "Search",size: 4})%>
|
13
|
-
|
13
|
+
<br>
|
14
14
|
<%= pb_rails("body", props: {text: "hello helpers are great even highlighting this", highlighting: true, highlighted_text: ["hello","great"]})%>
|
15
15
|
|
16
16
|
<br>
|
@@ -35,10 +35,25 @@ $card-border-radius: $border_rad_lightest;
|
|
35
35
|
display: grid;
|
36
36
|
width: 100%;
|
37
37
|
height: 100%;
|
38
|
+
padding: $space_lg;
|
38
39
|
grid-template-areas:
|
39
40
|
"side-bar collection";
|
40
41
|
grid-template-columns: .25fr 1fr;
|
41
42
|
grid-column-gap: $space_sm;
|
43
|
+
div.layout_body{
|
44
|
+
@media screen and (min-width: $screen-md-min) {
|
45
|
+
margin-left: $space_md;
|
46
|
+
}
|
47
|
+
@media screen and (max-width: $screen-lg-min) {
|
48
|
+
grid-template-columns: repeat(3, 1fr);
|
49
|
+
}
|
50
|
+
@media screen and (max-width: $screen-md-min) {
|
51
|
+
grid-template-columns: repeat(2, 1fr) !important;
|
52
|
+
}
|
53
|
+
@media screen and (max-width: $screen-xs-min) {
|
54
|
+
grid-template-columns: repeat(1, 1fr) !important;
|
55
|
+
}
|
56
|
+
}
|
42
57
|
|
43
58
|
@media screen and (max-width: $screen-md-min) {
|
44
59
|
grid-template-areas: "side-bar"
|
@@ -46,6 +61,7 @@ $card-border-radius: $border_rad_lightest;
|
|
46
61
|
grid-template-columns: 1fr;
|
47
62
|
grid-row-gap: $space_sm;
|
48
63
|
}
|
64
|
+
|
49
65
|
}
|
50
66
|
|
51
67
|
&[class*=_kanban]{
|
@@ -2,12 +2,14 @@
|
|
2
2
|
|
3
3
|
import React from 'react'
|
4
4
|
import classnames from 'classnames'
|
5
|
-
import { buildCss } from '../utilities/props'
|
5
|
+
import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
|
6
6
|
import { spacing } from '../utilities/spacing.js'
|
7
7
|
|
8
8
|
import { Body, Title } from '../'
|
9
9
|
|
10
10
|
type LegendProps = {
|
11
|
+
aria?: object,
|
12
|
+
className?: String,
|
11
13
|
color?: | "data_1"
|
12
14
|
| "data_2"
|
13
15
|
| "data_3"
|
@@ -16,20 +18,39 @@ type LegendProps = {
|
|
16
18
|
| "data_6"
|
17
19
|
| "data_7",
|
18
20
|
dark?: Boolean,
|
21
|
+
data?: object,
|
22
|
+
id?: String,
|
19
23
|
prefixText?: String,
|
20
24
|
text: String,
|
21
25
|
}
|
22
26
|
|
23
27
|
const Legend = (props: LegendProps) => {
|
24
|
-
const {
|
28
|
+
const {
|
29
|
+
aria = {},
|
30
|
+
className,
|
31
|
+
color = 'data_1',
|
32
|
+
dark = false,
|
33
|
+
data = {},
|
34
|
+
id,
|
35
|
+
prefixText,
|
36
|
+
text,
|
37
|
+
} = props
|
38
|
+
|
39
|
+
const ariaProps = buildAriaProps(aria)
|
40
|
+
const dataProps = buildDataProps(data)
|
25
41
|
const darkClass = dark ? 'dark' : 'light'
|
26
42
|
const bodyCSS = classnames(
|
27
|
-
buildCss('pb_legend_kit', color, darkClass),
|
43
|
+
buildCss('pb_legend_kit', color, darkClass), className,
|
28
44
|
spacing(props)
|
29
45
|
)
|
30
46
|
|
31
47
|
return (
|
32
|
-
<div
|
48
|
+
<div
|
49
|
+
{...ariaProps}
|
50
|
+
{...dataProps}
|
51
|
+
className={bodyCSS}
|
52
|
+
id={id}
|
53
|
+
>
|
33
54
|
<Body color={dark ? 'lighter' : 'light'}>
|
34
55
|
<span className="pb_legend_indicator_circle" />
|
35
56
|
<If condition={prefixText}>
|
@@ -32,21 +32,31 @@ const NavItem = ({
|
|
32
32
|
onClick={onClick}
|
33
33
|
>
|
34
34
|
<If condition={iconLeft}>
|
35
|
-
<
|
36
|
-
className="
|
37
|
-
|
38
|
-
|
39
|
-
|
35
|
+
<div
|
36
|
+
className="pb_nav_list_item_icon_section"
|
37
|
+
key={iconLeft}
|
38
|
+
>
|
39
|
+
<Icon
|
40
|
+
className="pb_nav_list_item_icon_left"
|
41
|
+
fixedWidth
|
42
|
+
icon={iconLeft}
|
43
|
+
/>
|
44
|
+
</div>
|
40
45
|
</If>
|
41
46
|
<span className="pb_nav_list_item_text">
|
42
47
|
{text || children}
|
43
48
|
</span>
|
44
49
|
<If condition={iconRight}>
|
45
|
-
<
|
46
|
-
className="
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
+
<div
|
51
|
+
className="pb_nav_list_item_icon_section"
|
52
|
+
key={iconRight}
|
53
|
+
>
|
54
|
+
<Icon
|
55
|
+
className="pb_nav_list_item_icon_right"
|
56
|
+
fixedWidth
|
57
|
+
icon={iconRight}
|
58
|
+
/>
|
59
|
+
</div>
|
50
60
|
</If>
|
51
61
|
</Tag>
|
52
62
|
</li>
|
@@ -32,6 +32,7 @@ $selector: ".pb_nav_list";
|
|
32
32
|
}
|
33
33
|
[class*=_item_text] {
|
34
34
|
color: $primary;
|
35
|
+
font-weight: $bold;
|
35
36
|
}
|
36
37
|
}
|
37
38
|
}
|
@@ -90,6 +91,7 @@ $selector: ".pb_nav_list";
|
|
90
91
|
text-decoration: none;
|
91
92
|
display: flex;
|
92
93
|
align-items: center;
|
94
|
+
border: none;
|
93
95
|
padding: $space_xs ($space_sm - 2px);
|
94
96
|
transition-property: color, background-color;
|
95
97
|
transition-duration: 0.15s;
|
@@ -106,6 +108,7 @@ $selector: ".pb_nav_list";
|
|
106
108
|
}
|
107
109
|
[class*=_text] {
|
108
110
|
flex: 1;
|
111
|
+
font-weight: $regular;
|
109
112
|
}
|
110
113
|
&:hover {
|
111
114
|
background-color: rgba($primary, 0.03);
|
@@ -3,7 +3,7 @@
|
|
3
3
|
data: object.data,
|
4
4
|
class: object.classname) do %>
|
5
5
|
<div class="pb_popover_tooltip" id="<%= object.tooltip_id %>" role="tooltip" style="<%= object.z_index_helper %>">
|
6
|
-
<div class="pb_popover_body <%= object.popover_spacing_helper %>" style="<%= object.width_height_helper %>">
|
6
|
+
<div class="pb_popover_body <%= object.width_height_class_helper %> <%= object.popover_spacing_helper %>" style="<%= object.width_height_helper %>">
|
7
7
|
<%= capture(&object.children) %>
|
8
8
|
</div>
|
9
9
|
</div>
|