playbook_ui 14.12.0.pre.alpha.PLAY18565866 → 14.12.0.pre.alpha.advancedtablealignmentfixes5693
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/pb_kits/playbook/_playbook.scss +0 -1
- data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +4 -3
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.html.erb +13 -8
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.rb +0 -2
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.test.jsx +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/{_advanced_table_loading_react.md → _advanced_table_loading.md} +2 -2
- data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +0 -1
- data/app/pb_kits/playbook/pb_advanced_table/index.js +6 -9
- data/app/pb_kits/playbook/pb_advanced_table/table_body.rb +1 -3
- data/app/pb_kits/playbook/pb_advanced_table/table_header.html.erb +5 -9
- data/app/pb_kits/playbook/pb_advanced_table/table_header.rb +0 -2
- data/app/pb_kits/playbook/pb_advanced_table/table_row.html.erb +6 -9
- data/app/pb_kits/playbook/pb_advanced_table/table_row.rb +0 -2
- data/app/pb_kits/playbook/pb_avatar/_avatar.scss +0 -14
- data/app/pb_kits/playbook/pb_avatar/_avatar.tsx +7 -11
- data/app/pb_kits/playbook/pb_avatar/avatar.html.erb +7 -6
- data/app/pb_kits/playbook/pb_avatar/docs/_avatar_badge_component_overlay.jsx +3 -9
- data/app/pb_kits/playbook/pb_avatar/docs/_avatar_circle_icon_component_overlay.jsx +2 -6
- data/app/pb_kits/playbook/pb_button/button.rb +1 -1
- data/app/pb_kits/playbook/pb_date/_date.tsx +4 -14
- data/app/pb_kits/playbook/pb_date/docs/_date_default.jsx +1 -2
- data/app/pb_kits/playbook/pb_date/docs/_date_unstyled.jsx +5 -13
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_breakpoints.jsx +36 -71
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.jsx +6 -6
- data/app/pb_kits/playbook/pb_drawer/docs/example.yml +0 -1
- data/app/pb_kits/playbook/pb_file_upload/file_upload.html.erb +6 -1
- data/app/pb_kits/playbook/pb_filter/filter.html.erb +5 -1
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/example.yml +0 -1
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/index.js +5 -7
- data/app/pb_kits/playbook/pb_form_group/form_group.html.erb +6 -1
- data/app/pb_kits/playbook/pb_form_pill/form_pill.html.erb +1 -1
- data/app/pb_kits/playbook/pb_home_address_street/_home_address_street.tsx +7 -11
- data/app/pb_kits/playbook/pb_home_address_street/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_home_address_street/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_home_address_street/home_address_street.rb +2 -11
- data/app/pb_kits/playbook/pb_table/docs/_table_with_background_kit.html.erb +9 -6
- data/app/pb_kits/playbook/pb_table/docs/_table_with_background_kit.jsx +9 -6
- data/app/pb_kits/playbook/pb_table/styles/_desktop_collapse.scss +0 -26
- data/app/pb_kits/playbook/pb_table/styles/_mobile.scss +1 -0
- data/app/pb_kits/playbook/pb_table/styles/_mobile_collapse.scss +0 -25
- data/app/pb_kits/playbook/pb_table/styles/_tablet_collapse.scss +0 -25
- data/app/pb_kits/playbook/pb_tooltip/_tooltip.tsx +1 -3
- data/app/pb_kits/playbook/pb_user/_user.tsx +0 -3
- data/app/pb_kits/playbook/pb_user/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_user/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_user/user.html.erb +1 -1
- data/app/pb_kits/playbook/pb_user/user.rb +0 -1
- data/app/pb_kits/playbook/pb_user/user.test.js +0 -14
- data/dist/chunks/_typeahead-BWwaAo_0.js +36 -0
- data/dist/chunks/_weekday_stacked-N1NVUtQO.js +45 -0
- data/dist/chunks/vendor.js +1 -1
- data/dist/menu.yml +0 -6
- 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/pb_forms_helper.rb +4 -13
- data/lib/playbook/version.rb +1 -1
- metadata +6 -26
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_loading.html.erb +0 -33
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_loading_rails.md +0 -1
- data/app/pb_kits/playbook/pb_copy_button/_copy_button.scss +0 -3
- data/app/pb_kits/playbook/pb_copy_button/_copy_button.tsx +0 -92
- data/app/pb_kits/playbook/pb_copy_button/copy_button.test.jsx +0 -64
- data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_default.jsx +0 -21
- data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_from.jsx +0 -45
- data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_from.md +0 -1
- data/app/pb_kits/playbook/pb_copy_button/docs/example.yml +0 -8
- data/app/pb_kits/playbook/pb_copy_button/docs/index.js +0 -2
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_auto_close.html.erb +0 -58
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_auto_close_rails.md +0 -3
- data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_formatting.html.erb +0 -11
- data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_formatting.jsx +0 -22
- data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_formatting_rails.md +0 -1
- data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_formatting_react.md +0 -1
- data/app/pb_kits/playbook/pb_user/docs/_user_light_weight.html.erb +0 -42
- data/app/pb_kits/playbook/pb_user/docs/_user_light_weight.jsx +0 -59
- data/app/pb_kits/playbook/pb_user/docs/_user_light_weight.md +0 -2
- data/dist/chunks/_typeahead-W0hatdPs.js +0 -36
- data/dist/chunks/_weekday_stacked-C98LOqgG.js +0 -45
- data/lib/playbook/pb_forms_global_props_helper.rb +0 -136
- /data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/{_fixed_confirmation_toast_auto_close_react.md → _fixed_confirmation_toast_auto_close.md} +0 -0
@@ -1,10 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative "pb_forms_global_props_helper"
|
4
|
-
|
5
3
|
module Playbook
|
6
4
|
module PbFormsHelper
|
7
|
-
include Playbook::PbFormsGlobalPropsHelper
|
8
5
|
# Renders a pb form with ::Playbook::Forms::Builder, that can render
|
9
6
|
# Playbook kits in the most railsie way.
|
10
7
|
#
|
@@ -26,17 +23,11 @@ module Playbook
|
|
26
23
|
# @param validate [Boolean] whether validation should be triggered or not
|
27
24
|
# @see [#form_with] for other options
|
28
25
|
def pb_form_with(data: {}, validate: false, loading: false, **kwargs, &block)
|
29
|
-
global_props, form_options = extract_all_props(kwargs)
|
30
|
-
|
31
|
-
classnames = ["pb-form"]
|
32
|
-
classnames << form_options[:class] if form_options[:class].present?
|
33
|
-
classnames << "pb_form_loading" if loading
|
34
|
-
classnames.concat(generate_prop_classes(global_props))
|
35
|
-
|
36
26
|
data = data.merge("pb-form-validation" => validate)
|
37
|
-
|
38
|
-
|
39
|
-
|
27
|
+
classname = ["pb-form", kwargs[:class]].join(" ")
|
28
|
+
classname += " pb_form_loading" if loading
|
29
|
+
options = kwargs.merge(
|
30
|
+
class: classname,
|
40
31
|
data: data,
|
41
32
|
builder: ::Playbook::Forms::Builder
|
42
33
|
)
|
data/lib/playbook/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: playbook_ui
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 14.12.0.pre.alpha.
|
4
|
+
version: 14.12.0.pre.alpha.advancedtablealignmentfixes5693
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Power UX
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2025-
|
12
|
+
date: 2025-01-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: actionpack
|
@@ -300,10 +300,8 @@ files:
|
|
300
300
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_expanded_control.md
|
301
301
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_inline_row_loading.jsx
|
302
302
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_inline_row_loading.md
|
303
|
-
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_loading.html.erb
|
304
303
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_loading.jsx
|
305
|
-
- app/pb_kits/playbook/pb_advanced_table/docs/
|
306
|
-
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_loading_react.md
|
304
|
+
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_loading.md
|
307
305
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_no_subrows.jsx
|
308
306
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_pagination.jsx
|
309
307
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_pagination.md
|
@@ -798,14 +796,6 @@ files:
|
|
798
796
|
- app/pb_kits/playbook/pb_contact/docs/_description.md
|
799
797
|
- app/pb_kits/playbook/pb_contact/docs/example.yml
|
800
798
|
- app/pb_kits/playbook/pb_contact/docs/index.js
|
801
|
-
- app/pb_kits/playbook/pb_copy_button/_copy_button.scss
|
802
|
-
- app/pb_kits/playbook/pb_copy_button/_copy_button.tsx
|
803
|
-
- app/pb_kits/playbook/pb_copy_button/copy_button.test.jsx
|
804
|
-
- app/pb_kits/playbook/pb_copy_button/docs/_copy_button_default.jsx
|
805
|
-
- app/pb_kits/playbook/pb_copy_button/docs/_copy_button_from.jsx
|
806
|
-
- app/pb_kits/playbook/pb_copy_button/docs/_copy_button_from.md
|
807
|
-
- app/pb_kits/playbook/pb_copy_button/docs/example.yml
|
808
|
-
- app/pb_kits/playbook/pb_copy_button/docs/index.js
|
809
799
|
- app/pb_kits/playbook/pb_currency/_currency.scss
|
810
800
|
- app/pb_kits/playbook/pb_currency/_currency.tsx
|
811
801
|
- app/pb_kits/playbook/pb_currency/currency.html.erb
|
@@ -1343,10 +1333,8 @@ files:
|
|
1343
1333
|
- app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.scss
|
1344
1334
|
- app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.tsx
|
1345
1335
|
- app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_description.md
|
1346
|
-
- app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_auto_close.html.erb
|
1347
1336
|
- app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_auto_close.jsx
|
1348
|
-
- app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/
|
1349
|
-
- app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_auto_close_react.md
|
1337
|
+
- app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_auto_close.md
|
1350
1338
|
- app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_children.html.erb
|
1351
1339
|
- app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_children.jsx
|
1352
1340
|
- app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_children.md
|
@@ -1554,10 +1542,6 @@ files:
|
|
1554
1542
|
- app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_emphasis.jsx
|
1555
1543
|
- app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_emphasis.md
|
1556
1544
|
- app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_emphasis_swift.md
|
1557
|
-
- app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_formatting.html.erb
|
1558
|
-
- app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_formatting.jsx
|
1559
|
-
- app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_formatting_rails.md
|
1560
|
-
- app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_formatting_react.md
|
1561
1545
|
- app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_link.html.erb
|
1562
1546
|
- app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_link.jsx
|
1563
1547
|
- app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_link.md
|
@@ -3160,9 +3144,6 @@ files:
|
|
3160
3144
|
- app/pb_kits/playbook/pb_user/docs/_user_default.html.erb
|
3161
3145
|
- app/pb_kits/playbook/pb_user/docs/_user_default.jsx
|
3162
3146
|
- app/pb_kits/playbook/pb_user/docs/_user_horizontal_swift.md
|
3163
|
-
- app/pb_kits/playbook/pb_user/docs/_user_light_weight.html.erb
|
3164
|
-
- app/pb_kits/playbook/pb_user/docs/_user_light_weight.jsx
|
3165
|
-
- app/pb_kits/playbook/pb_user/docs/_user_light_weight.md
|
3166
3147
|
- app/pb_kits/playbook/pb_user/docs/_user_presence_indicator_swift.md
|
3167
3148
|
- app/pb_kits/playbook/pb_user/docs/_user_props_table.md
|
3168
3149
|
- app/pb_kits/playbook/pb_user/docs/_user_size.html.erb
|
@@ -3318,8 +3299,8 @@ files:
|
|
3318
3299
|
- app/pb_kits/playbook/utilities/test/globalProps/truncate.test.js
|
3319
3300
|
- app/pb_kits/playbook/utilities/text.ts
|
3320
3301
|
- app/pb_kits/playbook/utilities/validEmojiChecker.ts
|
3321
|
-
- dist/chunks/_typeahead-
|
3322
|
-
- dist/chunks/_weekday_stacked-
|
3302
|
+
- dist/chunks/_typeahead-BWwaAo_0.js
|
3303
|
+
- dist/chunks/_weekday_stacked-N1NVUtQO.js
|
3323
3304
|
- dist/chunks/lazysizes-B7xYodB-.js
|
3324
3305
|
- dist/chunks/lib-kMuhBuU7.js
|
3325
3306
|
- dist/chunks/pb_form_validation-DBJ0wZuS.js
|
@@ -3374,7 +3355,6 @@ files:
|
|
3374
3355
|
- lib/playbook/overflow.rb
|
3375
3356
|
- lib/playbook/pagination_renderer.rb
|
3376
3357
|
- lib/playbook/pb_doc_helper.rb
|
3377
|
-
- lib/playbook/pb_forms_global_props_helper.rb
|
3378
3358
|
- lib/playbook/pb_forms_helper.rb
|
3379
3359
|
- lib/playbook/pb_kit_helper.rb
|
3380
3360
|
- lib/playbook/position.rb
|
@@ -1,33 +0,0 @@
|
|
1
|
-
<% column_definitions = [
|
2
|
-
{
|
3
|
-
accessor: "year",
|
4
|
-
label: "Year",
|
5
|
-
cellAccessors: ["quarter", "month", "day"],
|
6
|
-
},
|
7
|
-
{
|
8
|
-
accessor: "newEnrollments",
|
9
|
-
label: "New Enrollments",
|
10
|
-
},
|
11
|
-
{
|
12
|
-
accessor: "scheduledMeetings",
|
13
|
-
label: "Scheduled Meetings",
|
14
|
-
},
|
15
|
-
{
|
16
|
-
accessor: "attendanceRate",
|
17
|
-
label: "Attendance Rate",
|
18
|
-
},
|
19
|
-
{
|
20
|
-
accessor: "completedClasses",
|
21
|
-
label: "Completed Classes",
|
22
|
-
},
|
23
|
-
{
|
24
|
-
accessor: "classCompletionRate",
|
25
|
-
label: "Class Completion Rate",
|
26
|
-
},
|
27
|
-
{
|
28
|
-
accessor: "graduatedStudents",
|
29
|
-
label: "Graduated Students",
|
30
|
-
}
|
31
|
-
] %>
|
32
|
-
|
33
|
-
<%= pb_rails("advanced_table", props: { id: "beta_table", table_data: @table_data, column_definitions: column_definitions, loading: true }) %>
|
@@ -1 +0,0 @@
|
|
1
|
-
The optional `loading` prop takes a boolean value that can be managed using state. If loading is true, the table will display the loading skeleton and once loading is false, the table will render with the data provided.
|
@@ -1,92 +0,0 @@
|
|
1
|
-
|
2
|
-
import React, { useState } from 'react'
|
3
|
-
import classnames from 'classnames'
|
4
|
-
import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
|
5
|
-
import { globalProps } from '../utilities/globalProps'
|
6
|
-
|
7
|
-
import Button from '../pb_button/_button'
|
8
|
-
import Tooltip from '../pb_tooltip/_tooltip'
|
9
|
-
|
10
|
-
type CopyButtonProps = {
|
11
|
-
aria?: { [key: string]: string },
|
12
|
-
className?: string,
|
13
|
-
data?: { [key: string]: string },
|
14
|
-
id?: string,
|
15
|
-
from?: string,
|
16
|
-
text?: string,
|
17
|
-
tooltipPlacement?: "top" | "right" | "bottom" | "left",
|
18
|
-
tooltipText?: string,
|
19
|
-
value?: string,
|
20
|
-
}
|
21
|
-
|
22
|
-
const CopyButton = (props: CopyButtonProps) => {
|
23
|
-
const {
|
24
|
-
aria = {},
|
25
|
-
className,
|
26
|
-
data = {},
|
27
|
-
from = '',
|
28
|
-
id,
|
29
|
-
text= 'Copy',
|
30
|
-
tooltipPlacement= 'bottom',
|
31
|
-
tooltipText = 'Copied!',
|
32
|
-
value = '',
|
33
|
-
} = props
|
34
|
-
|
35
|
-
const [copied, setCopied] = useState(false)
|
36
|
-
|
37
|
-
const ariaProps = buildAriaProps(aria)
|
38
|
-
const dataProps = buildDataProps(data)
|
39
|
-
const classes = classnames(buildCss('pb_copy_button_kit'), globalProps(props), className)
|
40
|
-
|
41
|
-
const copy = () => {
|
42
|
-
if (!from && !value) {
|
43
|
-
return
|
44
|
-
}
|
45
|
-
|
46
|
-
if (value) {
|
47
|
-
navigator.clipboard.writeText(value)
|
48
|
-
} else if (from) {
|
49
|
-
const copyElement = document.getElementById(from);
|
50
|
-
let copyText = copyElement?.innerText
|
51
|
-
|
52
|
-
if (copyElement instanceof HTMLTextAreaElement || copyElement instanceof HTMLInputElement) {
|
53
|
-
copyText = copyElement.value;
|
54
|
-
}
|
55
|
-
|
56
|
-
if (copyText) {
|
57
|
-
navigator.clipboard.writeText(copyText)
|
58
|
-
}
|
59
|
-
}
|
60
|
-
|
61
|
-
setCopied(true)
|
62
|
-
|
63
|
-
setTimeout(() => {
|
64
|
-
setCopied(false)
|
65
|
-
}, 1000);
|
66
|
-
}
|
67
|
-
|
68
|
-
return (
|
69
|
-
<div
|
70
|
-
{...ariaProps}
|
71
|
-
{...dataProps}
|
72
|
-
className={classes}
|
73
|
-
id={id}
|
74
|
-
>
|
75
|
-
<Tooltip
|
76
|
-
forceOpenTooltip={copied}
|
77
|
-
placement={tooltipPlacement}
|
78
|
-
showTooltip={false}
|
79
|
-
text={tooltipText}
|
80
|
-
>
|
81
|
-
<Button
|
82
|
-
icon='copy'
|
83
|
-
onClick={copy}
|
84
|
-
>
|
85
|
-
{ text }
|
86
|
-
</Button>
|
87
|
-
</Tooltip>
|
88
|
-
</div>
|
89
|
-
)
|
90
|
-
}
|
91
|
-
|
92
|
-
export default CopyButton
|
@@ -1,64 +0,0 @@
|
|
1
|
-
import React from 'react';
|
2
|
-
import { CopyButton } from 'playbook-ui'
|
3
|
-
import { ensureAccessible, renderKit, render, fireEvent, screen } from '../utilities/test-utils'
|
4
|
-
|
5
|
-
const props = {
|
6
|
-
data: { testid: 'default', value: 'copy' }
|
7
|
-
}
|
8
|
-
|
9
|
-
test('returns namespaced class name', () => {
|
10
|
-
const kit = renderKit(CopyButton, props)
|
11
|
-
expect(kit).toBeInTheDocument()
|
12
|
-
expect(kit).toHaveClass('pb_copy_button_kit')
|
13
|
-
})
|
14
|
-
|
15
|
-
it('should be accessible', async () => {
|
16
|
-
ensureAccessible(CopyButton, props)
|
17
|
-
})
|
18
|
-
|
19
|
-
// It's difficult to actually use navigator.clipboard.readText, so we mock
|
20
|
-
it('copies the value to clipboard and pastes it into an input', async () => {
|
21
|
-
Object.defineProperty(global, 'navigator', {
|
22
|
-
value: {
|
23
|
-
clipboard: {
|
24
|
-
writeText: jest.fn().mockResolvedValueOnce(undefined),
|
25
|
-
},
|
26
|
-
},
|
27
|
-
writable: true,
|
28
|
-
})
|
29
|
-
|
30
|
-
render(<CopyButton {...props} />)
|
31
|
-
|
32
|
-
const copyButton = screen.getByTestId('default')
|
33
|
-
fireEvent.click(copyButton)
|
34
|
-
|
35
|
-
await navigator.clipboard.writeText('copy')
|
36
|
-
|
37
|
-
expect(navigator.clipboard.writeText).toHaveBeenCalledWith("copy");
|
38
|
-
})
|
39
|
-
|
40
|
-
test('passes text and tooltip props to button', () => {
|
41
|
-
render(
|
42
|
-
<CopyButton
|
43
|
-
data={{ testid: 'text-test' }}
|
44
|
-
text={"text"}
|
45
|
-
tooltipPlacement="right"
|
46
|
-
tooltipText="Text copied!"
|
47
|
-
value="copy"
|
48
|
-
/>
|
49
|
-
)
|
50
|
-
|
51
|
-
const content = screen.getByText("text")
|
52
|
-
expect(content).toHaveTextContent("text")
|
53
|
-
|
54
|
-
const kit = screen.getByTestId('text-test')
|
55
|
-
const button = kit.querySelector('.pb_button_kit_primary_inline_enabled')
|
56
|
-
expect(button).toBeInTheDocument()
|
57
|
-
|
58
|
-
fireEvent.click(button)
|
59
|
-
const tooltipContent = screen.getByText("Text copied!")
|
60
|
-
expect(tooltipContent).toHaveTextContent("Text copied!")
|
61
|
-
|
62
|
-
const tooltip = kit.querySelector('.pb_tooltip_kit')
|
63
|
-
expect(tooltip).toBeInTheDocument()
|
64
|
-
})
|
@@ -1,21 +0,0 @@
|
|
1
|
-
import React from 'react'
|
2
|
-
import { CopyButton, Textarea } from 'playbook-ui'
|
3
|
-
|
4
|
-
const CopyButtonDefault = (props) => (
|
5
|
-
<div>
|
6
|
-
<CopyButton
|
7
|
-
{...props}
|
8
|
-
text="Copy Text"
|
9
|
-
tooltipPlacement="right"
|
10
|
-
tooltipText="Text copied!"
|
11
|
-
value="Playbook makes it easy to support bleeding edge, or legacy systems. Use Playbook’s 200+ components and end-to-end design language to create simple, intuitive and beautiful experiences with ease."
|
12
|
-
/>
|
13
|
-
|
14
|
-
<Textarea
|
15
|
-
{...props}
|
16
|
-
placeholder="Copy and paste here"
|
17
|
-
/>
|
18
|
-
</div>
|
19
|
-
)
|
20
|
-
|
21
|
-
export default CopyButtonDefault
|
@@ -1,45 +0,0 @@
|
|
1
|
-
import React, { useState } from 'react'
|
2
|
-
import { CopyButton, Body, TextInput, Textarea } from 'playbook-ui'
|
3
|
-
|
4
|
-
const CopyButtonFrom = (props) => {
|
5
|
-
const [text, setText] = useState("Copy this text input text")
|
6
|
-
|
7
|
-
const handleChange = (event) => {
|
8
|
-
setText(event.target.value);
|
9
|
-
}
|
10
|
-
|
11
|
-
return (<div>
|
12
|
-
<Body id="body">Copy this body text!</Body>
|
13
|
-
<CopyButton
|
14
|
-
{...props}
|
15
|
-
from="body"
|
16
|
-
marginBottom="sm"
|
17
|
-
text="Copy Body text"
|
18
|
-
tooltipPlacement="right"
|
19
|
-
tooltipText="Body text copied!"
|
20
|
-
/>
|
21
|
-
|
22
|
-
<TextInput
|
23
|
-
{...props}
|
24
|
-
id="textinput"
|
25
|
-
onChange={handleChange}
|
26
|
-
value={text}
|
27
|
-
/>
|
28
|
-
<CopyButton
|
29
|
-
{...props}
|
30
|
-
from="textinput"
|
31
|
-
marginBottom="sm"
|
32
|
-
text="Copy Text Input"
|
33
|
-
tooltipPlacement="right"
|
34
|
-
tooltipText="Text input copied!"
|
35
|
-
/>
|
36
|
-
|
37
|
-
<Textarea
|
38
|
-
{...props}
|
39
|
-
placeholder="Copy and paste here"
|
40
|
-
/>
|
41
|
-
</div>
|
42
|
-
)
|
43
|
-
}
|
44
|
-
|
45
|
-
export default CopyButtonFrom
|
@@ -1 +0,0 @@
|
|
1
|
-
Provide an element's ID as the `from` parameter, and its text will be copied. If the element is an input, its `value` will be copied; otherwise, the `innerText` will be used. Additionally, if a `value` prop is provided, it will override the content from the `from` element and be copied instead.
|
@@ -1,58 +0,0 @@
|
|
1
|
-
<%= pb_rails("button", props: { text: "Show Auto Close Toast", variant: "secondary", data: { toast: "#toast-auto-close" } }) %>
|
2
|
-
<%= pb_rails("button", props: { text: "Show Closeable Auto Close Toast", variant: "secondary", data: { toast: "#toast-auto-close-closeable" } }) %>
|
3
|
-
|
4
|
-
<%= pb_rails("fixed_confirmation_toast", props: {
|
5
|
-
auto_close: 3000,
|
6
|
-
classname: "toast-to-hide",
|
7
|
-
id: "toast-auto-close",
|
8
|
-
text: "I will disappear in 3 seconds.",
|
9
|
-
status: "tip",
|
10
|
-
vertical: "top",
|
11
|
-
horizontal: "center"
|
12
|
-
}) %>
|
13
|
-
|
14
|
-
<%= pb_rails("fixed_confirmation_toast", props: {
|
15
|
-
auto_close: 10000,
|
16
|
-
closeable: true,
|
17
|
-
id: "toast-auto-close-closeable",
|
18
|
-
text: "I will disappear in 10 seconds.",
|
19
|
-
status: "tip",
|
20
|
-
vertical: "top",
|
21
|
-
horizontal: "center"
|
22
|
-
}) %>
|
23
|
-
|
24
|
-
<script>
|
25
|
-
document.addEventListener('DOMContentLoaded', () => {
|
26
|
-
// Initialize toast elements and buttons
|
27
|
-
const toasts = {
|
28
|
-
'#toast-auto-close': document.querySelector("#toast-auto-close"),
|
29
|
-
'#toast-auto-close-closeable': document.querySelector("#toast-auto-close-closeable")
|
30
|
-
}
|
31
|
-
|
32
|
-
const buttons = {
|
33
|
-
'#toast-auto-close': document.querySelector("button[data-toast='#toast-auto-close']"),
|
34
|
-
'#toast-auto-close-closeable': document.querySelector("button[data-toast='#toast-auto-close-closeable']")
|
35
|
-
}
|
36
|
-
|
37
|
-
// Store original toasts and remove them from DOM
|
38
|
-
const originalToasts = {}
|
39
|
-
Object.entries(toasts).forEach(([id, toast]) => {
|
40
|
-
if (toast) {
|
41
|
-
originalToasts[id] = toast.cloneNode(true)
|
42
|
-
toast.remove()
|
43
|
-
}
|
44
|
-
})
|
45
|
-
|
46
|
-
// Set up button click handlers
|
47
|
-
Object.keys(buttons).forEach((toastId) => {
|
48
|
-
const button = buttons[toastId]
|
49
|
-
if (button) {
|
50
|
-
button.onclick = () => {
|
51
|
-
const newToast = originalToasts[toastId].cloneNode(true)
|
52
|
-
newToast.style.display = "flex"
|
53
|
-
document.body.appendChild(newToast)
|
54
|
-
}
|
55
|
-
}
|
56
|
-
})
|
57
|
-
})
|
58
|
-
</script>
|
@@ -1,3 +0,0 @@
|
|
1
|
-
Auto close is used when you want the confirmation toast to close automatically after a certain time. `auto_close` property will be a delay number in ms.
|
2
|
-
|
3
|
-
The script tag in this code snippet is for demonstration purposes only. It clones the toasts in order to have it appear with a button click prompt and not upon initial page load. In a typical production environment the event triggering a fixed confirmation toast to appear would be handled by a controller or a separate javascript file.
|
data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_formatting.html.erb
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
<%= pb_rails("home_address_street", props: {
|
2
|
-
address: "70 pRoSpEcT ave",
|
3
|
-
address_cont: "Apt M18",
|
4
|
-
city: "West Chester",
|
5
|
-
home_id: 8250263,
|
6
|
-
home_url: "https://powerhrg.com/",
|
7
|
-
preserve_case: true,
|
8
|
-
state: "pa",
|
9
|
-
zipcode: "19382",
|
10
|
-
territory: "PHL",
|
11
|
-
}) %>
|
@@ -1,22 +0,0 @@
|
|
1
|
-
import React from 'react'
|
2
|
-
|
3
|
-
import HomeAddressStreet from '../_home_address_street'
|
4
|
-
|
5
|
-
const HomeAddressStreetFormatting = (props) => {
|
6
|
-
return (
|
7
|
-
<HomeAddressStreet
|
8
|
-
address="70 pRoSpEcT ave"
|
9
|
-
addressCont="Apt M18"
|
10
|
-
city="West Chester"
|
11
|
-
homeId="8250263"
|
12
|
-
homeUrl="https://powerhrg.com/"
|
13
|
-
preserveCase
|
14
|
-
state="pa"
|
15
|
-
territory="PHL"
|
16
|
-
zipcode="19382"
|
17
|
-
{...props}
|
18
|
-
/>
|
19
|
-
)
|
20
|
-
}
|
21
|
-
|
22
|
-
export default HomeAddressStreetFormatting
|
data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_formatting_rails.md
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
The `state` prop will always capitalize the state name, even if the data entered is in lowercase. For example, when `state="pa"` is passed, it will be rendered as "PA". When you pass `preserve_case: true`, the street address will be rendered exactly as entered, without automatic title capitalization.
|
data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_formatting_react.md
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
The `state` prop will always capitalize the state name, even if the data entered is in lowercase. For example, when `state="pa"` is passed, it will be rendered as "PA". When you pass `preserveCase`, the street address will be rendered exactly as entered, without automatic title capitalization.
|
@@ -1,42 +0,0 @@
|
|
1
|
-
<div class="pb--doc-demo-row">
|
2
|
-
<div>
|
3
|
-
<%= pb_rails("user", props: {
|
4
|
-
name: "Anna Black",
|
5
|
-
title: "Remodeling Consultant",
|
6
|
-
orientation: "vertical",
|
7
|
-
align: "center",
|
8
|
-
size: "lg",
|
9
|
-
avatar_url: "https://randomuser.me/api/portraits/women/44.jpg",
|
10
|
-
bold: false
|
11
|
-
}) %>
|
12
|
-
</div>
|
13
|
-
<div>
|
14
|
-
<%= pb_rails("user", props: {
|
15
|
-
name: "Anna Black",
|
16
|
-
title: "Remodeling Consultant",
|
17
|
-
orientation: "horizontal",
|
18
|
-
align: "left",
|
19
|
-
avatar_url: "https://randomuser.me/api/portraits/women/44.jpg",
|
20
|
-
bold: false
|
21
|
-
}) %>
|
22
|
-
</div>
|
23
|
-
<div>
|
24
|
-
<%= pb_rails("user", props: {
|
25
|
-
name: "Anna Black",
|
26
|
-
orientation: "horizontal",
|
27
|
-
align: "left",
|
28
|
-
avatar_url: "https://randomuser.me/api/portraits/women/44.jpg",
|
29
|
-
bold: false
|
30
|
-
}) %>
|
31
|
-
|
32
|
-
<br>
|
33
|
-
|
34
|
-
<%= pb_rails("user", props: {
|
35
|
-
name: "Anna Black",
|
36
|
-
orientation: "horizontal",
|
37
|
-
align: "left",
|
38
|
-
avatar: true,
|
39
|
-
bold: false
|
40
|
-
}) %>
|
41
|
-
</div>
|
42
|
-
</div>
|
@@ -1,59 +0,0 @@
|
|
1
|
-
import React from 'react'
|
2
|
-
import { User } from 'playbook-ui'
|
3
|
-
|
4
|
-
const UserLightWeight = (props) => {
|
5
|
-
return (
|
6
|
-
<div className="pb--doc-demo-row">
|
7
|
-
|
8
|
-
<div>
|
9
|
-
<User
|
10
|
-
align="center"
|
11
|
-
avatarUrl="https://randomuser.me/api/portraits/women/44.jpg"
|
12
|
-
bold={false}
|
13
|
-
name="Anna Black"
|
14
|
-
orientation="vertical"
|
15
|
-
size="lg"
|
16
|
-
title="Remodeling Consultant"
|
17
|
-
{...props}
|
18
|
-
/>
|
19
|
-
</div>
|
20
|
-
|
21
|
-
<div>
|
22
|
-
<User
|
23
|
-
align="left"
|
24
|
-
avatarUrl="https://randomuser.me/api/portraits/women/44.jpg"
|
25
|
-
bold={false}
|
26
|
-
name="Anna Black"
|
27
|
-
orientation="horizontal"
|
28
|
-
title="Remodeling Consultant"
|
29
|
-
{...props}
|
30
|
-
/>
|
31
|
-
</div>
|
32
|
-
|
33
|
-
<div>
|
34
|
-
<User
|
35
|
-
align="left"
|
36
|
-
avatarUrl="https://randomuser.me/api/portraits/women/44.jpg"
|
37
|
-
bold={false}
|
38
|
-
name="Anna Black"
|
39
|
-
orientation="horizontal"
|
40
|
-
{...props}
|
41
|
-
/>
|
42
|
-
|
43
|
-
<br />
|
44
|
-
|
45
|
-
<User
|
46
|
-
align="left"
|
47
|
-
avatar
|
48
|
-
bold={false}
|
49
|
-
name="Anna Black"
|
50
|
-
orientation="horizontal"
|
51
|
-
{...props}
|
52
|
-
/>
|
53
|
-
</div>
|
54
|
-
|
55
|
-
</div>
|
56
|
-
)
|
57
|
-
}
|
58
|
-
|
59
|
-
export default UserLightWeight
|