playbook_ui 7.3.0.pre.alpha12 → 7.4.0.pre.alpha5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (118) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/github-brands.svg +1 -0
  3. data/app/assets/images/landing-background.svg +36 -0
  4. data/app/assets/images/landing-image.svg +203 -0
  5. data/app/assets/images/{pb.logo.svg → pb-logo.svg} +2 -2
  6. data/app/assets/images/pb-white-logo.svg +15 -0
  7. data/app/pb_kits/playbook/_playbook.scss +3 -0
  8. data/app/pb_kits/playbook/data/menu.yml +2 -1
  9. data/app/pb_kits/playbook/index.js +2 -0
  10. data/app/pb_kits/playbook/pb_background/_background.html.erb +14 -0
  11. data/app/pb_kits/playbook/pb_background/_background.jsx +63 -0
  12. data/app/pb_kits/playbook/pb_background/_background.scss +35 -0
  13. data/app/pb_kits/playbook/pb_background/background.rb +35 -0
  14. data/app/pb_kits/playbook/pb_background/docs/_background_dark.html.erb +3 -0
  15. data/app/pb_kits/playbook/pb_background/docs/_background_dark.jsx +13 -0
  16. data/app/pb_kits/playbook/pb_background/docs/_background_gradient.html.erb +3 -0
  17. data/app/pb_kits/playbook/pb_background/docs/_background_gradient.jsx +13 -0
  18. data/app/pb_kits/playbook/pb_background/docs/_background_image.html.erb +13 -0
  19. data/app/pb_kits/playbook/pb_background/docs/_background_image.jsx +30 -0
  20. data/app/pb_kits/playbook/pb_background/docs/_background_light.html.erb +3 -0
  21. data/app/pb_kits/playbook/pb_background/docs/_background_light.jsx +13 -0
  22. data/app/pb_kits/playbook/pb_background/docs/_background_white.html.erb +3 -0
  23. data/app/pb_kits/playbook/pb_background/docs/_background_white.jsx +14 -0
  24. data/app/pb_kits/playbook/pb_background/docs/_description.md +1 -0
  25. data/app/pb_kits/playbook/pb_background/docs/example.yml +15 -0
  26. data/app/pb_kits/playbook/pb_background/docs/index.js +6 -0
  27. data/app/pb_kits/playbook/pb_collapsible/_collapsible.html.erb +1 -1
  28. data/app/pb_kits/playbook/pb_collapsible/_collapsible.jsx +50 -107
  29. data/app/pb_kits/playbook/pb_collapsible/_collapsible.scss +1 -1
  30. data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleContent.jsx +40 -0
  31. data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleMain.jsx +58 -0
  32. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_dark.html.erb +1 -1
  33. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_default.html.erb +1 -1
  34. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_default.jsx +12 -10
  35. data/app/pb_kits/playbook/pb_collapsible/index.js +2 -2
  36. data/app/pb_kits/playbook/pb_date/_date.html.erb +64 -8
  37. data/app/pb_kits/playbook/pb_date/_date.jsx +115 -66
  38. data/app/pb_kits/playbook/pb_date/_date.scss +30 -0
  39. data/app/pb_kits/playbook/pb_date/date.rb +20 -9
  40. data/app/pb_kits/playbook/pb_date/docs/_date_alignment.html.erb +24 -0
  41. data/app/pb_kits/playbook/pb_date/docs/_date_alignment.jsx +35 -0
  42. data/app/pb_kits/playbook/pb_date/docs/_date_default.html.erb +21 -6
  43. data/app/pb_kits/playbook/pb_date/docs/_date_default.jsx +43 -12
  44. data/app/pb_kits/playbook/pb_date/docs/_date_variants.html.erb +27 -0
  45. data/app/pb_kits/playbook/pb_date/docs/_date_variants.jsx +43 -0
  46. data/app/pb_kits/playbook/pb_date/docs/example.yml +4 -0
  47. data/app/pb_kits/playbook/pb_date/docs/index.js +2 -0
  48. data/app/pb_kits/playbook/pb_date_picker/_date_picker.html.erb +19 -14
  49. data/app/pb_kits/playbook/pb_date_time/_date_time.html.erb +31 -0
  50. data/app/pb_kits/playbook/pb_date_time/_date_time.jsx +73 -0
  51. data/app/pb_kits/playbook/pb_date_time/_date_time.scss +26 -0
  52. data/app/pb_kits/playbook/pb_date_time/date_time.rb +29 -0
  53. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_align.html.erb +17 -0
  54. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_align.jsx +35 -0
  55. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_default.html.erb +20 -0
  56. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_default.jsx +38 -0
  57. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_size.html.erb +26 -0
  58. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_size.jsx +75 -0
  59. data/app/pb_kits/playbook/pb_date_time/docs/_description.md +1 -0
  60. data/app/pb_kits/playbook/pb_date_time/docs/example.yml +11 -0
  61. data/app/pb_kits/playbook/pb_date_time/docs/index.js +3 -0
  62. data/app/pb_kits/playbook/pb_flex/_flex.jsx +1 -1
  63. data/app/pb_kits/playbook/pb_flex/_flex.scss +4 -0
  64. data/app/pb_kits/playbook/pb_flex/flex.rb +1 -1
  65. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +52 -1
  66. data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +1 -1
  67. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form.html.erb +1 -1
  68. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form_validate.html.erb +1 -1
  69. data/app/pb_kits/playbook/pb_form/form_builder/date_picker_field.rb +19 -1
  70. data/app/pb_kits/playbook/pb_home_address_street/home_address_street.rb +1 -1
  71. data/app/pb_kits/playbook/pb_progress_step/_progress_step.jsx +3 -1
  72. data/app/pb_kits/playbook/pb_progress_step/_progress_step.scss +13 -4
  73. data/app/pb_kits/playbook/pb_progress_step/_progress_step_item.html.erb +1 -1
  74. data/app/pb_kits/playbook/pb_progress_step/_progress_step_item.jsx +5 -7
  75. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_custom_icon.html.erb +12 -0
  76. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_tracker_click_events.jsx +48 -0
  77. data/app/pb_kits/playbook/pb_progress_step/docs/example.yml +2 -0
  78. data/app/pb_kits/playbook/pb_progress_step/docs/index.js +1 -0
  79. data/app/pb_kits/playbook/pb_progress_step/progress_step.rb +5 -3
  80. data/app/pb_kits/playbook/pb_progress_step/progress_step_item.rb +6 -0
  81. data/app/pb_kits/playbook/pb_timestamp/_timestamp.html.erb +13 -1
  82. data/app/pb_kits/playbook/pb_timestamp/_timestamp.jsx +96 -20
  83. data/app/pb_kits/playbook/pb_timestamp/_timestamp.scss +12 -1
  84. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_align.html.erb +69 -0
  85. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_align.jsx +91 -0
  86. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_default.html.erb +21 -1
  87. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_default.jsx +31 -4
  88. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed.html.erb +14 -0
  89. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed.jsx +27 -0
  90. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed_align.html.erb +54 -0
  91. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed_align.jsx +73 -0
  92. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones.html.erb +59 -0
  93. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones.jsx +74 -0
  94. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones_align.html.erb +177 -0
  95. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones_align.jsx +209 -0
  96. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated.html.erb +35 -0
  97. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated.jsx +51 -0
  98. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_align.html.erb +123 -0
  99. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_align.jsx +146 -0
  100. data/app/pb_kits/playbook/pb_timestamp/docs/example.yml +14 -0
  101. data/app/pb_kits/playbook/pb_timestamp/docs/index.js +7 -0
  102. data/app/pb_kits/playbook/pb_timestamp/timestamp.rb +67 -1
  103. data/app/pb_kits/playbook/pb_tooltip/_tooltip.scss +46 -19
  104. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_default.html.erb +46 -10
  105. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_white.html.erb +4 -4
  106. data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +3 -2
  107. data/app/pb_kits/playbook/pb_typeahead/_typeahead.jsx +14 -2
  108. data/app/pb_kits/playbook/pb_typeahead/components/ClearIndicator.jsx +20 -0
  109. data/app/pb_kits/playbook/pb_typeahead/components/MultiValue.jsx +8 -15
  110. data/app/pb_kits/playbook/pb_typeahead/components/Option.jsx +1 -6
  111. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.html.erb +10 -4
  112. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.md +20 -4
  113. data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +4 -0
  114. data/lib/playbook/version.rb +2 -1
  115. metadata +60 -6
  116. data/app/assets/images/clark.jpg +0 -0
  117. data/app/assets/images/giant.jpg +0 -0
  118. data/app/pb_kits/playbook/pb_collapsible/useToggler.js +0 -10
@@ -1,5 +1,5 @@
1
1
  <%= pb_rails("collapsible", props: { dark: true }) do %>
2
- <%= pb_rails("collapsible/collapsible_main", props: { padding: "sm", name: "dark-example" }) do %>
2
+ <%= pb_rails("collapsible/collapsible_main", props: { padding: "md", name: "dark-example" }) do %>
3
3
  <%= pb_rails("body", props: { text: "Main Section", dark: true}) %>
4
4
  <% end %>
5
5
  <%= pb_rails("collapsible/collapsible_content", props: { padding: "md" }) do %>
@@ -1,5 +1,5 @@
1
1
  <%= pb_rails("collapsible", props: { name: "default-example" }) do %>
2
- <%= pb_rails("collapsible/collapsible_main", props: { padding: "sm", name: "default-main" }) do %>
2
+ <%= pb_rails("collapsible/collapsible_main", props: { padding: "md", name: "default-main" }) do %>
3
3
  <%= pb_rails("body", props: { text: "Main Section"}) %>
4
4
  <% end %>
5
5
  <%= pb_rails("collapsible/collapsible_content", props: { padding: "md" }) do %>
@@ -2,16 +2,18 @@ import React from 'react'
2
2
  import { Collapsible } from '../..'
3
3
 
4
4
  const CollapsibleDefault = () => (
5
- <div>
6
- <Collapsible>
7
- <Collapsible.Main>
8
- <div>{'Main Section'}</div>
9
- </Collapsible.Main>
10
- <Collapsible.Content>
11
- <div>{'Lorem ipsum dolor sit amet, consectetur adipiscing elit. In vel erat sed purus hendrerit viverra. Duis et vestibulum metus. Sed consequat ut ante non vehicula. Etiam nunc massa, pharetra vel quam id, posuere rhoncus quam. Quisque imperdiet arcu enim, nec aliquet justo auctor eget. Curabitur in metus nec nunc rhoncus faucibus vitae ac elit. Nulla facilisi. Vestibulum quis pretium nulla. Nulla ut accumsan velit. Duis varius urna sed sem tempor, sit amet fermentum nibh auctor. Praesent lorem arcu, egestas non ante quis, placerat pellentesque lectus.Vestibulum lacinia ipsum quis venenatis tristique. Vivamus suscipit, libero eu fringilla egestas, orci urna commodo arcu, vel gravida turpis ipsum molestie nibh. Donec cursus eu ante sagittis ultrices. Phasellus id sagittis risus. Mauris dapibus neque faucibus, tempor ligula vel, cursus ante. Donec faucibus gravida porta. Nullam egestas est quis aliquam feugiat. Sed eget metus diam. Cras eget placerat libero.'}</div>
12
- </Collapsible.Content>
13
- </Collapsible>
14
- </div>
5
+ <Collapsible>
6
+ <Collapsible.Main>
7
+ <div>{'Main Section'}</div>
8
+ </Collapsible.Main>
9
+ <Collapsible.Content>
10
+ <div>
11
+ {
12
+ 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. In vel erat sed purus hendrerit viverra. Duis et vestibulum metus. Sed consequat ut ante non vehicula. Etiam nunc massa, pharetra vel quam id, posuere rhoncus quam. Quisque imperdiet arcu enim, nec aliquet justo auctor eget. Curabitur in metus nec nunc rhoncus faucibus vitae ac elit. Nulla facilisi. Vestibulum quis pretium nulla. Nulla ut accumsan velit. Duis varius urna sed sem tempor, sit amet fermentum nibh auctor. Praesent lorem arcu, egestas non ante quis, placerat pellentesque lectus.Vestibulum lacinia ipsum quis venenatis tristique. Vivamus suscipit, libero eu fringilla egestas, orci urna commodo arcu, vel gravida turpis ipsum molestie nibh. Donec cursus eu ante sagittis ultrices. Phasellus id sagittis risus. Mauris dapibus neque faucibus, tempor ligula vel, cursus ante. Donec faucibus gravida porta. Nullam egestas est quis aliquam feugiat. Sed eget metus diam. Cras eget placerat libero.'
13
+ }
14
+ </div>
15
+ </Collapsible.Content>
16
+ </Collapsible>
15
17
  )
16
18
 
17
19
  export default CollapsibleDefault
@@ -38,7 +38,7 @@ export default class PbCollapsible extends PbEnhancedElement {
38
38
  // Once the transition is complete, remove the inline max-height so the content can scale responsively
39
39
  window.setTimeout(() => {
40
40
  elem.style.height = ''
41
- }, 500)
41
+ }, 300)
42
42
  }
43
43
  // Hide an element
44
44
  hide(elem) {
@@ -54,7 +54,7 @@ export default class PbCollapsible extends PbEnhancedElement {
54
54
  // When the transition is complete, hide it
55
55
  window.setTimeout(() => {
56
56
  elem.classList.remove('is-visible')
57
- }, 500)
57
+ }, 300)
58
58
  }
59
59
 
60
60
  // Toggle element visibility
@@ -1,14 +1,70 @@
1
1
  <%= content_tag(:div,
2
2
  id: object.id,
3
3
  data: object.data,
4
- class: object.classname) do %>
5
- <% if object.size == "lg" %>
6
- <%= pb_rails("title", props: { text: object.lg_date, size: 3 }) %>
7
- <% elsif object.size == "sm" %>
8
- <%= pb_rails("icon", props: { icon: "calendar", fixed_width: true }) %>
9
- <%= pb_rails("title", props: { tag: "span", text: object.sm_date, size: 4 }) %>
4
+ class: object.classname,
5
+ aria: object.aria) do %>
6
+
7
+ <% if object.size == "md" %>
8
+ <!-- icon -->
9
+ <% if object.show_icon %>
10
+ <%= pb_rails("body", props: {
11
+ color: "light",
12
+ tag: "div",
13
+ }) do %>
14
+ <%= pb_rails("icon", props: { icon: "calendar-alt", fixed_width: true }) %>
15
+ <% end %>
16
+ <% end %>
17
+
18
+ <!-- day_of_week -->
19
+ <% if object.show_day_of_week %>
20
+ <%= pb_rails("title", props: { tag: "div", text: object.day_of_week, size: 4 }) %>
21
+ <%= pb_rails("body", props: {
22
+ text: "•",
23
+ color: "light",
24
+ tag: "div",
25
+ }) %>
26
+ <% end %>
27
+
28
+ <!-- month day, year -->
29
+
30
+ <%# if not current year %>
31
+ <% if object.year.to_s == DateTime.now.year.to_s %>
32
+ <%= pb_rails("title", props: { tag: "div", text: "#{object.month} #{object.day}", size: 4 }) %>
33
+ <%# if is current year %>
10
34
  <% else %>
11
- <%= pb_rails("title", props: { text: object.xs_date, size: 4 }) %>
35
+ <%= pb_rails("title", props: { tag: "div", text: "#{object.month} #{object.day}, #{object.year}", size: 4 }) %>
36
+ <% end %>
37
+
38
+ <% else %>
39
+
40
+ <!-- icon -->
41
+ <% if object.show_icon %>
42
+ <%= pb_rails("body", props: {
43
+ color: "light",
44
+ tag: "div",
45
+ }) do %>
46
+ <%= pb_rails("icon", props: { icon: "calendar-alt", fixed_width: true }) %>
47
+ <% end %>
48
+ <% end %>
49
+
50
+ <!-- day_of_week -->
51
+ <% if object.show_day_of_week %>
52
+ <%= pb_rails("caption", props: { tag: "div", text: object.day_of_week }) %>
53
+ <%= pb_rails("caption", props: {
54
+ text: "•",
55
+ color: "light",
56
+ tag: "div",
57
+ }) %>
58
+ <% end %>
59
+
60
+ <!-- month day, year -->
61
+
62
+ <%# if not current year %>
63
+ <% if object.year.to_s == DateTime.now.year.to_s %>
64
+ <%= pb_rails("caption", props: { tag: "span", text: "#{object.month} #{object.day}" }) %>
65
+ <%# if is current year %>
66
+ <% else %>
67
+ <%= pb_rails("caption", props: { tag: "span", text: "#{object.month} #{object.day}, #{object.year}" }) %>
68
+ <% end %>
12
69
  <% end %>
13
70
  <% end %>
14
-
@@ -2,82 +2,131 @@
2
2
 
3
3
  import React from 'react'
4
4
  import DateTime from '../pb_kit/dateTime.js'
5
- import { Icon } from '../'
5
+ import { Body, Caption, Icon, Title } from '../'
6
6
  import classnames from 'classnames'
7
7
  import { globalProps } from '../utilities/globalProps.js'
8
+ import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
8
9
 
9
- const defaultDateString = (value: DateTime) => {
10
- const weekday = value.toWeekday().toUpperCase()
11
- const month = value.toMonth().toUpperCase()
12
- const day = value.toDay()
13
-
14
- return `${weekday} · ${month} ${day}`
15
- }
16
-
17
- const largeDateString = (value: DateTime) => {
18
- const month = value.toMonth().toUpperCase()
19
- const day = value.toDay()
20
-
21
- return `${month} ${day}`
22
- }
23
-
24
- type DateSubcomponent = {
25
- value: DateTime,
10
+ type PbDateProps = {
11
+ alignment?: "left" | "center" | "right",
12
+ aria: Object,
13
+ className?: string,
14
+ data?: Object,
15
+ id?: string,
16
+ showDayOfWeek?: boolean,
17
+ showIcon?: boolean,
18
+ size?: string,
19
+ value: string | date,
26
20
  }
27
21
 
28
- const ExtraSmallDate = ({ value, ...props }: DateSubcomponent) => (
29
- <h3 className={classnames('pb_title_kit_4', globalProps(props))}>
30
- {defaultDateString(value)}
31
- </h3>
32
- )
33
-
34
- const SmallDate = ({ value, ...props }: DateSubcomponent) => (
35
- <h3 className={classnames('pb_title_kit_4', globalProps(props))}>
36
- <Icon
37
- fixedWidth
38
- icon="calendar"
39
- />
40
- {defaultDateString(value)}
41
- </h3>
42
- )
22
+ const PbDate = (props: PbDateProps) => {
23
+ const {
24
+ aria = {},
25
+ alignment = 'left',
26
+ className,
27
+ data = {},
28
+ id,
29
+ showDayOfWeek = false,
30
+ showIcon = false,
31
+ size = 'md',
32
+ value,
33
+ } = props
43
34
 
44
- const LargeDate = ({ value, ...props }: DateSubcomponent) => (
45
- <h3 className={classnames('pb_title_kit_3', globalProps(props))}>
46
- {largeDateString(value)}
47
- </h3>
48
- )
35
+ const dateTimestamp = new DateTime({ value: value })
36
+ const weekday = dateTimestamp.toWeekday()
37
+ const month = dateTimestamp.toMonth()
38
+ const day = dateTimestamp.toDay()
39
+ const year = dateTimestamp.toYear()
40
+ const currentYear = new Date().getFullYear().toString()
49
41
 
50
- type PbDateProps = {
51
- size?: "xs" | "sm" | "lg",
52
- value?: string,
53
- className?: string
54
- }
42
+ const ariaProps = buildAriaProps(aria)
43
+ const dataProps = buildDataProps(data)
55
44
 
56
- const PbDate = ({ size, value, className, ...props }: PbDateProps) => {
57
- const date = new DateTime({ value: value })
45
+ const classes = classnames(
46
+ buildCss('pb_date_kit', alignment),
47
+ globalProps(props),
48
+ className
49
+ )
58
50
 
59
- if (size == 'xs')
60
- return (
61
- <ExtraSmallDate
62
- {...props}
63
- className={className}
64
- value={date}
65
- />
66
- )
67
- if (size == 'lg')
68
- return (
69
- <LargeDate
70
- {...props}
71
- className={className}
72
- value={date}
73
- />
74
- )
75
51
  return (
76
- <SmallDate
77
- {...props}
78
- className={className}
79
- value={date}
80
- />
52
+ <div
53
+ {...ariaProps}
54
+ {...dataProps}
55
+ className={classes}
56
+ id={id}
57
+ >
58
+ <If condition={size == 'md' || size == 'lg'}>
59
+
60
+ <Title
61
+ size={4}
62
+ tag="h4"
63
+ >
64
+ <If condition={showIcon}>
65
+ <Body
66
+ className="pb_icon_kit_container"
67
+ color="light"
68
+ tag="span"
69
+ >
70
+ <Icon
71
+ fixedWidth
72
+ icon="calendar-alt"
73
+ />
74
+ </Body>
75
+ </If>
76
+ <If condition={showDayOfWeek}>
77
+ {weekday}
78
+ <Body
79
+ color="light"
80
+ tag="span"
81
+ text=" • "
82
+ />
83
+ </If>
84
+ <span>
85
+ {month}
86
+ {' '}
87
+ {day}
88
+ </span>
89
+ <If condition={currentYear != year}>
90
+ <span>
91
+ {`, ${year}`}
92
+ </span>
93
+ </If>
94
+ </Title>
95
+ <Else />
96
+ <>
97
+ <If condition={showIcon}>
98
+ <Body
99
+ className="pb_icon_kit_container"
100
+ color="light"
101
+ tag="span"
102
+ >
103
+ <Icon
104
+ fixedWidth
105
+ icon="calendar-alt"
106
+ />
107
+ </Body>
108
+ </If>
109
+ <If condition={showDayOfWeek}>
110
+ <Caption tag="div">
111
+ {weekday}
112
+ </Caption>
113
+ <Caption
114
+ color="light"
115
+ tag="div"
116
+ text=" • "
117
+ />
118
+ </If>
119
+ <Caption tag="span">
120
+ {month}
121
+ {' '}
122
+ {day}
123
+ <If condition={currentYear != year}>
124
+ {`, ${year}`}
125
+ </If>
126
+ </Caption>
127
+ </>
128
+ </If>
129
+ </div>
81
130
  )
82
131
  }
83
132
 
@@ -1,2 +1,32 @@
1
1
  @import "../pb_icon/icon";
2
2
  @import "../pb_title/title";
3
+
4
+ [class^=pb_date_kit] {
5
+ display: flex;
6
+ flex-direction: row;
7
+ align-items: center;
8
+ > div, .pb_icon_kit_container {
9
+ margin-right: 4px !important;
10
+ }
11
+
12
+ &[class*=_center] {
13
+ display: flex;
14
+ flex-direction: row;
15
+ align-items: center;
16
+ justify-content: center;
17
+ margin-right: 4px !important;
18
+ }
19
+
20
+ &[class*=_right] {
21
+ display: flex;
22
+ flex-direction: row;
23
+ align-items: center;
24
+ justify-content: flex-end;
25
+ margin-left: 4px !important;
26
+ }
27
+ &.dark {
28
+ [class^=pb_title_kit] {
29
+ color: $text_dk_default !important;
30
+ }
31
+ }
32
+ }
@@ -10,25 +10,36 @@ module Playbook
10
10
  partial "pb_date/date"
11
11
 
12
12
  prop :date, required: true
13
+ prop :alignment, type: Playbook::Props::Enum,
14
+ values: %w[left center right],
15
+ default: "left"
16
+ prop :show_icon, type: Playbook::Props::Boolean,
17
+ default: false
18
+ prop :show_day_of_week, type: Playbook::Props::Boolean,
19
+ default: false
13
20
  prop :size, type: Playbook::Props::Enum,
14
- values: %w[lg sm xs],
15
- default: "sm"
21
+ values: %w[lg md sm xs],
22
+ default: "md"
16
23
  prop :timezone, default: "America/New_York"
17
24
 
18
25
  def classname
19
- generate_classname("pb_date_kit")
26
+ generate_classname("pb_date_kit", alignment)
20
27
  end
21
28
 
22
- def xs_date
23
- "#{pb_date_time.to_day_of_week.upcase} &middot; #{pb_date_time.to_month.upcase} #{pb_date_time.to_day}".html_safe
29
+ def day_of_week
30
+ pb_date_time.to_day_of_week
24
31
  end
25
32
 
26
- def lg_date
27
- "#{pb_date_time.to_month.upcase} #{pb_date_time.to_day}"
33
+ def day
34
+ pb_date_time.to_day
28
35
  end
29
36
 
30
- def sm_date
31
- "#{pb_date_time.to_day_of_week.upcase} &middot; #{pb_date_time.to_month.upcase} #{pb_date_time.to_day}".html_safe
37
+ def month
38
+ pb_date_time.to_month.capitalize
39
+ end
40
+
41
+ def year
42
+ pb_date_time.to_year
32
43
  end
33
44
 
34
45
  private
@@ -0,0 +1,24 @@
1
+ <%= pb_rails("date", props: {
2
+ date: DateTime.now,
3
+ show_icon: true,
4
+ show_day_of_week: true
5
+ }) %>
6
+
7
+ <br><br>
8
+
9
+ <%= pb_rails("date", props: {
10
+ date: DateTime.now,
11
+ show_icon: true,
12
+ show_day_of_week: true,
13
+ alignment: "center"
14
+ }) %>
15
+
16
+ <br><br>
17
+
18
+ <%= pb_rails("date", props: {
19
+ date: DateTime.now,
20
+ show_icon: true,
21
+ show_day_of_week: true,
22
+ alignment: "right"
23
+ }) %>
24
+
@@ -0,0 +1,35 @@
1
+ import React from 'react'
2
+ import { Date as FormattedDate } from '../..'
3
+
4
+ const DateAlignment = (props) => {
5
+ return (
6
+ <div>
7
+ <FormattedDate
8
+ dayOfWeek
9
+ icon
10
+ value="1995-12-25"
11
+ {...props}
12
+ />
13
+
14
+ <br />
15
+
16
+ <FormattedDate
17
+ alignment="center"
18
+ dayOfWeek
19
+ icon
20
+ value="2020-12-25"
21
+ {...props}
22
+ />
23
+
24
+ <br />
25
+
26
+ <FormattedDate
27
+ alignment="right"
28
+ value={new Date()}
29
+ {...props}
30
+ />
31
+ </div>
32
+ )
33
+ }
34
+
35
+ export default DateAlignment