playbook_ui 7.4.0.pre.alpha5 → 7.4.0.pre.alpha6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (146) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/clark.jpg +0 -0
  3. data/app/assets/images/giant.jpg +0 -0
  4. data/app/assets/images/{pb-logo.svg → pb.logo.svg} +2 -2
  5. data/app/pb_kits/playbook/_playbook.scss +1 -4
  6. data/app/pb_kits/playbook/data/menu.yml +2 -3
  7. data/app/pb_kits/playbook/index.js +2 -3
  8. data/app/pb_kits/playbook/pb_checkbox/_checkbox.html.erb +3 -2
  9. data/app/pb_kits/playbook/pb_checkbox/_checkbox.jsx +2 -1
  10. data/app/pb_kits/playbook/pb_checkbox/checkbox.rb +4 -1
  11. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_default.html.erb +5 -2
  12. data/app/pb_kits/playbook/pb_date/_date.html.erb +8 -64
  13. data/app/pb_kits/playbook/pb_date/_date.jsx +66 -115
  14. data/app/pb_kits/playbook/pb_date/_date.scss +0 -30
  15. data/app/pb_kits/playbook/pb_date/date.rb +9 -20
  16. data/app/pb_kits/playbook/pb_date/docs/_date_default.html.erb +6 -21
  17. data/app/pb_kits/playbook/pb_date/docs/_date_default.jsx +12 -43
  18. data/app/pb_kits/playbook/pb_date/docs/example.yml +0 -4
  19. data/app/pb_kits/playbook/pb_date/docs/index.js +0 -2
  20. data/app/pb_kits/playbook/pb_date_picker/_date_picker.html.erb +14 -19
  21. data/app/pb_kits/playbook/pb_flex/_flex.jsx +1 -1
  22. data/app/pb_kits/playbook/pb_flex/_flex.scss +0 -4
  23. data/app/pb_kits/playbook/pb_flex/flex.rb +1 -1
  24. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +1 -52
  25. data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +1 -1
  26. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form.html.erb +1 -1
  27. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form_validate.html.erb +1 -1
  28. data/app/pb_kits/playbook/pb_form/form_builder/date_picker_field.rb +1 -19
  29. data/app/pb_kits/playbook/pb_home_address_street/home_address_street.rb +1 -1
  30. data/app/pb_kits/playbook/pb_list/_list.jsx +9 -2
  31. data/app/pb_kits/playbook/pb_progress_step/_progress_step.jsx +1 -3
  32. data/app/pb_kits/playbook/pb_progress_step/_progress_step.scss +4 -13
  33. data/app/pb_kits/playbook/pb_progress_step/_progress_step_item.html.erb +1 -1
  34. data/app/pb_kits/playbook/pb_progress_step/_progress_step_item.jsx +7 -5
  35. data/app/pb_kits/playbook/pb_progress_step/docs/example.yml +0 -2
  36. data/app/pb_kits/playbook/pb_progress_step/docs/index.js +0 -1
  37. data/app/pb_kits/playbook/pb_progress_step/progress_step.rb +3 -5
  38. data/app/pb_kits/playbook/pb_progress_step/progress_step_item.rb +0 -6
  39. data/app/pb_kits/playbook/pb_radio/_radio.jsx +0 -3
  40. data/app/pb_kits/playbook/pb_selectable_list/_item.jsx +90 -0
  41. data/app/pb_kits/playbook/pb_selectable_list/_selectable_list.html.erb +11 -0
  42. data/app/pb_kits/playbook/pb_selectable_list/_selectable_list.jsx +47 -0
  43. data/app/pb_kits/playbook/pb_selectable_list/_selectable_list.scss +17 -0
  44. data/app/pb_kits/playbook/pb_selectable_list/_selectable_list_item.html.erb +18 -0
  45. data/app/pb_kits/playbook/pb_selectable_list/docs/_description.md +3 -0
  46. data/app/pb_kits/playbook/pb_selectable_list/docs/_selectable_list_checkbox.html.erb +30 -0
  47. data/app/pb_kits/playbook/pb_selectable_list/docs/_selectable_list_checkbox.jsx +32 -0
  48. data/app/pb_kits/playbook/pb_selectable_list/docs/_selectable_list_radio.html.erb +30 -0
  49. data/app/pb_kits/playbook/pb_selectable_list/docs/_selectable_list_radio.jsx +32 -0
  50. data/app/pb_kits/playbook/pb_selectable_list/docs/example.yml +12 -0
  51. data/app/pb_kits/playbook/pb_selectable_list/docs/index.js +2 -0
  52. data/app/pb_kits/playbook/pb_selectable_list/selectable_list.rb +24 -0
  53. data/app/pb_kits/playbook/pb_selectable_list/selectable_list_item.rb +28 -0
  54. data/app/pb_kits/playbook/pb_timestamp/_timestamp.html.erb +1 -13
  55. data/app/pb_kits/playbook/pb_timestamp/_timestamp.jsx +20 -96
  56. data/app/pb_kits/playbook/pb_timestamp/_timestamp.scss +1 -12
  57. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_default.html.erb +1 -21
  58. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_default.jsx +4 -31
  59. data/app/pb_kits/playbook/pb_timestamp/docs/example.yml +0 -14
  60. data/app/pb_kits/playbook/pb_timestamp/docs/index.js +0 -7
  61. data/app/pb_kits/playbook/pb_timestamp/timestamp.rb +1 -67
  62. data/app/pb_kits/playbook/pb_tooltip/_tooltip.scss +19 -46
  63. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_default.html.erb +10 -46
  64. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_white.html.erb +4 -4
  65. data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +2 -3
  66. data/app/pb_kits/playbook/pb_typeahead/_typeahead.jsx +2 -14
  67. data/app/pb_kits/playbook/pb_typeahead/components/MultiValue.jsx +15 -8
  68. data/app/pb_kits/playbook/pb_typeahead/components/Option.jsx +6 -1
  69. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.html.erb +4 -10
  70. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.md +4 -20
  71. data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +0 -4
  72. data/app/pb_kits/playbook/vendor.js +0 -3
  73. data/lib/playbook/version.rb +1 -1
  74. metadata +20 -75
  75. data/app/assets/images/github-brands.svg +0 -1
  76. data/app/assets/images/landing-background.svg +0 -36
  77. data/app/assets/images/landing-image.svg +0 -203
  78. data/app/assets/images/pb-white-logo.svg +0 -15
  79. data/app/pb_kits/playbook/pb_background/_background.html.erb +0 -14
  80. data/app/pb_kits/playbook/pb_background/_background.jsx +0 -63
  81. data/app/pb_kits/playbook/pb_background/_background.scss +0 -35
  82. data/app/pb_kits/playbook/pb_background/background.rb +0 -35
  83. data/app/pb_kits/playbook/pb_background/docs/_background_dark.html.erb +0 -3
  84. data/app/pb_kits/playbook/pb_background/docs/_background_dark.jsx +0 -13
  85. data/app/pb_kits/playbook/pb_background/docs/_background_gradient.html.erb +0 -3
  86. data/app/pb_kits/playbook/pb_background/docs/_background_gradient.jsx +0 -13
  87. data/app/pb_kits/playbook/pb_background/docs/_background_image.html.erb +0 -13
  88. data/app/pb_kits/playbook/pb_background/docs/_background_image.jsx +0 -30
  89. data/app/pb_kits/playbook/pb_background/docs/_background_light.html.erb +0 -3
  90. data/app/pb_kits/playbook/pb_background/docs/_background_light.jsx +0 -13
  91. data/app/pb_kits/playbook/pb_background/docs/_background_white.html.erb +0 -3
  92. data/app/pb_kits/playbook/pb_background/docs/_background_white.jsx +0 -14
  93. data/app/pb_kits/playbook/pb_background/docs/_description.md +0 -1
  94. data/app/pb_kits/playbook/pb_background/docs/example.yml +0 -15
  95. data/app/pb_kits/playbook/pb_background/docs/index.js +0 -6
  96. data/app/pb_kits/playbook/pb_collapsible/_collapsible.html.erb +0 -9
  97. data/app/pb_kits/playbook/pb_collapsible/_collapsible.jsx +0 -77
  98. data/app/pb_kits/playbook/pb_collapsible/_collapsible.scss +0 -17
  99. data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleContent.jsx +0 -40
  100. data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleMain.jsx +0 -58
  101. data/app/pb_kits/playbook/pb_collapsible/child_kits/_collapsible_content.html.erb +0 -7
  102. data/app/pb_kits/playbook/pb_collapsible/child_kits/_collapsible_main.html.erb +0 -16
  103. data/app/pb_kits/playbook/pb_collapsible/collapsible.rb +0 -15
  104. data/app/pb_kits/playbook/pb_collapsible/collapsible_content.rb +0 -21
  105. data/app/pb_kits/playbook/pb_collapsible/collapsible_main.rb +0 -24
  106. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_dark.html.erb +0 -10
  107. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_dark.jsx +0 -17
  108. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_default.html.erb +0 -10
  109. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_default.jsx +0 -19
  110. data/app/pb_kits/playbook/pb_collapsible/docs/example.yml +0 -9
  111. data/app/pb_kits/playbook/pb_collapsible/docs/index.js +0 -2
  112. data/app/pb_kits/playbook/pb_collapsible/index.js +0 -82
  113. data/app/pb_kits/playbook/pb_date/docs/_date_alignment.html.erb +0 -24
  114. data/app/pb_kits/playbook/pb_date/docs/_date_alignment.jsx +0 -35
  115. data/app/pb_kits/playbook/pb_date/docs/_date_variants.html.erb +0 -27
  116. data/app/pb_kits/playbook/pb_date/docs/_date_variants.jsx +0 -43
  117. data/app/pb_kits/playbook/pb_date_time/_date_time.html.erb +0 -31
  118. data/app/pb_kits/playbook/pb_date_time/_date_time.jsx +0 -73
  119. data/app/pb_kits/playbook/pb_date_time/_date_time.scss +0 -26
  120. data/app/pb_kits/playbook/pb_date_time/date_time.rb +0 -29
  121. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_align.html.erb +0 -17
  122. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_align.jsx +0 -35
  123. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_default.html.erb +0 -20
  124. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_default.jsx +0 -38
  125. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_size.html.erb +0 -26
  126. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_size.jsx +0 -75
  127. data/app/pb_kits/playbook/pb_date_time/docs/_description.md +0 -1
  128. data/app/pb_kits/playbook/pb_date_time/docs/example.yml +0 -11
  129. data/app/pb_kits/playbook/pb_date_time/docs/index.js +0 -3
  130. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_custom_icon.html.erb +0 -12
  131. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_tracker_click_events.jsx +0 -48
  132. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_align.html.erb +0 -69
  133. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_align.jsx +0 -91
  134. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed.html.erb +0 -14
  135. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed.jsx +0 -27
  136. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed_align.html.erb +0 -54
  137. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed_align.jsx +0 -73
  138. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones.html.erb +0 -59
  139. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones.jsx +0 -74
  140. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones_align.html.erb +0 -177
  141. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones_align.jsx +0 -209
  142. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated.html.erb +0 -35
  143. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated.jsx +0 -51
  144. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_align.html.erb +0 -123
  145. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_align.jsx +0 -146
  146. data/app/pb_kits/playbook/pb_typeahead/components/ClearIndicator.jsx +0 -20
@@ -12,7 +12,6 @@ type ProgressStepProps = {
12
12
  children?: array<React.ReactChild>,
13
13
  orientation?: "horizontal" | "vertical",
14
14
  icon?: boolean,
15
- showIcon?: boolean,
16
15
  variant?: string,
17
16
  color?: string,
18
17
  }
@@ -24,10 +23,9 @@ const ProgressStep = (props: ProgressStepProps) => {
24
23
  color,
25
24
  orientation = 'horizontal',
26
25
  icon = false,
27
- showIcon = false,
28
26
  variant,
29
27
  } = props
30
- const iconStyle = icon === true || showIcon === true ? 'icon' : ''
28
+ const iconStyle = icon === true ? 'icon' : ''
31
29
  const progressStepCss = buildCss(
32
30
  'pb_progress_step_kit',
33
31
  orientation,
@@ -151,11 +151,8 @@
151
151
  .circle{
152
152
  height: 24px;
153
153
  width: 24px;
154
- border: $primary solid $border_rad_light;
154
+ border: $primary solid 6px;
155
155
  background-color: rgba($white, $opacity_8);
156
- svg {
157
- color: darken($primary,25%);
158
- }
159
156
  }
160
157
  &::before {
161
158
  background-color: $primary;
@@ -252,16 +249,10 @@
252
249
  }
253
250
  }
254
251
  //End of Vertical
255
- &[class*=icon]{
256
- [class*=progress_step_item][class*=_complete],
257
- [class*=progress_step_item][class*=_active] {
258
- [class*=box] .circle svg {
259
- opacity: 1;
260
-
261
- }
262
- }
263
- }
264
252
 
253
+ &[class*=icon] [class*=_complete] svg{
254
+ opacity: 1;
255
+ }
265
256
 
266
257
  &[class*=dark] {
267
258
  [class*=progress_step_item]{
@@ -4,7 +4,7 @@
4
4
  class: object.classname) do %>
5
5
  <div class="box">
6
6
  <div class="circle">
7
- <%= pb_rails("icon", props: { icon: object.icon, size: "xs" }) if object.icon.present? %>
7
+ <%= pb_rails("icon", props: { icon: "check", size: "xs" }) %>
8
8
  </div>
9
9
  <div class="content">
10
10
  <%= capture(&object.children) %>
@@ -7,16 +7,14 @@ import { Icon } from '..'
7
7
 
8
8
  type ProgressStepItemProps = {
9
9
  className?: string,
10
- status?: "complete" | "active" | "inactive" | "hidden",
10
+ status?: 'complete' | 'active' | 'inactive' | 'hidden',
11
11
  children?: React.Node,
12
- icon?: string,
13
12
  }
14
13
 
15
14
  const ProgressStepItem = ({
16
15
  className,
17
16
  status = 'inactive',
18
17
  children,
19
- icon = 'check',
20
18
  }: ProgressStepItemProps) => {
21
19
  const progressStepItem = buildCss('pb_progress_step_item', status)
22
20
 
@@ -24,9 +22,13 @@ const ProgressStepItem = ({
24
22
  <li className={classnames(progressStepItem, className)}>
25
23
  <div className="box">
26
24
  <div className="circle">
27
- <Icon icon={icon} />
25
+ <Icon
26
+ icon="check"
27
+ />
28
+ </div>
29
+ <div className="content">
30
+ {children}
28
31
  </div>
29
- <div className="content">{children}</div>
30
32
  </div>
31
33
  </li>
32
34
  )
@@ -3,11 +3,9 @@ examples:
3
3
  - progress_step_default: Default
4
4
  - progress_step_vertical: Vertical
5
5
  - progress_step_tracker: Tracker
6
- - progress_step_custom_icon: Custom Icon
7
6
 
8
7
 
9
8
  react:
10
9
  - progress_step_default: Default
11
10
  - progress_step_vertical: Vertical
12
11
  - progress_step_tracker: Tracker
13
- - progress_step_tracker_click_events: Using State
@@ -1,4 +1,3 @@
1
1
  export { default as ProgressStepDefault } from './_progress_step_default.jsx'
2
2
  export { default as ProgressStepVertical } from './_progress_step_vertical.jsx'
3
3
  export { default as ProgressStepTracker } from './_progress_step_tracker.jsx'
4
- export { default as ProgressStepTrackerClickEvents } from './_progress_step_tracker_click_events.jsx'
@@ -12,14 +12,12 @@ module Playbook
12
12
  default: "horizontal"
13
13
  prop :icon, type: Playbook::Props::Boolean,
14
14
  default: false
15
- prop :show_icon, type: Playbook::Props::Boolean,
16
- default: false
17
15
  prop :variant, type: Playbook::Props::Enum,
18
16
  values: %w[default tracker],
19
17
  default: "default"
20
18
  prop :color, type: Playbook::Props::Enum,
21
- values: %w[primary info],
22
- default: "primary"
19
+ values: %w[primary info],
20
+ default: "primary"
23
21
  def classname
24
22
  generate_classname("pb_progress_step_kit", orientation, icon_class, variant_class, color_class)
25
23
  end
@@ -27,7 +25,7 @@ module Playbook
27
25
  private
28
26
 
29
27
  def icon_class
30
- icon === true || show_icon === true ? "icon" : nil
28
+ icon === true ? "icon" : nil
31
29
  end
32
30
 
33
31
  def variant_class
@@ -11,12 +11,6 @@ module Playbook
11
11
  values: %w[complete active inactive hidden],
12
12
  default: "inactive"
13
13
 
14
- prop :icon, required: false, default: "check"
15
-
16
- def name_icon
17
- icon ? icon : "check"
18
- end
19
-
20
14
  def classname
21
15
  generate_classname("pb_progress_step_item", status)
22
16
  end
@@ -19,7 +19,6 @@ type RadioProps = {
19
19
  label: String,
20
20
  name: String,
21
21
  value: String,
22
- text: String,
23
22
  onChange: (Boolean)=>void,
24
23
  }
25
24
 
@@ -33,7 +32,6 @@ const Radio = ({
33
32
  id,
34
33
  label,
35
34
  name = 'radio_name',
36
- text = 'Radio Text',
37
35
  value = 'radio_text',
38
36
  onChange = () => {},
39
37
  ...props
@@ -57,7 +55,6 @@ const Radio = ({
57
55
  id={id}
58
56
  name={name}
59
57
  onChange={onChange}
60
- text={text}
61
58
  type="radio"
62
59
  value={value}
63
60
  />
@@ -0,0 +1,90 @@
1
+ /* @flow */
2
+ import React, { Node } from 'react'
3
+ import classnames from 'classnames'
4
+ import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
5
+ import { globalProps } from '../utilities/globalProps.js'
6
+ import { Checkbox, ListItem, Radio } from '..'
7
+
8
+ type SelectableListItemProps = {
9
+ aria?: object,
10
+ children: array<Node> | Node,
11
+ checked?: boolean,
12
+ className?: string,
13
+ data?: object,
14
+ defaultChecked?: boolean,
15
+ id?: string,
16
+ label?: string,
17
+ text?: string,
18
+ name?: string,
19
+ value?: string,
20
+ variant?: string,
21
+ onChange: (boolean)=>void,
22
+ }
23
+
24
+ const SelectableListItem = ({
25
+ aria = {},
26
+ checked = false,
27
+ children,
28
+ className,
29
+ data = {},
30
+ defaultChecked,
31
+ id,
32
+ label,
33
+ text = '',
34
+ name = '',
35
+ value = '',
36
+ variant = 'checkbox',
37
+ onChange = () => {},
38
+ ...props
39
+ }: SelectableListItemProps) => {
40
+ const ariaProps = buildAriaProps(aria)
41
+ const dataProps = buildDataProps(data)
42
+ const classes = classnames(
43
+ buildCss('pb_selectable_list_item_kit'),
44
+ globalProps(props),
45
+ className
46
+ )
47
+
48
+ return (
49
+ <ListItem {...props}>
50
+ <div
51
+ {...ariaProps}
52
+ {...dataProps}
53
+ className={classes}
54
+ >
55
+ <Choose>
56
+ <When condition={variant == 'checkbox'}>
57
+ <Checkbox
58
+ checked={checked}
59
+ id={id}
60
+ name={name}
61
+ onChange={onChange}
62
+ // eslint suppressor, text is needed to display on screen
63
+ text={label || (text && false)}
64
+ type="checkbox"
65
+ value={value}
66
+ {...props}
67
+ />
68
+ {children}
69
+ </When>
70
+ <When condition={variant == 'radio'}>
71
+ <Radio
72
+ defaultChecked={defaultChecked}
73
+ id={id}
74
+ label={label}
75
+ name={name}
76
+ onChange={onChange}
77
+ type="radio"
78
+ value={value}
79
+ {...props}
80
+ />
81
+ {children}
82
+ </When>
83
+ <Otherwise>{children}</Otherwise>
84
+ </Choose>
85
+ </div>
86
+ </ListItem>
87
+ )
88
+ }
89
+
90
+ export default SelectableListItem
@@ -0,0 +1,11 @@
1
+ <%= content_tag(:div,
2
+ aria: object.aria,
3
+ class: object.classname,
4
+ data: object.data,
5
+ id: object.id) do %>
6
+ <%= pb_rails("list") do %>
7
+ <% object.items.each do |item| %>
8
+ <%= pb_rails("selectable_list/selectable_list_item", props: item.merge(variant: object.variant) )%>
9
+ <% end %>
10
+ <% end %>
11
+ <% end %>
@@ -0,0 +1,47 @@
1
+ /* @flow */
2
+ import React from 'react'
3
+ import classnames from 'classnames'
4
+ import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
5
+ import { globalProps } from '../utilities/globalProps.js'
6
+ import { List } from '..'
7
+ import SelectableListItem from './_item.jsx'
8
+
9
+ type SelectableListProps = {
10
+ aria?: object,
11
+ children?: Node,
12
+ className?: string,
13
+ data?: object,
14
+ id?: string,
15
+ variant?: 'checkbox' | 'radio',
16
+ }
17
+
18
+ const SelectableList = (props: SelectableListProps) => {
19
+ const {
20
+ aria = {},
21
+ children,
22
+ className,
23
+ data = {},
24
+ id,
25
+ } = props
26
+
27
+ const ariaProps = buildAriaProps(aria)
28
+ const classes = classnames(buildCss('pb_selectable_list_kit'), globalProps(props), className)
29
+ const dataProps = buildDataProps(data)
30
+
31
+ return (
32
+ <div
33
+ {...ariaProps}
34
+ {...dataProps}
35
+ className={classes}
36
+ id={id}
37
+ >
38
+ <List {...props}>
39
+ {children}
40
+ </List>
41
+ </div>
42
+ )
43
+ }
44
+
45
+ SelectableList.Item = SelectableListItem
46
+
47
+ export default SelectableList
@@ -0,0 +1,17 @@
1
+ @import "../tokens/colors";
2
+ @import "../tokens/spacing";
3
+
4
+ [class^=pb_selectable_list]{
5
+ margin-bottom: 0px;
6
+ [class^=pb_item_kit] {
7
+ &:hover {
8
+ background-color: $bg_light;
9
+ }
10
+ }
11
+ [class^=pb_radio_kit] {
12
+ margin-left: $space_xs;
13
+ }
14
+ [class^=pb_checkbox_kit] {
15
+ margin-left: $space_xs;
16
+ }
17
+ }
@@ -0,0 +1,18 @@
1
+ <%= content_tag(:li,
2
+ aria: object.aria,
3
+ class: object.classname,
4
+ data: object.data,
5
+ id: object.id) do %>
6
+ <% puts object.variant %>
7
+ <% if object.variant == "radio"%>
8
+ <%= pb_rails("radio", props: { text: object.text, checked: object.checked, input_options: object.input_options } ) %>
9
+ <% if object.children.present? %>
10
+ <%= capture(&object.children) %>
11
+ <% end %>
12
+ <% else %>
13
+ <%= pb_rails("checkbox", props: { text: object.text, checked: object.checked, input_options: object.input_options } ) %>
14
+ <% if object.children.present? %>
15
+ <%= capture(&object.children) %>
16
+ <% end %>
17
+ <% end %>
18
+ <% end %>
@@ -0,0 +1,3 @@
1
+ Selectable List Kit can take variants checkbox and radio. Regardless of which variant type, each selectable list item needs a `value`, `name`, and `id` (these props are `<input>` attributes).
2
+
3
+ The Selectable List Item`id` prop will provide the `for` attribute to `<label>` in the kit, so no additional attributes are needed for the association between `<label>` and `<input>`.
@@ -0,0 +1,30 @@
1
+ <%= pb_rails("selectable_list",
2
+ props: {
3
+ variant: "checkbox",
4
+ items: [
5
+ { text: "Mild",
6
+ input_options: {
7
+ value: "1",
8
+ name: "checkbox-name-1",
9
+ id: "checkbox-id-1",
10
+ }
11
+ },
12
+ { text: "Medium",
13
+ checked: true,
14
+ input_options: {
15
+ value: "2",
16
+ name: "checkbox-name-2",
17
+ id: "checkbox-id-2",
18
+ }
19
+ },
20
+ { text: "Hot",
21
+ input_options: {
22
+ value: "3",
23
+ name: "checkbox-name-3",
24
+ id: "checkbox-id-3",
25
+ }
26
+ }
27
+ ]
28
+ }
29
+ )
30
+ %>
@@ -0,0 +1,32 @@
1
+ import React from 'react'
2
+ import { SelectableList } from '../..'
3
+
4
+ const SelectableListDefault = () => {
5
+ return (
6
+ <div>
7
+ <SelectableList variant="checkbox">
8
+ <SelectableList.Item
9
+ id="checkbox-id-1"
10
+ label="Mild"
11
+ name="checkbox-name-1"
12
+ value="1"
13
+ />
14
+ <SelectableList.Item
15
+ checked
16
+ id="checkbox-id-2"
17
+ label="Medium"
18
+ name="checkbox-name-2"
19
+ value="2"
20
+ />
21
+ <SelectableList.Item
22
+ id="checkbox-id-3"
23
+ label="Hot"
24
+ name="checkbox-name-3"
25
+ value="3"
26
+ />
27
+ </SelectableList>
28
+ </div>
29
+ )
30
+ }
31
+
32
+ export default SelectableListDefault
@@ -0,0 +1,30 @@
1
+ <%= pb_rails("selectable_list",
2
+ props: {
3
+ variant: "radio",
4
+ items: [
5
+ { text: "Small",
6
+ input_options: {
7
+ value: "1",
8
+ name: "radio-name",
9
+ id: "radio-id-1",
10
+ }
11
+ },
12
+ { text: "Medium",
13
+ checked: true,
14
+ input_options: {
15
+ value: "2",
16
+ name: "radio-name",
17
+ id: "radio-id-2",
18
+ }
19
+ },
20
+ { text: "Large",
21
+ input_options: {
22
+ value: "3",
23
+ name: "radio-name",
24
+ id: "radio-id-3",
25
+ }
26
+ }
27
+ ]
28
+ }
29
+ )
30
+ %>