playbook_ui 4.2.0 → 4.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/playbook/application_controller.rb +1 -0
  3. data/app/controllers/playbook/pages_controller.rb +0 -4
  4. data/app/controllers/playbook/samples_controller.rb +40 -0
  5. data/app/helpers/playbook/pb_doc_helper.rb +7 -1
  6. data/app/helpers/playbook/pb_sample_helper.rb +19 -0
  7. data/app/helpers/playbook/redcarpet_helper.rb +1 -1
  8. data/app/pb_kits/playbook/_playbook.scss +1 -0
  9. data/app/pb_kits/playbook/config/_kit_samples_list.html.erb +3 -0
  10. data/app/pb_kits/playbook/config/_kit_ui.html.slim +9 -5
  11. data/app/pb_kits/playbook/data/menu.yml +4 -0
  12. data/app/pb_kits/playbook/index.js +2 -0
  13. data/app/pb_kits/playbook/kits/pb_flex.js +4 -0
  14. data/app/pb_kits/playbook/kits/pb_highlight.js +4 -0
  15. data/app/pb_kits/playbook/packs/examples.js +4 -0
  16. data/app/pb_kits/playbook/packs/kits/pb_highlight.js +2 -0
  17. data/app/pb_kits/playbook/packs/kits/pb_popover.js +1 -0
  18. data/app/pb_kits/playbook/packs/main.scss +3 -0
  19. data/app/pb_kits/playbook/packs/samples.js +50 -0
  20. data/app/pb_kits/playbook/packs/site_styles/_samples.scss +71 -0
  21. data/app/pb_kits/playbook/packs/site_styles/_site-style.scss +6 -0
  22. data/app/pb_kits/playbook/packs/site_styles/docs/_flex_examples.scss +11 -3
  23. data/app/pb_kits/playbook/pb_body/_body.html.erb +1 -1
  24. data/app/pb_kits/playbook/pb_body/_body.jsx +10 -1
  25. data/app/pb_kits/playbook/pb_body/body.rb +17 -1
  26. data/app/pb_kits/playbook/pb_editor/_editor.html.erb +6 -0
  27. data/app/pb_kits/playbook/pb_hashtag/_hashtag.jsx +2 -1
  28. data/app/pb_kits/playbook/pb_hashtag/docs/_hashtag_dark.html.erb +4 -0
  29. data/app/pb_kits/playbook/pb_hashtag/docs/_hashtag_dark.jsx +7 -0
  30. data/app/pb_kits/playbook/pb_hashtag/docs/_hashtag_default.html.erb +4 -0
  31. data/app/pb_kits/playbook/pb_hashtag/docs/_hashtag_default.jsx +6 -0
  32. data/app/pb_kits/playbook/pb_hashtag/hashtag.rb +3 -1
  33. data/app/pb_kits/playbook/pb_highlight/_highlight.html.erb +6 -0
  34. data/app/pb_kits/playbook/pb_highlight/_highlight.jsx +38 -0
  35. data/app/pb_kits/playbook/pb_highlight/_highlight.scss +6 -0
  36. data/app/pb_kits/playbook/pb_highlight/docs/_highlight_default.html.erb +20 -0
  37. data/app/pb_kits/playbook/pb_highlight/docs/_highlight_default.jsx +26 -0
  38. data/app/pb_kits/playbook/pb_highlight/docs/example.yml +9 -0
  39. data/app/pb_kits/playbook/pb_highlight/docs/index.js +1 -0
  40. data/app/pb_kits/playbook/pb_highlight/highlight.rb +17 -0
  41. data/app/pb_kits/playbook/pb_popover/_popover.html.erb +1 -1
  42. data/app/pb_kits/playbook/pb_popover/_popover.js +13 -22
  43. data/app/pb_kits/playbook/pb_popover/_popover.jsx +121 -0
  44. data/app/pb_kits/playbook/pb_popover/_popover.scss +4 -0
  45. data/app/pb_kits/playbook/pb_popover/docs/_popover_default.jsx +29 -0
  46. data/app/pb_kits/playbook/pb_popover/docs/_popover_list.jsx +46 -0
  47. data/app/pb_kits/playbook/pb_popover/docs/_popover_portal.jsx +36 -0
  48. data/app/pb_kits/playbook/pb_popover/docs/_popover_with_button.jsx +35 -0
  49. data/app/pb_kits/playbook/pb_popover/docs/example.yml +4 -0
  50. data/app/pb_kits/playbook/pb_popover/docs/index.js +4 -0
  51. data/app/pb_kits/playbook/pb_popover/popover.rb +1 -1
  52. data/app/pb_kits/playbook/pb_select/_select.jsx +51 -51
  53. data/app/pb_kits/playbook/pb_select/docs/_select_blank.jsx +8 -14
  54. data/app/pb_kits/playbook/pb_select/docs/_select_dark.jsx +17 -15
  55. data/app/pb_kits/playbook/pb_select/docs/_select_dark_error.jsx +17 -15
  56. data/app/pb_kits/playbook/pb_select/docs/_select_default.jsx +16 -15
  57. data/app/pb_kits/playbook/pb_select/docs/_select_disabled.jsx +8 -14
  58. data/app/pb_kits/playbook/pb_select/docs/_select_disabled_options.jsx +31 -29
  59. data/app/pb_kits/playbook/pb_select/docs/_select_error.jsx +17 -15
  60. data/app/pb_kits/playbook/pb_select/docs/_select_required.jsx +7 -11
  61. data/app/pb_kits/playbook/pb_select/docs/_select_value_text_same.jsx +8 -14
  62. data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.jsx +2 -2
  63. data/app/pb_kits/playbook/pb_textarea/_textarea.jsx +2 -2
  64. data/app/pb_kits/playbook/pb_toggle/_toggle.jsx +3 -3
  65. data/app/pb_kits/playbook/types.js +1 -1
  66. data/app/pb_kits/playbook/vendor.js +2 -2
  67. data/app/views/layouts/playbook/samples.html.erb +37 -0
  68. data/app/views/playbook/pages/kit_show.html.slim +1 -1
  69. data/app/views/playbook/pages/principles.html.slim +1 -1
  70. data/app/views/playbook/samples/dashboards/dashboards.html.erb +82 -0
  71. data/app/views/playbook/samples/dashboards/dashboards.jsx +35 -0
  72. data/app/views/playbook/samples/sample_show.html.erb +25 -0
  73. data/lib/playbook/version.rb +1 -1
  74. metadata +32 -5
  75. data/app/pb_kits/playbook/config/_kit_example.html.slim +0 -5
@@ -2,26 +2,20 @@ import React from 'react'
2
2
  import { Select } from '../../'
3
3
 
4
4
  const SelectDisabled = () => {
5
+ const options = [
6
+ { value: 'Apple Pie' },
7
+ { value: 'Cookies' },
8
+ { value: 'Ice Cream' },
9
+ { value: 'Brownies' },
10
+ ]
11
+
5
12
  return (
6
13
  <div>
7
14
  <Select
8
15
  disabled
9
16
  label="Favorite Dessert"
10
17
  name="dessert"
11
- options={[
12
- {
13
- value: 'Apple Pie',
14
- },
15
- {
16
- value: 'Cookies',
17
- },
18
- {
19
- value: 'Ice Cream',
20
- },
21
- {
22
- value: 'Brownies',
23
- },
24
- ]}
18
+ options={options}
25
19
  />
26
20
  </div>
27
21
  )
@@ -2,40 +2,42 @@ import React from 'react'
2
2
  import { Select } from '../../'
3
3
 
4
4
  const SelectDisabledOptions = () => {
5
+ const options = [
6
+ {
7
+ value: '1',
8
+ disabled: true,
9
+ text: 'Espresso',
10
+ },
11
+ {
12
+ value: '2',
13
+ text: 'Americano',
14
+ },
15
+ {
16
+ value: '3',
17
+ disabled: true,
18
+ text: 'Cappuccino',
19
+ },
20
+ {
21
+ value: '4',
22
+ text: 'Mocha',
23
+ },
24
+ {
25
+ value: '5',
26
+ text: 'Flat White',
27
+ },
28
+ {
29
+ value: '6',
30
+ text: 'Latte',
31
+ },
32
+ ]
33
+
5
34
  return (
6
35
  <div>
7
36
  <Select
8
37
  label="Favorite Coffee"
9
38
  name="coffee"
10
- options={[
11
- {
12
- value: '1',
13
- disabled: true,
14
- valueText: 'Espresso',
15
- },
16
- {
17
- value: '2',
18
- selected: true,
19
- valueText: 'Americano',
20
- },
21
- {
22
- value: '3',
23
- disabled: true,
24
- valueText: 'Cappuccino',
25
- },
26
- {
27
- value: '4',
28
- valueText: 'Mocha',
29
- },
30
- {
31
- value: '5',
32
- valueText: 'Flat White',
33
- },
34
- {
35
- value: '6',
36
- valueText: 'Latte',
37
- },
38
- ]}
39
+ options={options}
40
+ value="2"
39
41
  />
40
42
  </div>
41
43
  )
@@ -2,27 +2,29 @@ import React from 'react'
2
2
  import { Body, Select } from '../..'
3
3
 
4
4
  const SelectError = () => {
5
+ const options = [
6
+ {
7
+ value: '1',
8
+ text: 'Burgers',
9
+ },
10
+ {
11
+ value: '2',
12
+ text: 'Pizza',
13
+ },
14
+ {
15
+ value: '3',
16
+ text: 'Tacos',
17
+ },
18
+ ]
19
+
5
20
  return (
6
21
  <div>
7
22
  <Select
8
23
  error="Please make a valid selection"
9
24
  label="Favorite Food"
10
25
  name="food"
11
- options={[
12
- {
13
- value: '1',
14
- valueText: 'Burgers',
15
- },
16
- {
17
- value: '2',
18
- selected: true,
19
- valueText: 'Pizza',
20
- },
21
- {
22
- value: '3',
23
- valueText: 'Tacos',
24
- },
25
- ]}
26
+ options={options}
27
+ value="2"
26
28
  />
27
29
  <Body
28
30
  error="Please make a valid selection"
@@ -2,23 +2,19 @@ import React from 'react'
2
2
  import { Select } from '../../'
3
3
 
4
4
  const SelectRequired = () => {
5
+ const options = [
6
+ { value: 'Left' },
7
+ { value: 'Right' },
8
+ { value: 'I go without laces' },
9
+ ]
10
+
5
11
  return (
6
12
  <div>
7
13
  <Select
8
14
  blankSelection="Select One..."
9
15
  label="Which shoe do you tie first?"
10
16
  name="shoe"
11
- options={[
12
- {
13
- value: 'Left',
14
- },
15
- {
16
- value: 'Right',
17
- },
18
- {
19
- value: 'I go without laces',
20
- },
21
- ]}
17
+ options={options}
22
18
  required
23
19
  />
24
20
  </div>
@@ -2,25 +2,19 @@ import React from 'react'
2
2
  import { Select } from '../../'
3
3
 
4
4
  const SelectValueTextSame = () => {
5
+ const options = [
6
+ { value: 'Football' },
7
+ { value: 'Baseball' },
8
+ { value: 'Basketball' },
9
+ { value: 'Hockey' },
10
+ ]
11
+
5
12
  return (
6
13
  <div>
7
14
  <Select
8
15
  label="Favorite Sport"
9
16
  name="sports"
10
- options={[
11
- {
12
- value: 'Football',
13
- },
14
- {
15
- value: 'Baseball',
16
- },
17
- {
18
- value: 'Basketball',
19
- },
20
- {
21
- value: 'Hockey',
22
- },
23
- ]}
17
+ options={options}
24
18
  />
25
19
  </div>
26
20
  )
@@ -4,7 +4,7 @@ import React from 'react'
4
4
  import classnames from 'classnames'
5
5
  import { Icon } from '../'
6
6
 
7
- import { type InputCallback } from '../types'
7
+ import type { InputCallback } from '../types'
8
8
 
9
9
  import {
10
10
  buildAriaProps,
@@ -26,7 +26,7 @@ type Props = {
26
26
  inputId?: String,
27
27
  multi?: Boolean,
28
28
  name?: String,
29
- onChange: InputCallback,
29
+ onChange: InputCallback<HTMLInputElement>,
30
30
  text?: String,
31
31
  value?: String
32
32
  }
@@ -3,7 +3,7 @@
3
3
  import React from 'react'
4
4
  import classnames from 'classnames'
5
5
  import { Body, Caption } from '../'
6
- import { type InputCallback } from '../types.js'
6
+ import type { InputCallback } from '../types.js'
7
7
 
8
8
  type TextareaProps = {
9
9
  className?: String,
@@ -19,7 +19,7 @@ type TextareaProps = {
19
19
  name?: String,
20
20
  rows?: Number,
21
21
  dark?: Boolean,
22
- onChange?: InputCallback,
22
+ onChange?: InputCallback<HTMLTextAreaElement>,
23
23
  }
24
24
 
25
25
  const Textarea = ({
@@ -17,9 +17,9 @@ type Props = {
17
17
  aria: object,
18
18
  checked: boolean,
19
19
  data: object,
20
- onChange: InputCallback,
21
- onCheck: InputCallback,
22
- onUncheck: InputCallback,
20
+ onChange: InputCallback<HTMLInputElement>,
21
+ onCheck: InputCallback<HTMLInputElement>,
22
+ onUncheck: InputCallback<HTMLInputElement>,
23
23
  size: 'sm' | 'md',
24
24
  }
25
25
 
@@ -1,4 +1,4 @@
1
1
  // @flow
2
2
 
3
3
  export type Callback<T, K> = T => K
4
- export type InputCallback = Callback<SyntheticEvent<>, void>
4
+ export type InputCallback<T> = Callback<SyntheticEvent<T>, void>
@@ -9,5 +9,5 @@ import './pb_form/pb_form_validation'
9
9
  import 'lazysizes'
10
10
 
11
11
  // Popovers
12
- import Popover from './pb_popover/_popover'
13
- window.Popover = Popover
12
+ import PbPopover from './pb_popover/_popover.js'
13
+ window.PbPopover = PbPopover
@@ -0,0 +1,37 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Full Screen Examples</title>
5
+ <%= csrf_meta_tags %>
6
+ <%= csp_meta_tag %>
7
+ <%= stylesheet_pack_tag 'main' %>
8
+ </head>
9
+ <body>
10
+ <div class="sample-layout">
11
+ <%= yield %>
12
+
13
+ <% if @type == "rails" %>
14
+ <% contents = File.read("#{Playbook::Engine.root}/app/views/playbook/samples/dashboards/dashboards.html.erb") %>
15
+ <%= render template: "playbook/samples/dashboards/dashboards.html.erb", locals: { type: @type } %>
16
+ <% elsif @type == "react" %>
17
+ <% contents = File.read("#{Playbook::Engine.root}/app/views/playbook/samples/dashboards/dashboards.jsx") %>
18
+ <% end %>
19
+ <%= react_component("Dashboards") %>
20
+ <div class="pb--kit-show">
21
+ <div class="pb--doc light_ui">
22
+ <div class="pb--codeCopy close" >
23
+ <a class="pb--close-toggle copy-clipboard" href="#">Copy to Clipboard</a>
24
+ <div class="hiddenCodeforCopy"><%= contents %></div>
25
+ <%= raw rouge(contents, "erb") %>
26
+ </div>
27
+ </div>
28
+ </div>
29
+ </div>
30
+ </body>
31
+
32
+ <%= javascript_include_tag "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js" %>
33
+ <%= javascript_pack_tag 'application' %>
34
+ <%= javascript_pack_tag 'examples' %>
35
+ <%= javascript_pack_tag 'samples' %>
36
+ <%= yield :pb_js %>
37
+ </html>
@@ -1,4 +1,4 @@
1
- .pb--kit-show
1
+ div class="pb--kit-show #{@kit}-kit"
2
2
  = pb_rails("title", props: { text: pb_kit_title(@kit), tag: "h1", size: 1 })
3
3
 
4
4
  .pb--kit-type-nav
@@ -1,3 +1,3 @@
1
1
  body
2
2
  div class="markdown"
3
- = render 'playbook/pages/principals/getting_started'
3
+ = render 'playbook/pages/principles/getting_started'
@@ -0,0 +1,82 @@
1
+ <%= pb_rails("layout", props: {full: true, position: "left", size: "xl", collapse: "md"}) do %>
2
+ <%= pb_rails("layout/sidebar") do %>
3
+ <br>
4
+ <%= pb_rails("user", props: {
5
+ name: "Jon Zazula",
6
+ title: "User Experience Designer",
7
+ orientation: "horizontal",
8
+ align: "left",
9
+ size: "md",
10
+ avatar_url: "https://s3-hq-f5.powerhrg.com/nitro-production/avatars/55553/badge/business-technology-jonathan-zazula.jpg?AWSAccessKeyId=IWSW00NEQHMEYQTLZ7E9&Signature=S0EN3l5sfIr7yk442Q2MeledXGc%3D&Expires=3161514974"
11
+ }) %>
12
+
13
+ <br>
14
+ <hr style="height:1px;border:none;color:#e4e8f0;background-color:#e4e8f0;margin: 15px;" />
15
+
16
+ <%= pb_rails("nav", props: {variant: "subtle"}) do %>
17
+ <%= pb_rails("nav/item", props: { icon_left: "city", text: "City", link: "#" }) %>
18
+ <%= pb_rails("nav/item", props: { icon_left: "user-friends", text: "People", link: "#", icon_right: "angle-down" }) %>
19
+ <%= pb_rails("nav/item", props: { icon_left: "user-tie", text: "Growth Dashboard", link: "#", active: true }) %>
20
+ <%= pb_rails("nav/item", props: { icon_left: "clock", text: "History", link: "#" }) %>
21
+ <%= pb_rails("nav/item", props: { icon_left: "clipboard", text: "Memos", link: "#", icon_right: "angle-down" }) %>
22
+ <%= pb_rails("nav/item", props: { icon_left: "phone", text: "Contacts", link: "#" }) %>
23
+ <% end %>
24
+ <% end %>
25
+
26
+ <%= pb_rails("layout/body") do %>
27
+
28
+ <% data = [{
29
+ name: 'Installation',
30
+ data: [154175]
31
+ }, {
32
+ name: 'Manufacturing',
33
+ data: [40434]
34
+ }, {
35
+ name: 'Sales & Distribution',
36
+ data: [39387]
37
+ }, {
38
+ name: 'Project Development',
39
+ data: [34227]
40
+ }, {
41
+ name: 'Other',
42
+ data: [18111]
43
+ }] %>
44
+
45
+ <%= pb_rails("bar_graph", props: {
46
+ axis_title: 'Number of Employees',
47
+ chart_data: data,
48
+ id: "bar-test",
49
+ point_start: 2012,
50
+ subtitle: 'Source: thesolarfoundation.com',
51
+ title: 'Solar Employment Growth by Sector, 2010-2016'
52
+ }) %>
53
+ <% data2 = [{
54
+ name: 'Installation',
55
+ data: [43934, 52503, 57177, 69658, 97031, 119931, 137133, 154175]
56
+ }, {
57
+ name: 'Manufacturing',
58
+ data: [24916, 24064, 29742, 29851, 32490, 30282, 38121, 40434]
59
+ }, {
60
+ name: 'Sales & Distribution',
61
+ data: [11744, 17722, 16005, 19771, 20185, 24377, 32147, 39387]
62
+ }, {
63
+ name: 'Project Development',
64
+ data: [nil, nil, 7988, 12169, 15112, 22452, 34400, 34227]
65
+ }, {
66
+ name: 'Other',
67
+ data: [12908, 5948, 8105, 11248, 8989, 11816, 18274, 18111]
68
+ }] %>
69
+
70
+ <%= pb_rails("line_graph", props: { id: "line-test", gradient: false, chart_data: data2, point_start: 1, title: 'Solar Employment Growth by Sector, 2010-2016', subtitle: 'Source: thesolarfoundation.com', axis_title: 'Number of Employees' } ) %>
71
+
72
+
73
+
74
+
75
+ <% end %>
76
+ <% end %>
77
+
78
+
79
+
80
+
81
+
82
+
@@ -0,0 +1,35 @@
1
+ import React from 'react'
2
+ import { BarGraph } from '../../../../pb_kits/playbook'
3
+
4
+ const chartData = [{
5
+ name: 'Installation',
6
+ data: [154175],
7
+ }, {
8
+ name: 'Manufacturing',
9
+ data: [40434],
10
+ }, {
11
+ name: 'Sales & Distribution',
12
+ data: [39387],
13
+ }, {
14
+ name: 'Project Development',
15
+ data: [34227],
16
+ }, {
17
+ name: 'Other',
18
+ data: [18111],
19
+ }]
20
+
21
+ const Dashboards = () => (
22
+ <div>
23
+ <BarGraph
24
+ axisTitle="Number of Employees"
25
+ chartData={chartData}
26
+ id="bar-test"
27
+ pointStart={2012}
28
+ subTitle="Source: thesolarfoundation.com"
29
+ title="Solar Employment Growth by Sector, 2010-2016"
30
+ />
31
+ </div>
32
+ )
33
+
34
+ export default Dashboards
35
+