playbook_ui 14.25.0.pre.alpha.testingcss10239 → 14.25.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/_playbook.scss +1 -0
- data/app/pb_kits/playbook/pb_advanced_table/Components/RegularTableView.tsx +2 -8
- data/app/pb_kits/playbook/pb_advanced_table/Components/TableHeaderCell.tsx +2 -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 -57
- data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +1 -3
- data/app/pb_kits/playbook/pb_avatar/_avatar.scss +65 -60
- data/app/pb_kits/playbook/pb_avatar/avatar.test.js +1 -1
- data/app/pb_kits/playbook/pb_background/_background.scss +3 -3
- data/app/pb_kits/playbook/pb_badge/_badge.scss +29 -135
- data/app/pb_kits/playbook/pb_body/_body.scss +35 -108
- data/app/pb_kits/playbook/pb_body/_body_mixins.scss +1 -1
- data/app/pb_kits/playbook/pb_bread_crumbs/_bread_crumbs.scss +30 -17
- data/app/pb_kits/playbook/pb_button/_button.scss +31 -39
- data/app/pb_kits/playbook/pb_button/_button.tsx +12 -12
- data/app/pb_kits/playbook/pb_button/_button_mixins.scss +1 -1
- data/app/pb_kits/playbook/pb_button/button.rb +18 -11
- data/app/pb_kits/playbook/pb_button/button.test.js +3 -3
- data/app/pb_kits/playbook/pb_button_toolbar/_button_toolbar.scss +73 -82
- data/app/pb_kits/playbook/pb_button_toolbar/_button_toolbar_dark.scss +33 -32
- data/app/pb_kits/playbook/pb_button_toolbar/_button_toolbar_mixins.scss +1 -1
- data/app/pb_kits/playbook/pb_button_toolbar/button_toolbar.test.js +2 -2
- data/app/pb_kits/playbook/pb_caption/_caption.scss +17 -100
- data/app/pb_kits/playbook/pb_caption/_caption_mixin.scss +8 -1
- data/app/pb_kits/playbook/pb_card/_card.scss +79 -116
- data/app/pb_kits/playbook/pb_card/_card.tsx +11 -26
- data/app/pb_kits/playbook/pb_card/_card_mixin.scss +1 -1
- data/app/pb_kits/playbook/pb_card/card.rb +7 -8
- data/app/pb_kits/playbook/pb_card/card_header.rb +2 -6
- data/app/pb_kits/playbook/pb_card/docs/_card_header.html.erb +1 -1
- data/app/pb_kits/playbook/pb_checkbox/_checkbox.scss +2 -11
- data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.scss +7 -7
- data/app/pb_kits/playbook/pb_circle_icon_button/circle_icon_button.html.erb +1 -10
- data/app/pb_kits/playbook/pb_circle_icon_button/circle_icon_button.rb +0 -2
- data/app/pb_kits/playbook/pb_circle_icon_button/circle_icon_button.test.js +1 -1
- data/app/pb_kits/playbook/pb_circle_icon_button/docs/example.yml +0 -1
- data/app/pb_kits/playbook/pb_collapsible/__snapshots__/collapsible.test.js.snap +1 -1
- data/app/pb_kits/playbook/pb_collapsible/_collapsible.scss +4 -4
- data/app/pb_kits/playbook/pb_copy_button/copy_button.test.jsx +1 -1
- data/app/pb_kits/playbook/pb_currency/_currency.scss +39 -124
- data/app/pb_kits/playbook/pb_dashboard_value/_dashboard_value.scss +6 -16
- data/app/pb_kits/playbook/pb_date/_date.scss +18 -16
- data/app/pb_kits/playbook/pb_date_picker/_date_picker.scss +1 -1
- data/app/pb_kits/playbook/pb_date_picker/_date_picker.tsx +0 -19
- data/app/pb_kits/playbook/pb_date_picker/date_picker.html.erb +0 -1
- data/app/pb_kits/playbook/pb_date_picker/sass_partials/_inline_styles.scss +12 -12
- 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 -6
- data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.scss +23 -29
- data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.tsx +1 -1
- data/app/pb_kits/playbook/pb_date_range_stacked/_date_range_stacked.scss +1 -1
- data/app/pb_kits/playbook/pb_date_range_stacked/date_range_stacked.test.js +2 -2
- data/app/pb_kits/playbook/pb_date_stacked/_date_stacked.scss +26 -66
- data/app/pb_kits/playbook/pb_date_stacked/date_stacked.rb +1 -1
- data/app/pb_kits/playbook/pb_date_stacked/date_stacked.test.js +2 -2
- data/app/pb_kits/playbook/pb_date_time/_date_time.scss +15 -8
- data/app/pb_kits/playbook/pb_date_time_stacked/_date_time_stacked.scss +7 -6
- data/app/pb_kits/playbook/pb_date_year_stacked/_date_year_stacked.scss +14 -17
- data/app/pb_kits/playbook/pb_date_year_stacked/date_year_stacked.test.js +1 -1
- data/app/pb_kits/playbook/pb_detail/_detail.scss +21 -86
- data/app/pb_kits/playbook/pb_dialog/_dialog.scss +123 -330
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_loading.html.erb +2 -16
- data/app/pb_kits/playbook/pb_distribution_bar/_distribution_bar.scss +7 -10
- data/app/pb_kits/playbook/pb_draggable/draggable.test.jsx +1 -1
- data/app/pb_kits/playbook/pb_drawer/_close_icon.tsx +25 -0
- data/app/pb_kits/playbook/pb_drawer/_drawer.scss +381 -0
- data/app/pb_kits/playbook/pb_drawer/_drawer.tsx +231 -0
- data/app/pb_kits/playbook/pb_drawer/_drawer_context.tsx +3 -0
- data/app/pb_kits/playbook/pb_drawer/context.ts +11 -0
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_behavior.html.erb +8 -0
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_behavior.jsx +41 -0
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_borders.html.erb +33 -0
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_borders.jsx +78 -0
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_breakpoints.html.erb +3 -0
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_breakpoints.jsx +26 -0
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_default.html.erb +20 -0
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_default.jsx +59 -0
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.html.erb +24 -0
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.jsx +61 -0
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.md +24 -0
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.html.erb +21 -0
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.jsx +54 -0
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.md +1 -0
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_sizes.html.erb +49 -0
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_sizes.jsx +99 -0
- data/app/pb_kits/playbook/pb_drawer/docs/example.yml +20 -0
- data/app/pb_kits/playbook/pb_drawer/docs/index.js +7 -0
- data/app/pb_kits/playbook/pb_drawer/drawer.html.erb +20 -0
- data/app/pb_kits/playbook/pb_drawer/drawer.rb +56 -0
- data/app/pb_kits/playbook/pb_drawer/drawer.test.jsx +81 -0
- data/app/pb_kits/playbook/pb_drawer/hooks/useBreakpoint.tsx +60 -0
- data/app/pb_kits/playbook/pb_drawer/hooks/useDrawerAnimation.tsx +21 -0
- data/app/pb_kits/playbook/pb_drawer/index.js +257 -0
- data/app/pb_kits/playbook/pb_dropdown/_dropdown.scss +1 -1
- data/app/pb_kits/playbook/pb_dropdown/dropdown.test.jsx +6 -6
- data/app/pb_kits/playbook/pb_dropdown/index.js +3 -6
- data/app/pb_kits/playbook/pb_empty_state/_empty_state.scss +4 -4
- data/app/pb_kits/playbook/pb_file_upload/_file_upload.scss +9 -20
- data/app/pb_kits/playbook/pb_file_upload/file_upload.html.erb +1 -1
- data/app/pb_kits/playbook/pb_filter/_filter.scss +8 -8
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.scss +29 -65
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.tsx +4 -3
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_props_swift.md +2 -3
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/fixed_confirmation_toast.html.erb +1 -2
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/fixed_confirmation_toast.rb +1 -1
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/fixed_confirmation_toast.test.js +1 -7
- data/app/pb_kits/playbook/pb_flex/_flex.scss +100 -106
- data/app/pb_kits/playbook/pb_flex/_flex.tsx +28 -38
- data/app/pb_kits/playbook/pb_flex/_flex_item.scss +51 -146
- data/app/pb_kits/playbook/pb_flex/_flex_item.tsx +8 -19
- data/app/pb_kits/playbook/pb_flex/docs/_flex_gap.html.erb +1 -12
- data/app/pb_kits/playbook/pb_flex/docs/_flex_gap.jsx +1 -26
- data/app/pb_kits/playbook/pb_flex/docs/_flex_gap.md +9 -0
- data/app/pb_kits/playbook/pb_flex/flex.rb +28 -22
- data/app/pb_kits/playbook/pb_flex/flex_item.rb +6 -6
- data/app/pb_kits/playbook/pb_form_group/_form_group.scss +1 -1
- data/app/pb_kits/playbook/pb_form_pill/_form_pill.scss +344 -381
- data/app/pb_kits/playbook/pb_form_pill/_form_pill.test.jsx +4 -4
- data/app/pb_kits/playbook/pb_form_pill/_form_pill.tsx +7 -8
- data/app/pb_kits/playbook/pb_form_pill/form_pill.rb +2 -9
- 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_home_address_street/home_adress_street.test.js +2 -2
- data/app/pb_kits/playbook/pb_icon/_icon.scss +0 -4
- data/app/pb_kits/playbook/pb_icon_button/_icon_button.scss +4 -4
- data/app/pb_kits/playbook/pb_icon_circle/_icon_circle.scss +39 -40
- data/app/pb_kits/playbook/pb_icon_circle/icon_circle.rb +1 -1
- data/app/pb_kits/playbook/pb_icon_stat_value/icon_stat_value.test.js +1 -1
- data/app/pb_kits/playbook/pb_icon_value/_icon_value.scss +15 -16
- data/app/pb_kits/playbook/pb_image/_image.scss +36 -41
- 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 -3
- data/app/pb_kits/playbook/pb_label_value/label_value.test.js +2 -2
- data/app/pb_kits/playbook/pb_layout/_layout.scss +305 -336
- data/app/pb_kits/playbook/pb_layout/_layout.tsx +11 -14
- data/app/pb_kits/playbook/pb_layout/item.rb +7 -1
- data/app/pb_kits/playbook/pb_layout/layout.rb +25 -16
- data/app/pb_kits/playbook/pb_layout/layout.test.js +3 -3
- data/app/pb_kits/playbook/pb_legend/_legend.scss +16 -66
- data/app/pb_kits/playbook/pb_legend/legend.test.js +1 -1
- data/app/pb_kits/playbook/pb_lightbox/lightbox.scss +4 -4
- data/app/pb_kits/playbook/pb_lightbox/lightbox.test.jsx +1 -1
- data/app/pb_kits/playbook/pb_link/_link.scss +19 -113
- data/app/pb_kits/playbook/pb_list/_list.scss +1 -1
- data/app/pb_kits/playbook/pb_loading_inline/_loading_inline.scss +11 -13
- data/app/pb_kits/playbook/pb_map/_map.scss +1 -1
- data/app/pb_kits/playbook/pb_map/docs/_map_default.jsx +1 -1
- data/app/pb_kits/playbook/pb_map/docs/_map_with_custom_button.jsx +1 -1
- data/app/pb_kits/playbook/pb_map/docs/_map_with_plugin.jsx +1 -1
- data/app/pb_kits/playbook/pb_message/_message.scss +16 -21
- data/app/pb_kits/playbook/pb_message/_message.tsx +0 -1
- data/app/pb_kits/playbook/pb_message/_message_mixins.scss +12 -5
- data/app/pb_kits/playbook/pb_message/message.html.erb +1 -1
- data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.scss +3 -6
- data/app/pb_kits/playbook/pb_multiple_users/_multiple_users.scss +15 -16
- data/app/pb_kits/playbook/pb_multiple_users_stacked/_multiple_users_stacked.scss +1 -1
- data/app/pb_kits/playbook/pb_nav/_bold_mixin.scss +1 -1
- data/app/pb_kits/playbook/pb_nav/_collapsible_nav.scss +1 -1
- data/app/pb_kits/playbook/pb_online_status/_online_status.scss +15 -19
- data/app/pb_kits/playbook/pb_online_status/_online_status.tsx +1 -1
- data/app/pb_kits/playbook/pb_online_status/online_status.rb +4 -5
- data/app/pb_kits/playbook/pb_online_status/online_status.test.js +2 -2
- data/app/pb_kits/playbook/pb_overlay/_overlay.scss +1 -1
- data/app/pb_kits/playbook/pb_overlay/overlay.rb +1 -1
- data/app/pb_kits/playbook/pb_pagination/_pagination.tsx +1 -8
- data/app/pb_kits/playbook/pb_pagination/docs/example.yml +0 -1
- data/app/pb_kits/playbook/pb_pagination/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_passphrase/_passphrase.scss +2 -5
- data/app/pb_kits/playbook/pb_person/_person.scss +1 -1
- data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.scss +1 -1
- data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx +1 -11
- data/app/pb_kits/playbook/pb_pill/_pill.scss +21 -23
- data/app/pb_kits/playbook/pb_progress_pills/_progress_pills.scss +13 -15
- data/app/pb_kits/playbook/pb_progress_simple/_progress_simple.scss +33 -108
- data/app/pb_kits/playbook/pb_progress_step/_progress_step.scss +1 -1
- data/app/pb_kits/playbook/pb_radio/_radio.scss +52 -71
- data/app/pb_kits/playbook/pb_radio/_radio.tsx +1 -1
- data/app/pb_kits/playbook/pb_radio/docs/_radio_react_hook.jsx +3 -0
- 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 +70 -81
- data/app/pb_kits/playbook/pb_section_separator/_section_separator.tsx +1 -9
- data/app/pb_kits/playbook/pb_section_separator/_section_separator_mixin.scss +1 -1
- data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_color.jsx +1 -3
- data/app/pb_kits/playbook/pb_section_separator/section_separator.rb +1 -7
- data/app/pb_kits/playbook/pb_select/_select.scss +4 -4
- data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.scss +2 -6
- data/app/pb_kits/playbook/pb_selectable_card_icon/_selectable_card_icon.scss +8 -17
- data/app/pb_kits/playbook/pb_selectable_icon/_selectable_icon.scss +29 -39
- data/app/pb_kits/playbook/pb_selectable_list/_item.tsx +0 -2
- data/app/pb_kits/playbook/pb_selectable_list/_selectable_list.scss +11 -8
- data/app/pb_kits/playbook/pb_selectable_list/selectable_list.test.js +3 -2
- data/app/pb_kits/playbook/pb_selectable_list/selectable_list_item.html.erb +2 -2
- data/app/pb_kits/playbook/pb_source/_source.scss +8 -8
- data/app/pb_kits/playbook/pb_star_rating/_star_rating.scss +1 -1
- data/app/pb_kits/playbook/pb_star_rating/star_rating.test.js +1 -1
- data/app/pb_kits/playbook/pb_stat_value/_stat_value.scss +2 -2
- data/app/pb_kits/playbook/pb_text_input/_text_input.scss +5 -5
- data/app/pb_kits/playbook/pb_text_input/text_input.rb +0 -15
- data/app/pb_kits/playbook/pb_textarea/_textarea.scss +6 -6
- data/app/pb_kits/playbook/pb_time/_time.scss +17 -44
- data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.scss +23 -44
- data/app/pb_kits/playbook/pb_time_range_inline/time_range_inline.rb +1 -1
- data/app/pb_kits/playbook/pb_time_stacked/_time_stacked.scss +8 -5
- data/app/pb_kits/playbook/pb_timestamp/_timestamp.scss +10 -16
- data/app/pb_kits/playbook/pb_timestamp/_timestamp.tsx +4 -1
- data/app/pb_kits/playbook/pb_timestamp/timestamp.rb +1 -1
- data/app/pb_kits/playbook/pb_timestamp/timestamp.test.js +2 -2
- data/app/pb_kits/playbook/pb_title/_title.scss +39 -44
- data/app/pb_kits/playbook/pb_title/_title.tsx +8 -17
- data/app/pb_kits/playbook/pb_title/_title_mixin.scss +2 -2
- data/app/pb_kits/playbook/pb_title/title.rb +10 -20
- data/app/pb_kits/playbook/pb_title/title.test.js +4 -4
- data/app/pb_kits/playbook/pb_title_count/_title_count.scss +8 -19
- data/app/pb_kits/playbook/pb_title_detail/_title_detail.scss +11 -10
- data/app/pb_kits/playbook/pb_toggle/_toggle.scss +1 -4
- data/app/pb_kits/playbook/pb_tooltip/_tooltip.scss +4 -3
- data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +1 -1
- data/app/pb_kits/playbook/pb_typeahead/_typeahead.test.jsx +3 -3
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.html.erb +1 -1
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.jsx +1 -1
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_color.html.erb +22 -1
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_color.jsx +1 -1
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_without_pills.html.erb +2 -2
- data/app/pb_kits/playbook/pb_user/_user.scss +33 -83
- data/app/pb_kits/playbook/pb_user/docs/_user_props_table.md +7 -14
- data/app/pb_kits/playbook/pb_user/user.test.js +1 -1
- data/app/pb_kits/playbook/pb_user_badge/_user_badge.scss +8 -23
- data/app/pb_kits/playbook/pb_weekday_stacked/_weekday_stacked.scss +10 -10
- data/app/pb_kits/playbook/pb_weekday_stacked/weekday_stacked.test.jsx +3 -3
- data/app/pb_kits/playbook/utilities/_gap.scss +24 -12
- data/app/pb_kits/playbook/utilities/globalPropNames.mjs +0 -2
- data/app/pb_kits/playbook/utilities/globalProps.ts +4 -28
- data/dist/chunks/{_line_graph-CApw7aQD.js → _line_graph-D7DgMqnT.js} +1 -1
- data/dist/chunks/_typeahead-BzYZCpJO.js +6 -0
- data/dist/chunks/_weekday_stacked-CJIFKKe7.js +37 -0
- data/dist/chunks/vendor.js +1 -1
- data/dist/menu.yml +7 -1
- 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 +0 -2
- data/lib/playbook/spacing.rb +1 -53
- data/lib/playbook/version.rb +2 -2
- metadata +35 -20
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_padding_control.jsx +0 -60
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_padding_control.md +0 -3
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_padding_control_per_row.jsx +0 -57
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_padding_control_per_row.md +0 -1
- data/app/pb_kits/playbook/pb_circle_icon_button/docs/_circle_icon_button_input_options.html.erb +0 -24
- data/app/pb_kits/playbook/pb_circle_icon_button/docs/_circle_icon_button_input_options.md +0 -3
- data/app/pb_kits/playbook/pb_date/date.test.js +0 -506
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_no_icon.html.erb +0 -22
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_no_icon.jsx +0 -43
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_no_icon.md +0 -1
- data/app/pb_kits/playbook/pb_flex/docs/_flex_gap_rails.md +0 -11
- data/app/pb_kits/playbook/pb_flex/docs/_flex_gap_react.md +0 -11
- data/app/pb_kits/playbook/pb_pagination/_pagination.test.jsx +0 -212
- data/app/pb_kits/playbook/pb_pagination/docs/_pagination_external_control.jsx +0 -112
- data/app/pb_kits/playbook/pb_pagination/docs/_pagination_external_control_react.md +0 -3
- data/dist/chunks/_typeahead-J1_avqdO.js +0 -6
- data/dist/chunks/_weekday_stacked-C3QAjEFv.js +0 -37
@@ -1,212 +0,0 @@
|
|
1
|
-
import React from 'react'
|
2
|
-
import { ensureAccessible, renderKit, render, fireEvent, screen } from '../utilities/test-utils'
|
3
|
-
import Pagination from './_pagination'
|
4
|
-
|
5
|
-
const defaultProps = {
|
6
|
-
data: { testid: 'pagination-test' },
|
7
|
-
total: 10,
|
8
|
-
current: 1,
|
9
|
-
range: 5,
|
10
|
-
}
|
11
|
-
|
12
|
-
describe('Pagination Component', () => {
|
13
|
-
test('returns namespaced class name', () => {
|
14
|
-
const kit = renderKit(Pagination, defaultProps)
|
15
|
-
expect(kit).toBeInTheDocument()
|
16
|
-
expect(kit).toHaveClass('pb_paginate')
|
17
|
-
})
|
18
|
-
|
19
|
-
it("should be accessible", async () => {
|
20
|
-
ensureAccessible(Pagination, defaultProps)
|
21
|
-
})
|
22
|
-
|
23
|
-
test('renders with default props', () => {
|
24
|
-
render(<Pagination {...defaultProps} />)
|
25
|
-
|
26
|
-
const pagination = screen.getByTestId('pagination-test')
|
27
|
-
expect(pagination).toBeInTheDocument()
|
28
|
-
expect(pagination).toHaveClass('pb_paginate')
|
29
|
-
})
|
30
|
-
|
31
|
-
test('renders pagination buttons correctly', () => {
|
32
|
-
render(<Pagination {...defaultProps} />)
|
33
|
-
|
34
|
-
expect(screen.getByText('1')).toBeInTheDocument()
|
35
|
-
expect(screen.getByText('2')).toBeInTheDocument()
|
36
|
-
expect(screen.getByText('3')).toBeInTheDocument()
|
37
|
-
expect(screen.getByText('4')).toBeInTheDocument()
|
38
|
-
expect(screen.getByText('5')).toBeInTheDocument()
|
39
|
-
|
40
|
-
// Check for navigation arrows by looking for the li elements with specific classes
|
41
|
-
const leftArrow = document.querySelector('.pagination-left')
|
42
|
-
const rightArrow = document.querySelector('.pagination-right')
|
43
|
-
expect(leftArrow).toBeInTheDocument()
|
44
|
-
expect(rightArrow).toBeInTheDocument()
|
45
|
-
})
|
46
|
-
|
47
|
-
test('highlights current page as active', () => {
|
48
|
-
render(<Pagination {...defaultProps}
|
49
|
-
current={3}
|
50
|
-
/>)
|
51
|
-
|
52
|
-
const activePage = screen.getByText('3')
|
53
|
-
expect(activePage).toHaveClass('active')
|
54
|
-
})
|
55
|
-
|
56
|
-
test('calls onChange when page is clicked', () => {
|
57
|
-
const mockOnChange = jest.fn()
|
58
|
-
render(<Pagination {...defaultProps}
|
59
|
-
onChange={mockOnChange}
|
60
|
-
/>)
|
61
|
-
|
62
|
-
const pageButton = screen.getByText('3')
|
63
|
-
fireEvent.click(pageButton)
|
64
|
-
|
65
|
-
expect(mockOnChange).toHaveBeenCalledWith(3)
|
66
|
-
})
|
67
|
-
|
68
|
-
test('disables left arrow on first page', () => {
|
69
|
-
render(<Pagination {...defaultProps}
|
70
|
-
current={1}
|
71
|
-
/>)
|
72
|
-
|
73
|
-
const leftArrow = document.querySelector('.pagination-left')
|
74
|
-
expect(leftArrow).toHaveClass('disabled')
|
75
|
-
})
|
76
|
-
|
77
|
-
test('disables right arrow on last page', () => {
|
78
|
-
render(<Pagination {...defaultProps}
|
79
|
-
current={10}
|
80
|
-
/>)
|
81
|
-
|
82
|
-
const rightArrow = document.querySelector('.pagination-right')
|
83
|
-
expect(rightArrow).toHaveClass('disabled')
|
84
|
-
})
|
85
|
-
|
86
|
-
test('does not render when total is 1 or less', () => {
|
87
|
-
const { container } = render(<Pagination {...defaultProps}
|
88
|
-
total={1}
|
89
|
-
/>)
|
90
|
-
|
91
|
-
expect(container.firstChild).toBeNull()
|
92
|
-
})
|
93
|
-
|
94
|
-
test('renders with custom className', () => {
|
95
|
-
render(<Pagination {...defaultProps}
|
96
|
-
className="custom-class"
|
97
|
-
/>)
|
98
|
-
|
99
|
-
const pagination = screen.getByTestId('pagination-test')
|
100
|
-
expect(pagination).toHaveClass('custom-class')
|
101
|
-
})
|
102
|
-
|
103
|
-
test('renders with custom id', () => {
|
104
|
-
render(<Pagination {...defaultProps}
|
105
|
-
id="custom-id"
|
106
|
-
/>)
|
107
|
-
|
108
|
-
const pagination = screen.getByTestId('pagination-test')
|
109
|
-
expect(pagination).toHaveAttribute('id', 'custom-id')
|
110
|
-
})
|
111
|
-
|
112
|
-
test('renders with custom range', () => {
|
113
|
-
render(<Pagination {...defaultProps}
|
114
|
-
range={3}
|
115
|
-
/>)
|
116
|
-
|
117
|
-
expect(screen.getByText('1')).toBeInTheDocument()
|
118
|
-
expect(screen.getByText('2')).toBeInTheDocument()
|
119
|
-
expect(screen.getByText('3')).toBeInTheDocument()
|
120
|
-
expect(screen.getByText('9')).toBeInTheDocument()
|
121
|
-
expect(screen.getByText('10')).toBeInTheDocument()
|
122
|
-
})
|
123
|
-
|
124
|
-
test('handles large number of pages correctly', () => {
|
125
|
-
render(<Pagination {...defaultProps}
|
126
|
-
current={50}
|
127
|
-
range={5}
|
128
|
-
total={100}
|
129
|
-
/>)
|
130
|
-
|
131
|
-
const pagination = screen.getByTestId('pagination-test')
|
132
|
-
expect(pagination).toBeInTheDocument()
|
133
|
-
expect(pagination).toHaveClass('pb_paginate')
|
134
|
-
|
135
|
-
|
136
|
-
expect(screen.getByText('48')).toBeInTheDocument()
|
137
|
-
expect(screen.getByText('49')).toBeInTheDocument()
|
138
|
-
expect(screen.getByText('50')).toBeInTheDocument()
|
139
|
-
expect(screen.getByText('51')).toBeInTheDocument()
|
140
|
-
expect(screen.getByText('52')).toBeInTheDocument()
|
141
|
-
})
|
142
|
-
|
143
|
-
test('syncs with external current prop changes', () => {
|
144
|
-
const { rerender } = render(<Pagination {...defaultProps}
|
145
|
-
current={1}
|
146
|
-
/>)
|
147
|
-
|
148
|
-
expect(screen.getByText('1')).toHaveClass('active')
|
149
|
-
|
150
|
-
rerender(<Pagination {...defaultProps}
|
151
|
-
current={3}
|
152
|
-
/>)
|
153
|
-
|
154
|
-
expect(screen.getByText('3')).toHaveClass('active')
|
155
|
-
expect(screen.getByText('1')).not.toHaveClass('active')
|
156
|
-
})
|
157
|
-
|
158
|
-
test('validates current prop is within valid range', () => {
|
159
|
-
const { rerender } = render(<Pagination {...defaultProps}
|
160
|
-
current={1}
|
161
|
-
/>)
|
162
|
-
|
163
|
-
rerender(<Pagination {...defaultProps}
|
164
|
-
current={0}
|
165
|
-
/>)
|
166
|
-
|
167
|
-
expect(screen.getByText('1')).toHaveClass('active')
|
168
|
-
|
169
|
-
rerender(<Pagination {...defaultProps}
|
170
|
-
current={15}
|
171
|
-
/>)
|
172
|
-
|
173
|
-
expect(screen.getByText('1')).toHaveClass('active')
|
174
|
-
})
|
175
|
-
|
176
|
-
test('handles htmlOptions props', () => {
|
177
|
-
const htmlOptions = { 'data-test': 'test-value' }
|
178
|
-
render(<Pagination {...defaultProps}
|
179
|
-
htmlOptions={htmlOptions}
|
180
|
-
/>)
|
181
|
-
|
182
|
-
const pagination = screen.getByTestId('pagination-test')
|
183
|
-
expect(pagination).toHaveAttribute('data-test', 'test-value')
|
184
|
-
})
|
185
|
-
|
186
|
-
test('renders first and last page buttons when range is small', () => {
|
187
|
-
render(<Pagination {...defaultProps}
|
188
|
-
current={10}
|
189
|
-
range={3}
|
190
|
-
total={20}
|
191
|
-
/>)
|
192
|
-
|
193
|
-
expect(screen.getByText('1')).toBeInTheDocument()
|
194
|
-
expect(screen.getByText('20')).toBeInTheDocument()
|
195
|
-
|
196
|
-
expect(screen.getByText('9')).toBeInTheDocument()
|
197
|
-
expect(screen.getByText('10')).toBeInTheDocument()
|
198
|
-
expect(screen.getByText('11')).toBeInTheDocument()
|
199
|
-
})
|
200
|
-
|
201
|
-
test('renders second and second-to-last page buttons when needed', () => {
|
202
|
-
render(<Pagination {...defaultProps}
|
203
|
-
current={10}
|
204
|
-
range={3}
|
205
|
-
total={20}
|
206
|
-
/>)
|
207
|
-
|
208
|
-
expect(screen.getByText('2')).toBeInTheDocument()
|
209
|
-
|
210
|
-
expect(screen.getByText('19')).toBeInTheDocument()
|
211
|
-
})
|
212
|
-
})
|
@@ -1,112 +0,0 @@
|
|
1
|
-
import React, { useState } from "react";
|
2
|
-
import Flex from '../../pb_flex/_flex'
|
3
|
-
import Pagination from '../../pb_pagination/_pagination'
|
4
|
-
import Select from '../../pb_select/_select'
|
5
|
-
import Table from '../../pb_table/_table'
|
6
|
-
|
7
|
-
import { data } from "./data";
|
8
|
-
|
9
|
-
const PaginationExternalControl = (props) => {
|
10
|
-
const [totalItems, setTotalItems] = useState(20);
|
11
|
-
const [itemsPerPage, setItemsPerPage] = useState(5);
|
12
|
-
const [currentPage, setCurrentPage] = useState(1);
|
13
|
-
|
14
|
-
const totalPages = Math.ceil(totalItems / itemsPerPage);
|
15
|
-
|
16
|
-
const handlePageChange = (page) => {
|
17
|
-
setCurrentPage(page);
|
18
|
-
};
|
19
|
-
|
20
|
-
const limitedData = data.slice(0, totalItems);
|
21
|
-
const startIndex = (currentPage - 1) * itemsPerPage;
|
22
|
-
const paginatedItems = limitedData.slice(startIndex, startIndex + itemsPerPage);
|
23
|
-
|
24
|
-
const handleTotalItemsChange = (event) => {
|
25
|
-
const value = Number(event.target.value);
|
26
|
-
setTotalItems(value);
|
27
|
-
setCurrentPage(1);
|
28
|
-
};
|
29
|
-
|
30
|
-
const handleItemsPerPageChange = (event) => {
|
31
|
-
const value = Number(event.target.value);
|
32
|
-
setItemsPerPage(value);
|
33
|
-
setCurrentPage(1);
|
34
|
-
};
|
35
|
-
|
36
|
-
return (
|
37
|
-
<>
|
38
|
-
<Flex gap="sm">
|
39
|
-
<Select
|
40
|
-
label="Total Items"
|
41
|
-
onChange={handleTotalItemsChange}
|
42
|
-
options={[
|
43
|
-
{ value: "5", text: "5" },
|
44
|
-
{ value: "10", text: "10" },
|
45
|
-
{ value: "20", text: "20" }
|
46
|
-
]}
|
47
|
-
size="sm"
|
48
|
-
value={String(totalItems)}
|
49
|
-
{...props}
|
50
|
-
/>
|
51
|
-
|
52
|
-
<Select
|
53
|
-
label="Items per Page"
|
54
|
-
onChange={handleItemsPerPageChange}
|
55
|
-
options={[
|
56
|
-
{ value: "3", text: "3" },
|
57
|
-
{ value: "5", text: "5" },
|
58
|
-
{ value: "10", text: "10" }
|
59
|
-
]}
|
60
|
-
size="sm"
|
61
|
-
value={String(itemsPerPage)}
|
62
|
-
{...props}
|
63
|
-
/>
|
64
|
-
</Flex>
|
65
|
-
|
66
|
-
<Pagination
|
67
|
-
current={currentPage}
|
68
|
-
key={`pagination-top-${currentPage}`}
|
69
|
-
marginBottom="xs"
|
70
|
-
onChange={handlePageChange}
|
71
|
-
range={5}
|
72
|
-
total={totalPages}
|
73
|
-
{...props}
|
74
|
-
/>
|
75
|
-
<Table
|
76
|
-
marginBottom="xs"
|
77
|
-
responsive="none"
|
78
|
-
size="sm"
|
79
|
-
{...props}
|
80
|
-
>
|
81
|
-
<Table.Head>
|
82
|
-
<Table.Row>
|
83
|
-
<Table.Header>{"Column 1"}</Table.Header>
|
84
|
-
<Table.Header>{"Column 2"}</Table.Header>
|
85
|
-
<Table.Header>{"Column 3"}</Table.Header>
|
86
|
-
<Table.Header>{"Column 4"}</Table.Header>
|
87
|
-
<Table.Header>{"Column 5"}</Table.Header>
|
88
|
-
</Table.Row>
|
89
|
-
</Table.Head>
|
90
|
-
<Table.Body>
|
91
|
-
{paginatedItems.map((row, index) => (
|
92
|
-
<Table.Row key={index}>
|
93
|
-
{row.map((cell, cellIndex) => (
|
94
|
-
<Table.Cell key={cellIndex}>{cell}</Table.Cell>
|
95
|
-
))}
|
96
|
-
</Table.Row>
|
97
|
-
))}
|
98
|
-
</Table.Body>
|
99
|
-
</Table>
|
100
|
-
<Pagination
|
101
|
-
current={currentPage}
|
102
|
-
key={`pagination-bottom-${currentPage}`}
|
103
|
-
onChange={handlePageChange}
|
104
|
-
range={5}
|
105
|
-
total={totalPages}
|
106
|
-
{...props}
|
107
|
-
/>
|
108
|
-
</>
|
109
|
-
)
|
110
|
-
}
|
111
|
-
|
112
|
-
export default PaginationExternalControl
|
@@ -1,3 +0,0 @@
|
|
1
|
-
The Pagination component supports external control of the current page. This allows for programmatically reseting or changing the current page when filters or other criteria change, without needing to unmount and remount the component.
|
2
|
-
|
3
|
-
In this example, changing the "Total Items" or "Items per Page" dropdowns will automatically reset the pagination to page 1, demonstrating how external control works. The pagination component will update its internal state to reflect the new `current` prop value.
|