playbook_ui 2.9.9 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (155) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +10 -4
  3. data/app/pb_kits/playbook/index.js +10 -0
  4. data/app/pb_kits/playbook/kits/pb_circle_icon_button.js +4 -0
  5. data/app/pb_kits/playbook/kits/pb_select.js +4 -0
  6. data/app/pb_kits/playbook/kits/pb_selectable_card.js +4 -0
  7. data/app/pb_kits/playbook/kits/pb_textarea.js +4 -0
  8. data/app/pb_kits/playbook/packs/examples.js +8 -0
  9. data/app/pb_kits/playbook/packs/kits.js +4 -2
  10. data/app/pb_kits/playbook/pb_avatar/_avatar.jsx +1 -1
  11. data/app/pb_kits/playbook/pb_body/_body_mixins.scss +3 -0
  12. data/app/pb_kits/playbook/pb_button/_button.jsx +4 -0
  13. data/app/pb_kits/playbook/pb_card/_card.scss +50 -17
  14. data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.html.erb +10 -0
  15. data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.jsx +30 -0
  16. data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.scss +32 -0
  17. data/app/pb_kits/playbook/pb_circle_icon_button/circle_icon_button.rb +22 -0
  18. data/app/pb_kits/playbook/pb_circle_icon_button/docs/_circle_icon_button_dark.html.erb +29 -0
  19. data/app/pb_kits/playbook/pb_circle_icon_button/docs/_circle_icon_button_dark.jsx +38 -0
  20. data/app/pb_kits/playbook/pb_circle_icon_button/docs/_circle_icon_button_default.html.erb +25 -0
  21. data/app/pb_kits/playbook/pb_circle_icon_button/docs/_circle_icon_button_default.jsx +34 -0
  22. data/app/pb_kits/playbook/pb_circle_icon_button/docs/example.yml +9 -0
  23. data/app/pb_kits/playbook/pb_circle_icon_button/docs/index.js +2 -0
  24. data/app/pb_kits/playbook/pb_dashboard_value/_dashboard_value.html.erb +1 -1
  25. data/app/pb_kits/playbook/pb_dashboard_value/dashboard_value.rb +4 -0
  26. data/app/pb_kits/playbook/pb_date/_date.jsx +51 -17
  27. data/app/pb_kits/playbook/pb_date/docs/_date_default.jsx +10 -2
  28. data/app/pb_kits/playbook/pb_form/_form.scss +11 -0
  29. data/app/pb_kits/playbook/pb_form/_form_form_with.html.erb +3 -0
  30. data/app/pb_kits/playbook/pb_form/_form_simple_form.html.erb +3 -0
  31. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +14 -0
  32. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form.html.erb +36 -0
  33. data/app/pb_kits/playbook/pb_form/docs/example.yml +5 -0
  34. data/app/pb_kits/playbook/pb_form/form.rb +28 -0
  35. data/app/pb_kits/playbook/pb_form/form/form_with_form.rb +38 -0
  36. data/app/pb_kits/playbook/pb_form/form/simple_form_form.rb +45 -0
  37. data/app/pb_kits/playbook/pb_form/form_builder.rb +23 -0
  38. data/app/pb_kits/playbook/pb_form/form_builder/action_area.rb +40 -0
  39. data/app/pb_kits/playbook/pb_form/form_builder/form_with_form_builder.rb +11 -0
  40. data/app/pb_kits/playbook/pb_form/form_builder/simple_form_builder.rb +25 -0
  41. data/app/pb_kits/playbook/pb_form/form_builder/text_input_builder.rb +22 -0
  42. data/app/pb_kits/playbook/pb_icon_circle/_icon_circle.jsx +19 -14
  43. data/app/pb_kits/playbook/pb_icon_circle/docs/_icon_circle_color.jsx +19 -0
  44. data/app/pb_kits/playbook/pb_icon_circle/docs/_icon_circle_default.jsx +5 -4
  45. data/app/pb_kits/playbook/pb_icon_circle/docs/_icon_circle_size.jsx +16 -0
  46. data/app/pb_kits/playbook/pb_icon_circle/docs/example.yml +2 -1
  47. data/app/pb_kits/playbook/pb_icon_circle/docs/index.js +2 -0
  48. data/app/pb_kits/playbook/pb_kit/dateTime.js +4 -0
  49. data/app/pb_kits/playbook/pb_layout/_layout.jsx +50 -48
  50. data/app/pb_kits/playbook/pb_layout/_layout.scss +8 -12
  51. data/app/pb_kits/playbook/pb_layout/_layout_mixin.scss +6 -0
  52. data/app/pb_kits/playbook/pb_layout/docs/_layout_colors.html.erb +24 -0
  53. data/app/pb_kits/playbook/pb_layout/docs/_layout_default.jsx +15 -0
  54. data/app/pb_kits/playbook/pb_layout/docs/_layout_sizes.html.erb +32 -0
  55. data/app/pb_kits/playbook/pb_layout/docs/_layout_sizes_dark.html.erb +32 -0
  56. data/app/pb_kits/playbook/pb_layout/docs/_layout_transparent.html.erb +8 -0
  57. data/app/pb_kits/playbook/pb_layout/docs/example.yml +5 -11
  58. data/app/pb_kits/playbook/pb_layout/docs/index.js +1 -1
  59. data/app/pb_kits/playbook/pb_layout/layout.rb +5 -7
  60. data/app/pb_kits/playbook/pb_message/_message.jsx +68 -11
  61. data/app/pb_kits/playbook/pb_message/docs/_message_default.jsx +59 -2
  62. data/app/pb_kits/playbook/pb_section_separator/_section_separator.jsx +23 -16
  63. data/app/pb_kits/playbook/pb_section_separator/_section_separator.scss +15 -6
  64. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_line.jsx +10 -0
  65. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_text.jsx +10 -0
  66. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_text_background.html.erb +1 -0
  67. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_text_background.jsx +12 -0
  68. data/app/pb_kits/playbook/pb_section_separator/docs/example.yml +4 -2
  69. data/app/pb_kits/playbook/pb_section_separator/docs/index.js +3 -1
  70. data/app/pb_kits/playbook/pb_section_separator/section_separator.rb +4 -1
  71. data/app/pb_kits/playbook/pb_select/_select.html.erb +33 -0
  72. data/app/pb_kits/playbook/pb_select/_select.jsx +110 -0
  73. data/app/pb_kits/playbook/pb_select/_select.scss +50 -0
  74. data/app/pb_kits/playbook/pb_select/docs/_select_blank.html.erb +19 -0
  75. data/app/pb_kits/playbook/pb_select/docs/_select_blank.jsx +30 -0
  76. data/app/pb_kits/playbook/pb_select/docs/_select_custom_select.html.erb +8 -0
  77. data/app/pb_kits/playbook/pb_select/docs/_select_custom_select.jsx +19 -0
  78. data/app/pb_kits/playbook/pb_select/docs/_select_dark.html.erb +24 -0
  79. data/app/pb_kits/playbook/pb_select/docs/_select_dark.jsx +31 -0
  80. data/app/pb_kits/playbook/pb_select/docs/_select_default.html.erb +23 -0
  81. data/app/pb_kits/playbook/pb_select/docs/_select_default.jsx +30 -0
  82. data/app/pb_kits/playbook/pb_select/docs/_select_disabled.html.erb +19 -0
  83. data/app/pb_kits/playbook/pb_select/docs/_select_disabled.jsx +30 -0
  84. data/app/pb_kits/playbook/pb_select/docs/_select_disabled_options.html.erb +33 -0
  85. data/app/pb_kits/playbook/pb_select/docs/_select_disabled_options.jsx +44 -0
  86. data/app/pb_kits/playbook/pb_select/docs/_select_required.html.erb +17 -0
  87. data/app/pb_kits/playbook/pb_select/docs/_select_required.jsx +28 -0
  88. data/app/pb_kits/playbook/pb_select/docs/_select_value_text_same.html.erb +18 -0
  89. data/app/pb_kits/playbook/pb_select/docs/_select_value_text_same.jsx +29 -0
  90. data/app/pb_kits/playbook/pb_select/docs/example.yml +22 -0
  91. data/app/pb_kits/playbook/pb_select/docs/index.js +8 -0
  92. data/app/pb_kits/playbook/pb_select/docs/nitro_theme.gemspec +41 -0
  93. data/app/pb_kits/playbook/pb_select/select.rb +60 -0
  94. data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.html.erb +25 -0
  95. data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.jsx +97 -0
  96. data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.scss +87 -0
  97. data/app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_block.html.erb +25 -0
  98. data/app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_block.jsx +48 -0
  99. data/app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_dark.html.erb +45 -0
  100. data/app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_dark.jsx +68 -0
  101. data/app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_default.html.erb +39 -0
  102. data/app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_default.jsx +67 -0
  103. data/app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_single_select.html.erb +30 -0
  104. data/app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_single_select.jsx +54 -0
  105. data/app/pb_kits/playbook/pb_selectable_card/docs/example.yml +13 -0
  106. data/app/pb_kits/playbook/pb_selectable_card/docs/index.js +4 -0
  107. data/app/pb_kits/playbook/pb_selectable_card/selectable_card.rb +51 -0
  108. data/app/pb_kits/playbook/pb_stat_value/_stat_value.html.erb +1 -1
  109. data/app/pb_kits/playbook/pb_stat_value/stat_value.rb +5 -0
  110. data/app/pb_kits/playbook/pb_text_input/_text_input.html.erb +13 -9
  111. data/app/pb_kits/playbook/pb_text_input/_text_input.jsx +12 -6
  112. data/app/pb_kits/playbook/pb_text_input/_text_input.scss +44 -44
  113. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_default.jsx +68 -12
  114. data/app/pb_kits/playbook/pb_textarea/_textarea.html.erb +20 -0
  115. data/app/pb_kits/playbook/pb_textarea/_textarea.jsx +54 -0
  116. data/app/pb_kits/playbook/pb_textarea/_textarea.scss +31 -0
  117. data/app/pb_kits/playbook/pb_textarea/_textarea_mixin.scss +51 -0
  118. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_custom.html.erb +3 -0
  119. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_custom.jsx +16 -0
  120. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_dark.html.erb +9 -0
  121. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_dark.jsx +21 -0
  122. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_default.html.erb +9 -0
  123. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_default.jsx +21 -0
  124. data/app/pb_kits/playbook/pb_textarea/docs/example.yml +15 -0
  125. data/app/pb_kits/playbook/pb_textarea/docs/index.js +3 -0
  126. data/app/pb_kits/playbook/pb_textarea/textarea.rb +30 -0
  127. data/app/pb_kits/playbook/pb_title/_title_mixin.scss +3 -1
  128. data/app/pb_kits/playbook/pb_user/_user.html.erb +3 -1
  129. data/app/pb_kits/playbook/pb_user/_user.jsx +76 -16
  130. data/app/pb_kits/playbook/pb_user/docs/_user_default.jsx +42 -1
  131. data/app/pb_kits/playbook/pb_user/docs/_user_size.jsx +31 -0
  132. data/app/pb_kits/playbook/pb_user/docs/_user_text_only.jsx +24 -0
  133. data/app/pb_kits/playbook/pb_user/docs/_user_vertical_size.jsx +37 -0
  134. data/app/pb_kits/playbook/pb_user/docs/_user_with_territory.html.erb +40 -0
  135. data/app/pb_kits/playbook/pb_user/docs/_user_with_territory.jsx +57 -0
  136. data/app/pb_kits/playbook/pb_user/docs/example.yml +8 -0
  137. data/app/pb_kits/playbook/pb_user/docs/index.js +5 -0
  138. data/app/pb_kits/playbook/pb_user/user.rb +12 -1
  139. data/app/pb_kits/playbook/props.rb +11 -3
  140. data/app/pb_kits/playbook/tokens/_colors.scss +16 -0
  141. data/app/pb_kits/playbook/tokens/_transition.scss +1 -0
  142. data/lib/playbook/version.rb +1 -1
  143. metadata +117 -15
  144. data/app/pb_kits/playbook/pb_layout/docs/_layout_lg.html.erb +0 -4
  145. data/app/pb_kits/playbook/pb_layout/docs/_layout_lg_dark.html.erb +0 -4
  146. data/app/pb_kits/playbook/pb_layout/docs/_layout_md.html.erb +0 -4
  147. data/app/pb_kits/playbook/pb_layout/docs/_layout_md_dark.html.erb +0 -4
  148. data/app/pb_kits/playbook/pb_layout/docs/_layout_sm.html.erb +0 -4
  149. data/app/pb_kits/playbook/pb_layout/docs/_layout_sm_dark.html.erb +0 -4
  150. data/app/pb_kits/playbook/pb_layout/docs/_layout_xl.html.erb +0 -4
  151. data/app/pb_kits/playbook/pb_layout/docs/_layout_xl_dark.html.erb +0 -4
  152. data/app/pb_kits/playbook/pb_layout/docs/_layout_xs.html.erb +0 -4
  153. data/app/pb_kits/playbook/pb_layout/docs/_layout_xs.jsx +0 -15
  154. data/app/pb_kits/playbook/pb_layout/docs/_layout_xs_dark.html.erb +0 -4
  155. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_default.jsx +0 -10
@@ -0,0 +1,25 @@
1
+ <div class="pb--doc-demo-row">
2
+
3
+ <%= pb_rails("selectable_card", props: {
4
+ input_id: "block",
5
+ name: "block",
6
+ value: "block",
7
+ checked: true
8
+ }) do %>
9
+ <%= pb_rails("title", props: { text: "Block", size: 4 }) %>
10
+ <%= pb_rails("body", props: { tag: "span"}) do %>
11
+ This uses block
12
+ <% end %>
13
+ <% end %>
14
+
15
+ <br><br>
16
+
17
+ <%= pb_rails("selectable_card", props: {
18
+ input_id: "tag",
19
+ name: "tag",
20
+ value: "tag",
21
+ text: "This passes in text",
22
+ checked: false
23
+ }) %>
24
+
25
+ </div>
@@ -0,0 +1,48 @@
1
+ import React from "react"
2
+ import {
3
+ Body,
4
+ SelectableCard,
5
+ Title
6
+ } from "../../"
7
+
8
+ class SelectableCardBlock extends React.Component {
9
+ state = {
10
+ block: true,
11
+ tag: false
12
+ }
13
+
14
+ handleSelect = event => {
15
+ this.setState({
16
+ [event.target.id]: event.target.checked
17
+ })
18
+ }
19
+
20
+ render() {
21
+ return (
22
+ <div class="pb--doc-demo-row">
23
+
24
+ <SelectableCard
25
+ inputId="block"
26
+ name="block"
27
+ value="block"
28
+ checked={this.state.block}
29
+ onChange={this.handleSelect}>
30
+ <Title text="Block" size={4} />
31
+ <Body tag="span">This uses block</Body>
32
+ </SelectableCard>
33
+
34
+ <SelectableCard
35
+ inputId="tag"
36
+ name="tag"
37
+ value="tag"
38
+ checked={this.state.tag}
39
+ onChange={this.handleSelect}
40
+ text="This passes text through the tag">
41
+ </SelectableCard>
42
+
43
+ </div>
44
+ )
45
+ }
46
+ }
47
+
48
+ export default SelectableCardBlock;
@@ -0,0 +1,45 @@
1
+ <div class="pb--doc-demo-row">
2
+
3
+ <%= pb_rails("selectable_card", props: {
4
+ input_id: "selected_with_icon_dark",
5
+ name: "selected_with_icon_dark",
6
+ value: "selected_with_icon_dark",
7
+ checked: true,
8
+ icon: true,
9
+ dark: true
10
+ }) do %>
11
+ Selected, with icon
12
+ <% end %>
13
+
14
+ <%= pb_rails("selectable_card", props: {
15
+ input_id: "selected_without_icon_dark",
16
+ name: "selected_without_icon_dark",
17
+ value: "selected_without_icon_dark",
18
+ checked: true,
19
+ icon: false,
20
+ dark: true
21
+ }) do %>
22
+ Selected, without icon
23
+ <% end %>
24
+
25
+ <%= pb_rails("selectable_card", props: {
26
+ input_id: "unselected_dark",
27
+ name: "unselected_dark",
28
+ value: "unselected_dark",
29
+ checked: false,
30
+ dark: true
31
+ }) do %>
32
+ Unselected
33
+ <% end %>
34
+
35
+ <%= pb_rails("selectable_card", props: {
36
+ input_id: "unselected_dark",
37
+ name: "unselected_dark",
38
+ value: "unselected_dark",
39
+ disabled: true,
40
+ dark: true
41
+ }) do %>
42
+ Disabled
43
+ <% end %>
44
+
45
+ </div>
@@ -0,0 +1,68 @@
1
+ import React from "react"
2
+ import SelectableCard from "../_selectable_card.jsx"
3
+
4
+ class SelectableCardDark extends React.Component {
5
+ state = {
6
+ selected_with_icon_dark: true,
7
+ selected_without_icon_dark: true,
8
+ unselected_dark: false
9
+ }
10
+
11
+ handleSelect = event => {
12
+ this.setState({
13
+ [event.target.id]: event.target.checked
14
+ })
15
+ }
16
+
17
+ render() {
18
+ return (
19
+ <div class="pb--doc-demo-row">
20
+
21
+ <SelectableCard
22
+ dark
23
+ inputId="selected_with_icon_dark"
24
+ name="selected_with_icon_dark"
25
+ value="selected_with_icon_dark"
26
+ icon={true}
27
+ checked={this.state.selected_with_icon_dark}
28
+ onChange={this.handleSelect}>
29
+ {'Selected, with icon'}
30
+ </SelectableCard>
31
+
32
+ <SelectableCard
33
+ dark
34
+ inputId="selected_without_icon_dark"
35
+ name="selected_without_icon_dark"
36
+ value="selected_without_icon_dark"
37
+ icon={false}
38
+ checked={this.state.selected_without_icon_dark}
39
+ onChange={this.handleSelect}>
40
+ {'Selected, without icon'}
41
+ </SelectableCard>
42
+
43
+ <SelectableCard
44
+ dark
45
+ inputId="unselected_dark"
46
+ name="unselected_dark"
47
+ value="unselected_dark"
48
+ checked={this.state.unselected_dark}
49
+ onChange={this.handleSelect}>
50
+ {'Unselected'}
51
+ </SelectableCard>
52
+
53
+ <SelectableCard
54
+ dark
55
+ inputId="unselected_dark"
56
+ name="unselected_dark"
57
+ value="unselected_dark"
58
+ disabled={true}
59
+ onChange={this.handleSelect}>
60
+ {'Unselected'}
61
+ </SelectableCard>
62
+
63
+ </div>
64
+ )
65
+ }
66
+ }
67
+
68
+ export default SelectableCardDark;
@@ -0,0 +1,39 @@
1
+ <div class="pb--doc-demo-row">
2
+
3
+ <%= pb_rails("selectable_card", props: {
4
+ input_id: "selected_with_icon",
5
+ name: "selected_with_icon",
6
+ value: "selected_with_icon",
7
+ checked: true,
8
+ icon: true
9
+ }) do %>
10
+ Selected, with icon
11
+ <% end %>
12
+
13
+ <%= pb_rails("selectable_card", props: {
14
+ input_id: "selected_without_icon",
15
+ name: "selected_without_icon",
16
+ value: "selected_without_icon",
17
+ checked: true,
18
+ }) do %>
19
+ Selected, without icon
20
+ <% end %>
21
+
22
+ <%= pb_rails("selectable_card", props: {
23
+ input_id: "unselected",
24
+ name: "unselected",
25
+ value: "unselected",
26
+ }) do %>
27
+ Unselected
28
+ <% end %>
29
+
30
+ <%= pb_rails("selectable_card", props: {
31
+ input_id: "disabled",
32
+ name: "disabled",
33
+ value: "disabled",
34
+ disabled: true
35
+ }) do %>
36
+ Disabled
37
+ <% end %>
38
+
39
+ </div>
@@ -0,0 +1,67 @@
1
+ import React from "react"
2
+ import SelectableCard from "../_selectable_card.jsx"
3
+ import Icon from "../../pb_icon/_icon.jsx"
4
+
5
+
6
+ class SelectableCardDefault extends React.Component {
7
+ state = {
8
+ selected_with_icon: true,
9
+ selected_without_icon: true,
10
+ unselected: false
11
+ }
12
+
13
+ handleSelect = event => {
14
+ this.setState({
15
+ [event.target.id]: event.target.checked
16
+ })
17
+ }
18
+
19
+ render() {
20
+ return (
21
+ <div class="pb--doc-demo-row">
22
+
23
+ <SelectableCard
24
+ inputId="selected_with_icon"
25
+ name="selected_with_icon"
26
+ value="selected_with_icon"
27
+ icon={true}
28
+ checked={this.state.selected_with_icon}
29
+ onChange={this.handleSelect}>
30
+ {`Selected, with icon`}
31
+ </SelectableCard>
32
+
33
+ <SelectableCard
34
+ inputId="selected_without_icon"
35
+ name="selected_without_icon"
36
+ value="selected_without_icon"
37
+ icon={false}
38
+ checked={this.state.selected_without_icon}
39
+ onChange={this.handleSelect}>
40
+ {`Selected, without icon`}
41
+ </SelectableCard>
42
+
43
+ <SelectableCard
44
+ inputId="unselected"
45
+ name="unselected"
46
+ value="unselected"
47
+ checked={this.state.unselected}
48
+ onChange={this.handleSelect}>
49
+ {`Unselected`}
50
+ </SelectableCard>
51
+
52
+ <SelectableCard
53
+ inputId="disabled"
54
+ name="disabled"
55
+ value="disabled"
56
+ disabled={true}
57
+ checked={this.state.disabled}
58
+ onChange={this.handleSelect}>
59
+ {`Disabled`}
60
+ </SelectableCard>
61
+
62
+ </div>
63
+ )
64
+ }
65
+ }
66
+
67
+ export default SelectableCardDefault;
@@ -0,0 +1,30 @@
1
+ <div class="pb--doc-demo-row">
2
+
3
+ <%= pb_rails("selectable_card", props: {
4
+ input_id: "male",
5
+ name: "gender",
6
+ value: "male",
7
+ multi: false
8
+ }) do %>
9
+ Male
10
+ <% end %>
11
+
12
+ <%= pb_rails("selectable_card", props: {
13
+ input_id: "female",
14
+ name: "gender",
15
+ value: "female",
16
+ multi: false
17
+ }) do %>
18
+ Female
19
+ <% end %>
20
+
21
+ <%= pb_rails("selectable_card", props: {
22
+ input_id: "other",
23
+ name: "gender",
24
+ value: "other",
25
+ multi: false
26
+ }) do %>
27
+ Other
28
+ <% end %>
29
+
30
+ </div>
@@ -0,0 +1,54 @@
1
+ import React from "react";
2
+ import SelectableCard from "../_selectable_card.jsx";
3
+
4
+ class SelectableCardSingleSelect extends React.Component {
5
+ state = {
6
+ selected: null
7
+ }
8
+
9
+ handleSelect = event => {
10
+ this.setState({
11
+ selected: event.target.value
12
+ })
13
+ }
14
+
15
+ render() {
16
+ return (
17
+ <div class="pb--doc-demo-row">
18
+
19
+ <SelectableCard
20
+ inputId="male1"
21
+ name="gender"
22
+ value="male"
23
+ multi={false}
24
+ checked={this.state.selected === 'male'}
25
+ onChange={this.handleSelect.bind(this)}>
26
+ {`Male`}
27
+ </SelectableCard>
28
+
29
+ <SelectableCard
30
+ inputId="female1"
31
+ name="gender"
32
+ value="female"
33
+ multi={false}
34
+ checked={this.state.selected === 'female'}
35
+ onChange={this.handleSelect.bind(this)}>
36
+ {`Female`}
37
+ </SelectableCard>
38
+
39
+ <SelectableCard
40
+ inputId="other1"
41
+ name="gender"
42
+ value="other"
43
+ multi={false}
44
+ checked={this.state.selected === 'other'}
45
+ onChange={this.handleSelect.bind(this)}>
46
+ {`Other`}
47
+ </SelectableCard>
48
+
49
+ </div>
50
+ );
51
+ }
52
+ }
53
+
54
+ export default SelectableCardSingleSelect;
@@ -0,0 +1,13 @@
1
+ examples:
2
+
3
+ rails:
4
+ - selectable_card_default: Default
5
+ - selectable_card_single_select: Single Select
6
+ - selectable_card_block: Block
7
+ - selectable_card_dark: Dark
8
+
9
+ react:
10
+ - selectable_card_default: Default
11
+ - selectable_card_single_select: Single Select
12
+ - selectable_card_block: Block
13
+ - selectable_card_dark: Dark
@@ -0,0 +1,4 @@
1
+ export {default as SelectableCardDefault} from './_selectable_card_default.jsx';
2
+ export {default as SelectableCardSingleSelect} from './_selectable_card_single_select.jsx';
3
+ export {default as SelectableCardDark} from './_selectable_card_dark.jsx';
4
+ export {default as SelectableCardBlock} from './_selectable_card_block.jsx';
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module PbSelectableCard
5
+ class SelectableCard
6
+ include Playbook::Props
7
+
8
+ partial "pb_selectable_card/selectable_card"
9
+
10
+ prop :checked, type: Playbook::Props::Boolean,
11
+ default: false
12
+ prop :dark, type: Playbook::Props::Boolean,
13
+ default: false
14
+ prop :disabled, type: Playbook::Props::Boolean,
15
+ default: false
16
+ prop :icon, type: Playbook::Props::Boolean,
17
+ default: false
18
+ prop :multi, type: Playbook::Props::Boolean,
19
+ default: true
20
+ prop :input_id, type: Playbook::Props::String
21
+ prop :name
22
+ prop :text
23
+ prop :value
24
+
25
+
26
+
27
+
28
+ def classname
29
+ generate_classname("pb_selectable_card_kit", checked_class, dark_class, enable_disabled_class)
30
+ end
31
+
32
+ def input_id_present
33
+ input_id.present? ? input_id : name
34
+ end
35
+
36
+ private
37
+
38
+ def checked_class
39
+ checked ? "checked" : nil
40
+ end
41
+
42
+ def dark_class
43
+ dark ? "dark" : nil
44
+ end
45
+
46
+ def enable_disabled_class
47
+ disabled ? "disabled" : "enabled"
48
+ end
49
+ end
50
+ end
51
+ end