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.
- checksums.yaml +4 -4
- data/app/assets/images/clark.jpg +0 -0
- data/app/assets/images/giant.jpg +0 -0
- data/app/assets/images/{pb-logo.svg → pb.logo.svg} +2 -2
- data/app/pb_kits/playbook/_playbook.scss +1 -4
- data/app/pb_kits/playbook/data/menu.yml +2 -3
- data/app/pb_kits/playbook/index.js +2 -3
- data/app/pb_kits/playbook/pb_checkbox/_checkbox.html.erb +3 -2
- data/app/pb_kits/playbook/pb_checkbox/_checkbox.jsx +2 -1
- data/app/pb_kits/playbook/pb_checkbox/checkbox.rb +4 -1
- data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_default.html.erb +5 -2
- data/app/pb_kits/playbook/pb_date/_date.html.erb +8 -64
- data/app/pb_kits/playbook/pb_date/_date.jsx +66 -115
- data/app/pb_kits/playbook/pb_date/_date.scss +0 -30
- data/app/pb_kits/playbook/pb_date/date.rb +9 -20
- data/app/pb_kits/playbook/pb_date/docs/_date_default.html.erb +6 -21
- data/app/pb_kits/playbook/pb_date/docs/_date_default.jsx +12 -43
- data/app/pb_kits/playbook/pb_date/docs/example.yml +0 -4
- data/app/pb_kits/playbook/pb_date/docs/index.js +0 -2
- data/app/pb_kits/playbook/pb_date_picker/_date_picker.html.erb +14 -19
- data/app/pb_kits/playbook/pb_flex/_flex.jsx +1 -1
- data/app/pb_kits/playbook/pb_flex/_flex.scss +0 -4
- data/app/pb_kits/playbook/pb_flex/flex.rb +1 -1
- data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +1 -52
- data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +1 -1
- data/app/pb_kits/playbook/pb_form/docs/_form_simple_form.html.erb +1 -1
- data/app/pb_kits/playbook/pb_form/docs/_form_simple_form_validate.html.erb +1 -1
- data/app/pb_kits/playbook/pb_form/form_builder/date_picker_field.rb +1 -19
- data/app/pb_kits/playbook/pb_home_address_street/home_address_street.rb +1 -1
- data/app/pb_kits/playbook/pb_list/_list.jsx +9 -2
- data/app/pb_kits/playbook/pb_progress_step/_progress_step.jsx +1 -3
- data/app/pb_kits/playbook/pb_progress_step/_progress_step.scss +4 -13
- data/app/pb_kits/playbook/pb_progress_step/_progress_step_item.html.erb +1 -1
- data/app/pb_kits/playbook/pb_progress_step/_progress_step_item.jsx +7 -5
- data/app/pb_kits/playbook/pb_progress_step/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_progress_step/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_progress_step/progress_step.rb +3 -5
- data/app/pb_kits/playbook/pb_progress_step/progress_step_item.rb +0 -6
- data/app/pb_kits/playbook/pb_radio/_radio.jsx +0 -3
- data/app/pb_kits/playbook/pb_selectable_list/_item.jsx +90 -0
- data/app/pb_kits/playbook/pb_selectable_list/_selectable_list.html.erb +11 -0
- data/app/pb_kits/playbook/pb_selectable_list/_selectable_list.jsx +47 -0
- data/app/pb_kits/playbook/pb_selectable_list/_selectable_list.scss +17 -0
- data/app/pb_kits/playbook/pb_selectable_list/_selectable_list_item.html.erb +18 -0
- data/app/pb_kits/playbook/pb_selectable_list/docs/_description.md +3 -0
- data/app/pb_kits/playbook/pb_selectable_list/docs/_selectable_list_checkbox.html.erb +30 -0
- data/app/pb_kits/playbook/pb_selectable_list/docs/_selectable_list_checkbox.jsx +32 -0
- data/app/pb_kits/playbook/pb_selectable_list/docs/_selectable_list_radio.html.erb +30 -0
- data/app/pb_kits/playbook/pb_selectable_list/docs/_selectable_list_radio.jsx +32 -0
- data/app/pb_kits/playbook/pb_selectable_list/docs/example.yml +12 -0
- data/app/pb_kits/playbook/pb_selectable_list/docs/index.js +2 -0
- data/app/pb_kits/playbook/pb_selectable_list/selectable_list.rb +24 -0
- data/app/pb_kits/playbook/pb_selectable_list/selectable_list_item.rb +28 -0
- data/app/pb_kits/playbook/pb_timestamp/_timestamp.html.erb +1 -13
- data/app/pb_kits/playbook/pb_timestamp/_timestamp.jsx +20 -96
- data/app/pb_kits/playbook/pb_timestamp/_timestamp.scss +1 -12
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_default.html.erb +1 -21
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_default.jsx +4 -31
- data/app/pb_kits/playbook/pb_timestamp/docs/example.yml +0 -14
- data/app/pb_kits/playbook/pb_timestamp/docs/index.js +0 -7
- data/app/pb_kits/playbook/pb_timestamp/timestamp.rb +1 -67
- data/app/pb_kits/playbook/pb_tooltip/_tooltip.scss +19 -46
- data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_default.html.erb +10 -46
- data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_white.html.erb +4 -4
- data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +2 -3
- data/app/pb_kits/playbook/pb_typeahead/_typeahead.jsx +2 -14
- data/app/pb_kits/playbook/pb_typeahead/components/MultiValue.jsx +15 -8
- data/app/pb_kits/playbook/pb_typeahead/components/Option.jsx +6 -1
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.html.erb +4 -10
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.md +4 -20
- data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +0 -4
- data/app/pb_kits/playbook/vendor.js +0 -3
- data/lib/playbook/version.rb +1 -1
- metadata +20 -75
- data/app/assets/images/github-brands.svg +0 -1
- data/app/assets/images/landing-background.svg +0 -36
- data/app/assets/images/landing-image.svg +0 -203
- data/app/assets/images/pb-white-logo.svg +0 -15
- data/app/pb_kits/playbook/pb_background/_background.html.erb +0 -14
- data/app/pb_kits/playbook/pb_background/_background.jsx +0 -63
- data/app/pb_kits/playbook/pb_background/_background.scss +0 -35
- data/app/pb_kits/playbook/pb_background/background.rb +0 -35
- data/app/pb_kits/playbook/pb_background/docs/_background_dark.html.erb +0 -3
- data/app/pb_kits/playbook/pb_background/docs/_background_dark.jsx +0 -13
- data/app/pb_kits/playbook/pb_background/docs/_background_gradient.html.erb +0 -3
- data/app/pb_kits/playbook/pb_background/docs/_background_gradient.jsx +0 -13
- data/app/pb_kits/playbook/pb_background/docs/_background_image.html.erb +0 -13
- data/app/pb_kits/playbook/pb_background/docs/_background_image.jsx +0 -30
- data/app/pb_kits/playbook/pb_background/docs/_background_light.html.erb +0 -3
- data/app/pb_kits/playbook/pb_background/docs/_background_light.jsx +0 -13
- data/app/pb_kits/playbook/pb_background/docs/_background_white.html.erb +0 -3
- data/app/pb_kits/playbook/pb_background/docs/_background_white.jsx +0 -14
- data/app/pb_kits/playbook/pb_background/docs/_description.md +0 -1
- data/app/pb_kits/playbook/pb_background/docs/example.yml +0 -15
- data/app/pb_kits/playbook/pb_background/docs/index.js +0 -6
- data/app/pb_kits/playbook/pb_collapsible/_collapsible.html.erb +0 -9
- data/app/pb_kits/playbook/pb_collapsible/_collapsible.jsx +0 -77
- data/app/pb_kits/playbook/pb_collapsible/_collapsible.scss +0 -17
- data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleContent.jsx +0 -40
- data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleMain.jsx +0 -58
- data/app/pb_kits/playbook/pb_collapsible/child_kits/_collapsible_content.html.erb +0 -7
- data/app/pb_kits/playbook/pb_collapsible/child_kits/_collapsible_main.html.erb +0 -16
- data/app/pb_kits/playbook/pb_collapsible/collapsible.rb +0 -15
- data/app/pb_kits/playbook/pb_collapsible/collapsible_content.rb +0 -21
- data/app/pb_kits/playbook/pb_collapsible/collapsible_main.rb +0 -24
- data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_dark.html.erb +0 -10
- data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_dark.jsx +0 -17
- data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_default.html.erb +0 -10
- data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_default.jsx +0 -19
- data/app/pb_kits/playbook/pb_collapsible/docs/example.yml +0 -9
- data/app/pb_kits/playbook/pb_collapsible/docs/index.js +0 -2
- data/app/pb_kits/playbook/pb_collapsible/index.js +0 -82
- data/app/pb_kits/playbook/pb_date/docs/_date_alignment.html.erb +0 -24
- data/app/pb_kits/playbook/pb_date/docs/_date_alignment.jsx +0 -35
- data/app/pb_kits/playbook/pb_date/docs/_date_variants.html.erb +0 -27
- data/app/pb_kits/playbook/pb_date/docs/_date_variants.jsx +0 -43
- data/app/pb_kits/playbook/pb_date_time/_date_time.html.erb +0 -31
- data/app/pb_kits/playbook/pb_date_time/_date_time.jsx +0 -73
- data/app/pb_kits/playbook/pb_date_time/_date_time.scss +0 -26
- data/app/pb_kits/playbook/pb_date_time/date_time.rb +0 -29
- data/app/pb_kits/playbook/pb_date_time/docs/_date_time_align.html.erb +0 -17
- data/app/pb_kits/playbook/pb_date_time/docs/_date_time_align.jsx +0 -35
- data/app/pb_kits/playbook/pb_date_time/docs/_date_time_default.html.erb +0 -20
- data/app/pb_kits/playbook/pb_date_time/docs/_date_time_default.jsx +0 -38
- data/app/pb_kits/playbook/pb_date_time/docs/_date_time_size.html.erb +0 -26
- data/app/pb_kits/playbook/pb_date_time/docs/_date_time_size.jsx +0 -75
- data/app/pb_kits/playbook/pb_date_time/docs/_description.md +0 -1
- data/app/pb_kits/playbook/pb_date_time/docs/example.yml +0 -11
- data/app/pb_kits/playbook/pb_date_time/docs/index.js +0 -3
- data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_custom_icon.html.erb +0 -12
- data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_tracker_click_events.jsx +0 -48
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_align.html.erb +0 -69
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_align.jsx +0 -91
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed.html.erb +0 -14
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed.jsx +0 -27
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed_align.html.erb +0 -54
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed_align.jsx +0 -73
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones.html.erb +0 -59
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones.jsx +0 -74
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones_align.html.erb +0 -177
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones_align.jsx +0 -209
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated.html.erb +0 -35
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated.jsx +0 -51
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_align.html.erb +0 -123
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_align.jsx +0 -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
|
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
|
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:
|
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?:
|
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
|
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
|
-
|
22
|
-
|
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
|
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
|
+
%>
|