playbook_ui 14.25.0.pre.alpha.PLAY2361datepickerarrownav9708 → 14.25.0.pre.alpha.testingcss9713
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/pb_kits/playbook/_playbook.scss +0 -1
- data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +6 -6
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.test.jsx +1 -1
- data/app/pb_kits/playbook/pb_avatar/_avatar.scss +60 -65
- data/app/pb_kits/playbook/pb_background/_background.scss +3 -3
- data/app/pb_kits/playbook/pb_badge/_badge.scss +30 -32
- data/app/pb_kits/playbook/pb_bread_crumbs/_bread_crumbs.scss +1 -1
- data/app/pb_kits/playbook/pb_button/_button.scss +13 -13
- data/app/pb_kits/playbook/pb_button/_button_mixins.scss +1 -1
- data/app/pb_kits/playbook/pb_button_toolbar/_button_toolbar.scss +19 -19
- data/app/pb_kits/playbook/pb_button_toolbar/_button_toolbar_dark.scss +15 -15
- data/app/pb_kits/playbook/pb_caption/_caption.scss +1 -1
- data/app/pb_kits/playbook/pb_card/_card.scss +79 -68
- data/app/pb_kits/playbook/pb_card/_card_mixin.scss +4 -4
- data/app/pb_kits/playbook/pb_checkbox/_checkbox.scss +1 -1
- data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.scss +5 -5
- data/app/pb_kits/playbook/pb_collapsible/__snapshots__/collapsible.test.js.snap +1 -1
- data/app/pb_kits/playbook/pb_collapsible/_collapsible.scss +3 -3
- data/app/pb_kits/playbook/pb_currency/_currency.scss +30 -30
- data/app/pb_kits/playbook/pb_dashboard_value/_dashboard_value.scss +1 -1
- data/app/pb_kits/playbook/pb_date/_date.scss +5 -5
- data/app/pb_kits/playbook/pb_date_picker/_date_picker.scss +1 -1
- data/app/pb_kits/playbook/pb_date_picker/_date_picker.tsx +19 -0
- data/app/pb_kits/playbook/pb_date_picker/date_picker.html.erb +1 -0
- data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.ts +3 -15
- data/app/pb_kits/playbook/pb_date_picker/sass_partials/_inline_styles.scss +2 -2
- data/app/pb_kits/playbook/pb_date_picker/sass_partials/_input_styles.scss +2 -2
- data/app/pb_kits/playbook/pb_date_picker/sass_partials/_time_selection_styles.scss +5 -5
- data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.scss +13 -13
- data/app/pb_kits/playbook/pb_date_range_stacked/_date_range_stacked.scss +1 -1
- data/app/pb_kits/playbook/pb_date_stacked/_date_stacked.scss +13 -13
- data/app/pb_kits/playbook/pb_date_time/_date_time.scss +6 -6
- data/app/pb_kits/playbook/pb_date_time_stacked/_date_time_stacked.scss +6 -6
- data/app/pb_kits/playbook/pb_date_year_stacked/_date_year_stacked.scss +7 -7
- data/app/pb_kits/playbook/pb_detail/_detail.scss +2 -2
- data/app/pb_kits/playbook/pb_dialog/_dialog.scss +61 -252
- data/app/pb_kits/playbook/pb_distribution_bar/_distribution_bar.scss +3 -3
- data/app/pb_kits/playbook/pb_dropdown/_dropdown.scss +1 -1
- data/app/pb_kits/playbook/pb_filter/_filter.scss +7 -7
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.scss +2 -2
- data/app/pb_kits/playbook/pb_flex/_flex.scss +106 -100
- data/app/pb_kits/playbook/pb_flex/_flex.tsx +38 -28
- data/app/pb_kits/playbook/pb_flex/_flex_item.scss +146 -51
- data/app/pb_kits/playbook/pb_flex/_flex_item.tsx +19 -8
- data/app/pb_kits/playbook/pb_flex/docs/_flex_gap.html.erb +12 -1
- data/app/pb_kits/playbook/pb_flex/docs/_flex_gap.jsx +26 -1
- data/app/pb_kits/playbook/pb_flex/docs/_flex_gap_rails.md +11 -0
- data/app/pb_kits/playbook/pb_flex/docs/_flex_gap_react.md +11 -0
- data/app/pb_kits/playbook/pb_flex/flex.rb +73 -39
- data/app/pb_kits/playbook/pb_flex/flex_item.rb +51 -6
- data/app/pb_kits/playbook/pb_form_group/_error_state_mixin.scss +1 -1
- data/app/pb_kits/playbook/pb_form_group/_form_group.scss +47 -47
- data/app/pb_kits/playbook/pb_form_pill/_form_pill.scss +5 -5
- data/app/pb_kits/playbook/pb_gauge/_gauge.scss +5 -5
- data/app/pb_kits/playbook/pb_hashtag/_hashtag.scss +1 -1
- data/app/pb_kits/playbook/pb_highlight/_highlight.scss +1 -1
- data/app/pb_kits/playbook/pb_icon/_icon.scss +4 -0
- data/app/pb_kits/playbook/pb_icon_circle/_icon_circle.scss +2 -2
- data/app/pb_kits/playbook/pb_icon_stat_value/_icon_stat_value.scss +15 -15
- data/app/pb_kits/playbook/pb_icon_value/_icon_value.scss +6 -6
- data/app/pb_kits/playbook/pb_image/_image.scss +1 -1
- data/app/pb_kits/playbook/pb_label_pill/_label_pill.scss +1 -1
- data/app/pb_kits/playbook/pb_label_value/_label_value.scss +2 -2
- data/app/pb_kits/playbook/pb_layout/_layout.scss +330 -305
- data/app/pb_kits/playbook/pb_layout/_layout.tsx +14 -11
- data/app/pb_kits/playbook/pb_layout/body.rb +1 -1
- data/app/pb_kits/playbook/pb_layout/footer.rb +1 -1
- data/app/pb_kits/playbook/pb_layout/header.rb +1 -1
- data/app/pb_kits/playbook/pb_layout/item.rb +1 -7
- data/app/pb_kits/playbook/pb_layout/layout.rb +16 -25
- data/app/pb_kits/playbook/pb_layout/layout.test.js +3 -3
- data/app/pb_kits/playbook/pb_layout/sidebar.rb +1 -1
- data/app/pb_kits/playbook/pb_legend/_legend.scss +1 -1
- data/app/pb_kits/playbook/pb_link/_link.scss +4 -4
- data/app/pb_kits/playbook/pb_list/_list.scss +8 -8
- data/app/pb_kits/playbook/pb_loading_inline/_loading_inline.scss +4 -4
- data/app/pb_kits/playbook/pb_message/_message.scss +4 -4
- data/app/pb_kits/playbook/pb_message/_message_mixins.scss +2 -2
- data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.scss +2 -2
- data/app/pb_kits/playbook/pb_multiple_users/_multiple_users.scss +2 -2
- data/app/pb_kits/playbook/pb_multiple_users_stacked/_multiple_users_stacked.scss +9 -9
- data/app/pb_kits/playbook/pb_nav/_bold_mixin.scss +8 -8
- data/app/pb_kits/playbook/pb_online_status/_online_status.scss +2 -2
- data/app/pb_kits/playbook/pb_overlay/_overlay.scss +2 -2
- data/app/pb_kits/playbook/pb_passphrase/_passphrase.scss +1 -1
- data/app/pb_kits/playbook/pb_person/_person.scss +1 -1
- data/app/pb_kits/playbook/pb_pill/_pill.scss +3 -3
- data/app/pb_kits/playbook/pb_progress_pills/_progress_pills.scss +7 -7
- data/app/pb_kits/playbook/pb_progress_simple/_progress_simple.scss +10 -10
- data/app/pb_kits/playbook/pb_progress_step/_progress_step.scss +36 -36
- data/app/pb_kits/playbook/pb_rich_text_editor/_rich_text_editor.scss +4 -4
- data/app/pb_kits/playbook/pb_section_separator/_section_separator.scss +12 -12
- data/app/pb_kits/playbook/pb_select/_select.scss +3 -3
- data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.scss +1 -1
- data/app/pb_kits/playbook/pb_selectable_card_icon/_selectable_card_icon.scss +7 -7
- data/app/pb_kits/playbook/pb_selectable_icon/_selectable_icon.scss +2 -2
- data/app/pb_kits/playbook/pb_selectable_list/_selectable_list.scss +5 -5
- data/app/pb_kits/playbook/pb_source/_source.scss +7 -7
- data/app/pb_kits/playbook/pb_star_rating/_star_rating.scss +1 -1
- data/app/pb_kits/playbook/pb_stat_value/_stat_value.scss +2 -2
- data/app/pb_kits/playbook/pb_table/styles/_alignment.scss +1 -1
- data/app/pb_kits/playbook/pb_table/styles/_content.scss +1 -1
- data/app/pb_kits/playbook/pb_table/styles/_desktop_collapse.scss +1 -1
- data/app/pb_kits/playbook/pb_table/styles/_headers.scss +1 -1
- data/app/pb_kits/playbook/pb_table/styles/_hover.scss +1 -1
- data/app/pb_kits/playbook/pb_table/styles/_mobile.scss +1 -1
- data/app/pb_kits/playbook/pb_table/styles/_mobile_collapse.scss +1 -1
- data/app/pb_kits/playbook/pb_table/styles/_outer_padding.scss +1 -1
- data/app/pb_kits/playbook/pb_table/styles/_reset.scss +1 -1
- data/app/pb_kits/playbook/pb_table/styles/_scroll.scss +12 -12
- data/app/pb_kits/playbook/pb_table/styles/_side_highlight.scss +2 -2
- data/app/pb_kits/playbook/pb_table/styles/_single-line.scss +1 -1
- data/app/pb_kits/playbook/pb_table/styles/_striped.scss +1 -1
- data/app/pb_kits/playbook/pb_table/styles/_structure.scss +1 -1
- data/app/pb_kits/playbook/pb_table/styles/_table-card.scss +1 -1
- data/app/pb_kits/playbook/pb_table/styles/_table-dark.scss +2 -2
- data/app/pb_kits/playbook/pb_table/styles/_table_header.scss +4 -4
- data/app/pb_kits/playbook/pb_table/styles/_tablet_collapse.scss +1 -1
- data/app/pb_kits/playbook/pb_table/styles/_vertical_border.scss +1 -1
- data/app/pb_kits/playbook/pb_text_input/_text_input.scss +1 -1
- data/app/pb_kits/playbook/pb_text_input/text_input.rb +15 -0
- data/app/pb_kits/playbook/pb_textarea/_textarea.scss +3 -3
- data/app/pb_kits/playbook/pb_time/_time.scss +5 -5
- data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.scss +13 -13
- data/app/pb_kits/playbook/pb_time_stacked/_time_stacked.scss +3 -3
- data/app/pb_kits/playbook/pb_timeline/_timeline.scss +41 -41
- data/app/pb_kits/playbook/pb_timestamp/_timestamp.scss +4 -4
- data/app/pb_kits/playbook/pb_title/_title.scss +14 -14
- data/app/pb_kits/playbook/pb_title_count/_title_count.scss +3 -3
- data/app/pb_kits/playbook/pb_title_detail/_title_detail.scss +7 -7
- data/app/pb_kits/playbook/pb_toggle/_toggle.scss +1 -1
- data/app/pb_kits/playbook/pb_tooltip/_tooltip.scss +1 -1
- data/app/pb_kits/playbook/pb_typeahead/_typeahead.scss +10 -10
- data/app/pb_kits/playbook/pb_user/_user.scss +13 -13
- data/app/pb_kits/playbook/pb_user_badge/_user_badge.scss +1 -1
- data/app/pb_kits/playbook/utilities/_gap.scss +12 -24
- data/app/pb_kits/playbook/utilities/globalPropNames.mjs +2 -0
- data/app/pb_kits/playbook/utilities/globalProps.ts +28 -4
- data/dist/chunks/{_line_graph-Ccznc59K.js → _line_graph-0Y0wuiB9.js} +1 -1
- data/dist/chunks/_typeahead-B2gV75O0.js +6 -0
- data/dist/chunks/_weekday_stacked-Dblcf2V8.js +37 -0
- data/dist/chunks/{lib-C43ywQsO.js → lib-CY5ZPzic.js} +1 -1
- data/dist/chunks/{pb_form_validation-Cqj3itLG.js → pb_form_validation-D3b0JKHH.js} +1 -1
- data/dist/chunks/vendor.js +1 -1
- data/dist/menu.yml +0 -6
- data/dist/playbook-doc.js +2 -2
- 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/classnames.rb +2 -0
- data/lib/playbook/spacing.rb +53 -1
- data/lib/playbook/version.rb +1 -1
- metadata +8 -36
- data/app/pb_kits/playbook/pb_drawer/_close_icon.tsx +0 -25
- data/app/pb_kits/playbook/pb_drawer/_drawer.scss +0 -381
- data/app/pb_kits/playbook/pb_drawer/_drawer.tsx +0 -231
- data/app/pb_kits/playbook/pb_drawer/_drawer_context.tsx +0 -3
- data/app/pb_kits/playbook/pb_drawer/context.ts +0 -11
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_behavior.html.erb +0 -8
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_behavior.jsx +0 -41
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_borders.html.erb +0 -33
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_borders.jsx +0 -78
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_breakpoints.html.erb +0 -3
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_breakpoints.jsx +0 -26
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_default.html.erb +0 -20
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_default.jsx +0 -59
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.html.erb +0 -24
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.jsx +0 -61
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.md +0 -24
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.html.erb +0 -21
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.jsx +0 -54
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.md +0 -1
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_sizes.html.erb +0 -49
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_sizes.jsx +0 -99
- data/app/pb_kits/playbook/pb_drawer/docs/example.yml +0 -20
- data/app/pb_kits/playbook/pb_drawer/docs/index.js +0 -7
- data/app/pb_kits/playbook/pb_drawer/drawer.html.erb +0 -20
- data/app/pb_kits/playbook/pb_drawer/drawer.rb +0 -56
- data/app/pb_kits/playbook/pb_drawer/drawer.test.jsx +0 -81
- data/app/pb_kits/playbook/pb_drawer/hooks/useBreakpoint.tsx +0 -60
- data/app/pb_kits/playbook/pb_drawer/hooks/useDrawerAnimation.tsx +0 -21
- data/app/pb_kits/playbook/pb_drawer/index.js +0 -257
- data/app/pb_kits/playbook/pb_flex/docs/_flex_gap.md +0 -9
- data/dist/chunks/_typeahead-QdrWudzd.js +0 -6
- data/dist/chunks/_weekday_stacked-DG1VCDDN.js +0 -37
@@ -1,54 +0,0 @@
|
|
1
|
-
import React, { useState } from "react"
|
2
|
-
|
3
|
-
import Button from '../../pb_button/_button'
|
4
|
-
import Drawer from '../../pb_drawer/_drawer'
|
5
|
-
import Flex from '../../pb_flex/_flex'
|
6
|
-
|
7
|
-
const DrawerSizes = () => {
|
8
|
-
// Individual state variables for each drawer size
|
9
|
-
const [openedNoOverlayDrawer, setOpenedNoOverlayDrawer] = useState(false)
|
10
|
-
const [openedOverlayDrawer, setOpenedOverlayDrawer] = useState(false)
|
11
|
-
|
12
|
-
// Toggle functions for each drawer
|
13
|
-
const toggleNoOverlayDrawer = () =>
|
14
|
-
setOpenedNoOverlayDrawer(!openedNoOverlayDrawer)
|
15
|
-
const toggleOverlayDrawer = () => setOpenedOverlayDrawer(!openedOverlayDrawer)
|
16
|
-
|
17
|
-
return (
|
18
|
-
<>
|
19
|
-
<Flex wrap>
|
20
|
-
<Button marginRight='md'
|
21
|
-
onClick={toggleNoOverlayDrawer}
|
22
|
-
>
|
23
|
-
No Overlay Drawer
|
24
|
-
</Button>
|
25
|
-
<Button marginRight='md'
|
26
|
-
onClick={toggleOverlayDrawer}
|
27
|
-
>
|
28
|
-
Overlay Drawer
|
29
|
-
</Button>
|
30
|
-
</Flex>
|
31
|
-
|
32
|
-
{/* Drawers for each size */}
|
33
|
-
<Drawer
|
34
|
-
onClose={toggleNoOverlayDrawer}
|
35
|
-
opened={openedNoOverlayDrawer}
|
36
|
-
overlay={false}
|
37
|
-
placement='right'
|
38
|
-
size='lg'
|
39
|
-
>
|
40
|
-
This is a Drawer with no overlay
|
41
|
-
</Drawer>
|
42
|
-
<Drawer
|
43
|
-
onClose={toggleOverlayDrawer}
|
44
|
-
opened={openedOverlayDrawer}
|
45
|
-
placement='right'
|
46
|
-
size='lg'
|
47
|
-
>
|
48
|
-
This is a Drawer with an overlay
|
49
|
-
</Drawer>
|
50
|
-
</>
|
51
|
-
)
|
52
|
-
}
|
53
|
-
|
54
|
-
export default DrawerSizes
|
@@ -1 +0,0 @@
|
|
1
|
-
Click the button to close the drawer when there is no overlay.
|
@@ -1,49 +0,0 @@
|
|
1
|
-
<%= pb_rails("flex") do %>
|
2
|
-
<%= pb_rails("button", props: { text: "XS Drawer", margin_right: "sm", data: {"open-drawer": "drawer-5"} }) %>
|
3
|
-
|
4
|
-
<%= pb_rails("drawer", props: {
|
5
|
-
id:"drawer-5",
|
6
|
-
size: "xs"
|
7
|
-
}) do %>
|
8
|
-
XS
|
9
|
-
<% end %>
|
10
|
-
|
11
|
-
<%= pb_rails("button", props: { text: "SM Drawer", margin_right: "sm", data: {"open-drawer": "drawer-6"} }) %>
|
12
|
-
|
13
|
-
<%= pb_rails("drawer", props: {
|
14
|
-
id:"drawer-6",
|
15
|
-
size: "sm",
|
16
|
-
placement: "right"
|
17
|
-
}) do %>
|
18
|
-
This is a small drawer
|
19
|
-
<% end %>
|
20
|
-
|
21
|
-
<%= pb_rails("button", props: { text: "MD Drawer", margin_right: "sm", data: {"open-drawer": "drawer-7"} }) %>
|
22
|
-
|
23
|
-
<%= pb_rails("drawer", props: {
|
24
|
-
id:"drawer-7",
|
25
|
-
size: "md"
|
26
|
-
}) do %>
|
27
|
-
This is a medium drawer
|
28
|
-
<% end %>
|
29
|
-
|
30
|
-
<%= pb_rails("button", props: { text: "LG Drawer", margin_right: "sm", data: {"open-drawer": "drawer-8"} }) %>
|
31
|
-
|
32
|
-
<%= pb_rails("drawer", props: {
|
33
|
-
id:"drawer-8",
|
34
|
-
size: "lg",
|
35
|
-
placement: "right"
|
36
|
-
}) do %>
|
37
|
-
This is a large drawer
|
38
|
-
<% end %>
|
39
|
-
|
40
|
-
<%= pb_rails("button", props: { text: "XL Drawer", margin_right: "sm", data: {"open-drawer": "drawer-9"} }) %>
|
41
|
-
|
42
|
-
<%= pb_rails("drawer", props: {
|
43
|
-
id:"drawer-9",
|
44
|
-
size: "xl"
|
45
|
-
}) do %>
|
46
|
-
This is an extra large drawer
|
47
|
-
<% end %>
|
48
|
-
<% end %>
|
49
|
-
|
@@ -1,99 +0,0 @@
|
|
1
|
-
import React, { useState } from "react";
|
2
|
-
|
3
|
-
import Button from '../../pb_button/_button'
|
4
|
-
import Drawer from '../../pb_drawer/_drawer'
|
5
|
-
import Flex from '../../pb_flex/_flex'
|
6
|
-
|
7
|
-
const DrawerSizes = () => {
|
8
|
-
// Individual state variables for each drawer size
|
9
|
-
const [openedXsDrawer, setOpenedXsDrawer] = useState(false);
|
10
|
-
const [openedSmDrawer, setOpenedSmDrawer] = useState(false);
|
11
|
-
const [openedMdDrawer, setOpenedMdDrawer] = useState(false);
|
12
|
-
const [openedLgDrawer, setOpenedLgDrawer] = useState(false);
|
13
|
-
const [openedXlDrawer, setOpenedXlDrawer] = useState(false);
|
14
|
-
|
15
|
-
// Toggle functions for each drawer
|
16
|
-
const toggleXsDrawer = () => setOpenedXsDrawer(!openedXsDrawer);
|
17
|
-
const toggleSmDrawer = () => setOpenedSmDrawer(!openedSmDrawer);
|
18
|
-
const toggleMdDrawer = () => setOpenedMdDrawer(!openedMdDrawer);
|
19
|
-
const toggleLgDrawer = () => setOpenedLgDrawer(!openedLgDrawer);
|
20
|
-
const toggleXlDrawer = () => setOpenedXlDrawer(!openedXlDrawer);
|
21
|
-
|
22
|
-
return (
|
23
|
-
<>
|
24
|
-
<Flex wrap>
|
25
|
-
<Button
|
26
|
-
marginRight="md"
|
27
|
-
onClick={toggleXsDrawer}
|
28
|
-
>
|
29
|
-
XS Drawer
|
30
|
-
</Button>
|
31
|
-
<Button marginRight="md"
|
32
|
-
onClick={toggleSmDrawer}
|
33
|
-
>
|
34
|
-
SM Drawer
|
35
|
-
</Button>
|
36
|
-
<Button marginRight="md"
|
37
|
-
onClick={toggleMdDrawer}
|
38
|
-
>
|
39
|
-
MD Drawer
|
40
|
-
</Button>
|
41
|
-
<Button marginRight="md"
|
42
|
-
onClick={toggleLgDrawer}
|
43
|
-
>
|
44
|
-
LG Drawer
|
45
|
-
</Button>
|
46
|
-
<Button marginRight="md"
|
47
|
-
onClick={toggleXlDrawer}
|
48
|
-
>
|
49
|
-
XL Drawer
|
50
|
-
</Button>
|
51
|
-
</Flex>
|
52
|
-
|
53
|
-
{/* Drawers for each size */}
|
54
|
-
<Drawer
|
55
|
-
onClose={toggleXsDrawer}
|
56
|
-
opened={openedXsDrawer}
|
57
|
-
placement="right"
|
58
|
-
size="xs"
|
59
|
-
>
|
60
|
-
XS
|
61
|
-
</Drawer>
|
62
|
-
|
63
|
-
<Drawer
|
64
|
-
onClose={toggleSmDrawer}
|
65
|
-
opened={openedSmDrawer}
|
66
|
-
size="sm"
|
67
|
-
>
|
68
|
-
This is an SM Drawer
|
69
|
-
</Drawer>
|
70
|
-
|
71
|
-
<Drawer
|
72
|
-
onClose={toggleMdDrawer}
|
73
|
-
opened={openedMdDrawer}
|
74
|
-
placement="right"
|
75
|
-
>
|
76
|
-
This is an MD Drawer
|
77
|
-
</Drawer>
|
78
|
-
|
79
|
-
<Drawer
|
80
|
-
onClose={toggleLgDrawer}
|
81
|
-
opened={openedLgDrawer}
|
82
|
-
size="lg"
|
83
|
-
>
|
84
|
-
This is an LG Drawer
|
85
|
-
</Drawer>
|
86
|
-
|
87
|
-
<Drawer
|
88
|
-
onClose={toggleXlDrawer}
|
89
|
-
opened={openedXlDrawer}
|
90
|
-
placement="right"
|
91
|
-
size="xl"
|
92
|
-
>
|
93
|
-
This is an XL Drawer
|
94
|
-
</Drawer>
|
95
|
-
</>
|
96
|
-
);
|
97
|
-
};
|
98
|
-
|
99
|
-
export default DrawerSizes;
|
@@ -1,20 +0,0 @@
|
|
1
|
-
examples:
|
2
|
-
|
3
|
-
rails:
|
4
|
-
- drawer_default: Default
|
5
|
-
- drawer_behavior: Push Behavior
|
6
|
-
- drawer_menu: Within Element
|
7
|
-
- drawer_sizes: Sizes
|
8
|
-
- drawer_overlay: Overlay
|
9
|
-
- drawer_breakpoints: Breakpoints
|
10
|
-
- drawer_borders: Borders
|
11
|
-
|
12
|
-
|
13
|
-
react:
|
14
|
-
- drawer_default: Default
|
15
|
-
- drawer_behavior: Push Behavior
|
16
|
-
- drawer_menu: Within Element
|
17
|
-
- drawer_sizes: Sizes
|
18
|
-
- drawer_overlay: Overlay
|
19
|
-
- drawer_breakpoints: Breakpoints
|
20
|
-
- drawer_borders: Borders
|
@@ -1,7 +0,0 @@
|
|
1
|
-
export { default as DrawerDefault } from './_drawer_default.jsx'
|
2
|
-
export { default as DrawerSizes } from './_drawer_sizes.jsx'
|
3
|
-
export { default as DrawerOverlay } from './_drawer_overlay.jsx'
|
4
|
-
export { default as DrawerBorders } from './_drawer_borders.jsx'
|
5
|
-
export { default as DrawerBreakpoints } from './_drawer_breakpoints.jsx'
|
6
|
-
export { default as DrawerMenu } from './_drawer_menu.jsx'
|
7
|
-
export { default as DrawerBehavior } from './_drawer_behavior.jsx'
|
@@ -1,20 +0,0 @@
|
|
1
|
-
<% if within_element %>
|
2
|
-
<%= pb_content_tag(:div, data: {breakpoint: object.breakpoint} ) do %>
|
3
|
-
<%= content %>
|
4
|
-
<% end %>
|
5
|
-
<% else %>
|
6
|
-
<div class="pb_drawer_wrapper"
|
7
|
-
id="drawer-wrapper-<%= object.id %>"
|
8
|
-
style="display:none;"
|
9
|
-
data-behavior="<%= object.behavior %>"
|
10
|
-
data-size="<%= object.size %>"
|
11
|
-
data-placement="<%= object.placement %>"
|
12
|
-
data-breakpoint="<%= object.breakpoint %>"
|
13
|
-
>
|
14
|
-
<div class="<%= overlay_classes %>" style="display:none;" id="drawer-overlay-<%= object.id %>">
|
15
|
-
<%= pb_content_tag do %>
|
16
|
-
<%= content %>
|
17
|
-
<% end %>
|
18
|
-
</div>
|
19
|
-
</div>
|
20
|
-
<% end %>
|
@@ -1,56 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Playbook
|
4
|
-
module PbDrawer
|
5
|
-
class Drawer < Playbook::KitBase
|
6
|
-
prop :size, type: Playbook::Props::Enum,
|
7
|
-
values: %w[xs sm md lg xl full],
|
8
|
-
default: "md"
|
9
|
-
prop :placement, type: Playbook::Props::Enum,
|
10
|
-
values: %w[left right bottom],
|
11
|
-
default: "left"
|
12
|
-
prop :behavior, type: Playbook::Props::Enum,
|
13
|
-
values: %w[floating push],
|
14
|
-
default: "floating"
|
15
|
-
prop :overlay, type: Playbook::Props::Boolean,
|
16
|
-
default: true
|
17
|
-
prop :within_element, type: Playbook::Props::Boolean,
|
18
|
-
default: false
|
19
|
-
prop :border, type: Playbook::Props::Enum,
|
20
|
-
values: %w[full none right left],
|
21
|
-
default: "none"
|
22
|
-
prop :breakpoint, type: Playbook::Props::Enum,
|
23
|
-
values: %w[none xs sm md lg xl],
|
24
|
-
default: "none"
|
25
|
-
|
26
|
-
def classname
|
27
|
-
generate_classname("pb_drawer pb_drawer_#{size}_#{placement} #{within_class} #{border_classes}")
|
28
|
-
end
|
29
|
-
|
30
|
-
def border_classes
|
31
|
-
case border
|
32
|
-
when "full"
|
33
|
-
"drawer_border-full"
|
34
|
-
when "right"
|
35
|
-
"drawer_border-right"
|
36
|
-
when "left"
|
37
|
-
"drawer_border-left"
|
38
|
-
else
|
39
|
-
""
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
def overlay_close
|
44
|
-
!should_close_on_overlay_click ? "overlay_close" : ""
|
45
|
-
end
|
46
|
-
|
47
|
-
def within_class
|
48
|
-
within_element ? "pb_drawer_within_element_rails" : ""
|
49
|
-
end
|
50
|
-
|
51
|
-
def overlay_classes
|
52
|
-
"pb_drawer_#{overlay ? '' : 'no_'}overlay drawer_content_#{placement} pb_drawer_overlay_after_open #{overlay ? '' : 'no-background'}"
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
@@ -1,81 +0,0 @@
|
|
1
|
-
import React, { useState } from 'react';
|
2
|
-
import { render, fireEvent, screen } from '../utilities/test-utils';
|
3
|
-
import { Drawer, Button } from 'playbook-ui';
|
4
|
-
import { waitFor } from '@testing-library/react';
|
5
|
-
|
6
|
-
const size = 'sm';
|
7
|
-
|
8
|
-
function DrawerTest({ props }) {
|
9
|
-
const [isOpen, setIsOpen] = useState(false);
|
10
|
-
const close = () => setIsOpen(false);
|
11
|
-
const open = () => setIsOpen(true);
|
12
|
-
|
13
|
-
return (
|
14
|
-
<>
|
15
|
-
<Button onClick={open}>{'Open Drawer'}</Button>
|
16
|
-
<Drawer
|
17
|
-
className="wrapper"
|
18
|
-
id="drawer-id"
|
19
|
-
onClose={close}
|
20
|
-
opened={isOpen}
|
21
|
-
placement="left"
|
22
|
-
portalClassName="portal"
|
23
|
-
size={size}
|
24
|
-
{...props}
|
25
|
-
>
|
26
|
-
{props && props.children}
|
27
|
-
</Drawer>
|
28
|
-
</>
|
29
|
-
);
|
30
|
-
}
|
31
|
-
|
32
|
-
test('renders with the right border class when border prop is right', async () => {
|
33
|
-
render(<DrawerTest props={{ border: 'right' }} />);
|
34
|
-
|
35
|
-
fireEvent.click(screen.getByText('Open Drawer'));
|
36
|
-
|
37
|
-
await waitFor(() => expect(document.getElementById('drawer-id')).toBeInTheDocument());
|
38
|
-
|
39
|
-
const container = document.getElementById('drawer-id');
|
40
|
-
const drawer = container.querySelector('#drawer-id .pb_drawer');
|
41
|
-
|
42
|
-
expect(drawer).toHaveClass('drawer_border-right');
|
43
|
-
});
|
44
|
-
|
45
|
-
test('renders with the full border class when border prop is full', async () => {
|
46
|
-
render(<DrawerTest props={{ border: 'full' }} />);
|
47
|
-
|
48
|
-
fireEvent.click(screen.getByText('Open Drawer'));
|
49
|
-
|
50
|
-
await waitFor(() => expect(document.getElementById('drawer-id')).toBeInTheDocument());
|
51
|
-
|
52
|
-
const container = document.getElementById('drawer-id');
|
53
|
-
const drawer = container.querySelector('#drawer-id .pb_drawer');
|
54
|
-
expect(drawer).toHaveClass('drawer_border-full');
|
55
|
-
});
|
56
|
-
|
57
|
-
test('does not have a border class when border prop is none', async () => {
|
58
|
-
render(<DrawerTest props={{ border: 'none' }} />);
|
59
|
-
|
60
|
-
fireEvent.click(screen.getByText('Open Drawer'));
|
61
|
-
|
62
|
-
await waitFor(() => expect(document.getElementById('drawer-id')).toBeInTheDocument());
|
63
|
-
|
64
|
-
const container = document.getElementById('drawer-id');
|
65
|
-
const drawer = container.querySelector('#drawer-id .pb_drawer');
|
66
|
-
expect(drawer).not.toHaveClass('drawer_border-right');
|
67
|
-
expect(drawer).not.toHaveClass('drawer_border-left');
|
68
|
-
expect(drawer).not.toHaveClass('drawer_border-full');
|
69
|
-
});
|
70
|
-
|
71
|
-
test('renders the correct size class for a large drawer', async () => {
|
72
|
-
render(<DrawerTest props={{ size: 'lg' }} />);
|
73
|
-
|
74
|
-
fireEvent.click(screen.getByText('Open Drawer'));
|
75
|
-
|
76
|
-
await waitFor(() => expect(document.getElementById('drawer-id')).toBeInTheDocument());
|
77
|
-
|
78
|
-
const container = document.getElementById('drawer-id');
|
79
|
-
const drawer = container.querySelector('#drawer-id .pb_drawer');
|
80
|
-
expect(drawer).toHaveClass('pb_drawer pb_drawer_lg_left');
|
81
|
-
});
|
@@ -1,60 +0,0 @@
|
|
1
|
-
import { useState, useEffect } from 'react'
|
2
|
-
|
3
|
-
export const breakpointValues = {
|
4
|
-
none: 0,
|
5
|
-
xs: 575,
|
6
|
-
sm: 768,
|
7
|
-
md: 992,
|
8
|
-
lg: 1200,
|
9
|
-
xl: 1400,
|
10
|
-
} as const
|
11
|
-
|
12
|
-
type BreakpointSize = keyof typeof breakpointValues
|
13
|
-
|
14
|
-
interface UseBreakpointProps {
|
15
|
-
breakpoint?: BreakpointSize
|
16
|
-
triggerId?: string
|
17
|
-
}
|
18
|
-
|
19
|
-
export const useBreakpoint = ({
|
20
|
-
breakpoint = 'none',
|
21
|
-
triggerId
|
22
|
-
}: UseBreakpointProps) => {
|
23
|
-
const [isOpenBreakpointOpen, setIsOpenBreakpointOpen] = useState(false)
|
24
|
-
const [isUserClosed, setIsUserClosed] = useState(false)
|
25
|
-
|
26
|
-
useEffect(() => {
|
27
|
-
if (breakpoint === 'none') return
|
28
|
-
|
29
|
-
const handleResize = () => {
|
30
|
-
const width = window.innerWidth
|
31
|
-
|
32
|
-
const openBreakpointWidth = breakpointValues[breakpoint]
|
33
|
-
if (width >= openBreakpointWidth) {
|
34
|
-
setIsOpenBreakpointOpen(true)
|
35
|
-
} else {
|
36
|
-
setIsOpenBreakpointOpen(false)
|
37
|
-
setIsUserClosed(false)
|
38
|
-
}
|
39
|
-
|
40
|
-
// Handle menu button visibility
|
41
|
-
if (triggerId) {
|
42
|
-
const menuButton = document.getElementById(triggerId)
|
43
|
-
if (menuButton) {
|
44
|
-
menuButton.style.display = isOpenBreakpointOpen ? 'none' : ''
|
45
|
-
}
|
46
|
-
}
|
47
|
-
}
|
48
|
-
|
49
|
-
window.addEventListener('resize', handleResize)
|
50
|
-
handleResize()
|
51
|
-
|
52
|
-
return () => window.removeEventListener('resize', handleResize)
|
53
|
-
}, [breakpoint, triggerId, isOpenBreakpointOpen])
|
54
|
-
|
55
|
-
return {
|
56
|
-
isOpenBreakpointOpen,
|
57
|
-
isUserClosed,
|
58
|
-
setIsUserClosed
|
59
|
-
}
|
60
|
-
}
|
@@ -1,21 +0,0 @@
|
|
1
|
-
import { useState, useEffect } from 'react'
|
2
|
-
|
3
|
-
export const useDrawerAnimation = (isOpen: boolean) => {
|
4
|
-
const [animationState, setAnimationState] = useState('')
|
5
|
-
|
6
|
-
useEffect(() => {
|
7
|
-
if (isOpen) {
|
8
|
-
setAnimationState('afterOpen')
|
9
|
-
} else if (!isOpen && animationState === 'afterOpen') {
|
10
|
-
setAnimationState('beforeClose')
|
11
|
-
setTimeout(() => {
|
12
|
-
setAnimationState('')
|
13
|
-
}, 200)
|
14
|
-
}
|
15
|
-
}, [isOpen])
|
16
|
-
|
17
|
-
return {
|
18
|
-
animationState,
|
19
|
-
isVisible: isOpen || animationState === 'beforeClose'
|
20
|
-
}
|
21
|
-
}
|