playbook_ui 9.4.0.pre.alpha2 → 9.6.1.pre.deps1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +1 -0
  3. data/app/pb_kits/playbook/data/menu.yml +1 -0
  4. data/app/pb_kits/playbook/index.js +4 -3
  5. data/app/pb_kits/playbook/pb_checkbox/_checkbox.jsx +2 -1
  6. data/app/pb_kits/playbook/pb_checkbox/_checkbox.scss +3 -2
  7. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_indeterminate.jsx +67 -9
  8. data/app/pb_kits/playbook/pb_date_stacked/_date_stacked.jsx +11 -45
  9. data/app/pb_kits/playbook/pb_date_stacked/date_stacked.html.erb +6 -17
  10. data/app/pb_kits/playbook/pb_date_stacked/date_stacked.rb +5 -12
  11. data/app/pb_kits/playbook/pb_date_stacked/docs/example.yml +1 -3
  12. data/app/pb_kits/playbook/pb_date_stacked/docs/index.js +0 -1
  13. data/app/pb_kits/playbook/pb_date_time_stacked/_date_time_stacked.jsx +16 -32
  14. data/app/pb_kits/playbook/pb_date_time_stacked/_date_time_stacked.scss +4 -23
  15. data/app/pb_kits/playbook/pb_date_time_stacked/date_time_stacked.html.erb +8 -12
  16. data/app/pb_kits/playbook/pb_date_time_stacked/date_time_stacked.rb +2 -9
  17. data/app/pb_kits/playbook/pb_date_time_stacked/docs/_date_time_stacked_default.html.erb +1 -8
  18. data/app/pb_kits/playbook/pb_date_time_stacked/docs/_date_time_stacked_default.jsx +1 -19
  19. data/app/pb_kits/playbook/pb_dialog/dialog.test.jsx +1 -1
  20. data/app/pb_kits/playbook/pb_flex/_flex.jsx +1 -6
  21. data/app/pb_kits/playbook/pb_icon/_icon.jsx +20 -5
  22. data/app/pb_kits/playbook/pb_icon/icon.html.erb +4 -2
  23. data/app/pb_kits/playbook/pb_loading_inline/_loading_inline.jsx +1 -0
  24. data/app/pb_kits/playbook/pb_loading_inline/loading_inline.html.erb +1 -1
  25. data/app/pb_kits/playbook/pb_nav/_item.jsx +0 -2
  26. data/app/pb_kits/playbook/pb_nav/item.html.erb +2 -2
  27. data/app/pb_kits/playbook/pb_passphrase/_passphrase.jsx +205 -0
  28. data/app/pb_kits/playbook/pb_passphrase/_passphrase.scss +73 -0
  29. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_common.jsx +33 -0
  30. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_default.html.erb +3 -0
  31. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_default.jsx +31 -0
  32. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_default.md +1 -0
  33. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_input_props.html.erb +16 -0
  34. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_input_props.jsx +56 -0
  35. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_input_props.md +1 -0
  36. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_meter_settings.html.erb +10 -0
  37. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_meter_settings.jsx +68 -0
  38. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_meter_settings.md +9 -0
  39. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_strength_change.jsx +33 -0
  40. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_strength_change.md +3 -0
  41. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_tips.html.erb +26 -0
  42. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_tips.jsx +54 -0
  43. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_tips.md +1 -0
  44. data/app/pb_kits/playbook/pb_passphrase/docs/example.yml +15 -0
  45. data/app/pb_kits/playbook/pb_passphrase/docs/index.js +6 -0
  46. data/app/pb_kits/playbook/pb_passphrase/passphrase.html.erb +1 -0
  47. data/app/pb_kits/playbook/pb_passphrase/passphrase.rb +36 -0
  48. data/app/pb_kits/playbook/pb_passphrase/passphrase.test.jsx +123 -0
  49. data/app/pb_kits/playbook/pb_passphrase/passwordStrength.js +55 -0
  50. data/app/pb_kits/playbook/pb_section_separator/_section_separator.jsx +3 -7
  51. data/app/pb_kits/playbook/pb_time_stacked/time_stacked.html.erb +2 -2
  52. data/app/pb_kits/playbook/react_rails_kits.js +1 -0
  53. data/lib/playbook/version.rb +1 -1
  54. metadata +35 -16
  55. data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_bold.html.erb +0 -5
  56. data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_bold.jsx +0 -38
  57. data/app/pb_kits/playbook/pb_date_time_stacked/date_time_stacked.test.js +0 -35
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f839b72cd21876e826496faaa29c3d306c24dd29eb714e46bc269fe88c39f445
4
- data.tar.gz: b8ee3b0cc53c15e3898c95777c96d394b5a7f9d6b659322add05c61cbfcf1b4b
3
+ metadata.gz: f3b9ef21adf192741b943e8414384710c8dd469b4ff4e22ed575b644b768947d
4
+ data.tar.gz: 509d73ae151722f9197a7b306f3c654275cd5da415827f763272caf418aa36de
5
5
  SHA512:
6
- metadata.gz: cfdc5aa4001dd522efc77c2919c45ce514eebe0a6f8b8754ebecdce36823f5647880432f3f4a66e540a48a6683864a35ce7aca7117709b8a35ce3e06511813c3
7
- data.tar.gz: 3ca9ce55526340f77d313ff6e9e1bb5e3fd34cb4319df3a9432511b8852872653410658d456746fb949bbf96105c7d300c598c928a6099f776a8b70e2847552c
6
+ metadata.gz: bb93e79a227425f0aa6128daf4e796fd046e2f3cd4bd6bd285a87e203a86e4a292753beecd9ab2ae922c548358ce8b5e2ce91deec36d4288e5464d36b6bdf7e7
7
+ data.tar.gz: 18ac690831680a74b24379e326ca925a5dabc7acb0ac5b53cc657bca2766b1aff4c8e2a517faf12f1aa9876542e2a11ac09a60e0325911ff19fe72119b818e42
@@ -55,6 +55,7 @@
55
55
  @import 'pb_multiple_users_stacked/multiple_users_stacked';
56
56
  @import 'pb_nav/nav';
57
57
  @import 'pb_online_status/online_status';
58
+ @import 'pb_passphrase/passphrase';
58
59
  @import 'pb_person/person';
59
60
  @import 'pb_person_contact/person_contact';
60
61
  @import 'pb_pill/pill';
@@ -26,6 +26,7 @@ kits:
26
26
  - form
27
27
  - form_group
28
28
  - form_pill
29
+ - passphrase
29
30
  - radio
30
31
  - rich_text_editor
31
32
  - select
@@ -61,6 +61,7 @@ export MultipleUsersStacked from './pb_multiple_users_stacked/_multiple_users_st
61
61
  export Nav from './pb_nav/_nav.jsx'
62
62
  export NavItem from './pb_nav/_item.jsx'
63
63
  export OnlineStatus from './pb_online_status/_online_status.jsx'
64
+ export Passphrase from './pb_passphrase/_passphrase.jsx'
64
65
  export PbReactPopover from './pb_popover/_popover.jsx'
65
66
  export Person from './pb_person/_person.jsx'
66
67
  export PersonContact from './pb_person_contact/_person_contact.jsx'
@@ -84,13 +85,13 @@ export StatChange from './pb_stat_change/_stat_change.jsx'
84
85
  export StatValue from './pb_stat_value/_stat_value.jsx'
85
86
  export Table from './pb_table/_table.jsx'
86
87
  export TableRow from './pb_table/_table_row.jsx'
87
- export Textarea from './pb_textarea/_textarea.jsx'
88
88
  export TextInput from './pb_text_input/_text_input.jsx'
89
+ export Textarea from './pb_textarea/_textarea.jsx'
89
90
  export Time from './pb_time/_time.jsx'
90
- export Timeline from './pb_timeline/_timeline.jsx'
91
+ export TimeRangeInline from './pb_time_range_inline/_time_range_inline.jsx'
91
92
  export TimeStacked from './pb_time_stacked/_time_stacked.jsx'
93
+ export Timeline from './pb_timeline/_timeline.jsx'
92
94
  export Timestamp from './pb_timestamp/_timestamp.jsx'
93
- export TimeRangeInline from './pb_time_range_inline/_time_range_inline.jsx'
94
95
  export Title from './pb_title/_title.jsx'
95
96
  export TitleCount from './pb_title_count/_title_count.jsx'
96
97
  export TitleDetail from './pb_title_detail/_title_detail.jsx'
@@ -53,9 +53,10 @@ const Checkbox = (props: CheckboxProps) => {
53
53
 
54
54
  useEffect(() => {
55
55
  if (checkRef.current) {
56
+ checkRef.current.checked = checked
56
57
  checkRef.current.indeterminate = indeterminate
57
58
  }
58
- }, [indeterminate])
59
+ }, [indeterminate, checked])
59
60
 
60
61
  return (
61
62
  <label
@@ -4,12 +4,13 @@
4
4
  $transition: $transition_cubic;
5
5
 
6
6
  [class^=pb_checkbox_kit] {
7
- display: inline-flex;
8
7
  cursor: pointer;
8
+ display: inline-flex;
9
+ vertical-align: middle;
9
10
  .pb_checkbox_label {
10
- padding-left: $space_xs;
11
11
  cursor: pointer;
12
12
  font-size: $text_lt_default;
13
+ padding-left: $space_xs;
13
14
  user-select: none;
14
15
  }
15
16
 
@@ -1,15 +1,73 @@
1
- import React from 'react'
2
- import { Checkbox } from '../..'
1
+ import React, { useState } from 'react'
2
+ import { Checkbox, Table } from '../..'
3
3
 
4
4
  const CheckboxIndeterminate = (props) => {
5
+ const [checkboxes, setCheckboxes] = useState([
6
+ { name: 'Coffee', checked: false },
7
+ { name: 'Ice Cream', checked: false },
8
+ { name: 'Chocolate', checked: true },
9
+ ])
10
+
11
+ const isAllChecked = !checkboxes.find((checkbox) => !checkbox.checked)
12
+ const isNoneChecked = !checkboxes.find((checkbox) => checkbox.checked)
13
+
14
+ const processCheckboxes = (checked) =>
15
+ checkboxes.slice(0).map((checkbox) => {
16
+ checkbox.checked = checked
17
+ return checkbox
18
+ })
19
+
20
+ const onToggleAll = () => {
21
+ setCheckboxes(
22
+ isNoneChecked ? processCheckboxes(true) : processCheckboxes(false)
23
+ )
24
+ }
25
+
26
+ const updateCheckboxes = (checkbox, index) => {
27
+ const newCheckboxes = checkboxes.slice(0)
28
+ newCheckboxes[index].checked = !checkbox.checked
29
+ setCheckboxes(newCheckboxes)
30
+ }
31
+
5
32
  return (
6
- <Checkbox
7
- indeterminate
8
- name="checkbox-name"
9
- text="Indeterminate State"
10
- value="check-box value"
11
- {...props}
12
- />
33
+ <Table
34
+ container={false}
35
+ size="md"
36
+ >
37
+ <thead>
38
+ <tr>
39
+ <th>
40
+ <Checkbox
41
+ checked={isAllChecked}
42
+ indeterminate={!isAllChecked && !isNoneChecked}
43
+ name="checkbox-name"
44
+ onChange={onToggleAll}
45
+ text={isNoneChecked ? 'Check All' : 'Uncheck All'}
46
+ value="check-box value"
47
+ {...props}
48
+ />
49
+ </th>
50
+ </tr>
51
+ </thead>
52
+ <tbody>
53
+ {checkboxes.map((checkbox, index) => (
54
+ <tr key={index}>
55
+ <td>
56
+ <Checkbox
57
+ checked={checkbox.checked}
58
+ name={checkbox.name}
59
+ onChange={() => {
60
+ updateCheckboxes(checkbox, index)
61
+ }}
62
+ text={checkbox.name}
63
+ value="check-box value"
64
+ {...props}
65
+ />
66
+ </td>
67
+ </tr>
68
+ ))}
69
+ </tbody>
70
+ </Table>
13
71
  )
14
72
  }
15
73
 
@@ -9,7 +9,6 @@ import { globalProps } from '../utilities/globalProps.js'
9
9
 
10
10
  type DateStackedProps = {
11
11
  align?: "left" | "center" | "right",
12
- bold?: boolean,
13
12
  className?: string | array<string>,
14
13
  dark?: boolean,
15
14
  data?: string,
@@ -27,7 +26,6 @@ const sizes = {
27
26
  const DateStacked = (props: DateStackedProps) => {
28
27
  const {
29
28
  align = 'left',
30
- bold = false,
31
29
  reverse = false,
32
30
  className,
33
31
  dark = false,
@@ -48,51 +46,19 @@ const DateStacked = (props: DateStackedProps) => {
48
46
  const inputYear = dateTimestamp.toYear().toString()
49
47
 
50
48
  return (
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
- </>
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>
93
60
  </If>
94
61
  </div>
95
-
96
62
  )
97
63
  }
98
64
 
@@ -3,22 +3,11 @@
3
3
  data: object.data,
4
4
  class: object.classname) do %>
5
5
 
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 %>
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" }) %>
23
12
 
24
13
  <% end %>
@@ -14,11 +14,9 @@ module Playbook
14
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
19
17
 
20
18
  def classname
21
- generate_classname("pb_date_stacked_kit", align, size, bold, reverse_class, dark_class)
19
+ generate_classname("pb_date_stacked_kit", align, size, reverse_class, dark_class)
22
20
  end
23
21
 
24
22
  def title_size
@@ -33,7 +31,10 @@ module Playbook
33
31
  end
34
32
 
35
33
  def month
36
- pb_date_time.to_month.capitalize
34
+ month = Playbook::PbKit::PbDateTime.new(date)
35
+ content_tag(:time, datetime: month.to_iso) do
36
+ "#{month.to_month}"
37
+ end
37
38
  end
38
39
 
39
40
  def year
@@ -47,16 +48,8 @@ module Playbook
47
48
  end
48
49
  end
49
50
 
50
- def bold_class
51
- bold ? "bold" : nil
52
- end
53
-
54
51
  private
55
52
 
56
- def pb_date_time
57
- Playbook::PbKit::PbDateTime.new(date)
58
- end
59
-
60
53
  def reverse_class
61
54
  reverse ? "reverse" : nil
62
55
  end
@@ -6,12 +6,10 @@ 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
-
11
9
 
12
10
  react:
13
11
  - date_stacked_default: Default
14
12
  - date_stacked_not_current_year: Not Current Year
15
13
  - date_stacked_reverse: Day & Month Reverse
16
14
  - date_stacked_sizes: Sizes
17
- - date_stacked_bold: Bold
15
+ - date_stacked_align: Alignment
@@ -1,4 +1,3 @@
1
- export { default as DateStackedBold } from './_date_stacked_bold.jsx'
2
1
  export { default as DateStackedDefault } from './_date_stacked_default.jsx'
3
2
  export { default as DateStackedNotCurrentYear } from './_date_stacked_not_current_year.jsx'
4
3
  export { default as DateStackedReverse } from './_date_stacked_reverse.jsx'
@@ -1,59 +1,43 @@
1
-
2
1
  /* @flow */
3
2
 
4
3
  import React from 'react'
5
- import { buildCss } from '../utilities/props'
6
- import { deprecatedProps, globalProps } from '../utilities/globalProps.js'
7
-
8
- import { DateStacked, Flex, FlexItem, SectionSeparator, TimeStacked } from '../'
4
+ import { DateStacked, Flex, FlexItem, TimeStacked } from '../'
5
+ import { buildDataProps } from '../utilities/props'
6
+ import { globalProps } from '../utilities/globalProps.js'
9
7
 
10
8
  type DateTimeStackedProps = {
9
+ data?: string,
11
10
  id?: string,
12
- date: string,
13
- datetime: string,
11
+ date: date,
14
12
  dark: boolean,
15
- timeZone?: string,
16
13
  }
17
14
 
18
15
  const DateTimeStacked = (props: DateTimeStackedProps) => {
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))
16
+ const { date, data = {}, dark } = props,
17
+ dataProps = buildDataProps(data)
29
18
 
30
19
  return (
31
20
  <Flex
32
- inline="flex-container"
33
- vertical="stretch"
34
- {...props}
21
+ className={globalProps(props)}
22
+ orientation="row"
23
+ vertical="center"
24
+ {...dataProps}
35
25
  >
36
26
  <FlexItem>
37
27
  <DateStacked
38
28
  align="right"
39
- bold
40
29
  dark={dark}
41
- date={date || datetime}
42
- timeZone={timeZone}
30
+ date={date}
31
+ reverse
32
+ size="sm"
43
33
  />
44
34
  </FlexItem>
45
-
46
- <SectionSeparator
47
- className="date-time-padding"
48
- orientation="vertical"
49
- />
50
35
  <FlexItem>
51
36
  <TimeStacked
52
- className={classes}
37
+ className="pb_date_time_stacked_kit"
53
38
  dark={dark}
54
- date={date || datetime}
55
39
  tag="caption"
56
- timeZone={timeZone}
40
+ time={date}
57
41
  />
58
42
  </FlexItem>
59
43
  </Flex>
@@ -1,25 +1,6 @@
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
- }
1
+ @import "../pb_title/title";
2
+ @import "../pb_body/body";
19
3
 
4
+ .pb_date_time_stacked_kit {
5
+ padding-left: $space-xs;
20
6
  }
21
- .date-time-padding {
22
- padding-right: ($space_xs / 2);
23
- padding-left: ($space_xs / 2);
24
- }
25
-