playbook_ui 14.2.1.pre.alpha.20240828cikubedbump3702 → 14.3.0.pre.alpha.revert3654PBNTR479removeextraspacingfromradiochildren3734
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/pb_kits/playbook/pb_avatar_action_button/_avatar_action_button.scss +3 -3
- data/app/pb_kits/playbook/pb_badge/_badge.scss +2 -2
- data/app/pb_kits/playbook/pb_bread_crumbs/_bread_crumbs.scss +1 -1
- data/app/pb_kits/playbook/pb_button/_button.scss +1 -1
- data/app/pb_kits/playbook/pb_button_toolbar/_button_toolbar_mixins.scss +2 -2
- data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.scss +1 -1
- data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleIcon.tsx +30 -24
- data/app/pb_kits/playbook/pb_collapsible/collapsible_main.html.erb +11 -7
- data/app/pb_kits/playbook/pb_collapsible/collapsible_main.rb +2 -0
- data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_no_icon.html.erb +10 -0
- data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_no_icon.jsx +21 -0
- data/app/pb_kits/playbook/pb_collapsible/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_collapsible/docs/index.js +2 -1
- data/app/pb_kits/playbook/pb_date_picker/sass_partials/_input_styles.scss +1 -1
- data/app/pb_kits/playbook/pb_date_picker/sass_partials/_overrides.scss +2 -2
- data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.scss +4 -4
- data/app/pb_kits/playbook/pb_date_time_stacked/_date_time_stacked.scss +4 -4
- data/app/pb_kits/playbook/pb_dialog/dialog.html.erb +4 -1
- data/app/pb_kits/playbook/pb_dialog/dialog.rb +3 -0
- data/app/pb_kits/playbook/pb_dialog/dialogHelper.js +21 -0
- data/app/pb_kits/playbook/pb_dialog/dialog_footer.html.erb +4 -2
- data/app/pb_kits/playbook/pb_dialog/dialog_footer.rb +10 -1
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_loading.html.erb +13 -0
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_loading.md +3 -0
- data/app/pb_kits/playbook/pb_dialog/docs/example.yml +1 -0
- data/app/pb_kits/playbook/pb_dropdown/_dropdown.scss +1 -1
- data/app/pb_kits/playbook/pb_form_pill/_form_pill.scss +2 -2
- data/app/pb_kits/playbook/pb_hashtag/_hashtag.tsx +16 -2
- data/app/pb_kits/playbook/pb_hashtag/docs/_hashtag_link.html.erb +1 -1
- data/app/pb_kits/playbook/pb_hashtag/docs/_hashtag_link.jsx +1 -1
- data/app/pb_kits/playbook/pb_hashtag/docs/_hashtag_link.md +1 -1
- data/app/pb_kits/playbook/pb_hashtag/hashtag.html.erb +1 -1
- data/app/pb_kits/playbook/pb_hashtag/hashtag.rb +9 -2
- data/app/pb_kits/playbook/pb_home_address_street/_home_address_street.tsx +16 -0
- data/app/pb_kits/playbook/pb_home_address_street/city_emphasis.html.erb +1 -0
- data/app/pb_kits/playbook/pb_home_address_street/city_emphasis.rb +11 -0
- data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_link.html.erb +1 -1
- data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_link.jsx +1 -1
- data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_link.md +1 -1
- data/app/pb_kits/playbook/pb_home_address_street/home_address_street.rb +13 -0
- data/app/pb_kits/playbook/pb_home_address_street/home_adress_street.test.js +2 -2
- data/app/pb_kits/playbook/pb_home_address_street/street_emphasis.html.erb +2 -1
- data/app/pb_kits/playbook/pb_home_address_street/street_emphasis.rb +11 -0
- data/app/pb_kits/playbook/pb_icon/icon.rb +8 -0
- data/app/pb_kits/playbook/pb_icon_circle/_icon_circle.scss +1 -1
- data/app/pb_kits/playbook/pb_label_value/_label_value.scss +1 -1
- data/app/pb_kits/playbook/pb_message/_message_mixins.scss +1 -1
- data/app/pb_kits/playbook/pb_multiple_users/_multiple_users.scss +1 -1
- data/app/pb_kits/playbook/pb_nav/docs/_collapsible_nav_no_icon.html.erb +24 -0
- data/app/pb_kits/playbook/pb_nav/docs/_collapsible_nav_no_icon.jsx +88 -0
- data/app/pb_kits/playbook/pb_nav/docs/_collapsible_nav_no_icon_rails.md +1 -0
- data/app/pb_kits/playbook/pb_nav/docs/_collapsible_nav_no_icon_react.md +1 -0
- data/app/pb_kits/playbook/pb_nav/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_nav/docs/index.js +4 -3
- data/app/pb_kits/playbook/pb_pagination/_pagination.scss +3 -1
- data/app/pb_kits/playbook/pb_passphrase/_passphrase.scss +3 -3
- data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.scss +2 -2
- data/app/pb_kits/playbook/pb_phone_number_input/intlTelInput.scss +1290 -0
- data/app/pb_kits/playbook/pb_pill/_pill.scss +2 -2
- data/app/pb_kits/playbook/pb_progress_simple/_progress_simple.scss +2 -2
- data/app/pb_kits/playbook/pb_radio/_radio.tsx +100 -50
- data/app/pb_kits/playbook/pb_radio/docs/_radio_children.jsx +56 -0
- data/app/pb_kits/playbook/pb_radio/docs/example.yml +1 -0
- data/app/pb_kits/playbook/pb_radio/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_rich_text_editor/_previewer_mixin.scss +49 -13
- data/app/pb_kits/playbook/pb_rich_text_editor/_rich_text_editor.scss +2 -14
- data/app/pb_kits/playbook/pb_rich_text_editor/_tiptap_styles.scss +23 -23
- data/app/pb_kits/playbook/pb_rich_text_editor/_trix_styles.scss +19 -27
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_preview.html.erb +21 -11
- data/app/pb_kits/playbook/pb_select/_select.scss +1 -1
- data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.scss +3 -3
- data/app/pb_kits/playbook/pb_star_rating/docs/_star_rating_default_value.html.erb +1 -0
- data/app/pb_kits/playbook/pb_star_rating/docs/example.yml +1 -0
- data/app/pb_kits/playbook/pb_star_rating/index.js +11 -1
- data/app/pb_kits/playbook/pb_star_rating/star_rating.rb +3 -1
- data/app/pb_kits/playbook/pb_text_input/_text_input.scss +1 -1
- data/app/pb_kits/playbook/pb_textarea/_textarea.scss +1 -1
- data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.scss +4 -4
- data/app/pb_kits/playbook/pb_timeline/_timeline.scss +2 -2
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed.html.erb +2 -2
- data/app/pb_kits/playbook/pb_timestamp/timestamp.rb +46 -2
- data/app/pb_kits/playbook/pb_toggle/_toggle.scss +3 -3
- data/dist/chunks/{_typeahead-KAYMhDNO.js → _typeahead-BWUFVlae.js} +3 -3
- data/dist/chunks/{_weekday_stacked-CTvE8Bet.js → _weekday_stacked-DpRkKl3_.js} +2 -2
- data/dist/chunks/{lib-DErGXNy3.js → lib-D9uVVKnh.js} +1 -1
- data/dist/chunks/{pb_form_validation-BC6kh7Hu.js → pb_form_validation-u2wnZ3oe.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 +2 -2
- metadata +17 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b861b308f5b72f96eef50aec3bbdd59b377091d82766a2a494425c483e930472
|
4
|
+
data.tar.gz: 0113bca621569af9ae171149beb961330cad59d299c3831218d62a0b499426de
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0bc05d0bc6a8bd697898a74eb9d1ba9cf48c33e39b7fb634a5dc8dd06d6a12e21efaaaccce4e0003780d7eb8b51d53545fb477f4fc9fdbca930ab8870a5b7eef
|
7
|
+
data.tar.gz: dabc33f130e3ef9ed3dc083157ebcb9069a50d2a00b3e2a1ea59138581888ee58ebf85426a8693eb1d159b18e2739ce6d862ca1d2e6a9cc28d8b7ccf685ed55a
|
@@ -35,8 +35,8 @@
|
|
35
35
|
&[class*=_#{$name}] {
|
36
36
|
|
37
37
|
$avatar_size: map-get($avatar-sizes, $name);
|
38
|
-
$icon_size:
|
39
|
-
$border_size:
|
38
|
+
$icon_size: $avatar_size / 2;
|
39
|
+
$border_size: $icon_size / 10;
|
40
40
|
|
41
41
|
position: relative;
|
42
42
|
width: $avatar_size * 1.25;
|
@@ -59,7 +59,7 @@
|
|
59
59
|
left: $icon_size * 1.5;
|
60
60
|
}
|
61
61
|
&[class*=_left] [class^=pb_avatar_kit] {
|
62
|
-
padding-left:
|
62
|
+
padding-left: $icon_size / 2;
|
63
63
|
}
|
64
64
|
}
|
65
65
|
}
|
@@ -11,7 +11,7 @@
|
|
11
11
|
align-items: center;
|
12
12
|
justify-content: center;
|
13
13
|
border-radius: $border_rad_light;
|
14
|
-
padding: 0
|
14
|
+
padding: 0 $space_xs/2;
|
15
15
|
border-width: 1px;
|
16
16
|
border-style: solid;
|
17
17
|
border-color: $card_light;
|
@@ -34,7 +34,7 @@
|
|
34
34
|
height: $pb_badge_height;
|
35
35
|
min-height: $pb_badge_height;
|
36
36
|
min-width: $pb_badge_height;
|
37
|
-
border-radius:
|
37
|
+
border-radius: $pb_badge_height / 2;
|
38
38
|
}
|
39
39
|
|
40
40
|
&[class*=_notification] {
|
@@ -11,13 +11,13 @@ $secondary_dark: rgba($bg_dark, $opacity_2);
|
|
11
11
|
@if $horizontal == true {
|
12
12
|
height: 2px;
|
13
13
|
width: calc(100% + #{$space_md} + #{$space_md});
|
14
|
-
top:
|
14
|
+
top: -$space_xs - 1px;
|
15
15
|
left: -$space_md;
|
16
16
|
} @else {
|
17
17
|
width: 2px;
|
18
18
|
height: $space_md;
|
19
19
|
top: 0;
|
20
|
-
right:
|
20
|
+
right: $space_lg + 2px;
|
21
21
|
}
|
22
22
|
background-color: $color;
|
23
23
|
content: '';
|
@@ -16,7 +16,7 @@ $pb_button_styles: (
|
|
16
16
|
flex-grow: 0;
|
17
17
|
width: $pb_button_size;
|
18
18
|
height: $pb_button_size;
|
19
|
-
border-radius:
|
19
|
+
border-radius: $pb_button_size / 2;
|
20
20
|
line-height: $pb_button_size;
|
21
21
|
flex-basis: $pb_button_size;
|
22
22
|
min-width: $pb_button_size;
|
@@ -45,7 +45,9 @@ const CollapsibleIcon = ({
|
|
45
45
|
const color = colorMap[iconColor];
|
46
46
|
|
47
47
|
const showIcon = (icon: string | string[]) => {
|
48
|
-
if (
|
48
|
+
if (icon === "none") {
|
49
|
+
return []
|
50
|
+
} else if (typeof icon === "string") {
|
49
51
|
return [icon, icon];
|
50
52
|
}
|
51
53
|
return icon;
|
@@ -60,30 +62,34 @@ const CollapsibleIcon = ({
|
|
60
62
|
|
61
63
|
return (
|
62
64
|
<>
|
63
|
-
{
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
65
|
+
{(icon !== "none") ? (
|
66
|
+
collapsed ? (
|
67
|
+
<div
|
68
|
+
className="icon_wrapper"
|
69
|
+
key={icon ? showIcon(icon)[0] : "chevron-down"}
|
70
|
+
onClick={(e) => handleIconClick(e)}
|
71
|
+
style={{ verticalAlign: "middle", color: color }}
|
72
|
+
>
|
73
|
+
<Icon
|
74
|
+
icon={icon ? showIcon(icon)[0] : "chevron-down"}
|
75
|
+
size={iconSize}
|
76
|
+
/>
|
77
|
+
</div>
|
78
|
+
) : (
|
79
|
+
<div
|
80
|
+
className="icon_wrapper"
|
81
|
+
key={icon ? showIcon(icon)[1] : "chevron-up"}
|
82
|
+
onClick={(e) => handleIconClick(e)}
|
83
|
+
style={{ verticalAlign: "middle", color: color }}
|
84
|
+
>
|
85
|
+
<Icon
|
86
|
+
icon={icon ? showIcon(icon)[1] : "chevron-up"}
|
87
|
+
size={iconSize}
|
88
|
+
/>
|
89
|
+
</div>
|
90
|
+
)
|
75
91
|
) : (
|
76
|
-
<div
|
77
|
-
className="icon_wrapper"
|
78
|
-
key={icon ? showIcon(icon)[1] : "chevron-up"}
|
79
|
-
onClick={(e) => handleIconClick(e)}
|
80
|
-
style={{ verticalAlign: "middle", color: color }}
|
81
|
-
>
|
82
|
-
<Icon
|
83
|
-
icon={icon ? showIcon(icon)[1] : "chevron-up"}
|
84
|
-
size={iconSize}
|
85
|
-
/>
|
86
|
-
</div>
|
92
|
+
<div/>
|
87
93
|
)}
|
88
94
|
</>
|
89
95
|
);
|
@@ -5,15 +5,19 @@
|
|
5
5
|
<%= content.presence %>
|
6
6
|
<% end %>
|
7
7
|
<%= pb_rails("flex/flex_item") do %>
|
8
|
-
|
9
|
-
|
10
|
-
<%= pb_rails("icon", props: { icon: object.show_icon(object.icon)[0], id:"collapsible_open_icon", size: object.size }) %>
|
11
|
-
<%= pb_rails("icon", props: { icon: object.show_icon(object.icon)[1], id:"collapsible_close_icon", size: object.size }) %>
|
8
|
+
<% if object.icon == "none" %>
|
9
|
+
<div></div>
|
12
10
|
<% else %>
|
13
|
-
|
14
|
-
|
11
|
+
<div style="color: <%= object.icon_color %>" class="icon_wrapper" >
|
12
|
+
<% if object.icon.present? %>
|
13
|
+
<%= pb_rails("icon", props: { icon: object.show_icon(object.icon)[0], id:"collapsible_open_icon", size: object.size }) %>
|
14
|
+
<%= pb_rails("icon", props: { icon: object.show_icon(object.icon)[1], id:"collapsible_close_icon", size: object.size }) %>
|
15
|
+
<% else %>
|
16
|
+
<%= pb_rails("icon", props: { icon: "chevron-down", id:"collapsible_open_icon", size: object.size }) %>
|
17
|
+
<%= pb_rails("icon", props: { icon: "chevron-up", id:"collapsible_close_icon", size: object.size }) %>
|
18
|
+
<% end %>
|
19
|
+
</div>
|
15
20
|
<% end %>
|
16
|
-
</div>
|
17
21
|
<% end %>
|
18
22
|
<% end %>
|
19
23
|
<% end %>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<%= pb_rails("collapsible", props: { name: "no-icon-example" }) do %>
|
2
|
+
<%= pb_rails("collapsible/collapsible_main", props: { padding: "md", name: "no-icon-main", icon: "none" }) do %>
|
3
|
+
<%= pb_rails("body", props: { text: "Main Section"}) %>
|
4
|
+
<% end %>
|
5
|
+
<%= pb_rails("collapsible/collapsible_content", props: { padding: "md" }) do %>
|
6
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec iaculis, risus a fringilla luctus, sapien eros sodales ex, quis molestie est nulla non turpis. Vestibulum aliquet at ipsum eget posuere. Morbi sed laoreet erat. Sed commodo posuere lectus, at porta nulla ornare a. Suspendisse quam est, sollicitudin ut enim sit amet, commodo placerat enim. Donec laoreet metus ac mauris pellentesque mattis. Pellentesque luctus vel mauris non aliquam. Mauris hendrerit mattis porttitor. Curabitur vehicula justo non ex consectetur commodo. Quisque posuere aliquet quam. Maecenas malesuada magna mauris, ac tempor metus euismod at.
|
7
|
+
<br><br>
|
8
|
+
Cras ornare fermentum magna mollis efficitur. Sed vitae nulla vel purus ultrices mollis. Maecenas id nulla id libero faucibus feugiat quis sit amet turpis. In commodo pellentesque risus at fringilla. Integer non interdum leo, non commodo ante. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut mi augue, dignissim at orci vel, egestas aliquam mi. Proin finibus aliquet tempor. Integer cursus, ex quis gravida rhoncus, nisi elit viverra ipsum, non efficitur est ex ac tortor. Praesent vitae odio massa.
|
9
|
+
<% end %>
|
10
|
+
<% end %>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import { Collapsible } from 'playbook-ui'
|
3
|
+
|
4
|
+
const CollapsibleNoIcon = (props) => (
|
5
|
+
<Collapsible
|
6
|
+
icon="none"
|
7
|
+
>
|
8
|
+
<Collapsible.Main {...props}>
|
9
|
+
<div>{'Main Section'}</div>
|
10
|
+
</Collapsible.Main>
|
11
|
+
<Collapsible.Content>
|
12
|
+
<div>
|
13
|
+
{
|
14
|
+
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. In vel erat sed purus hendrerit viverra. Duis et vestibulum metus. Sed consequat ut ante non vehicula. Etiam nunc massa, pharetra vel quam id, posuere rhoncus quam. Quisque imperdiet arcu enim, nec aliquet justo auctor eget. Curabitur in metus nec nunc rhoncus faucibus vitae ac elit. Nulla facilisi. Vestibulum quis pretium nulla. Nulla ut accumsan velit. Duis varius urna sed sem tempor, sit amet fermentum nibh auctor. Praesent lorem arcu, egestas non ante quis, placerat pellentesque lectus.Vestibulum lacinia ipsum quis venenatis tristique. Vivamus suscipit, libero eu fringilla egestas, orci urna commodo arcu, vel gravida turpis ipsum molestie nibh. Donec cursus eu ante sagittis ultrices. Phasellus id sagittis risus. Mauris dapibus neque faucibus, tempor ligula vel, cursus ante. Donec faucibus gravida porta. Nullam egestas est quis aliquam feugiat. Sed eget metus diam. Cras eget placerat libero.'
|
15
|
+
}
|
16
|
+
</div>
|
17
|
+
</Collapsible.Content>
|
18
|
+
</Collapsible>
|
19
|
+
)
|
20
|
+
|
21
|
+
export default CollapsibleNoIcon
|
@@ -9,6 +9,7 @@ examples:
|
|
9
9
|
- collapsible_external_controls_multiple: Toggle All Collapsibles With One Control
|
10
10
|
- collapsible_custom_main_rails: Custom Main Section
|
11
11
|
- collapsible_custom_main_with_icon_rails: Custom Main Section With Icon
|
12
|
+
- collapsible_no_icon: No Icon
|
12
13
|
|
13
14
|
|
14
15
|
react:
|
@@ -19,6 +20,7 @@ examples:
|
|
19
20
|
- collapsible_state: useCollapsible Hook
|
20
21
|
- collapsible_custom_main: Custom Main Section
|
21
22
|
- collapsible_custom_main_with_icon: Custom Main Section With Icon
|
23
|
+
- collapsible_no_icon: No Icon
|
22
24
|
|
23
25
|
|
24
26
|
|
@@ -4,4 +4,5 @@ export { default as CollapsibleColor } from './_collapsible_color.jsx'
|
|
4
4
|
export { default as CollapsibleIcons } from './_collapsible_icons.jsx'
|
5
5
|
export { default as CollapsibleState } from './_collapsible_state.jsx'
|
6
6
|
export { default as CollapsibleCustomMain } from './_collapsible_custom_main.jsx'
|
7
|
-
export { default as CollapsibleCustomMainWithIcon } from './_collapsible_custom_main_with_icon.jsx'
|
7
|
+
export { default as CollapsibleCustomMainWithIcon } from './_collapsible_custom_main_with_icon.jsx'
|
8
|
+
export { default as CollapsibleNoIcon } from './_collapsible_no_icon.jsx'
|
@@ -21,14 +21,14 @@
|
|
21
21
|
display: flex;
|
22
22
|
align-items: center;
|
23
23
|
[class*=pb_date_range_inline_arrow] {
|
24
|
-
margin-left:
|
25
|
-
margin-right:
|
24
|
+
margin-left: $space_xs/2;
|
25
|
+
margin-right: $space_xs/2;
|
26
26
|
}
|
27
27
|
[class*=pb_date_range_inline_timezone] {
|
28
|
-
margin-left:
|
28
|
+
margin-left: $space_xs/2;
|
29
29
|
}
|
30
30
|
[class*=pb_date_range_inline_icon] {
|
31
|
-
margin-right:
|
31
|
+
margin-right: $space_xs/2;
|
32
32
|
}
|
33
33
|
}
|
34
34
|
}
|
@@ -1,11 +1,11 @@
|
|
1
1
|
[class^=pb_date_time_stacked] {
|
2
2
|
|
3
3
|
[class^=padding_month] {
|
4
|
-
padding-bottom:
|
4
|
+
padding-bottom: $space_xs + 2px !important;
|
5
5
|
}
|
6
6
|
|
7
7
|
[class^=padding_day] {
|
8
|
-
padding-bottom:
|
8
|
+
padding-bottom: $space_xs + 2px !important;
|
9
9
|
}
|
10
10
|
|
11
11
|
&[class*=_dark] {
|
@@ -19,7 +19,7 @@
|
|
19
19
|
|
20
20
|
}
|
21
21
|
.date-time-padding {
|
22
|
-
padding-right:
|
23
|
-
padding-left:
|
22
|
+
padding-right: $space_xs / 2;
|
23
|
+
padding-left: $space_xs / 2;
|
24
24
|
}
|
25
25
|
|
@@ -22,8 +22,11 @@
|
|
22
22
|
<% if object.cancel_button && object.confirm_button %>
|
23
23
|
<%= pb_rails("dialog/dialog_footer", props: {
|
24
24
|
cancel_button: object.cancel_button,
|
25
|
+
cancel_button_id: object.cancel_button_id,
|
25
26
|
confirm_button: object.confirm_button,
|
26
|
-
|
27
|
+
confirm_button_id: object.confirm_button_id,
|
28
|
+
id: object.id,
|
29
|
+
loading: object.loading
|
27
30
|
}) %>
|
28
31
|
<% end %>
|
29
32
|
|
@@ -13,8 +13,11 @@ module Playbook
|
|
13
13
|
prop :should_close_on_overlay_click, type: Playbook::Props::Boolean, default: true
|
14
14
|
prop :title
|
15
15
|
prop :text
|
16
|
+
prop :loading
|
16
17
|
prop :confirm_button
|
18
|
+
prop :confirm_button_id
|
17
19
|
prop :cancel_button
|
20
|
+
prop :cancel_button_id
|
18
21
|
prop :status, type: Playbook::Props::Enum,
|
19
22
|
values: ["info", "caution", "delete", "error", "success", "default", ""],
|
20
23
|
default: ""
|
@@ -3,6 +3,27 @@ const dialogHelper = () => {
|
|
3
3
|
const closeTrigger = document.querySelectorAll("[data-close-dialog]");
|
4
4
|
const dialogs = document.querySelectorAll(".pb_dialog_rails")
|
5
5
|
|
6
|
+
const loadingButton = document.querySelector('[data-disable-with="Loading"]');
|
7
|
+
if (loadingButton) {
|
8
|
+
loadingButton.addEventListener("click", function() {
|
9
|
+
const okayLoadingButton = document.querySelector('[data-disable-with="Loading"]');
|
10
|
+
const cancelButton = document.querySelector('[data-disable-cancel-with="Loading"]');
|
11
|
+
let currentClass = okayLoadingButton.className;
|
12
|
+
let cancelClass = cancelButton ? cancelButton.className : "";
|
13
|
+
|
14
|
+
let newClass = currentClass.replace("_enabled", "_disabled_loading");
|
15
|
+
let newCancelClass = cancelClass.replace("_enabled", "_disabled");
|
16
|
+
|
17
|
+
// Disable the buttons
|
18
|
+
okayLoadingButton.disabled = true;
|
19
|
+
if (cancelButton) cancelButton.disabled = true;
|
20
|
+
|
21
|
+
okayLoadingButton.className = newClass;
|
22
|
+
if (cancelButton) cancelButton.className = newCancelClass;
|
23
|
+
});
|
24
|
+
}
|
25
|
+
|
26
|
+
|
6
27
|
openTrigger.forEach((open) => {
|
7
28
|
open.addEventListener("click", () => {
|
8
29
|
var openTriggerData = open.dataset.openDialog;
|
@@ -3,10 +3,12 @@
|
|
3
3
|
<% if object.confirm_button && object.cancel_button %>
|
4
4
|
<div class="dialog-pseudo-footer"></div>
|
5
5
|
<%= pb_rails("flex", props: { classname:object.classname, spacing:"between", padding_x:"sm", padding:"sm", padding_bottom:"sm" }) do %>
|
6
|
-
|
6
|
+
|
7
|
+
<%= pb_rails("button", props: { type: "submit", id: object.confirm_button_id, data: loading_data,
|
8
|
+
}) do %>
|
7
9
|
<%= object.confirm_button %>
|
8
10
|
<% end %>
|
9
|
-
<%= pb_rails("button", props: { type: "button", data: {"close-dialog": "#{object.id}" }, id: object.cancel_button_id, variant: "link"}) do %>
|
11
|
+
<%= pb_rails("button", props: { type: "button", data: {"close-dialog": "#{object.id}", "disable_cancel_with": cancel_loading }, id: object.cancel_button_id, variant: "link" }) do %>
|
10
12
|
<%= object.cancel_button %>
|
11
13
|
<% end %>
|
12
14
|
<% end %>
|
@@ -4,13 +4,22 @@ module Playbook
|
|
4
4
|
module PbDialog
|
5
5
|
class DialogFooter < Playbook::KitBase
|
6
6
|
prop :cancel_button
|
7
|
+
prop :cancel_button_id
|
7
8
|
prop :confirm_button
|
8
9
|
prop :confirm_button_id
|
9
|
-
prop :
|
10
|
+
prop :loading
|
10
11
|
|
11
12
|
def classname
|
12
13
|
generate_classname("dialog_footer")
|
13
14
|
end
|
15
|
+
|
16
|
+
def cancel_loading
|
17
|
+
loading ? "Loading" : ""
|
18
|
+
end
|
19
|
+
|
20
|
+
def loading_data
|
21
|
+
loading ? { disable_with: "Loading" } : {}
|
22
|
+
end
|
14
23
|
end
|
15
24
|
end
|
16
25
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<%= pb_rails("button", props: { text: "Open Dialog", data: {"open-dialog": "dialog-loading"} }) %>
|
2
|
+
|
3
|
+
<%= pb_rails("dialog", props: {
|
4
|
+
id:"dialog-loading",
|
5
|
+
size: "sm",
|
6
|
+
title: "Loading Exmaple",
|
7
|
+
text: "Make a loading request?",
|
8
|
+
cancel_button: "Cancel Button",
|
9
|
+
cancel_button_id: "cancel-button-loading",
|
10
|
+
confirm_button: "Okay",
|
11
|
+
confirm_button_id: "confirm-button-loading",
|
12
|
+
loading: true,
|
13
|
+
}) %>
|
@@ -17,9 +17,9 @@ $form_pill_colors: (
|
|
17
17
|
display: inline-flex;
|
18
18
|
justify-content: center;
|
19
19
|
align-items: center;
|
20
|
-
padding: 0
|
20
|
+
padding: 0 $space-md/2;
|
21
21
|
height: $pb_form_pill_height;
|
22
|
-
border-radius:
|
22
|
+
border-radius: $pb_form_pill_height/2;
|
23
23
|
margin-bottom: 2px;
|
24
24
|
margin-top: 2px;
|
25
25
|
cursor: pointer;
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/* eslint-disable react/jsx-no-target-blank */
|
2
|
-
/* eslint-disable react/no-multi-comp
|
2
|
+
/* eslint-disable react/no-multi-comp */
|
3
3
|
|
4
4
|
import React from 'react'
|
5
5
|
import classnames from 'classnames'
|
@@ -18,6 +18,7 @@ type HashtagProps = {
|
|
18
18
|
id?: string,
|
19
19
|
newWindow?: boolean,
|
20
20
|
rel?: string,
|
21
|
+
target?: string,
|
21
22
|
text?: string,
|
22
23
|
type: "default" | "home" | "project" | "appointment",
|
23
24
|
url?: string,
|
@@ -40,6 +41,7 @@ const Hashtag = (props: HashtagProps) => {
|
|
40
41
|
id,
|
41
42
|
newWindow,
|
42
43
|
rel,
|
44
|
+
target,
|
43
45
|
text,
|
44
46
|
type = 'default',
|
45
47
|
url,
|
@@ -50,6 +52,18 @@ const Hashtag = (props: HashtagProps) => {
|
|
50
52
|
const htmlProps = buildHtmlProps(htmlOptions)
|
51
53
|
const classes = classnames(buildCss('pb_hashtag_kit'), globalProps(props), className)
|
52
54
|
|
55
|
+
const getTargetAttribute = () => {
|
56
|
+
if (target && url) {
|
57
|
+
return target
|
58
|
+
} else if (newWindow) {
|
59
|
+
return '_blank'
|
60
|
+
} else {
|
61
|
+
return '_self'
|
62
|
+
}
|
63
|
+
|
64
|
+
return null
|
65
|
+
}
|
66
|
+
|
53
67
|
return (
|
54
68
|
<span
|
55
69
|
{...ariaProps}
|
@@ -61,7 +75,7 @@ const Hashtag = (props: HashtagProps) => {
|
|
61
75
|
<a
|
62
76
|
href={url}
|
63
77
|
rel={(newWindow ? "noreferrer" : rel)}
|
64
|
-
target={(
|
78
|
+
target={getTargetAttribute()}
|
65
79
|
>
|
66
80
|
<Badge
|
67
81
|
dark={dark}
|
@@ -2,4 +2,4 @@
|
|
2
2
|
|
3
3
|
<br/><br/>
|
4
4
|
|
5
|
-
<%= pb_rails("hashtag", props: {text: "Open in a new Window", url: "https://google.com", type: "project",
|
5
|
+
<%= pb_rails("hashtag", props: {text: "Open in a new Window", url: "https://google.com", type: "project", target: "_blank"}) %>
|
@@ -1 +1 @@
|
|
1
|
-
Use the
|
1
|
+
Use the `target` prop to control whether the link opens on the same or a new tab (same page is the default behavior). You can use any [web/standard](https://www.w3schools.com/tags/att_a_target.asp) values or a custom string to specify your link target.
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<%= pb_content_tag(:span) do %>
|
2
|
-
<%= link_to object.url, target: object.
|
2
|
+
<%= link_to object.url, target: object.target_option do %>
|
3
3
|
<%= pb_rails("badge", props: { dark: object.dark, variant: "primary", text: object.hashtag_text }) %>
|
4
4
|
<% end %>
|
5
5
|
<% end %>
|
@@ -10,6 +10,7 @@ module Playbook
|
|
10
10
|
values: %w[default project home appointment],
|
11
11
|
default: "default"
|
12
12
|
prop :url
|
13
|
+
prop :target
|
13
14
|
|
14
15
|
def classname
|
15
16
|
generate_classname("pb_hastag_kit")
|
@@ -19,8 +20,14 @@ module Playbook
|
|
19
20
|
type_text + text
|
20
21
|
end
|
21
22
|
|
22
|
-
def
|
23
|
-
|
23
|
+
def target_option
|
24
|
+
if target && url
|
25
|
+
target
|
26
|
+
elsif new_window
|
27
|
+
"_blank"
|
28
|
+
else
|
29
|
+
"_self"
|
30
|
+
end
|
24
31
|
end
|
25
32
|
|
26
33
|
private
|
@@ -23,6 +23,7 @@ type HomeAddressStreetProps = {
|
|
23
23
|
homeId: string,
|
24
24
|
houseStyle: string,
|
25
25
|
homeUrl: string,
|
26
|
+
target: string,
|
26
27
|
newWindow: boolean,
|
27
28
|
state: string,
|
28
29
|
zipcode: string,
|
@@ -42,6 +43,7 @@ const HomeAddressStreet = (props: HomeAddressStreetProps): React.ReactElement =>
|
|
42
43
|
htmlOptions = {},
|
43
44
|
homeId,
|
44
45
|
homeUrl,
|
46
|
+
target,
|
45
47
|
newWindow,
|
46
48
|
houseStyle,
|
47
49
|
state,
|
@@ -62,6 +64,19 @@ const HomeAddressStreet = (props: HomeAddressStreetProps): React.ReactElement =>
|
|
62
64
|
const dataProps: GenericObject = buildDataProps(data)
|
63
65
|
const ariaProps: GenericObject = buildAriaProps(aria)
|
64
66
|
const htmlProps = buildHtmlProps(htmlOptions)
|
67
|
+
|
68
|
+
const getTargetAttribute = () => {
|
69
|
+
if (target && homeUrl) {
|
70
|
+
return target
|
71
|
+
} else if (newWindow) {
|
72
|
+
return '_blank'
|
73
|
+
} else {
|
74
|
+
return '_self'
|
75
|
+
}
|
76
|
+
|
77
|
+
return null
|
78
|
+
}
|
79
|
+
|
65
80
|
return (
|
66
81
|
<div
|
67
82
|
className={classes(className, dark)}
|
@@ -120,6 +135,7 @@ const HomeAddressStreet = (props: HomeAddressStreetProps): React.ReactElement =>
|
|
120
135
|
dark={dark}
|
121
136
|
marginRight="xxs"
|
122
137
|
newWindow={newWindow}
|
138
|
+
target={getTargetAttribute()}
|
123
139
|
text={homeId}
|
124
140
|
type="home"
|
125
141
|
url={homeUrl || '#'}
|