playbook_ui 14.6.1 → 14.6.2.pre.alpha.PBNTR576tooltiptruncatedformpills4296
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/pb_kits/playbook/_playbook.scss +2 -1
- data/app/pb_kits/playbook/pb_dropdown/_dropdown.scss +4 -4
- data/app/pb_kits/playbook/pb_dropdown/_dropdown.tsx +1 -3
- data/app/pb_kits/playbook/pb_dropdown/dropdown.rb +2 -2
- data/app/pb_kits/playbook/pb_dropdown/dropdown.test.jsx +1 -1
- data/app/pb_kits/playbook/pb_form_pill/_form_pill.scss +6 -2
- data/app/pb_kits/playbook/pb_form_pill/_form_pill.tsx +32 -26
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.html.erb +22 -1
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.jsx +25 -2
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.md +1 -1
- data/app/pb_kits/playbook/pb_form_pill/form_pill.html.erb +39 -7
- data/app/pb_kits/playbook/pb_form_pill/form_pill.rb +2 -0
- data/app/pb_kits/playbook/pb_link/_link.scss +66 -0
- data/app/pb_kits/playbook/pb_link/_link.tsx +107 -0
- data/app/pb_kits/playbook/pb_link/docs/_link_color.html.erb +30 -0
- data/app/pb_kits/playbook/pb_link/docs/_link_color.jsx +40 -0
- data/app/pb_kits/playbook/pb_link/docs/_link_disabled.html.erb +5 -0
- data/app/pb_kits/playbook/pb_link/docs/_link_disabled.jsx +15 -0
- data/app/pb_kits/playbook/pb_link/docs/_link_icon.html.erb +15 -0
- data/app/pb_kits/playbook/pb_link/docs/_link_icon.jsx +25 -0
- data/app/pb_kits/playbook/pb_link/docs/_link_tag.html.erb +35 -0
- data/app/pb_kits/playbook/pb_link/docs/_link_tag.jsx +45 -0
- data/app/pb_kits/playbook/pb_link/docs/_link_underline.html.erb +5 -0
- data/app/pb_kits/playbook/pb_link/docs/_link_underline.jsx +15 -0
- data/app/pb_kits/playbook/pb_link/docs/example.yml +16 -0
- data/app/pb_kits/playbook/pb_link/docs/index.js +5 -0
- data/app/pb_kits/playbook/pb_link/link.html.erb +21 -0
- data/app/pb_kits/playbook/pb_link/link.rb +44 -0
- data/app/pb_kits/playbook/pb_link/link.test.jsx +92 -0
- data/app/pb_kits/playbook/tokens/_typography.scss +35 -0
- data/dist/chunks/{_typeahead-BV_n6U5W.js → _typeahead-CGyRnRCQ.js} +2 -2
- data/dist/chunks/{_weekday_stacked-BR99DW9T.js → _weekday_stacked-BTMWkeKM.js} +3 -3
- data/dist/chunks/vendor.js +1 -1
- data/dist/menu.yml +3 -0
- data/dist/playbook-doc.js +1 -1
- data/dist/playbook-rails-react-bindings.js +1 -1
- data/dist/playbook-rails.js +1 -1
- data/dist/playbook.css +1 -1
- data/lib/playbook/version.rb +2 -2
- metadata +24 -7
@@ -0,0 +1,25 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import { Link } from 'playbook-ui'
|
3
|
+
|
4
|
+
const LinkIcon = (props) => (
|
5
|
+
<div>
|
6
|
+
<div>
|
7
|
+
<Link
|
8
|
+
href="#icon"
|
9
|
+
icon="arrow-up-right-from-square"
|
10
|
+
text="link example"
|
11
|
+
{...props}
|
12
|
+
/>
|
13
|
+
</div>
|
14
|
+
<div>
|
15
|
+
<Link
|
16
|
+
href="#icon2"
|
17
|
+
iconRight="chevron-right"
|
18
|
+
text="link example"
|
19
|
+
{...props}
|
20
|
+
/>
|
21
|
+
</div>
|
22
|
+
</div>
|
23
|
+
)
|
24
|
+
|
25
|
+
export default LinkIcon
|
@@ -0,0 +1,35 @@
|
|
1
|
+
<%= pb_rails("link", props: {
|
2
|
+
text: "h1 link example",
|
3
|
+
href: "#tag",
|
4
|
+
icon: "arrow-up-right-from-square",
|
5
|
+
tag: "h1",
|
6
|
+
}) %>
|
7
|
+
|
8
|
+
<%= pb_rails("link", props: {
|
9
|
+
text: "h3 link example",
|
10
|
+
href: "#tag2",
|
11
|
+
tag: "h3",
|
12
|
+
underline: true,
|
13
|
+
}) %>
|
14
|
+
|
15
|
+
<%= pb_rails("link", props: {
|
16
|
+
color: "destructive",
|
17
|
+
text: "h6 link example",
|
18
|
+
href: "#tag3",
|
19
|
+
tag: "h6",
|
20
|
+
}) %>
|
21
|
+
|
22
|
+
<%= pb_rails("link", props: {
|
23
|
+
text: "p link example",
|
24
|
+
href: "#tag4",
|
25
|
+
icon_right: "chevron-right",
|
26
|
+
tag: "p",
|
27
|
+
}) %>
|
28
|
+
|
29
|
+
<div>
|
30
|
+
This is a <%= pb_rails("link", props: {
|
31
|
+
text: "span link example",
|
32
|
+
href: "#tag5",
|
33
|
+
tag: "span",
|
34
|
+
}) %>
|
35
|
+
</div>
|
@@ -0,0 +1,45 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import { Link } from 'playbook-ui'
|
3
|
+
|
4
|
+
const LinkTag = (props) => (
|
5
|
+
<div>
|
6
|
+
<Link
|
7
|
+
href="#tag"
|
8
|
+
icon="arrow-up-right-from-square"
|
9
|
+
tag="h1"
|
10
|
+
text="h1 link example"
|
11
|
+
{...props}
|
12
|
+
/>
|
13
|
+
<Link
|
14
|
+
href="#tag2"
|
15
|
+
tag="h3"
|
16
|
+
text="h3 link example"
|
17
|
+
underline
|
18
|
+
{...props}
|
19
|
+
/>
|
20
|
+
<Link
|
21
|
+
color="destructive"
|
22
|
+
href="#tag3"
|
23
|
+
tag="h6"
|
24
|
+
text="h6 link example"
|
25
|
+
{...props}
|
26
|
+
/>
|
27
|
+
<Link
|
28
|
+
href="#tag4"
|
29
|
+
iconRight="chevron-right"
|
30
|
+
tag="p"
|
31
|
+
text="p link example"
|
32
|
+
{...props}
|
33
|
+
/>
|
34
|
+
<div>
|
35
|
+
This is a <Link
|
36
|
+
href="#tag5"
|
37
|
+
tag="span"
|
38
|
+
text="span link example"
|
39
|
+
{...props}
|
40
|
+
/>
|
41
|
+
</div>
|
42
|
+
</div>
|
43
|
+
)
|
44
|
+
|
45
|
+
export default LinkTag
|
@@ -0,0 +1,16 @@
|
|
1
|
+
examples:
|
2
|
+
|
3
|
+
rails:
|
4
|
+
- link_color: Color
|
5
|
+
- link_underline: Underline
|
6
|
+
- link_icon: Icon
|
7
|
+
- link_disabled: Disabled
|
8
|
+
- link_tag: Tag
|
9
|
+
|
10
|
+
|
11
|
+
react:
|
12
|
+
- link_color: Color
|
13
|
+
- link_underline: Underline
|
14
|
+
- link_icon: Icon
|
15
|
+
- link_disabled: Disabled
|
16
|
+
- link_tag: Tag
|
@@ -0,0 +1,5 @@
|
|
1
|
+
export { default as LinkColor } from './_link_color.jsx'
|
2
|
+
export { default as LinkUnderline } from './_link_underline.jsx'
|
3
|
+
export { default as LinkIcon } from './_link_icon.jsx'
|
4
|
+
export { default as LinkDisabled } from './_link_disabled.jsx'
|
5
|
+
export { default as LinkTag } from './_link_tag.jsx'
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<% link_content = proc do %>
|
2
|
+
<% if object.icon.present? %>
|
3
|
+
<%= pb_rails("icon", props: { icon: object.icon, fixed_width: true, size: "xs", margin_right: "xxs" }) %>
|
4
|
+
<% end %>
|
5
|
+
<%= object.content %>
|
6
|
+
<% if object.icon_right.present? %>
|
7
|
+
<%= pb_rails("icon", props: { icon: object.icon_right, fixed_width: true, size: "xs", margin_left: "xxs" }) %>
|
8
|
+
<% end %>
|
9
|
+
<% end %>
|
10
|
+
|
11
|
+
<% if object.tag == "a" %>
|
12
|
+
<%= pb_content_tag(object.tag, { href: object.href }) do %>
|
13
|
+
<%= link_content.call %>
|
14
|
+
<% end %>
|
15
|
+
<% else %>
|
16
|
+
<%= pb_content_tag(:a, { href: object.href }) do %>
|
17
|
+
<%= content_tag(object.tag) do %>
|
18
|
+
<%= link_content.call %>
|
19
|
+
<% end %>
|
20
|
+
<% end %>
|
21
|
+
<% end %>
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Playbook
|
4
|
+
module PbLink
|
5
|
+
class Link < ::Playbook::KitBase
|
6
|
+
prop :color, type: Playbook::Props::Enum,
|
7
|
+
values: %w[default body muted destructive],
|
8
|
+
default: "default"
|
9
|
+
prop :disabled, type: Playbook::Props::Boolean,
|
10
|
+
default: false
|
11
|
+
prop :href
|
12
|
+
prop :icon
|
13
|
+
prop :icon_right
|
14
|
+
prop :tag, type: Playbook::Props::Enum,
|
15
|
+
values: %w[a h1 h2 h3 h4 h5 h6 p span div],
|
16
|
+
default: "a"
|
17
|
+
prop :text
|
18
|
+
prop :underline, type: Playbook::Props::Boolean,
|
19
|
+
default: false
|
20
|
+
|
21
|
+
def classname
|
22
|
+
generate_classname("pb_link_kit", color_class, underline_class, disabled_class)
|
23
|
+
end
|
24
|
+
|
25
|
+
def content
|
26
|
+
text
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def color_class
|
32
|
+
color == "default" ? nil : color
|
33
|
+
end
|
34
|
+
|
35
|
+
def disabled_class
|
36
|
+
disabled ? "disabled" : nil
|
37
|
+
end
|
38
|
+
|
39
|
+
def underline_class
|
40
|
+
underline ? "underline" : nil
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import { ensureAccessible, renderKit, render, screen } from '../utilities/test-utils'
|
3
|
+
|
4
|
+
import { Link } from 'playbook-ui'
|
5
|
+
|
6
|
+
const link = 'https://www.google.com'
|
7
|
+
|
8
|
+
const props = {
|
9
|
+
data: { testid: 'default' },
|
10
|
+
href: link,
|
11
|
+
}
|
12
|
+
|
13
|
+
test('returns namespaced class name', () => {
|
14
|
+
const kit = renderKit(Link , props)
|
15
|
+
expect(kit).toBeInTheDocument()
|
16
|
+
expect(kit).toHaveClass('pb_link_kit')
|
17
|
+
expect(kit).toHaveAttribute('href', link)
|
18
|
+
})
|
19
|
+
|
20
|
+
it("should be accessible", async () => {
|
21
|
+
ensureAccessible(Link, props)
|
22
|
+
})
|
23
|
+
|
24
|
+
test('with colors', () => {
|
25
|
+
['default', 'body', 'muted', 'destructive'].forEach((color) => {
|
26
|
+
const testId = `colors-test-${color}`
|
27
|
+
render(
|
28
|
+
<Link
|
29
|
+
color={color}
|
30
|
+
data={{ testid: testId }}
|
31
|
+
text="Test colors"
|
32
|
+
/>
|
33
|
+
)
|
34
|
+
|
35
|
+
const kit = screen.getByTestId(testId)
|
36
|
+
expect(kit).toHaveClass(`pb_link_kit_${color}`)
|
37
|
+
})
|
38
|
+
})
|
39
|
+
|
40
|
+
test('disable prop', () => {
|
41
|
+
render(
|
42
|
+
<Link
|
43
|
+
data={{ testid: 'disable-test' }}
|
44
|
+
disabled
|
45
|
+
/>
|
46
|
+
)
|
47
|
+
|
48
|
+
const kit = screen.getByTestId('disable-test')
|
49
|
+
|
50
|
+
expect(kit).toHaveClass('pb_link_kit_disabled')
|
51
|
+
})
|
52
|
+
|
53
|
+
test('underline prop', () => {
|
54
|
+
render(
|
55
|
+
<Link
|
56
|
+
data={{ testid: 'underline-test' }}
|
57
|
+
underline
|
58
|
+
/>
|
59
|
+
)
|
60
|
+
|
61
|
+
const kit = screen.getByTestId('underline-test')
|
62
|
+
|
63
|
+
expect(kit).toHaveClass('pb_link_kit_underline')
|
64
|
+
})
|
65
|
+
|
66
|
+
test('adds icon', () => {
|
67
|
+
render(
|
68
|
+
<Link
|
69
|
+
data={{ testid: 'icon-test' }}
|
70
|
+
icon="arrow-up-right-from-square"
|
71
|
+
/>
|
72
|
+
)
|
73
|
+
|
74
|
+
const kit = screen.getByTestId('icon-test')
|
75
|
+
|
76
|
+
const icon = kit.querySelector('.pb_icon_kit')
|
77
|
+
expect(icon).toBeInTheDocument();
|
78
|
+
})
|
79
|
+
|
80
|
+
test('adds icon right', () => {
|
81
|
+
render(
|
82
|
+
<Link
|
83
|
+
data={{ testid: 'icon-right-test' }}
|
84
|
+
iconRight="chevron-right"
|
85
|
+
/>
|
86
|
+
)
|
87
|
+
|
88
|
+
const kit = screen.getByTestId('icon-right-test')
|
89
|
+
|
90
|
+
const icon = kit.querySelector('.pb_icon_kit')
|
91
|
+
expect(icon).toBeInTheDocument();
|
92
|
+
})
|
@@ -1,3 +1,5 @@
|
|
1
|
+
@import "../tokens/colors";
|
2
|
+
|
1
3
|
$font_family_base: "Power Centra", "Helvetica Neue", Helvetica, Arial, sans_serif !default;
|
2
4
|
|
3
5
|
/* CLEAN UP AND REMOVE */
|
@@ -51,3 +53,36 @@ $boldest: 700 !default;
|
|
51
53
|
$bolder: 700 !default;
|
52
54
|
$light: 300 !default;
|
53
55
|
$lighter: 300 !default;
|
56
|
+
|
57
|
+
/* Link Colors */
|
58
|
+
$pb_link_colors: (
|
59
|
+
default: $primary_action,
|
60
|
+
body: $text_lt_default,
|
61
|
+
muted: $text_lt_light,
|
62
|
+
destructive: $error,
|
63
|
+
);
|
64
|
+
|
65
|
+
$pb_link_hover_colors: (
|
66
|
+
default: $text_lt_default,
|
67
|
+
body: $primary_action,
|
68
|
+
muted: $text_lt_default,
|
69
|
+
destructive: $text_lt_default,
|
70
|
+
);
|
71
|
+
|
72
|
+
$pb_dark_link_colors: (
|
73
|
+
default: $active_dark,
|
74
|
+
body: $text_dk_default,
|
75
|
+
muted: $text_dk_light,
|
76
|
+
destructive: $error_dark,
|
77
|
+
);
|
78
|
+
|
79
|
+
$pb_dark_link_hover_colors: (
|
80
|
+
default: $text_dk_default,
|
81
|
+
body: $active_dark,
|
82
|
+
muted: $text_dk_default,
|
83
|
+
destructive: $text_dk_default,
|
84
|
+
);
|
85
|
+
|
86
|
+
@mixin pb_link($color: $primary_action) {
|
87
|
+
color: $color;
|
88
|
+
}
|