playbook_ui_docs 15.6.0.pre.alpha.play266913088 → 15.6.0.pre.rc.0
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_background_control_rails.html.erb +5 -11
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_background_control_rails.md +1 -7
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props.html.erb +163 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props.jsx +190 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +1 -4
- data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +1 -3
- data/app/pb_kits/playbook/pb_background/docs/_background_light.html.erb +1 -1
- data/app/pb_kits/playbook/pb_background/docs/_background_light.jsx +1 -0
- data/app/pb_kits/playbook/pb_background/docs/example.yml +2 -2
- data/app/pb_kits/playbook/pb_card/docs/_card_header.md +1 -1
- data/app/pb_kits/playbook/pb_card/docs/_card_highlight.md +1 -1
- data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_icons.jsx +1 -0
- data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_state.jsx +3 -0
- data/app/pb_kits/playbook/pb_contact/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_contact/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_range_pattern_rails.html.erb +14 -23
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_range_pattern_rails.md +1 -1
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_compound_components.html.erb +0 -31
- data/app/pb_kits/playbook/pb_dialog/docs/example.yml +0 -4
- data/app/pb_kits/playbook/pb_dialog/docs/index.js +1 -3
- data/app/pb_kits/playbook/pb_distribution_bar/docs/_distribution_bar_custom_colors.md +1 -1
- data/app/pb_kits/playbook/pb_draggable/docs/example.yml +2 -3
- data/app/pb_kits/playbook/pb_draggable/docs/index.js +1 -2
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default_rails.html.erb +5 -7
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_display_rails.html.erb +1 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/example.yml +0 -5
- data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_default.html.erb +1 -1
- data/app/pb_kits/playbook/pb_multiple_users/docs/example.yml +0 -1
- data/app/pb_kits/playbook/pb_multiple_users/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_validation.html.erb +4 -34
- data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_validation.jsx +7 -16
- data/app/pb_kits/playbook/pb_radio/docs/_radio_error.md +1 -1
- data/app/pb_kits/playbook/pb_select/docs/_select_error.md +1 -1
- data/app/pb_kits/playbook/pb_select/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_select/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_table/docs/example.yml +0 -4
- data/app/pb_kits/playbook/pb_table/docs/index.js +0 -2
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_error.md +1 -1
- data/app/pb_kits/playbook/pb_textarea/docs/_textarea_error.md +1 -1
- data/app/pb_kits/playbook/pb_timeline/docs/_timeline_with_date.md +1 -1
- data/app/pb_kits/playbook/pb_timeline/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_timeline/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_typeahead/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_typeahead/docs/index.js +1 -2
- metadata +2 -50
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_background_colors_rails.html.erb +0 -43
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_background_colors_rails.md +0 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_background.jsx +0 -54
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_background.md +0 -9
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_background_multi.jsx +0 -80
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_background_multi.md +0 -3
- data/app/pb_kits/playbook/pb_background/docs/_background_light.md +0 -1
- data/app/pb_kits/playbook/pb_contact/docs/_contact_unstyled.html.erb +0 -33
- data/app/pb_kits/playbook/pb_contact/docs/_contact_unstyled.jsx +0 -46
- data/app/pb_kits/playbook/pb_contact/docs/_contact_unstyled_rails.md +0 -2
- data/app/pb_kits/playbook/pb_contact/docs/_contact_unstyled_react.md +0 -2
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_closeable.html.erb +0 -24
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_closeable.jsx +0 -60
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_closeable.md +0 -3
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_overflow_visible.html.erb +0 -71
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_overflow_visible.jsx +0 -57
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_overflow_visible_rails.md +0 -1
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_overflow_visible_react.md +0 -1
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_multiple_containers_dropzone.jsx +0 -180
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_multiple_containers_dropzone.md +0 -22
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_default_dates.html.erb +0 -19
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_rails.html.erb +0 -12
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_rails.md +0 -26
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_range_end_rails.html.erb +0 -19
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_range_end_rails.md +0 -1
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_with_date_pickers_default_rails.html.erb +0 -30
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_with_date_pickers_default_rails.md +0 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_with_date_pickers_rails.html.erb +0 -29
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_with_date_pickers_rails.md +0 -13
- data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_with_tooltip.jsx +0 -42
- data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_with_tooltip.md +0 -1
- data/app/pb_kits/playbook/pb_select/docs/_select_input_options.html.erb +0 -16
- data/app/pb_kits/playbook/pb_select/docs/_select_input_options.jsx +0 -30
- data/app/pb_kits/playbook/pb_select/docs/_select_input_options.md +0 -1
- data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant.jsx +0 -134
- data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant.md +0 -34
- data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_rails.html.erb +0 -101
- data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_rails.md +0 -33
- data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_with_pagination.jsx +0 -180
- data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_with_pagination.md +0 -3
- data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_with_pagination_rails.html.erb +0 -122
- data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_with_pagination_rails.md +0 -3
- data/app/pb_kits/playbook/pb_timeline/docs/_timeline_show_current_year.html.erb +0 -60
- data/app/pb_kits/playbook/pb_timeline/docs/_timeline_show_current_year.jsx +0 -118
- data/app/pb_kits/playbook/pb_timeline/docs/_timeline_show_current_year.md +0 -1
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_input_display.html.erb +0 -30
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_input_display.jsx +0 -37
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_input_display.md +0 -3
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<%= pb_rails("dropdown", props: {
|
|
3
|
-
id: "date-range-quickpick-end-today",
|
|
4
|
-
label: "Date Range",
|
|
5
|
-
variant: "quickpick",
|
|
6
|
-
range_ends_today: true
|
|
7
|
-
}) %>
|
|
8
|
-
|
|
9
|
-
<script>
|
|
10
|
-
document.addEventListener("DOMContentLoaded", () => {
|
|
11
|
-
const dropdown = document.getElementById("date-range-quickpick-end-today");
|
|
12
|
-
if (dropdown) {
|
|
13
|
-
dropdown.addEventListener("pb:dropdown:selected", (e) => {
|
|
14
|
-
const option = e.detail;
|
|
15
|
-
console.log("Selected option:", option);
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
</script>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
The optional `range_ends_today` prop can be used with the `quickpick` variant to set end date on all ranges that start with 'this' to today's date. For instance, by default 'This Year' will set end day to 12/31/(current year), but if `range_ends_today` prop is used, end date on that range will be today's date.
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
<%= pb_rails("dropdown", props: {
|
|
2
|
-
id: "dropdown-quickpick-with-date-pickers-default",
|
|
3
|
-
label: "Date Range",
|
|
4
|
-
name: "date_range",
|
|
5
|
-
margin_bottom: "sm",
|
|
6
|
-
variant: "quickpick",
|
|
7
|
-
default_value: "This Month",
|
|
8
|
-
controls_start_id: "start-date-picker-default",
|
|
9
|
-
controls_end_id: "end-date-picker-default",
|
|
10
|
-
start_date_id: "quickpick_start_date_default",
|
|
11
|
-
start_date_name: "start_date",
|
|
12
|
-
end_date_id: "quickpick_end_date_default",
|
|
13
|
-
end_date_name: "end_date"
|
|
14
|
-
}) %>
|
|
15
|
-
|
|
16
|
-
<%= pb_rails("date_picker", props: {
|
|
17
|
-
picker_id: "start-date-picker-default",
|
|
18
|
-
label: "Start Date",
|
|
19
|
-
name: "start_date_picker",
|
|
20
|
-
placeholder: "Select Start Date",
|
|
21
|
-
sync_start_with: "dropdown-quickpick-with-date-pickers-default"
|
|
22
|
-
}) %>
|
|
23
|
-
|
|
24
|
-
<%= pb_rails("date_picker", props: {
|
|
25
|
-
picker_id: "end-date-picker-default",
|
|
26
|
-
label: "End Date",
|
|
27
|
-
name: "end_date_picker",
|
|
28
|
-
placeholder: "Select End Date",
|
|
29
|
-
sync_end_with: "dropdown-quickpick-with-date-pickers-default"
|
|
30
|
-
}) %>
|
data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_with_date_pickers_default_rails.md
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
This example demonstrates the 3-input pattern with a default value. The dropdown is initialized with "This Month" selected, and both DatePickers are automatically populated with the corresponding start and end dates.
|
|
2
|
-
|
|
3
|
-
The default value can be set using the `default_value` prop with any of the quickpick option labels.
|
data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_with_date_pickers_rails.html.erb
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
<%= pb_rails("dropdown", props: {
|
|
2
|
-
id: "dropdown-quickpick-with-date-pickers",
|
|
3
|
-
label: "Date Range",
|
|
4
|
-
name: "date_range",
|
|
5
|
-
margin_bottom: "sm",
|
|
6
|
-
variant: "quickpick",
|
|
7
|
-
controls_start_id: "start-date-picker",
|
|
8
|
-
controls_end_id: "end-date-picker",
|
|
9
|
-
start_date_id: "quickpick_start_date",
|
|
10
|
-
start_date_name: "start_date",
|
|
11
|
-
end_date_id: "quickpick_end_date",
|
|
12
|
-
end_date_name: "end_date"
|
|
13
|
-
}) %>
|
|
14
|
-
|
|
15
|
-
<%= pb_rails("date_picker", props: {
|
|
16
|
-
picker_id: "start-date-picker",
|
|
17
|
-
label: "Start Date",
|
|
18
|
-
name: "start_date_picker",
|
|
19
|
-
placeholder: "Select Start Date",
|
|
20
|
-
sync_start_with: "dropdown-quickpick-with-date-pickers"
|
|
21
|
-
}) %>
|
|
22
|
-
|
|
23
|
-
<%= pb_rails("date_picker", props: {
|
|
24
|
-
picker_id: "end-date-picker",
|
|
25
|
-
label: "End Date",
|
|
26
|
-
name: "end_date_picker",
|
|
27
|
-
placeholder: "Select End Date",
|
|
28
|
-
sync_end_with: "dropdown-quickpick-with-date-pickers"
|
|
29
|
-
}) %>
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
The quickpick variant can be synced with two DatePickers for a 3-input pattern. When a quickpick option is selected from the dropdown, both DatePickers are automatically populated. When either DatePicker is manually changed, the dropdown is cleared.
|
|
2
|
-
|
|
3
|
-
#### Props for 3-Input Pattern:
|
|
4
|
-
|
|
5
|
-
- `controls_start_id` - ID of the start DatePicker to sync with
|
|
6
|
-
- `controls_end_id` - ID of the end DatePicker to sync with
|
|
7
|
-
|
|
8
|
-
#### DatePicker Props:
|
|
9
|
-
|
|
10
|
-
- `sync_start_with` - ID of the dropdown to clear when start date changes
|
|
11
|
-
- `sync_end_with` - ID of the dropdown to clear when end date changes
|
|
12
|
-
|
|
13
|
-
This pattern allows users to quickly select common date ranges or manually pick specific dates.
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import MultipleUsers from '../../pb_multiple_users/_multiple_users'
|
|
3
|
-
|
|
4
|
-
const MultipleUsersWithTooltip = (props) => {
|
|
5
|
-
return (
|
|
6
|
-
<div>
|
|
7
|
-
<MultipleUsers
|
|
8
|
-
users={[
|
|
9
|
-
{
|
|
10
|
-
name: 'Patrick Welch',
|
|
11
|
-
imageUrl: 'https://randomuser.me/api/portraits/men/9.jpg',
|
|
12
|
-
tooltip: "Patrick Welch - Online"
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
name: 'Lucille Sanchez',
|
|
16
|
-
imageUrl: 'https://randomuser.me/api/portraits/women/6.jpg',
|
|
17
|
-
tooltip: "Lucille Sanchez - Offline"
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
name: 'Beverly Reyes',
|
|
21
|
-
imageUrl: 'https://randomuser.me/api/portraits/women/74.jpg',
|
|
22
|
-
tooltip: "Beverly Reyes - Online"
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
name: 'Keith Craig',
|
|
26
|
-
imageUrl: 'https://randomuser.me/api/portraits/men/40.jpg',
|
|
27
|
-
tooltip: "Keith Craig - Away"
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
name: 'Alicia Cooper',
|
|
31
|
-
imageUrl: 'https://randomuser.me/api/portraits/women/46.jpg',
|
|
32
|
-
tooltip: "Alicia Cooper - Busy"
|
|
33
|
-
},
|
|
34
|
-
]}
|
|
35
|
-
withTooltip
|
|
36
|
-
{...props}
|
|
37
|
-
/>
|
|
38
|
-
</div>
|
|
39
|
-
)
|
|
40
|
-
}
|
|
41
|
-
``
|
|
42
|
-
export default MultipleUsersWithTooltip
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Use the `withTooltip` boolean prop to enable setting user-specific tooltip content via the `tooltip` property in the users array.
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
<%= pb_rails("select", props: {
|
|
2
|
-
label: "Favorite Food",
|
|
3
|
-
name: "favorite_food",
|
|
4
|
-
options: [
|
|
5
|
-
{ value: "pizza", value_text: "Pizza" },
|
|
6
|
-
{ value: "tacos", value_text: "Tacos" },
|
|
7
|
-
{ value: "sushi", value_text: "Sushi" }
|
|
8
|
-
],
|
|
9
|
-
input_options: {
|
|
10
|
-
'aria-label': "Select your favorite food",
|
|
11
|
-
class: "custom-select-class",
|
|
12
|
-
data: { controller: "search", action: "change->search#filter" },
|
|
13
|
-
id: "favorite-food-select"
|
|
14
|
-
}
|
|
15
|
-
}) %>
|
|
16
|
-
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
|
|
3
|
-
import Select from '../_select'
|
|
4
|
-
|
|
5
|
-
const SelectInputOptions = (props) => {
|
|
6
|
-
const options = [
|
|
7
|
-
{ value: 'pizza', text: 'Pizza' },
|
|
8
|
-
{ value: 'tacos', text: 'Tacos' },
|
|
9
|
-
{ value: 'sushi', text: 'Sushi' },
|
|
10
|
-
]
|
|
11
|
-
|
|
12
|
-
return (
|
|
13
|
-
<>
|
|
14
|
-
<Select
|
|
15
|
-
inputOptions={{
|
|
16
|
-
'aria-label': 'Select your favorite food',
|
|
17
|
-
className: 'custom-select-class',
|
|
18
|
-
id: 'favorite-food-select',
|
|
19
|
-
}}
|
|
20
|
-
label="Favorite Food"
|
|
21
|
-
name="favorite_food"
|
|
22
|
-
options={options}
|
|
23
|
-
{...props}
|
|
24
|
-
/>
|
|
25
|
-
</>
|
|
26
|
-
)
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export default SelectInputOptions
|
|
30
|
-
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Use the `input_options` / `inputOptions` prop to pass additional attributes directly to the underlying `<select>` element instead of the outer wrapper. This is useful for applying data attributes, custom IDs, or other HTML attributes that need to be on the select element itself.
|
|
@@ -1,134 +0,0 @@
|
|
|
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 TableWithFilterVariant = () => {
|
|
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
|
-
filterContent={filterContent}
|
|
82
|
-
filterProps={{
|
|
83
|
-
results: 50,
|
|
84
|
-
sortOptions: {
|
|
85
|
-
territory_id: "Territory ID",
|
|
86
|
-
first_name: "Name",
|
|
87
|
-
started_on: "Start Date",
|
|
88
|
-
department_name: "Department",
|
|
89
|
-
title_name: "Title",
|
|
90
|
-
branch_branch_name: "Branch",
|
|
91
|
-
},
|
|
92
|
-
sortValue: [{ name: 'started_on', dir: 'asc' }],
|
|
93
|
-
}}
|
|
94
|
-
title="Table Title Here"
|
|
95
|
-
variant="withFilter"
|
|
96
|
-
>
|
|
97
|
-
<Table.Head>
|
|
98
|
-
<Table.Row>
|
|
99
|
-
<Table.Header>{'Territory ID'}</Table.Header>
|
|
100
|
-
<Table.Header>{'Name'}</Table.Header>
|
|
101
|
-
<Table.Header>{'Title'}</Table.Header>
|
|
102
|
-
<Table.Header>{'Department'}</Table.Header>
|
|
103
|
-
<Table.Header>{'Branch'}</Table.Header>
|
|
104
|
-
<Table.Header textAlign="right">{'Start Date'}</Table.Header>
|
|
105
|
-
</Table.Row>
|
|
106
|
-
</Table.Head>
|
|
107
|
-
<Table.Body>
|
|
108
|
-
{users.map((user) => (
|
|
109
|
-
<Table.Row key={user.id}>
|
|
110
|
-
<Table.Cell
|
|
111
|
-
marginX={{ xs: "sm" }}
|
|
112
|
-
numberSpacing="tabular"
|
|
113
|
-
>
|
|
114
|
-
{user.id}
|
|
115
|
-
</Table.Cell>
|
|
116
|
-
<Table.Cell marginX={{ xs: "sm" }}>{user.name}</Table.Cell>
|
|
117
|
-
<Table.Cell marginX={{ xs: "sm" }}>{user.title}</Table.Cell>
|
|
118
|
-
<Table.Cell marginX={{ xs: "sm" }}>{user.department}</Table.Cell>
|
|
119
|
-
<Table.Cell marginX={{ xs: "sm" }}>{user.branch}</Table.Cell>
|
|
120
|
-
<Table.Cell marginX={{ xs: "sm" }}>
|
|
121
|
-
<DateKit
|
|
122
|
-
alignment="right"
|
|
123
|
-
showCurrentYear
|
|
124
|
-
value={user.startDate}
|
|
125
|
-
/>
|
|
126
|
-
</Table.Cell>
|
|
127
|
-
</Table.Row>
|
|
128
|
-
))}
|
|
129
|
-
</Table.Body>
|
|
130
|
-
</Table>
|
|
131
|
-
)
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
export default TableWithFilterVariant
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
Set the `variant` prop to `withFilter` to render a Table with a filter. The variant automatically handles:
|
|
2
|
-
|
|
3
|
-
- Card wrapper with standard responsive margins
|
|
4
|
-
- Optional `title` prop to render title above the card
|
|
5
|
-
- Filter component rendering with Design defaults
|
|
6
|
-
- SectionSeparator between filter and table
|
|
7
|
-
- Flex layout for proper alignment
|
|
8
|
-
|
|
9
|
-
#### Required Props
|
|
10
|
-
|
|
11
|
-
- `variant="withFilter"`: Enables the filter variant
|
|
12
|
-
- `filterContent`: A function that receives `{ closePopover }` and returns the filter's body content (inputs, buttons, etc.). Use this to pass in all input kits, etc needed inside the Filter itself.
|
|
13
|
-
- `filterProps`: An object containing Filter-specific props like `results`, `sortOptions`, `sortValue`, etc.
|
|
14
|
-
|
|
15
|
-
#### Optional Props
|
|
16
|
-
|
|
17
|
-
- `title`: Displays a title above the card
|
|
18
|
-
- All standard Table props (`size`, `collapse`, etc.) can be used, but defaults are already set to match Design guidelines
|
|
19
|
-
- All standard Filter props can be used, but defaults are already set to match Design guidelines.
|
|
20
|
-
|
|
21
|
-
#### Default Filter Props
|
|
22
|
-
|
|
23
|
-
The Table kit automatically sets these Filter defaults (which you can override via `filterProps`):
|
|
24
|
-
|
|
25
|
-
- `background={false}`
|
|
26
|
-
- `maxHeight="50vh"`
|
|
27
|
-
- `minWidth="xs"`
|
|
28
|
-
- `popoverProps={{ width: "350px" }}`
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
**IMPORTANT NOTE**:
|
|
32
|
-
The purpose of this variant is to provide an easy way to set up a Table with a Filter with Design standards applied by default.
|
|
33
|
-
|
|
34
|
-
If you are looking for more customization than this embedded variant provides, you may be better served by using the individual kits as demonstrated in our Table Filter Card Building Block [here](https://playbook.powerapp.cloud/building_blocks/table_filter_card/react).
|
|
@@ -1,101 +0,0 @@
|
|
|
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
|
-
variant: "with_filter",
|
|
61
|
-
title: "Table Title Here",
|
|
62
|
-
filter_content: filter_content,
|
|
63
|
-
filter_props: {
|
|
64
|
-
id: "user-table-filters-1",
|
|
65
|
-
results: 9,
|
|
66
|
-
sort_menu: [
|
|
67
|
-
{ item: "Start Date", link: "?q[sorts]=started_on+asc", active: true, direction: "asc" },
|
|
68
|
-
{ item: "First Name", link: "?q[sorts]=name+asc", active: false },
|
|
69
|
-
{ item: "Title", link: "?q[sorts]=title+asc", active: false },
|
|
70
|
-
{ item: "Department", link: "?q[sorts]=department+asc", active: false },
|
|
71
|
-
{ item: "Branch", link: "?q[sorts]=branch+asc", active: false },
|
|
72
|
-
{ item: "Territory ID", link: "?q[sorts]=territory_id+asc", active: false },
|
|
73
|
-
],
|
|
74
|
-
}
|
|
75
|
-
}) do %>
|
|
76
|
-
<%= pb_rails("table/table_head") do %>
|
|
77
|
-
<%= pb_rails("table/table_row") do %>
|
|
78
|
-
<%= pb_rails("table/table_header", props: { text: "Territory ID" }) %>
|
|
79
|
-
<%= pb_rails("table/table_header", props: { text: "Name" }) %>
|
|
80
|
-
<%= pb_rails("table/table_header", props: { text: "Title" }) %>
|
|
81
|
-
<%= pb_rails("table/table_header", props: { text: "Department" }) %>
|
|
82
|
-
<%= pb_rails("table/table_header", props: { text: "Branch" }) %>
|
|
83
|
-
<%= pb_rails("table/table_header", props: { text: "Start Date", text_align: "right" }) %>
|
|
84
|
-
<% end %>
|
|
85
|
-
<% end %>
|
|
86
|
-
|
|
87
|
-
<%= pb_rails("table/table_body") do %>
|
|
88
|
-
<% users.each do |user| %>
|
|
89
|
-
<%= pb_rails("table/table_row") do %>
|
|
90
|
-
<%= pb_rails("table/table_cell", props: { margin_x: { xs: "sm" }, number_spacing: "tabular" }) { user[:id].to_s } %>
|
|
91
|
-
<%= pb_rails("table/table_cell", props: { margin_x: { xs: "sm" } }) { user[:name] } %>
|
|
92
|
-
<%= pb_rails("table/table_cell", props: { margin_x: { xs: "sm" } }) { user[:title] } %>
|
|
93
|
-
<%= pb_rails("table/table_cell", props: { margin_x: { xs: "sm" } }) { user[:department] } %>
|
|
94
|
-
<%= pb_rails("table/table_cell", props: { margin_x: { xs: "sm" } }) { user[:branch] } %>
|
|
95
|
-
<%= pb_rails("table/table_cell", props: { margin_x: { xs: "sm" } }) do %>
|
|
96
|
-
<%= pb_rails("date", props: {alignment: "right", date: user[:start_date].to_s, show_current_year: true } ) %>
|
|
97
|
-
<% end %>
|
|
98
|
-
<% end %>
|
|
99
|
-
<% end %>
|
|
100
|
-
<% end %>
|
|
101
|
-
<% end %>
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
Set the `variant` prop to `with_filter` to render a Table with a filter. The variant automatically handles:
|
|
2
|
-
|
|
3
|
-
- Card wrapper with standard responsive margins
|
|
4
|
-
- Optional `title` prop to render title above the card
|
|
5
|
-
- Filter component rendering with Design defaults
|
|
6
|
-
- SectionSeparator between filter and table
|
|
7
|
-
- Flex layout for proper alignment
|
|
8
|
-
|
|
9
|
-
#### Required Props
|
|
10
|
-
|
|
11
|
-
- `variant: "with_filter"`: Enables the filter variant
|
|
12
|
-
- `filter_content`: The filter's body content (inputs, buttons, etc.) built with `pb_rails` string concatenation
|
|
13
|
-
- `filter_props`: A hash containing Filter-specific props like `results`, `sort_menu`, etc.
|
|
14
|
-
|
|
15
|
-
#### Optional Props
|
|
16
|
-
|
|
17
|
-
- `title`: Displays a title above the card
|
|
18
|
-
- All standard Table props (`size`, `collapse`, etc.) can be used, but defaults are already set to match Design guidelines
|
|
19
|
-
|
|
20
|
-
#### Default Filter Props
|
|
21
|
-
|
|
22
|
-
The Table kit automatically sets these Filter defaults (which you can override via `filter_props`):
|
|
23
|
-
|
|
24
|
-
- `background: false`
|
|
25
|
-
- `max_height: "50vh"`
|
|
26
|
-
- `min_width: "xs"`
|
|
27
|
-
- `popover_props: { width: "350px" }`
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
**IMPORTANT NOTE**:
|
|
31
|
-
The purpose of this variant is to provide an easy way to set up a Table with a Filter with Design standards applied by default.
|
|
32
|
-
|
|
33
|
-
If you are looking for more customization than this embedded variant provides, you may be better served by using the individual kits as demonstrating in our Table Filter Card Building Block as seen [here](https://playbook.powerapp.cloud/building_blocks/table_filter_card/rails).
|