playbook_ui 14.13.0.pre.alpha.play1852reacthookformsupportradio6213 → 14.13.0.pre.alpha.play1884progresspill6064
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 +1 -0
- data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +0 -3
- data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +5 -6
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.rb +1 -8
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props.html.erb +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_rails.md +1 -3
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_react.md +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +1 -2
- data/app/pb_kits/playbook/pb_avatar_action_button/_avatar_action_button.scss +66 -0
- data/app/pb_kits/playbook/pb_avatar_action_button/_avatar_action_button.tsx +98 -0
- data/app/pb_kits/playbook/pb_avatar_action_button/avatar_action_button.html.erb +28 -0
- data/app/pb_kits/playbook/pb_avatar_action_button/avatar_action_button.rb +42 -0
- data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_actions.html.erb +19 -0
- data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_actions.jsx +26 -0
- data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_default.html.erb +10 -0
- data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_default.jsx +17 -0
- data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_on_click.jsx +19 -0
- data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_onclick.html.erb +16 -0
- data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_placement.html.erb +35 -0
- data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_placement.jsx +42 -0
- data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_tooltip.html.erb +13 -0
- data/app/pb_kits/playbook/pb_avatar_action_button/docs/example.yml +15 -0
- data/app/pb_kits/playbook/pb_avatar_action_button/docs/index.js +4 -0
- data/app/pb_kits/playbook/pb_avatar_action_button/pb_avatar_action_button.test.js +31 -0
- data/app/pb_kits/playbook/pb_bar_graph/docs/example.yml +0 -1
- data/app/pb_kits/playbook/pb_bar_graph/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_checkbox/_checkbox.tsx +8 -17
- data/app/pb_kits/playbook/pb_checkbox/checkbox.test.js +0 -16
- data/app/pb_kits/playbook/pb_checkbox/docs/example.yml +1 -2
- data/app/pb_kits/playbook/pb_checkbox/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_date_picker/_date_picker.tsx +1 -3
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table.html.erb +2 -2
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table.md +1 -4
- data/app/pb_kits/playbook/pb_draggable/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_draggable/docs/index.js +1 -2
- data/app/pb_kits/playbook/pb_draggable/subcomponents/DraggableContainer.tsx +4 -7
- data/app/pb_kits/playbook/pb_draggable/subcomponents/DraggableItem.tsx +3 -6
- data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select.html.erb +6 -1
- data/app/pb_kits/playbook/pb_nav/item.html.erb +19 -7
- data/app/pb_kits/playbook/pb_nav/nav.html.erb +8 -3
- data/app/pb_kits/playbook/pb_online_status/online_status.html.erb +6 -1
- data/app/pb_kits/playbook/pb_overlay/_overlay.tsx +0 -4
- data/app/pb_kits/playbook/pb_overlay/docs/example.yml +0 -1
- data/app/pb_kits/playbook/pb_overlay/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_overlay/subcomponents/_overlay_token.tsx +10 -48
- data/app/pb_kits/playbook/pb_popover/popover.html.erb +6 -1
- data/app/pb_kits/playbook/pb_progress_pills/_progress_pills.scss +0 -4
- data/app/pb_kits/playbook/pb_progress_pills/_progress_pills.tsx +5 -7
- data/app/pb_kits/playbook/pb_progress_pills/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_progress_pills/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_progress_pills/progress_pills.html.erb +7 -2
- data/app/pb_kits/playbook/pb_progress_pills/progress_pills.rb +0 -6
- data/app/pb_kits/playbook/pb_progress_pills/progress_pills.test.js +1 -26
- data/app/pb_kits/playbook/pb_progress_simple/progress_simple.html.erb +5 -1
- data/app/pb_kits/playbook/pb_progress_step/progress_step.html.erb +5 -1
- data/app/pb_kits/playbook/pb_progress_step/progress_step_item.html.erb +5 -1
- data/app/pb_kits/playbook/pb_radio/_radio.tsx +73 -85
- data/app/pb_kits/playbook/pb_radio/docs/example.yml +1 -2
- data/app/pb_kits/playbook/pb_radio/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_radio/radio.html.erb +11 -6
- data/app/pb_kits/playbook/pb_radio/radio.test.js +0 -16
- data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible.jsx +1 -1
- data/app/pb_kits/playbook/pb_table/docs/example.yml +1 -4
- data/app/pb_kits/playbook/pb_table/docs/index.js +1 -2
- data/app/pb_kits/playbook/pb_table/index.ts +9 -41
- data/app/pb_kits/playbook/pb_table/styles/_collapsible.scss +0 -4
- data/app/pb_kits/playbook/pb_table/subcomponents/_table_body.tsx +2 -29
- data/app/pb_kits/playbook/pb_table/subcomponents/_table_row.tsx +3 -31
- data/app/pb_kits/playbook/pb_table/table_body.html.erb +7 -13
- data/app/pb_kits/playbook/pb_table/table_body.rb +0 -2
- data/app/pb_kits/playbook/pb_table/table_row.html.erb +7 -14
- data/app/pb_kits/playbook/pb_table/table_row.rb +1 -14
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_mask.html.erb +0 -14
- data/app/pb_kits/playbook/pb_text_input/index.js +0 -9
- data/app/pb_kits/playbook/pb_text_input/text_input.rb +2 -5
- data/dist/chunks/_typeahead-btjo1UN5.js +36 -0
- data/dist/chunks/{_weekday_stacked-Dze0K01W.js → _weekday_stacked-TIh9nTmZ.js} +3 -3
- data/dist/chunks/{lib-D3us1bGD.js → lib-DjpLC8uO.js} +2 -2
- data/dist/chunks/{pb_form_validation-BpihMSOQ.js → pb_form_validation-S56UaHZl.js} +1 -1
- data/dist/chunks/vendor.js +1 -1
- data/dist/menu.yml +7 -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 +1 -1
- metadata +23 -30
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers_custom_cell.jsx +0 -75
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_sticky_header.html.erb +0 -33
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_sticky_header_rails.md +0 -3
- data/app/pb_kits/playbook/pb_bar_graph/BarGraphStyles.scss +0 -58
- data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_pb_styles.jsx +0 -64
- data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_pb_styles.md +0 -1
- data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_react_hook.jsx +0 -69
- data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_react_hook.md +0 -1
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table_react.jsx +0 -90
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table_react.md +0 -5
- data/app/pb_kits/playbook/pb_overlay/docs/_overlay_vertical_dynamic_multi_directional.jsx +0 -37
- data/app/pb_kits/playbook/pb_overlay/docs/_overlay_vertical_dynamic_multi_directional_react.md +0 -1
- data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_full_width.html.erb +0 -1
- data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_full_width.jsx +0 -18
- data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_full_width_rails.md +0 -1
- data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_full_width_react.md +0 -1
- data/app/pb_kits/playbook/pb_radio/docs/_radio_react_hook.jsx +0 -60
- data/app/pb_kits/playbook/pb_radio/docs/_radio_react_hook.md +0 -1
- data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click.html.erb +0 -51
- data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click_rails.md +0 -2
- data/app/pb_kits/playbook/pb_table/docs/_table_with_selectable_rows.html.erb +0 -96
- data/app/pb_kits/playbook/pb_table/docs/_table_with_selectable_rows.jsx +0 -101
- data/app/pb_kits/playbook/pb_table/docs/_table_with_selectable_rows.md +0 -1
- data/dist/chunks/_typeahead-BdE70xxu.js +0 -36
- /data/app/pb_kits/playbook/pb_table/docs/{_table_with_collapsible_with_custom_click_react.md → _table_with_collapsible_with_custom_click.md} +0 -0
@@ -10,4 +10,3 @@ export { default as BarGraphStacked } from './_bar_graph_stacked.jsx'
|
|
10
10
|
export { default as BarGraphNegativeNumbers } from './_bar_graph_negative_numbers.jsx'
|
11
11
|
export { default as BarGraphSecondaryYAxis } from './_bar_graph_secondary_y_axis.jsx'
|
12
12
|
export { default as BarGraphHorizontal } from './_bar_graph_horizontal.jsx'
|
13
|
-
export { default as BarGraphPbStyles } from './_bar_graph_pb_styles.jsx'
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import React, { useEffect, useRef
|
1
|
+
import React, { useEffect, useRef } from 'react'
|
2
2
|
import Body from '../pb_body/_body'
|
3
3
|
import Icon from '../pb_icon/_icon'
|
4
4
|
import { buildAriaProps, buildCss, buildDataProps, buildHtmlProps } from '../utilities/props'
|
@@ -24,7 +24,7 @@ type CheckboxProps = {
|
|
24
24
|
value?: string,
|
25
25
|
} & GlobalProps
|
26
26
|
|
27
|
-
const Checkbox =
|
27
|
+
const Checkbox = (props: CheckboxProps): React.ReactElement => {
|
28
28
|
const {
|
29
29
|
aria = {},
|
30
30
|
checked = false,
|
@@ -44,15 +44,7 @@ const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>((props, ref) => {
|
|
44
44
|
value = '',
|
45
45
|
} = props
|
46
46
|
|
47
|
-
const
|
48
|
-
const setRefs = (el: HTMLInputElement) => {
|
49
|
-
internalRef.current = el
|
50
|
-
if (typeof ref === 'function') {
|
51
|
-
ref(el)
|
52
|
-
} else if (ref) {
|
53
|
-
(ref as React.MutableRefObject<HTMLInputElement | null>).current = el
|
54
|
-
}
|
55
|
-
}
|
47
|
+
const checkRef = useRef(null)
|
56
48
|
const ariaProps = buildAriaProps(aria)
|
57
49
|
const dataProps = buildDataProps(data)
|
58
50
|
const htmlProps = buildHtmlProps(htmlOptions)
|
@@ -64,9 +56,9 @@ const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>((props, ref) => {
|
|
64
56
|
)
|
65
57
|
|
66
58
|
useEffect(() => {
|
67
|
-
if (
|
68
|
-
|
69
|
-
|
59
|
+
if (checkRef.current) {
|
60
|
+
checkRef.current.checked = checked
|
61
|
+
checkRef.current.indeterminate = indeterminate
|
70
62
|
}
|
71
63
|
}, [indeterminate, checked])
|
72
64
|
|
@@ -80,7 +72,7 @@ const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>((props, ref) => {
|
|
80
72
|
disabled={disabled}
|
81
73
|
name={name}
|
82
74
|
onChange={onChange}
|
83
|
-
ref={
|
75
|
+
ref={checkRef}
|
84
76
|
tabIndex={tabIndex}
|
85
77
|
type="checkbox"
|
86
78
|
value={value}
|
@@ -127,7 +119,6 @@ const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>((props, ref) => {
|
|
127
119
|
</Body>
|
128
120
|
</label>
|
129
121
|
)
|
130
|
-
}
|
122
|
+
}
|
131
123
|
|
132
|
-
Checkbox.displayName = "Checkbox"
|
133
124
|
export default Checkbox
|
@@ -106,19 +106,3 @@ test('has disabled attribute', () => {
|
|
106
106
|
const input = kit.querySelector('input')
|
107
107
|
expect(input).toHaveAttribute('disabled')
|
108
108
|
})
|
109
|
-
|
110
|
-
test('has ref in the input element', () => {
|
111
|
-
const ref = React.createRef()
|
112
|
-
render(
|
113
|
-
<Checkbox
|
114
|
-
data={{ testid: testId }}
|
115
|
-
name="checkbox-name"
|
116
|
-
ref={ref}
|
117
|
-
text="Checkbox"
|
118
|
-
value="check-box value"
|
119
|
-
/>
|
120
|
-
)
|
121
|
-
|
122
|
-
expect(ref.current).not.toBeNull()
|
123
|
-
expect(ref.current?.tagName).toBe('INPUT')
|
124
|
-
})
|
@@ -11,7 +11,6 @@ examples:
|
|
11
11
|
react:
|
12
12
|
- checkbox_default: Default
|
13
13
|
- checkbox_checked: Load as checked
|
14
|
-
- checkbox_react_hook: React Hook Form
|
15
14
|
- checkbox_custom: Custom Checkbox
|
16
15
|
- checkbox_error: Default w/ Error
|
17
16
|
- checkbox_indeterminate: Indeterminate Checkbox
|
@@ -22,4 +21,4 @@ examples:
|
|
22
21
|
- checkbox_error_swift: Default w/ Error
|
23
22
|
- checkbox_indeterminate_swift: Indeterminate Checkbox
|
24
23
|
- checkbox_props_swift: ""
|
25
|
-
|
24
|
+
|
@@ -1,6 +1,5 @@
|
|
1
1
|
export { default as CheckboxDefault } from './_checkbox_default.jsx'
|
2
2
|
export { default as CheckboxCustom } from './_checkbox_custom.jsx'
|
3
|
-
export { default as CheckboxReactHook } from './_checkbox_react_hook.jsx'
|
4
3
|
export { default as CheckboxError } from './_checkbox_error.jsx'
|
5
4
|
export { default as CheckboxChecked } from './_checkbox_checked.jsx'
|
6
5
|
export { default as CheckboxIndeterminate } from './_checkbox_indeterminate.jsx'
|
@@ -29,7 +29,6 @@ type DatePickerProps = {
|
|
29
29
|
hideLabel?: boolean,
|
30
30
|
htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
|
31
31
|
id?: string,
|
32
|
-
initializeOnce?: boolean,
|
33
32
|
inLine?: boolean,
|
34
33
|
inputAria?: { [key: string]: string },
|
35
34
|
inputData?: { [key: string]: string },
|
@@ -74,7 +73,6 @@ const DatePicker = (props: DatePickerProps): React.ReactElement => {
|
|
74
73
|
hideLabel = false,
|
75
74
|
htmlOptions = {},
|
76
75
|
id,
|
77
|
-
initializeOnce = false,
|
78
76
|
inLine = false,
|
79
77
|
inputAria = {},
|
80
78
|
inputData = {},
|
@@ -136,7 +134,7 @@ useEffect(() => {
|
|
136
134
|
yearRange,
|
137
135
|
required: false,
|
138
136
|
}, scrollContainer)
|
139
|
-
}
|
137
|
+
})
|
140
138
|
const filteredProps = {...props}
|
141
139
|
if (filteredProps.marginBottom === undefined) {
|
142
140
|
filteredProps.marginBottom = "sm"
|
@@ -43,9 +43,9 @@
|
|
43
43
|
<% end %>
|
44
44
|
<% end %>
|
45
45
|
|
46
|
-
<%= pb_rails("
|
46
|
+
<%= pb_rails("draggable/draggable_container", props: {tag:"tbody"}) do %>
|
47
47
|
<% initial_items.each do |item| %>
|
48
|
-
<%= pb_rails("
|
48
|
+
<%= pb_rails("draggable/draggable_item", props:{drag_id: item[:id], tag:"tr"}) do %>
|
49
49
|
<%= pb_rails("table/table_cell", props: { text: item[:id]}) %>
|
50
50
|
<%= pb_rails("table/table_cell") do %>
|
51
51
|
<%= pb_rails("flex", props:{align:"center"}) do %>
|
@@ -1,4 +1 @@
|
|
1
|
-
The draggable kit can also be used in conjunction with the table kit to create draggable table rows. To do this
|
2
|
-
|
3
|
-
- use the `draggable_container` prop on the table/table_body to designate it as the Draggable Container
|
4
|
-
- use the `draggable_item` prop on the table/table_row to designate it as the Draggable Item. Make sure to also pass id to the `drag_id` prop here.
|
1
|
+
The draggable kit can also be used in conjunction with the table kit to create draggable table rows. To do this, make use of the `tag` prop on the draggable_container to set it to 'tbody' and the same prop on the draggable_item to set that to 'tr'. This will create the functionality seen here.
|
@@ -4,9 +4,7 @@ examples:
|
|
4
4
|
- draggable_with_list: Draggable with List Kit
|
5
5
|
- draggable_with_selectable_list: Draggable with SelectableList Kit
|
6
6
|
- draggable_with_cards: Draggable with Cards
|
7
|
-
- draggable_with_table_react: Draggable with Table
|
8
7
|
- draggable_multiple_containers: Dragging Across Multiple Containers
|
9
|
-
|
10
8
|
rails:
|
11
9
|
- draggable_default_rails: Default
|
12
10
|
- draggable_with_list_rails: Draggable with List Kit
|
@@ -2,5 +2,4 @@ export { default as DraggableDefault } from './_draggable_default.jsx'
|
|
2
2
|
export { default as DraggableWithCards } from './_draggable_with_cards.jsx'
|
3
3
|
export { default as DraggableWithList } from './_draggable_with_list.jsx'
|
4
4
|
export { default as DraggableWithSelectableList } from './_draggable_with_selectable_list.jsx'
|
5
|
-
export { default as DraggableMultipleContainers } from './_draggable_multiple_containers.jsx'
|
6
|
-
export { default as DraggableWithTableReact } from './_draggable_with_table_react.jsx'
|
5
|
+
export { default as DraggableMultipleContainers } from './_draggable_multiple_containers.jsx'
|
@@ -17,11 +17,10 @@ type DraggableContainerProps = {
|
|
17
17
|
data?: { [key: string]: string };
|
18
18
|
htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
|
19
19
|
id?: string;
|
20
|
-
tag?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span' | 'div' | 'tr' | 'th' | 'td' | 'thead' | 'col' | 'tbody',
|
21
20
|
};
|
22
21
|
|
23
22
|
const DraggableContainer = (props: DraggableContainerProps) => {
|
24
|
-
const { aria = {}, children, className, container, data = {}, htmlOptions = {}, id
|
23
|
+
const { aria = {}, children, className, container, data = {}, htmlOptions = {}, id } = props;
|
25
24
|
|
26
25
|
const { handleDragOver, handleDrop, activeContainer } = DraggableContext();
|
27
26
|
|
@@ -29,8 +28,6 @@ const DraggableContainer = (props: DraggableContainerProps) => {
|
|
29
28
|
const dataProps = buildDataProps(data);
|
30
29
|
const htmlProps = buildHtmlProps(htmlOptions);
|
31
30
|
|
32
|
-
const Tag: React.ReactElement | any = `${tag}`;
|
33
|
-
|
34
31
|
const classes = classnames(
|
35
32
|
buildCss("pb_draggable_container"),
|
36
33
|
`${activeContainer === container ? "active" : ""}`,
|
@@ -39,18 +36,18 @@ const DraggableContainer = (props: DraggableContainerProps) => {
|
|
39
36
|
);
|
40
37
|
|
41
38
|
return (
|
42
|
-
<
|
39
|
+
<div
|
43
40
|
{...ariaProps}
|
44
41
|
{...dataProps}
|
45
42
|
{...htmlProps}
|
46
43
|
className={classes}
|
47
44
|
id={id}
|
48
45
|
key={container}
|
49
|
-
onDragOver={(e
|
46
|
+
onDragOver={(e) => handleDragOver(e, container)}
|
50
47
|
onDrop={() => handleDrop(container)}
|
51
48
|
>
|
52
49
|
{children}
|
53
|
-
</
|
50
|
+
</div>
|
54
51
|
);
|
55
52
|
};
|
56
53
|
|
@@ -18,11 +18,10 @@ type DraggableItemProps = {
|
|
18
18
|
htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
|
19
19
|
id?: string;
|
20
20
|
dragId?: string;
|
21
|
-
tag?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span' | 'div' | 'tr' | 'th' | 'td' | 'thead' | 'col' | 'tbody',
|
22
21
|
};
|
23
22
|
|
24
23
|
const DraggableItem = (props: DraggableItemProps) => {
|
25
|
-
const { aria = {}, children, className, container, data = {}, htmlOptions = {}, id, dragId
|
24
|
+
const { aria = {}, children, className, container, data = {}, htmlOptions = {}, id, dragId } = props;
|
26
25
|
|
27
26
|
const { isDragging, handleDragStart, handleDragEnter, handleDragEnd } =
|
28
27
|
DraggableContext();
|
@@ -31,8 +30,6 @@ const DraggableItem = (props: DraggableItemProps) => {
|
|
31
30
|
const dataProps = buildDataProps(data);
|
32
31
|
const htmlProps = buildHtmlProps(htmlOptions);
|
33
32
|
|
34
|
-
const Tag: React.ReactElement | any = `${tag}`;
|
35
|
-
|
36
33
|
const classes = classnames(
|
37
34
|
buildCss("pb_draggable_item"),
|
38
35
|
`${isDragging === dragId ? "is_dragging" : ""}`,
|
@@ -41,7 +38,7 @@ const DraggableItem = (props: DraggableItemProps) => {
|
|
41
38
|
);
|
42
39
|
|
43
40
|
return (
|
44
|
-
<
|
41
|
+
<div
|
45
42
|
{...ariaProps}
|
46
43
|
{...dataProps}
|
47
44
|
{...htmlProps}
|
@@ -54,7 +51,7 @@ const DraggableItem = (props: DraggableItemProps) => {
|
|
54
51
|
onDragStart={() => handleDragStart(dragId, container)}
|
55
52
|
>
|
56
53
|
{children}
|
57
|
-
</
|
54
|
+
</div>
|
58
55
|
);
|
59
56
|
};
|
60
57
|
|
@@ -1,9 +1,15 @@
|
|
1
1
|
<% if object.collapsible %>
|
2
2
|
<%= pb_rails("collapsible", props: { name: "collapsible-nav-example", classname: object.collapsible_nav_classname }) do %>
|
3
3
|
<%= pb_rails("collapsible/collapsible_main", props: { name: "default-collapsible-nav", icon: object.collapsible_icons, size: "xs", dark: object.dark, classname:object.margin_classes }) do %>
|
4
|
-
<%=
|
5
|
-
|
6
|
-
|
4
|
+
<%= content_tag(object.tag,
|
5
|
+
aria: object.aria,
|
6
|
+
class: object.classname,
|
7
|
+
data: object.data,
|
8
|
+
dark: object.dark,
|
9
|
+
id: object.id,
|
10
|
+
href: object.link && object.link,
|
11
|
+
target: object.link && object.target,
|
12
|
+
**combined_html_options
|
7
13
|
) do %>
|
8
14
|
<% if object.image_url %>
|
9
15
|
<%= pb_rails("image", props: { url: object.image_url, classname: "pb_nav_img_wrapper_collapsible" }) %>
|
@@ -14,16 +20,22 @@
|
|
14
20
|
<span class="pb_nav_list_item_text_collapsible">
|
15
21
|
<%= object.text %>
|
16
22
|
</span>
|
17
|
-
<% end %>
|
23
|
+
<% end %>
|
18
24
|
<% end %>
|
19
25
|
<%= pb_rails("collapsible/collapsible_content", props: {collapsed: object.collapsed}) do %>
|
20
26
|
<%= content.presence %>
|
21
27
|
<% end %>
|
22
28
|
<% end %>
|
23
29
|
<% else %>
|
24
|
-
<%=
|
25
|
-
|
26
|
-
|
30
|
+
<%= content_tag(object.tag,
|
31
|
+
aria: object.aria,
|
32
|
+
class: object.classname,
|
33
|
+
**combined_html_options,
|
34
|
+
data: object.data,
|
35
|
+
dark: object.dark,
|
36
|
+
id: object.id,
|
37
|
+
href: object.link && object.link,
|
38
|
+
target: object.link && object.target
|
27
39
|
) do %>
|
28
40
|
<% if object.image_url %>
|
29
41
|
<%= pb_rails("image", props: { url: object.image_url, classname: "pb_nav_img_wrapper" }) %>
|
@@ -1,7 +1,12 @@
|
|
1
|
-
<%=
|
1
|
+
<%= content_tag(:nav,
|
2
|
+
aria: object.aria,
|
3
|
+
class: object.classname,
|
4
|
+
data: object.data,
|
5
|
+
id: object.id,
|
6
|
+
**combined_html_options) do %>
|
2
7
|
<% if object.title %>
|
3
|
-
<%=
|
4
|
-
<%=
|
8
|
+
<%= content_tag(:div, class: "pb_nav_list_title") do %>
|
9
|
+
<%= content_tag(:a, class: "pb_nav_list_item_link_text", href: object.link) do %>
|
5
10
|
<%= pb_rails("caption", props: { text: object.title, dark: dark }) %>
|
6
11
|
<% end %>
|
7
12
|
<% end %>
|
@@ -8,7 +8,6 @@ import OverlayToken from './subcomponents/_overlay_token'
|
|
8
8
|
export type OverlayChildrenProps = {
|
9
9
|
children: React.ReactNode[] | React.ReactNode,
|
10
10
|
color: "card_light" | "bg_light" | "card_dark" | "bg_dark",
|
11
|
-
dynamic?: boolean,
|
12
11
|
position: string,
|
13
12
|
size: string,
|
14
13
|
}
|
@@ -19,7 +18,6 @@ type OverlayProps = {
|
|
19
18
|
children: React.ReactNode[] | React.ReactNode,
|
20
19
|
color: "card_light" | "bg_light" | "card_dark" | "bg_dark",
|
21
20
|
data?: { [key: string]: string },
|
22
|
-
dynamic?: false,
|
23
21
|
htmlOptions?: { [key: string]: string | number | boolean | (() => void) },
|
24
22
|
id?: string,
|
25
23
|
layout: { [key: string]: string },
|
@@ -32,7 +30,6 @@ const Overlay = (props: OverlayProps) => {
|
|
32
30
|
children,
|
33
31
|
color = "card_light",
|
34
32
|
data = {},
|
35
|
-
dynamic = false,
|
36
33
|
htmlOptions = {},
|
37
34
|
id,
|
38
35
|
layout = { "bottom": "full" },
|
@@ -72,7 +69,6 @@ const Overlay = (props: OverlayProps) => {
|
|
72
69
|
}) : OverlayToken({
|
73
70
|
children,
|
74
71
|
color,
|
75
|
-
dynamic: dynamic,
|
76
72
|
position: getPosition(),
|
77
73
|
size: getSize()
|
78
74
|
})
|
@@ -1,4 +1,3 @@
|
|
1
1
|
export { default as OverlayDefault } from './_overlay_default.jsx'
|
2
2
|
export { default as OverlayMultiDirectional } from './_overlay_multi_directional.jsx'
|
3
3
|
export { default as OverlayToggle } from './_overlay_toggle.jsx'
|
4
|
-
export { default as OverlayVerticalDynamicMultiDirectional } from './_overlay_vertical_dynamic_multi_directional.jsx'
|
@@ -1,5 +1,5 @@
|
|
1
|
-
import React
|
2
|
-
import { OverlayChildrenProps } from '../_overlay'
|
1
|
+
import React from 'react'
|
2
|
+
import { OverlayChildrenProps } from '../_overlay'
|
3
3
|
|
4
4
|
const previousOverlayDirectionMap: { [key: string]: string } = {
|
5
5
|
"x": "left",
|
@@ -15,40 +15,11 @@ const OverlayToken = (props: OverlayChildrenProps) => {
|
|
15
15
|
const {
|
16
16
|
children,
|
17
17
|
color,
|
18
|
-
dynamic,
|
19
18
|
position,
|
20
19
|
size,
|
21
20
|
} = props
|
22
21
|
|
23
|
-
const
|
24
|
-
const [isAtStart, setIsAtStart] = useState(true);
|
25
|
-
const [isAtEnd, setIsAtEnd] = useState(false);
|
26
|
-
|
27
|
-
|
28
|
-
const handleScroll = () => {
|
29
|
-
const container = scrollContainerRef.current;
|
30
|
-
if (container) {
|
31
|
-
const { scrollLeft, scrollWidth, clientWidth } = container;
|
32
|
-
const atStart = scrollLeft === 0;
|
33
|
-
const atEnd = scrollLeft + clientWidth >= scrollWidth - 1;
|
34
|
-
|
35
|
-
setIsAtStart(atStart);
|
36
|
-
setIsAtEnd(atEnd);
|
37
|
-
}
|
38
|
-
};
|
39
|
-
|
40
|
-
useEffect(() => {
|
41
|
-
const container = scrollContainerRef.current;
|
42
|
-
if (container) {
|
43
|
-
container.addEventListener('scroll', handleScroll);
|
44
|
-
handleScroll();
|
45
|
-
return () => {
|
46
|
-
container.removeEventListener('scroll', handleScroll);
|
47
|
-
};
|
48
|
-
}
|
49
|
-
}, []);
|
50
|
-
|
51
|
-
const hasSubsequentOverlay = position === "x" || position === "y";
|
22
|
+
const hasSubsequentOverlay = position === "x" || position === "y"
|
52
23
|
|
53
24
|
const getPreviousOverlayDirection = () => {
|
54
25
|
return hasSubsequentOverlay ? previousOverlayDirectionMap[position] : position
|
@@ -63,24 +34,15 @@ const OverlayToken = (props: OverlayChildrenProps) => {
|
|
63
34
|
|
64
35
|
return (
|
65
36
|
<>
|
66
|
-
<div className={
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
}}
|
73
|
-
>
|
74
|
-
{children}
|
75
|
-
</div>
|
76
|
-
:
|
77
|
-
children
|
78
|
-
}
|
79
|
-
{hasSubsequentOverlay &&
|
80
|
-
<div className={dynamic ? isAtEnd ? '' : subsequentOverlayClassName : subsequentOverlayClassName} />
|
37
|
+
<div className={previousOverlayClassName} />
|
38
|
+
|
39
|
+
{children}
|
40
|
+
|
41
|
+
{ hasSubsequentOverlay &&
|
42
|
+
<div className={subsequentOverlayClassName} />
|
81
43
|
}
|
82
44
|
</>
|
83
45
|
)
|
84
46
|
}
|
85
47
|
|
86
|
-
export default OverlayToken
|
48
|
+
export default OverlayToken
|
@@ -1,4 +1,9 @@
|
|
1
|
-
<%=
|
1
|
+
<%= content_tag(:div,
|
2
|
+
aria: object.aria,
|
3
|
+
class: object.classname,
|
4
|
+
data: object.data,
|
5
|
+
id: object.id,
|
6
|
+
**combined_html_options) do %>
|
2
7
|
<div class="pb_popover_tooltip hide" id="<%= object.tooltip_id %>" role="tooltip" style="<%= object.z_index_helper %>">
|
3
8
|
<div class="pb_popover_body <%= object.width_height_class_helper %> <%= object.popover_spacing_helper %>" style="<%= object.width_height_helper %>">
|
4
9
|
<%= content.presence %>
|
@@ -13,7 +13,6 @@ type ProgressPillsProps = {
|
|
13
13
|
className?: string,
|
14
14
|
data?: { [key: string]: string },
|
15
15
|
dark?: boolean,
|
16
|
-
fullWidthPill?: boolean,
|
17
16
|
htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
|
18
17
|
id?: string,
|
19
18
|
steps?: number,
|
@@ -21,19 +20,19 @@ type ProgressPillsProps = {
|
|
21
20
|
value?: string,
|
22
21
|
}
|
23
22
|
|
24
|
-
const ProgressPill = ({ active, dark, steps: step
|
23
|
+
const ProgressPill = ({ active, dark, steps: step }: ProgressPillsProps) => (
|
25
24
|
<div
|
26
25
|
className={`pb_progress_pill${step <= active ? '_active' : '_inactive'}${dark ? ' dark' : ''
|
27
|
-
}
|
26
|
+
}`}
|
28
27
|
key={step}
|
29
28
|
/>
|
30
29
|
)
|
31
30
|
|
32
|
-
const showSteps = (steps: number, active: number, dark: boolean
|
31
|
+
const showSteps = (steps: number, active: number, dark: boolean) => {
|
33
32
|
const items = []
|
34
33
|
|
35
34
|
for (let step = 1; step <= steps; step++) {
|
36
|
-
items.push(ProgressPill({ steps: step, active, dark
|
35
|
+
items.push(ProgressPill({ steps: step, active, dark }))
|
37
36
|
}
|
38
37
|
|
39
38
|
return items
|
@@ -45,7 +44,6 @@ const ProgressPills = (props: ProgressPillsProps) => {
|
|
45
44
|
aria = { hidden: 'true' },
|
46
45
|
className,
|
47
46
|
data = {},
|
48
|
-
fullWidthPill = false,
|
49
47
|
htmlOptions = {},
|
50
48
|
id,
|
51
49
|
steps = 3,
|
@@ -81,7 +79,7 @@ const ProgressPills = (props: ProgressPillsProps) => {
|
|
81
79
|
text={value}
|
82
80
|
/>
|
83
81
|
</div>}
|
84
|
-
<div className="progress_pills">{showSteps(steps, active, dark
|
82
|
+
<div className="progress_pills">{showSteps(steps, active, dark)}</div>
|
85
83
|
</div>
|
86
84
|
)
|
87
85
|
}
|
@@ -3,11 +3,9 @@ examples:
|
|
3
3
|
rails:
|
4
4
|
- progress_pills_default: Default
|
5
5
|
- progress_pills_status: Status
|
6
|
-
- progress_pills_full_width: Full Container Width
|
7
6
|
|
8
7
|
|
9
8
|
|
10
9
|
react:
|
11
10
|
- progress_pills_default: Default
|
12
11
|
- progress_pills_status: Status
|
13
|
-
- progress_pills_full_width: Full Container Width
|
@@ -1,4 +1,9 @@
|
|
1
|
-
<%=
|
1
|
+
<%= content_tag(:div,
|
2
|
+
aria: object.aria_attributes,
|
3
|
+
id: object.id,
|
4
|
+
data: object.data,
|
5
|
+
class: object.classname,
|
6
|
+
**combined_html_options) do %>
|
2
7
|
|
3
8
|
<div class="progress_pills_status">
|
4
9
|
<% object.with_status do |status| %>
|
@@ -9,7 +14,7 @@
|
|
9
14
|
|
10
15
|
<div class="progress_pills">
|
11
16
|
<% object.each_step do |step| %>
|
12
|
-
<span class="pb_progress_pill<%= object.active_step(step) %><%= object.
|
17
|
+
<span class="pb_progress_pill<%= object.active_step(step) %><%= object.dark_pill %>"></span>
|
13
18
|
<% end %>
|
14
19
|
</div>
|
15
20
|
|
@@ -9,8 +9,6 @@ module Playbook
|
|
9
9
|
prop :steps, type: Playbook::Props::Number,
|
10
10
|
default: 3
|
11
11
|
prop :title
|
12
|
-
prop :full_width_pill, type: Playbook::Props::Boolean,
|
13
|
-
default: false
|
14
12
|
|
15
13
|
def classname
|
16
14
|
generate_classname("pb_progress_pills_kit")
|
@@ -28,10 +26,6 @@ module Playbook
|
|
28
26
|
step <= active ? "_active" : "_inactive"
|
29
27
|
end
|
30
28
|
|
31
|
-
def make_full_width
|
32
|
-
full_width_pill ? " full_width_pill" : nil
|
33
|
-
end
|
34
|
-
|
35
29
|
def aria_attributes
|
36
30
|
return aria if aria.present?
|
37
31
|
|
@@ -23,20 +23,6 @@ const ProgressPillsDefault = () => {
|
|
23
23
|
)
|
24
24
|
}
|
25
25
|
|
26
|
-
const ProgressPillsFullWidth = () => {
|
27
|
-
return (
|
28
|
-
<ProgressPills
|
29
|
-
active={2}
|
30
|
-
aria={{ label: ariaLabel }}
|
31
|
-
data={{ testid: testId }}
|
32
|
-
fullWidthPill
|
33
|
-
steps={3}
|
34
|
-
title={title}
|
35
|
-
value={value}
|
36
|
-
/>
|
37
|
-
)
|
38
|
-
}
|
39
|
-
|
40
26
|
test('should pass data prop', () => {
|
41
27
|
render(<ProgressPillsDefault />)
|
42
28
|
const kit = screen.getByTestId(testId)
|
@@ -65,15 +51,4 @@ test('should render value', () => {
|
|
65
51
|
render(<ProgressPillsDefault />)
|
66
52
|
const kit = screen.getByText(value)
|
67
53
|
expect(kit).toBeInTheDocument()
|
68
|
-
})
|
69
|
-
|
70
|
-
test('should apply fullWidthPill styling when fullWidthPill prop is true', () => {
|
71
|
-
render(<ProgressPillsFullWidth />)
|
72
|
-
const container = screen.getByTestId(testId)
|
73
|
-
const pillElements = container.querySelectorAll('.full_width_pill')
|
74
|
-
|
75
|
-
expect(pillElements.length).toBeGreaterThan(0)
|
76
|
-
pillElements.forEach((pill) => {
|
77
|
-
expect(pill).toHaveClass('full_width_pill')
|
78
|
-
})
|
79
|
-
})
|
54
|
+
})
|
@@ -1,7 +1,11 @@
|
|
1
1
|
<%= content_tag(:div,
|
2
2
|
class: object.wrapper_classname,
|
3
3
|
style: object.style) do %>
|
4
|
-
<%=
|
4
|
+
<%= content_tag(:div,
|
5
|
+
id: object.id,
|
6
|
+
data: object.data_values,
|
7
|
+
class: object.classname,
|
8
|
+
**combined_html_options) do %>
|
5
9
|
<%= content_tag(:div, "",
|
6
10
|
class: "progress_simple_value",
|
7
11
|
style: object.value_style) %>
|