playbook_ui 2.9.2 → 2.9.3

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.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/pb.logo.svg +28 -0
  3. data/app/helpers/playbook/pb_doc_helper.rb +9 -12
  4. data/app/helpers/playbook/pb_kit_helper.rb +12 -30
  5. data/app/pb_kits/playbook/_playbook.scss +50 -0
  6. data/app/pb_kits/playbook/index.js +10 -9
  7. data/app/pb_kits/playbook/kits/pb_contact.js +4 -0
  8. data/app/pb_kits/playbook/kits/pb_person.js +4 -0
  9. data/app/pb_kits/playbook/kits/pb_person_contact.js +4 -0
  10. data/app/pb_kits/playbook/packs/application.js +3 -3
  11. data/app/pb_kits/playbook/packs/examples.js +85 -127
  12. data/app/pb_kits/playbook/packs/kits.js +36 -36
  13. data/app/pb_kits/playbook/packs/main.scss +1 -1
  14. data/app/pb_kits/playbook/packs/site_styles/_site-style.scss +7 -0
  15. data/app/pb_kits/playbook/pb_bar_graph/barGraphSettings.js +1 -1
  16. data/app/pb_kits/playbook/pb_button/_button.jsx +48 -49
  17. data/app/pb_kits/playbook/pb_button/docs/_button_default.jsx +8 -2
  18. data/app/pb_kits/playbook/pb_card/_card.html.erb +2 -2
  19. data/app/pb_kits/playbook/pb_card/child_kits/_card_body.html.erb +1 -1
  20. data/app/pb_kits/playbook/pb_contact/_contact.html.erb +6 -0
  21. data/app/pb_kits/playbook/pb_contact/_contact.jsx +72 -0
  22. data/app/pb_kits/playbook/{pb_phone/_phone.scss → pb_contact/_contact.scss} +0 -0
  23. data/app/pb_kits/playbook/pb_contact/contact.rb +78 -0
  24. data/app/pb_kits/playbook/pb_contact/docs/_contact_default.html.erb +18 -0
  25. data/app/pb_kits/playbook/pb_contact/docs/_contact_default.jsx +26 -0
  26. data/app/pb_kits/playbook/pb_contact/docs/example.yml +8 -0
  27. data/app/pb_kits/playbook/pb_contact/docs/index.js +1 -0
  28. data/app/pb_kits/playbook/pb_dashboard/commonSettings.js +16 -13
  29. data/app/pb_kits/playbook/pb_hashtag/_hashtag.html.erb +2 -2
  30. data/app/pb_kits/playbook/pb_hashtag/hashtag.rb +20 -59
  31. data/app/pb_kits/playbook/pb_home_address_street/_home_address_street.html.erb +3 -3
  32. data/app/pb_kits/playbook/pb_home_address_street/home_address_street.rb +18 -61
  33. data/app/pb_kits/playbook/pb_input/_input.html.erb +1 -1
  34. data/app/pb_kits/playbook/pb_input/_input.jsx +2 -2
  35. data/app/pb_kits/playbook/pb_input/_input.scss +1 -1
  36. data/app/pb_kits/playbook/pb_input/input.rb +10 -79
  37. data/app/pb_kits/playbook/pb_line_graph/lineGraphSettings.js +1 -1
  38. data/app/pb_kits/playbook/{pb_owner/_owner.html.erb → pb_person/_person.html.erb} +1 -1
  39. data/app/pb_kits/playbook/pb_person/_person.jsx +36 -0
  40. data/app/pb_kits/playbook/{pb_owner/_owner.scss → pb_person/_person.scss} +2 -2
  41. data/app/pb_kits/playbook/pb_person/docs/_person_default.html.erb +1 -0
  42. data/app/pb_kits/playbook/pb_person/docs/_person_default.jsx +13 -0
  43. data/app/pb_kits/playbook/pb_person/docs/example.yml +9 -0
  44. data/app/pb_kits/playbook/pb_person/docs/index.js +1 -0
  45. data/app/pb_kits/playbook/{pb_owner/owner.rb → pb_person/person.rb} +18 -14
  46. data/app/pb_kits/playbook/pb_person_contact/_person_contact.html.erb +12 -0
  47. data/app/pb_kits/playbook/pb_person_contact/_person_contact.jsx +49 -0
  48. data/app/pb_kits/playbook/{pb_owner_phone/_owner_phone.scss → pb_person_contact/_person_contact.scss} +3 -3
  49. data/app/pb_kits/playbook/pb_person_contact/docs/_person_contact_default.html.erb +21 -0
  50. data/app/pb_kits/playbook/pb_person_contact/docs/_person_contact_default.jsx +34 -0
  51. data/app/pb_kits/playbook/pb_person_contact/docs/example.yml +8 -0
  52. data/app/pb_kits/playbook/pb_person_contact/docs/index.js +1 -0
  53. data/app/pb_kits/playbook/pb_person_contact/person_contact.rb +55 -0
  54. data/app/pb_kits/playbook/props.rb +4 -4
  55. data/app/pb_kits/playbook/props/base.rb +7 -3
  56. data/app/pb_kits/playbook/props/number.rb +11 -0
  57. data/app/pb_kits/playbook/props/proc.rb +11 -0
  58. data/app/pb_kits/playbook/tokens/_colors.scss +12 -8
  59. data/app/views/layouts/playbook/_nav.html.slim +2 -2
  60. data/app/views/playbook/pages/principles.html.slim +0 -2
  61. data/fonts/fontawesome.min.js +5 -0
  62. data/fonts/regular.min.js +5 -0
  63. data/lib/generators/kit/kit_generator.rb +2 -2
  64. data/lib/playbook/version.rb +1 -1
  65. metadata +35 -32
  66. data/app/pb_kits/playbook/kits/pb_owner.js +0 -4
  67. data/app/pb_kits/playbook/kits/pb_owner_phone.js +0 -4
  68. data/app/pb_kits/playbook/kits/pb_phone.js +0 -4
  69. data/app/pb_kits/playbook/packs/site_styles/_kit_style_index.scss +0 -50
  70. data/app/pb_kits/playbook/pb_owner/_owner.jsx +0 -21
  71. data/app/pb_kits/playbook/pb_owner/docs/_owner_default.html.erb +0 -1
  72. data/app/pb_kits/playbook/pb_owner/docs/_owner_default.jsx +0 -10
  73. data/app/pb_kits/playbook/pb_owner/docs/example.yml +0 -9
  74. data/app/pb_kits/playbook/pb_owner/docs/index.js +0 -1
  75. data/app/pb_kits/playbook/pb_owner_phone/_owner_phone.html.erb +0 -7
  76. data/app/pb_kits/playbook/pb_owner_phone/_owner_phone.jsx +0 -21
  77. data/app/pb_kits/playbook/pb_owner_phone/docs/_owner_phone_default.html.erb +0 -6
  78. data/app/pb_kits/playbook/pb_owner_phone/docs/_owner_phone_default.jsx +0 -10
  79. data/app/pb_kits/playbook/pb_owner_phone/docs/example.yml +0 -9
  80. data/app/pb_kits/playbook/pb_owner_phone/docs/index.js +0 -1
  81. data/app/pb_kits/playbook/pb_owner_phone/owner_phone.rb +0 -62
  82. data/app/pb_kits/playbook/pb_phone/_phone.html.erb +0 -6
  83. data/app/pb_kits/playbook/pb_phone/_phone.jsx +0 -21
  84. data/app/pb_kits/playbook/pb_phone/docs/_phone_default.html.erb +0 -4
  85. data/app/pb_kits/playbook/pb_phone/docs/_phone_default.jsx +0 -10
  86. data/app/pb_kits/playbook/pb_phone/docs/example.yml +0 -9
  87. data/app/pb_kits/playbook/pb_phone/docs/index.js +0 -1
  88. data/app/pb_kits/playbook/pb_phone/phone.rb +0 -70
  89. data/fonts/fontawesome.js +0 -1978
  90. data/fonts/regular.js +0 -1217
@@ -1,4 +1,4 @@
1
- import commonSettings from "../pb_dashboard/commonSettings.js";
1
+ import { commonSettings } from "../pb_dashboard/commonSettings.js";
2
2
  import typography from "../tokens/_typography.scss";
3
3
 
4
4
  const markerStyles = highchart => {
@@ -1,7 +1,7 @@
1
1
  <%= content_tag(:div,
2
2
  id: object.id,
3
3
  data: object.data,
4
- class: object.classname("pb_owner_kit")) do %>
4
+ class: object.classname("pb_person_kit")) do %>
5
5
  <%= object.first_name %>
6
6
  <%= object.last_name %>
7
7
  <% end %>
@@ -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
@@ -2,11 +2,11 @@
2
2
  @import "../pb_body/body";
3
3
  @import "../tokens/spacing";
4
4
 
5
- [class^=pb_owner_kit] {
5
+ [class^=pb_person_kit] {
6
6
  display: flex;
7
7
  align-items: baseline;
8
8
 
9
- .pb_owner_first {
9
+ .pb_person_first {
10
10
  margin: 0 ($space_xs - 4px) 0 0;
11
11
  }
12
12
  }
@@ -0,0 +1 @@
1
+ <%= pb_rails("person", props: { first_name: "Kyle", last_name: "Fadigan" }) %>
@@ -0,0 +1,13 @@
1
+ import React from "react"
2
+ import {Person} from "../../"
3
+
4
+ function PersonDefault() {
5
+ return (
6
+ <Person
7
+ firstName="Kyle"
8
+ lastName="Fadigan"
9
+ />
10
+ )
11
+ }
12
+
13
+ export default PersonDefault;
@@ -0,0 +1,9 @@
1
+ examples:
2
+
3
+ rails:
4
+ - person_default: Default
5
+
6
+
7
+ react:
8
+ - person_default: Default
9
+
@@ -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 PbOwner
5
- class Owner < Playbook::PbKit::Base
6
- PROPS = %i[configured_classname
7
- configured_data
8
- configured_id
9
- configured_first_name
10
- configured_last_name].freeze
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(classname: default_configuration,
13
- data: default_configuration,
14
- id: default_configuration,
15
- first_name: default_configuration,
16
- last_name: default_configuration)
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: "pb_owner_first") do
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
- "pb_owner/owner"
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 "../pb_phone/phone";
3
- @import "../pb_owner/owner";
2
+ @import "../pb_contact/contact";
3
+ @import "../pb_person/person";
4
4
 
5
- .pb_owner_phone_kit {
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,8 @@
1
+ examples:
2
+
3
+ rails:
4
+ - person_contact_default: Default
5
+
6
+
7
+ react:
8
+ - person_contact_default: Default
@@ -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
- validate(value(input_value)) || raise(Playbook::Props::Error, "Invalid value (#{input_value.inspect}) for prop (#{inspect})")
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)
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module Props
5
+ class Number < Playbook::Props::Base
6
+ def validate(value)
7
+ value.nil? || value.is_a?(Integer)
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module Props
5
+ class Proc < Playbook::Props::Base
6
+ def validate(block)
7
+ block.nil? || block.respond_to?(:call)
8
+ end
9
+ end
10
+ end
11
+ end