playbook_ui 14.3.2.pre.alpha.PBNTR515typeaheadmarginbottomredux3785 → 14.3.2.pre.alpha.pbntr523enablekitsforradiofix3809
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/pb_kits/playbook/pb_date_picker/sass_partials/_flatpickr_styles.scss +2 -3
- data/app/pb_kits/playbook/pb_form_pill/_form_pill.scss +245 -23
- data/app/pb_kits/playbook/pb_form_pill/_form_pill.tsx +1 -1
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_colors.html.erb +117 -0
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_colors.jsx +227 -0
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_colors.md +1 -0
- data/app/pb_kits/playbook/pb_form_pill/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_form_pill/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_form_pill/form_pill.rb +1 -1
- data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +5 -1
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_color.html.erb +72 -0
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_color.jsx +91 -0
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_color_rails.md +1 -0
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_color_react.md +1 -0
- data/app/pb_kits/playbook/pb_multi_level_select/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_multi_level_select/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select.rb +4 -0
- data/app/pb_kits/playbook/pb_multiple_users_stacked/_multiple_users_stacked.scss +97 -21
- data/app/pb_kits/playbook/pb_multiple_users_stacked/_multiple_users_stacked.test.js +166 -0
- data/app/pb_kits/playbook/pb_multiple_users_stacked/_multiple_users_stacked.tsx +45 -6
- data/app/pb_kits/playbook/pb_multiple_users_stacked/docs/_multiple_users_stacked_bubble.html.erb +73 -0
- data/app/pb_kits/playbook/pb_multiple_users_stacked/docs/_multiple_users_stacked_bubble.jsx +86 -0
- data/app/pb_kits/playbook/pb_multiple_users_stacked/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_multiple_users_stacked/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_multiple_users_stacked/multiple_users_stacked.html.erb +6 -2
- data/app/pb_kits/playbook/pb_multiple_users_stacked/multiple_users_stacked.rb +21 -1
- data/app/pb_kits/playbook/pb_radio/_radio.tsx +92 -33
- data/app/pb_kits/playbook/pb_radio/docs/_radio_custom_children.html.erb +48 -0
- data/app/pb_kits/playbook/pb_radio/docs/_radio_custom_children.jsx +59 -0
- data/app/pb_kits/playbook/pb_radio/docs/_radio_custom_children.md +1 -0
- data/app/pb_kits/playbook/pb_radio/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_radio/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_radio/index.js +17 -0
- data/app/pb_kits/playbook/pb_radio/radio.html.erb +35 -13
- data/app/pb_kits/playbook/pb_radio/radio.rb +3 -1
- data/app/pb_kits/playbook/pb_text_input/_text_input.scss +1 -0
- data/app/pb_kits/playbook/pb_typeahead/_typeahead.scss +1 -0
- data/app/pb_kits/playbook/pb_typeahead/_typeahead.test.jsx +9 -7
- data/app/pb_kits/playbook/pb_typeahead/_typeahead.tsx +4 -3
- data/app/pb_kits/playbook/pb_typeahead/components/Control.tsx +5 -6
- data/app/pb_kits/playbook/pb_typeahead/components/MultiValue.tsx +26 -18
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_color.html.erb +31 -0
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_color.jsx +26 -0
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_color_rails.md +1 -0
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_color_react.md +1 -0
- data/app/pb_kits/playbook/pb_typeahead/docs/example.yml +2 -2
- data/app/pb_kits/playbook/pb_typeahead/docs/index.js +1 -1
- data/app/pb_kits/playbook/pb_typeahead/typeahead.html.erb +1 -2
- data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +5 -6
- data/app/pb_kits/playbook/tokens/_colors.scss +2 -0
- data/dist/chunks/{_typeahead-DaDWXuYo.js → _typeahead-468tQVei.js} +2 -2
- data/dist/chunks/{_weekday_stacked-Drg1rU0J.js → _weekday_stacked-CODev76A.js} +2 -2
- data/dist/chunks/{lib--ErPKv63.js → lib-D2U4I1U6.js} +1 -1
- data/dist/chunks/{pb_form_validation-CHMFwDfe.js → pb_form_validation-zV9OpdSt.js} +1 -1
- data/dist/chunks/vendor.js +1 -1
- data/dist/playbook-doc.js +1 -1
- data/dist/playbook-rails-react-bindings.js +1 -1
- data/dist/playbook-rails.js +1 -1
- data/dist/playbook.css +1 -1
- data/lib/playbook/version.rb +1 -1
- metadata +23 -8
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_margin_bottom.html.erb +0 -88
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_margin_bottom.jsx +0 -60
@@ -0,0 +1,48 @@
|
|
1
|
+
<%
|
2
|
+
options = [
|
3
|
+
{ label: "Orange", value: "Orange" },
|
4
|
+
{ label: "Red", value: "Red" },
|
5
|
+
{ label: "Green", value: "Green" },
|
6
|
+
{ label: "Blue", value: "Blue" },
|
7
|
+
]
|
8
|
+
%>
|
9
|
+
|
10
|
+
<%= pb_rails("radio", props: {
|
11
|
+
custom_children: true,
|
12
|
+
label: "Select",
|
13
|
+
name: "Group1",
|
14
|
+
value: "Select",
|
15
|
+
}) do %>
|
16
|
+
<%= pb_rails("select", props: {
|
17
|
+
min_width: "xs",
|
18
|
+
options: options,
|
19
|
+
}) %>
|
20
|
+
<% end %>
|
21
|
+
|
22
|
+
<%= pb_rails("radio", props: {
|
23
|
+
custom_children: true,
|
24
|
+
label: "Typeahead",
|
25
|
+
name: "Group1",
|
26
|
+
value: "Typeahead",
|
27
|
+
}) do %>
|
28
|
+
<%= pb_rails("typeahead", props: {
|
29
|
+
id: "typeahead-radio",
|
30
|
+
is_multi: false,
|
31
|
+
min_width: "xs",
|
32
|
+
options: options,
|
33
|
+
placeholder: "Select...",
|
34
|
+
})
|
35
|
+
%>
|
36
|
+
<% end %>
|
37
|
+
|
38
|
+
<%= pb_rails("radio", props: {
|
39
|
+
custom_children: true,
|
40
|
+
label: "Typography",
|
41
|
+
name: "Group1",
|
42
|
+
value: "Typography",
|
43
|
+
}) do %>
|
44
|
+
<%= pb_rails("title", props: {
|
45
|
+
text: "Custom Typography",
|
46
|
+
})
|
47
|
+
%>
|
48
|
+
<% end %>
|
@@ -0,0 +1,59 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import Radio from '../_radio'
|
3
|
+
import Select from '../../pb_select/_select'
|
4
|
+
import Typeahead from '../../pb_typeahead/_typeahead'
|
5
|
+
import Title from '../../pb_title/_title'
|
6
|
+
|
7
|
+
const RadioChildren = (props) => {
|
8
|
+
|
9
|
+
|
10
|
+
const options = [
|
11
|
+
{ label: 'Orange', value: 'Orange' },
|
12
|
+
{ label: 'Red', value: 'Red' },
|
13
|
+
{ label: 'Green', value: 'Green' },
|
14
|
+
{ label: 'Blue', value: 'Blue' },
|
15
|
+
]
|
16
|
+
|
17
|
+
return (
|
18
|
+
<div>
|
19
|
+
<Radio
|
20
|
+
customChildren
|
21
|
+
label="Select"
|
22
|
+
name="Group1"
|
23
|
+
tabIndex={0}
|
24
|
+
value="Select"
|
25
|
+
{...props}
|
26
|
+
>
|
27
|
+
<Select
|
28
|
+
minWidth="xs"
|
29
|
+
options={options}
|
30
|
+
/>
|
31
|
+
</Radio>
|
32
|
+
<Radio
|
33
|
+
customChildren
|
34
|
+
label="Typeahead"
|
35
|
+
name="Group1"
|
36
|
+
tabIndex={0}
|
37
|
+
value="Typeahead"
|
38
|
+
{...props}
|
39
|
+
>
|
40
|
+
<Typeahead
|
41
|
+
minWidth="xs"
|
42
|
+
options={options}
|
43
|
+
/>
|
44
|
+
</Radio>
|
45
|
+
<br />
|
46
|
+
<Radio
|
47
|
+
customChildren
|
48
|
+
defaultChecked={false}
|
49
|
+
label="Typography"
|
50
|
+
name="Group1"
|
51
|
+
value="Typography"
|
52
|
+
{...props}
|
53
|
+
>
|
54
|
+
<Title text="Custom Typography" />
|
55
|
+
</Radio>
|
56
|
+
</div>
|
57
|
+
)
|
58
|
+
}
|
59
|
+
export default RadioChildren
|
@@ -0,0 +1 @@
|
|
1
|
+
Use the `custom_children` prop to enable the use of kits instead of text labels.
|
@@ -7,6 +7,7 @@ examples:
|
|
7
7
|
- radio_options: With Options
|
8
8
|
- radio_alignment: Alignment
|
9
9
|
- radio_disabled: Disabled
|
10
|
+
- radio_custom_children: Custom Children
|
10
11
|
|
11
12
|
react:
|
12
13
|
- radio_default: Default
|
@@ -14,6 +15,7 @@ examples:
|
|
14
15
|
- radio_error: With Error
|
15
16
|
- radio_alignment: Alignment
|
16
17
|
- radio_disabled: Disabled
|
18
|
+
- radio_custom_children: Custom Children
|
17
19
|
|
18
20
|
swift:
|
19
21
|
- radio_default_swift: Default
|
@@ -3,3 +3,4 @@ export { default as RadioCustom } from './_radio_custom.jsx'
|
|
3
3
|
export { default as RadioError } from './_radio_error.jsx'
|
4
4
|
export { default as RadioAlignment } from './_radio_alignment.jsx'
|
5
5
|
export { default as RadioDisabled } from './_radio_disabled.jsx'
|
6
|
+
export { default as RadioCustomChildren } from './_radio_custom_children.jsx'
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import PbEnhancedElement from "../pb_enhanced_element"
|
2
|
+
|
3
|
+
const RADIO_SELECTOR = "[data-pb-radio-children]"
|
4
|
+
const RADIO_WRAPPER_SELECTOR = "[data-pb-radio-children-wrapper]"
|
5
|
+
|
6
|
+
export default class PbRadio extends PbEnhancedElement {
|
7
|
+
static get selector() {
|
8
|
+
return RADIO_SELECTOR
|
9
|
+
}
|
10
|
+
|
11
|
+
connect() {
|
12
|
+
const radioWrapperElement = this.element.parentElement.querySelector(RADIO_WRAPPER_SELECTOR)
|
13
|
+
radioWrapperElement.addEventListener("click", () => {
|
14
|
+
this.element.querySelector("input[type='radio']").click()
|
15
|
+
})
|
16
|
+
}
|
17
|
+
}
|
@@ -1,18 +1,40 @@
|
|
1
|
-
|
1
|
+
<% if object.custom_children %>
|
2
|
+
<%= pb_rails("flex", props: {
|
2
3
|
aria: object.aria,
|
3
|
-
|
4
|
+
align: "center",
|
4
5
|
class: object.classname,
|
6
|
+
cursor: "pointer",
|
5
7
|
data: object.data,
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
8
|
+
**combined_html_options
|
9
|
+
}) do %>
|
10
|
+
<%= content_tag(:label,
|
11
|
+
'data-pb-radio-children': 'true',
|
12
|
+
checked: object.checked,
|
13
|
+
class: object.classname,
|
14
|
+
id: object.id,
|
15
|
+
value: object.value) do %>
|
16
|
+
<%= input %>
|
17
|
+
<span class="pb_radio_button"></span>
|
14
18
|
<% end %>
|
19
|
+
<div data-pb-radio-children-wrapper="true"> <%= content %> </div>
|
20
|
+
<% end %>
|
21
|
+
<% else %>
|
22
|
+
<%= content_tag(:label,
|
23
|
+
aria: object.aria,
|
24
|
+
checked: object.checked,
|
25
|
+
class: object.classname,
|
26
|
+
data: object.data,
|
27
|
+
id: object.id,
|
28
|
+
value: object.value,
|
29
|
+
**combined_html_options) do %>
|
30
|
+
|
31
|
+
<% if content.present? %>
|
32
|
+
<%= content %>
|
33
|
+
<% else %>
|
34
|
+
<%= radio_button_tag object.name, object.value, object.selected, object.input_options %>
|
35
|
+
<% end %>
|
15
36
|
|
16
|
-
|
17
|
-
|
18
|
-
<% end %>
|
37
|
+
<span class="pb_radio_button"></span>
|
38
|
+
<%= pb_rails("body", props: { status: object.body_status, text: object.text, dark: object.dark }) %>
|
39
|
+
<% end %>
|
40
|
+
<% end %>
|
@@ -20,6 +20,8 @@ module Playbook
|
|
20
20
|
default: "Radio Text"
|
21
21
|
prop :value, type: Playbook::Props::String,
|
22
22
|
default: "radio_text"
|
23
|
+
prop :custom_children, type: Playbook::Props::Boolean,
|
24
|
+
default: false
|
23
25
|
|
24
26
|
def classname
|
25
27
|
generate_classname("pb_radio_kit") + error_class + alignment_class
|
@@ -34,7 +36,7 @@ module Playbook
|
|
34
36
|
end
|
35
37
|
|
36
38
|
def input
|
37
|
-
radio_button_tag(name, value, checked, input_options.merge(disabled: disabled))
|
39
|
+
radio_button_tag(name, value, checked, input_options.merge(disabled: disabled || input_options[:disabled]))
|
38
40
|
end
|
39
41
|
|
40
42
|
private
|
@@ -109,16 +109,18 @@ test('should pass className prop', () => {
|
|
109
109
|
expect(kit).toHaveClass(className)
|
110
110
|
})
|
111
111
|
|
112
|
-
test('typeahead
|
112
|
+
test('typeahead with colored pills', () => {
|
113
113
|
render(
|
114
114
|
<Typeahead
|
115
|
-
data={{ testid: '
|
116
|
-
|
115
|
+
data={{ testid: 'pills-color-test' }}
|
116
|
+
defaultValue={[options[0]]}
|
117
|
+
isMulti
|
118
|
+
options={options}
|
119
|
+
pillColor="neutral"
|
117
120
|
/>
|
118
121
|
)
|
119
122
|
|
120
|
-
const kit = screen.getByTestId('
|
121
|
-
|
122
|
-
|
123
|
-
expect(textInput).toHaveClass("mb_none")
|
123
|
+
const kit = screen.getByTestId('pills-color-test')
|
124
|
+
const pill = kit.querySelector(".pb_form_pill_kit_neutral")
|
125
|
+
expect(pill).toBeInTheDocument()
|
124
126
|
})
|
@@ -45,13 +45,14 @@ type TypeaheadProps = {
|
|
45
45
|
getOptionLabel?: string | (() => any),
|
46
46
|
getOptionValue?: string | (() => any),
|
47
47
|
name?: string,
|
48
|
-
|
48
|
+
pillColor?: "primary" | "neutral" | "success" | "warning" | "error" | "info" | "data_1" | "data_2" | "data_3" | "data_4" | "data_5" | "data_6" | "data_7" | "data_8" | "windows" | "siding" | "roofing" | "doors" | "gutters" | "solar" | "insulation" | "accessories",
|
49
49
|
} & GlobalProps
|
50
50
|
|
51
51
|
export type SelectValueType = {
|
52
52
|
label: string,
|
53
53
|
value: string,
|
54
54
|
imageUrl?: string,
|
55
|
+
pillColor?: string,
|
55
56
|
}
|
56
57
|
|
57
58
|
type TagOnChangeValues = {
|
@@ -77,7 +78,7 @@ const Typeahead = ({
|
|
77
78
|
htmlOptions = {},
|
78
79
|
id,
|
79
80
|
loadOptions = noop,
|
80
|
-
|
81
|
+
pillColor,
|
81
82
|
...props
|
82
83
|
}: TypeaheadProps) => {
|
83
84
|
const selectProps = {
|
@@ -107,6 +108,7 @@ const Typeahead = ({
|
|
107
108
|
onCreateOption: null as null,
|
108
109
|
plusIcon: false,
|
109
110
|
onMultiValueClick: (_option: SelectValueType): any => undefined,
|
111
|
+
pillColor: pillColor,
|
110
112
|
...props,
|
111
113
|
}
|
112
114
|
|
@@ -136,7 +138,6 @@ const Typeahead = ({
|
|
136
138
|
const htmlProps = buildHtmlProps(htmlOptions)
|
137
139
|
const classes = classnames(
|
138
140
|
'pb_typeahead_kit react-select',
|
139
|
-
`mb_${marginBottom}`,
|
140
141
|
globalProps(props),
|
141
142
|
className
|
142
143
|
)
|
@@ -11,15 +11,14 @@ type Props = {
|
|
11
11
|
const TypeaheadControl = (props: Props) => (
|
12
12
|
<div className="pb_typeahead_wrapper">
|
13
13
|
<TextInput
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
marginBottom="none"
|
14
|
+
dark={props.selectProps.dark}
|
15
|
+
error={props.selectProps.error}
|
16
|
+
label={props.selectProps.label}
|
18
17
|
>
|
19
18
|
<Flex>
|
20
19
|
<components.Control
|
21
|
-
|
22
|
-
|
20
|
+
className="text_input"
|
21
|
+
{...props}
|
23
22
|
/>
|
24
23
|
</Flex>
|
25
24
|
</TextInput>
|
@@ -8,6 +8,7 @@ import { SelectValueType } from '../_typeahead'
|
|
8
8
|
type Props = {
|
9
9
|
data: SelectValueType,
|
10
10
|
multiValueTemplate: any,
|
11
|
+
pillColor?: "primary" | "neutral" | "success" | "warning" | "error" | "info" | "data_1" | "data_2" | "data_3" | "data_4" | "data_5" | "data_6" | "data_7" | "data_8" | "windows" | "siding" | "roofing" | "doors" | "gutters" | "solar" | "insulation" | "accessories",
|
11
12
|
removeProps: any,
|
12
13
|
selectProps: any,
|
13
14
|
}
|
@@ -15,48 +16,55 @@ type Props = {
|
|
15
16
|
const MultiValue = (props: Props) => {
|
16
17
|
const { removeProps } = props
|
17
18
|
const { imageUrl, label } = props.data
|
18
|
-
const { multiKit } = props.selectProps
|
19
|
+
const { dark, multiKit, pillColor } = props.selectProps
|
19
20
|
|
20
21
|
const formPillProps = {
|
21
22
|
marginRight: 'xs',
|
22
23
|
name: label,
|
23
24
|
avatarUrl: '',
|
25
|
+
dark,
|
24
26
|
}
|
25
27
|
|
26
28
|
if (typeof imageUrl === 'string') formPillProps.avatarUrl = imageUrl
|
27
29
|
|
28
30
|
return (
|
29
31
|
<components.MultiValueContainer
|
30
|
-
|
31
|
-
|
32
|
+
className="text_input_multivalue_container"
|
33
|
+
{...props}
|
32
34
|
>
|
33
35
|
{multiKit === 'badge' &&
|
34
36
|
<Badge
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
37
|
+
closeProps={removeProps}
|
38
|
+
removeIcon
|
39
|
+
text={label}
|
40
|
+
variant="primary"
|
39
41
|
/>
|
40
42
|
}
|
41
43
|
|
42
44
|
{multiKit !== 'badge' && imageUrl &&
|
43
45
|
<FormPill
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
46
|
+
avatarUrl={imageUrl}
|
47
|
+
closeProps={removeProps}
|
48
|
+
color={pillColor}
|
49
|
+
dark={dark}
|
50
|
+
marginRight="xs"
|
51
|
+
name={label}
|
52
|
+
size={multiKit === 'smallPill' ? 'small' : ''}
|
53
|
+
text=''
|
54
|
+
{...props}
|
50
55
|
/>
|
51
56
|
}
|
52
57
|
|
53
58
|
{multiKit !== 'badge' && !imageUrl &&
|
54
59
|
<FormPill
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
+
closeProps={removeProps}
|
61
|
+
color={pillColor}
|
62
|
+
dark={dark}
|
63
|
+
marginRight="xs"
|
64
|
+
name=''
|
65
|
+
size={multiKit === 'smallPill' ? 'small' : ''}
|
66
|
+
text={label}
|
67
|
+
{...props}
|
60
68
|
/>
|
61
69
|
}
|
62
70
|
</components.MultiValueContainer>
|
@@ -0,0 +1,31 @@
|
|
1
|
+
<%
|
2
|
+
options = [
|
3
|
+
{ label: 'Windows', value: '#FFA500' },
|
4
|
+
{ label: 'Siding', value: '#FF0000' },
|
5
|
+
{ label: 'Doors', value: '#00FF00' },
|
6
|
+
{ label: 'Roofs', value: '#0000FF' },
|
7
|
+
]
|
8
|
+
%>
|
9
|
+
|
10
|
+
<%= pb_rails("typeahead", props: { id: "typeahead-pills-example1", pill_color: "neutral", default_options: [options.first], options: options, label: "Colors", name: :foo, pills: true }) %>
|
11
|
+
|
12
|
+
<%= pb_rails("button", props: {id: "clear-pills", text: "Clear All Options", variant: "secondary"}) %>
|
13
|
+
|
14
|
+
<!-- This section is an example of the available JavaScript event hooks -->
|
15
|
+
<%= javascript_tag defer: "defer" do %>
|
16
|
+
document.addEventListener("pb-typeahead-kit-typeahead-pills-example1-result-option-select", function(event) {
|
17
|
+
console.log('Option selected')
|
18
|
+
console.dir(event.detail)
|
19
|
+
})
|
20
|
+
document.addEventListener("pb-typeahead-kit-typeahead-pills-example1-result-option-remove", function(event) {
|
21
|
+
console.log('Option removed')
|
22
|
+
console.dir(event.detail)
|
23
|
+
})
|
24
|
+
document.addEventListener("pb-typeahead-kit-typeahead-pills-example1-result-clear", function() {
|
25
|
+
console.log('All options cleared')
|
26
|
+
})
|
27
|
+
|
28
|
+
document.querySelector('#clear-pills').addEventListener('click', function() {
|
29
|
+
document.dispatchEvent(new CustomEvent('pb-typeahead-kit-typeahead-pills-example1:clear'))
|
30
|
+
})
|
31
|
+
<% end %>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import { Typeahead } from 'playbook-ui'
|
3
|
+
|
4
|
+
const options = [
|
5
|
+
{ label: 'Windows', value: '#FFA500' },
|
6
|
+
{ label: 'Siding', value: '#FF0000' },
|
7
|
+
{ label: 'Doors', value: '#00FF00' },
|
8
|
+
{ label: 'Roofs', value: '#0000FF' },
|
9
|
+
]
|
10
|
+
|
11
|
+
const TypeaheadWithPills = (props) => {
|
12
|
+
return (
|
13
|
+
<>
|
14
|
+
<Typeahead
|
15
|
+
isMulti
|
16
|
+
label="Colors"
|
17
|
+
options={options}
|
18
|
+
pillColor="neutral"
|
19
|
+
placeholder=""
|
20
|
+
{...props}
|
21
|
+
/>
|
22
|
+
</>
|
23
|
+
)
|
24
|
+
}
|
25
|
+
|
26
|
+
export default TypeaheadWithPills
|
@@ -0,0 +1 @@
|
|
1
|
+
Change the form pill color by passing the optional `pill_color` prop. Product, Data, and Status colors are available options. Check them out <a href="https://playbook.powerapp.cloud/kits/form_pill#form-pill-colors" target="_blank">here</a> in the Form Pill colors example.
|
@@ -0,0 +1 @@
|
|
1
|
+
Change the form pill color by passing the optional `pillColor` prop. Product, Data, and Status colors are available options. Check them out <a href="https://playbook.powerapp.cloud/kits/form_pill/react#form-pill-colors" target="_blank">here</a> in the Form Pill colors example.
|
@@ -9,7 +9,7 @@ examples:
|
|
9
9
|
- typeahead_inline: Inline
|
10
10
|
- typeahead_multi_kit: Multi Kit Options
|
11
11
|
- typeahead_error_state: Error State
|
12
|
-
-
|
12
|
+
- typeahead_with_pills_color: With Pills (Custom Color)
|
13
13
|
|
14
14
|
react:
|
15
15
|
- typeahead_default: Default
|
@@ -24,4 +24,4 @@ examples:
|
|
24
24
|
- typeahead_async_createable: Createable (+ Async Data)
|
25
25
|
- typeahead_error_state: Error State
|
26
26
|
- typeahead_custom_menu_list: Custom MenuList
|
27
|
-
-
|
27
|
+
- typeahead_with_pills_color: With Pills (Custom Color)
|
@@ -10,4 +10,4 @@ export { default as TypeaheadCreateable } from './_typeahead_createable.jsx'
|
|
10
10
|
export { default as TypeaheadAsyncCreateable } from './_typeahead_async_createable.jsx'
|
11
11
|
export { default as TypeaheadErrorState } from './_typeahead_error_state.jsx'
|
12
12
|
export { default as TypeaheadCustomMenuList } from './_typeahead_custom_menu_list.jsx'
|
13
|
-
export { default as
|
13
|
+
export { default as TypeaheadWithPillsColor } from './_typeahead_with_pills_color.jsx'
|
@@ -20,8 +20,7 @@
|
|
20
20
|
label: object.label,
|
21
21
|
name: object.name,
|
22
22
|
value: object.value,
|
23
|
-
placeholder: object.placeholder
|
24
|
-
margin_bottom: "none",
|
23
|
+
placeholder: object.placeholder
|
25
24
|
}) %>
|
26
25
|
<%= pb_rails("list", props: { ordered: false, borderless: false, xpadding: true, role: "status", aria: { live: "polite" }, data: { pb_typeahead_kit_results: true } }) do %>
|
27
26
|
<% end %>
|
@@ -34,13 +34,12 @@ module Playbook
|
|
34
34
|
prop :search_term_minimum_length, default: 3
|
35
35
|
prop :search_debounce_timeout, default: 250
|
36
36
|
prop :value
|
37
|
-
prop :
|
38
|
-
|
39
|
-
|
37
|
+
prop :pill_color, type: Playbook::Props::Enum,
|
38
|
+
values: %w[primary neutral success warning error info data_1 data_2 data_3 data_4 data_5 data_6 data_7 data_8 windows siding roofing doors gutters solar insulation accessories],
|
39
|
+
default: "primary"
|
40
40
|
|
41
41
|
def classname
|
42
|
-
|
43
|
-
generate_classname("pb_typeahead_kit") + default_margin_bottom
|
42
|
+
generate_classname("pb_typeahead_kit")
|
44
43
|
end
|
45
44
|
|
46
45
|
def inline_class
|
@@ -62,6 +61,7 @@ module Playbook
|
|
62
61
|
def typeahead_react_options
|
63
62
|
base_options = {
|
64
63
|
className: classname,
|
64
|
+
pillColor: pill_color,
|
65
65
|
dark: dark,
|
66
66
|
defaultValue: default_options,
|
67
67
|
error: error,
|
@@ -69,7 +69,6 @@ module Playbook
|
|
69
69
|
inline: inline,
|
70
70
|
isMulti: is_multi,
|
71
71
|
label: label,
|
72
|
-
marginBottom: margin_bottom,
|
73
72
|
multiKit: multi_kit,
|
74
73
|
name: name,
|
75
74
|
options: options,
|
@@ -259,6 +259,7 @@ $solar: $product_4_background !default; // deprecated
|
|
259
259
|
$roofing: $product_5_background !default; // deprecated
|
260
260
|
$gutters: $product_6_background !default; // deprecated
|
261
261
|
$insulation: $product_7_background !default; // deprecated
|
262
|
+
$accessories: $product_8_background !default; // added specifically for form_pill product map
|
262
263
|
$product_colors: (
|
263
264
|
windows: $windows,
|
264
265
|
siding: $siding,
|
@@ -267,6 +268,7 @@ $product_colors: (
|
|
267
268
|
roofing: $roofing,
|
268
269
|
gutters: $gutters,
|
269
270
|
insulation: $insulation,
|
271
|
+
accessories: $accessories,
|
270
272
|
product_1_background: $product_1_background,
|
271
273
|
product_1_highlight: $product_1_highlight,
|
272
274
|
product_2_background: $product_2_background,
|