playbook_ui 4.18.1.pre.alpha1 → 5.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/app/helpers/playbook/pb_sample_helper.rb +1 -1
  4. data/app/pb_kits/playbook/_playbook.scss +1 -1
  5. data/app/pb_kits/playbook/data/menu.yml +3 -1
  6. data/app/pb_kits/playbook/packs/examples.js +2 -0
  7. data/app/pb_kits/playbook/packs/samples.js +2 -0
  8. data/app/pb_kits/playbook/pb_caption/_caption.jsx +21 -4
  9. data/app/pb_kits/playbook/pb_card/_card.scss +1 -72
  10. data/app/pb_kits/playbook/pb_card/_card_mixin.scss +72 -0
  11. data/app/pb_kits/playbook/pb_filter/Filter/FiltersPopover.jsx +0 -1
  12. data/app/pb_kits/playbook/pb_filter/Filter/SortMenu.jsx +1 -1
  13. data/app/pb_kits/playbook/pb_filter/templates/_default.html.erb +1 -1
  14. data/app/pb_kits/playbook/pb_installer/_installer.html.erb +16 -0
  15. data/app/pb_kits/playbook/pb_installer/_installer.jsx +54 -0
  16. data/app/pb_kits/playbook/pb_installer/_installer.scss +7 -0
  17. data/app/pb_kits/playbook/pb_installer/docs/_installer_default.html.erb +8 -0
  18. data/app/pb_kits/playbook/pb_installer/docs/_installer_default.jsx +16 -0
  19. data/app/pb_kits/playbook/pb_installer/docs/example.yml +9 -0
  20. data/app/pb_kits/playbook/pb_installer/docs/index.js +1 -0
  21. data/app/pb_kits/playbook/pb_installer/installer.rb +18 -0
  22. data/app/pb_kits/playbook/pb_layout/_body.html.erb +1 -1
  23. data/app/pb_kits/playbook/pb_layout/_column.html.erb +7 -0
  24. data/app/pb_kits/playbook/pb_layout/_layout.jsx +31 -13
  25. data/app/pb_kits/playbook/pb_layout/_layout.scss +54 -0
  26. data/app/pb_kits/playbook/pb_layout/body.rb +4 -0
  27. data/app/pb_kits/playbook/pb_layout/docs/_layout_kanban.html.erb +140 -0
  28. data/app/pb_kits/playbook/pb_layout/docs/_layout_kanban.jsx +1234 -0
  29. data/app/pb_kits/playbook/pb_layout/docs/_layout_kanban_responsive.html.erb +57 -0
  30. data/app/pb_kits/playbook/pb_layout/docs/_layout_kanban_responsive.jsx +46 -0
  31. data/app/pb_kits/playbook/pb_layout/docs/example.yml +3 -0
  32. data/app/pb_kits/playbook/pb_layout/docs/index.js +2 -0
  33. data/app/pb_kits/playbook/pb_layout/layout.rb +12 -4
  34. data/app/pb_kits/playbook/pb_list/_item.html.erb +3 -2
  35. data/app/pb_kits/playbook/pb_list/_list.html.erb +3 -3
  36. data/app/pb_kits/playbook/pb_list/_list.jsx +55 -10
  37. data/app/pb_kits/playbook/pb_list/_list_item.jsx +41 -18
  38. data/app/pb_kits/playbook/pb_list/docs/_list_borderless.jsx +21 -0
  39. data/app/pb_kits/playbook/pb_list/docs/_list_dark.jsx +0 -5
  40. data/app/pb_kits/playbook/pb_list/docs/_list_dark_borderless.jsx +22 -0
  41. data/app/pb_kits/playbook/pb_list/docs/_list_dark_lg.jsx +22 -0
  42. data/app/pb_kits/playbook/pb_list/docs/_list_dark_ordered.jsx +22 -0
  43. data/app/pb_kits/playbook/pb_list/docs/_list_dark_xpadding.jsx +22 -0
  44. data/app/pb_kits/playbook/pb_list/docs/_list_layout_left.jsx +75 -0
  45. data/app/pb_kits/playbook/pb_list/docs/_list_layout_right.jsx +75 -0
  46. data/app/pb_kits/playbook/pb_list/docs/_list_lg.jsx +21 -0
  47. data/app/pb_kits/playbook/pb_list/docs/_list_ordered.jsx +21 -0
  48. data/app/pb_kits/playbook/pb_list/docs/_list_xpadding.jsx +21 -0
  49. data/app/pb_kits/playbook/pb_list/docs/example.yml +12 -1
  50. data/app/pb_kits/playbook/pb_list/docs/index.js +11 -0
  51. data/app/pb_kits/playbook/pb_popover/_popover.html.erb +4 -4
  52. data/app/pb_kits/playbook/pb_popover/_popover.jsx +41 -8
  53. data/app/pb_kits/playbook/pb_popover/_popover.scss +44 -7
  54. data/app/pb_kits/playbook/pb_popover/docs/_popover_close.html.erb +42 -0
  55. data/app/pb_kits/playbook/pb_popover/docs/_popover_close.jsx +99 -0
  56. data/app/pb_kits/playbook/pb_popover/docs/_popover_default.html.erb +19 -7
  57. data/app/pb_kits/playbook/pb_popover/docs/_popover_default.jsx +22 -6
  58. data/app/pb_kits/playbook/pb_popover/docs/_popover_list.html.erb +11 -10
  59. data/app/pb_kits/playbook/pb_popover/docs/_popover_list.jsx +22 -18
  60. data/app/pb_kits/playbook/pb_popover/docs/_popover_list.md +1 -0
  61. data/app/pb_kits/playbook/pb_popover/docs/_popover_scroll_height.html.erb +24 -0
  62. data/app/pb_kits/playbook/pb_popover/docs/_popover_scroll_height.jsx +56 -0
  63. data/app/pb_kits/playbook/pb_popover/docs/_popover_z_index.html.erb +14 -0
  64. data/app/pb_kits/playbook/pb_popover/docs/_popover_z_index.jsx +50 -0
  65. data/app/pb_kits/playbook/pb_popover/docs/example.yml +12 -8
  66. data/app/pb_kits/playbook/pb_popover/docs/index.js +3 -3
  67. data/app/pb_kits/playbook/pb_popover/index.js +18 -9
  68. data/app/pb_kits/playbook/pb_popover/popover.rb +26 -2
  69. data/app/pb_kits/playbook/pb_title/_title.html.erb +1 -0
  70. data/app/pb_kits/playbook/pb_title/_title.jsx +24 -17
  71. data/app/pb_kits/playbook/props.rb +7 -0
  72. data/app/views/playbook/samples/filter_table/index.html.erb +348 -0
  73. data/app/views/playbook/samples/filter_table/index.jsx +433 -0
  74. data/lib/playbook/version.rb +1 -1
  75. metadata +37 -12
  76. data/app/pb_kits/playbook/pb_popover/docs/_popover_click_any.html.erb +0 -19
  77. data/app/pb_kits/playbook/pb_popover/docs/_popover_click_any.jsx +0 -40
  78. data/app/pb_kits/playbook/pb_popover/docs/_popover_click_inside.html.erb +0 -14
  79. data/app/pb_kits/playbook/pb_popover/docs/_popover_click_inside.jsx +0 -40
  80. data/app/pb_kits/playbook/pb_popover/docs/_popover_click_outside.html.erb +0 -14
  81. data/app/pb_kits/playbook/pb_popover/docs/_popover_click_outside.jsx +0 -40
  82. data/app/pb_kits/playbook/pb_popover/docs/_popover_with_button.jsx +0 -34
  83. data/app/pb_kits/playbook/pb_popover/docs/_popover_with_circle.html.erb +0 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2089dad07588097cb7bf94e0c7915a97e1bcf3f2029c3dc8d77036ea6de0a74b
4
- data.tar.gz: 767d1abd51a803e43d216ef1946b82b235f5c7a28fe5b1a3f38e245fff9e8918
3
+ metadata.gz: d2d56f651849112f219a822c91acbb3509875e03014444c1f4e93dc9f3507d6f
4
+ data.tar.gz: 98afd071a855e8eff49ea47f56170e219ca3db69f167cadcb5e704fc7f8dc0da
5
5
  SHA512:
6
- metadata.gz: be7cf9f4ee8c126aeb48d3ff48f4b8e2c858eb0fb997c1bd8e29d44207369535808fd6711d456f9b5996d6b874662d4f16d86c8efbac033d3e45f6ac147f6006
7
- data.tar.gz: e0ef0655b2b2c516b496f102410247859530f5b4f7e6f5d535aa1dff15cf911ad216e26c7faf9d8b72a113cd9482d60f5d89ef325aa597f3dac3651a2ceffbce
6
+ metadata.gz: e55b3425c7341be74aef73641a5972435ea67cfc2fa80b6df50db89b8b13936dd17f2c535a0c9914153da59e2935f11dedceabde3000794b9581dcd8afb16e56
7
+ data.tar.gz: 9a1eefdce2a9528175c4272b80b05addd29307f0254a691402ca84b70b5dcb05c85cdc81f94ac5a8a12c3fb5c3965fec0066328750a3e252d7dc7dcb9e13c160
data/README.md CHANGED
@@ -9,10 +9,10 @@ Playbook is the first design system built for both Rails & React interfaces. Ins
9
9
 
10
10
  ## Getting started
11
11
 
12
- 1. Run `yarn && bundle`
12
+ 1. Run `make install`
13
13
  1. Run `make start`
14
14
  1. Install overcommit hooks `bin/overcommit`
15
- 1. open [http://localhost:8080](http://localhost:8080)
15
+ 1. open [http://localhost:8089](http://localhost:8089)
16
16
 
17
17
  To clean up this project from your local machine, run `make stop`, which will drop all containers and networks associated with this project. To purge all resources, do `make clean`, which also removes images and volumes for a blank slate.
18
18
 
@@ -49,7 +49,7 @@ module Playbook
49
49
  if type == "rails"
50
50
  render template: "playbook/samples/#{sample}/index.html.erb"
51
51
  elsif type == "react"
52
- react_component(sample.titleize.to_s)
52
+ react_component(sample.titleize.delete(" ").to_s)
53
53
  end
54
54
  end
55
55
  end
@@ -33,6 +33,7 @@
33
33
  @import 'pb_icon_circle/icon_circle';
34
34
  @import 'pb_icon_value/icon_value';
35
35
  @import 'pb_image/image';
36
+ @import 'pb_installer/installer';
36
37
  @import 'pb_label_pill/label_pill';
37
38
  @import 'pb_label_value/label_value';
38
39
  @import 'pb_layout/layout';
@@ -80,4 +81,3 @@
80
81
  @import 'pb_time_stacked/time_stacked';
81
82
  @import 'pb_weekday_stacked/weekday_stacked';
82
83
  @import './utilities/spacing';
83
-
@@ -1,6 +1,8 @@
1
1
  samples:
2
2
  - dashboards
3
3
  - registration
4
+ - filter_table
5
+
4
6
  kits:
5
7
  - avatar
6
8
  - avatar_action_button
@@ -39,6 +41,7 @@ kits:
39
41
  - icon_circle
40
42
  - icon_value
41
43
  - image
44
+ - installer
42
45
  - layout
43
46
  - list
44
47
  - loading_inline
@@ -88,4 +91,3 @@ kits:
88
91
  - title_detail
89
92
  - weekday_stacked
90
93
  - user
91
- - user_badge
@@ -45,6 +45,7 @@ import * as Icon from 'pb_icon/docs'
45
45
  import * as IconCircle from 'pb_icon_circle/docs'
46
46
  import * as IconValue from 'pb_icon_value/docs'
47
47
  import * as Image from 'pb_image/docs'
48
+ import * as Installer from 'pb_installer/docs'
48
49
  import * as LabelPill from 'pb_label_pill/docs'
49
50
  import * as LabelValue from 'pb_label_value/docs'
50
51
  import * as Layout from 'pb_layout/docs'
@@ -124,6 +125,7 @@ WebpackerReact.setup({
124
125
  ...IconCircle,
125
126
  ...IconValue,
126
127
  ...Image,
128
+ ...Installer,
127
129
  ...LabelPill,
128
130
  ...LabelValue,
129
131
  ...Layout,
@@ -11,7 +11,9 @@ import WebpackerReact from 'webpacker-react'
11
11
  // Generated file from kit generator.
12
12
 
13
13
  import Dashboards from '../../../views/playbook/samples/dashboards/index.jsx'
14
+
14
15
  import Registration from '../../../views/playbook/samples/registration/index.jsx'
15
16
 
16
17
  WebpackerReact.setup({ Dashboards })
18
+ WebpackerReact.setup({ FilterTable })
17
19
  WebpackerReact.setup({ Registration })
@@ -2,29 +2,37 @@
2
2
 
3
3
  import React from 'react'
4
4
  import classnames from 'classnames'
5
- import { buildCss } from '../utilities/props'
5
+ import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
6
6
  import { spacing } from '../utilities/spacing.js'
7
7
 
8
8
  type CaptionProps = {
9
+ aria?: object,
9
10
  className?: String,
10
11
  children: Array<React.ReactNode> | React.ReactNode,
11
12
  dark?: Boolean,
13
+ data?: object,
14
+ id?: String,
12
15
  size?: "xs" | "sm" | "md" | "lg" | "xl",
13
- tag: String,
14
- text: String,
16
+ tag?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "p" | "span" | "div",
17
+ text?: String,
15
18
  }
16
19
 
17
20
  const Caption = (props: CaptionProps) => {
18
21
  const {
22
+ aria = {},
19
23
  className,
20
24
  children,
21
25
  dark = false,
26
+ data = {},
27
+ id,
22
28
  size = 'md',
23
29
  tag = 'div',
24
30
  text,
25
31
  } = props
26
32
  const Tag = `${tag}`
27
33
 
34
+ const ariaProps = buildAriaProps(aria)
35
+ const dataProps = buildDataProps(data)
28
36
  const css = classnames(
29
37
  buildCss('pb_caption_kit', size, {
30
38
  dark: dark,
@@ -33,7 +41,16 @@ const Caption = (props: CaptionProps) => {
33
41
  spacing(props)
34
42
  )
35
43
 
36
- return <Tag className={css}>{text || children}</Tag>
44
+ return (
45
+ <Tag
46
+ {...ariaProps}
47
+ {...dataProps}
48
+ className={css}
49
+ id={id}
50
+ >
51
+ {text || children}
52
+ </Tag>
53
+ )
37
54
  }
38
55
 
39
56
  export default Caption
@@ -1,75 +1,4 @@
1
- @import "../tokens/shadows";
2
- @import "../tokens/border_radius";
3
- @import "../tokens/spacing";
4
- @import "../tokens/colors";
5
- @import "../tokens/transition";
6
- @import "../tokens/animation-curves";
7
-
8
- $pb_card_border_width: 1px;
9
- $pb_card_border_radius: $border_rad_heavier;
10
- $pb_card_highlight_colors: map-merge(map-merge($status_colors, $product_colors), $category_colors);
11
- $pb_card_highlight_size: 4px;
12
- $pb_card_header_colors: $category_colors;
13
- $pb_card_header_border_radius: $border_rad_heavy;
14
- $pb_card_padding:(
15
- none: 0,
16
- xs: $space_xs,
17
- sm: $space_sm,
18
- md: $space_md,
19
- lg: $space_lg,
20
- xl: $space_xl,
21
- );
22
-
23
- @mixin pb_card_selected($border_color: $primary) {
24
- border-color: $border_color;
25
- border-width: $pb_card_border_width * 2;
26
- }
27
-
28
- @mixin pb_card_selected_dark {
29
- @include pb_card_selected($primary_action);
30
- }
31
-
32
- @mixin pb_card($background: $card_light, $border_color: $border_light) {
33
- position: relative;
34
- display: flex;
35
- flex-direction: column;
36
- min-width: 0;
37
- word-wrap: break-word;
38
- background-color: $background;
39
- background-clip: border-box;
40
- border-width: $pb_card_border_width;
41
- border-style: solid;
42
- border-color: $border_color;
43
- border-radius: $pb_card_border_radius;
44
- transition-property: all;
45
- transition-duration: $transition_short;
46
- transition-timing-function: $easeIn;
47
-
48
- @each $name, $shadow in $box_shadows {
49
- &[class*=_#{$name}] {
50
- box-shadow: $shadow;
51
- }
52
- }
53
- }
54
-
55
- @mixin pb_card_dark {
56
- @include pb_card($card_dark, $border_dark);
57
- }
58
-
59
- @mixin pb_card_highlight($width, $height, $background){
60
- content: "";
61
- position: absolute;
62
- top: 0;
63
- left: 0;
64
- width: $width;
65
- height: $height;
66
- background: $background;
67
- z-index: 10;
68
- }
69
-
70
- @mixin pb_card_header_color($category_color) {
71
- background: $category_color;
72
- }
1
+ @import "card_mixin";
73
2
 
74
3
 
75
4
  [class^=pb_card_kit] {
@@ -0,0 +1,72 @@
1
+ @import "../tokens/shadows";
2
+ @import "../tokens/border_radius";
3
+ @import "../tokens/spacing";
4
+ @import "../tokens/colors";
5
+ @import "../tokens/transition";
6
+ @import "../tokens/animation-curves";
7
+
8
+ $pb_card_border_width: 1px;
9
+ $pb_card_border_radius: $border_rad_heavier;
10
+ $pb_card_highlight_colors: map-merge(map-merge($status_colors, $product_colors), $category_colors);
11
+ $pb_card_highlight_size: 4px;
12
+ $pb_card_header_colors: $category_colors;
13
+ $pb_card_header_border_radius: $border_rad_heavy;
14
+ $pb_card_padding:(
15
+ none: 0,
16
+ xs: $space_xs,
17
+ sm: $space_sm,
18
+ md: $space_md,
19
+ lg: $space_lg,
20
+ xl: $space_xl,
21
+ );
22
+
23
+ @mixin pb_card_selected($border_color: $primary) {
24
+ border-color: $border_color;
25
+ border-width: $pb_card_border_width * 2;
26
+ }
27
+
28
+ @mixin pb_card_selected_dark {
29
+ @include pb_card_selected($primary_action);
30
+ }
31
+
32
+ @mixin pb_card($background: $card_light, $border_color: $border_light) {
33
+ position: relative;
34
+ display: flex;
35
+ flex-direction: column;
36
+ min-width: 0;
37
+ word-wrap: break-word;
38
+ background-color: $background;
39
+ background-clip: border-box;
40
+ border-width: $pb_card_border_width;
41
+ border-style: solid;
42
+ border-color: $border_color;
43
+ border-radius: $pb_card_border_radius;
44
+ transition-property: all;
45
+ transition-duration: $transition_short;
46
+ transition-timing-function: $easeIn;
47
+
48
+ @each $name, $shadow in $box_shadows {
49
+ &[class*=_#{$name}] {
50
+ box-shadow: $shadow;
51
+ }
52
+ }
53
+ }
54
+
55
+ @mixin pb_card_dark {
56
+ @include pb_card($card_dark, $border_dark);
57
+ }
58
+
59
+ @mixin pb_card_highlight($width, $height, $background){
60
+ content: "";
61
+ position: absolute;
62
+ top: 0;
63
+ left: 0;
64
+ width: $width;
65
+ height: $height;
66
+ background: $background;
67
+ z-index: 10;
68
+ }
69
+
70
+ @mixin pb_card_header_color($category_color) {
71
+ background: $category_color;
72
+ }
@@ -21,7 +21,6 @@ const FiltersPopover = ({ children }: FiltersPopoverProps) => {
21
21
  return (
22
22
  <PbReactPopover
23
23
  closeOnClick="outside"
24
- offset
25
24
  placement="bottom"
26
25
  reference={filterButton}
27
26
  shouldClosePopover={updateHide}
@@ -69,7 +69,7 @@ const SortMenu = ({ options, value, onChange }: SortMenuProps) => {
69
69
  <PbReactPopover
70
70
  className="pb_filter_sort_menu"
71
71
  closeOnClick="outside"
72
- offset
72
+ padding="none"
73
73
  placement="bottom"
74
74
  reference={sortButton}
75
75
  shouldClosePopover={updateHide}
@@ -13,7 +13,7 @@
13
13
  <%end%>
14
14
 
15
15
  <% if object.template != "filter_only"%>
16
- <%= pb_rails("popover", props: {classname: "pb_filter_sort_menu", close_on_click: "outside", trigger_element_id: "sort-button#{object.id}", tooltip_id: "sort-filter-btn-tooltip#{object.id}", position: 'bottom'}) do %>
16
+ <%= pb_rails("popover", props: {classname: "pb_filter_sort_menu", close_on_click: "outside", trigger_element_id: "sort-button#{object.id}", tooltip_id: "sort-filter-btn-tooltip#{object.id}", position: 'bottom', padding: 'none'}) do %>
17
17
  <%= pb_rails("list") do %>
18
18
  <% object.sort_menu.each do |item| %>
19
19
  <%= pb_rails("list/item") do%> <%= pb_rails("button", props: {variant: "link" ,classname: "p-0", text: item[:item], link: item[:link]}) %><% end %>
@@ -0,0 +1,16 @@
1
+ <%= content_tag(:div,
2
+ id: object.id,
3
+ data: object.data,
4
+ class: object.classname) do %>
5
+ <%= pb_rails("body", props: {color: "light" }) do %>
6
+ <%= pb_rails("caption", props: { text: "Installer" }) %>
7
+ <%= pb_rails("icon", props: { icon: "truck", fixed_width: true }) %>
8
+ <% if object.link %>
9
+ <%= link_to object.link, class: "pb_installer_kit_links" do %>
10
+ <%= pb_rails("title", props: { text: object.project_name, tag: "span", size: 4 }) %>
11
+ <% end %>
12
+ <% else %>
13
+ <%= pb_rails("title", props: { text: object.project_name, tag: "span", size: 4 }) %>
14
+ <% end %>
15
+ <% end %>
16
+ <% end %>
@@ -0,0 +1,54 @@
1
+ /* @flow */
2
+
3
+ import React from 'react'
4
+ import classnames from 'classnames'
5
+ import { Body, Caption, Icon, Title } from '../'
6
+
7
+ const renderProjectName = (link, projectName) => {
8
+ if (link) {
9
+ return (
10
+ <a
11
+ className="pb_installer_kit_links"
12
+ href={link}
13
+ >
14
+ <Title
15
+ size={4}
16
+ tag="span"
17
+ text={projectName}
18
+ />
19
+ </a>
20
+ )
21
+ }
22
+
23
+ return (
24
+ <Title
25
+ size={4}
26
+ tag="span"
27
+ text={projectName}
28
+ />
29
+ )
30
+ }
31
+
32
+ type InstallerProps = {
33
+ link?: String,
34
+ projectName: String,
35
+ }
36
+
37
+ const Installer = ({
38
+ link,
39
+ projectName,
40
+ }: InstallerProps) => (
41
+ <div className={classnames('pb_installer_kit')}>
42
+ <Body color="light">
43
+ <Caption text="Installer" />
44
+ <Icon
45
+ fixedwidth
46
+ icon="truck"
47
+ />
48
+ {' '}
49
+ {renderProjectName(link, projectName)}
50
+ </Body>
51
+ </div>
52
+ )
53
+
54
+ export default Installer
@@ -0,0 +1,7 @@
1
+ [class^=pb_installer_kit] {
2
+ .pb_installer_kit_links {
3
+ span {
4
+ color: $data_1;
5
+ }
6
+ }
7
+ }
@@ -0,0 +1,8 @@
1
+ <%= pb_rails("installer", props: {
2
+ project_name: "JD Installations LLC"
3
+ }) %>
4
+ <br /><br />
5
+ <%= pb_rails("installer", props: {
6
+ link: "#",
7
+ project_name: "JD Installations LLC"
8
+ }) %>
@@ -0,0 +1,16 @@
1
+ import React from 'react'
2
+ import Installer from '../_installer.jsx'
3
+
4
+ const InstallerDefault = () => (
5
+ <div>
6
+ <Installer projectName="JD Installations LLC" />
7
+ <br />
8
+ <br />
9
+ <Installer
10
+ link="#"
11
+ projectName="JD Installations LLC"
12
+ />
13
+ </div>
14
+ )
15
+
16
+ export default InstallerDefault
@@ -0,0 +1,9 @@
1
+ examples:
2
+
3
+ rails:
4
+ - installer_default: Default
5
+
6
+
7
+ react:
8
+ - installer_default: Default
9
+