playbook_ui 13.27.0.pre.alpha.PLAY1250fixTextInpputaddonborderradiusformgroup2862 → 13.27.0.pre.alpha.powercentrainplaybookpt22905
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_avatar/Utilities/GetPlacementPropsHelper.tsx +16 -0
- data/app/pb_kits/playbook/pb_avatar/_avatar.scss +16 -0
- data/app/pb_kits/playbook/pb_avatar/avatar.html.erb +1 -1
- data/app/pb_kits/playbook/pb_avatar/avatar.rb +4 -0
- data/app/pb_kits/playbook/pb_avatar/avatar.test.js +47 -0
- data/app/pb_kits/playbook/pb_avatar/docs/_avatar_badge_component_overlay.html.erb +46 -66
- data/app/pb_kits/playbook/pb_avatar/docs/_avatar_badge_component_overlay.jsx +8 -29
- data/app/pb_kits/playbook/pb_avatar/docs/_avatar_badge_component_overlay.md +3 -0
- data/app/pb_kits/playbook/pb_avatar/docs/_avatar_circle_icon_component_overlay.html.erb +13 -33
- data/app/pb_kits/playbook/pb_avatar/docs/_avatar_circle_icon_component_overlay.jsx +48 -67
- data/app/pb_kits/playbook/pb_avatar/docs/_avatar_circle_icon_component_overlay.md +3 -0
- data/app/pb_kits/playbook/pb_avatar/docs/_avatar_default.jsx +0 -20
- data/app/pb_kits/playbook/pb_avatar/docs/example.yml +2 -2
- data/app/pb_kits/playbook/pb_body/_body.scss +3 -0
- data/app/pb_kits/playbook/pb_body/_body_mixins.scss +1 -1
- data/app/pb_kits/playbook/pb_button/_button.scss +3 -3
- data/app/pb_kits/playbook/pb_button/_button_mixins.scss +6 -5
- data/app/pb_kits/playbook/pb_caption/_caption_mixin.scss +2 -2
- data/app/pb_kits/playbook/pb_card/_card_mixin.scss +5 -0
- data/app/pb_kits/playbook/pb_card/card.rb +1 -1
- data/app/pb_kits/playbook/pb_card/docs/_card_background.html.erb +20 -0
- data/app/pb_kits/playbook/pb_card/docs/_card_background.jsx +41 -1
- data/app/pb_kits/playbook/pb_card/docs/_card_background.md +1 -1
- data/app/pb_kits/playbook/pb_card/docs/_card_header.html.erb +1 -1
- data/app/pb_kits/playbook/pb_card/docs/_card_header.md +1 -1
- data/app/pb_kits/playbook/pb_card/docs/_card_highlight.md +1 -1
- data/app/pb_kits/playbook/pb_dashboard/commonSettings.js +1 -1
- data/app/pb_kits/playbook/pb_dashboard/pbChartsDarkTheme.ts +1 -1
- data/app/pb_kits/playbook/pb_dashboard/pbChartsLightTheme.ts +1 -1
- data/app/pb_kits/playbook/pb_detail/_detail_mixins.scss +1 -1
- data/app/pb_kits/playbook/pb_docs/kit_example.html.erb +3 -3
- data/app/pb_kits/playbook/pb_dropdown/_dropdown.scss +2 -1
- data/app/pb_kits/playbook/pb_dropdown/_dropdown.tsx +4 -2
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default.html.erb +3 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default.md +1 -1
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_subcomponent_structure.md +5 -6
- data/app/pb_kits/playbook/pb_dropdown/docs/{_dropdown_subcomponent_structure.html.erb → _dropdown_subcomponent_structure_rails.html.erb} +3 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_subcomponent_structure_rails.md +6 -0
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_display.md +3 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_display_rails.md +5 -0
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_options.md +1 -1
- data/app/pb_kits/playbook/pb_dropdown/docs/{_dropdown_with_custom_options.html.erb → _dropdown_with_custom_options_rails.html.erb} +3 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_options_rails.md +1 -0
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_padding.html.erb +3 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_padding.md +1 -1
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_trigger.md +1 -1
- data/app/pb_kits/playbook/pb_dropdown/docs/{_dropdown_with_custom_trigger.html.erb → _dropdown_with_custom_trigger_rails.html.erb} +3 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_trigger_rails.md +1 -0
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_label.html.erb +3 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_label.md +1 -1
- data/app/pb_kits/playbook/pb_dropdown/docs/example.yml +6 -6
- data/app/pb_kits/playbook/pb_dropdown/dropdown.html.erb +1 -0
- data/app/pb_kits/playbook/pb_dropdown/dropdown.rb +1 -0
- data/app/pb_kits/playbook/pb_dropdown/dropdown_option.html.erb +1 -1
- data/app/pb_kits/playbook/pb_dropdown/dropdown_option.rb +1 -1
- data/app/pb_kits/playbook/pb_dropdown/index.js +2 -1
- data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownOption.tsx +4 -2
- data/app/pb_kits/playbook/pb_form_pill/_form_pill.scss +1 -1
- data/app/pb_kits/playbook/pb_multiple_users/_multiple_users.scss +8 -0
- data/app/pb_kits/playbook/pb_title/_title.scss +5 -1
- data/app/pb_kits/playbook/tokens/_titles.scss +9 -5
- data/app/pb_kits/playbook/tokens/_typography.scss +10 -10
- data/dist/menu.yml +2 -2
- data/dist/playbook-rails.js +3 -3
- data/dist/reset.css +1 -1
- data/lib/playbook/version.rb +1 -1
- metadata +12 -6
- /data/app/pb_kits/playbook/pb_dropdown/docs/{_dropdown_with_custom_display.html.erb → _dropdown_with_custom_display_rails.html.erb} +0 -0
@@ -9,7 +9,7 @@
|
|
9
9
|
|
10
10
|
$pb_button_size: 40px;
|
11
11
|
$pb_button_v_padding: 7px;
|
12
|
-
$pb_button_h_padding:
|
12
|
+
$pb_button_h_padding: 28px;
|
13
13
|
$pb_button_hover_darken: 4%;
|
14
14
|
$pb_button_border_width: 0px;
|
15
15
|
|
@@ -27,12 +27,13 @@ $pb_button_border_width: 0px;
|
|
27
27
|
text-rendering: optimizeLegibility;
|
28
28
|
font-size: $font_small;
|
29
29
|
font-weight: $bold;
|
30
|
+
letter-spacing: $lspace_loose;
|
30
31
|
text-align: center;
|
31
32
|
vertical-align: middle;
|
32
33
|
text-transform: none;
|
33
34
|
border-width: $pb_button_border_width;
|
34
35
|
border-style: solid;
|
35
|
-
border-radius: $
|
36
|
+
border-radius: $border_rad_heavy;
|
36
37
|
min-height: $pb_button_size;
|
37
38
|
line-height: 1.5;
|
38
39
|
padding: $pb_button_v_padding $pb_button_h_padding;
|
@@ -197,16 +198,16 @@ $pb_button_border_width: 0px;
|
|
197
198
|
|
198
199
|
// Dark Link =============
|
199
200
|
@mixin pb_button_link_dark {
|
200
|
-
@include pb_button_variant($transparent, $
|
201
|
+
@include pb_button_variant($transparent, $active_dark);
|
201
202
|
|
202
203
|
@media (hover:hover) {
|
203
204
|
&:hover {
|
204
205
|
@include pb_button_hover($transparent);
|
205
|
-
color: rgba($
|
206
|
+
color: rgba($active_dark, $opacity_6)
|
206
207
|
}
|
207
208
|
&:active {
|
208
209
|
transition: none;
|
209
|
-
@include pb_button_variant($transparent, $
|
210
|
+
@include pb_button_variant($transparent, $active_dark);
|
210
211
|
}
|
211
212
|
}
|
212
213
|
}
|
@@ -13,7 +13,7 @@ $pb_caption_colors: (
|
|
13
13
|
$pb_dark_caption_colors: (
|
14
14
|
default: $text_dk_default,
|
15
15
|
light: $text_dk_light,
|
16
|
-
link: $
|
16
|
+
link: $active_dark,
|
17
17
|
success: $text_dk_success_sm,
|
18
18
|
error: $error,
|
19
19
|
);
|
@@ -24,7 +24,7 @@ $pb_dark_caption_colors: (
|
|
24
24
|
color: $text_lt_light;
|
25
25
|
text-transform: uppercase;
|
26
26
|
font-size: $font_size;
|
27
|
-
letter-spacing: $
|
27
|
+
letter-spacing: $lspace_loosest;
|
28
28
|
}
|
29
29
|
|
30
30
|
@mixin caption_color($color: $text_lt_light) {
|
@@ -17,6 +17,11 @@ $additional_colors: (
|
|
17
17
|
"light": $bg_light,
|
18
18
|
"white": $white,
|
19
19
|
"none": none,
|
20
|
+
"success_subtle": $success_subtle,
|
21
|
+
"warning_subtle": $warning_subtle,
|
22
|
+
"error_subtle": $error_subtle,
|
23
|
+
"info_subtle": $info_subtle,
|
24
|
+
"neutral_subtle": $neutral_subtle,
|
20
25
|
);
|
21
26
|
$background_colors: map-merge($product_colors, $additional_colors);
|
22
27
|
$pb_card_header_colors: map-merge(map-merge($product_colors, $additional_colors), $category_colors);
|
@@ -15,7 +15,7 @@ module Playbook
|
|
15
15
|
values: %w[xs sm md lg xl none rounded],
|
16
16
|
default: "md"
|
17
17
|
prop :background, type: Playbook::Props::Enum,
|
18
|
-
values: %w[white light dark product_1_background product_1_highlight product_2_background product_2_highlight product_3_background product_3_highlight product_4_background product_4_highlight product_5_background product_5_highlight product_6_background product_6_highlight product_7_background product_7_highlight product_8_background product_8_highlight product_9_background product_9_highlight product_10_background product_10_highlight windows siding doors solar roofing gutters insulation none],
|
18
|
+
values: %w[white light dark product_1_background product_1_highlight product_2_background product_2_highlight product_3_background product_3_highlight product_4_background product_4_highlight product_5_background product_5_highlight product_6_background product_6_highlight product_7_background product_7_highlight product_8_background product_8_highlight product_9_background product_9_highlight product_10_background product_10_highlight windows siding doors solar roofing gutters insulation none success_subtle warning_subtle error_subtle info_subtle neutral_subtle],
|
19
19
|
default: "none"
|
20
20
|
|
21
21
|
def classname
|
@@ -42,3 +42,23 @@
|
|
42
42
|
dark: true
|
43
43
|
}) %>
|
44
44
|
<% end %>
|
45
|
+
|
46
|
+
<%= pb_rails("title", props: { text: "Subtle Status Colors", tag: "h4", size: 4, margin_bottom: "sm" }) %>
|
47
|
+
|
48
|
+
<%= pb_rails("card", props: { background: "success_subtle", margin_bottom: "sm" }) do %>
|
49
|
+
<%= pb_rails("body", props: {
|
50
|
+
text: "Success Subtle"
|
51
|
+
}) %>
|
52
|
+
<% end %>
|
53
|
+
|
54
|
+
<%= pb_rails("card", props: { background: "warning_subtle", margin_bottom: "sm" }) do %>
|
55
|
+
<%= pb_rails("body", props: {
|
56
|
+
text: "Warning Subtle"
|
57
|
+
}) %>
|
58
|
+
<% end %>
|
59
|
+
|
60
|
+
<%= pb_rails("card", props: { background: "info_subtle", margin_bottom: "sm" }) do %>
|
61
|
+
<%= pb_rails("body", props: {
|
62
|
+
text: "Info Subtle"
|
63
|
+
}) %>
|
64
|
+
<% end %>
|
@@ -90,7 +90,47 @@ const CardBackground = (props) => {
|
|
90
90
|
/>
|
91
91
|
</Card>
|
92
92
|
|
93
|
-
|
93
|
+
|
94
|
+
<Title
|
95
|
+
{...props}
|
96
|
+
marginBottom="sm"
|
97
|
+
size={4}
|
98
|
+
tag="h4"
|
99
|
+
text="Subtle Status Colors"
|
100
|
+
/>
|
101
|
+
|
102
|
+
<Card
|
103
|
+
background="success_subtle"
|
104
|
+
marginBottom="sm"
|
105
|
+
{...props}
|
106
|
+
>
|
107
|
+
<Body
|
108
|
+
text="Success Subtle"
|
109
|
+
{...props}
|
110
|
+
/>
|
111
|
+
</Card>
|
112
|
+
|
113
|
+
<Card
|
114
|
+
background="warning_subtle"
|
115
|
+
marginBottom="sm"
|
116
|
+
{...props}
|
117
|
+
>
|
118
|
+
<Body
|
119
|
+
text="Warning Subtle"
|
120
|
+
{...props}
|
121
|
+
/>
|
122
|
+
</Card>
|
123
|
+
|
124
|
+
<Card
|
125
|
+
background="info_subtle"
|
126
|
+
marginBottom="sm"
|
127
|
+
{...props}
|
128
|
+
>
|
129
|
+
<Body
|
130
|
+
text="Info Subtle"
|
131
|
+
{...props}
|
132
|
+
/>
|
133
|
+
</Card>
|
94
134
|
</div>
|
95
135
|
)
|
96
136
|
}
|
@@ -1 +1 @@
|
|
1
|
-
Add a background color by passing the color name to background. List of all colors can be viewed <a href="https://playbook.powerapp.cloud/visual_guidelines" target="_blank">here</a> under Product Colors.
|
1
|
+
Add a background color by passing the color name to background. List of all colors can be viewed <a href="https://playbook.powerapp.cloud/visual_guidelines" target="_blank">here</a> under Product Colors and Status: Subtle Variations.
|
@@ -1 +1 @@
|
|
1
|
-
Card headers pass category, product, and background colors only. List of all category, product, and background colors can be viewed <a href="https://playbook.powerapp.cloud/
|
1
|
+
Card headers pass category, product, and background colors only. List of all category, product, and background colors can be viewed <a href="https://playbook.powerapp.cloud/visual_guidelines/colors" target="_blank">here</a>.
|
@@ -1 +1 @@
|
|
1
|
-
Card highlight can pass status, product, and category colors. List of all colors can be viewed <a href="https://playbook.powerapp.cloud/
|
1
|
+
Card highlight can pass status, product, and category colors. List of all colors can be viewed <a href="https://playbook.powerapp.cloud/visual_guidelines/colors" target="_blank">here</a>.
|
@@ -53,7 +53,7 @@ const adjustAxisStyle = (axis) => {
|
|
53
53
|
/* Change axis label styles */
|
54
54
|
axis.labels.style.fontFamily = typography.font_family_base
|
55
55
|
axis.labels.style.color = colors.charcoal
|
56
|
-
axis.labels.style.fontWeight = typography.
|
56
|
+
axis.labels.style.fontWeight = typography.regular
|
57
57
|
axis.labels.style.fontSize = typography.font_small
|
58
58
|
}
|
59
59
|
|
@@ -23,11 +23,11 @@
|
|
23
23
|
<ul>
|
24
24
|
<% hide_button = type == "rails" ? 'flex' : 'none' %>
|
25
25
|
<li>
|
26
|
-
<%= pb_rails("button", props: { id:"copy-html-#{example_key}", icon: "copy", text: "Copy HTML", variant: "link", size: "sm", display: hide_button }) %>
|
26
|
+
<%= pb_rails("button", props: { id:"copy-html-#{example_key}", icon: "copy", text: "Copy HTML", classname: dark ? "dark" : "", variant: "link", size: "sm", display: hide_button }) %>
|
27
27
|
</li>
|
28
28
|
<li>
|
29
|
-
<%= pb_rails("button", props: { icon: "code", id:"toggle-open-opened", text: "Close Code", variant: "link", size: "sm", display: "none" }) %>
|
30
|
-
<%= pb_rails("button", props: { icon: "code", id:"toggle-open-closed", text: "Show Code", variant: "link", size: "sm" }) %>
|
29
|
+
<%= pb_rails("button", props: { icon: "code", classname: dark ? "dark" : "", id:"toggle-open-opened", text: "Close Code", variant: "link", size: "sm", display: "none" }) %>
|
30
|
+
<%= pb_rails("button", props: { icon: "code", classname: dark ? "dark" : "", id:"toggle-open-closed", text: "Show Code", variant: "link", size: "sm" }) %>
|
31
31
|
</li>
|
32
32
|
</ul>
|
33
33
|
</div>
|
@@ -114,8 +114,10 @@ const Dropdown = (props: DropdownProps) => {
|
|
114
114
|
setIsDropDownClosed(isClosed)
|
115
115
|
},[isClosed])
|
116
116
|
|
117
|
-
const filteredOptions = options?.filter((option: GenericObject) =>
|
118
|
-
option.label.toLowerCase().
|
117
|
+
const filteredOptions = options?.filter((option: GenericObject) => {
|
118
|
+
const label = typeof option.label === 'string' ? option.label.toLowerCase() : option.label;
|
119
|
+
return String(label).toLowerCase().includes(filterItem.toLowerCase());
|
120
|
+
}
|
119
121
|
);
|
120
122
|
|
121
123
|
// For keyboard accessibility: Set focus within dropdown to selected item if it exists
|
@@ -1,8 +1,8 @@
|
|
1
1
|
<%
|
2
2
|
options = [
|
3
|
-
{ label: 'United States', value: 'United States' },
|
4
|
-
{ label: 'Canada', value: 'Canada' },
|
5
|
-
{ label: 'Pakistan', value: 'Pakistan' },
|
3
|
+
{ label: 'United States', value: 'United States', id: 'us' },
|
4
|
+
{ label: 'Canada', value: 'Canada', id: 'ca' },
|
5
|
+
{ label: 'Pakistan', value: 'Pakistan', id: 'pk' },
|
6
6
|
]
|
7
7
|
|
8
8
|
%>
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
This kit's `options` prop requires an array of objects, each of which will be used as the selectable options within the dropdown. Each option object can support any number of key-value pairs, but each must contain `label` and `value`.
|
@@ -1,7 +1,6 @@
|
|
1
|
-
The dropdown
|
1
|
+
The dropdown is built using all of the following subcomponents:
|
2
2
|
|
3
|
-
`Dropdown.
|
4
|
-
`Dropdown.Container
|
5
|
-
`Dropdown.Option`
|
6
|
-
|
7
|
-
See the code snippet below for a visual on how to use the kit with subcomponents. Each subcomponent allows for GlobalProps in addition to any subcomponent specfic props.
|
3
|
+
`Dropdown.Trigger` is the UI component that users interact with to toggle the dropdown.
|
4
|
+
`Dropdown.Container` is the floating container that wraps the list of dropdown options.
|
5
|
+
`Dropdown.Option` renders options that are passed to the container.
|
6
|
+
Each of these subcomponents can be altered using global props and/or their respective props. See doc examples below for more information on each.
|
@@ -1,8 +1,8 @@
|
|
1
1
|
<%
|
2
2
|
options = [
|
3
|
-
{ label: 'United States', value: 'United States' },
|
4
|
-
{ label: 'Canada', value: 'Canada' },
|
5
|
-
{ label: 'Pakistan', value: 'Pakistan' },
|
3
|
+
{ label: 'United States', value: 'United States', id: 'us' },
|
4
|
+
{ label: 'Canada', value: 'Canada', id: 'ca' },
|
5
|
+
{ label: 'Pakistan', value: 'Pakistan', id: 'pk' },
|
6
6
|
]
|
7
7
|
|
8
8
|
%>
|
@@ -0,0 +1,6 @@
|
|
1
|
+
The dropdown is built using all of the following required subcomponents:
|
2
|
+
|
3
|
+
`dropdown/dropdown_trigger` is the UI component that users interact with to toggle the dropdown.
|
4
|
+
`dropdown/dropdown_container` is the floating container that wraps the list of dropdown options.
|
5
|
+
`dropdown/dropdown_option` renders options that are passed to the container.
|
6
|
+
Each of these subcomponents can be altered using global props and/or their respective props. See doc examples below for more information on each.
|
@@ -1,5 +1,5 @@
|
|
1
|
-
|
1
|
+
Optionally utilize `customDisplay` on the `Dropdown.Trigger` subcomponent to customize its content after an option is selected. The component passed to customDisplay will be rendered to the left of the default text-based display. In this example the Avatar kit is being used.
|
2
2
|
|
3
|
-
The `placeholder` prop can also be used to customize the placeholder text for the default Trigger
|
3
|
+
The `placeholder` prop can also be used to customize the placeholder text for the default `Dropdown.Trigger`.
|
4
4
|
|
5
|
-
The `onSelect` prop
|
5
|
+
The `onSelect` prop returns the selected option as an object to be utilized by the dev. In this example we are using the `onSelect` to set a state with the selected option and using it to customize the `customDisplay`.
|
@@ -0,0 +1,5 @@
|
|
1
|
+
Optionally utilize `custom_display` on the `dropdown/dropdown_trigger` subcomponent to customize its content after an option is selected. The component passed to custom_display will be rendered to the left of the default text-based display. In this example the Avatar kit is being used.
|
2
|
+
|
3
|
+
The `placeholder` prop can also be used to customize the placeholder text for the default `dropdown/dropdown_trigger`.
|
4
|
+
|
5
|
+
The dropdown follows the typical rails pattern of utilizing hidden inputs for form submission. The hidden input value is the selected options' id.
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
`Dropdown.Option` subcomponent accepts any child components to customize the options' contents and display. By default, options are Body kit text that is set by the `label` value from the `option` object.
|
@@ -5,21 +5,21 @@
|
|
5
5
|
value: "United States",
|
6
6
|
areaCode: "+1",
|
7
7
|
icon: "🇺🇸",
|
8
|
-
id: "
|
8
|
+
id: "us"
|
9
9
|
},
|
10
10
|
{
|
11
11
|
label: "Canada",
|
12
12
|
value: "Canada",
|
13
13
|
areaCode: "+1",
|
14
14
|
icon: "🇨🇦",
|
15
|
-
id: "
|
15
|
+
id: "ca"
|
16
16
|
},
|
17
17
|
{
|
18
18
|
label: "Pakistan",
|
19
19
|
value: "Pakistan",
|
20
20
|
areaCode: "+92",
|
21
21
|
icon: "🇵🇰",
|
22
|
-
id: "
|
22
|
+
id: "pk"
|
23
23
|
}
|
24
24
|
]
|
25
25
|
|
@@ -0,0 +1 @@
|
|
1
|
+
`dropdown/dropdown_option` subcomponent accepts any child components to customize the options' contents and display. By default, options are Body kit text that is set by the `label` value from the `option` object.
|
@@ -1,8 +1,8 @@
|
|
1
1
|
<%
|
2
2
|
options = [
|
3
|
-
{ label: 'United States', value: 'United States' },
|
4
|
-
{ label: 'Canada', value: 'Canada' },
|
5
|
-
{ label: 'Pakistan', value: 'Pakistan' },
|
3
|
+
{ label: 'United States', value: 'United States', id: 'us' },
|
4
|
+
{ label: 'Canada', value: 'Canada', id: 'ca' },
|
5
|
+
{ label: 'Pakistan', value: 'Pakistan', id: 'pk' },
|
6
6
|
]
|
7
7
|
|
8
8
|
%>
|
@@ -1 +1 @@
|
|
1
|
-
By default,
|
1
|
+
By default, dropdown option padding is set to `xs`, but this padding can be overridden using our global prop spacing token. In this example we are increasing the option padding to `sm`.
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
Optionally replace the default trigger's select element by passing child components directly to the `Dropdown.Trigger`.
|
@@ -5,21 +5,21 @@
|
|
5
5
|
value: "United States",
|
6
6
|
areaCode: "+1",
|
7
7
|
icon: "🇺🇸",
|
8
|
-
id: "
|
8
|
+
id: "us"
|
9
9
|
},
|
10
10
|
{
|
11
11
|
label: "Canada",
|
12
12
|
value: "Canada",
|
13
13
|
areaCode: "+1",
|
14
14
|
icon: "🇨🇦",
|
15
|
-
id: "
|
15
|
+
id: "ca"
|
16
16
|
},
|
17
17
|
{
|
18
18
|
label: "Pakistan",
|
19
19
|
value: "Pakistan",
|
20
20
|
areaCode: "+92",
|
21
21
|
icon: "🇵🇰",
|
22
|
-
id: "
|
22
|
+
id: "pk"
|
23
23
|
}
|
24
24
|
]
|
25
25
|
|
@@ -0,0 +1 @@
|
|
1
|
+
Optionally replace the default trigger's select element by passing child components directly to the `dropdown/dropdown_trigger`.
|
@@ -1,8 +1,8 @@
|
|
1
1
|
<%
|
2
2
|
options = [
|
3
|
-
{ label: 'United States', value: 'United States' },
|
4
|
-
{ label: 'Canada', value: 'Canada' },
|
5
|
-
{ label: 'Pakistan', value: 'Pakistan' },
|
3
|
+
{ label: 'United States', value: 'United States', id: 'us' },
|
4
|
+
{ label: 'Canada', value: 'Canada', id: 'ca' },
|
5
|
+
{ label: 'Pakistan', value: 'Pakistan', id: 'pk' },
|
6
6
|
]
|
7
7
|
|
8
8
|
%>
|
@@ -1 +1 @@
|
|
1
|
-
The
|
1
|
+
The top-level Dropdown component optionally accepts any string through a `label` prop to produce a label above your trigger element.
|
@@ -1,12 +1,12 @@
|
|
1
1
|
examples:
|
2
2
|
rails:
|
3
3
|
- dropdown_default: Default
|
4
|
-
-
|
4
|
+
- dropdown_subcomponent_structure_rails: Subcomponent Structure
|
5
5
|
- dropdown_with_label: With Label
|
6
|
-
-
|
7
|
-
-
|
8
|
-
-
|
9
|
-
- dropdown_with_custom_padding: Custom Padding
|
6
|
+
- dropdown_with_custom_options_rails: Custom Options
|
7
|
+
- dropdown_with_custom_display_rails: Custom Display
|
8
|
+
- dropdown_with_custom_trigger_rails: Custom Trigger
|
9
|
+
- dropdown_with_custom_padding: Custom Option Padding
|
10
10
|
|
11
11
|
react:
|
12
12
|
- dropdown_default: Default
|
@@ -15,7 +15,7 @@ examples:
|
|
15
15
|
- dropdown_with_custom_options: Custom Options
|
16
16
|
- dropdown_with_custom_display: Custom Display
|
17
17
|
- dropdown_with_custom_trigger: Custom Trigger
|
18
|
-
- dropdown_with_custom_padding: Custom Padding
|
18
|
+
- dropdown_with_custom_padding: Custom Option Padding
|
19
19
|
# - dropdown_with_autocomplete: Autocomplete
|
20
20
|
# - dropdown_with_autocomplete_and_custom_display: Autocomplete with Custom Display
|
21
21
|
# - dropdown_with_external_control: useDropdown Hook
|
@@ -8,6 +8,7 @@
|
|
8
8
|
<%= pb_rails("caption", props: {text: object.label, margin_bottom:"xs"}) %>
|
9
9
|
<% end %>
|
10
10
|
<div class="dropdown_wrapper" style="position: relative">
|
11
|
+
<input type="hidden" name="<%= object.name %>" id="dropdown-selected-option" value=""/>
|
11
12
|
<% if content.present? %>
|
12
13
|
<%= content.presence %>
|
13
14
|
<% else %>
|
@@ -37,8 +37,10 @@ export default class PbDropdown extends PbEnhancedElement {
|
|
37
37
|
|
38
38
|
handleOptionClick(event) {
|
39
39
|
const option = event.target.closest(OPTION_SELECTOR);
|
40
|
+
const hiddenInput = this.element.querySelector("#dropdown-selected-option");
|
40
41
|
if (option) {
|
41
42
|
const value = option.dataset.dropdownOptionLabel;
|
43
|
+
hiddenInput.value = JSON.parse(value).id;
|
42
44
|
this.onOptionSelected(value, option);
|
43
45
|
}
|
44
46
|
}
|
@@ -99,7 +101,6 @@ export default class PbDropdown extends PbEnhancedElement {
|
|
99
101
|
option.classList.remove("pb_dropdown_option_selected");
|
100
102
|
});
|
101
103
|
selectedOption.classList.add("pb_dropdown_option_selected");
|
102
|
-
console.log(`Selected value: ${value}`);
|
103
104
|
}
|
104
105
|
|
105
106
|
get target() {
|
@@ -50,8 +50,10 @@ const DropdownOption = (props: DropdownOptionProps) => {
|
|
50
50
|
selected,
|
51
51
|
} = useContext(DropdownContext);
|
52
52
|
|
53
|
-
const isItemMatchingFilter = (option: GenericObject) =>
|
54
|
-
option
|
53
|
+
const isItemMatchingFilter = (option: GenericObject) => {
|
54
|
+
const label = typeof option.label === 'string' ? option.label.toLowerCase() : option.label;
|
55
|
+
return String(label).toLowerCase().includes(filterItem.toLowerCase());
|
56
|
+
}
|
55
57
|
|
56
58
|
if (!isItemMatchingFilter(option)) {
|
57
59
|
return null;
|
@@ -35,6 +35,10 @@ $pb_multiple_users_size_xxs: map-get($avatar-sizes, "xxs");
|
|
35
35
|
margin-left: $pb_multiple_users_overlap;
|
36
36
|
margin-right: 0;
|
37
37
|
|
38
|
+
&:first-of-type {
|
39
|
+
margin-left: 0;
|
40
|
+
}
|
41
|
+
|
38
42
|
&.dark {
|
39
43
|
.avatar_wrapper {
|
40
44
|
border: $pb_multiple_users_border_size solid $bg_dark;
|
@@ -58,6 +62,10 @@ $pb_multiple_users_size_xxs: map-get($avatar-sizes, "xxs");
|
|
58
62
|
.pb_multiple_users_item {
|
59
63
|
margin-left: 0;
|
60
64
|
margin-right: $pb_multiple_users_overlap;
|
65
|
+
|
66
|
+
&:first-of-type {
|
67
|
+
margin-right: 0;
|
68
|
+
}
|
61
69
|
}
|
62
70
|
}
|
63
71
|
}
|
@@ -5,10 +5,11 @@
|
|
5
5
|
@mixin pb_title(
|
6
6
|
$fontSize: $heading_1,
|
7
7
|
$fontWeight: $lighter,
|
8
|
-
$lineHeight: $lh_tighter
|
8
|
+
$lineHeight: $lh_tighter,
|
9
|
+
$letterSpacing: $lspace_tight
|
9
10
|
){
|
10
11
|
font-size: $fontSize;
|
11
|
-
letter-spacing: $
|
12
|
+
letter-spacing: $letterSpacing;
|
12
13
|
font-weight: $fontWeight;
|
13
14
|
color: $text_lt_default;
|
14
15
|
margin: 0;
|
@@ -29,12 +30,15 @@
|
|
29
30
|
}
|
30
31
|
|
31
32
|
@mixin pb_title_4 {
|
32
|
-
@include pb_title($heading_4, $bolder);
|
33
|
-
letter-spacing: -0.03em;
|
33
|
+
@include pb_title($heading_4, $bolder, $letterSpacing: $lspace_normal);
|
34
34
|
}
|
35
35
|
|
36
36
|
@mixin pb_title_dark {
|
37
|
-
|
37
|
+
color: $text_dk_default;
|
38
|
+
}
|
39
|
+
|
40
|
+
@mixin pb_title_dark_link {
|
41
|
+
color: $active_dark;
|
38
42
|
}
|
39
43
|
|
40
44
|
@mixin pb_title_bold {
|