playbook_ui_docs 16.3.0 → 16.4.0.pre.alpha.displaybreakpoints15091
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/pb_advanced_table/docs/_advanced_table_cascade_collapse.jsx +50 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_cascade_collapse.md +1 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sort_parent_only.jsx +175 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sort_parent_only.md +5 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +3 -1
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_compound_components.html.erb +1 -1
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_compound_components.jsx +6 -3
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_full_height.html.erb +3 -3
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_full_height.jsx +6 -3
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_full_height_placement.html.erb +3 -3
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_full_height_placement.jsx +6 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_closing_options_rails.html.erb +16 -0
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_closing_options_rails.md +1 -0
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_custom_event_type.html.erb +224 -0
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_custom_event_type.md +7 -0
- data/app/pb_kits/playbook/pb_dropdown/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_nav_margin.html.erb +46 -0
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_nav_margin.jsx +42 -0
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_nav_margin_rails.md +1 -0
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_nav_margin_react.md +1 -0
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/index.js +2 -1
- data/app/pb_kits/playbook/pb_popover/docs/_popover_placement.jsx +81 -0
- data/app/pb_kits/playbook/pb_popover/docs/_popover_placement_react.md +1 -0
- data/app/pb_kits/playbook/pb_popover/docs/_popover_position.html.erb +128 -0
- data/app/pb_kits/playbook/pb_popover/docs/_popover_position_rails.md +1 -0
- data/app/pb_kits/playbook/pb_popover/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_popover/docs/index.js +2 -1
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_default.jsx +56 -0
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_default.md +1 -0
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/example.yml +13 -21
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/index.js +0 -10
- data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_with_card_title_props.jsx +152 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_with_card_title_props.md +17 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_with_card_title_props_rails.html.erb +121 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_with_card_title_props_rails.md +17 -0
- data/app/pb_kits/playbook/pb_table/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_table/docs/index.js +1 -0
- metadata +23 -24
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_attributes.html.erb +0 -5
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_attributes.jsx +0 -15
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_default.html.erb +0 -1
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_focus.html.erb +0 -3
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_focus.jsx +0 -17
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_inline.html.erb +0 -6
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_inline.jsx +0 -16
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_label.jsx +0 -28
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_label.md +0 -1
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_preview.html.erb +0 -35
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_preview.jsx +0 -45
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_required_indicator.html.erb +0 -10
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_required_indicator.jsx +0 -22
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_required_indicator.md +0 -3
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_simple.html.erb +0 -1
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_simple.jsx +0 -13
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_sticky.html.erb +0 -1
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_sticky.jsx +0 -15
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_templates.html.erb +0 -115
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_templates.jsx +0 -42
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_toolbar_bottom.html.erb +0 -4
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_toolbar_bottom.jsx +0 -14
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import React, { useState } from "react"
|
|
2
|
+
import { Button, Date as DateKit, DatePicker, Dropdown, Select, Table, TextInput, Typeahead, Flex } from "playbook-ui"
|
|
3
|
+
|
|
4
|
+
// Mock Data for Table
|
|
5
|
+
const users = [
|
|
6
|
+
{ id: 1, name: "Jennifer", title: "Associate Scrum Master", department: "Business Technology", branch: "Philadelphia", startDate: "2025-01-01" },
|
|
7
|
+
{ id: 2, name: "Nick", title: "UX Engineer II", department: "Business Technology", branch: "Philadelphia", startDate: "2025-01-02" },
|
|
8
|
+
{ id: 3, name: "Nida", title: "Senior UX Engineer", department: "Business Technology", branch: "Philadelphia", startDate: "2025-01-03" },
|
|
9
|
+
{ id: 4, name: "Justin", title: "Director of User Experience Engineering", department: "Business Technology", branch: "Philadelphia", startDate: "2025-01-04" },
|
|
10
|
+
{ id: 5, name: "Edward", title: "UX Designer II", department: "Business Technology", branch: "Philadelphia", startDate: "2025-01-05" },
|
|
11
|
+
{ id: 6, name: "Elisa", title: "UX Engineer", department: "Business Technology", branch: "Philadelphia", startDate: "2025-01-06" },
|
|
12
|
+
{ id: 7, name: "Gary", title: "UX Engineer", department: "Business Technology", branch: "Philadelphia", startDate: "2025-01-07" },
|
|
13
|
+
{ id: 8, name: "Barkley", title: "Nitro Quality Ninja", department: "Business Technology", branch: "Philadelphia", startDate: "2025-01-08" },
|
|
14
|
+
{ id: 9, name: "Aaron", title: "Associate Nitro Quality Ninja", department: "Business Technology", branch: "Philadelphia", startDate: "2025-01-09" },
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
const TableWithFilterWithCardTitleProps = () => {
|
|
18
|
+
const [territory, setTerritory] = useState("")
|
|
19
|
+
|
|
20
|
+
// --------Filter content example ------
|
|
21
|
+
const filterContent = ({ closePopover }) => (
|
|
22
|
+
<>
|
|
23
|
+
<TextInput
|
|
24
|
+
label="Territory ID"
|
|
25
|
+
onChange={event => setTerritory(event.target.value)}
|
|
26
|
+
value={territory}
|
|
27
|
+
/>
|
|
28
|
+
|
|
29
|
+
<Typeahead
|
|
30
|
+
label="Title"
|
|
31
|
+
options={[
|
|
32
|
+
{ key: "senior-ux-engineer", label: "Senior UX Engineer", value: "senior-ux-engineer" },
|
|
33
|
+
{ key: "ux-engineer", label: "UX Engineer", value: "ux-engineer" },
|
|
34
|
+
{ key: "ux-designer", label: "UX Designer", value: "ux-designer" }
|
|
35
|
+
]}
|
|
36
|
+
/>
|
|
37
|
+
|
|
38
|
+
<Select
|
|
39
|
+
blankSelection="All Departments"
|
|
40
|
+
label="Department"
|
|
41
|
+
options={[
|
|
42
|
+
{ value: "Business Technology", label: "Business Technology", key: "business-technology" },
|
|
43
|
+
{ value: "Customer Development", label: "Customer Development", key: "customer-development" },
|
|
44
|
+
{ value: "Talent Acquisition", label: "Talent Acquisition", key: "talent-acquisition" }
|
|
45
|
+
]}
|
|
46
|
+
/>
|
|
47
|
+
|
|
48
|
+
<Dropdown
|
|
49
|
+
label="Branch"
|
|
50
|
+
options={[
|
|
51
|
+
{ key: "Philadelphia", label: "Philadelphia", value: "philadelphia" },
|
|
52
|
+
{ key: "New York", label: "New York", value: "new-york" },
|
|
53
|
+
{ key: "Austin", label: "Austin", value: "austin" }
|
|
54
|
+
]}
|
|
55
|
+
/>
|
|
56
|
+
|
|
57
|
+
<DatePicker
|
|
58
|
+
label="Start Date"
|
|
59
|
+
paddingY="sm"
|
|
60
|
+
pickerId="startedOn"
|
|
61
|
+
/>
|
|
62
|
+
<Flex spacing="between">
|
|
63
|
+
<Button
|
|
64
|
+
onClick={() => {
|
|
65
|
+
alert("No filtering functionality - just a pattern demo!")
|
|
66
|
+
closePopover()
|
|
67
|
+
}}
|
|
68
|
+
text="Filter"
|
|
69
|
+
/>
|
|
70
|
+
<Button
|
|
71
|
+
text="Defaults"
|
|
72
|
+
variant="secondary"
|
|
73
|
+
/>
|
|
74
|
+
</Flex>
|
|
75
|
+
</>
|
|
76
|
+
)
|
|
77
|
+
// -------End Filter content example ------
|
|
78
|
+
|
|
79
|
+
return (
|
|
80
|
+
<Table
|
|
81
|
+
cardProps={{marginX: {
|
|
82
|
+
xs: "sm",
|
|
83
|
+
sm: "sm",
|
|
84
|
+
md: "xl",
|
|
85
|
+
lg: "xl",
|
|
86
|
+
xl: "xl",
|
|
87
|
+
default: "xl",
|
|
88
|
+
}}}
|
|
89
|
+
filterContent={filterContent}
|
|
90
|
+
filterProps={{
|
|
91
|
+
results: 50,
|
|
92
|
+
sortOptions: {
|
|
93
|
+
territory_id: "Territory ID",
|
|
94
|
+
first_name: "Name",
|
|
95
|
+
started_on: "Start Date",
|
|
96
|
+
department_name: "Department",
|
|
97
|
+
title_name: "Title",
|
|
98
|
+
branch_branch_name: "Branch",
|
|
99
|
+
},
|
|
100
|
+
sortValue: [{ name: 'started_on', dir: 'asc' }],
|
|
101
|
+
}}
|
|
102
|
+
title="Table Title Here"
|
|
103
|
+
titleProps={{
|
|
104
|
+
paddingLeft:{
|
|
105
|
+
xs: "sm",
|
|
106
|
+
sm: "sm",
|
|
107
|
+
md: "xl",
|
|
108
|
+
lg: "xl",
|
|
109
|
+
xl: "xl",
|
|
110
|
+
default: "xl",
|
|
111
|
+
}
|
|
112
|
+
}}
|
|
113
|
+
variant="withFilter"
|
|
114
|
+
>
|
|
115
|
+
<Table.Head>
|
|
116
|
+
<Table.Row>
|
|
117
|
+
<Table.Header>{'Territory ID'}</Table.Header>
|
|
118
|
+
<Table.Header>{'Name'}</Table.Header>
|
|
119
|
+
<Table.Header>{'Title'}</Table.Header>
|
|
120
|
+
<Table.Header>{'Department'}</Table.Header>
|
|
121
|
+
<Table.Header>{'Branch'}</Table.Header>
|
|
122
|
+
<Table.Header textAlign="right">{'Start Date'}</Table.Header>
|
|
123
|
+
</Table.Row>
|
|
124
|
+
</Table.Head>
|
|
125
|
+
<Table.Body>
|
|
126
|
+
{users.map((user) => (
|
|
127
|
+
<Table.Row key={user.id}>
|
|
128
|
+
<Table.Cell
|
|
129
|
+
marginX={{ xs: "sm" }}
|
|
130
|
+
numberSpacing="tabular"
|
|
131
|
+
>
|
|
132
|
+
{user.id}
|
|
133
|
+
</Table.Cell>
|
|
134
|
+
<Table.Cell marginX={{ xs: "sm" }}>{user.name}</Table.Cell>
|
|
135
|
+
<Table.Cell marginX={{ xs: "sm" }}>{user.title}</Table.Cell>
|
|
136
|
+
<Table.Cell marginX={{ xs: "sm" }}>{user.department}</Table.Cell>
|
|
137
|
+
<Table.Cell marginX={{ xs: "sm" }}>{user.branch}</Table.Cell>
|
|
138
|
+
<Table.Cell marginX={{ xs: "sm" }}>
|
|
139
|
+
<DateKit
|
|
140
|
+
alignment="right"
|
|
141
|
+
showCurrentYear
|
|
142
|
+
value={user.startDate}
|
|
143
|
+
/>
|
|
144
|
+
</Table.Cell>
|
|
145
|
+
</Table.Row>
|
|
146
|
+
))}
|
|
147
|
+
</Table.Body>
|
|
148
|
+
</Table>
|
|
149
|
+
)
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
export default TableWithFilterWithCardTitleProps
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
The `withFilter` variant also offers 2 additional optional props:
|
|
2
|
+
|
|
3
|
+
`cardProps`: An object containing Card-specific props.
|
|
4
|
+
`titleProps`: An object containing Title-specific props.
|
|
5
|
+
|
|
6
|
+
#### Default Card Props
|
|
7
|
+
|
|
8
|
+
The Table kit automatically sets these Card defaults (which you can override via `cardProps`):
|
|
9
|
+
|
|
10
|
+
- `padding="none"`
|
|
11
|
+
|
|
12
|
+
#### Default Title Props
|
|
13
|
+
|
|
14
|
+
The Table kit automatically sets these Title defaults (which you can override via `titleProps`):
|
|
15
|
+
|
|
16
|
+
- `size={3}`
|
|
17
|
+
- `paddingY="md"`
|
data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_with_card_title_props_rails.html.erb
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
<% users = [
|
|
2
|
+
{ id: 1, name: "Jennifer", title: "Associate Scrum Master", department: "Business Technology", branch: "Philadelphia", start_date: Date.new(2025, 1, 1) },
|
|
3
|
+
{ id: 2, name: "Nick", title: "UX Engineer II", department: "Business Technology", branch: "Philadelphia", start_date: Date.new(2025, 1, 2) },
|
|
4
|
+
{ id: 3, name: "Nida", title: "Senior UX Engineer", department: "Business Technology", branch: "Philadelphia", start_date: Date.new(2025, 1, 3) },
|
|
5
|
+
{ id: 4, name: "Justin", title: "Director of User Experience Engineering", department: "Business Technology", branch: "Philadelphia", start_date: Date.new(2025, 1, 4) },
|
|
6
|
+
{ id: 5, name: "Edward", title: "UX Designer II", department: "Business Technology", branch: "Philadelphia", start_date: Date.new(2025, 1, 5) },
|
|
7
|
+
{ id: 6, name: "Elisa", title: "UX Engineer", department: "Business Technology", branch: "Philadelphia", start_date: Date.new(2025, 1, 6) },
|
|
8
|
+
{ id: 7, name: "Gary", title: "UX Engineer", department: "Business Technology", branch: "Philadelphia", start_date: Date.new(2025, 1, 7) },
|
|
9
|
+
{ id: 8, name: "Barkley", title: "Nitro Quality Ninja", department: "Business Technology", branch: "Philadelphia", start_date: Date.new(2025, 1, 8) },
|
|
10
|
+
{ id: 9, name: "Aaron", title: "Associate Nitro Quality Ninja", department: "Business Technology", branch: "Philadelphia", start_date: Date.new(2025, 1, 9) },
|
|
11
|
+
] %>
|
|
12
|
+
|
|
13
|
+
<% filter_content =
|
|
14
|
+
pb_rails("text_input", props: {
|
|
15
|
+
label: "Territory ID",
|
|
16
|
+
placeholder: "Enter Territory ID"
|
|
17
|
+
}) +
|
|
18
|
+
pb_rails("typeahead", props: {
|
|
19
|
+
label: "Title",
|
|
20
|
+
options: [
|
|
21
|
+
{ label: "Senior UX Engineer", value: "senior-ux-engineer" },
|
|
22
|
+
{ label: "UX Engineer", value: "ux-engineer" },
|
|
23
|
+
{ label: "UX Designer", value: "ux-designer" }
|
|
24
|
+
]
|
|
25
|
+
}) +
|
|
26
|
+
pb_rails("select", props: {
|
|
27
|
+
blank_selection: "All Departments",
|
|
28
|
+
label: "Department",
|
|
29
|
+
options: [
|
|
30
|
+
{ value: "Business Technology", text: "Business Technology" },
|
|
31
|
+
{ value: "Customer Development", text: "Customer Development" },
|
|
32
|
+
{ value: "Talent Acquisition", text: "Talent Acquisition" }
|
|
33
|
+
]
|
|
34
|
+
}) +
|
|
35
|
+
pb_rails("dropdown", props: {
|
|
36
|
+
label: "Branch",
|
|
37
|
+
options: [
|
|
38
|
+
{ label: "Philadelphia", value: "philadelphia" },
|
|
39
|
+
{ label: "New York", value: "new-york" },
|
|
40
|
+
{ label: "Austin", value: "austin" }
|
|
41
|
+
]
|
|
42
|
+
}) +
|
|
43
|
+
pb_rails("date_picker", props: {
|
|
44
|
+
label: "Start Date",
|
|
45
|
+
padding_y: "sm",
|
|
46
|
+
picker_id: "startedOn"
|
|
47
|
+
}) +
|
|
48
|
+
pb_rails("flex", props: { spacing: "between" }) do
|
|
49
|
+
pb_rails("button", props: {
|
|
50
|
+
text: "Filter",
|
|
51
|
+
}) +
|
|
52
|
+
pb_rails("button", props: {
|
|
53
|
+
text: "Defaults",
|
|
54
|
+
variant: "secondary"
|
|
55
|
+
})
|
|
56
|
+
end
|
|
57
|
+
%>
|
|
58
|
+
|
|
59
|
+
<%= pb_rails("table", props: {
|
|
60
|
+
card_props: {
|
|
61
|
+
margin_x: {
|
|
62
|
+
xs: "sm",
|
|
63
|
+
sm: "sm",
|
|
64
|
+
md: "xl",
|
|
65
|
+
lg: "xl",
|
|
66
|
+
xl: "xl",
|
|
67
|
+
default: "xl",
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
variant: "with_filter",
|
|
71
|
+
title: "Table Title Here",
|
|
72
|
+
title_props: {
|
|
73
|
+
padding_left:{
|
|
74
|
+
xs: "sm",
|
|
75
|
+
sm: "sm",
|
|
76
|
+
md: "xl",
|
|
77
|
+
lg: "xl",
|
|
78
|
+
xl: "xl",
|
|
79
|
+
default: "xl",
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
filter_content: filter_content,
|
|
83
|
+
filter_props: {
|
|
84
|
+
id: "user-table-filters-1",
|
|
85
|
+
results: 9,
|
|
86
|
+
sort_menu: [
|
|
87
|
+
{ item: "Start Date", link: "?q[sorts]=started_on+asc", active: true, direction: "asc" },
|
|
88
|
+
{ item: "First Name", link: "?q[sorts]=name+asc", active: false },
|
|
89
|
+
{ item: "Title", link: "?q[sorts]=title+asc", active: false },
|
|
90
|
+
{ item: "Department", link: "?q[sorts]=department+asc", active: false },
|
|
91
|
+
{ item: "Branch", link: "?q[sorts]=branch+asc", active: false },
|
|
92
|
+
{ item: "Territory ID", link: "?q[sorts]=territory_id+asc", active: false },
|
|
93
|
+
],
|
|
94
|
+
}
|
|
95
|
+
}) do %>
|
|
96
|
+
<%= pb_rails("table/table_head") do %>
|
|
97
|
+
<%= pb_rails("table/table_row") do %>
|
|
98
|
+
<%= pb_rails("table/table_header", props: { text: "Territory ID" }) %>
|
|
99
|
+
<%= pb_rails("table/table_header", props: { text: "Name" }) %>
|
|
100
|
+
<%= pb_rails("table/table_header", props: { text: "Title" }) %>
|
|
101
|
+
<%= pb_rails("table/table_header", props: { text: "Department" }) %>
|
|
102
|
+
<%= pb_rails("table/table_header", props: { text: "Branch" }) %>
|
|
103
|
+
<%= pb_rails("table/table_header", props: { text: "Start Date", text_align: "right" }) %>
|
|
104
|
+
<% end %>
|
|
105
|
+
<% end %>
|
|
106
|
+
|
|
107
|
+
<%= pb_rails("table/table_body") do %>
|
|
108
|
+
<% users.each do |user| %>
|
|
109
|
+
<%= pb_rails("table/table_row") do %>
|
|
110
|
+
<%= pb_rails("table/table_cell", props: { margin_x: { xs: "sm" }, number_spacing: "tabular" }) { user[:id].to_s } %>
|
|
111
|
+
<%= pb_rails("table/table_cell", props: { margin_x: { xs: "sm" } }) { user[:name] } %>
|
|
112
|
+
<%= pb_rails("table/table_cell", props: { margin_x: { xs: "sm" } }) { user[:title] } %>
|
|
113
|
+
<%= pb_rails("table/table_cell", props: { margin_x: { xs: "sm" } }) { user[:department] } %>
|
|
114
|
+
<%= pb_rails("table/table_cell", props: { margin_x: { xs: "sm" } }) { user[:branch] } %>
|
|
115
|
+
<%= pb_rails("table/table_cell", props: { margin_x: { xs: "sm" } }) do %>
|
|
116
|
+
<%= pb_rails("date", props: {alignment: "right", date: user[:start_date].to_s, show_current_year: true } ) %>
|
|
117
|
+
<% end %>
|
|
118
|
+
<% end %>
|
|
119
|
+
<% end %>
|
|
120
|
+
<% end %>
|
|
121
|
+
<% end %>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
The `with_filter` variant also offers 2 additional optional props:
|
|
2
|
+
|
|
3
|
+
`card_props`: An object containing Card-specific props.
|
|
4
|
+
`title_props`: An object containing Title-specific props.
|
|
5
|
+
|
|
6
|
+
#### Default Card Props
|
|
7
|
+
|
|
8
|
+
The Table kit automatically sets these Card defaults (which you can override via `card_props`):
|
|
9
|
+
|
|
10
|
+
- `padding:"none"`
|
|
11
|
+
|
|
12
|
+
#### Default Title Props
|
|
13
|
+
|
|
14
|
+
The Table kit automatically sets these Title defaults (which you can override via `title_props`):
|
|
15
|
+
|
|
16
|
+
- `size:3`
|
|
17
|
+
- `paddingY:"md"`
|
|
@@ -42,6 +42,7 @@ examples:
|
|
|
42
42
|
- table_with_header_style_floating: Header Style Floating
|
|
43
43
|
- table_with_filter_variant_rails: Variant with Filter
|
|
44
44
|
- table_with_filter_variant_with_pagination_rails: Variant with Filter and Pagination
|
|
45
|
+
- table_with_filter_with_card_title_props_rails: Variant with Filter (with Card and Title Props)
|
|
45
46
|
|
|
46
47
|
react:
|
|
47
48
|
- table_sm: Small
|
|
@@ -85,3 +86,4 @@ examples:
|
|
|
85
86
|
- table_with_header_style_floating: Header Style Floating
|
|
86
87
|
- table_with_filter_variant: Variant with Filter
|
|
87
88
|
- table_with_filter_variant_with_pagination: Variant with Filter and Pagination
|
|
89
|
+
- table_with_filter_with_card_title_props: Variant with Filter (with Card and Title Props)
|
|
@@ -40,3 +40,4 @@ export { default as TableWithHeaderStyleBorderless } from './_table_with_header_
|
|
|
40
40
|
export { default as TableWithHeaderStyleFloating } from './_table_with_header_style_floating.jsx'
|
|
41
41
|
export { default as TableWithFilterVariant } from './_table_with_filter_variant.jsx'
|
|
42
42
|
export { default as TableWithFilterVariantWithPagination } from './_table_with_filter_variant_with_pagination.jsx'
|
|
43
|
+
export { default as TableWithFilterWithCardTitleProps } from './_table_with_filter_with_card_title_props.jsx'
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: playbook_ui_docs
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 16.
|
|
4
|
+
version: 16.4.0.pre.alpha.displaybreakpoints15091
|
|
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: 2026-
|
|
12
|
+
date: 2026-03-18 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: playbook_ui
|
|
@@ -43,6 +43,8 @@ files:
|
|
|
43
43
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_beta_sort.md
|
|
44
44
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_beta_subrow_headers.html.erb
|
|
45
45
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_beta_subrow_headers.md
|
|
46
|
+
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_cascade_collapse.jsx
|
|
47
|
+
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_cascade_collapse.md
|
|
46
48
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_collapsible_trail.jsx
|
|
47
49
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_collapsible_trail.md
|
|
48
50
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_collapsible_trail_rails.html.erb
|
|
@@ -153,6 +155,8 @@ files:
|
|
|
153
155
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sort.md
|
|
154
156
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sort_control.jsx
|
|
155
157
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sort_control.md
|
|
158
|
+
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sort_parent_only.jsx
|
|
159
|
+
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sort_parent_only.md
|
|
156
160
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sort_per_column.jsx
|
|
157
161
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sort_per_column.md
|
|
158
162
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sort_per_column_for_multi_column.jsx
|
|
@@ -859,6 +863,10 @@ files:
|
|
|
859
863
|
- app/pb_kits/playbook/pb_dropdown/docs/_dropdown_clear_selection.md
|
|
860
864
|
- app/pb_kits/playbook/pb_dropdown/docs/_dropdown_closing_options.jsx
|
|
861
865
|
- app/pb_kits/playbook/pb_dropdown/docs/_dropdown_closing_options.md
|
|
866
|
+
- app/pb_kits/playbook/pb_dropdown/docs/_dropdown_closing_options_rails.html.erb
|
|
867
|
+
- app/pb_kits/playbook/pb_dropdown/docs/_dropdown_closing_options_rails.md
|
|
868
|
+
- app/pb_kits/playbook/pb_dropdown/docs/_dropdown_custom_event_type.html.erb
|
|
869
|
+
- app/pb_kits/playbook/pb_dropdown/docs/_dropdown_custom_event_type.md
|
|
862
870
|
- app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default.jsx
|
|
863
871
|
- app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default.md
|
|
864
872
|
- app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default_rails.html.erb
|
|
@@ -1049,6 +1057,10 @@ files:
|
|
|
1049
1057
|
- app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_multi_line.jsx
|
|
1050
1058
|
- app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_multi_line.md
|
|
1051
1059
|
- app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_multi_line_swift.md
|
|
1060
|
+
- app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_nav_margin.html.erb
|
|
1061
|
+
- app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_nav_margin.jsx
|
|
1062
|
+
- app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_nav_margin_rails.md
|
|
1063
|
+
- app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_nav_margin_react.md
|
|
1052
1064
|
- app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_no_icon.html.erb
|
|
1053
1065
|
- app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_no_icon.jsx
|
|
1054
1066
|
- app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_no_icon.md
|
|
@@ -1857,6 +1869,10 @@ files:
|
|
|
1857
1869
|
- app/pb_kits/playbook/pb_popover/docs/_popover_list.html.erb
|
|
1858
1870
|
- app/pb_kits/playbook/pb_popover/docs/_popover_list.jsx
|
|
1859
1871
|
- app/pb_kits/playbook/pb_popover/docs/_popover_list.md
|
|
1872
|
+
- app/pb_kits/playbook/pb_popover/docs/_popover_placement.jsx
|
|
1873
|
+
- app/pb_kits/playbook/pb_popover/docs/_popover_placement_react.md
|
|
1874
|
+
- app/pb_kits/playbook/pb_popover/docs/_popover_position.html.erb
|
|
1875
|
+
- app/pb_kits/playbook/pb_popover/docs/_popover_position_rails.md
|
|
1860
1876
|
- app/pb_kits/playbook/pb_popover/docs/_popover_scroll_height.html.erb
|
|
1861
1877
|
- app/pb_kits/playbook/pb_popover/docs/_popover_scroll_height.jsx
|
|
1862
1878
|
- app/pb_kits/playbook/pb_popover/docs/_popover_z_index.html.erb
|
|
@@ -1968,31 +1984,10 @@ files:
|
|
|
1968
1984
|
- app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_advanced_sticky.md
|
|
1969
1985
|
- app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_advanced_templates.jsx
|
|
1970
1986
|
- app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_advanced_templates.md
|
|
1971
|
-
- app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_attributes.html.erb
|
|
1972
|
-
- app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_attributes.jsx
|
|
1973
|
-
- app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_default.html.erb
|
|
1974
1987
|
- app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_default.jsx
|
|
1975
|
-
- app/pb_kits/playbook/pb_rich_text_editor/docs/
|
|
1976
|
-
- app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_focus.jsx
|
|
1977
|
-
- app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_inline.html.erb
|
|
1978
|
-
- app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_inline.jsx
|
|
1979
|
-
- app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_label.jsx
|
|
1980
|
-
- app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_label.md
|
|
1988
|
+
- app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_default.md
|
|
1981
1989
|
- app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_more_extensions.jsx
|
|
1982
1990
|
- app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_more_extensions.md
|
|
1983
|
-
- app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_preview.html.erb
|
|
1984
|
-
- app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_preview.jsx
|
|
1985
|
-
- app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_required_indicator.html.erb
|
|
1986
|
-
- app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_required_indicator.jsx
|
|
1987
|
-
- app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_required_indicator.md
|
|
1988
|
-
- app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_simple.html.erb
|
|
1989
|
-
- app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_simple.jsx
|
|
1990
|
-
- app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_sticky.html.erb
|
|
1991
|
-
- app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_sticky.jsx
|
|
1992
|
-
- app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_templates.html.erb
|
|
1993
|
-
- app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_templates.jsx
|
|
1994
|
-
- app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_toolbar_bottom.html.erb
|
|
1995
|
-
- app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_toolbar_bottom.jsx
|
|
1996
1991
|
- app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_toolbar_disabled.jsx
|
|
1997
1992
|
- app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_toolbar_disabled.md
|
|
1998
1993
|
- app/pb_kits/playbook/pb_rich_text_editor/docs/example.yml
|
|
@@ -2309,6 +2304,10 @@ files:
|
|
|
2309
2304
|
- app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_with_pagination.md
|
|
2310
2305
|
- app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_with_pagination_rails.html.erb
|
|
2311
2306
|
- app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_with_pagination_rails.md
|
|
2307
|
+
- app/pb_kits/playbook/pb_table/docs/_table_with_filter_with_card_title_props.jsx
|
|
2308
|
+
- app/pb_kits/playbook/pb_table/docs/_table_with_filter_with_card_title_props.md
|
|
2309
|
+
- app/pb_kits/playbook/pb_table/docs/_table_with_filter_with_card_title_props_rails.html.erb
|
|
2310
|
+
- app/pb_kits/playbook/pb_table/docs/_table_with_filter_with_card_title_props_rails.md
|
|
2312
2311
|
- app/pb_kits/playbook/pb_table/docs/_table_with_header_style_borderless.html.erb
|
|
2313
2312
|
- app/pb_kits/playbook/pb_table/docs/_table_with_header_style_borderless.jsx
|
|
2314
2313
|
- app/pb_kits/playbook/pb_table/docs/_table_with_header_style_borderless_rails.md
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import RichTextEditor from '../../pb_rich_text_editor/_rich_text_editor'
|
|
3
|
-
|
|
4
|
-
const RichTextEditorAttributes = (props) => (
|
|
5
|
-
<div>
|
|
6
|
-
<RichTextEditor
|
|
7
|
-
aria={{ label: 'rich textarea' }}
|
|
8
|
-
data={{ key: 'value', key2: 'value2' }}
|
|
9
|
-
name="name-attribute"
|
|
10
|
-
{...props}
|
|
11
|
-
/>
|
|
12
|
-
</div>
|
|
13
|
-
)
|
|
14
|
-
|
|
15
|
-
export default RichTextEditorAttributes
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<%= pb_rails("rich_text_editor", props: {input_options: { id: 'hidden_input_id', name: "hidden_input_name" }, value: "Add your text here. You can format your text, add links, quotes, and bullets."}) %>
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import RichTextEditor from '../../pb_rich_text_editor/_rich_text_editor'
|
|
3
|
-
|
|
4
|
-
const RichTextEditorFocus = (props) => (
|
|
5
|
-
<>
|
|
6
|
-
<RichTextEditor
|
|
7
|
-
focus
|
|
8
|
-
{...props}
|
|
9
|
-
/>
|
|
10
|
-
<br />
|
|
11
|
-
<RichTextEditor
|
|
12
|
-
focus
|
|
13
|
-
{...props}
|
|
14
|
-
/>
|
|
15
|
-
</>
|
|
16
|
-
)
|
|
17
|
-
export default RichTextEditorFocus
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import RichTextEditor from '../../pb_rich_text_editor/_rich_text_editor'
|
|
3
|
-
|
|
4
|
-
const RichTextEditorInline = (props) => (
|
|
5
|
-
<div>
|
|
6
|
-
<RichTextEditor
|
|
7
|
-
id="inline"
|
|
8
|
-
inline
|
|
9
|
-
toolbarBottom
|
|
10
|
-
value="Try hovering over this text. Then try modifying it or adding more of your own text."
|
|
11
|
-
{...props}
|
|
12
|
-
/>
|
|
13
|
-
</div>
|
|
14
|
-
)
|
|
15
|
-
|
|
16
|
-
export default RichTextEditorInline
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import React, { useState } from 'react'
|
|
2
|
-
import RichTextEditor from '../../pb_rich_text_editor/_rich_text_editor'
|
|
3
|
-
|
|
4
|
-
const RichTextEditorLabel = (props) => {
|
|
5
|
-
const [value, setValue] = useState(''),
|
|
6
|
-
handleOnChange = (html) => setValue(html)
|
|
7
|
-
|
|
8
|
-
return (
|
|
9
|
-
<div>
|
|
10
|
-
<RichTextEditor
|
|
11
|
-
id="example"
|
|
12
|
-
label="Example Label"
|
|
13
|
-
onChange={handleOnChange}
|
|
14
|
-
value={value}
|
|
15
|
-
{...props}
|
|
16
|
-
/>
|
|
17
|
-
<br/>
|
|
18
|
-
<RichTextEditor
|
|
19
|
-
label="Example Label No ID"
|
|
20
|
-
onChange={handleOnChange}
|
|
21
|
-
value={value}
|
|
22
|
-
{...props}
|
|
23
|
-
/>
|
|
24
|
-
</div>
|
|
25
|
-
)
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export default RichTextEditorLabel
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
The optional `label` prop adds a visible label to the editor. Passing in the `id` prop associates the `label` with the editor for accessibility, enabling screen reader support and label-based focus behavior.
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<%= pb_rails("rich_text_editor", props: { id: "content-preview-editor" }) %>
|
|
3
|
-
<div id="card-obfuscation" style="display:none">
|
|
4
|
-
<%= pb_rails("card", props: { margin_top: "md", max_width: "md", padding: "sm" }) do %>
|
|
5
|
-
<div id="content-preview" class="trix-content">
|
|
6
|
-
</div>
|
|
7
|
-
<% end %>
|
|
8
|
-
</div>
|
|
9
|
-
<%= pb_rails("button", props: { id: "preview-button", variant: "secondary", margin_top: "md" }) do %>
|
|
10
|
-
<span>Preview Output</span>
|
|
11
|
-
<% end %>
|
|
12
|
-
|
|
13
|
-
<script>
|
|
14
|
-
document.addEventListener('DOMContentLoaded', () => {
|
|
15
|
-
function handleButtonClick() {
|
|
16
|
-
const editorContainer = [...document.querySelectorAll('[data-pb-react-props]')]
|
|
17
|
-
.find(element => element.getAttribute('data-pb-react-props')?.includes('"id":"content-preview-editor"'))
|
|
18
|
-
|
|
19
|
-
const editorElement = editorContainer?.querySelector('trix-editor')
|
|
20
|
-
const inputId = editorElement?.getAttribute('input')
|
|
21
|
-
const inputElement = inputId && document.getElementById(inputId)
|
|
22
|
-
|
|
23
|
-
const editorContent = inputElement?.value || ''
|
|
24
|
-
const previewArea = document.getElementById('content-preview')
|
|
25
|
-
const cardDiv = document.getElementById('card-obfuscation')
|
|
26
|
-
|
|
27
|
-
if (previewArea && cardDiv) {
|
|
28
|
-
previewArea.innerHTML = editorContent
|
|
29
|
-
cardDiv.style.display = 'block'
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
document.getElementById('preview-button')?.addEventListener('click', handleButtonClick)
|
|
34
|
-
})
|
|
35
|
-
</script>
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import React, { useState } from 'react'
|
|
2
|
-
import RichTextEditor from '../../pb_rich_text_editor/_rich_text_editor'
|
|
3
|
-
import Button from '../../pb_button/_button'
|
|
4
|
-
import Card from '../../pb_card/_card'
|
|
5
|
-
|
|
6
|
-
const RichTextEditorPreview = (props) => {
|
|
7
|
-
const [showPreview, setShowPreview] = useState(false)
|
|
8
|
-
const [previewText, setPreviewText] = useState(<div />)
|
|
9
|
-
|
|
10
|
-
const handleChange = (event) => setPreviewText(event)
|
|
11
|
-
const handleClick = () => {
|
|
12
|
-
setShowPreview(true)
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
return (
|
|
16
|
-
<div>
|
|
17
|
-
<RichTextEditor
|
|
18
|
-
id="content-preview-editor"
|
|
19
|
-
onChange={handleChange}
|
|
20
|
-
{...props}
|
|
21
|
-
/>
|
|
22
|
-
{showPreview && (
|
|
23
|
-
<Card marginTop="md">
|
|
24
|
-
<div
|
|
25
|
-
className="trix-content"
|
|
26
|
-
// eslint-disable-next-line react/no-danger
|
|
27
|
-
dangerouslySetInnerHTML={{ __html: previewText }}
|
|
28
|
-
id="preview-content"
|
|
29
|
-
/>
|
|
30
|
-
</Card>
|
|
31
|
-
)}
|
|
32
|
-
{!showPreview && (
|
|
33
|
-
<div />
|
|
34
|
-
)}
|
|
35
|
-
<Button
|
|
36
|
-
id="preview-button"
|
|
37
|
-
marginTop="md"
|
|
38
|
-
onClick={handleClick}
|
|
39
|
-
text="Preview Output"
|
|
40
|
-
variant="secondary"
|
|
41
|
-
/>
|
|
42
|
-
</div>
|
|
43
|
-
)
|
|
44
|
-
}
|
|
45
|
-
export default RichTextEditorPreview
|
data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_required_indicator.html.erb
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
<%= pb_rails("rich_text_editor", props: {
|
|
2
|
-
id: "required-indicator",
|
|
3
|
-
input_options: {
|
|
4
|
-
id: 'hidden_input_id',
|
|
5
|
-
name: "hidden_input_name"
|
|
6
|
-
},
|
|
7
|
-
label: "Label",
|
|
8
|
-
required_indicator: true,
|
|
9
|
-
value: "Add your text here. You can format your text, add links, quotes, and bullets."
|
|
10
|
-
}) %>
|