playbook_ui 7.4.1 → 7.6.1.pre.alpha1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/clark.jpg +0 -0
  3. data/app/assets/images/giant.jpg +0 -0
  4. data/app/assets/images/pb.logo.svg +28 -0
  5. data/app/assets/images/sample_screenshot.svg +7 -0
  6. data/app/controllers/playbook/application_controller.rb +0 -2
  7. data/app/pb_kits/playbook/_playbook.scss +2 -1
  8. data/app/pb_kits/playbook/data/menu.yml +2 -6
  9. data/app/pb_kits/playbook/index.js +3 -0
  10. data/app/pb_kits/playbook/pb_background/_background.html.erb +18 -12
  11. data/app/pb_kits/playbook/pb_background/_background.jsx +14 -10
  12. data/app/pb_kits/playbook/pb_background/docs/_background_dark.jsx +4 -6
  13. data/app/pb_kits/playbook/pb_background/docs/_background_gradient.jsx +4 -6
  14. data/app/pb_kits/playbook/pb_background/docs/_background_image.jsx +20 -22
  15. data/app/pb_kits/playbook/pb_background/docs/_background_light.jsx +4 -6
  16. data/app/pb_kits/playbook/pb_background/docs/_background_white.jsx +1 -1
  17. data/app/pb_kits/playbook/pb_checkbox/_checkbox.html.erb +1 -1
  18. data/app/pb_kits/playbook/pb_form_group/_form_group.html.erb +7 -0
  19. data/app/pb_kits/playbook/pb_form_group/_form_group.jsx +41 -0
  20. data/app/pb_kits/playbook/pb_form_group/_form_group.scss +115 -0
  21. data/app/pb_kits/playbook/pb_form_group/docs/_form_group_button.html.erb +12 -0
  22. data/app/pb_kits/playbook/pb_form_group/docs/_form_group_button.jsx +37 -0
  23. data/app/pb_kits/playbook/pb_form_group/docs/_form_group_date_picker.html.erb +6 -0
  24. data/app/pb_kits/playbook/pb_form_group/docs/_form_group_date_picker.jsx +19 -0
  25. data/app/pb_kits/playbook/pb_form_group/docs/_form_group_default.html.erb +7 -0
  26. data/app/pb_kits/playbook/pb_form_group/docs/_form_group_default.jsx +23 -0
  27. data/app/pb_kits/playbook/pb_form_group/docs/_form_group_select.html.erb +19 -0
  28. data/app/pb_kits/playbook/pb_form_group/docs/_form_group_select.jsx +33 -0
  29. data/app/pb_kits/playbook/pb_form_group/docs/_form_group_selectable_card.html.erb +21 -0
  30. data/app/pb_kits/playbook/pb_form_group/docs/_form_group_selectable_card.jsx +40 -0
  31. data/app/pb_kits/playbook/pb_form_group/docs/_form_group_selectable_card_icon.html.erb +19 -0
  32. data/app/pb_kits/playbook/pb_form_group/docs/_form_group_selectable_card_icon.jsx +33 -0
  33. data/app/pb_kits/playbook/pb_form_group/docs/_form_group_typeahead.html.erb +14 -0
  34. data/app/pb_kits/playbook/pb_form_group/docs/_form_group_typeahead.jsx +30 -0
  35. data/app/pb_kits/playbook/pb_form_group/docs/example.yml +20 -0
  36. data/app/pb_kits/playbook/pb_form_group/docs/index.js +7 -0
  37. data/app/pb_kits/playbook/pb_form_group/form_group.rb +15 -0
  38. data/app/pb_kits/playbook/pb_image/_image.html.erb +2 -1
  39. data/app/pb_kits/playbook/pb_image/_image.jsx +7 -1
  40. data/app/pb_kits/playbook/pb_image/_image.scss +41 -14
  41. data/app/pb_kits/playbook/pb_image/docs/_default_image.html.erb +12 -0
  42. data/app/pb_kits/playbook/pb_image/docs/_default_image.jsx +25 -3
  43. data/app/pb_kits/playbook/pb_image/docs/_rounded_image.html.erb +17 -0
  44. data/app/pb_kits/playbook/pb_image/docs/_rounded_image.jsx +36 -0
  45. data/app/pb_kits/playbook/pb_image/docs/example.yml +2 -0
  46. data/app/pb_kits/playbook/pb_image/docs/index.js +1 -0
  47. data/app/pb_kits/playbook/pb_image/image.rb +16 -1
  48. data/app/pb_kits/playbook/pb_list/_list.jsx +9 -2
  49. data/app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_image.html.erb +27 -0
  50. data/app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_image.jsx +61 -0
  51. data/app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_image.md +1 -0
  52. data/app/pb_kits/playbook/pb_selectable_card/docs/example.yml +2 -0
  53. data/app/pb_kits/playbook/pb_selectable_card/docs/index.js +1 -0
  54. data/app/pb_kits/playbook/pb_selectable_list/_item.jsx +90 -0
  55. data/app/pb_kits/playbook/pb_selectable_list/_selectable_list.html.erb +11 -0
  56. data/app/pb_kits/playbook/pb_selectable_list/_selectable_list.jsx +47 -0
  57. data/app/pb_kits/playbook/pb_selectable_list/_selectable_list.scss +17 -0
  58. data/app/pb_kits/playbook/pb_selectable_list/_selectable_list_item.html.erb +18 -0
  59. data/app/pb_kits/playbook/pb_selectable_list/docs/_selectable_list_checkbox.html.erb +27 -0
  60. data/app/pb_kits/playbook/pb_selectable_list/docs/_selectable_list_checkbox.jsx +29 -0
  61. data/app/pb_kits/playbook/pb_selectable_list/docs/_selectable_list_radio.html.erb +27 -0
  62. data/app/pb_kits/playbook/pb_selectable_list/docs/_selectable_list_radio.jsx +29 -0
  63. data/app/pb_kits/playbook/pb_selectable_list/docs/example.yml +12 -0
  64. data/app/pb_kits/playbook/pb_selectable_list/docs/index.js +2 -0
  65. data/app/pb_kits/playbook/pb_selectable_list/selectable_list.rb +24 -0
  66. data/app/pb_kits/playbook/pb_selectable_list/selectable_list_item.rb +28 -0
  67. data/app/pb_kits/playbook/pb_timestamp/_timestamp.html.erb +1 -13
  68. data/app/pb_kits/playbook/pb_timestamp/_timestamp.jsx +20 -96
  69. data/app/pb_kits/playbook/pb_timestamp/_timestamp.scss +1 -12
  70. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_default.html.erb +1 -21
  71. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_default.jsx +4 -31
  72. data/app/pb_kits/playbook/pb_timestamp/docs/example.yml +0 -14
  73. data/app/pb_kits/playbook/pb_timestamp/docs/index.js +0 -7
  74. data/app/pb_kits/playbook/pb_timestamp/timestamp.rb +1 -67
  75. data/lib/playbook/version.rb +1 -1
  76. metadata +46 -4
@@ -0,0 +1,12 @@
1
+ <div>
2
+ <%= pb_rails("form_group") do %>
3
+ <%= pb_rails("text_input", props: { label: "with label", placeholder: "Search" }) %>
4
+ <%= pb_rails("button", props: { text: "Submit", variant: "secondary" }) %>
5
+ <% end %>
6
+ <br/>
7
+ <br/>
8
+ <%= pb_rails("form_group") do %>
9
+ <%= pb_rails("text_input", props: { placeholder: "Search" }) %>
10
+ <%= pb_rails("button", props: { text: "Submit", variant: "secondary" }) %>
11
+ <% end %>
12
+ </div>
@@ -0,0 +1,37 @@
1
+ import React from 'react'
2
+ import { Button, FormGroup, TextInput } from '../../'
3
+
4
+ const FormGroupButton = (props) => (
5
+ <div>
6
+ <div>
7
+ <FormGroup>
8
+ <TextInput
9
+ label="With Label"
10
+ placeholder="Search"
11
+ />
12
+ <Button
13
+ onClick={() => alert('Button Clicked!')}
14
+ text="Submit"
15
+ variant="secondary"
16
+ {...props}
17
+ />
18
+ </FormGroup>
19
+ </div>
20
+ <br />
21
+ <div>
22
+ <FormGroup>
23
+ <TextInput
24
+ placeholder="Search"
25
+ />
26
+ <Button
27
+ onClick={() => alert('Button Clicked!')}
28
+ text="Submit"
29
+ variant="secondary"
30
+ {...props}
31
+ />
32
+ </FormGroup>
33
+ </div>
34
+ </div>
35
+ )
36
+
37
+ export default FormGroupButton
@@ -0,0 +1,6 @@
1
+ <div>
2
+ <%= pb_rails("form_group") do %>
3
+ <%= pb_rails("text_input", props: { label: "Event", placeholder: "Event Name" }) %>
4
+ <%= pb_rails("date_picker", props: { label: "Event Date", picker_id: "date-picker-default" }) %>
5
+ <% end %>
6
+ </div>
@@ -0,0 +1,19 @@
1
+ import React from 'react'
2
+ import { DatePicker, FormGroup, TextInput } from '../../'
3
+
4
+ const FormGroupDatePicker = () => (
5
+ <div>
6
+ <FormGroup>
7
+ <TextInput
8
+ label="Event"
9
+ placeholder="Event Name"
10
+ />
11
+ <DatePicker
12
+ label="event date"
13
+ pickerId="date-picker-default"
14
+ />
15
+ </FormGroup>
16
+ </div>
17
+ )
18
+
19
+ export default FormGroupDatePicker
@@ -0,0 +1,7 @@
1
+ <div>
2
+ <%= pb_rails("form_group") do %>
3
+ <%= pb_rails("text_input", props: { label: "First Name", placeholder: "Enter First Name" }) %>
4
+ <%= pb_rails("text_input", props: { label: "Middle Intial", placeholder: "Enter Middle Initial" }) %>
5
+ <%= pb_rails("text_input", props: { label: "Last Name", placeholder: "Enter Last Name" }) %>
6
+ <% end %>
7
+ </div>
@@ -0,0 +1,23 @@
1
+ import React from 'react'
2
+ import { FormGroup, TextInput } from '../../'
3
+
4
+ const FormGroupDefault = () => (
5
+ <div>
6
+ <FormGroup>
7
+ <TextInput
8
+ label="First Name"
9
+ placeholder="Enter First Name"
10
+ />
11
+ <TextInput
12
+ label="Middle Intial"
13
+ placeholder="Enter Middle Initial"
14
+ />
15
+ <TextInput
16
+ label="Last Name"
17
+ placeholder="Enter Last Name"
18
+ />
19
+ </FormGroup>
20
+ </div>
21
+ )
22
+
23
+ export default FormGroupDefault
@@ -0,0 +1,19 @@
1
+ <div>
2
+ <%= pb_rails("form_group") do %>
3
+ <%= pb_rails("text_input", props: { label: "Artist", placeholder: "Enter Artist Name" }) %>
4
+ <%= pb_rails("select", props: {
5
+ blank_selection: "Select Genre",
6
+ options: [
7
+ { value: "Country" },
8
+ { value: "Pop" },
9
+ { value: "Rock" },
10
+ { value: "Hip-Hop/Rap" },
11
+ { value: "Classical" },
12
+ { value: "Gospel" },
13
+ { value: "Alternative" },
14
+ { value: "Indie" },
15
+ { value: "Other" },
16
+ ]
17
+ }) %>
18
+ <% end %>
19
+ </div>
@@ -0,0 +1,33 @@
1
+ import React from 'react'
2
+ import { FormGroup, Select, TextInput } from '../../'
3
+
4
+ const FormGroupSelect = () => {
5
+ const options = [
6
+ { value: 'Country' },
7
+ { value: 'Pop' },
8
+ { value: 'Rock' },
9
+ { value: 'Hip-Hop/Rap' },
10
+ { value: 'Classical' },
11
+ { value: 'Gospel' },
12
+ { value: 'Alternative' },
13
+ { value: 'Indie' },
14
+ { value: 'Other' },
15
+ ]
16
+
17
+ return (
18
+ <div>
19
+ <FormGroup>
20
+ <TextInput
21
+ label="Artist"
22
+ placeholder="Enter Artist Name"
23
+ />
24
+ <Select
25
+ blankSelection="Select Genre"
26
+ options={options}
27
+ />
28
+ </FormGroup>
29
+ </div>
30
+ )
31
+ }
32
+
33
+ export default FormGroupSelect
@@ -0,0 +1,21 @@
1
+ <div>
2
+ <%= pb_rails("form_group") do %>
3
+ <%= pb_rails("selectable_card", props: {
4
+ input_id: "cat1",
5
+ name: "animal",
6
+ value: "cat",
7
+ multi: false
8
+ }) do %>
9
+ Cat
10
+ <% end %>
11
+
12
+ <%= pb_rails("selectable_card", props: {
13
+ input_id: "dog1",
14
+ name: "animal",
15
+ value: "dog",
16
+ multi: false
17
+ }) do %>
18
+ Dog
19
+ <% end %>
20
+ <% end %>
21
+ </div>
@@ -0,0 +1,40 @@
1
+ import React, { useState } from 'react'
2
+ import { FormGroup, SelectableCard } from '../../'
3
+
4
+ const FormGroupSelectableCard = () => {
5
+ const [value, setValue] = useState('')
6
+
7
+ const handleSelect = (event) => {
8
+ setValue(event.target.value)
9
+ }
10
+
11
+ return (
12
+ <div>
13
+ <FormGroup>
14
+ <SelectableCard
15
+ checked={value === 'cat'}
16
+ inputId="cat1"
17
+ multi={false}
18
+ name="animal"
19
+ onChange={handleSelect}
20
+ value="cat"
21
+ >
22
+ {'Cat'}
23
+ </SelectableCard>
24
+
25
+ <SelectableCard
26
+ checked={value === 'dog'}
27
+ inputId="dog1"
28
+ multi={false}
29
+ name="animal"
30
+ onChange={handleSelect}
31
+ value="dog"
32
+ >
33
+ {'Dog'}
34
+ </SelectableCard>
35
+ </FormGroup>
36
+ </div>
37
+ )
38
+ }
39
+
40
+ export default FormGroupSelectableCard
@@ -0,0 +1,19 @@
1
+ <div>
2
+ <%= pb_rails("form_group") do %>
3
+ <%= pb_rails("selectable_card_icon", props: {
4
+ icon: "basketball-ball",
5
+ title_text: "Basketball",
6
+ input_id: 7,
7
+ multi: false,
8
+ name: "select",
9
+ }) %>
10
+
11
+ <%= pb_rails("selectable_card_icon", props: {
12
+ icon: "football-ball",
13
+ title_text: "Football",
14
+ input_id: 8,
15
+ multi: false,
16
+ name: "select",
17
+ }) %>
18
+ <% end %>
19
+ </div>
@@ -0,0 +1,33 @@
1
+ import React, { useState } from 'react'
2
+ import { FormGroup, SelectableCardIcon } from '../../'
3
+
4
+ const FormGroupSelectableCardIcon = () => {
5
+ const [selectedFormat, toggleFormat] = useState(null)
6
+
7
+ return (
8
+ <div>
9
+ <FormGroup>
10
+ <SelectableCardIcon
11
+ checked={selectedFormat === 'basketball'}
12
+ icon="basketball-ball"
13
+ inputId={7}
14
+ name="select"
15
+ onChange={() => toggleFormat('basketball')}
16
+ titleText="Basketball"
17
+ value="basketball"
18
+ />
19
+ <SelectableCardIcon
20
+ checked={selectedFormat === 'football'}
21
+ icon="football-ball"
22
+ inputId={8}
23
+ name="select"
24
+ onChange={() => toggleFormat('football')}
25
+ titleText="Football"
26
+ value="football"
27
+ />
28
+ </FormGroup>
29
+ </div>
30
+ )
31
+ }
32
+
33
+ export default FormGroupSelectableCardIcon
@@ -0,0 +1,14 @@
1
+ <div>
2
+ <%= pb_rails("form_group") do %>
3
+ <%= pb_rails("typeahead", props: {
4
+ label: "Products",
5
+ options: [
6
+ { label: 'Windows', value: 'windows' },
7
+ { label: 'Roof', value: 'roof' },
8
+ { label: 'Siding', value: 'siding' },
9
+ { label: 'Doors', value: 'doors' },
10
+ ]
11
+ }) %>
12
+ <%= pb_rails("button", props: { text: "Add", variant: "secondary" }) %>
13
+ <% end %>
14
+ </div>
@@ -0,0 +1,30 @@
1
+ import React from 'react'
2
+ import { Button, FormGroup, Typeahead } from '../../'
3
+
4
+ const FormGroupTypeahead = (props) => {
5
+ const options = [
6
+ { label: 'Windows', value: 'windows' },
7
+ { label: 'Roof', value: 'roof' },
8
+ { label: 'Siding', value: 'siding' },
9
+ { label: 'Doors', value: 'doors' },
10
+ ]
11
+
12
+ return (
13
+ <div>
14
+ <FormGroup>
15
+ <Typeahead
16
+ label="Products"
17
+ options={options}
18
+ />
19
+ <Button
20
+ onClick={() => alert('Button Clicked!')}
21
+ text="Add"
22
+ variant="secondary"
23
+ {...props}
24
+ />
25
+ </FormGroup>
26
+ </div>
27
+ )
28
+ }
29
+
30
+ export default FormGroupTypeahead
@@ -0,0 +1,20 @@
1
+ examples:
2
+
3
+ rails:
4
+ - form_group_default: Default
5
+ - form_group_button: Button
6
+ - form_group_date_picker: Date Picker
7
+ - form_group_typeahead: Typeahead
8
+ - form_group_select: Select
9
+ - form_group_selectable_card: Selectable Card
10
+ - form_group_selectable_card_icon: Selectable Card Icon
11
+
12
+
13
+ react:
14
+ - form_group_default: Default
15
+ - form_group_button: Button
16
+ - form_group_date_picker: Date Picker
17
+ - form_group_typeahead: Typeahead
18
+ - form_group_select: Select
19
+ - form_group_selectable_card: Selectable Card
20
+ - form_group_selectable_card_icon: Selectable Card Icon
@@ -0,0 +1,7 @@
1
+ export { default as FormGroupDefault } from './_form_group_default.jsx'
2
+ export { default as FormGroupButton } from './_form_group_button.jsx'
3
+ export { default as FormGroupDatePicker } from './_form_group_date_picker.jsx'
4
+ export { default as FormGroupTypeahead } from './_form_group_typeahead.jsx'
5
+ export { default as FormGroupSelect } from './_form_group_select.jsx'
6
+ export { default as FormGroupSelectableCard } from './_form_group_selectable_card.jsx'
7
+ export { default as FormGroupSelectableCardIcon } from './_form_group_selectable_card_icon.jsx'
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module PbFormGroup
5
+ class FormGroup
6
+ include Playbook::Props
7
+
8
+ partial "pb_form_group/form_group"
9
+
10
+ def classname
11
+ generate_classname("pb_form_group_kit")
12
+ end
13
+ end
14
+ end
15
+ end
@@ -4,4 +4,5 @@
4
4
  class: object.classname,
5
5
  aria: object.aria,
6
6
  src: object.url,
7
- alt: object.alt) %>
7
+ alt: object.alt)
8
+ %>
@@ -11,6 +11,8 @@ type ImageProps = {
11
11
  className?: string,
12
12
  data?: object,
13
13
  id?: string,
14
+ size: "xs" | "sm" | "md" | "lg" | "xl",
15
+ rounded?: boolean,
14
16
  url: string,
15
17
  }
16
18
 
@@ -21,12 +23,15 @@ const Image = (props: ImageProps) => {
21
23
  className,
22
24
  data = {},
23
25
  id,
26
+ rounded = false,
27
+ size = '',
24
28
  url = '',
25
29
  } = props
26
30
 
27
31
  const ariaProps = buildAriaProps(aria)
28
32
  const classes = classnames(
29
- buildCss('pb_image lazyload blur_up'),
33
+ buildCss('pb_image_kit lazyload blur_up', size),
34
+ { rounded },
30
35
  globalProps(props),
31
36
  className
32
37
  )
@@ -41,6 +46,7 @@ const Image = (props: ImageProps) => {
41
46
  className={classes}
42
47
  data-src={url}
43
48
  id={id}
49
+ rounded={rounded}
44
50
  src={url}
45
51
  />
46
52
  </div>
@@ -1,15 +1,42 @@
1
- .pb_image_kit {
2
- max-width: 100%;
3
- max-height: 100%;
4
-
5
- .blur_up {
6
- -webkit-filter: blur(6px);
7
- filter: blur(6px);
8
- transition: filter 550ms, -webkit-filter 550ms;
9
- }
10
-
11
- .blur_up.lazyloaded {
12
- -webkit-filter: blur(0);
13
- filter: blur(0);
14
- }
1
+ @import "../tokens/border_radius";
2
+ @import "../tokens/colors";
3
+ @import "../pb_image/image";
4
+
5
+ $image-sizes: (
6
+ "xs": 60px,
7
+ "sm": 80px,
8
+ "md": 100px,
9
+ "lg": 120px,
10
+ "xl": 140px,
11
+ );
12
+
13
+ [class^=pb_image_kit] {
14
+ position: relative;
15
+
16
+ @each $name, $size in $image-sizes {
17
+ &[class*=_#{$name}] {
18
+ width: $size;
19
+ height: $size;
20
+ object-fit: cover;
21
+ position: relative;
22
+ flex-shrink: 0;
23
+ flex-grow: 0;
24
+ flex-basis: $size;
25
+ }
26
+
27
+ &[class*= rounded] {
28
+ border-radius: $border-rad-heaviest;
29
+ }
30
+
31
+ .blur_up {
32
+ -webkit-filter: blur(6px);
33
+ filter: blur(6px);
34
+ transition: filter 550ms, -webkit-filter 550ms;
35
+ }
36
+
37
+ .blur_up.lazyloaded {
38
+ -webkit-filter: blur(0);
39
+ filter: blur(0);
40
+ }
41
+ }
15
42
  }