playbook_ui 3.0.1 → 3.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -0
- data/app/pb_kits/playbook/index.js +60 -126
- data/app/pb_kits/playbook/kits/pb_avatar.js +3 -3
- data/app/pb_kits/playbook/kits/pb_badge.js +3 -3
- data/app/pb_kits/playbook/kits/pb_bar_graph.js +3 -3
- data/app/pb_kits/playbook/kits/pb_body.js +3 -3
- data/app/pb_kits/playbook/kits/pb_button.js +3 -3
- data/app/pb_kits/playbook/kits/pb_caption.js +3 -3
- data/app/pb_kits/playbook/kits/pb_card.js +3 -3
- data/app/pb_kits/playbook/kits/pb_checkbox.js +3 -3
- data/app/pb_kits/playbook/kits/pb_circle_icon_button.js +3 -3
- data/app/pb_kits/playbook/kits/pb_contact.js +3 -3
- data/app/pb_kits/playbook/kits/pb_currency.js +3 -3
- data/app/pb_kits/playbook/kits/pb_dashboard_value.js +3 -3
- data/app/pb_kits/playbook/kits/pb_date.js +3 -3
- data/app/pb_kits/playbook/kits/pb_date_range_inline.js +3 -3
- data/app/pb_kits/playbook/kits/pb_date_stacked.js +3 -3
- data/app/pb_kits/playbook/kits/pb_date_year_stacked.js +3 -3
- data/app/pb_kits/playbook/kits/pb_distribution_bar.js +3 -3
- data/app/pb_kits/playbook/kits/pb_fixed_confirmation_toast.js +3 -3
- data/app/pb_kits/playbook/kits/pb_hashtag.js +3 -3
- data/app/pb_kits/playbook/kits/pb_home_address_street.js +3 -3
- data/app/pb_kits/playbook/kits/pb_icon.js +3 -3
- data/app/pb_kits/playbook/kits/pb_icon_circle.js +3 -3
- data/app/pb_kits/playbook/kits/pb_icon_value.js +3 -3
- data/app/pb_kits/playbook/kits/pb_image.js +3 -4
- data/app/pb_kits/playbook/kits/pb_label_pill.js +3 -3
- data/app/pb_kits/playbook/kits/pb_label_value.js +3 -3
- data/app/pb_kits/playbook/kits/pb_layout.js +3 -3
- data/app/pb_kits/playbook/kits/pb_line_graph.js +3 -3
- data/app/pb_kits/playbook/kits/pb_list.js +3 -3
- data/app/pb_kits/playbook/kits/pb_loading_inline.js +3 -3
- data/app/pb_kits/playbook/kits/pb_message.js +3 -3
- data/app/pb_kits/playbook/kits/pb_multiple_users.js +3 -3
- data/app/pb_kits/playbook/kits/pb_nav.js +3 -3
- data/app/pb_kits/playbook/kits/pb_online_status.js +3 -3
- data/app/pb_kits/playbook/kits/pb_person.js +3 -3
- data/app/pb_kits/playbook/kits/pb_person_contact.js +3 -3
- data/app/pb_kits/playbook/kits/pb_pill.js +3 -3
- data/app/pb_kits/playbook/kits/pb_progress_pills.js +3 -3
- data/app/pb_kits/playbook/kits/pb_progress_simple.js +3 -3
- data/app/pb_kits/playbook/kits/pb_section_separator.js +3 -3
- data/app/pb_kits/playbook/kits/pb_select.js +3 -3
- data/app/pb_kits/playbook/kits/pb_selectable_card.js +3 -3
- data/app/pb_kits/playbook/kits/pb_source.js +3 -3
- data/app/pb_kits/playbook/kits/pb_star_rating.js +3 -3
- data/app/pb_kits/playbook/kits/pb_stat_change.js +3 -3
- data/app/pb_kits/playbook/kits/pb_stat_value.js +3 -3
- data/app/pb_kits/playbook/kits/pb_table.js +3 -3
- data/app/pb_kits/playbook/kits/pb_text_input.js +3 -3
- data/app/pb_kits/playbook/kits/pb_textarea.js +3 -3
- data/app/pb_kits/playbook/kits/pb_time.js +3 -3
- data/app/pb_kits/playbook/kits/pb_timestamp.js +3 -3
- data/app/pb_kits/playbook/kits/pb_title.js +3 -3
- data/app/pb_kits/playbook/kits/pb_title_count.js +3 -3
- data/app/pb_kits/playbook/kits/pb_title_detail.js +3 -3
- data/app/pb_kits/playbook/kits/pb_toggle.js +3 -3
- data/app/pb_kits/playbook/kits/pb_user.js +3 -3
- data/app/pb_kits/playbook/kits/pb_user_badge.js +3 -3
- data/app/pb_kits/playbook/packs/application.js +12 -10
- data/app/pb_kits/playbook/packs/examples.js +115 -115
- data/app/pb_kits/playbook/packs/kits.js +56 -56
- data/app/pb_kits/playbook/packs/site_styles/_site-style.scss +4 -1
- data/app/pb_kits/playbook/pb_card/_card.jsx +2 -2
- data/app/pb_kits/playbook/pb_card/docs/_card_separator.html.erb +19 -0
- data/app/pb_kits/playbook/pb_card/docs/_card_separator.jsx +22 -0
- data/app/pb_kits/playbook/pb_card/docs/example.yml +2 -1
- data/app/pb_kits/playbook/pb_card/docs/index.js +7 -6
- data/app/pb_kits/playbook/pb_contact/contact.rb +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_simple_form.html.erb +3 -1
- data/app/pb_kits/playbook/pb_form/form_builder.rb +8 -7
- data/app/pb_kits/playbook/pb_form/form_builder/{text_input_builder.rb → form_field_builder.rb} +3 -3
- data/app/pb_kits/playbook/pb_nav/_horizontal_nav.scss +0 -1
- data/app/pb_kits/playbook/pb_nav/_item.jsx +25 -28
- data/app/pb_kits/playbook/pb_nav/_nav.jsx +23 -24
- data/app/pb_kits/playbook/pb_nav/_vertical_nav.scss +0 -2
- data/app/pb_kits/playbook/pb_nav/docs/_block_nav.jsx +15 -0
- data/app/pb_kits/playbook/pb_nav/docs/{_block_no_title.html.erb → _block_no_title_nav.html.erb} +0 -0
- data/app/pb_kits/playbook/pb_nav/docs/_block_no_title_nav.jsx +15 -0
- data/app/pb_kits/playbook/pb_nav/docs/_default_nav.jsx +8 -4
- data/app/pb_kits/playbook/pb_nav/docs/_horizontal_nav.jsx +15 -0
- data/app/pb_kits/playbook/pb_nav/docs/example.yml +5 -1
- data/app/pb_kits/playbook/pb_nav/docs/index.js +3 -0
- data/app/pb_kits/playbook/pb_person_contact/_person_contact.html.erb +20 -19
- data/app/pb_kits/playbook/pb_person_contact/_person_contact.scss +4 -0
- data/app/pb_kits/playbook/pb_person_contact/docs/_person_contact_with_wrong_numbers.html.erb +21 -0
- data/app/pb_kits/playbook/pb_person_contact/docs/example.yml +1 -2
- data/app/pb_kits/playbook/pb_person_contact/person_contact.rb +2 -2
- data/app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_dark.html.erb +3 -3
- data/app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_dark.jsx +3 -3
- data/app/pb_kits/playbook/pb_text_input/_text_input.html.erb +2 -2
- data/app/pb_kits/playbook/pb_text_input/_text_input.jsx +4 -2
- data/app/pb_kits/playbook/pb_text_input/_text_input.scss +31 -41
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_dark.html.erb +5 -0
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_dark.jsx +78 -0
- data/app/pb_kits/playbook/pb_text_input/docs/example.yml +3 -0
- data/app/pb_kits/playbook/pb_text_input/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_text_input/text_input.rb +9 -1
- data/app/pb_kits/playbook/pb_textarea/_textarea.jsx +11 -1
- data/app/pb_kits/playbook/pb_textarea/_textarea_mixin.scss +11 -0
- data/app/pb_kits/playbook/plugins/pb_chart_plugin.js +10 -10
- data/app/pb_kits/playbook/utilities/props.js +2 -2
- data/app/pb_kits/playbook/utilities/text.js +6 -13
- data/app/pb_kits/playbook/vendor.js +2 -2
- data/lib/generators/kit/kit_generator.rb +2 -2
- data/lib/generators/kit/templates/kit_example_react.erb.tt +7 -9
- data/lib/generators/kit/templates/kit_js.erb.tt +1 -1
- data/lib/generators/kit/templates/kit_jsx.erb.tt +29 -11
- data/lib/generators/kit/templates/kit_pack.erb.tt +3 -3
- data/lib/generators/kit/templates/kit_ruby_spec.erb.tt +0 -1
- data/lib/playbook/version.rb +1 -1
- data/lib/tasks/pb_release.rake +33 -22
- metadata +12 -4
@@ -0,0 +1,15 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import {Nav} from '../../'
|
3
|
+
import NavItem from '../_item.jsx'
|
4
|
+
|
5
|
+
function BlockNoTitleNav() {
|
6
|
+
return (
|
7
|
+
<Nav link='#' orientation='vertical'>
|
8
|
+
<NavItem link='#' active={true}>{`Active Nav Item using text prop`}</NavItem>
|
9
|
+
<NavItem link='#'>{`Nav Item using text prop`}</NavItem>
|
10
|
+
<NavItem link='#'>{`Nav Item using text prop`}</NavItem>
|
11
|
+
</Nav>
|
12
|
+
)
|
13
|
+
}
|
14
|
+
|
15
|
+
export default BlockNoTitleNav;
|
@@ -1,10 +1,14 @@
|
|
1
|
-
import React from
|
2
|
-
import {Nav} from
|
3
|
-
import NavItem from
|
1
|
+
import React from 'react'
|
2
|
+
import {Nav} from '../../'
|
3
|
+
import NavItem from '../_item.jsx'
|
4
4
|
|
5
5
|
function DefaultNav() {
|
6
6
|
return (
|
7
|
-
<
|
7
|
+
<Nav title='Title example' link='#' orientation='vertical'>
|
8
|
+
<NavItem text='Active Nav Item using text prop' link='#' active={true}/>
|
9
|
+
<NavItem text='Nav Item using text prop' link='#' />
|
10
|
+
<NavItem text='Nav Item using text prop' link='#' />
|
11
|
+
</Nav>
|
8
12
|
)
|
9
13
|
}
|
10
14
|
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import {Nav} from '../../'
|
3
|
+
import NavItem from '../_item.jsx'
|
4
|
+
|
5
|
+
function HorizontalNav() {
|
6
|
+
return (
|
7
|
+
<Nav title='Title example' link='#' orientation='horizontal'>
|
8
|
+
<NavItem text='Active Nav Item using text prop' link='#' active={true}/>
|
9
|
+
<NavItem text='Nav Item using text prop' link='#' />
|
10
|
+
<NavItem text='Nav Item using text prop' link='#' />
|
11
|
+
</Nav>
|
12
|
+
)
|
13
|
+
}
|
14
|
+
|
15
|
+
export default HorizontalNav;
|
@@ -3,6 +3,10 @@ examples:
|
|
3
3
|
- default_nav: Default
|
4
4
|
- horizontal_nav: Horizontal Nav
|
5
5
|
- block_nav: Block
|
6
|
-
-
|
6
|
+
- block_no_title_nav: Without Title
|
7
7
|
react:
|
8
8
|
- default_nav: Default
|
9
|
+
- horizontal_nav: Horizontal Nav
|
10
|
+
- block_nav: Block Nav
|
11
|
+
- block_no_title_nav: Without Title
|
12
|
+
|
@@ -1,25 +1,26 @@
|
|
1
1
|
<%= content_tag(:div,
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
2
|
+
id: object.id,
|
3
|
+
data: object.data,
|
4
|
+
class: object.classname) do %>
|
5
|
+
<%= pb_rails("person", props: {
|
6
|
+
first_name: object.first_name,
|
7
|
+
last_name: object.last_name,
|
8
|
+
}) %>
|
9
|
+
<% object.valid_contacts.each do |contact| %>
|
10
|
+
<%= pb_rails("contact", props: {
|
11
|
+
contact_type: contact[:contact_type],
|
12
|
+
contact_value: contact[:contact_value],
|
13
|
+
contact_detail: contact[:contact_detail],
|
8
14
|
}) %>
|
9
|
-
|
15
|
+
<% end %>
|
16
|
+
<% if object.wrong_contacts.present? %>
|
17
|
+
<%= pb_rails("caption", props: { classname: "wrong_numbers", text: "wrong number" }) %>
|
18
|
+
|
19
|
+
<% object.wrong_contacts.each do |wrong_number| %>
|
10
20
|
<%= pb_rails("contact", props: {
|
11
|
-
|
12
|
-
|
13
|
-
contact_detail: contact[:contact_detail],
|
21
|
+
contact_type: wrong_number[:contact_type],
|
22
|
+
contact_value: wrong_number[:contact_value],
|
14
23
|
}) %>
|
15
24
|
<% end %>
|
16
|
-
|
17
|
-
<%= pb_rails("caption", props: { text: "wrong number" })%>
|
18
|
-
<% end %>
|
19
|
-
<% object.wrong_contacts.each do |wrong_number| %>
|
20
|
-
<%= pb_rails("contact", props: {
|
21
|
-
contact_type: wrong_number[:contact_type],
|
22
|
-
contact_value: wrong_number[:contact_value],
|
23
|
-
}) %>
|
24
|
-
<% end %>
|
25
|
+
<% end %>
|
25
26
|
<% end %>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<%= pb_rails("person_contact", props: {
|
2
|
+
first_name: "Pauline",
|
3
|
+
last_name: "Smith",
|
4
|
+
contacts: [
|
5
|
+
{
|
6
|
+
contact_type: "email",
|
7
|
+
contact_value: "email@example.com",
|
8
|
+
},
|
9
|
+
{
|
10
|
+
contact_value: 5555555555
|
11
|
+
},
|
12
|
+
{
|
13
|
+
contact_type: "wrong-phone",
|
14
|
+
contact_value: "3245627482",
|
15
|
+
},
|
16
|
+
{
|
17
|
+
contact_type: "phone",
|
18
|
+
contact_value: "3048615385",
|
19
|
+
},
|
20
|
+
]
|
21
|
+
}) %>
|
@@ -12,11 +12,11 @@ module Playbook
|
|
12
12
|
prop :last_name
|
13
13
|
|
14
14
|
def wrong_contacts
|
15
|
-
contacts.select { |contact| contact[:contact_type] == "wrong
|
15
|
+
contacts.select { |contact| contact[:contact_type] == "wrong-phone" }
|
16
16
|
end
|
17
17
|
|
18
18
|
def valid_contacts
|
19
|
-
contacts.reject { |contact| contact[:contact_type] == "wrong
|
19
|
+
contacts.reject { |contact| contact[:contact_type] == "wrong-phone" }
|
20
20
|
end
|
21
21
|
|
22
22
|
def classname
|
@@ -33,9 +33,9 @@
|
|
33
33
|
<% end %>
|
34
34
|
|
35
35
|
<%= pb_rails("selectable_card", props: {
|
36
|
-
input_id: "
|
37
|
-
name: "
|
38
|
-
value: "
|
36
|
+
input_id: "disabled_dark",
|
37
|
+
name: "disabled_dark",
|
38
|
+
value: "disabled_dark",
|
39
39
|
disabled: true,
|
40
40
|
dark: true
|
41
41
|
}) do %>
|
@@ -52,9 +52,9 @@ class SelectableCardDark extends React.Component {
|
|
52
52
|
|
53
53
|
<SelectableCard
|
54
54
|
dark
|
55
|
-
inputId="
|
56
|
-
name="
|
57
|
-
value="
|
55
|
+
inputId="disabled_dark"
|
56
|
+
name="disabled_dark"
|
57
|
+
value="disabled_dark"
|
58
58
|
disabled={true}
|
59
59
|
onChange={this.handleSelect}>
|
60
60
|
{'Unselected'}
|
@@ -1,12 +1,12 @@
|
|
1
1
|
<%= content_tag(:div,
|
2
2
|
class: object.classname) do %>
|
3
3
|
<% if object.label.present? %>
|
4
|
-
<%= pb_rails("caption", props: {text: object.label}) %>
|
4
|
+
<%= pb_rails("caption", props: { text: object.label, dark: object.dark, classname: "pb_text_input_kit_label" }) %>
|
5
5
|
<% end %>
|
6
6
|
<%= content_tag(:div,
|
7
7
|
class: "text_input_wrapper") do %>
|
8
8
|
<% if object.children.present? %>
|
9
|
-
<%
|
9
|
+
<% capture(&object.children) %>
|
10
10
|
<% else %>
|
11
11
|
<%= tag(:input,
|
12
12
|
id: object.id,
|
@@ -7,6 +7,7 @@ import {Caption} from '../'
|
|
7
7
|
|
8
8
|
const propTypes = {
|
9
9
|
className: PropTypes.string,
|
10
|
+
dark: PropTypes.bool,
|
10
11
|
name: PropTypes.string,
|
11
12
|
label: PropTypes.string,
|
12
13
|
onChange: PropTypes.func,
|
@@ -27,6 +28,7 @@ class TextInput extends React.Component {
|
|
27
28
|
render() {
|
28
29
|
const {
|
29
30
|
className,
|
31
|
+
dark,
|
30
32
|
name,
|
31
33
|
label,
|
32
34
|
onChange = () => {},
|
@@ -36,13 +38,13 @@ class TextInput extends React.Component {
|
|
36
38
|
} = this.props
|
37
39
|
|
38
40
|
const css = classnames([
|
39
|
-
`pb_text_input_kit`,
|
41
|
+
`pb_text_input_kit${dark === true ? '_dark' : ''}`,
|
40
42
|
className,
|
41
43
|
])
|
42
44
|
|
43
45
|
return (
|
44
46
|
<div className={css}>
|
45
|
-
<Caption text={label} />
|
47
|
+
<Caption text={label} dark={dark} />
|
46
48
|
<div className='text_input_wrapper'>
|
47
49
|
<input className='text_input'
|
48
50
|
name={name}
|
@@ -1,57 +1,47 @@
|
|
1
|
-
@import "../
|
2
|
-
@import "../
|
3
|
-
@import "../tokens/spacing";
|
4
|
-
@import "../tokens/typography";
|
1
|
+
@import "../pb_textarea/textarea_mixin";
|
2
|
+
@import "../pb_body/body_mixins";
|
5
3
|
|
6
|
-
|
7
|
-
|
4
|
+
[class^=pb_text_input_kit] {
|
5
|
+
.pb_text_input_kit_label {
|
6
|
+
margin-bottom: $space_xs;
|
7
|
+
display: block;
|
8
|
+
}
|
8
9
|
|
9
10
|
.text_input_wrapper {
|
10
|
-
margin-bottom:
|
11
|
+
margin-bottom: $space_sm;
|
12
|
+
display: block;
|
13
|
+
|
14
|
+
input::placeholder {
|
15
|
+
@include pb_body_light;
|
16
|
+
}
|
11
17
|
|
12
18
|
> input:first-child {
|
13
|
-
|
14
|
-
|
15
|
-
display: block;
|
16
|
-
width: 100%;
|
17
|
-
color: $text_lt_default;
|
18
|
-
background: $white;
|
19
|
+
@include pb_textarea_light;
|
20
|
+
overflow: hidden;
|
19
21
|
padding: $space_xs $space_sm;
|
20
|
-
|
21
|
-
outline: none;
|
22
|
-
font-size: $font_small;
|
23
|
-
margin: 0.1rem 0 0;
|
24
|
-
|
25
|
-
&:focus {
|
26
|
-
border-color: $primary-action;
|
27
|
-
}
|
28
|
-
|
29
|
-
&::-webkit-input-placeholder {
|
30
|
-
color: $text_lt_lighter;
|
31
|
-
opacity: 1;
|
32
|
-
}
|
22
|
+
}
|
33
23
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
24
|
+
input:focus {
|
25
|
+
@include pb_textarea_focus;
|
26
|
+
}
|
27
|
+
}
|
38
28
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
}
|
29
|
+
&[class*=_dark] {
|
30
|
+
.text_input_wrapper {
|
31
|
+
margin-bottom: 1rem;
|
43
32
|
|
44
|
-
|
45
|
-
|
46
|
-
opacity: 1;
|
33
|
+
input::placeholder {
|
34
|
+
@include pb_body_light_dark;
|
47
35
|
}
|
48
36
|
|
49
|
-
|
50
|
-
|
37
|
+
> input:first-child {
|
38
|
+
@include pb_textarea_dark;
|
39
|
+
overflow: hidden;
|
40
|
+
padding: $space_xs $space_sm;
|
51
41
|
}
|
52
42
|
|
53
|
-
|
54
|
-
|
43
|
+
input:focus {
|
44
|
+
@include pb_textarea_focus_dark;
|
55
45
|
}
|
56
46
|
}
|
57
47
|
}
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<%= pb_rails("text_input", props: { label: "First Name", placeholder: "Enter first name", value: "Timothy Wenhold", dark: true }) %>
|
2
|
+
<%= pb_rails("text_input", props: { label: "Last Name", placeholder: "Enter last name", dark: true }) %>
|
3
|
+
<%= pb_rails("text_input", props: { label: "Phone Number", type: "phone", placeholder: "Enter phone number", dark: true }) %>
|
4
|
+
<%= pb_rails("text_input", props: { label: "Email Address", type: "email", placeholder: "Enter email address", dark: true }) %>
|
5
|
+
<%= pb_rails("text_input", props: { label: "Zip Code", type: "number", placeholder: "Enter zip code", dark: true }) %>
|
@@ -0,0 +1,78 @@
|
|
1
|
+
import React from "react"
|
2
|
+
import {
|
3
|
+
Caption,
|
4
|
+
TextInput,
|
5
|
+
Title,
|
6
|
+
} from "../../"
|
7
|
+
|
8
|
+
class TextInputDark extends React.Component {
|
9
|
+
state = {
|
10
|
+
firstName: ""
|
11
|
+
}
|
12
|
+
|
13
|
+
render() {
|
14
|
+
const handleOnChange = ({target}) => this.setState({firstName: target.value})
|
15
|
+
|
16
|
+
const {
|
17
|
+
firstName,
|
18
|
+
} = this.state
|
19
|
+
|
20
|
+
return (
|
21
|
+
<div>
|
22
|
+
<TextInput
|
23
|
+
label="First Name"
|
24
|
+
placeholder="Enter first name"
|
25
|
+
value="Timothy Wenhold"
|
26
|
+
dark
|
27
|
+
/>
|
28
|
+
<TextInput
|
29
|
+
label="Last Name"
|
30
|
+
placeholder="Enter last name"
|
31
|
+
dark
|
32
|
+
/>
|
33
|
+
<TextInput
|
34
|
+
label="Phone Number"
|
35
|
+
placeholder="Enter phone number"
|
36
|
+
type="phone"
|
37
|
+
dark
|
38
|
+
/>
|
39
|
+
<TextInput
|
40
|
+
label="Email Address"
|
41
|
+
placeholder="Enter email address"
|
42
|
+
type="email"
|
43
|
+
dark
|
44
|
+
/>
|
45
|
+
<TextInput
|
46
|
+
label="Zip Code"
|
47
|
+
placeholder="Enter zip code"
|
48
|
+
type="number"
|
49
|
+
dark
|
50
|
+
/>
|
51
|
+
|
52
|
+
<br/>
|
53
|
+
<br/>
|
54
|
+
|
55
|
+
<Title dark>{`Event Handler Props`}</Title>
|
56
|
+
|
57
|
+
<br/>
|
58
|
+
<Caption>{`onChange`}</Caption>
|
59
|
+
|
60
|
+
<br/>
|
61
|
+
|
62
|
+
<TextInput
|
63
|
+
label="First Name"
|
64
|
+
onChange={handleOnChange}
|
65
|
+
placeholder="Enter first name"
|
66
|
+
value={firstName}
|
67
|
+
dark
|
68
|
+
/>
|
69
|
+
|
70
|
+
<If condition={firstName !== ""}>
|
71
|
+
{`First name is: ${firstName}`}
|
72
|
+
</If>
|
73
|
+
</div>
|
74
|
+
)
|
75
|
+
}
|
76
|
+
}
|
77
|
+
|
78
|
+
export default TextInputDark
|
@@ -7,6 +7,8 @@ module Playbook
|
|
7
7
|
|
8
8
|
partial "pb_text_input/text_input"
|
9
9
|
|
10
|
+
prop :dark, type: Playbook::Props::Boolean,
|
11
|
+
default: false
|
10
12
|
prop :label
|
11
13
|
prop :name
|
12
14
|
prop :placeholder
|
@@ -14,7 +16,13 @@ module Playbook
|
|
14
16
|
prop :type, default: "text"
|
15
17
|
|
16
18
|
def classname
|
17
|
-
generate_classname("pb_text_input_kit")
|
19
|
+
generate_classname("pb_text_input_kit", dark_class)
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def dark_class
|
25
|
+
dark ? "dark" : nil
|
18
26
|
end
|
19
27
|
end
|
20
28
|
end
|