playbook_ui 5.3.0 → 5.5.1.pre.alpha2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +2 -1
  3. data/app/pb_kits/playbook/data/menu.yml +2 -0
  4. data/app/pb_kits/playbook/index.js +2 -0
  5. data/app/pb_kits/playbook/packs/examples.js +2 -0
  6. data/app/pb_kits/playbook/packs/samples.js +2 -0
  7. data/app/pb_kits/playbook/pb_body/_body.html.erb +1 -0
  8. data/app/pb_kits/playbook/pb_body/_body.jsx +33 -24
  9. data/app/pb_kits/playbook/pb_body/docs/_body_dark.html.erb +1 -1
  10. data/app/pb_kits/playbook/pb_body/docs/_body_dark.jsx +0 -2
  11. data/app/pb_kits/playbook/pb_body/docs/_body_light.html.erb +1 -0
  12. data/app/pb_kits/playbook/pb_body/docs/_body_light.jsx +3 -7
  13. data/app/pb_kits/playbook/pb_button/_button.jsx +2 -0
  14. data/app/pb_kits/playbook/pb_caption/_caption.scss +2 -2
  15. data/app/pb_kits/playbook/pb_checkbox/_checkbox.html.erb +2 -1
  16. data/app/pb_kits/playbook/pb_checkbox/_checkbox.jsx +18 -5
  17. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_checked.jsx +17 -0
  18. data/app/pb_kits/playbook/pb_checkbox/docs/example.yml +1 -0
  19. data/app/pb_kits/playbook/pb_checkbox/docs/index.js +1 -0
  20. data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.html.erb +1 -0
  21. data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.jsx +17 -1
  22. data/app/pb_kits/playbook/pb_dashboard_value/_dashboard_value.html.erb +3 -2
  23. data/app/pb_kits/playbook/pb_dashboard_value/_dashboard_value.jsx +15 -12
  24. data/app/pb_kits/playbook/pb_date_picker/_date_picker.html.erb +36 -0
  25. data/app/pb_kits/playbook/pb_date_picker/_date_picker.jsx +98 -0
  26. data/app/pb_kits/playbook/pb_date_picker/_date_picker.scss +59 -0
  27. data/app/pb_kits/playbook/pb_date_picker/date_picker.rb +38 -0
  28. data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.js +91 -0
  29. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default.html.erb +1 -0
  30. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default.jsx +12 -0
  31. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default_date.html.erb +24 -0
  32. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default_date.jsx +30 -0
  33. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_disabled.html.erb +43 -0
  34. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_disabled.jsx +48 -0
  35. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_error.html.erb +4 -0
  36. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_error.jsx +13 -0
  37. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_format.html.erb +19 -0
  38. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_format.jsx +25 -0
  39. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_label.html.erb +4 -0
  40. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_label.jsx +13 -0
  41. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_min_max.html.erb +14 -0
  42. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_min_max.jsx +22 -0
  43. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_range.html.erb +4 -0
  44. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_range.jsx +13 -0
  45. data/app/pb_kits/playbook/pb_date_picker/docs/example.yml +23 -0
  46. data/app/pb_kits/playbook/pb_date_picker/docs/index.js +8 -0
  47. data/app/pb_kits/playbook/pb_date_picker/index.js +11 -0
  48. data/app/pb_kits/playbook/pb_filter/docs/_filter_default.html.erb +1 -0
  49. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +1 -0
  50. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form.html.erb +3 -1
  51. data/app/pb_kits/playbook/pb_form/form_builder.rb +1 -0
  52. data/app/pb_kits/playbook/pb_form/form_builder/date_picker_field.rb +15 -0
  53. data/app/pb_kits/playbook/pb_highlight/docs/_highlight_default.html.erb +1 -1
  54. data/app/pb_kits/playbook/pb_image/_image.jsx +1 -1
  55. data/app/pb_kits/playbook/pb_layout/_layout.scss +16 -0
  56. data/app/pb_kits/playbook/pb_legend/_legend.html.erb +1 -0
  57. data/app/pb_kits/playbook/pb_legend/_legend.jsx +25 -4
  58. data/app/pb_kits/playbook/pb_nav/_item.jsx +20 -10
  59. data/app/pb_kits/playbook/pb_nav/_vertical_nav.scss +3 -0
  60. data/app/pb_kits/playbook/pb_popover/_popover.html.erb +1 -1
  61. data/app/pb_kits/playbook/pb_popover/_popover.jsx +3 -1
  62. data/app/pb_kits/playbook/pb_popover/_popover.scss +4 -0
  63. data/app/pb_kits/playbook/pb_popover/popover.rb +4 -0
  64. data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.html.erb +2 -2
  65. data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.jsx +24 -10
  66. data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.scss +3 -1
  67. data/app/pb_kits/playbook/pb_time_range_inline/time_range_inline.rb +6 -0
  68. data/app/pb_kits/playbook/pb_title/_title.jsx +7 -4
  69. data/app/pb_kits/playbook/pb_title/_title.scss +7 -0
  70. data/app/pb_kits/playbook/pb_title/_title_mixin.scss +2 -0
  71. data/app/pb_kits/playbook/pb_title/title.rb +4 -1
  72. data/app/pb_kits/playbook/vendor.js +4 -0
  73. data/app/views/layouts/playbook/samples.html.erb +1 -0
  74. data/app/views/playbook/samples/collection_detail/index.html.erb +169 -0
  75. data/app/views/playbook/samples/collection_detail/index.jsx +372 -0
  76. data/lib/generators/kit/kit_generator.rb +6 -3
  77. data/lib/generators/kit/templates/kit_html.erb.tt +3 -2
  78. data/lib/generators/kit/templates/kit_jsx.erb.tt +38 -10
  79. data/lib/playbook/version.rb +1 -1
  80. metadata +32 -4
@@ -0,0 +1,4 @@
1
+ <%= pb_rails("date_picker", props: {
2
+ error: "Invalid date. Please pick a valid date.",
3
+ picker_id: "date-picker-error"
4
+ }) %>
@@ -0,0 +1,13 @@
1
+ import React from 'react'
2
+ import { DatePicker } from '../../'
3
+
4
+ const DatePickerError = () => (
5
+ <div>
6
+ <DatePicker
7
+ error="Invalid date. Please pick a valid date."
8
+ pickerId="date-picker-error"
9
+ />
10
+ </div>
11
+ )
12
+
13
+ export default DatePickerError
@@ -0,0 +1,19 @@
1
+ <%= pb_rails("date_picker", props: {
2
+ format: "m-d-Y",
3
+ picker_id: "date-picker-format1"
4
+ }) %>
5
+
6
+ <%= pb_rails("date_picker", props: {
7
+ format: "m/d/y",
8
+ picker_id: "date-picker-format2"
9
+ }) %>
10
+
11
+ <%= pb_rails("date_picker", props: {
12
+ format: "n-j-y",
13
+ picker_id: "date-picker-format3"
14
+ }) %>
15
+
16
+ <%= pb_rails("date_picker", props: {
17
+ format: "Y-d-m",
18
+ picker_id: "date-picker-format4"
19
+ }) %>
@@ -0,0 +1,25 @@
1
+ import React from 'react'
2
+ import { DatePicker } from '../../'
3
+
4
+ const DatePickerFormat = () => (
5
+ <div>
6
+ <DatePicker
7
+ format="m-d-Y"
8
+ pickerId="date-picker-format1"
9
+ />
10
+ <DatePicker
11
+ format="m/d/y"
12
+ pickerId="date-picker-format2"
13
+ />
14
+ <DatePicker
15
+ format="n-j-y"
16
+ pickerId="date-picker-format3"
17
+ />
18
+ <DatePicker
19
+ format="Y-d-m"
20
+ pickerId="date-picker-format4"
21
+ />
22
+ </div>
23
+ )
24
+
25
+ export default DatePickerFormat
@@ -0,0 +1,4 @@
1
+ <%= pb_rails("date_picker", props: {
2
+ label: "Your Label Here",
3
+ picker_id: "date-picker-label"
4
+ }) %>
@@ -0,0 +1,13 @@
1
+ import React from 'react'
2
+ import { DatePicker } from '../../'
3
+
4
+ const DatePickerLabel = () => (
5
+ <div>
6
+ <DatePicker
7
+ label="Your Label Here"
8
+ pickerId="date-picker-label"
9
+ />
10
+ </div>
11
+ )
12
+
13
+ export default DatePickerLabel
@@ -0,0 +1,14 @@
1
+ <%= pb_rails("date_picker", props: {
2
+ label: "Dynamic dates.",
3
+ max_date: (Date.today + 3).httpdate,
4
+ min_date: (Date.today - 3).httpdate,
5
+ picker_id: "date-picker-min-max1"
6
+ }) %>
7
+
8
+ <%= pb_rails("date_picker", props: {
9
+ format: "m/d/Y",
10
+ label: "Absolute formatted dates.",
11
+ max_date: "10/20/2020",
12
+ min_date: "10/10/2020",
13
+ picker_id: "date-picker-min-max2"
14
+ }) %>
@@ -0,0 +1,22 @@
1
+ import React from 'react'
2
+ import { DatePicker } from '../../'
3
+
4
+ const DatePickerMinMax = () => (
5
+ <div>
6
+ <DatePicker
7
+ label="Dynamic dates using flatpickr increment function."
8
+ maxDate={new Date().fp_incr(3)}
9
+ minDate={new Date().fp_incr(-3)}
10
+ pickerId="date-picker-min-max1"
11
+ />
12
+ <DatePicker
13
+ format="m/d/Y"
14
+ label="Absolute formatted dates."
15
+ maxDate="10/20/2020"
16
+ minDate="10/10/2020"
17
+ pickerId="date-picker-min-max2"
18
+ />
19
+ </div>
20
+ )
21
+
22
+ export default DatePickerMinMax
@@ -0,0 +1,4 @@
1
+ <%= pb_rails("date_picker", props: {
2
+ mode: "range",
3
+ picker_id: "date-picker-range"
4
+ }) %>
@@ -0,0 +1,13 @@
1
+ import React from 'react'
2
+ import { DatePicker } from '../../'
3
+
4
+ const DatePickerRange = () => (
5
+ <div>
6
+ <DatePicker
7
+ mode="range"
8
+ pickerId="date-picker-range"
9
+ />
10
+ </div>
11
+ )
12
+
13
+ export default DatePickerRange
@@ -0,0 +1,23 @@
1
+ examples:
2
+
3
+ rails:
4
+ - date_picker_default: Default
5
+ - date_picker_default_date: Default Date
6
+ - date_picker_label: Label
7
+ - date_picker_range: Range
8
+ - date_picker_format: Format
9
+ - date_picker_disabled: Disabled Dates
10
+ - date_picker_min_max: Min Max
11
+ - date_picker_error: Error
12
+
13
+
14
+ react:
15
+ - date_picker_default: Default
16
+ - date_picker_default_date: Default Date
17
+ - date_picker_label: Label
18
+ - date_picker_range: Range
19
+ - date_picker_format: Format
20
+ - date_picker_disabled: Disabled Dates
21
+ - date_picker_min_max: Min Max
22
+ - date_picker_error: Error
23
+
@@ -0,0 +1,8 @@
1
+ export { default as DatePickerDefault } from './_date_picker_default.jsx'
2
+ export { default as DatePickerDefaultDate } from './_date_picker_default_date.jsx'
3
+ export { default as DatePickerLabel } from './_date_picker_label.jsx'
4
+ export { default as DatePickerRange } from './_date_picker_range.jsx'
5
+ export { default as DatePickerFormat } from './_date_picker_format.jsx'
6
+ export { default as DatePickerDisabled } from './_date_picker_disabled.jsx'
7
+ export { default as DatePickerMinMax } from './_date_picker_min_max.jsx'
8
+ export { default as DatePickerError } from './_date_picker_error.jsx'
@@ -0,0 +1,11 @@
1
+ import PbEnhancedElement from '../pb_enhanced_element'
2
+
3
+ export default class PbDatePicker extends PbEnhancedElement {
4
+ static get selector() {
5
+ return '[data-pb-date-picker-kit]'
6
+ }
7
+
8
+ connect() {
9
+ this.element.addEventListener('keydown', (event) => this.handleKeydown(event))
10
+ }
11
+ }
@@ -30,6 +30,7 @@
30
30
  <%= pb_rails("form", props: { form_system_options: { scope: :example, method: :get } }) do |form| %>
31
31
  <%= form.text_field :example_text_field, props: { label: true } %>
32
32
  <%= form.collection_select :example_collection_select, example_collection, :value, :name, props: { label: true } %>
33
+ <%= form.date_picker :example_date_picker %>
33
34
 
34
35
  <%= form.actions do |action| %>
35
36
  <%= action.submit props: { text: "Apply", data: { disable_with: "<i class='far fa-spinner fa-spin mr-3'></i>Searching...".html_safe },}%>
@@ -24,6 +24,7 @@
24
24
  <%= form.text_area :example_text_area, props: { label: true } %>
25
25
  <%= form.select :example_select, [ ["Yes", 1], ["No", 2] ], props: { label: true } %>
26
26
  <%= form.collection_select :example_collection_select, example_collection, :value, :name, props: { label: true } %>
27
+ <%= form.date_picker :example_date_picker, props: { picker_id: 'date-picker', default_date: 'blank' } %>
27
28
 
28
29
  <%= form.actions do |action| %>
29
30
  <%= action.submit %>
@@ -13,7 +13,8 @@
13
13
  :example_url_field,
14
14
  :example_text_area,
15
15
  :example_select_field,
16
- :example_collection_select_field
16
+ :example_collection_select_field,
17
+ :example_date_picker
17
18
 
18
19
 
19
20
  def self.model_name
@@ -49,6 +50,7 @@
49
50
  <%= form.input :example_text_area, as: :text %>
50
51
  <%= form.select :example_select_field, [["Yes", 1], ["No", 2]], props: { label: true } %>
51
52
  <%= form.collection_select :example_collection_select_field, example_collection, :value, :name, props: { label: true } %>
53
+ <%= form.date_picker :example_date_picker, props: { picker_id: 'date-picker', default_date: 'blank' } %>
52
54
 
53
55
  <%= form.actions do |action| %>
54
56
  <%= action.submit %>
@@ -17,6 +17,7 @@ module Playbook
17
17
  prepend(TypeaheadField)
18
18
  prepend(SelectField)
19
19
  prepend(CollectionSelectField)
20
+ prepend(DatePickerField)
20
21
 
21
22
  def actions(&block)
22
23
  ActionArea.new(self).wrapper(&block)
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module PbForm
5
+ module FormBuilder
6
+ module DatePickerField
7
+ def date_picker(name, props: {})
8
+ props[:name] = name
9
+
10
+ @template.pb_rails("date_picker", props: props)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -10,7 +10,7 @@ This an example<%= pb_rails("highlight") do%>Highlight Example<% end %>around.
10
10
  <br>
11
11
  <br>
12
12
  <%= pb_rails("title", props: {text: "Search",size: 4})%>
13
- </br>
13
+ <br>
14
14
  <%= pb_rails("body", props: {text: "hello helpers are great even highlighting this", highlighting: true, highlighted_text: ["hello","great"]})%>
15
15
 
16
16
  <br>
@@ -14,7 +14,7 @@ const Image = (props: ImageProps) => {
14
14
  return (
15
15
  <img
16
16
  alt={alt}
17
- className={classnames('pb_image lazyload blur_up', spacing(props))}
17
+ className={classnames('pb_image_kit lazyload blur_up', spacing(props))}
18
18
  data-src={url}
19
19
  />
20
20
  )
@@ -35,10 +35,25 @@ $card-border-radius: $border_rad_lightest;
35
35
  display: grid;
36
36
  width: 100%;
37
37
  height: 100%;
38
+ padding: $space_lg;
38
39
  grid-template-areas:
39
40
  "side-bar collection";
40
41
  grid-template-columns: .25fr 1fr;
41
42
  grid-column-gap: $space_sm;
43
+ div.layout_body{
44
+ @media screen and (min-width: $screen-md-min) {
45
+ margin-left: $space_md;
46
+ }
47
+ @media screen and (max-width: $screen-lg-min) {
48
+ grid-template-columns: repeat(3, 1fr);
49
+ }
50
+ @media screen and (max-width: $screen-md-min) {
51
+ grid-template-columns: repeat(2, 1fr) !important;
52
+ }
53
+ @media screen and (max-width: $screen-xs-min) {
54
+ grid-template-columns: repeat(1, 1fr) !important;
55
+ }
56
+ }
42
57
 
43
58
  @media screen and (max-width: $screen-md-min) {
44
59
  grid-template-areas: "side-bar"
@@ -46,6 +61,7 @@ $card-border-radius: $border_rad_lightest;
46
61
  grid-template-columns: 1fr;
47
62
  grid-row-gap: $space_sm;
48
63
  }
64
+
49
65
  }
50
66
 
51
67
  &[class*=_kanban]{
@@ -1,4 +1,5 @@
1
1
  <%= content_tag(:div, object.text,
2
+ aria: object.aria,
2
3
  id: object.id,
3
4
  data: object.data,
4
5
  class: object.classname) do %>
@@ -2,12 +2,14 @@
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
  import { Body, Title } from '../'
9
9
 
10
10
  type LegendProps = {
11
+ aria?: object,
12
+ className?: String,
11
13
  color?: | "data_1"
12
14
  | "data_2"
13
15
  | "data_3"
@@ -16,20 +18,39 @@ type LegendProps = {
16
18
  | "data_6"
17
19
  | "data_7",
18
20
  dark?: Boolean,
21
+ data?: object,
22
+ id?: String,
19
23
  prefixText?: String,
20
24
  text: String,
21
25
  }
22
26
 
23
27
  const Legend = (props: LegendProps) => {
24
- const { color = 'data_1', dark = false, prefixText, text } = props
28
+ const {
29
+ aria = {},
30
+ className,
31
+ color = 'data_1',
32
+ dark = false,
33
+ data = {},
34
+ id,
35
+ prefixText,
36
+ text,
37
+ } = props
38
+
39
+ const ariaProps = buildAriaProps(aria)
40
+ const dataProps = buildDataProps(data)
25
41
  const darkClass = dark ? 'dark' : 'light'
26
42
  const bodyCSS = classnames(
27
- buildCss('pb_legend_kit', color, darkClass),
43
+ buildCss('pb_legend_kit', color, darkClass), className,
28
44
  spacing(props)
29
45
  )
30
46
 
31
47
  return (
32
- <div className={bodyCSS}>
48
+ <div
49
+ {...ariaProps}
50
+ {...dataProps}
51
+ className={bodyCSS}
52
+ id={id}
53
+ >
33
54
  <Body color={dark ? 'lighter' : 'light'}>
34
55
  <span className="pb_legend_indicator_circle" />
35
56
  <If condition={prefixText}>
@@ -32,21 +32,31 @@ const NavItem = ({
32
32
  onClick={onClick}
33
33
  >
34
34
  <If condition={iconLeft}>
35
- <Icon
36
- className="pb_nav_list_item_icon_left"
37
- fixedWidth
38
- icon={iconLeft}
39
- />
35
+ <div
36
+ className="pb_nav_list_item_icon_section"
37
+ key={iconLeft}
38
+ >
39
+ <Icon
40
+ className="pb_nav_list_item_icon_left"
41
+ fixedWidth
42
+ icon={iconLeft}
43
+ />
44
+ </div>
40
45
  </If>
41
46
  <span className="pb_nav_list_item_text">
42
47
  {text || children}
43
48
  </span>
44
49
  <If condition={iconRight}>
45
- <Icon
46
- className="pb_nav_list_item_icon_right"
47
- fixedWidth
48
- icon={iconRight}
49
- />
50
+ <div
51
+ className="pb_nav_list_item_icon_section"
52
+ key={iconRight}
53
+ >
54
+ <Icon
55
+ className="pb_nav_list_item_icon_right"
56
+ fixedWidth
57
+ icon={iconRight}
58
+ />
59
+ </div>
50
60
  </If>
51
61
  </Tag>
52
62
  </li>
@@ -32,6 +32,7 @@ $selector: ".pb_nav_list";
32
32
  }
33
33
  [class*=_item_text] {
34
34
  color: $primary;
35
+ font-weight: $bold;
35
36
  }
36
37
  }
37
38
  }
@@ -90,6 +91,7 @@ $selector: ".pb_nav_list";
90
91
  text-decoration: none;
91
92
  display: flex;
92
93
  align-items: center;
94
+ border: none;
93
95
  padding: $space_xs ($space_sm - 2px);
94
96
  transition-property: color, background-color;
95
97
  transition-duration: 0.15s;
@@ -106,6 +108,7 @@ $selector: ".pb_nav_list";
106
108
  }
107
109
  [class*=_text] {
108
110
  flex: 1;
111
+ font-weight: $regular;
109
112
  }
110
113
  &:hover {
111
114
  background-color: rgba($primary, 0.03);
@@ -3,7 +3,7 @@
3
3
  data: object.data,
4
4
  class: object.classname) do %>
5
5
  <div class="pb_popover_tooltip" id="<%= object.tooltip_id %>" role="tooltip" style="<%= object.z_index_helper %>">
6
- <div class="pb_popover_body <%= object.popover_spacing_helper %>" style="<%= object.width_height_helper %>">
6
+ <div class="pb_popover_body <%= object.width_height_class_helper %> <%= object.popover_spacing_helper %>" style="<%= object.width_height_helper %>">
7
7
  <%= capture(&object.children) %>
8
8
  </div>
9
9
  </div>