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

Sign up to get free protection for your applications and to get access to all the features.
Files changed (106) 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 +1 -0
  5. data/app/pb_kits/playbook/pb_background/background.rb +0 -1
  6. data/app/pb_kits/playbook/pb_badge/_badge.jsx +26 -1
  7. data/app/pb_kits/playbook/pb_bread_crumbs/_bread_crumb_item.jsx +51 -0
  8. data/app/pb_kits/playbook/pb_bread_crumbs/_bread_crumbs.jsx +49 -0
  9. data/app/pb_kits/playbook/pb_bread_crumbs/_bread_crumbs.scss +55 -0
  10. data/app/pb_kits/playbook/pb_bread_crumbs/bread_crumb_item.html.erb +9 -0
  11. data/app/pb_kits/playbook/pb_bread_crumbs/bread_crumb_item.rb +12 -0
  12. data/app/pb_kits/playbook/pb_bread_crumbs/bread_crumbs.html.erb +7 -0
  13. data/app/pb_kits/playbook/pb_bread_crumbs/bread_crumbs.rb +11 -0
  14. data/app/pb_kits/playbook/pb_bread_crumbs/bread_crumbs.test.js +35 -0
  15. data/app/pb_kits/playbook/pb_bread_crumbs/docs/_bread_crumbs_default.html.erb +17 -0
  16. data/app/pb_kits/playbook/pb_bread_crumbs/docs/_bread_crumbs_default.jsx +56 -0
  17. data/app/pb_kits/playbook/pb_bread_crumbs/docs/_description.md +1 -0
  18. data/app/pb_kits/playbook/pb_bread_crumbs/docs/example.yml +7 -0
  19. data/app/pb_kits/playbook/pb_bread_crumbs/docs/index.js +1 -0
  20. data/app/pb_kits/playbook/pb_button/_button.jsx +8 -19
  21. data/app/pb_kits/playbook/pb_button/button.rb +5 -3
  22. data/app/pb_kits/playbook/pb_button/docs/_button_accessibility.html.erb +1 -1
  23. data/app/pb_kits/playbook/pb_button/docs/_button_accessibility.jsx +1 -1
  24. data/app/pb_kits/playbook/pb_button/docs/_button_link.html.erb +3 -3
  25. data/app/pb_kits/playbook/pb_button/docs/_button_link.jsx +3 -0
  26. data/app/pb_kits/playbook/pb_button/docs/_button_loading.html.erb +3 -3
  27. data/app/pb_kits/playbook/pb_button/docs/_button_loading.jsx +3 -0
  28. data/app/pb_kits/playbook/pb_circle_chart/circle_chart.rb +9 -10
  29. data/app/pb_kits/playbook/pb_circle_icon_button/circle_icon_button.rb +4 -2
  30. data/app/pb_kits/playbook/pb_date_picker/_date_picker.jsx +6 -1
  31. data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.js +3 -0
  32. data/app/pb_kits/playbook/pb_date_stacked/date_stacked.rb +6 -8
  33. data/app/pb_kits/playbook/pb_date_time_stacked/date_time_stacked.rb +6 -6
  34. data/app/pb_kits/playbook/pb_distribution_bar/distribution_bar.rb +2 -2
  35. data/app/pb_kits/playbook/pb_filter/filter.rb +1 -1
  36. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/fixed_confirmation_toast.rb +1 -1
  37. data/app/pb_kits/playbook/pb_flex/flex.rb +4 -4
  38. data/app/pb_kits/playbook/pb_form/form.rb +1 -1
  39. data/app/pb_kits/playbook/pb_form_pill/_form_pill.jsx +12 -2
  40. data/app/pb_kits/playbook/pb_form_pill/_form_pill.scss +19 -0
  41. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_size.html.erb +13 -0
  42. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_size.jsx +25 -0
  43. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_user.html.erb +4 -5
  44. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_user.jsx +2 -6
  45. data/app/pb_kits/playbook/pb_form_pill/docs/example.yml +2 -0
  46. data/app/pb_kits/playbook/pb_form_pill/docs/index.js +1 -0
  47. data/app/pb_kits/playbook/pb_form_pill/form_pill.html.erb +1 -1
  48. data/app/pb_kits/playbook/pb_form_pill/form_pill.rb +5 -0
  49. data/app/pb_kits/playbook/pb_icon_stat_value/icon_stat_value.rb +0 -1
  50. data/app/pb_kits/playbook/pb_passphrase/_passphrase.jsx +13 -11
  51. data/app/pb_kits/playbook/pb_passphrase/_passphrase.scss +18 -13
  52. data/app/pb_kits/playbook/pb_passphrase/useZxcvbn.js +3 -3
  53. data/app/pb_kits/playbook/pb_progress_pills/progress_pills.rb +2 -1
  54. data/app/pb_kits/playbook/pb_progress_step/progress_step.rb +1 -1
  55. data/app/pb_kits/playbook/pb_progress_step/progress_step_item.rb +1 -1
  56. data/app/pb_kits/playbook/pb_rich_text_editor/_rich_text_editor.jsx +10 -0
  57. data/app/pb_kits/playbook/pb_rich_text_editor/_rich_text_editor.scss +61 -0
  58. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_inline.html.erb +6 -0
  59. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_inline.jsx +16 -0
  60. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_toolbar_bottom.html.erb +4 -0
  61. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_toolbar_bottom.jsx +14 -0
  62. data/app/pb_kits/playbook/pb_rich_text_editor/docs/example.yml +4 -0
  63. data/app/pb_kits/playbook/pb_rich_text_editor/docs/index.js +2 -0
  64. data/app/pb_kits/playbook/pb_rich_text_editor/rich_text_editor.rb +9 -2
  65. data/app/pb_kits/playbook/pb_selectable_card_icon/selectable_card_icon.rb +1 -1
  66. data/app/pb_kits/playbook/pb_selectable_icon/selectable_icon.rb +1 -1
  67. data/app/pb_kits/playbook/pb_stat_change/stat_change.rb +8 -12
  68. data/app/pb_kits/playbook/pb_text_input/_text_input.jsx +83 -31
  69. data/app/pb_kits/playbook/pb_text_input/_text_input.scss +106 -0
  70. data/app/pb_kits/playbook/pb_text_input/add_on.html.erb +13 -0
  71. data/app/pb_kits/playbook/pb_text_input/add_on.rb +30 -0
  72. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_add_on.html.erb +24 -0
  73. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_add_on.jsx +82 -0
  74. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_custom.html.erb +1 -1
  75. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_inline.html.erb +5 -0
  76. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_inline.jsx +22 -0
  77. data/app/pb_kits/playbook/pb_text_input/docs/example.yml +4 -0
  78. data/app/pb_kits/playbook/pb_text_input/docs/index.js +2 -0
  79. data/app/pb_kits/playbook/pb_text_input/text_input.html.erb +7 -16
  80. data/app/pb_kits/playbook/pb_text_input/text_input.rb +43 -3
  81. data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +1 -1
  82. data/app/pb_kits/playbook/pb_typeahead/_typeahead.jsx +11 -2
  83. data/app/pb_kits/playbook/pb_typeahead/_typeahead.scss +23 -0
  84. data/app/pb_kits/playbook/pb_typeahead/components/MultiValue.jsx +23 -11
  85. data/app/pb_kits/playbook/pb_typeahead/components/Placeholder.jsx +17 -4
  86. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_createable.jsx +25 -0
  87. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_inline.html.erb +36 -0
  88. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_inline.jsx +43 -0
  89. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_multi_kit.html.erb +35 -0
  90. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_multi_kit.jsx +44 -0
  91. data/app/pb_kits/playbook/pb_typeahead/docs/example.yml +5 -0
  92. data/app/pb_kits/playbook/pb_typeahead/docs/index.js +8 -5
  93. data/app/pb_kits/playbook/pb_typeahead/typeahead.html.erb +1 -1
  94. data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +18 -2
  95. data/app/pb_kits/playbook/pb_user_badge/user_badge.rb +1 -1
  96. data/lib/playbook/forms/builder/action_area.rb +2 -2
  97. data/lib/playbook/forms/builder/collection_select_field.rb +2 -2
  98. data/lib/playbook/forms/builder/select_field.rb +1 -1
  99. data/lib/playbook/kit_resolver.rb +1 -1
  100. data/lib/playbook/markdown/template_handler.rb +4 -2
  101. data/lib/playbook/pb_doc_helper.rb +4 -2
  102. data/lib/playbook/props.rb +2 -4
  103. data/lib/playbook/props/base.rb +1 -2
  104. data/lib/playbook/props/nested_props.rb +23 -0
  105. data/lib/playbook/version.rb +1 -1
  106. metadata +56 -26
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 27cd1418907251e1ac5b3f234dcbf01e8ee6ab30e179511e82139fe9a912cbf7
4
- data.tar.gz: 8b37fe666405f0b156341f4bcbe7e338341800bf9b3b4c9f9793fcfca515211f
3
+ metadata.gz: 454a36effc86e9d19eeb9e613a961a581d16ff491c2933cacffe0732669327f7
4
+ data.tar.gz: b3656b823c07b3f5b2653205d1a7a42165a86a9a429759b65ddc0e05a213850b
5
5
  SHA512:
6
- metadata.gz: 32e94d16d64743934c313661b1f4e86f8cd8768cb9e52576fd10d4c089cd9ca2ece7ec13549cd6a37304d1afb1b137c56bb3acf03a950ac31166f1d277e8311d
7
- data.tar.gz: 7a835ec81990710a3638f15f9a4ef1b9abdb57a942a9e993e718523cfe880c940febee3b4f1c02e0155de076032b3551550383d6018a198aab839519c00ff801
6
+ metadata.gz: 6d9eed8e5c343aae96350758b62eed4ddcf68f92c9df97909b6743eb74b66e9afbb0625642968f19335066a27ee38593be6e191e97ff5277ca33a690f3f2c4cf
7
+ data.tar.gz: 7c45e5fa6c94dbb0e3c7cdc36de9e2d9655511122309f46e2b45294697fe84d7b8af213adbb88e2bc45713319a1c4988cd8996df894c73341dd0de696427a513
@@ -1,6 +1,7 @@
1
1
  @import 'tokens/fonts';
2
2
  @import 'pb_background/background';
3
3
  @import 'pb_body/body';
4
+ @import 'pb_bread_crumbs/bread_crumbs';
4
5
  @import 'pb_button/button';
5
6
  @import 'pb_button_toolbar/button_toolbar';
6
7
  @import 'pb_caption/caption';
@@ -2,6 +2,7 @@ kits:
2
2
  - avatar
3
3
  - avatar_action_button
4
4
  - background
5
+ - bread_crumbs
5
6
  - buttons:
6
7
  - button
7
8
  - button_toolbar
@@ -10,6 +10,7 @@ export Background from './pb_background/_background.jsx'
10
10
  export Badge from './pb_badge/_badge.jsx'
11
11
  export BarGraph from './pb_bar_graph/_bar_graph.jsx'
12
12
  export Body from './pb_body/_body.jsx'
13
+ export BreadCrumbs from './pb_bread_crumbs/_bread_crumbs.jsx'
13
14
  export Button from './pb_button/_button.jsx'
14
15
  export ButtonToolbar from './pb_button_toolbar/_button_toolbar.jsx'
15
16
  export Caption from './pb_caption/_caption.jsx'
@@ -12,7 +12,6 @@ module Playbook
12
12
  values: %w[h1 h2 h3 h4 h5 h6 p div span],
13
13
  default: "div"
14
14
 
15
-
16
15
  def classname
17
16
  generate_classname("pb_background_kit", image_classname, background_color_classname, separator: " ")
18
17
  end
@@ -3,6 +3,7 @@
3
3
  import React from 'react'
4
4
  import classnames from 'classnames'
5
5
  import { globalProps } from '../utilities/globalProps.js'
6
+ import { Icon } from '../'
6
7
 
7
8
  import {
8
9
  buildAriaProps,
@@ -13,8 +14,15 @@ import {
13
14
  type BadgeProps = {
14
15
  aria?: object,
15
16
  className?: string,
17
+ closeProps?: {
18
+ onClick?: EventHandler,
19
+ onMouseDown?: EventHandler,
20
+ onTouchEnd?: EventHandler,
21
+ },
16
22
  data?: object,
17
23
  id?: string,
24
+ removeIcon?: Boolean,
25
+ removeOnClick?: EventHandler,
18
26
  rounded?: boolean,
19
27
  text?: string,
20
28
  variant?: "error" | "info" | "neutral" | "primary" | "success" | "warning",
@@ -23,8 +31,11 @@ const Badge = (props: BadgeProps) => {
23
31
  const {
24
32
  aria = {},
25
33
  className,
34
+ closeProps = {},
26
35
  data = {},
27
36
  id,
37
+ removeIcon = false,
38
+ removeOnClick = () => {},
28
39
  rounded = false,
29
40
  text,
30
41
  variant = 'neutral',
@@ -44,7 +55,21 @@ const Badge = (props: BadgeProps) => {
44
55
  className={css}
45
56
  id={id}
46
57
  >
47
- <span>{text}</span>
58
+ <span>
59
+ {text}
60
+ <If condition={removeIcon}>
61
+ <span
62
+ onClick={removeOnClick}
63
+ style={{ cursor: 'pointer' }}
64
+ {...closeProps}
65
+ >
66
+ <Icon
67
+ fixedWidth
68
+ icon="times"
69
+ />
70
+ </span>
71
+ </If>
72
+ </span>
48
73
  </div>
49
74
  )
50
75
  }
@@ -0,0 +1,51 @@
1
+ /* @flow */
2
+
3
+ import React from 'react'
4
+ import classnames from 'classnames'
5
+ import { globalProps } from '../utilities/globalProps.js'
6
+
7
+ import {
8
+ buildAriaProps,
9
+ buildCss,
10
+ buildDataProps,
11
+ } from '../utilities/props'
12
+
13
+ type BreadCrumbItemProps = {
14
+ aria?: object,
15
+ className?: string,
16
+ data?: object,
17
+ id?: string,
18
+ component?: element
19
+ }
20
+ const BreadCrumbItem = (props: BreadCrumbItemProps) => {
21
+ const {
22
+ aria = {},
23
+ className,
24
+ data = {},
25
+ id,
26
+ component = 'a',
27
+ ...rest
28
+ } = props
29
+ const ariaProps = buildAriaProps(aria)
30
+ const dataProps = buildDataProps(data)
31
+ const css = classnames(
32
+ buildCss('pb_bread_crumb_item_kit'),
33
+ globalProps(props),
34
+ className
35
+ )
36
+ const Component = component || 'span'
37
+ return (
38
+ <div
39
+ {...ariaProps}
40
+ {...dataProps}
41
+ className={css}
42
+ id={id}
43
+ >
44
+ <Component
45
+ className="pb_bread_crumb_item"
46
+ {...rest}
47
+ />
48
+ </div>
49
+ )
50
+ }
51
+ export default BreadCrumbItem
@@ -0,0 +1,49 @@
1
+ /* @flow */
2
+
3
+ import React from 'react'
4
+ import classnames from 'classnames'
5
+ import { globalProps } from '../utilities/globalProps.js'
6
+
7
+ import {
8
+ buildAriaProps,
9
+ buildCss,
10
+ buildDataProps,
11
+ } from '../utilities/props'
12
+
13
+ type BreadCrumbsProps = {
14
+ aria?: object,
15
+ className?: string,
16
+ data?: object,
17
+ id?: string,
18
+ text?: string,
19
+ children?: node
20
+ }
21
+ const BreadCrumbs = (props: BreadCrumbsProps) => {
22
+ const {
23
+ aria = { label: 'Breadcrumb Navigation' },
24
+ className,
25
+ data = {},
26
+ id,
27
+ children,
28
+ } = props
29
+ const ariaProps = buildAriaProps(aria)
30
+ const dataProps = buildDataProps(data)
31
+ const css = classnames(
32
+ buildCss('pb_bread_crumbs_kit'),
33
+ globalProps(props),
34
+ className
35
+ )
36
+
37
+ return (
38
+ <nav
39
+ {...ariaProps}
40
+ {...dataProps}
41
+ className={css}
42
+ id={id}
43
+ >
44
+ {children}
45
+ </nav>
46
+ )
47
+ }
48
+
49
+ export default BreadCrumbs
@@ -0,0 +1,55 @@
1
+ @import "../tokens/border_radius";
2
+ @import "../tokens/colors";
3
+ @import "../tokens/opacity";
4
+ @import "../tokens/spacing";
5
+ @import "../tokens/typography";
6
+
7
+ [class^=pb_bread_crumbs_kit] {
8
+ $pb_badge_height: 18px;
9
+
10
+ display: inline-flex;
11
+ align-items: center;
12
+ justify-content: center;
13
+ border-radius: $border_rad_light;
14
+ padding: 0 $space_xs/2;
15
+ border-width: 1px;
16
+ border-style: solid;
17
+ border-color: $card_light;
18
+
19
+ svg {
20
+ margin-right: 8px;
21
+ }
22
+ .pb_bread_crumb_item {
23
+ display: flex;
24
+ flex-direction: row;
25
+ align-items: center;
26
+
27
+ }
28
+ .pb_bread_crumb_item_kit {
29
+ display: flex;
30
+ flex-direction: row;
31
+ align-items: center;
32
+ }
33
+ .pb_bread_crumb_item_kit:not(:last-child):after {
34
+ content: '/';
35
+ padding-left: 8px;
36
+ padding-right: 8px;
37
+ }
38
+
39
+ @each $color_name, $color_value in $status_colors {
40
+ &[class*=_#{$color_name}] {
41
+ background: rgba($color_value, $opacity_1);
42
+ color: map-get($status_color_text, $color_name);
43
+ }
44
+ }
45
+
46
+ &.dark {
47
+ border-width: 0;
48
+
49
+ @each $color_name, $color_value in $status_colors {
50
+ &[class*=_#{$color_name}] {
51
+ background: rgba(mix($bg_dark, $color_value, 10%), $opacity_2);
52
+ }
53
+ }
54
+ }
55
+ }
@@ -0,0 +1,9 @@
1
+ <%= content_tag(:div,
2
+ id: object.id,
3
+ data: object.data,
4
+ class: object.classname,
5
+ aria: object.aria) do%>
6
+ <%= content_tag(object.link ? 'a' : 'span', class: 'bread_crumb_item', href: object.link) do %>
7
+ <%= content.presence %>
8
+ <% end %>
9
+ <%end%>
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module PbBreadCrumbs
5
+ class BreadCrumbItem < Playbook::KitBase
6
+ prop :link, type: Playbook::Props::String
7
+ def classname
8
+ generate_classname("pb_bread_crumb_item_kit")
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,7 @@
1
+ <%= content_tag(:nav,
2
+ aria: object.aria,
3
+ id: object.id,
4
+ data: object.data,
5
+ class: object.classname) do %>
6
+ <%= content.presence %>
7
+ <% end %>
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module PbBreadCrumbs
5
+ class BreadCrumbs < Playbook::KitBase
6
+ def classname
7
+ generate_classname("pb_bread_crumbs_kit")
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,35 @@
1
+ import React from 'react'
2
+ import { render, screen } from '../utilities/test-utils'
3
+ import BreadCrumbs from './_bread_crumbs'
4
+ import BreadCrumbItem from './_bread_crumb_item'
5
+ import { Icon, Title } from '../'
6
+
7
+ it('should render bread crumbs', () => {
8
+ const testId = 'breadCrumbs'
9
+ render(
10
+ <BreadCrumbs
11
+ data={{ testid: testId }}
12
+ name={name}
13
+ >
14
+ <Icon
15
+ icon="home"
16
+ size="1x"
17
+ />
18
+ <BreadCrumbItem
19
+ dark
20
+ href="/home"
21
+ >
22
+ <Title
23
+ size="4"
24
+ tag="span"
25
+ text="Home"
26
+ />
27
+ </BreadCrumbItem>
28
+ </BreadCrumbs>
29
+ )
30
+ const kit = screen.getByTestId(testId)
31
+ const label = screen.getByText('Home')
32
+
33
+ expect(kit).toHaveClass('pb_bread_crumbs_kit')
34
+ expect(label).toHaveTextContent('Home')
35
+ })
@@ -0,0 +1,17 @@
1
+
2
+ <div>
3
+ <%= pb_rails("bread_crumbs", props: { aria: { label: "Breadcrumb Navigation" } }) do%>
4
+ <%= pb_rails("icon", props: { icon: "home"}) %>
5
+ <%= pb_rails("bread_crumbs/bread_crumb_item", props: { link: "/" }) do %>
6
+ <%= pb_rails("title", props: { size: 4, text: "Home", tag: "span" }) %>
7
+ <%end%>
8
+ <%= pb_rails("icon", props: { icon: 'users'}) %>
9
+ <%= pb_rails("bread_crumbs/bread_crumb_item", props: { link: "/users" }) do %>
10
+ <%= pb_rails("title", props: { size: 4, text: "Users", tag: "span" }) %>
11
+ <%end%>
12
+ <%= pb_rails("icon", props: { icon: "user"}) %>
13
+ <%= pb_rails("bread_crumbs/bread_crumb_item") do %>
14
+ <%= pb_rails("title", props: { size: 4, text: "User", tag: "span" }) %>
15
+ <%end%>
16
+ <%end%>
17
+ </div>
@@ -0,0 +1,56 @@
1
+ import React from 'react'
2
+ import BreadCrumbs from '../_bread_crumbs.jsx'
3
+ import { Icon, Title } from '../../'
4
+ import BreadCrumbItem from '../_bread_crumb_item'
5
+
6
+ const Link = (props) => <BreadCrumbItem {...props} />
7
+ const BreadCrumbsDefault = (props) => {
8
+ return (
9
+ <BreadCrumbs
10
+ text="+1"
11
+ {...props}
12
+ >
13
+ <Icon
14
+ icon="home"
15
+ size="1x"
16
+ />
17
+ <BreadCrumbItem
18
+ {...props}
19
+ href="/home"
20
+ >
21
+ <Title
22
+ size="4"
23
+ tag="span"
24
+ text="Home"
25
+ />
26
+ </BreadCrumbItem>
27
+ <Icon
28
+ icon="users"
29
+ size="1x"
30
+ />
31
+ <Link
32
+ {...props}
33
+ href="/users"
34
+ >
35
+ <Title
36
+ size="4"
37
+ tag="span"
38
+ text="Users"
39
+ />
40
+ </Link>
41
+ <Icon
42
+ icon="user"
43
+ size="1x"
44
+ />
45
+ <Link {...props}>
46
+ <Title
47
+ size="4"
48
+ tag="span"
49
+ text="User"
50
+ />
51
+ </Link>
52
+ </BreadCrumbs>
53
+ )
54
+ }
55
+
56
+ export default BreadCrumbsDefault
@@ -0,0 +1 @@
1
+ BreadCrumbs can be used for keeping a user aware of there route location.
@@ -0,0 +1,7 @@
1
+ examples:
2
+ rails:
3
+ - bread_crumbs_default: Default
4
+
5
+ react:
6
+ - bread_crumbs_default: Default
7
+
@@ -0,0 +1 @@
1
+ export { default as BreadCrumbsDefault } from './_bread_crumbs_default.jsx'
@@ -2,16 +2,14 @@
2
2
 
3
3
  import React from 'react'
4
4
  import classnames from 'classnames'
5
- import { buildDataProps } from '../utilities/props'
5
+ import { buildAriaProps, buildDataProps } from '../utilities/props'
6
6
  import { globalProps } from '../utilities/globalProps.js'
7
7
 
8
8
  import Icon from '../pb_icon/_icon.jsx'
9
9
 
10
10
  type EventHandler = (SyntheticInputEvent<HTMLInputElement>) => void
11
11
  type ButtonPropTypes = {
12
- aria?: {
13
- label: string,
14
- },
12
+ aria?: object,
15
13
  children?: array<React.ReactChild>,
16
14
  className?: string | array<string>,
17
15
  data?: object,
@@ -55,20 +53,9 @@ const buttonClassName = (props: ButtonPropTypes) => {
55
53
  return className
56
54
  }
57
55
 
58
- const buttonAriaProps = (props: ButtonPropTypes) => {
59
- const { aria } = props
60
- if (typeof aria !== 'object') return {}
61
- const { label } = aria
62
-
63
- const ariaProps = {}
64
-
65
- if (label !== null) ariaProps['aria-label'] = label
66
-
67
- return ariaProps
68
- }
69
-
70
56
  const Button = (props: ButtonPropTypes) => {
71
57
  const {
58
+ aria = {},
72
59
  children,
73
60
  className,
74
61
  data = {},
@@ -84,7 +71,7 @@ const Button = (props: ButtonPropTypes) => {
84
71
  value,
85
72
  } = props
86
73
 
87
- const buttonAria = buttonAriaProps(props)
74
+ const ariaProps = buildAriaProps(aria)
88
75
  const dataProps = buildDataProps(data)
89
76
  const css = classnames(
90
77
  buttonClassName(props),
@@ -114,11 +101,12 @@ const Button = (props: ButtonPropTypes) => {
114
101
  return (
115
102
  <If condition={link !== null}>
116
103
  <a
117
- {...buttonAria}
104
+ {...ariaProps}
118
105
  {...dataProps}
119
106
  className={css}
120
107
  href={link}
121
108
  id={id}
109
+ role="link"
122
110
  target={newWindow ? '_blank' : null}
123
111
  >
124
112
  <If condition={loading}>{loadingIcon}</If>
@@ -126,12 +114,13 @@ const Button = (props: ButtonPropTypes) => {
126
114
  </a>
127
115
  <Else />
128
116
  <button
129
- {...buttonAria}
117
+ {...ariaProps}
130
118
  {...dataProps}
131
119
  className={css}
132
120
  disabled={disabled}
133
121
  id={id}
134
122
  onClick={onClick}
123
+ role="button"
135
124
  type={htmlType}
136
125
  value={value}
137
126
  >