playbook_ui 9.10.0.pre.alpha2 → 9.10.0.pre.date.time.stacked.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_background/background.rb +1 -0
  3. data/app/pb_kits/playbook/pb_circle_chart/circle_chart.rb +10 -9
  4. data/app/pb_kits/playbook/pb_circle_icon_button/circle_icon_button.rb +2 -4
  5. data/app/pb_kits/playbook/pb_date_stacked/_date_stacked.jsx +45 -11
  6. data/app/pb_kits/playbook/pb_date_stacked/date_stacked.html.erb +17 -6
  7. data/app/pb_kits/playbook/pb_date_stacked/date_stacked.rb +20 -11
  8. data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_bold.html.erb +5 -0
  9. data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_bold.jsx +38 -0
  10. data/app/pb_kits/playbook/pb_date_stacked/docs/example.yml +3 -1
  11. data/app/pb_kits/playbook/pb_date_stacked/docs/index.js +1 -0
  12. data/app/pb_kits/playbook/pb_date_time_stacked/_date_time_stacked.jsx +32 -16
  13. data/app/pb_kits/playbook/pb_date_time_stacked/_date_time_stacked.scss +23 -4
  14. data/app/pb_kits/playbook/pb_date_time_stacked/date_time_stacked.html.erb +12 -8
  15. data/app/pb_kits/playbook/pb_date_time_stacked/date_time_stacked.rb +9 -2
  16. data/app/pb_kits/playbook/pb_date_time_stacked/date_time_stacked.test.js +35 -0
  17. data/app/pb_kits/playbook/pb_date_time_stacked/docs/_date_time_stacked_default.html.erb +8 -1
  18. data/app/pb_kits/playbook/pb_date_time_stacked/docs/_date_time_stacked_default.jsx +19 -1
  19. data/app/pb_kits/playbook/pb_dialog/dialog.test.jsx +1 -1
  20. data/app/pb_kits/playbook/pb_distribution_bar/distribution_bar.rb +2 -2
  21. data/app/pb_kits/playbook/pb_filter/filter.rb +1 -1
  22. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/fixed_confirmation_toast.rb +1 -1
  23. data/app/pb_kits/playbook/pb_flex/_flex.jsx +6 -1
  24. data/app/pb_kits/playbook/pb_flex/flex.rb +4 -4
  25. data/app/pb_kits/playbook/pb_form/form.rb +1 -1
  26. data/app/pb_kits/playbook/pb_icon_stat_value/icon_stat_value.rb +1 -0
  27. data/app/pb_kits/playbook/pb_progress_pills/progress_pills.rb +1 -2
  28. data/app/pb_kits/playbook/pb_progress_step/progress_step.rb +1 -1
  29. data/app/pb_kits/playbook/pb_progress_step/progress_step_item.rb +1 -1
  30. data/app/pb_kits/playbook/pb_rich_text_editor/rich_text_editor.rb +2 -2
  31. data/app/pb_kits/playbook/pb_section_separator/_section_separator.jsx +7 -3
  32. data/app/pb_kits/playbook/pb_selectable_card_icon/selectable_card_icon.rb +1 -1
  33. data/app/pb_kits/playbook/pb_selectable_icon/selectable_icon.rb +1 -1
  34. data/app/pb_kits/playbook/pb_stat_change/stat_change.rb +12 -8
  35. data/app/pb_kits/playbook/pb_time_stacked/time_stacked.html.erb +2 -2
  36. data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +1 -1
  37. data/app/pb_kits/playbook/pb_user_badge/user_badge.rb +1 -1
  38. data/lib/playbook/forms/builder/action_area.rb +2 -2
  39. data/lib/playbook/forms/builder/collection_select_field.rb +2 -2
  40. data/lib/playbook/forms/builder/select_field.rb +1 -1
  41. data/lib/playbook/kit_resolver.rb +1 -1
  42. data/lib/playbook/markdown/template_handler.rb +2 -4
  43. data/lib/playbook/pb_doc_helper.rb +2 -4
  44. data/lib/playbook/props.rb +4 -1
  45. data/lib/playbook/props/base.rb +2 -1
  46. data/lib/playbook/version.rb +1 -1
  47. metadata +32 -28
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 210dfcb2a5011173148bd19f95f1295fa55e69a26814da550b09e85b64025d81
4
- data.tar.gz: 7b79476f36d303bcd6d992c5239c29faae33d8f1068674bbef0365af9ff6b9bc
3
+ metadata.gz: 27cd1418907251e1ac5b3f234dcbf01e8ee6ab30e179511e82139fe9a912cbf7
4
+ data.tar.gz: 8b37fe666405f0b156341f4bcbe7e338341800bf9b3b4c9f9793fcfca515211f
5
5
  SHA512:
6
- metadata.gz: fd106f6e9df0b198ef6b46729612c215e0ce06e7e0228135b006a91b8a08bca39410558c62b993745596b6366331a2790301a7565afed611aec2da196c9290fe
7
- data.tar.gz: 8892f5c04d2cfd31a6f229807a8a61c10f4eb059feefff3c6ec5b0ec2cbf8fd8cb2846227f5c395cc33ff9f411158e6dfd07cb30dfc3fa9880a5d30755c26a2a
6
+ metadata.gz: 32e94d16d64743934c313661b1f4e86f8cd8768cb9e52576fd10d4c089cd9ca2ece7ec13549cd6a37304d1afb1b137c56bb3acf03a950ac31166f1d277e8311d
7
+ data.tar.gz: 7a835ec81990710a3638f15f9a4ef1b9abdb57a942a9e993e718523cfe880c940febee3b4f1c02e0155de076032b3551550383d6018a198aab839519c00ff801
@@ -12,6 +12,7 @@ module Playbook
12
12
  values: %w[h1 h2 h3 h4 h5 h6 p div span],
13
13
  default: "div"
14
14
 
15
+
15
16
  def classname
16
17
  generate_classname("pb_background_kit", image_classname, background_color_classname, separator: " ")
17
18
  end
@@ -6,36 +6,37 @@ module Playbook
6
6
  prop :chart_data, type: Playbook::Props::Array,
7
7
  default: []
8
8
  prop :style, type: Playbook::Props::Enum,
9
- values: %w[pie],
10
- default: "pie"
9
+ values: %w[pie],
10
+ default: "pie"
11
11
 
12
12
  prop :data_labels, type: Playbook::Props::Boolean, default: false
13
13
  prop :min_point_size, type: Playbook::Props::Numeric
14
14
  prop :max_point_size, type: Playbook::Props::Numeric
15
15
  prop :inner_size, type: Playbook::Props::Enum,
16
- values: %w[sm md lg none],
17
- default: "md"
16
+ values: %w[sm md lg none],
17
+ default: "md"
18
18
  prop :z_min, type: Playbook::Props::Numeric
19
19
  prop :start_angle, type: Playbook::Props::Numeric
20
20
  prop :header_format
21
- prop :data_label_html, default: "<div>{point.name}</div>"
21
+ prop :data_label_html, default: '<div>{point.name}</div>'
22
22
  prop :tooltip_html, default: '<span style="font-weight: bold; color:{point.color};">●</span>
23
23
  {point.name}: ' + '<b>{point.y}
24
24
  </b>'
25
25
  prop :use_html, type: Playbook::Props::Boolean, default: false
26
26
  prop :legend, type: Playbook::Props::Boolean, default: false
27
- prop :title, default: ""
27
+ prop :title, default: ''
28
28
  prop :rounded, type: Playbook::Props::Boolean, default: false
29
29
  prop :colors, type: Playbook::Props::Array,
30
30
  default: []
31
31
 
32
+
32
33
  def chart_type
33
34
  style == "variablepie" ? "variablepie" : "pie"
34
35
  end
35
36
 
36
37
  def chart_data_formatted
37
- chart_data.map { |hash| hash[:y] = hash.delete :value }
38
- chart_data
38
+ chart_data.map{ |hash| hash[:y] = hash.delete :value}
39
+ return chart_data
39
40
  end
40
41
 
41
42
  def inner_size_format
@@ -56,7 +57,7 @@ module Playbook
56
57
  end
57
58
 
58
59
  def rounded_border_color
59
- rounded == true ? "null" : nil
60
+ rounded == true ? 'null' : nil
60
61
  end
61
62
 
62
63
  def chart_options
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  module Playbook
4
2
  module PbCircleIconButton
5
3
  class CircleIconButton < Playbook::KitBase
@@ -10,11 +8,11 @@ module Playbook
10
8
  values: %w[primary secondary link],
11
9
  default: "primary"
12
10
  prop :disabled, type: Playbook::Props::Boolean,
13
- default: false
11
+ default: false
14
12
  prop :icon, required: true
15
13
  prop :link
16
14
  prop :new_window, type: Playbook::Props::Boolean,
17
- default: false
15
+ default: false
18
16
  def classname
19
17
  generate_classname("pb_circle_icon_button_kit")
20
18
  end
@@ -9,6 +9,7 @@ import { globalProps } from '../utilities/globalProps.js'
9
9
 
10
10
  type DateStackedProps = {
11
11
  align?: "left" | "center" | "right",
12
+ bold?: boolean,
12
13
  className?: string | array<string>,
13
14
  dark?: boolean,
14
15
  data?: string,
@@ -26,6 +27,7 @@ const sizes = {
26
27
  const DateStacked = (props: DateStackedProps) => {
27
28
  const {
28
29
  align = 'left',
30
+ bold = false,
29
31
  reverse = false,
30
32
  className,
31
33
  dark = false,
@@ -46,19 +48,51 @@ const DateStacked = (props: DateStackedProps) => {
46
48
  const inputYear = dateTimestamp.toYear().toString()
47
49
 
48
50
  return (
49
- <div className={classes}>
50
- <div className="pb_date_stacked_day_month">
51
- <Caption text={dateTimestamp.toMonth().toUpperCase()} />
52
- <Title
53
- dark={dark}
54
- size={sizes[size]}
55
- text={dateTimestamp.toDay()}
56
- />
57
- </div>
58
- <If condition={currentYear != inputYear}>
59
- <Caption size="xs">{inputYear}</Caption>
51
+
52
+ <div>
53
+ <If condition={bold == false}>
54
+
55
+ <div className={classes}>
56
+ <div className="pb_date_stacked_day_month">
57
+ <Caption text={dateTimestamp.toMonth().toUpperCase()} />
58
+ <Title
59
+ dark={dark}
60
+ size={sizes[size]}
61
+ text={dateTimestamp.toDay()}
62
+ />
63
+ </div>
64
+ <If condition={currentYear != inputYear}>
65
+ <Caption size="xs">{inputYear}</Caption>
66
+ </If>
67
+ </div>
68
+ <Else />
69
+ <>
70
+ <div className={classes}>
71
+ <div className="pb_date_stacked_day_month">
72
+
73
+ <Title
74
+ bold
75
+ dark={dark}
76
+ size="4"
77
+ text={dateTimestamp.toMonth()}
78
+ />
79
+ <Title
80
+ bold
81
+ dark={dark}
82
+ size="4"
83
+ text={dateTimestamp.toDay()}
84
+ />
85
+ <If condition={currentYear != inputYear}>
86
+ <Title size="4">{inputYear}</Title>
87
+ </If>
88
+ </div>
89
+
90
+ </div>
91
+
92
+ </>
60
93
  </If>
61
94
  </div>
95
+
62
96
  )
63
97
  }
64
98
 
@@ -3,11 +3,22 @@
3
3
  data: object.data,
4
4
  class: object.classname) do %>
5
5
 
6
- <div class="pb_date_stacked_day_month">
7
- <%= pb_rails("caption", props: { text: object.month }) %>
8
- <%= pb_rails("title", props: { text: object.day , size: object.title_size }) do %>
9
- <% end %>
10
- </div>
11
- <%= pb_rails("caption", props: { text: object.year, size:"xs" }) %>
6
+ <% if object.bold == false %>
7
+
8
+ <div class="pb_date_stacked_day_month">
9
+ <%= pb_rails("caption", props: { text: object.month }) %>
10
+ <%= pb_rails("title", props: { text: object.day , size: object.title_size }) do %><% end %>
11
+ <%= pb_rails("caption", props: { text: object.year, size:"xs" }) %>
12
+ </div>
13
+
14
+ <% else %>
15
+ <div class="pb_date_stacked_day_month">
16
+ <%= pb_rails("title", props: { text: object.month, size: 4 }) %>
17
+ <%= pb_rails("title", props: { text: object.day, size: 4 }) do %><% end %>
18
+ <%= pb_rails("title", props: { text: object.year, size:4 }) %>
19
+
20
+ </div>
21
+
22
+ <% end %>
12
23
 
13
24
  <% end %>
@@ -5,36 +5,35 @@ module Playbook
5
5
  class DateStacked < Playbook::KitBase
6
6
  prop :date, type: Playbook::Props::Date, required: true
7
7
  prop :align, type: Playbook::Props::Enum,
8
- values: %w[left center right],
9
- default: "left"
8
+ values: %w[left center right],
9
+ default: "left"
10
10
  prop :size, type: Playbook::Props::Enum,
11
11
  values: %w[sm md],
12
12
  default: "sm"
13
13
  prop :reverse, type: Playbook::Props::Boolean,
14
- default: false
14
+ default: false
15
15
  prop :dark, type: Playbook::Props::Boolean,
16
16
  default: false
17
+ prop :bold, type: Playbook::Props::Boolean,
18
+ default: false
17
19
 
18
20
  def classname
19
- generate_classname("pb_date_stacked_kit", align, size, reverse_class, dark_class)
21
+ generate_classname("pb_date_stacked_kit", align, size, bold, reverse_class, dark_class)
20
22
  end
21
23
 
22
24
  def title_size
23
- size == "md" ? 3 : 4
25
+ size == "md" ? 3: 4
24
26
  end
25
27
 
26
28
  def day
27
29
  day = Playbook::PbKit::PbDateTime.new(date)
28
30
  content_tag(:time, datetime: day.to_iso) do
29
- day.to_day.to_s
31
+ "#{day.to_day}"
30
32
  end
31
33
  end
32
34
 
33
35
  def month
34
- month = Playbook::PbKit::PbDateTime.new(date)
35
- content_tag(:time, datetime: month.to_iso) do
36
- month.to_month.to_s
37
- end
36
+ pb_date_time.to_month.capitalize
38
37
  end
39
38
 
40
39
  def year
@@ -42,13 +41,22 @@ module Playbook
42
41
  year = Playbook::PbKit::PbDateTime.new(date).to_year.to_i
43
42
  if current_year != year
44
43
  content_tag(:time, datetime: year) do
45
- year.to_s
44
+ "#{year}"
46
45
  end
46
+ else
47
47
  end
48
48
  end
49
49
 
50
+ def bold_class
51
+ bold ? "bold" : nil
52
+ end
53
+
50
54
  private
51
55
 
56
+ def pb_date_time
57
+ Playbook::PbKit::PbDateTime.new(date)
58
+ end
59
+
52
60
  def reverse_class
53
61
  reverse ? "reverse" : nil
54
62
  end
@@ -56,6 +64,7 @@ module Playbook
56
64
  def dark_class
57
65
  dark ? "dark" : nil
58
66
  end
67
+
59
68
  end
60
69
  end
61
70
  end
@@ -0,0 +1,5 @@
1
+ <%= pb_rails("date_stacked", props: { date: DateTime.now, align: "left", bold: true }) %>
2
+ <br>
3
+ <%= pb_rails("date_stacked", props: { date: Date.new(2018, 03, 20), align: "center", bold: true }) %>
4
+ <br>
5
+ <%= pb_rails("date_stacked", props: { date: DateTime.now, align: "right", bold: true }) %>
@@ -0,0 +1,38 @@
1
+ import React from 'react'
2
+ import DateStacked from '../_date_stacked.jsx'
3
+
4
+ const DateStackedBold = (props) => {
5
+ return (
6
+ <div>
7
+ <DateStacked
8
+ align="left"
9
+ bold
10
+ date={new Date()}
11
+ {...props}
12
+ />
13
+
14
+ <br />
15
+
16
+ <DateStacked
17
+ align="center"
18
+ bold
19
+ date={new Date('20 Mar 2018')}
20
+ {...props}
21
+ />
22
+
23
+ <br />
24
+
25
+ <DateStacked
26
+ align="right"
27
+ bold
28
+ date={new Date()}
29
+ {...props}
30
+ />
31
+
32
+ <br />
33
+
34
+ </div>
35
+ )
36
+ }
37
+
38
+ export default DateStackedBold
@@ -6,10 +6,12 @@ examples:
6
6
  - date_stacked_reverse: Day & Month Reverse
7
7
  - date_stacked_sizes: Sizes
8
8
  - date_stacked_align: Alignment
9
+ - date_stacked_bold: Bold
10
+
9
11
 
10
12
  react:
11
13
  - date_stacked_default: Default
12
14
  - date_stacked_not_current_year: Not Current Year
13
15
  - date_stacked_reverse: Day & Month Reverse
14
16
  - date_stacked_sizes: Sizes
15
- - date_stacked_align: Alignment
17
+ - date_stacked_bold: Bold
@@ -1,3 +1,4 @@
1
+ export { default as DateStackedBold } from './_date_stacked_bold.jsx'
1
2
  export { default as DateStackedDefault } from './_date_stacked_default.jsx'
2
3
  export { default as DateStackedNotCurrentYear } from './_date_stacked_not_current_year.jsx'
3
4
  export { default as DateStackedReverse } from './_date_stacked_reverse.jsx'
@@ -1,43 +1,59 @@
1
+
1
2
  /* @flow */
2
3
 
3
4
  import React from 'react'
4
- import { DateStacked, Flex, FlexItem, TimeStacked } from '../'
5
- import { buildDataProps } from '../utilities/props'
6
- import { globalProps } from '../utilities/globalProps.js'
5
+ import { buildCss } from '../utilities/props'
6
+ import { deprecatedProps, globalProps } from '../utilities/globalProps.js'
7
+
8
+ import { DateStacked, Flex, FlexItem, SectionSeparator, TimeStacked } from '../'
7
9
 
8
10
  type DateTimeStackedProps = {
9
- data?: string,
10
11
  id?: string,
11
- date: date,
12
+ date: string,
13
+ datetime: string,
12
14
  dark: boolean,
15
+ timeZone?: string,
13
16
  }
14
17
 
15
18
  const DateTimeStacked = (props: DateTimeStackedProps) => {
16
- const { date, data = {}, dark } = props,
17
- dataProps = buildDataProps(data)
19
+ if (props.date) deprecatedProps('Date Time Stacked', ['date'])
20
+
21
+ const {
22
+ date,
23
+ datetime,
24
+ dark,
25
+ timeZone = 'America/New_York',
26
+ } = props
27
+
28
+ const classes = buildCss('pb_date_time_stacked_kit', globalProps(props))
18
29
 
19
30
  return (
20
31
  <Flex
21
- className={globalProps(props)}
22
- orientation="row"
23
- vertical="center"
24
- {...dataProps}
32
+ inline="flex-container"
33
+ vertical="stretch"
34
+ {...props}
25
35
  >
26
36
  <FlexItem>
27
37
  <DateStacked
28
38
  align="right"
39
+ bold
29
40
  dark={dark}
30
- date={date}
31
- reverse
32
- size="sm"
41
+ date={date || datetime}
42
+ timeZone={timeZone}
33
43
  />
34
44
  </FlexItem>
45
+
46
+ <SectionSeparator
47
+ className="date-time-padding"
48
+ orientation="vertical"
49
+ />
35
50
  <FlexItem>
36
51
  <TimeStacked
37
- className="pb_date_time_stacked_kit"
52
+ className={classes}
38
53
  dark={dark}
54
+ date={date || datetime}
39
55
  tag="caption"
40
- time={date}
56
+ timeZone={timeZone}
41
57
  />
42
58
  </FlexItem>
43
59
  </Flex>
@@ -1,6 +1,25 @@
1
- @import "../pb_title/title";
2
- @import "../pb_body/body";
1
+ [class^=pb_date_time_stacked] {
2
+
3
+ [class^=padding_month] {
4
+ padding-bottom: ($space_xs + 2) !important;
5
+ }
6
+
7
+ [class^=padding_day] {
8
+ padding-bottom: ($space_xs + 2) !important;
9
+ }
10
+
11
+ &[class*=_dark] {
12
+ & > * [class^=pb_title_kit] {
13
+ color: $text_dk_default;
14
+ }
15
+ & > * [class^=pb_caption_kit] {
16
+ color: $text_dk_light;
17
+ }
18
+ }
3
19
 
4
- .pb_date_time_stacked_kit {
5
- padding-left: $space-xs;
6
20
  }
21
+ .date-time-padding {
22
+ padding-right: ($space_xs / 2);
23
+ padding-left: ($space_xs / 2);
24
+ }
25
+
@@ -1,13 +1,17 @@
1
1
  <%= content_tag(:div,
2
2
  id: object.id,
3
3
  data: object.data,
4
- class: object.classname) do %>
5
- <%= pb_rails("flex", props: { orientation: "row", vertical: "center" }) do %>
6
- <%= pb_rails("flex/flex_item") do %>
7
- <%= pb_rails("date_stacked", props: { align: "right", date: object.date, reverse: true, size: "sm", dark: object.dark }) %>
4
+ class: object.classname,
5
+ aria: object.aria) do %>
6
+
7
+ <%= pb_rails("flex", props: {classname: "flex-container", vertical: "stretch"}) do %>
8
+ <%= pb_rails("body", props: {classname: "flex-item"}) do %>
9
+ <%= pb_rails("date_stacked", props: { date: object.date_time_value, size: "sm", align: "right", bold: true, dark: object.dark }) %>
8
10
  <% end %>
9
- <%= pb_rails("flex/flex_item") do %>
10
- <%= pb_rails("time_stacked", props: { classname: "pb_date_time_stacked_kit", time: object.date, tag: "caption" }) %>
11
+ <%= pb_rails("section_separator", props: { orientation: "vertical", classname: "date-time-padding" }) %>
12
+ <%= pb_rails("body", props: {classname: "flex-item"}) do %>
13
+ <%= pb_rails("time_stacked", props: { time: object.date_time_value, dark: object.dark, timezone: object.timezone }) %>
11
14
  <% end %>
12
- <% end %>
13
- <% end %>
15
+ <% end %>
16
+
17
+ <% end %>
@@ -3,10 +3,17 @@
3
3
  module Playbook
4
4
  module PbDateTimeStacked
5
5
  class DateTimeStacked < Playbook::KitBase
6
- prop :date, type: Playbook::Props::Date,
6
+ prop :date, deprecated: true
7
+ prop :date_time, type: Playbook::Props::Date,
7
8
  default: ::DateTime.current
8
9
  prop :dark, type: Playbook::Props::Boolean,
9
10
  default: false
11
+ prop :timezone, type: Playbook::Props::String,
12
+ default: "America/New_York"
13
+
14
+ def date_time_value
15
+ date || date_time
16
+ end
10
17
  end
11
18
  end
12
- end
19
+ end
@@ -0,0 +1,35 @@
1
+ import { ensureAccessible, renderKit } from '../utilities/test-utils'
2
+ import { DateTimeStacked } from '../'
3
+
4
+ /* eslint-disable jsx-control-statements/jsx-jcs-no-undef */
5
+
6
+ const props = {
7
+ data: { testid: 'datetimestacked' },
8
+ datetime: new Date('Wed Mar 31 2021 12:00:00 GMT-0500'),
9
+ }
10
+
11
+ test('Kit renders date time', () => {
12
+ const kit = renderKit(DateTimeStacked, props)
13
+ expect(kit).toBeInTheDocument()
14
+ })
15
+
16
+ it('Should be accessible', async () => {
17
+ ensureAccessible(DateTimeStacked, props)
18
+ })
19
+
20
+ test('renders time in default timezone', () => {
21
+ const kit = renderKit(DateTimeStacked, props)
22
+ expect(kit).toHaveTextContent(/Mar311:00pEDT/i)
23
+ })
24
+
25
+ test('renders time in timezone', () => {
26
+ props.timeZone = 'Asia/Tokyo'
27
+ const kit = renderKit(DateTimeStacked, props)
28
+ expect(kit).toHaveTextContent(/Mar312:00aJST/i)
29
+ })
30
+
31
+ test('renders time in timezone', () => {
32
+ props.timeZone = 'America/Denver'
33
+ const kit = renderKit(DateTimeStacked, props)
34
+ expect(kit).toHaveTextContent(/Mar3111:00aMDT/i)
35
+ })
@@ -1 +1,8 @@
1
- <%= pb_rails("date_time_stacked") %>
1
+ <%= pb_rails("date_time_stacked", props: { date_time: DateTime.now }) %>
2
+ <br>
3
+ <%= pb_rails("date_time_stacked", props: { date_time: Date.new(2018, 03, 20) }) %>
4
+ <br>
5
+ <%= pb_rails("date_time_stacked", props: { date_time: DateTime.now, timezone: "Asia/Tokyo" }) %>
6
+ <br>
7
+ <%= pb_rails("date_time_stacked", props: { date_time: DateTime.now, timezone: "America/Denver" }) %>
8
+
@@ -4,10 +4,28 @@ import { DateTimeStacked } from '../../'
4
4
  const DateTimeStackedDefault = (props) => (
5
5
  <div>
6
6
  <DateTimeStacked
7
- date={new Date()}
7
+ datetime={new Date()}
8
8
  {...props}
9
9
  />
10
+ <br />
11
+ <DateTimeStacked
12
+ datetime={new Date()}
13
+ timeZone="Asia/Tokyo"
14
+
15
+ {...props}
16
+ />
17
+ <br />
18
+ <DateTimeStacked
19
+ datetime={new Date()}
20
+ timeZone="America/Denver"
21
+
22
+ {...props}
23
+ />
24
+
10
25
  </div>
11
26
  )
12
27
 
13
28
  export default DateTimeStackedDefault
29
+
30
+ // *Development Note* - We are reviewing this kit for a potential name change due to naming collisions when `new Date()` is used.
31
+ // To avoid this bug, please use name spacing as shown in the code examples. ie `import { Date as AliasedComponentName } from '../../'
@@ -9,7 +9,7 @@ import { Dialog } from '../'
9
9
  - https://jestjs.io/docs/en/using-matchers
10
10
  */
11
11
 
12
- test('generated scaffold test - update me', () => {
12
+ test('Kit renders Dialog', () => {
13
13
  const testId = 'test1'
14
14
 
15
15
  render(
@@ -7,9 +7,9 @@ module Playbook
7
7
  values: %w[lg sm],
8
8
  default: "lg"
9
9
  prop :widths, type: Playbook::Props::NumberArray,
10
- default: [1]
10
+ default: [1]
11
11
  prop :colors, type: Playbook::Props::Array,
12
- default: []
12
+ default: []
13
13
 
14
14
  def classname
15
15
  generate_classname("pb_distribution_bar", size)
@@ -3,7 +3,7 @@
3
3
  module Playbook
4
4
  module PbFilter
5
5
  class Filter < Playbook::KitBase
6
- prop :filters, type: Playbook::Props::HashArray, default: [{ name: "" }]
6
+ prop :filters, type: Playbook::Props::HashArray, default: [{name: ''}]
7
7
  prop :sort_menu, type: Playbook::Props::HashArray, default: [{}]
8
8
  prop :results, type: Playbook::Props::Numeric
9
9
  prop :template, type: Playbook::Props::Enum,
@@ -8,7 +8,7 @@ module Playbook
8
8
  default: "neutral"
9
9
  prop :text, type: Playbook::Props::String
10
10
  prop :multi_line, type: Playbook::Props::Boolean,
11
- default: false
11
+ default: false
12
12
  prop :closeable, type: Playbook::Props::Boolean,
13
13
  default: false
14
14
 
@@ -2,11 +2,12 @@
2
2
 
3
3
  import React from 'react'
4
4
  import classnames from 'classnames'
5
- import { buildCss } from '../utilities/props'
5
+ import { buildCss, buildDataProps } from '../utilities/props'
6
6
  import { globalProps } from '../utilities/globalProps.js'
7
7
  type FlexProps = {
8
8
  children: array<React.ReactNode> | React.ReactNode,
9
9
  className?: string,
10
+ data?: object,
10
11
  horizontal?: "left" | "center" | "right" | "stretch" | "none",
11
12
  justify?: "start" | "center" | "end" | "around" | "between" | "evenly" | "none",
12
13
  id?: string,
@@ -27,6 +28,7 @@ const Flex = (props: FlexProps) => {
27
28
  align = 'none',
28
29
  children,
29
30
  className,
31
+ data = {},
30
32
  inline = false,
31
33
  horizontal = 'left',
32
34
  justify = 'none',
@@ -51,6 +53,8 @@ const Flex = (props: FlexProps) => {
51
53
  const columnGapClass = columnGap !== 'none' ? `columnGap_${columnGap}` : ''
52
54
  const wrapClass = wrap === true ? 'wrap' : ''
53
55
  const reverseClass = reverse === true ? 'reverse' : ''
56
+ const dataProps = buildDataProps(data)
57
+
54
58
  return (
55
59
  <div
56
60
  className={classnames(
@@ -70,6 +74,7 @@ const Flex = (props: FlexProps) => {
70
74
  globalProps(props),
71
75
  className
72
76
  )}
77
+ {...dataProps}
73
78
  >
74
79
  {children}
75
80
  </div>
@@ -74,8 +74,8 @@ module Playbook
74
74
  def horizontal_class
75
75
  if orientation == "row"
76
76
  "justify_content_#{horizontal}"
77
- elsif align == "none"
78
- "align_items_#{horizontal}"
77
+ else
78
+ "align_items_#{horizontal}" if align == "none"
79
79
  end
80
80
  end
81
81
 
@@ -102,8 +102,8 @@ module Playbook
102
102
  def vertical_class
103
103
  if orientation == "row"
104
104
  "align_items_#{vertical}"
105
- elsif justify == "none"
106
- "justify_content_#{vertical}"
105
+ else
106
+ "justify_content_#{vertical}" if justify == "none"
107
107
  end
108
108
  end
109
109
 
@@ -23,7 +23,7 @@ module Playbook
23
23
  class: classname,
24
24
  data: data,
25
25
  validate: validate,
26
- }.merge(prop(:options) || prop(:form_system_options) || {})
26
+ }.merge(prop(:options) || prop(:form_system_options) || { })
27
27
  end
28
28
  end
29
29
  end
@@ -24,6 +24,7 @@ module Playbook
24
24
 
25
25
  prop :value, type: Playbook::Props::Numeric
26
26
 
27
+
27
28
  def classname
28
29
  generate_classname("pb_icon_stat_value_kit", orientation, size, variant)
29
30
  end
@@ -23,12 +23,11 @@ module Playbook
23
23
  end
24
24
 
25
25
  def active_step(step)
26
- step <= active ? "_active" : "_inactive"
26
+ step <= active ? "_active" : "_inactive"
27
27
  end
28
28
 
29
29
  def aria_attributes
30
30
  return aria if aria.present?
31
-
32
31
  { hidden: true }
33
32
  end
34
33
 
@@ -9,7 +9,7 @@ module Playbook
9
9
  prop :icon, type: Playbook::Props::Boolean,
10
10
  default: false
11
11
  prop :show_icon, type: Playbook::Props::Boolean,
12
- default: false
12
+ default: false
13
13
  prop :variant, type: Playbook::Props::Enum,
14
14
  values: %w[default tracker],
15
15
  default: "default"
@@ -10,7 +10,7 @@ module Playbook
10
10
  prop :icon, required: false, default: "check"
11
11
 
12
12
  def name_icon
13
- icon || "check"
13
+ icon ? icon : "check"
14
14
  end
15
15
 
16
16
  def classname
@@ -10,7 +10,7 @@ module Playbook
10
10
  default: false
11
11
 
12
12
  prop :sticky, type: Playbook::Props::Boolean,
13
- default: false
13
+ default: false
14
14
 
15
15
  prop :value
16
16
  prop :template
@@ -41,7 +41,7 @@ module Playbook
41
41
  sticky: sticky,
42
42
  value: value,
43
43
  template: template,
44
- placeholder: placeholder,
44
+ placeholder: placeholder
45
45
  }
46
46
  end
47
47
  end
@@ -38,9 +38,13 @@ const SectionSeparator = (props: SectionSeparatorProps) => {
38
38
  className={classes}
39
39
  id={id}
40
40
  >
41
- <span>
42
- <Caption text={text} />
43
- </span>
41
+
42
+ <If condition={text}>
43
+ <span>
44
+ <Caption text={text} />
45
+ </span>
46
+ </If>
47
+
44
48
  </div>
45
49
  )
46
50
  }
@@ -22,7 +22,7 @@ module Playbook
22
22
  prop :value
23
23
 
24
24
  prop :input_options, type: Playbook::Props::Hash,
25
- default: {}
25
+ default: {}
26
26
 
27
27
  def classname
28
28
  generate_classname("pb_selectable_card_icon_kit", checked_class, enabled_disabled_class)
@@ -20,7 +20,7 @@ module Playbook
20
20
  prop :value
21
21
 
22
22
  prop :input_options, type: Playbook::Props::Hash,
23
- default: {}
23
+ default: {}
24
24
 
25
25
  # Conditional rendering for input field
26
26
  prop :inputs, type: Playbook::Props::String,
@@ -21,14 +21,18 @@ module Playbook
21
21
  end
22
22
 
23
23
  def returned_icon
24
- icon || case change
25
- when "increase"
26
- "arrow-up"
27
- when "decrease"
28
- "arrow-down"
29
- else
30
- false
31
- end
24
+ if icon
25
+ icon
26
+ else
27
+ case change
28
+ when "increase"
29
+ "arrow-up"
30
+ when "decrease"
31
+ "arrow-down"
32
+ else
33
+ false
34
+ end
35
+ end
32
36
  end
33
37
 
34
38
  def classname
@@ -3,10 +3,10 @@
3
3
  data: object.data,
4
4
  class: object.classname) do %>
5
5
 
6
- <%= pb_rails("body", props: { color: "light", classname: "pb_time_stacked time-spacing" }) do %>
6
+ <%= pb_rails("body", props: { color: "light", dark: object.dark, classname: "pb_time_stacked time-spacing" }) do %>
7
7
  <time>
8
8
  <%= object.format_time_string %>
9
- <%= pb_rails("caption", props: { color: "light", tag: "span", text: object.pb_date_time.to_timezone.upcase, classname: "pb_time_stacked" }) %>
9
+ <%= pb_rails("caption", props: { color: "light", tag: "span", text: object.pb_date_time.to_timezone.upcase, dark: object.dark, classname: "pb_time_stacked" }) %>
10
10
  </time>
11
11
  <% end %>
12
12
  <% end %>
@@ -20,7 +20,7 @@ module Playbook
20
20
  pb_tooltip_position: position,
21
21
  pb_tooltip_trigger_element_selector: trigger_element_selector,
22
22
  pb_tooltip_trigger_element_id: trigger_element_id,
23
- pb_tooltip_tooltip_id: tooltip_id
23
+ pb_tooltip_tooltip_id: tooltip_id,
24
24
  )
25
25
  end
26
26
 
@@ -15,7 +15,7 @@ module Playbook
15
15
  end
16
16
 
17
17
  def display_badge
18
- @display_badge ||= begin
18
+ @badge ||= begin
19
19
  badge_path = File.join(
20
20
  File.dirname(self.class.source_location),
21
21
  "badges",
@@ -16,7 +16,7 @@ module Playbook
16
16
  button(value, props: props)
17
17
  end
18
18
 
19
- def button(_value = nil, props:)
19
+ def button(value = nil, props:)
20
20
  view_context.content_tag(:li) do
21
21
  view_context.pb_rails("button", props: props)
22
22
  end
@@ -28,4 +28,4 @@ module Playbook
28
28
  end
29
29
  end
30
30
  end
31
- end
31
+ end
@@ -3,9 +3,9 @@
3
3
  module Playbook
4
4
  module Forms
5
5
  class Builder
6
- def collection_select(name, collection, value_method, text_method, options = {}, html_options = {}, props: {})
6
+ def collection_select(name, collection, value_method, text_method, options = {}, html_options = {}, props: {} )
7
7
  props[:label] = @template.label(@object_name, name) if props[:label] == true
8
- options[:skip_default_ids] = false unless options.key?(:skip_default_ids)
8
+ options[:skip_default_ids] = false unless options.has_key?(:skip_default_ids)
9
9
  options[:prompt] = props[:blank_selection] || ""
10
10
  html_options[:required] = "required" if props[:required]
11
11
  input = super(name, collection, value_method, text_method, options, html_options)
@@ -5,7 +5,7 @@ module Playbook
5
5
  class Builder
6
6
  def select(name, choices = nil, options = {}, html_options = {}, props: {}, &block)
7
7
  props[:label] = @template.label(@object_name, name) if props[:label] == true
8
- options[:skip_default_ids] = false unless options.key?(:skip_default_ids)
8
+ options[:skip_default_ids] = false unless options.has_key?(:skip_default_ids)
9
9
  options[:prompt] = props[:blank_selection] || ""
10
10
  html_options[:required] = "required" if props[:required]
11
11
  input = super(name, choices, options, html_options, &block)
@@ -8,7 +8,7 @@ module Playbook
8
8
  end
9
9
 
10
10
  def initialize
11
- @cache = Hash.new do |_cache, kit_name|
11
+ @cache = Hash.new do |cache, kit_name|
12
12
  is_subkit = kit_name.match(%r{[/\\]})
13
13
  folder = is_subkit ? kit_name.split("/")[0] : kit_name
14
14
  item = is_subkit ? kit_name.split("/")[-1] : kit_name
@@ -1,6 +1,4 @@
1
- # frozen_string_literal: true
2
-
3
- require "redcarpet"
1
+ require 'redcarpet'
4
2
 
5
3
  module Playbook
6
4
  module Markdown
@@ -22,7 +20,7 @@ module Playbook
22
20
  markdown.render(template).html_safe
23
21
  end
24
22
 
25
- private
23
+ private
26
24
 
27
25
  def md_options
28
26
  @md_options ||= {
@@ -16,7 +16,7 @@ module Playbook
16
16
  example_key: example.keys.first,
17
17
  show_code: show_code,
18
18
  type: type,
19
- dark: dark_mode,
19
+ dark: dark_mode
20
20
  }
21
21
  end.join.yield_self(&method(:raw))
22
22
  end
@@ -41,12 +41,10 @@ module Playbook
41
41
  raw("<div class='pb--docItem'>" + display_kits.join("</div><div class='pb--docItem'>") + "</div>")
42
42
  end
43
43
 
44
- # rubocop:disable Naming/AccessorMethodName
45
44
  def get_kits
46
45
  menu = YAML.load_file(Playbook::Engine.root.join("app/pb_kits/playbook/data/menu.yml"))
47
46
  menu["kits"]
48
47
  end
49
- # rubocop:enable Naming/AccessorMethodName
50
48
 
51
49
  def render_pb_doc_kit(kit, type, limit_examples, code = true, dark_mode = false)
52
50
  title = pb_doc_render_clickable_title(kit, type)
@@ -80,7 +78,7 @@ module Playbook
80
78
  else
81
79
  kit_show_path(kit)
82
80
  end
83
- # FIXME: this is here because this helper generates a link for playbook website,
81
+ # FIXME this is here because this helper generates a link for playbook website,
84
82
  # but shouldn't do anything when used elsewhere
85
83
  rescue
86
84
  puts "Kit Path Not Avaliable"
@@ -36,6 +36,9 @@ module Playbook
36
36
  self.class.props[name].value values[name]
37
37
  end
38
38
 
39
+ attr_accessor :values
40
+ private :values, :values=
41
+
39
42
  included do
40
43
  class_attribute :props, default: {}
41
44
  end
@@ -47,7 +50,7 @@ module Playbook
47
50
  end
48
51
 
49
52
  def prop(name, type: Playbook::Props::String, **options)
50
- self.props = props.merge(name => type.new(options.merge(name: name, kit: self)))
53
+ self.props = self.props.merge(name => type.new(options.merge(name: name, kit: self)))
51
54
 
52
55
  define_method(name) { prop(name) }
53
56
  end
@@ -20,7 +20,7 @@ module Playbook
20
20
  end
21
21
 
22
22
  def validate!(input_value)
23
- warn("#{kit} Kit: The prop '#{name}' is deprecated and will be removed in a future release!") if deprecated && input_value # TODO: add some color for pop
23
+ warn("#{kit} Kit: The prop '#{name}' is deprecated and will be removed in a future release!") if deprecated && input_value #TODO: add some color for pop
24
24
 
25
25
  raise(Playbook::Props::Error, "#{kit} prop '#{name}' of type #{inspect.class} is required and needs a value") if required && input_value.nil?
26
26
 
@@ -40,6 +40,7 @@ module Playbook
40
40
 
41
41
  def log(message)
42
42
  logger = ActiveSupport::Logger.new(STDOUT)
43
+ log_formatter = ::Logger::Formatter.new
43
44
  @logger ||= ActiveSupport::TaggedLogging.new(logger)
44
45
  @logger.log(0, message)
45
46
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Playbook
4
- VERSION = "9.10.0.pre.alpha2"
4
+ VERSION = "9.10.0.pre.date.time.stacked.1"
5
5
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: playbook_ui
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.10.0.pre.alpha2
4
+ version: 9.10.0.pre.date.time.stacked.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Power UX
8
8
  - Power Devs
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-04-26 00:00:00.000000000 Z
12
+ date: 2021-04-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack
@@ -17,7 +17,7 @@ dependencies:
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: 5.2.4.5
20
+ version: 5.2.4.4
21
21
  - - "<"
22
22
  - !ruby/object:Gem::Version
23
23
  version: '7.0'
@@ -27,7 +27,7 @@ dependencies:
27
27
  requirements:
28
28
  - - ">="
29
29
  - !ruby/object:Gem::Version
30
- version: 5.2.4.5
30
+ version: 5.2.4.4
31
31
  - - "<"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '7.0'
@@ -37,7 +37,7 @@ dependencies:
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 5.2.4.5
40
+ version: 5.2.4.4
41
41
  - - "<"
42
42
  - !ruby/object:Gem::Version
43
43
  version: '7.0'
@@ -47,7 +47,7 @@ dependencies:
47
47
  requirements:
48
48
  - - ">="
49
49
  - !ruby/object:Gem::Version
50
- version: 5.2.4.5
50
+ version: 5.2.4.4
51
51
  - - "<"
52
52
  - !ruby/object:Gem::Version
53
53
  version: '7.0'
@@ -57,7 +57,7 @@ dependencies:
57
57
  requirements:
58
58
  - - ">="
59
59
  - !ruby/object:Gem::Version
60
- version: 5.2.4.5
60
+ version: 5.2.4.4
61
61
  - - "<"
62
62
  - !ruby/object:Gem::Version
63
63
  version: '7.0'
@@ -67,7 +67,7 @@ dependencies:
67
67
  requirements:
68
68
  - - ">="
69
69
  - !ruby/object:Gem::Version
70
- version: 5.2.4.5
70
+ version: 5.2.4.4
71
71
  - - "<"
72
72
  - !ruby/object:Gem::Version
73
73
  version: '7.0'
@@ -282,39 +282,39 @@ dependencies:
282
282
  - !ruby/object:Gem::Version
283
283
  version: 2.2.2
284
284
  - !ruby/object:Gem::Dependency
285
- name: rspec-html-matchers
285
+ name: rspec-rails
286
286
  requirement: !ruby/object:Gem::Requirement
287
287
  requirements:
288
- - - '='
288
+ - - "~>"
289
289
  - !ruby/object:Gem::Version
290
- version: 0.9.1
290
+ version: '3.8'
291
+ - - ">="
292
+ - !ruby/object:Gem::Version
293
+ version: 3.8.0
291
294
  type: :development
292
295
  prerelease: false
293
296
  version_requirements: !ruby/object:Gem::Requirement
294
297
  requirements:
295
- - - '='
298
+ - - "~>"
296
299
  - !ruby/object:Gem::Version
297
- version: 0.9.1
298
- - !ruby/object:Gem::Dependency
299
- name: rspec-rails
300
- requirement: !ruby/object:Gem::Requirement
301
- requirements:
300
+ version: '3.8'
302
301
  - - ">="
303
302
  - !ruby/object:Gem::Version
304
303
  version: 3.8.0
305
- - - "~>"
304
+ - !ruby/object:Gem::Dependency
305
+ name: rspec-html-matchers
306
+ requirement: !ruby/object:Gem::Requirement
307
+ requirements:
308
+ - - '='
306
309
  - !ruby/object:Gem::Version
307
- version: '3.8'
310
+ version: 0.9.1
308
311
  type: :development
309
312
  prerelease: false
310
313
  version_requirements: !ruby/object:Gem::Requirement
311
314
  requirements:
312
- - - ">="
313
- - !ruby/object:Gem::Version
314
- version: 3.8.0
315
- - - "~>"
315
+ - - '='
316
316
  - !ruby/object:Gem::Version
317
- version: '3.8'
317
+ version: 0.9.1
318
318
  - !ruby/object:Gem::Dependency
319
319
  name: rubocop
320
320
  requirement: !ruby/object:Gem::Requirement
@@ -809,6 +809,8 @@ files:
809
809
  - app/pb_kits/playbook/pb_date_stacked/date_stacked.rb
810
810
  - app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_align.html.erb
811
811
  - app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_align.jsx
812
+ - app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_bold.html.erb
813
+ - app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_bold.jsx
812
814
  - app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_default.html.erb
813
815
  - app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_default.jsx
814
816
  - app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_not_current_year.html.erb
@@ -838,6 +840,7 @@ files:
838
840
  - app/pb_kits/playbook/pb_date_time_stacked/_date_time_stacked.scss
839
841
  - app/pb_kits/playbook/pb_date_time_stacked/date_time_stacked.html.erb
840
842
  - app/pb_kits/playbook/pb_date_time_stacked/date_time_stacked.rb
843
+ - app/pb_kits/playbook/pb_date_time_stacked/date_time_stacked.test.js
841
844
  - app/pb_kits/playbook/pb_date_time_stacked/docs/_date_time_stacked_default.html.erb
842
845
  - app/pb_kits/playbook/pb_date_time_stacked/docs/_date_time_stacked_default.jsx
843
846
  - app/pb_kits/playbook/pb_date_time_stacked/docs/example.yml
@@ -2123,7 +2126,7 @@ homepage: http://playbook.powerapp.cloud
2123
2126
  licenses:
2124
2127
  - MIT
2125
2128
  metadata: {}
2126
- post_install_message:
2129
+ post_install_message:
2127
2130
  rdoc_options: []
2128
2131
  require_paths:
2129
2132
  - lib
@@ -2138,8 +2141,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
2138
2141
  - !ruby/object:Gem::Version
2139
2142
  version: 1.3.1
2140
2143
  requirements: []
2141
- rubygems_version: 3.0.3
2142
- signing_key:
2144
+ rubyforge_project:
2145
+ rubygems_version: 2.7.3
2146
+ signing_key:
2143
2147
  specification_version: 4
2144
2148
  summary: Playbook Design System
2145
2149
  test_files: []