playbook_ui 7.3.0.pre.alpha12 → 7.3.0

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 +3 -1
  3. data/app/pb_kits/playbook/data/menu.yml +2 -2
  4. data/app/pb_kits/playbook/index.js +2 -1
  5. data/app/pb_kits/playbook/pb_background/_background.html.erb +14 -0
  6. data/app/pb_kits/playbook/pb_background/_background.jsx +63 -0
  7. data/app/pb_kits/playbook/pb_background/_background.scss +35 -0
  8. data/app/pb_kits/playbook/pb_background/background.rb +35 -0
  9. data/app/pb_kits/playbook/pb_background/docs/_background_dark.html.erb +3 -0
  10. data/app/pb_kits/playbook/pb_background/docs/_background_dark.jsx +13 -0
  11. data/app/pb_kits/playbook/pb_background/docs/_background_gradient.html.erb +3 -0
  12. data/app/pb_kits/playbook/pb_background/docs/_background_gradient.jsx +13 -0
  13. data/app/pb_kits/playbook/pb_background/docs/_background_image.html.erb +13 -0
  14. data/app/pb_kits/playbook/pb_background/docs/_background_image.jsx +30 -0
  15. data/app/pb_kits/playbook/pb_background/docs/_background_light.html.erb +3 -0
  16. data/app/pb_kits/playbook/pb_background/docs/_background_light.jsx +13 -0
  17. data/app/pb_kits/playbook/pb_background/docs/_background_white.html.erb +3 -0
  18. data/app/pb_kits/playbook/pb_background/docs/_background_white.jsx +14 -0
  19. data/app/pb_kits/playbook/pb_background/docs/_description.md +1 -0
  20. data/app/pb_kits/playbook/pb_background/docs/example.yml +15 -0
  21. data/app/pb_kits/playbook/pb_background/docs/index.js +6 -0
  22. data/app/pb_kits/playbook/pb_date/_date.html.erb +64 -8
  23. data/app/pb_kits/playbook/pb_date/_date.jsx +115 -66
  24. data/app/pb_kits/playbook/pb_date/_date.scss +30 -0
  25. data/app/pb_kits/playbook/pb_date/date.rb +20 -9
  26. data/app/pb_kits/playbook/pb_date/docs/_date_alignment.html.erb +24 -0
  27. data/app/pb_kits/playbook/pb_date/docs/_date_alignment.jsx +35 -0
  28. data/app/pb_kits/playbook/pb_date/docs/_date_default.html.erb +21 -6
  29. data/app/pb_kits/playbook/pb_date/docs/_date_default.jsx +43 -12
  30. data/app/pb_kits/playbook/pb_date/docs/_date_variants.html.erb +27 -0
  31. data/app/pb_kits/playbook/pb_date/docs/_date_variants.jsx +43 -0
  32. data/app/pb_kits/playbook/pb_date/docs/example.yml +4 -0
  33. data/app/pb_kits/playbook/pb_date/docs/index.js +2 -0
  34. data/app/pb_kits/playbook/pb_date_picker/_date_picker.html.erb +19 -14
  35. data/app/pb_kits/playbook/pb_date_time/_date_time.html.erb +31 -0
  36. data/app/pb_kits/playbook/pb_date_time/_date_time.jsx +73 -0
  37. data/app/pb_kits/playbook/pb_date_time/_date_time.scss +26 -0
  38. data/app/pb_kits/playbook/pb_date_time/date_time.rb +29 -0
  39. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_align.html.erb +17 -0
  40. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_align.jsx +35 -0
  41. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_default.html.erb +20 -0
  42. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_default.jsx +38 -0
  43. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_size.html.erb +26 -0
  44. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_size.jsx +75 -0
  45. data/app/pb_kits/playbook/pb_date_time/docs/_description.md +1 -0
  46. data/app/pb_kits/playbook/pb_date_time/docs/example.yml +11 -0
  47. data/app/pb_kits/playbook/pb_date_time/docs/index.js +3 -0
  48. data/app/pb_kits/playbook/pb_flex/_flex.jsx +1 -1
  49. data/app/pb_kits/playbook/pb_flex/_flex.scss +4 -0
  50. data/app/pb_kits/playbook/pb_flex/flex.rb +1 -1
  51. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +52 -1
  52. data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +1 -1
  53. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form.html.erb +1 -1
  54. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form_validate.html.erb +1 -1
  55. data/app/pb_kits/playbook/pb_form/form_builder/date_picker_field.rb +19 -1
  56. data/app/pb_kits/playbook/pb_home_address_street/home_address_street.rb +1 -1
  57. data/app/pb_kits/playbook/pb_progress_step/progress_step.rb +2 -2
  58. data/app/pb_kits/playbook/pb_tooltip/_tooltip.scss +46 -19
  59. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_default.html.erb +46 -10
  60. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_white.html.erb +4 -4
  61. data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +3 -2
  62. data/app/pb_kits/playbook/vendor.js +0 -3
  63. data/lib/playbook/version.rb +2 -1
  64. metadata +39 -20
  65. data/app/pb_kits/playbook/pb_collapsible/_collapsible.html.erb +0 -9
  66. data/app/pb_kits/playbook/pb_collapsible/_collapsible.jsx +0 -134
  67. data/app/pb_kits/playbook/pb_collapsible/_collapsible.scss +0 -17
  68. data/app/pb_kits/playbook/pb_collapsible/child_kits/_collapsible_content.html.erb +0 -7
  69. data/app/pb_kits/playbook/pb_collapsible/child_kits/_collapsible_main.html.erb +0 -16
  70. data/app/pb_kits/playbook/pb_collapsible/collapsible.rb +0 -15
  71. data/app/pb_kits/playbook/pb_collapsible/collapsible_content.rb +0 -21
  72. data/app/pb_kits/playbook/pb_collapsible/collapsible_main.rb +0 -24
  73. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_dark.html.erb +0 -10
  74. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_dark.jsx +0 -17
  75. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_default.html.erb +0 -10
  76. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_default.jsx +0 -17
  77. data/app/pb_kits/playbook/pb_collapsible/docs/example.yml +0 -9
  78. data/app/pb_kits/playbook/pb_collapsible/docs/index.js +0 -2
  79. data/app/pb_kits/playbook/pb_collapsible/index.js +0 -82
  80. data/app/pb_kits/playbook/pb_collapsible/useToggler.js +0 -10
@@ -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
@@ -1,24 +1,39 @@
1
1
  <%= pb_rails("date", props: {
2
2
  date: Date.today,
3
- size: "lg"
3
+ size: "sm"
4
4
  }) %>
5
5
 
6
6
  <br>
7
7
 
8
8
  <%= pb_rails("date", props: {
9
- date: DateTime.now
9
+ date: "2012-08-02T15:49:29Z",
10
+ size: "sm"
10
11
  }) %>
11
12
 
12
13
  <br>
13
14
 
14
15
  <%= pb_rails("date", props: {
15
- date: DateTime.now,
16
- timezone: "Asia/Tokyo"
16
+ date: "2017-12-02T15:49:29Z",
17
+ show_day_of_week: true,
18
+ size: "sm"
19
+ }) %>
20
+
21
+ <br>
22
+ <br>
23
+
24
+ <%= pb_rails("date", props: {
25
+ date: Date.today,
26
+ }) %>
27
+
28
+ <br>
29
+
30
+ <%= pb_rails("date", props: {
31
+ date: "2012-08-02T15:49:29Z",
17
32
  }) %>
18
33
 
19
34
  <br>
20
35
 
21
36
  <%= pb_rails("date", props: {
22
- date: Date.new(2010, 11, 12),
23
- size: "xs"
37
+ date: "2017-12-02T15:49:29Z",
38
+ show_day_of_week: true
24
39
  }) %>
@@ -1,28 +1,59 @@
1
1
  import React from 'react'
2
- import { Date } from '../../'
2
+ import { Date as FormattedDate } from '../../'
3
3
 
4
- const DateDefault = () => {
4
+ const DateDefault = (props) => {
5
5
  return (
6
- <div>
7
- <Date
8
- size="lg"
9
- value="1995-12-25"
6
+ <>
7
+ <FormattedDate
8
+ size="sm"
9
+ value={new Date()}
10
+ {...props}
10
11
  />
11
12
 
12
13
  <br />
13
14
 
14
- <Date
15
- value="17 Mar 69"
15
+ <FormattedDate
16
+ size="sm"
17
+ value="2012-08-03"
18
+ {...props}
16
19
  />
17
20
 
18
21
  <br />
19
22
 
20
- <Date
21
- size="xs"
22
- value="2020-04-20T04:20:00.000Z"
23
+ <FormattedDate
24
+ showDayOfWeek
25
+ size="sm"
26
+ value="2017-12-03"
27
+ {...props}
23
28
  />
24
- </div>
29
+
30
+ <br />
31
+ <br />
32
+
33
+ <FormattedDate
34
+ value={new Date()}
35
+ {...props}
36
+ />
37
+
38
+ <br />
39
+
40
+ <FormattedDate
41
+ value="2012-08-03"
42
+ {...props}
43
+ />
44
+
45
+ <br />
46
+
47
+ <FormattedDate
48
+ showDayOfWeek
49
+ value="2017-12-03"
50
+ {...props}
51
+ />
52
+ </>
25
53
  )
26
54
  }
27
55
 
28
56
  export default DateDefault
57
+
58
+ // *Development Note* - We are reviewing this kit for a potential name change due to naming collisions when `new Date()` is used.
59
+ // To avoid this bug, please use name spacing as shown in the code examples. ie `import { Date as AliasedComponentName } from '../../'