playbook_ui 7.4.0.pre.alpha4 → 7.4.0.pre.alpha5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (146) 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 +4 -1
  8. data/app/pb_kits/playbook/data/menu.yml +3 -2
  9. data/app/pb_kits/playbook/index.js +3 -2
  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_checkbox/_checkbox.html.erb +2 -3
  28. data/app/pb_kits/playbook/pb_checkbox/_checkbox.jsx +1 -2
  29. data/app/pb_kits/playbook/pb_checkbox/checkbox.rb +1 -4
  30. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_default.html.erb +2 -5
  31. data/app/pb_kits/playbook/pb_collapsible/_collapsible.html.erb +9 -0
  32. data/app/pb_kits/playbook/pb_collapsible/_collapsible.jsx +77 -0
  33. data/app/pb_kits/playbook/pb_collapsible/_collapsible.scss +17 -0
  34. data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleContent.jsx +40 -0
  35. data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleMain.jsx +58 -0
  36. data/app/pb_kits/playbook/pb_collapsible/child_kits/_collapsible_content.html.erb +7 -0
  37. data/app/pb_kits/playbook/pb_collapsible/child_kits/_collapsible_main.html.erb +16 -0
  38. data/app/pb_kits/playbook/pb_collapsible/collapsible.rb +15 -0
  39. data/app/pb_kits/playbook/pb_collapsible/collapsible_content.rb +21 -0
  40. data/app/pb_kits/playbook/pb_collapsible/collapsible_main.rb +24 -0
  41. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_dark.html.erb +10 -0
  42. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_dark.jsx +17 -0
  43. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_default.html.erb +10 -0
  44. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_default.jsx +19 -0
  45. data/app/pb_kits/playbook/pb_collapsible/docs/example.yml +9 -0
  46. data/app/pb_kits/playbook/pb_collapsible/docs/index.js +2 -0
  47. data/app/pb_kits/playbook/pb_collapsible/index.js +82 -0
  48. data/app/pb_kits/playbook/pb_date/_date.html.erb +64 -8
  49. data/app/pb_kits/playbook/pb_date/_date.jsx +115 -66
  50. data/app/pb_kits/playbook/pb_date/_date.scss +30 -0
  51. data/app/pb_kits/playbook/pb_date/date.rb +20 -9
  52. data/app/pb_kits/playbook/pb_date/docs/_date_alignment.html.erb +24 -0
  53. data/app/pb_kits/playbook/pb_date/docs/_date_alignment.jsx +35 -0
  54. data/app/pb_kits/playbook/pb_date/docs/_date_default.html.erb +21 -6
  55. data/app/pb_kits/playbook/pb_date/docs/_date_default.jsx +43 -12
  56. data/app/pb_kits/playbook/pb_date/docs/_date_variants.html.erb +27 -0
  57. data/app/pb_kits/playbook/pb_date/docs/_date_variants.jsx +43 -0
  58. data/app/pb_kits/playbook/pb_date/docs/example.yml +4 -0
  59. data/app/pb_kits/playbook/pb_date/docs/index.js +2 -0
  60. data/app/pb_kits/playbook/pb_date_picker/_date_picker.html.erb +19 -14
  61. data/app/pb_kits/playbook/pb_date_time/_date_time.html.erb +31 -0
  62. data/app/pb_kits/playbook/pb_date_time/_date_time.jsx +73 -0
  63. data/app/pb_kits/playbook/pb_date_time/_date_time.scss +26 -0
  64. data/app/pb_kits/playbook/pb_date_time/date_time.rb +29 -0
  65. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_align.html.erb +17 -0
  66. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_align.jsx +35 -0
  67. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_default.html.erb +20 -0
  68. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_default.jsx +38 -0
  69. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_size.html.erb +26 -0
  70. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_size.jsx +75 -0
  71. data/app/pb_kits/playbook/pb_date_time/docs/_description.md +1 -0
  72. data/app/pb_kits/playbook/pb_date_time/docs/example.yml +11 -0
  73. data/app/pb_kits/playbook/pb_date_time/docs/index.js +3 -0
  74. data/app/pb_kits/playbook/pb_flex/_flex.jsx +1 -1
  75. data/app/pb_kits/playbook/pb_flex/_flex.scss +4 -0
  76. data/app/pb_kits/playbook/pb_flex/flex.rb +1 -1
  77. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +52 -1
  78. data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +1 -1
  79. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form.html.erb +1 -1
  80. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form_validate.html.erb +1 -1
  81. data/app/pb_kits/playbook/pb_form/form_builder/date_picker_field.rb +19 -1
  82. data/app/pb_kits/playbook/pb_home_address_street/home_address_street.rb +1 -1
  83. data/app/pb_kits/playbook/pb_list/_list.jsx +2 -9
  84. data/app/pb_kits/playbook/pb_progress_step/_progress_step.jsx +3 -1
  85. data/app/pb_kits/playbook/pb_progress_step/_progress_step.scss +13 -4
  86. data/app/pb_kits/playbook/pb_progress_step/_progress_step_item.html.erb +1 -1
  87. data/app/pb_kits/playbook/pb_progress_step/_progress_step_item.jsx +5 -7
  88. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_custom_icon.html.erb +12 -0
  89. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_tracker_click_events.jsx +48 -0
  90. data/app/pb_kits/playbook/pb_progress_step/docs/example.yml +2 -0
  91. data/app/pb_kits/playbook/pb_progress_step/docs/index.js +1 -0
  92. data/app/pb_kits/playbook/pb_progress_step/progress_step.rb +5 -3
  93. data/app/pb_kits/playbook/pb_progress_step/progress_step_item.rb +6 -0
  94. data/app/pb_kits/playbook/pb_radio/_radio.jsx +3 -0
  95. data/app/pb_kits/playbook/pb_timestamp/_timestamp.html.erb +13 -1
  96. data/app/pb_kits/playbook/pb_timestamp/_timestamp.jsx +96 -20
  97. data/app/pb_kits/playbook/pb_timestamp/_timestamp.scss +12 -1
  98. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_align.html.erb +69 -0
  99. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_align.jsx +91 -0
  100. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_default.html.erb +21 -1
  101. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_default.jsx +31 -4
  102. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed.html.erb +14 -0
  103. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed.jsx +27 -0
  104. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed_align.html.erb +54 -0
  105. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed_align.jsx +73 -0
  106. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones.html.erb +59 -0
  107. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones.jsx +74 -0
  108. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones_align.html.erb +177 -0
  109. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones_align.jsx +209 -0
  110. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated.html.erb +35 -0
  111. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated.jsx +51 -0
  112. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_align.html.erb +123 -0
  113. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_align.jsx +146 -0
  114. data/app/pb_kits/playbook/pb_timestamp/docs/example.yml +14 -0
  115. data/app/pb_kits/playbook/pb_timestamp/docs/index.js +7 -0
  116. data/app/pb_kits/playbook/pb_timestamp/timestamp.rb +67 -1
  117. data/app/pb_kits/playbook/pb_tooltip/_tooltip.scss +46 -19
  118. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_default.html.erb +46 -10
  119. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_white.html.erb +4 -4
  120. data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +3 -2
  121. data/app/pb_kits/playbook/pb_typeahead/_typeahead.jsx +14 -2
  122. data/app/pb_kits/playbook/pb_typeahead/components/ClearIndicator.jsx +20 -0
  123. data/app/pb_kits/playbook/pb_typeahead/components/MultiValue.jsx +8 -15
  124. data/app/pb_kits/playbook/pb_typeahead/components/Option.jsx +1 -6
  125. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.html.erb +10 -4
  126. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.md +20 -4
  127. data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +4 -0
  128. data/app/pb_kits/playbook/vendor.js +3 -0
  129. data/lib/playbook/version.rb +1 -1
  130. metadata +76 -21
  131. data/app/assets/images/clark.jpg +0 -0
  132. data/app/assets/images/giant.jpg +0 -0
  133. data/app/pb_kits/playbook/pb_selectable_list/_item.jsx +0 -90
  134. data/app/pb_kits/playbook/pb_selectable_list/_selectable_list.html.erb +0 -11
  135. data/app/pb_kits/playbook/pb_selectable_list/_selectable_list.jsx +0 -47
  136. data/app/pb_kits/playbook/pb_selectable_list/_selectable_list.scss +0 -17
  137. data/app/pb_kits/playbook/pb_selectable_list/_selectable_list_item.html.erb +0 -18
  138. data/app/pb_kits/playbook/pb_selectable_list/docs/_description.md +0 -3
  139. data/app/pb_kits/playbook/pb_selectable_list/docs/_selectable_list_checkbox.html.erb +0 -44
  140. data/app/pb_kits/playbook/pb_selectable_list/docs/_selectable_list_checkbox.jsx +0 -44
  141. data/app/pb_kits/playbook/pb_selectable_list/docs/_selectable_list_radio.html.erb +0 -44
  142. data/app/pb_kits/playbook/pb_selectable_list/docs/_selectable_list_radio.jsx +0 -44
  143. data/app/pb_kits/playbook/pb_selectable_list/docs/example.yml +0 -12
  144. data/app/pb_kits/playbook/pb_selectable_list/docs/index.js +0 -2
  145. data/app/pb_kits/playbook/pb_selectable_list/selectable_list.rb +0 -24
  146. data/app/pb_kits/playbook/pb_selectable_list/selectable_list_item.rb +0 -28
@@ -0,0 +1,35 @@
1
+ <%= pb_rails("timestamp", props: {
2
+ timestamp: DateTime.now,
3
+ variant: "updated",
4
+ show_user: true,
5
+ text: "Maricris Nonato"
6
+ }) %>
7
+
8
+ <br>
9
+
10
+ <%= pb_rails("timestamp", props: {
11
+ timestamp: DateTime.now,
12
+ variant: "updated",
13
+ show_user: false
14
+ }) %>
15
+
16
+ <br><br>
17
+
18
+ <%= pb_rails("timestamp", props: {
19
+ timestamp: DateTime.now,
20
+ variant: "updated",
21
+ show_user: true,
22
+ show_timezone: true,
23
+ text: "Maricris Nonato",
24
+ timezone: "America/New_York"
25
+ }) %>
26
+
27
+ <br>
28
+
29
+ <%= pb_rails("timestamp", props: {
30
+ timestamp: DateTime.now,
31
+ variant: "updated",
32
+ show_user: false,
33
+ show_timezone: true,
34
+ timezone: "America/New_York"
35
+ }) %>
@@ -0,0 +1,51 @@
1
+ import React from 'react'
2
+ import Timestamp from '../_timestamp.jsx'
3
+
4
+ const TimestampUpdated = (props) => {
5
+ return (
6
+ <div>
7
+ <Timestamp
8
+ showUser="true"
9
+ text="Maricris Nonato"
10
+ timestamp={new Date().getTime()}
11
+ variant="updated"
12
+ {...props}
13
+ />
14
+
15
+ <br />
16
+
17
+ <Timestamp
18
+ showUser="false"
19
+ timestamp={new Date().getTime()}
20
+ variant="updated"
21
+ {...props}
22
+ />
23
+
24
+ <br />
25
+ <br />
26
+
27
+ <Timestamp
28
+ showTimezone="true"
29
+ showUser="true"
30
+ text="Maricris Nonato"
31
+ timestamp={new Date().getTime()}
32
+ timezone="America/New_York"
33
+ variant="updated"
34
+ {...props}
35
+ />
36
+
37
+ <br />
38
+
39
+ <Timestamp
40
+ showTimezone="true"
41
+ showUser="false"
42
+ timestamp={new Date().getTime()}
43
+ timezone="America/New_York"
44
+ variant="updated"
45
+ {...props}
46
+ />
47
+ </div>
48
+ )
49
+ }
50
+
51
+ export default TimestampUpdated
@@ -0,0 +1,123 @@
1
+ <%= pb_rails("timestamp", props: {
2
+ timestamp: DateTime.now,
3
+ variant: "updated",
4
+ align: "left",
5
+ show_user: true,
6
+ text: "Maricris Nonato"
7
+ }) %>
8
+
9
+ <br>
10
+
11
+ <%= pb_rails("timestamp", props: {
12
+ timestamp: DateTime.now,
13
+ variant: "updated",
14
+ align: "left",
15
+ show_user: false
16
+ }) %>
17
+
18
+ <br>
19
+
20
+ <%= pb_rails("timestamp", props: {
21
+ timestamp: DateTime.now,
22
+ variant: "updated",
23
+ align: "left",
24
+ show_user: true,
25
+ show_timezone: true,
26
+ text: "Maricris Nonato",
27
+ timezone: "America/New_York"
28
+ }) %>
29
+
30
+ <br>
31
+
32
+ <%= pb_rails("timestamp", props: {
33
+ timestamp: DateTime.now,
34
+ variant: "updated",
35
+ align: "left",
36
+ show_user: false,
37
+ show_timezone: true,
38
+ timezone: "America/New_York"
39
+ }) %>
40
+
41
+ <br><br>
42
+
43
+ <%= pb_rails("timestamp", props: {
44
+ timestamp: DateTime.now,
45
+ variant: "updated",
46
+ align: "center",
47
+ show_user: true,
48
+ text: "Maricris Nonato"
49
+ }) %>
50
+
51
+ <br>
52
+
53
+ <%= pb_rails("timestamp", props: {
54
+ timestamp: DateTime.now,
55
+ variant: "updated",
56
+ align: "center",
57
+ show_user: false
58
+ }) %>
59
+
60
+ <br>
61
+
62
+ <%= pb_rails("timestamp", props: {
63
+ timestamp: DateTime.now,
64
+ variant: "updated",
65
+ align: "center",
66
+ show_user: true,
67
+ show_timezone: true,
68
+ text: "Maricris Nonato",
69
+ timezone: "America/New_York"
70
+ }) %>
71
+
72
+ <br>
73
+
74
+ <%= pb_rails("timestamp", props: {
75
+ timestamp: DateTime.now,
76
+ variant: "updated",
77
+ align: "center",
78
+ show_user: false,
79
+ show_timezone: true,
80
+ timezone: "America/New_York"
81
+ }) %>
82
+
83
+ <br><br>
84
+
85
+ <%= pb_rails("timestamp", props: {
86
+ timestamp: DateTime.now,
87
+ variant: "updated",
88
+ align: "right",
89
+ show_user: true,
90
+ text: "Maricris Nonato"
91
+ }) %>
92
+
93
+ <br>
94
+
95
+ <%= pb_rails("timestamp", props: {
96
+ timestamp: DateTime.now,
97
+ variant: "updated",
98
+ align: "right",
99
+ show_user: false
100
+ }) %>
101
+
102
+ <br>
103
+
104
+ <%= pb_rails("timestamp", props: {
105
+ timestamp: DateTime.now,
106
+ variant: "updated",
107
+ align: "right",
108
+ show_user: true,
109
+ show_timezone: true,
110
+ text: "Maricris Nonato",
111
+ timezone: "America/New_York"
112
+ }) %>
113
+
114
+ <br>
115
+
116
+ <%= pb_rails("timestamp", props: {
117
+ timestamp: DateTime.now,
118
+ variant: "updated",
119
+ align: "right",
120
+ show_user: false,
121
+ show_timezone: true,
122
+ timezone: "America/New_York"
123
+ }) %>
@@ -0,0 +1,146 @@
1
+ import React from 'react'
2
+ import Timestamp from '../_timestamp.jsx'
3
+
4
+ const TimestampUpdatedAlign = (props) => {
5
+ return (
6
+ <div>
7
+ <Timestamp
8
+ align="left"
9
+ showUser="true"
10
+ text="Maricris Nonato"
11
+ timestamp={new Date().getTime()}
12
+ variant="updated"
13
+ {...props}
14
+ />
15
+
16
+ <br />
17
+
18
+ <Timestamp
19
+ align="left"
20
+ showUser="false"
21
+ timestamp={new Date().getTime()}
22
+ variant="updated"
23
+ {...props}
24
+ />
25
+
26
+ <br />
27
+
28
+ <Timestamp
29
+ showTimezone="true"
30
+ showUser="true"
31
+ text="Maricris Nonato"
32
+ timestamp={new Date().getTime()}
33
+ timezone="America/New_York"
34
+ variant="updated"
35
+ {...props}
36
+ />
37
+
38
+ <br />
39
+
40
+ <Timestamp
41
+ showTimezone="true"
42
+ showUser="false"
43
+ timestamp={new Date().getTime()}
44
+ timezone="America/New_York"
45
+ variant="updated"
46
+ {...props}
47
+ />
48
+
49
+ <br />
50
+ <br />
51
+
52
+ <Timestamp
53
+ align="center"
54
+ showUser="true"
55
+ text="Maricris Nonato"
56
+ timestamp={new Date().getTime()}
57
+ variant="updated"
58
+ {...props}
59
+ />
60
+
61
+ <br />
62
+
63
+ <Timestamp
64
+ align="center"
65
+ showUser="false"
66
+ timestamp={new Date().getTime()}
67
+ variant="updated"
68
+ {...props}
69
+ />
70
+
71
+ <br />
72
+
73
+ <Timestamp
74
+ align="center"
75
+ showTimezone="true"
76
+ showUser="true"
77
+ text="Maricris Nonato"
78
+ timestamp={new Date().getTime()}
79
+ timezone="America/New_York"
80
+ variant="updated"
81
+ {...props}
82
+ />
83
+
84
+ <br />
85
+
86
+ <Timestamp
87
+ align="center"
88
+ showTimezone="true"
89
+ showUser="false"
90
+ timestamp={new Date().getTime()}
91
+ timezone="America/New_York"
92
+ variant="updated"
93
+ {...props}
94
+ />
95
+
96
+ <br />
97
+ <br />
98
+
99
+ <Timestamp
100
+ align="right"
101
+ showUser="true"
102
+ text="Maricris Nonato"
103
+ timestamp={new Date().getTime()}
104
+ variant="updated"
105
+ {...props}
106
+ />
107
+
108
+ <br />
109
+
110
+ <Timestamp
111
+ align="right"
112
+ showUser="false"
113
+ timestamp={new Date().getTime()}
114
+ variant="updated"
115
+ {...props}
116
+ />
117
+
118
+ <br />
119
+
120
+ <Timestamp
121
+ align="right"
122
+ showTimezone="true"
123
+ showUser="true"
124
+ text="Maricris Nonato"
125
+ timestamp={new Date().getTime()}
126
+ timezone="America/New_York"
127
+ variant="updated"
128
+ {...props}
129
+ />
130
+
131
+ <br />
132
+
133
+ <Timestamp
134
+ align="right"
135
+ showTimezone="true"
136
+ showUser="false"
137
+ timestamp={new Date().getTime()}
138
+ timezone="America/New_York"
139
+ variant="updated"
140
+ {...props}
141
+ />
142
+ </div>
143
+ )
144
+ }
145
+
146
+ export default TimestampUpdatedAlign
@@ -2,6 +2,20 @@ examples:
2
2
 
3
3
  rails:
4
4
  - timestamp_default: Default
5
+ - timestamp_align: Alignments
6
+ - timestamp_timezones: Timezones
7
+ - timestamp_timezones_align: Timezones - Alignments
8
+ - timestamp_updated: Last Updated by
9
+ - timestamp_updated_align: Last Updated by - Alignments
10
+ - timestamp_elapsed: Time Ago
11
+ - timestamp_elapsed_align: Time Ago - Alignments
5
12
 
6
13
  react:
7
14
  - timestamp_default: Default
15
+ - timestamp_align: Alignments
16
+ - timestamp_timezones: Timezones
17
+ - timestamp_timezones_align: Timezones - Alignments
18
+ - timestamp_updated: Last Updated by
19
+ - timestamp_updated_align: Last Updated by - Alignments
20
+ - timestamp_elapsed: Time Ago
21
+ - timestamp_elapsed_align: Time Ago - Alignments
@@ -1 +1,8 @@
1
1
  export { default as TimestampDefault } from './_timestamp_default.jsx'
2
+ export { default as TimestampAlign } from './_timestamp_align.jsx'
3
+ export { default as TimestampTimezones } from './_timestamp_timezones.jsx'
4
+ export { default as TimestampTimezonesAlign } from './_timestamp_timezones_align.jsx'
5
+ export { default as TimestampUpdated } from './_timestamp_updated.jsx'
6
+ export { default as TimestampUpdatedAlign } from './_timestamp_updated_align.jsx'
7
+ export { default as TimestampElapsed } from './_timestamp_elapsed.jsx'
8
+ export { default as TimestampElapsedAlign } from './_timestamp_elapsed_align.jsx'
@@ -3,14 +3,80 @@
3
3
  module Playbook
4
4
  module PbTimestamp
5
5
  class Timestamp
6
+ include ActionView::Helpers::DateHelper
6
7
  include Playbook::Props
7
8
 
8
9
  partial "pb_timestamp/timestamp"
9
10
 
10
11
  prop :text
12
+ prop :timestamp, required: true
13
+
14
+ prop :dark, type: Playbook::Props::Boolean,
15
+ default: false
16
+ prop :align, type: Playbook::Props::Enum,
17
+ values: %w[left center right],
18
+ default: "left"
19
+ prop :show_date, type: Playbook::Props::Boolean,
20
+ default: true
21
+ prop :show_timezone, type: Playbook::Props::Boolean,
22
+ default: false
23
+ prop :show_user, type: Playbook::Props::Boolean,
24
+ default: false
25
+ prop :timezone, default: "America/New_York"
26
+ prop :variant, type: Playbook::Props::Enum,
27
+ values: %w[default elapsed updated],
28
+ default: "default"
11
29
 
12
30
  def classname
13
- generate_classname("pb_timestamp_kit")
31
+ generate_classname("pb_timestamp_kit", variant_class, align)
32
+ end
33
+
34
+ def format_year_string
35
+ pb_date_time.to_year != DateTime.now.year.to_s ? ", #{pb_date_time.to_year}" : ""
36
+ end
37
+
38
+ def format_time_string
39
+ "#{pb_date_time.to_hour}:#{pb_date_time.to_minutes}#{pb_date_time.to_meridian} #{format_timezone_string}".strip
40
+ end
41
+
42
+ def format_timezone_string
43
+ timezone && show_timezone ? pb_date_time.to_timezone.to_s : ""
44
+ end
45
+
46
+ def format_date_string
47
+ "#{pb_date_time.to_month_downcase} #{pb_date_time.to_unpadded_day}#{format_year_string}"
48
+ end
49
+
50
+ def format_datetime_string
51
+ "#{format_date_string} &middot; #{format_time_string}".html_safe
52
+ end
53
+
54
+ def format_updated_string
55
+ user_string = show_user ? " by #{text}" : ""
56
+
57
+ case variant
58
+ when "updated"
59
+ datetime_string = " on #{format_date_string} at #{format_time_string}"
60
+ when "elapsed"
61
+ datetime_string = " #{time_ago_in_words(pb_date_time.convert_to_timestamp)} ago"
62
+ end
63
+
64
+ "Last updated#{user_string}#{datetime_string}"
65
+ end
66
+
67
+ private
68
+
69
+ def pb_date_time
70
+ Playbook::PbKit::PbDateTime.new(timestamp, timezone)
71
+ end
72
+
73
+ def variant_class
74
+ case variant
75
+ when "updated"
76
+ "updated"
77
+ when "elapsed"
78
+ "elapsed"
79
+ end
14
80
  end
15
81
  end
16
82
  end