playbook_ui 2.9.2 → 2.9.3
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/pb.logo.svg +28 -0
- data/app/helpers/playbook/pb_doc_helper.rb +9 -12
- data/app/helpers/playbook/pb_kit_helper.rb +12 -30
- data/app/pb_kits/playbook/_playbook.scss +50 -0
- data/app/pb_kits/playbook/index.js +10 -9
- data/app/pb_kits/playbook/kits/pb_contact.js +4 -0
- data/app/pb_kits/playbook/kits/pb_person.js +4 -0
- data/app/pb_kits/playbook/kits/pb_person_contact.js +4 -0
- data/app/pb_kits/playbook/packs/application.js +3 -3
- data/app/pb_kits/playbook/packs/examples.js +85 -127
- data/app/pb_kits/playbook/packs/kits.js +36 -36
- data/app/pb_kits/playbook/packs/main.scss +1 -1
- data/app/pb_kits/playbook/packs/site_styles/_site-style.scss +7 -0
- data/app/pb_kits/playbook/pb_bar_graph/barGraphSettings.js +1 -1
- data/app/pb_kits/playbook/pb_button/_button.jsx +48 -49
- data/app/pb_kits/playbook/pb_button/docs/_button_default.jsx +8 -2
- data/app/pb_kits/playbook/pb_card/_card.html.erb +2 -2
- data/app/pb_kits/playbook/pb_card/child_kits/_card_body.html.erb +1 -1
- data/app/pb_kits/playbook/pb_contact/_contact.html.erb +6 -0
- data/app/pb_kits/playbook/pb_contact/_contact.jsx +72 -0
- data/app/pb_kits/playbook/{pb_phone/_phone.scss → pb_contact/_contact.scss} +0 -0
- data/app/pb_kits/playbook/pb_contact/contact.rb +78 -0
- data/app/pb_kits/playbook/pb_contact/docs/_contact_default.html.erb +18 -0
- data/app/pb_kits/playbook/pb_contact/docs/_contact_default.jsx +26 -0
- data/app/pb_kits/playbook/pb_contact/docs/example.yml +8 -0
- data/app/pb_kits/playbook/pb_contact/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_dashboard/commonSettings.js +16 -13
- data/app/pb_kits/playbook/pb_hashtag/_hashtag.html.erb +2 -2
- data/app/pb_kits/playbook/pb_hashtag/hashtag.rb +20 -59
- data/app/pb_kits/playbook/pb_home_address_street/_home_address_street.html.erb +3 -3
- data/app/pb_kits/playbook/pb_home_address_street/home_address_street.rb +18 -61
- data/app/pb_kits/playbook/pb_input/_input.html.erb +1 -1
- data/app/pb_kits/playbook/pb_input/_input.jsx +2 -2
- data/app/pb_kits/playbook/pb_input/_input.scss +1 -1
- data/app/pb_kits/playbook/pb_input/input.rb +10 -79
- data/app/pb_kits/playbook/pb_line_graph/lineGraphSettings.js +1 -1
- data/app/pb_kits/playbook/{pb_owner/_owner.html.erb → pb_person/_person.html.erb} +1 -1
- data/app/pb_kits/playbook/pb_person/_person.jsx +36 -0
- data/app/pb_kits/playbook/{pb_owner/_owner.scss → pb_person/_person.scss} +2 -2
- data/app/pb_kits/playbook/pb_person/docs/_person_default.html.erb +1 -0
- data/app/pb_kits/playbook/pb_person/docs/_person_default.jsx +13 -0
- data/app/pb_kits/playbook/pb_person/docs/example.yml +9 -0
- data/app/pb_kits/playbook/pb_person/docs/index.js +1 -0
- data/app/pb_kits/playbook/{pb_owner/owner.rb → pb_person/person.rb} +18 -14
- data/app/pb_kits/playbook/pb_person_contact/_person_contact.html.erb +12 -0
- data/app/pb_kits/playbook/pb_person_contact/_person_contact.jsx +49 -0
- data/app/pb_kits/playbook/{pb_owner_phone/_owner_phone.scss → pb_person_contact/_person_contact.scss} +3 -3
- data/app/pb_kits/playbook/pb_person_contact/docs/_person_contact_default.html.erb +21 -0
- data/app/pb_kits/playbook/pb_person_contact/docs/_person_contact_default.jsx +34 -0
- data/app/pb_kits/playbook/pb_person_contact/docs/example.yml +8 -0
- data/app/pb_kits/playbook/pb_person_contact/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_person_contact/person_contact.rb +55 -0
- data/app/pb_kits/playbook/props.rb +4 -4
- data/app/pb_kits/playbook/props/base.rb +7 -3
- data/app/pb_kits/playbook/props/number.rb +11 -0
- data/app/pb_kits/playbook/props/proc.rb +11 -0
- data/app/pb_kits/playbook/tokens/_colors.scss +12 -8
- data/app/views/layouts/playbook/_nav.html.slim +2 -2
- data/app/views/playbook/pages/principles.html.slim +0 -2
- data/fonts/fontawesome.min.js +5 -0
- data/fonts/regular.min.js +5 -0
- data/lib/generators/kit/kit_generator.rb +2 -2
- data/lib/playbook/version.rb +1 -1
- metadata +35 -32
- data/app/pb_kits/playbook/kits/pb_owner.js +0 -4
- data/app/pb_kits/playbook/kits/pb_owner_phone.js +0 -4
- data/app/pb_kits/playbook/kits/pb_phone.js +0 -4
- data/app/pb_kits/playbook/packs/site_styles/_kit_style_index.scss +0 -50
- data/app/pb_kits/playbook/pb_owner/_owner.jsx +0 -21
- data/app/pb_kits/playbook/pb_owner/docs/_owner_default.html.erb +0 -1
- data/app/pb_kits/playbook/pb_owner/docs/_owner_default.jsx +0 -10
- data/app/pb_kits/playbook/pb_owner/docs/example.yml +0 -9
- data/app/pb_kits/playbook/pb_owner/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_owner_phone/_owner_phone.html.erb +0 -7
- data/app/pb_kits/playbook/pb_owner_phone/_owner_phone.jsx +0 -21
- data/app/pb_kits/playbook/pb_owner_phone/docs/_owner_phone_default.html.erb +0 -6
- data/app/pb_kits/playbook/pb_owner_phone/docs/_owner_phone_default.jsx +0 -10
- data/app/pb_kits/playbook/pb_owner_phone/docs/example.yml +0 -9
- data/app/pb_kits/playbook/pb_owner_phone/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_owner_phone/owner_phone.rb +0 -62
- data/app/pb_kits/playbook/pb_phone/_phone.html.erb +0 -6
- data/app/pb_kits/playbook/pb_phone/_phone.jsx +0 -21
- data/app/pb_kits/playbook/pb_phone/docs/_phone_default.html.erb +0 -4
- data/app/pb_kits/playbook/pb_phone/docs/_phone_default.jsx +0 -10
- data/app/pb_kits/playbook/pb_phone/docs/example.yml +0 -9
- data/app/pb_kits/playbook/pb_phone/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_phone/phone.rb +0 -70
- data/fonts/fontawesome.js +0 -1978
- data/fonts/regular.js +0 -1217
@@ -0,0 +1,36 @@
|
|
1
|
+
/* @flow */
|
2
|
+
/*eslint-disable react/no-multi-comp, flowtype/space-before-type-colon */
|
3
|
+
|
4
|
+
import React from 'react'
|
5
|
+
import classnames from 'classnames'
|
6
|
+
|
7
|
+
import {
|
8
|
+
Body,
|
9
|
+
Title,
|
10
|
+
} from '../'
|
11
|
+
|
12
|
+
type PersonProps = {
|
13
|
+
className?: String | Array<String>,
|
14
|
+
dark?: Boolean,
|
15
|
+
firstName: String,
|
16
|
+
lastName: String,
|
17
|
+
}
|
18
|
+
|
19
|
+
const Person = ({
|
20
|
+
className,
|
21
|
+
dark=false,
|
22
|
+
firstName,
|
23
|
+
lastName,
|
24
|
+
}: PersonProps) => {
|
25
|
+
|
26
|
+
return (
|
27
|
+
<div className={classnames('pb_person_kit', className)}>
|
28
|
+
<Body tag="span" dark={dark} className="pb_person_first">
|
29
|
+
{`${firstName}`}
|
30
|
+
</Body>
|
31
|
+
<Title text={` ${lastName}`} dark={dark} size={4} className="pb_person_first" />
|
32
|
+
</div>
|
33
|
+
)
|
34
|
+
}
|
35
|
+
|
36
|
+
export default Person
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= pb_rails("person", props: { first_name: "Kyle", last_name: "Fadigan" }) %>
|
@@ -0,0 +1 @@
|
|
1
|
+
export {default as PersonDefault} from './_person_default.jsx';
|
@@ -1,19 +1,23 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Playbook
|
4
|
-
module
|
5
|
-
class
|
6
|
-
PROPS = %i[
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
4
|
+
module PbPerson
|
5
|
+
class Person < Playbook::PbKit::Base
|
6
|
+
PROPS = %i[
|
7
|
+
configured_classname
|
8
|
+
configured_data
|
9
|
+
configured_id
|
10
|
+
configured_first_name
|
11
|
+
configured_last_name
|
12
|
+
].freeze
|
11
13
|
|
12
|
-
def initialize(
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
14
|
+
def initialize(
|
15
|
+
classname: default_configuration,
|
16
|
+
data: default_configuration,
|
17
|
+
id: default_configuration,
|
18
|
+
first_name: default_configuration,
|
19
|
+
last_name: default_configuration
|
20
|
+
)
|
17
21
|
self.configured_classname = classname
|
18
22
|
self.configured_data = data
|
19
23
|
self.configured_id = id
|
@@ -22,7 +26,7 @@ module Playbook
|
|
22
26
|
end
|
23
27
|
|
24
28
|
def first_name
|
25
|
-
pb_first_name = Playbook::PbBody::Body.new(tag: "span", classname: "
|
29
|
+
pb_first_name = Playbook::PbBody::Body.new(tag: "span", classname: "pb_person_first") do
|
26
30
|
default_value(configured_first_name, "")
|
27
31
|
end
|
28
32
|
ApplicationController.renderer.render(partial: pb_first_name, as: :object)
|
@@ -36,7 +40,7 @@ module Playbook
|
|
36
40
|
end
|
37
41
|
|
38
42
|
def to_partial_path
|
39
|
-
"
|
43
|
+
"pb_person/person"
|
40
44
|
end
|
41
45
|
|
42
46
|
private
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<%= content_tag(:div,
|
2
|
+
id: object.id,
|
3
|
+
data: object.data,
|
4
|
+
class: object.classname("pb_person_contact_kit")) do %>
|
5
|
+
<%= object.name %>
|
6
|
+
<% object.contacts.each do |contact| %>
|
7
|
+
<%= pb_rails("contact", props: {
|
8
|
+
contact_type: contact[:contact_type],
|
9
|
+
contact_value: contact[:contact_value],
|
10
|
+
}) %>
|
11
|
+
<% end %>
|
12
|
+
<% end %>
|
@@ -0,0 +1,49 @@
|
|
1
|
+
/* @flow */
|
2
|
+
/*eslint-disable react/no-multi-comp, flowtype/space-before-type-colon */
|
3
|
+
|
4
|
+
import React from 'react'
|
5
|
+
import classnames from 'classnames'
|
6
|
+
|
7
|
+
import {
|
8
|
+
Person,
|
9
|
+
Contact,
|
10
|
+
} from '../'
|
11
|
+
|
12
|
+
type PersonContactProps = {
|
13
|
+
className?: String | Array<String>,
|
14
|
+
dark?: Boolean,
|
15
|
+
firstName: String,
|
16
|
+
lastName: String,
|
17
|
+
contacts?: Array<{contactType: String, contactValue: String}>,
|
18
|
+
}
|
19
|
+
|
20
|
+
const contactsArray = ({contacts=[]}: PersonContactProps) => {
|
21
|
+
return contacts.map((contactObject, index) => {
|
22
|
+
return (
|
23
|
+
<Contact
|
24
|
+
contactType={contactObject.contactType}
|
25
|
+
contactValue={contactObject.contactValue}
|
26
|
+
/>
|
27
|
+
);
|
28
|
+
})
|
29
|
+
}
|
30
|
+
|
31
|
+
const PersonContact = ({
|
32
|
+
className,
|
33
|
+
dark=false,
|
34
|
+
firstName,
|
35
|
+
lastName,
|
36
|
+
contacts,
|
37
|
+
}: PersonContactProps) => {
|
38
|
+
|
39
|
+
const contactKits = contactsArray({contacts})
|
40
|
+
|
41
|
+
return (
|
42
|
+
<div className={classnames('pb_person_contact_kit', className)}>
|
43
|
+
<Person firstName={firstName} lastName={lastName} />
|
44
|
+
{contactKits}
|
45
|
+
</div>
|
46
|
+
)
|
47
|
+
}
|
48
|
+
|
49
|
+
export default PersonContact
|
@@ -1,8 +1,8 @@
|
|
1
1
|
@import "../tokens/spacing";
|
2
|
-
@import "../
|
3
|
-
@import "../
|
2
|
+
@import "../pb_contact/contact";
|
3
|
+
@import "../pb_person/person";
|
4
4
|
|
5
|
-
.
|
5
|
+
.pb_person_contact_kit {
|
6
6
|
display: flex;
|
7
7
|
justify-content: flex-start;
|
8
8
|
align-items: flex-start;
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<%= pb_rails("person_contact", props: {
|
2
|
+
first_name: "Pauline",
|
3
|
+
last_name: "Smith",
|
4
|
+
contacts: [
|
5
|
+
{
|
6
|
+
contact_type: "email",
|
7
|
+
contact_value: "email@example.com"
|
8
|
+
},
|
9
|
+
{
|
10
|
+
contact_value: 5555555555,
|
11
|
+
},
|
12
|
+
{
|
13
|
+
contact_type: "email",
|
14
|
+
contact_value: "email@example.com",
|
15
|
+
},
|
16
|
+
{
|
17
|
+
contact_type: "work",
|
18
|
+
contact_value: "3245627482",
|
19
|
+
}
|
20
|
+
]
|
21
|
+
}) %>
|
@@ -0,0 +1,34 @@
|
|
1
|
+
import React from "react"
|
2
|
+
import {PersonContact} from "../../"
|
3
|
+
|
4
|
+
|
5
|
+
|
6
|
+
function PersonContactDefault() {
|
7
|
+
return (
|
8
|
+
<div>
|
9
|
+
<PersonContact
|
10
|
+
firstName="Pauline"
|
11
|
+
lastName="Smith"
|
12
|
+
contacts={[
|
13
|
+
{
|
14
|
+
contactType: "email",
|
15
|
+
contactValue: "email@example.com"
|
16
|
+
},
|
17
|
+
{
|
18
|
+
contactValue: "5555555555",
|
19
|
+
},
|
20
|
+
{
|
21
|
+
contactType: "email",
|
22
|
+
contactValue: "email@example.com",
|
23
|
+
},
|
24
|
+
{
|
25
|
+
contactType: "work",
|
26
|
+
contactValue: "3245627482",
|
27
|
+
}
|
28
|
+
]}
|
29
|
+
/>
|
30
|
+
</div>
|
31
|
+
)
|
32
|
+
}
|
33
|
+
|
34
|
+
export default PersonContactDefault;
|
@@ -0,0 +1 @@
|
|
1
|
+
export {default as PersonContactDefault} from './_person_contact_default.jsx';
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Playbook
|
4
|
+
module PbPersonContact
|
5
|
+
class PersonContact < Playbook::PbKit::Base
|
6
|
+
PROPS = %i[
|
7
|
+
configured_classname
|
8
|
+
configured_data
|
9
|
+
configured_id
|
10
|
+
configured_first_name
|
11
|
+
configured_last_name
|
12
|
+
configured_contacts
|
13
|
+
].freeze
|
14
|
+
|
15
|
+
def initialize(
|
16
|
+
classname: default_configuration,
|
17
|
+
data: default_configuration,
|
18
|
+
id: default_configuration,
|
19
|
+
first_name: default_configuration,
|
20
|
+
last_name: default_configuration,
|
21
|
+
contacts: default_configuration
|
22
|
+
)
|
23
|
+
self.configured_classname = classname
|
24
|
+
self.configured_data = data
|
25
|
+
self.configured_id = id
|
26
|
+
self.configured_first_name = first_name
|
27
|
+
self.configured_last_name = last_name
|
28
|
+
self.configured_contacts = contacts
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
def name
|
33
|
+
person = Playbook::PbPerson::Person.new(first_name: configured_first_name, last_name: configured_last_name)
|
34
|
+
ApplicationController.renderer.render(partial: person, as: :object)
|
35
|
+
end
|
36
|
+
|
37
|
+
def contacts
|
38
|
+
configured_contacts if is_set? configured_contacts
|
39
|
+
end
|
40
|
+
|
41
|
+
def to_partial_path
|
42
|
+
"pb_person_contact/person_contact"
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
DEFAULT = Object.new
|
48
|
+
private_constant :DEFAULT
|
49
|
+
def default_configuration
|
50
|
+
DEFAULT
|
51
|
+
end
|
52
|
+
attr_accessor(*PROPS)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -5,21 +5,20 @@ require_relative "./props/base"
|
|
5
5
|
require_relative "./props/boolean"
|
6
6
|
require_relative "./props/enum"
|
7
7
|
require_relative "./props/hash"
|
8
|
+
require_relative "./props/number"
|
8
9
|
require_relative "./props/number_array"
|
9
10
|
require_relative "./props/string"
|
11
|
+
require_relative "./props/proc"
|
10
12
|
|
11
13
|
module Playbook
|
12
14
|
module Props
|
13
15
|
extend ActiveSupport::Concern
|
14
16
|
|
15
|
-
attr_reader :block
|
16
|
-
|
17
17
|
def initialize(prop_values, &block)
|
18
|
-
@values = prop_values
|
18
|
+
@values = { children: block }.merge(prop_values)
|
19
19
|
self.class.props.each do |key, definition|
|
20
20
|
definition.validate! @values[key]
|
21
21
|
end
|
22
|
-
@block = block_given? ? block : nil
|
23
22
|
end
|
24
23
|
|
25
24
|
def prop(name)
|
@@ -38,6 +37,7 @@ module Playbook
|
|
38
37
|
prop :data, type: Playbook::Props::Hash, default: {}
|
39
38
|
prop :classname
|
40
39
|
prop :aria, type: Playbook::Props::Hash, default: {}
|
40
|
+
prop :children, type: Playbook::Props::Proc
|
41
41
|
end
|
42
42
|
|
43
43
|
class_methods do
|
@@ -5,10 +5,11 @@ module Playbook
|
|
5
5
|
class Error < StandardError; end
|
6
6
|
|
7
7
|
class Base
|
8
|
-
attr_reader :default
|
8
|
+
attr_reader :default, :required
|
9
9
|
|
10
|
-
def initialize(default: nil)
|
10
|
+
def initialize(default: nil, required: false)
|
11
11
|
@default = default
|
12
|
+
@required = required
|
12
13
|
end
|
13
14
|
|
14
15
|
def value(value)
|
@@ -16,7 +17,10 @@ module Playbook
|
|
16
17
|
end
|
17
18
|
|
18
19
|
def validate!(input_value)
|
19
|
-
|
20
|
+
raise(Playbook::Props::Error, "#{inspect} is a required prop and needs to be provided a value") if required && input_value.nil?
|
21
|
+
|
22
|
+
validate(value(input_value)) ||
|
23
|
+
raise(Playbook::Props::Error, "Invalid value (#{input_value.inspect}) for prop (#{inspect})")
|
20
24
|
end
|
21
25
|
|
22
26
|
def validate(_value)
|