playbook_ui 4.6.1 → 4.7.0
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/_playbook.scss +1 -0
- data/app/pb_kits/playbook/data/menu.yml +2 -1
- data/app/pb_kits/playbook/index.js +1 -0
- data/app/pb_kits/playbook/packs/examples.js +2 -0
- data/app/pb_kits/playbook/packs/kits/pb_form_pill.js +1 -0
- data/app/pb_kits/playbook/pb_form_pill/_form_pill.html.erb +22 -0
- data/app/pb_kits/playbook/pb_form_pill/_form_pill.jsx +60 -0
- data/app/pb_kits/playbook/pb_form_pill/_form_pill.scss +49 -0
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_tag.html.erb +4 -0
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_tag.jsx +11 -0
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_user.html.erb +12 -0
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_user.jsx +19 -0
- data/app/pb_kits/playbook/pb_form_pill/docs/example.yml +10 -0
- data/app/pb_kits/playbook/pb_form_pill/docs/index.js +2 -0
- data/app/pb_kits/playbook/pb_form_pill/form_pill.rb +23 -0
- data/app/pb_kits/playbook/pb_home_address_street/_city_emphasis.html.erb +40 -0
- data/app/pb_kits/playbook/pb_home_address_street/_home_address_street.html.erb +6 -35
- data/app/pb_kits/playbook/pb_home_address_street/_home_address_street.jsx +53 -17
- data/app/pb_kits/playbook/pb_home_address_street/_street_emphasis.html.erb +31 -0
- data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_emphasis.html.erb +27 -0
- data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_emphasis.jsx +36 -0
- data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_emphasis.md +2 -0
- data/app/pb_kits/playbook/pb_home_address_street/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_home_address_street/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_home_address_street/home_address_street.rb +11 -0
- data/app/pb_kits/playbook/pb_popover/_popover.jsx +102 -53
- data/app/pb_kits/playbook/pb_popover/docs/_description.md +13 -1
- data/app/pb_kits/playbook/pb_popover/docs/_popover_click_any.html.erb +19 -0
- data/app/pb_kits/playbook/pb_popover/docs/_popover_click_any.jsx +40 -0
- data/app/pb_kits/playbook/pb_popover/docs/_popover_click_inside.html.erb +14 -0
- data/app/pb_kits/playbook/pb_popover/docs/_popover_click_inside.jsx +40 -0
- data/app/pb_kits/playbook/pb_popover/docs/_popover_click_outside.html.erb +14 -0
- data/app/pb_kits/playbook/pb_popover/docs/_popover_click_outside.jsx +40 -0
- data/app/pb_kits/playbook/pb_popover/docs/_popover_default.jsx +18 -21
- data/app/pb_kits/playbook/pb_popover/docs/_popover_list.jsx +32 -34
- data/app/pb_kits/playbook/pb_popover/docs/_popover_portal.jsx +24 -26
- data/app/pb_kits/playbook/pb_popover/docs/_popover_with_button.jsx +24 -26
- data/app/pb_kits/playbook/pb_popover/docs/example.yml +7 -1
- data/app/pb_kits/playbook/pb_popover/docs/index.js +3 -0
- data/app/pb_kits/playbook/pb_popover/index.js +51 -3
- data/app/pb_kits/playbook/pb_popover/popover.rb +4 -0
- data/app/pb_kits/playbook/tokens/_colors.scss +1 -1
- data/lib/playbook/version.rb +1 -1
- metadata +24 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f34f10c04ef659f3679d3b315a4feb7262222f64e1e9d0a426b4351b6ebee6f9
|
4
|
+
data.tar.gz: 936991948f07486bd253c898c16c3f81976f61d690334afcedfd6f607642c7e3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9cd4cf22cbcd44c01c45bbf4a988b3148014aca56b54e5e3db882e993b391204f11be7955dac5579654811a8a31e034fd4ed88cd1bc6d3fc6be5da9ee39168f6
|
7
|
+
data.tar.gz: 5c5bf0132b7ba17aebbc093f334f47bd05e352cc4370aba887b38135ab6c1675bbb02a1bd8876076e3c6bb08dfae69bd002fc6de0f883f0dc278cd61d30e6683
|
@@ -19,6 +19,7 @@
|
|
19
19
|
@import 'pb_distribution_bar/distribution_bar';
|
20
20
|
@import 'pb_fixed_confirmation_toast/fixed_confirmation_toast';
|
21
21
|
@import 'pb_form/form';
|
22
|
+
@import 'pb_form_pill/form_pill';
|
22
23
|
@import 'pb_flex/flex';
|
23
24
|
@import 'pb_hashtag/hashtag';
|
24
25
|
@import 'pb_highlight/highlight';
|
@@ -21,6 +21,7 @@ export Filter from './pb_filter/_filter.jsx'
|
|
21
21
|
export FixedConfirmationToast from './pb_fixed_confirmation_toast/_fixed_confirmation_toast.jsx'
|
22
22
|
export Flex from './pb_flex/_flex.jsx'
|
23
23
|
export FlexItem from './pb_flex/_flex_item.jsx'
|
24
|
+
export FormPill from './pb_form_pill/_form_pill.jsx'
|
24
25
|
export Hashtag from './pb_hashtag/_hashtag.jsx'
|
25
26
|
export Highlight from './pb_highlight/_highlight.jsx'
|
26
27
|
export HomeAddressStreet from './pb_home_address_street/_home_address_street.jsx'
|
@@ -34,6 +34,7 @@ import * as DistributionBar from 'pb_distribution_bar/docs'
|
|
34
34
|
import * as Filter from 'pb_filter/docs'
|
35
35
|
import * as FixedConfirmationToast from 'pb_fixed_confirmation_toast/docs'
|
36
36
|
import * as Flex from 'pb_flex/docs'
|
37
|
+
import * as FormPill from 'pb_form_pill/docs'
|
37
38
|
import * as Hashtag from 'pb_hashtag/docs'
|
38
39
|
import * as Highlight from 'pb_highlight/docs'
|
39
40
|
import * as HomeAddressStreet from 'pb_home_address_street/docs'
|
@@ -101,6 +102,7 @@ WebpackerReact.setup({
|
|
101
102
|
...Filter,
|
102
103
|
...FixedConfirmationToast,
|
103
104
|
...Flex,
|
105
|
+
...FormPill,
|
104
106
|
...Hashtag,
|
105
107
|
...Highlight,
|
106
108
|
...HomeAddressStreet,
|
@@ -0,0 +1 @@
|
|
1
|
+
import '../../pb_form_pill/_form_pill.jsx'
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<%= content_tag(:div,
|
2
|
+
id: object.id,
|
3
|
+
data: object.data,
|
4
|
+
class: object.classname) do %>
|
5
|
+
|
6
|
+
<% if object.name.present? %>
|
7
|
+
<%= pb_rails("avatar", props: {
|
8
|
+
name: object.name,
|
9
|
+
image_url: object.avatar_url,
|
10
|
+
size: "xs"
|
11
|
+
}) %>
|
12
|
+
<%= pb_rails("title", props: { text: object.name, size: 4, classname: "pb_form_pill_text" }) %>
|
13
|
+
|
14
|
+
<% elsif object.text.present? %>
|
15
|
+
<%= pb_rails("title", props: { text: object.text, size: 4, classname: "pb_form_pill_tag" }) %>
|
16
|
+
<% end %>
|
17
|
+
|
18
|
+
<%= pb_rails("body", props: { classname: "pb_form_pill_close" }) do %>
|
19
|
+
<%= pb_rails("icon", props: { icon: 'times', fixed_width: true }) %>
|
20
|
+
<% end %>
|
21
|
+
|
22
|
+
<% end %>
|
@@ -0,0 +1,60 @@
|
|
1
|
+
/* @flow */
|
2
|
+
import React from 'react'
|
3
|
+
import classnames from 'classnames'
|
4
|
+
import Title from '../pb_title/_title.jsx'
|
5
|
+
import Icon from '../pb_icon/_icon.jsx'
|
6
|
+
import Avatar from '../pb_avatar/_avatar.jsx'
|
7
|
+
|
8
|
+
type FormPillProps = {
|
9
|
+
|
10
|
+
className?: String,
|
11
|
+
id?: String,
|
12
|
+
text: String,
|
13
|
+
name: String,
|
14
|
+
onClick?: EventHandler,
|
15
|
+
avatar?: Boolean,
|
16
|
+
avatarUrl?: String,
|
17
|
+
}
|
18
|
+
const FormPill = ({
|
19
|
+
className,
|
20
|
+
text,
|
21
|
+
name,
|
22
|
+
onClick = () => {},
|
23
|
+
avatarUrl,
|
24
|
+
}: FormPillProps) => {
|
25
|
+
const css = classnames([
|
26
|
+
`pb_form_pill_kit_${'primary'}`,
|
27
|
+
className,
|
28
|
+
])
|
29
|
+
return (
|
30
|
+
<div className={css}>
|
31
|
+
<If condition={name}>
|
32
|
+
<Avatar
|
33
|
+
imageUrl={avatarUrl}
|
34
|
+
name={name}
|
35
|
+
size="xs"
|
36
|
+
/>
|
37
|
+
<Title
|
38
|
+
className="pb_form_pill_text"
|
39
|
+
size={4}
|
40
|
+
text={name}
|
41
|
+
/>
|
42
|
+
</If>
|
43
|
+
<If condition={text}>
|
44
|
+
<Title
|
45
|
+
className="pb_form_pill_tag"
|
46
|
+
size={4}
|
47
|
+
text={text}
|
48
|
+
/>
|
49
|
+
</If>
|
50
|
+
<div className="pb_form_pill_close">
|
51
|
+
<Icon
|
52
|
+
fixedWidth
|
53
|
+
icon="times"
|
54
|
+
onClick={onClick}
|
55
|
+
/>
|
56
|
+
</div>
|
57
|
+
</div>
|
58
|
+
)
|
59
|
+
}
|
60
|
+
export default FormPill
|
@@ -0,0 +1,49 @@
|
|
1
|
+
@import "../tokens/spacing";
|
2
|
+
@import "../tokens/colors";
|
3
|
+
@import "../tokens/opacity";
|
4
|
+
@import "../tokens/shadows";
|
5
|
+
@import "../pb_avatar/avatar";
|
6
|
+
|
7
|
+
$selector: ".pb_form_pill";
|
8
|
+
$pb_form_pill_height: 37px;
|
9
|
+
$form_pill_colors: (
|
10
|
+
primary: map-get($status_color_text, "primary"),
|
11
|
+
);
|
12
|
+
|
13
|
+
|
14
|
+
[class^=pb_form_pill_kit] {
|
15
|
+
display: inline-flex;
|
16
|
+
justify-content: center;
|
17
|
+
align-items: center;
|
18
|
+
padding: 0 $space-sm/3;
|
19
|
+
height: $pb_form_pill_height;
|
20
|
+
border-radius: $pb_form_pill_height/2;
|
21
|
+
@each $color_name, $color_value in $form_pill_colors {
|
22
|
+
&[class*=_#{$color_name}] {
|
23
|
+
background-color: rgba($color_value, $opacity-1);
|
24
|
+
transition: background-color 0.2s ease;
|
25
|
+
box-shadow: none;
|
26
|
+
&:hover {
|
27
|
+
background-color: rgba($color_value, $opacity-2);
|
28
|
+
}
|
29
|
+
#{$selector}_text {
|
30
|
+
color: $color_value;
|
31
|
+
padding-left: $space-sm;
|
32
|
+
padding-right: $space-sm/4;
|
33
|
+
}
|
34
|
+
#{$selector}_close {
|
35
|
+
color: $color_value;
|
36
|
+
padding-left: $space-sm/2;
|
37
|
+
padding-right: $space-sm/4;
|
38
|
+
display: flex;
|
39
|
+
align-items: center;
|
40
|
+
height: 100%;
|
41
|
+
cursor: pointer;
|
42
|
+
}
|
43
|
+
#{$selector}_tag {
|
44
|
+
color: $color_value;
|
45
|
+
padding-left: $space-sm;
|
46
|
+
}
|
47
|
+
}
|
48
|
+
}
|
49
|
+
}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import FormPill from '../_form_pill.jsx'
|
3
|
+
|
4
|
+
const FormPillDefault = () => {
|
5
|
+
return (
|
6
|
+
|
7
|
+
<div>
|
8
|
+
<FormPill
|
9
|
+
avatarUrl="https://randomuser.me/api/portraits/women/44.jpg"
|
10
|
+
name="Anna Black"
|
11
|
+
/>
|
12
|
+
<br />
|
13
|
+
<br />
|
14
|
+
<FormPill name="Anna Black" />
|
15
|
+
</div>
|
16
|
+
)
|
17
|
+
}
|
18
|
+
|
19
|
+
export default FormPillDefault
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Playbook
|
4
|
+
module PbFormPill
|
5
|
+
class FormPill
|
6
|
+
include Playbook::Props
|
7
|
+
|
8
|
+
partial "pb_form_pill/form_pill"
|
9
|
+
|
10
|
+
prop :avatar_url
|
11
|
+
prop :name
|
12
|
+
prop :text
|
13
|
+
|
14
|
+
def classname
|
15
|
+
generate_classname("pb_form_pill_kit", "primary", name, text)
|
16
|
+
end
|
17
|
+
|
18
|
+
def display_text
|
19
|
+
name.downcase
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
<%= pb_rails "body", props: {
|
2
|
+
classname: "pb_home_address_street_address",
|
3
|
+
color: "light",
|
4
|
+
text: object.address_house_style,
|
5
|
+
dark: object.dark
|
6
|
+
} %>
|
7
|
+
<%= pb_rails "body", props: {
|
8
|
+
classname: "pb_home_address_street_address",
|
9
|
+
color: "light",
|
10
|
+
text: object.address_house_style2,
|
11
|
+
dark: object.dark
|
12
|
+
} %>
|
13
|
+
<div>
|
14
|
+
<%= pb_rails "title", props: {
|
15
|
+
tag: "span",
|
16
|
+
size: 4,
|
17
|
+
text: object.city_state,
|
18
|
+
dark: object.dark
|
19
|
+
} %>
|
20
|
+
<%= pb_rails "body", props: {
|
21
|
+
tag: "span",
|
22
|
+
classname: "pb_home_zip",
|
23
|
+
color: "light",
|
24
|
+
text: object.zip,
|
25
|
+
dark: object.dark
|
26
|
+
} %>
|
27
|
+
</div>
|
28
|
+
|
29
|
+
<% if object.home_id %>
|
30
|
+
<%= pb_rails("hashtag", props: {
|
31
|
+
text: "#{object.home_id}",
|
32
|
+
url: object.home_url || "#",
|
33
|
+
type: "home",
|
34
|
+
dark: object.dark,
|
35
|
+
classname: "home-hashtag"}) %>
|
36
|
+
<% end %>
|
37
|
+
|
38
|
+
<%= pb_rails "body", props: { color: "light", tag: "span", dark: object.dark } do %>
|
39
|
+
<small><%= object.territory %></small>
|
40
|
+
<% end %>
|
@@ -2,38 +2,9 @@
|
|
2
2
|
id: object.id,
|
3
3
|
data: object.data,
|
4
4
|
class: object.classname) do %>
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
} %>
|
12
|
-
|
13
|
-
<%= pb_rails "title", props: {
|
14
|
-
classname: "pb_home_address_street_address",
|
15
|
-
size: 4,
|
16
|
-
text: object.address_house_style2,
|
17
|
-
dark: object.dark
|
18
|
-
} %>
|
19
|
-
|
20
|
-
<%= pb_rails "body", props: {
|
21
|
-
color: "light",
|
22
|
-
text: object.city_state_zip,
|
23
|
-
dark: object.dark
|
24
|
-
} %>
|
25
|
-
|
26
|
-
<% if object.home_id %>
|
27
|
-
<%= pb_rails("hashtag", props: {
|
28
|
-
text: "#{object.home_id}",
|
29
|
-
url: object.home_url || "#",
|
30
|
-
type: "home",
|
31
|
-
dark: object.dark,
|
32
|
-
classname: "home-hashtag"}) %>
|
33
|
-
<% end %>
|
34
|
-
|
35
|
-
<%= pb_rails "body", props: { color: "light", tag: "span", dark: object.dark } do %>
|
36
|
-
<small><%= object.territory %></small>
|
37
|
-
<% end %>
|
38
|
-
|
39
|
-
<% end %>
|
5
|
+
<% if object.emphasis == "city" %>
|
6
|
+
<%= render partial:"pb_home_address_street/city_emphasis.html.erb", locals: {object: object}%>
|
7
|
+
<% elsif object.emphasis == "street" %>
|
8
|
+
<%= render partial:"pb_home_address_street/street_emphasis.html.erb", locals: {object: object} %>
|
9
|
+
<% end %>
|
10
|
+
<% end %>
|
@@ -12,6 +12,7 @@ type HomeAddressStreetProps = {
|
|
12
12
|
city: String,
|
13
13
|
className?: String,
|
14
14
|
dark?: Boolean,
|
15
|
+
emphasis: 'street' | 'city',
|
15
16
|
homeId: Number,
|
16
17
|
houseStyle: String,
|
17
18
|
homeUrl: String,
|
@@ -33,6 +34,7 @@ const HomeAddressStreet = ({
|
|
33
34
|
city,
|
34
35
|
className,
|
35
36
|
dark = false,
|
37
|
+
emphasis = 'street',
|
36
38
|
homeId,
|
37
39
|
homeUrl,
|
38
40
|
houseStyle,
|
@@ -41,24 +43,58 @@ const HomeAddressStreet = ({
|
|
41
43
|
territory,
|
42
44
|
}: HomeAddressStreetProps) => (
|
43
45
|
<div className={classes(className, dark)}>
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
46
|
+
{
|
47
|
+
<Choose>
|
48
|
+
<When condition={emphasis == 'street'}>
|
49
|
+
<div>
|
50
|
+
<Title
|
51
|
+
className="pb_home_address_street_address"
|
52
|
+
dark={dark}
|
53
|
+
size={4}
|
54
|
+
>
|
55
|
+
{joinPresent([titleize(address), houseStyle], ' · ')}
|
56
|
+
</Title>
|
57
|
+
<Title
|
58
|
+
className="pb_home_address_street_address"
|
59
|
+
dark={dark}
|
60
|
+
size={4}
|
61
|
+
>
|
62
|
+
{titleize(addressCont)}
|
63
|
+
</Title>
|
64
|
+
<Body color="light">
|
65
|
+
{`${titleize(city)}, ${state} ${zipcode}`}
|
66
|
+
</Body>
|
67
|
+
</div>
|
68
|
+
</When>
|
69
|
+
<When condition={emphasis == 'city'}>
|
70
|
+
<div>
|
71
|
+
<Body color="light">
|
72
|
+
{joinPresent([titleize(address), houseStyle], ' · ')}
|
73
|
+
</Body>
|
74
|
+
<Body color="light">
|
75
|
+
{titleize(addressCont)}
|
76
|
+
</Body>
|
77
|
+
<div>
|
78
|
+
<Title
|
79
|
+
className="pb_home_address_street_address"
|
80
|
+
dark={dark}
|
81
|
+
size={4}
|
82
|
+
tag="span"
|
83
|
+
>
|
84
|
+
{`${titleize(city)}, ${state}`}
|
85
|
+
</Title>
|
86
|
+
<Body
|
87
|
+
color="light"
|
88
|
+
tag="span"
|
89
|
+
>
|
90
|
+
{` ${zipcode}`}
|
91
|
+
</Body>
|
92
|
+
</div>
|
93
|
+
</div>
|
94
|
+
</When>
|
95
|
+
</Choose>
|
96
|
+
}
|
51
97
|
|
52
|
-
<Title
|
53
|
-
className="pb_home_address_street_address"
|
54
|
-
dark={dark}
|
55
|
-
size={4}
|
56
|
-
>
|
57
|
-
{titleize(addressCont)}
|
58
|
-
</Title>
|
59
|
-
<Body color="light">
|
60
|
-
{`${titleize(city)}, ${state} ${zipcode}`}
|
61
|
-
</Body>
|
62
98
|
<If condition={homeId}>
|
63
99
|
<Hashtag
|
64
100
|
classname="home-hashtag"
|