playbook_ui 15.2.0 → 15.3.0.pre.alpha.PLAY2001selectablecarddisabledstyles11833
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 +5 -5
- data/app/pb_kits/playbook/pb_advanced_table/Components/TableHeaderCell.tsx +3 -1
- data/app/pb_kits/playbook/pb_advanced_table/Hooks/useTableActions.ts +18 -3
- data/app/pb_kits/playbook/pb_advanced_table/Hooks/useTableState.ts +56 -14
- data/app/pb_kits/playbook/pb_advanced_table/SubKits/TableHeader.tsx +3 -0
- data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +12 -3
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.html.erb +2 -2
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.test.jsx +59 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_background_control_rails.html.erb +39 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_background_control_rails.md +1 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_beta.md +3 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_beta_sort.html.erb +3 -3
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_beta_subrow_headers.html.erb +3 -3
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_collapsible_trail_rails.html.erb +2 -2
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling.md +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_column_headers_rails.html.erb +2 -2
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_rails.html.erb +2 -2
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_rails.md +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_inline_row_loading.jsx +28 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_inline_row_loading.md +11 -2
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_padding_control_per_row_rails.html.erb +51 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_padding_control_per_row_rails.md +1 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_padding_control_rails.html.erb +40 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_padding_control_rails.md +1 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_row_styling_rails.md +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_row_styling_react.md +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_rails.html.erb +2 -2
- data/app/pb_kits/playbook/pb_advanced_table/docs/_mock_data_inline_loading_empty_children.js +42 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +3 -0
- data/app/pb_kits/playbook/pb_advanced_table/index.js +5 -1
- data/app/pb_kits/playbook/pb_advanced_table/table_body.rb +6 -6
- data/app/pb_kits/playbook/pb_advanced_table/table_header.rb +6 -6
- data/app/pb_kits/playbook/pb_advanced_table/table_row.html.erb +3 -2
- data/app/pb_kits/playbook/pb_advanced_table/table_row.rb +49 -5
- data/app/pb_kits/playbook/pb_bread_crumbs/docs/_bread_crumbs_default.html.erb +4 -4
- data/app/pb_kits/playbook/pb_bread_crumbs/docs/_bread_crumbs_default.jsx +4 -0
- data/app/pb_kits/playbook/pb_button/_button.scss +6 -0
- data/app/pb_kits/playbook/pb_button/docs/_button_loading.html.erb +7 -3
- data/app/pb_kits/playbook/pb_button/docs/_button_loading.jsx +29 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_range_pattern.jsx +1 -1
- data/app/pb_kits/playbook/pb_date_picker/sass_partials/_quick_pick_styles.scss +11 -30
- data/app/pb_kits/playbook/pb_draggable/_draggable.scss +8 -0
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.scss +0 -1
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.tsx +5 -3
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_description.md +2 -0
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/fixed_confirmation_toast.rb +4 -1
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/fixed_confirmation_toast.test.js +10 -0
- data/app/pb_kits/playbook/pb_form/docs/_form_form_with_loading.html.erb +1 -1
- data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +1 -1
- data/app/pb_kits/playbook/pb_form/formHelper.js +1 -1
- data/app/pb_kits/playbook/pb_pb_bar_graph/_pb_bar_graph.tsx +8 -6
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_description.md +3 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/pb_bar_graph.rb +7 -10
- data/app/pb_kits/playbook/pb_pb_bar_graph/pbbargraph.test.jsx +73 -1
- data/app/pb_kits/playbook/pb_pb_circle_chart/_pb_circle_chart.tsx +1 -1
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_description.md +3 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/pb_circle_chart.rb +7 -10
- data/app/pb_kits/playbook/pb_pb_circle_chart/pb_circle_chart.test.jsx +47 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/_pb_gauge_chart.scss +3 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/_pb_gauge_chart.tsx +69 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_description.md +3 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_color.html.erb +12 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_color.jsx +24 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_color.md +5 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_complex.html.erb +45 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_complex.jsx +119 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_complex.md +1 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_default.html.erb +5 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_default.jsx +17 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_disable_animation.html.erb +12 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_disable_animation.jsx +24 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_full_circle.html.erb +23 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_full_circle.jsx +37 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_height.html.erb +40 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_height.jsx +56 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_live_data.jsx +64 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_min_max.html.erb +27 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_min_max.jsx +40 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_min_max.md +1 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_sizing.html.erb +19 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_sizing.jsx +65 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_sizing.md +3 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_title.html.erb +14 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_title.jsx +27 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_units.html.erb +39 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_units.jsx +58 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_units.md +1 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/example.yml +29 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/index.js +11 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/pbGaugeGraphTheme.ts +91 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/pb_gauge_chart.html.erb +1 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/pb_gauge_chart.rb +25 -0
- data/app/pb_kits/playbook/pb_pb_gauge_chart/pb_gauge_chart.test.jsx +80 -0
- data/app/pb_kits/playbook/pb_pb_line_graph/_pb_line_graph.scss +3 -0
- data/app/pb_kits/playbook/pb_pb_line_graph/_pb_line_graph.tsx +61 -0
- data/app/pb_kits/playbook/pb_pb_line_graph/docs/_description.md +3 -0
- data/app/pb_kits/playbook/pb_pb_line_graph/docs/_pb_line_graph_colors.html.erb +34 -0
- data/app/pb_kits/playbook/pb_pb_line_graph/docs/_pb_line_graph_colors.jsx +52 -0
- data/app/pb_kits/playbook/pb_pb_line_graph/docs/_pb_line_graph_colors.md +5 -0
- data/app/pb_kits/playbook/pb_pb_line_graph/docs/_pb_line_graph_default.html.erb +34 -0
- data/app/pb_kits/playbook/pb_pb_line_graph/docs/_pb_line_graph_default.jsx +45 -0
- data/app/pb_kits/playbook/pb_pb_line_graph/docs/_pb_line_graph_height.html.erb +47 -0
- data/app/pb_kits/playbook/pb_pb_line_graph/docs/_pb_line_graph_height.jsx +64 -0
- data/app/pb_kits/playbook/pb_pb_line_graph/docs/_pb_line_graph_height.md +3 -0
- data/app/pb_kits/playbook/pb_pb_line_graph/docs/_pb_line_graph_legend.html.erb +24 -0
- data/app/pb_kits/playbook/pb_pb_line_graph/docs/_pb_line_graph_legend.jsx +37 -0
- data/app/pb_kits/playbook/pb_pb_line_graph/docs/_pb_line_graph_legend_nonclickable.html.erb +39 -0
- data/app/pb_kits/playbook/pb_pb_line_graph/docs/_pb_line_graph_legend_nonclickable.jsx +45 -0
- data/app/pb_kits/playbook/pb_pb_line_graph/docs/_pb_line_graph_legend_position.html.erb +86 -0
- data/app/pb_kits/playbook/pb_pb_line_graph/docs/_pb_line_graph_legend_position.jsx +116 -0
- data/app/pb_kits/playbook/pb_pb_line_graph/docs/_pb_line_graph_legend_position.md +11 -0
- data/app/pb_kits/playbook/pb_pb_line_graph/docs/example.yml +20 -0
- data/app/pb_kits/playbook/pb_pb_line_graph/docs/index.js +6 -0
- data/app/pb_kits/playbook/pb_pb_line_graph/pbLineGraphTheme.ts +125 -0
- data/app/pb_kits/playbook/pb_pb_line_graph/pb_line_graph.html.erb +1 -0
- data/app/pb_kits/playbook/pb_pb_line_graph/pb_line_graph.rb +25 -0
- data/app/pb_kits/playbook/pb_pb_line_graph/pb_line_graph.test.jsx +110 -0
- data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx +130 -28
- data/app/pb_kits/playbook/pb_rich_text_editor/TipTap/Toolbar.tsx +41 -2
- data/app/pb_kits/playbook/pb_rich_text_editor/TipTap/ToolbarDropdown.tsx +1 -0
- data/app/pb_kits/playbook/pb_rich_text_editor/_rich_text_editor.tsx +60 -20
- data/app/pb_kits/playbook/pb_rich_text_editor/_tiptap_styles.scss +36 -0
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_advanced_attributes.jsx +38 -0
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_advanced_attributes.md +1 -0
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_advanced_focus.jsx +34 -0
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_advanced_focus.md +1 -0
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_advanced_inline.jsx +37 -0
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_advanced_inline.md +1 -0
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_advanced_simple.jsx +37 -0
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_advanced_sticky.jsx +38 -0
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_advanced_sticky.md +1 -0
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_advanced_templates.jsx +69 -0
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_advanced_templates.md +1 -0
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/example.yml +8 -2
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/index.js +6 -0
- data/app/pb_kits/playbook/pb_rich_text_editor/rich_text_editor.test.js +127 -1
- data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.scss +29 -0
- data/app/pb_kits/playbook/pb_timeline/_timeline.scss +250 -233
- data/app/pb_kits/playbook/pb_timeline/_timeline.tsx +1 -1
- data/app/pb_kits/playbook/pb_timeline/timeline.test.js +2 -2
- data/app/pb_kits/playbook/pb_typeahead/_typeahead.test.jsx +35 -1
- data/app/pb_kits/playbook/pb_typeahead/_typeahead.tsx +71 -2
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_default_options.html.erb +36 -0
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_default_options.md +1 -0
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_default_value.jsx +41 -0
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_default_value.md +1 -0
- data/app/pb_kits/playbook/pb_typeahead/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_typeahead/docs/index.js +1 -0
- data/app/pb_kits/playbook/tokens/_positioning.scss +1 -0
- data/app/pb_kits/playbook/utilities/_positioning.scss +6 -1
- data/app/pb_kits/playbook/utilities/globalProps.ts +3 -1
- data/dist/chunks/{_line_graph-ByLTvO72.js → _line_graph-h5H-imfn.js} +1 -1
- data/dist/chunks/_typeahead-U8AjZIIW.js +6 -0
- data/dist/chunks/{_weekday_stacked-CB1Sm0pQ.js → _weekday_stacked-c6_R08J-.js} +3 -3
- data/dist/chunks/{lib-izYrkvOQ.js → lib-CGxXTQ75.js} +2 -2
- data/dist/chunks/{pb_form_validation-Cah5Z5J3.js → pb_form_validation-DebqlUKZ.js} +1 -1
- data/dist/chunks/vendor.js +1 -1
- data/dist/menu.yml +12 -0
- 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/pb_forms_helper.rb +7 -6
- data/lib/playbook/version.rb +2 -2
- data/lib/playbook/z_index.rb +1 -1
- metadata +90 -7
- data/dist/chunks/_typeahead-DXZQU3hC.js +0 -6
    
        data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_padding_control_per_row_rails.md
    ADDED
    
    | @@ -0,0 +1 @@ | |
| 1 | 
            +
            `row_styling` can also be used to control padding on all cells in a given row via the use of the `cell_padding` key/value pair as shown here. `cell_padding` lets you use 'xxs', 'xs', 'sm', 'md', 'lg', 'xl' and 'none'.
         | 
    
        data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_padding_control_rails.html.erb
    ADDED
    
    | @@ -0,0 +1,40 @@ | |
| 1 | 
            +
            <% column_definitions = [
         | 
| 2 | 
            +
                {
         | 
| 3 | 
            +
                  accessor: "year",
         | 
| 4 | 
            +
                  label: "Year",
         | 
| 5 | 
            +
                  cellAccessors: ["quarter", "month", "day"],
         | 
| 6 | 
            +
                },
         | 
| 7 | 
            +
                {
         | 
| 8 | 
            +
                  accessor: "newEnrollments",
         | 
| 9 | 
            +
                  label: "New Enrollments",
         | 
| 10 | 
            +
                  column_styling: { 
         | 
| 11 | 
            +
                    cell_padding: "none",
         | 
| 12 | 
            +
                  }
         | 
| 13 | 
            +
                },
         | 
| 14 | 
            +
                {
         | 
| 15 | 
            +
                  accessor: "scheduledMeetings",
         | 
| 16 | 
            +
                  label: "Scheduled Meetings",
         | 
| 17 | 
            +
                },
         | 
| 18 | 
            +
                {
         | 
| 19 | 
            +
                  accessor: "attendanceRate",
         | 
| 20 | 
            +
                  label: "Attendance Rate",
         | 
| 21 | 
            +
                  column_styling: { cell_padding: "md" },
         | 
| 22 | 
            +
                },
         | 
| 23 | 
            +
                {
         | 
| 24 | 
            +
                  accessor: "completedClasses",
         | 
| 25 | 
            +
                  label: "Completed Classes",
         | 
| 26 | 
            +
                },
         | 
| 27 | 
            +
                {
         | 
| 28 | 
            +
                  accessor: "classCompletionRate",
         | 
| 29 | 
            +
                  label: "Class Completion Rate",
         | 
| 30 | 
            +
                },
         | 
| 31 | 
            +
                {
         | 
| 32 | 
            +
                  accessor: "graduatedStudents",
         | 
| 33 | 
            +
                  label: "Graduated Students",
         | 
| 34 | 
            +
                }
         | 
| 35 | 
            +
            ] %>
         | 
| 36 | 
            +
             | 
| 37 | 
            +
            <%= pb_rails("advanced_table", props: { id: "padding-control", table_data: @table_data, column_definitions: column_definitions }) do %>
         | 
| 38 | 
            +
              <%= pb_rails("advanced_table/table_header", props: { table_id: "padding-control", column_definitions: column_definitions }) %>
         | 
| 39 | 
            +
              <%= pb_rails("advanced_table/table_body", props: { table_id: "padding-control", table_data: @table_data, column_definitions: column_definitions }) %>
         | 
| 40 | 
            +
            <% end %>
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            `column_styling` can also be used to control padding on all cells in a given column via the use of the `cell_padding` key/value pair. `cell_padding` lets you use 'xxs', 'xs', 'sm', 'md', 'lg', 'xl' and 'none'.
         | 
| @@ -1,4 +1,4 @@ | |
| 1 | 
            -
            The `row_styling` prop can be used in conjunction with row ids to control certain styling options on individual rows.  | 
| 1 | 
            +
            The `row_styling` prop can be used in conjunction with row ids to control certain styling options on individual rows. It is an object that has several optional key/value pairs, this doc example highlights the following:
         | 
| 2 2 |  | 
| 3 3 | 
             
            - `background_color` : use this to control the background color of the row
         | 
| 4 4 | 
             
            - `font_color`: use this to control font color for each row if needed, for example if using a darker background color.
         | 
| @@ -1,4 +1,4 @@ | |
| 1 | 
            -
            The `rowStyling` prop can be used in conjunction with row ids to control certain styling options on individual rows.  | 
| 1 | 
            +
            The `rowStyling` prop can be used in conjunction with row ids to control certain styling options on individual rows. It is an object that has several optional key/value pairs, this doc example highlights the following:
         | 
| 2 2 |  | 
| 3 3 | 
             
            - `backgroundColor` : use this to control the background color of the row
         | 
| 4 4 | 
             
            - `fontColor`: use this to control font color for each row if needed, for example if using a darker background color.
         | 
    
        data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_rails.html.erb
    CHANGED
    
    | @@ -34,6 +34,6 @@ | |
| 34 34 | 
             
            %>
         | 
| 35 35 |  | 
| 36 36 | 
             
            <%= pb_rails("advanced_table", props: { id: "selectable_rows", table_data: @table_data_with_id, column_definitions: column_definitions, selectable_rows: true }) do %>
         | 
| 37 | 
            -
              <%= pb_rails("advanced_table/table_header", props: {  | 
| 38 | 
            -
              <%= pb_rails("advanced_table/table_body", props: {  | 
| 37 | 
            +
              <%= pb_rails("advanced_table/table_header", props: { table_id: "selectable_rows", column_definitions: column_definitions, selectable_rows: true }) %>
         | 
| 38 | 
            +
              <%= pb_rails("advanced_table/table_body", props: { table_id: "selectable_rows", table_data: @table_data_with_id, column_definitions: column_definitions, subrow_headers: subrow_headers, enable_toggle_expansion: "all", selectable_rows: true }) %>
         | 
| 39 39 | 
             
            <% end %>
         | 
| @@ -0,0 +1,42 @@ | |
| 1 | 
            +
            export const MOCK_DATA_INLINE_LOADING_EMPTY_CHILDREN = [
         | 
| 2 | 
            +
                {
         | 
| 3 | 
            +
                  year: "2021",
         | 
| 4 | 
            +
                  quarter: null,
         | 
| 5 | 
            +
                  month: null,
         | 
| 6 | 
            +
                  day: null,
         | 
| 7 | 
            +
                  newEnrollments: "20",
         | 
| 8 | 
            +
                  scheduledMeetings: "10",
         | 
| 9 | 
            +
                  attendanceRate: "51%",
         | 
| 10 | 
            +
                  completedClasses: "3",
         | 
| 11 | 
            +
                  classCompletionRate: "33%",
         | 
| 12 | 
            +
                  graduatedStudents: "19",
         | 
| 13 | 
            +
                  children: [],
         | 
| 14 | 
            +
                },
         | 
| 15 | 
            +
                {
         | 
| 16 | 
            +
                  year: "2022",
         | 
| 17 | 
            +
                  quarter: null,
         | 
| 18 | 
            +
                  month: null,
         | 
| 19 | 
            +
                  day: null,
         | 
| 20 | 
            +
                  newEnrollments: "25",
         | 
| 21 | 
            +
                  scheduledMeetings: "17",
         | 
| 22 | 
            +
                  attendanceRate: "75%",
         | 
| 23 | 
            +
                  completedClasses: "5",
         | 
| 24 | 
            +
                  classCompletionRate: "45%",
         | 
| 25 | 
            +
                  graduatedStudents: "32",
         | 
| 26 | 
            +
                  children: [],
         | 
| 27 | 
            +
                },
         | 
| 28 | 
            +
                {
         | 
| 29 | 
            +
                  year: "2023",
         | 
| 30 | 
            +
                  quarter: null,
         | 
| 31 | 
            +
                  month: null,
         | 
| 32 | 
            +
                  day: null,
         | 
| 33 | 
            +
                  newEnrollments: "10",
         | 
| 34 | 
            +
                  scheduledMeetings: "15",
         | 
| 35 | 
            +
                  attendanceRate: "65%",
         | 
| 36 | 
            +
                  completedClasses: "4",
         | 
| 37 | 
            +
                  classCompletionRate: "49%",
         | 
| 38 | 
            +
                  graduatedStudents: "29",
         | 
| 39 | 
            +
                  children: [],
         | 
| 40 | 
            +
                },
         | 
| 41 | 
            +
              ]
         | 
| 42 | 
            +
              
         | 
| @@ -21,8 +21,11 @@ examples: | |
| 21 21 | 
             
              - advanced_table_selectable_rows_header_rails: Selectable Rows (No Actions Bar)
         | 
| 22 22 | 
             
              - advanced_table_scrollbar_none: Advanced Table Scrollbar None
         | 
| 23 23 | 
             
              - advanced_table_row_styling: Row Styling
         | 
| 24 | 
            +
              - advanced_table_padding_control_per_row_rails: Padding Control using Row Styling
         | 
| 24 25 | 
             
              - advanced_table_column_styling_rails: Column Styling
         | 
| 25 26 | 
             
              - advanced_table_column_styling_column_headers_rails: Column Styling with Multiple Headers
         | 
| 27 | 
            +
              - advanced_table_padding_control_rails: Padding Control using Column Styling
         | 
| 28 | 
            +
              - advanced_table_background_control_rails: Background Control using Column Styling
         | 
| 26 29 | 
             
              - advanced_table_column_border_color_rails: Column Group Border Color
         | 
| 27 30 |  | 
| 28 31 |  | 
| @@ -331,8 +331,12 @@ export default class PbAdvancedTable extends PbEnhancedElement { | |
| 331 331 | 
             
                    // Split the dataContent to get all ancestor IDs, check against ExpandedRows
         | 
| 332 332 | 
             
                    const ancestorIds = dataContent.split("-").slice(0, -1);
         | 
| 333 333 |  | 
| 334 | 
            +
                    // Get the table_id from the child row's parent to construct proper prefixed IDs
         | 
| 335 | 
            +
                    const parentRowId = childRow.dataset.rowParent;
         | 
| 336 | 
            +
                    const tableId = parentRowId ? parentRowId.split('_').slice(0, -1).join('_') : '';
         | 
| 337 | 
            +
             | 
| 334 338 | 
             
                    const prefixedAncestorIds = ancestorIds.map(
         | 
| 335 | 
            -
                      (id) => `${ | 
| 339 | 
            +
                      (id) => `${tableId}_${id}`
         | 
| 336 340 | 
             
                    );
         | 
| 337 341 | 
             
                    const allAncestorsExpanded = prefixedAncestorIds.every((id) =>
         | 
| 338 342 | 
             
                      PbAdvancedTable.expandedRows.has(id)
         | 
| @@ -3,8 +3,8 @@ | |
| 3 3 | 
             
            module Playbook
         | 
| 4 4 | 
             
              module PbAdvancedTable
         | 
| 5 5 | 
             
                class TableBody < Playbook::KitBase
         | 
| 6 | 
            -
                  prop : | 
| 7 | 
            -
             | 
| 6 | 
            +
                  prop :table_id, type: Playbook::Props::String,
         | 
| 7 | 
            +
                                  default: ""
         | 
| 8 8 | 
             
                  prop :table_data, type: Playbook::Props::Array,
         | 
| 9 9 | 
             
                                    default: []
         | 
| 10 10 | 
             
                  prop :column_definitions, type: Playbook::Props::Array,
         | 
| @@ -53,7 +53,7 @@ module Playbook | |
| 53 53 | 
             
                    subrow_data_attributes = {
         | 
| 54 54 | 
             
                      advanced_table_content: subrow_ancestor_ids.join("-"),
         | 
| 55 55 | 
             
                      row_depth: current_depth,
         | 
| 56 | 
            -
                      row_parent: "#{ | 
| 56 | 
            +
                      row_parent: "#{table_id}_#{ancestor_ids.last}",
         | 
| 57 57 | 
             
                    }
         | 
| 58 58 | 
             
                    # Subrow header if applicable
         | 
| 59 59 | 
             
                    output << pb_rails("advanced_table/table_subrow_header", props: { row: row, column_definitions: leaf_columns, depth: current_depth, subrow_header: subrow_headers[current_depth - 1], collapsible_trail: collapsible_trail, classname: "toggle-content", responsive: responsive, subrow_data_attributes: subrow_data_attributes, last_row: last_row, immediate_parent_row_id: immediate_parent_row_id }) if is_first_child_of_subrow && enable_toggle_expansion == "all"
         | 
| @@ -69,7 +69,7 @@ module Playbook | |
| 69 69 | 
             
                                              end
         | 
| 70 70 |  | 
| 71 71 | 
             
                    # Additional class and data attributes needed for toggle logic
         | 
| 72 | 
            -
                    output << pb_rails("advanced_table/table_row", props: {  | 
| 72 | 
            +
                    output << pb_rails("advanced_table/table_row", props: { table_id: table_id, row: row, column_definitions: leaf_columns, depth: current_depth, collapsible_trail: collapsible_trail, classname: additional_classes, table_data_attributes: current_data_attributes, responsive: responsive, loading: loading, selectable_rows: selectable_rows, row_id: row[:id], enable_toggle_expansion: enable_toggle_expansion, row_styling: row_styling, last_row: last_row, immediate_parent_row_id: immediate_parent_row_id })
         | 
| 73 73 |  | 
| 74 74 | 
             
                    if row[:children].present?
         | 
| 75 75 | 
             
                      row[:children].each do |child_row|
         | 
| @@ -78,9 +78,9 @@ module Playbook | |
| 78 78 | 
             
                        data_content = new_ancestor_ids.join("-") + "-#{child_row.object_id}"
         | 
| 79 79 |  | 
| 80 80 | 
             
                        child_data_attributes = {
         | 
| 81 | 
            -
                          top_parent: "#{ | 
| 81 | 
            +
                          top_parent: "#{table_id}_#{top_parent_id}",
         | 
| 82 82 | 
             
                          row_depth: current_depth + 1,
         | 
| 83 | 
            -
                          row_parent: "#{ | 
| 83 | 
            +
                          row_parent: "#{table_id}_#{immediate_parent_id}",
         | 
| 84 84 | 
             
                          advanced_table_content: data_content,
         | 
| 85 85 | 
             
                        }
         | 
| 86 86 |  | 
| @@ -3,8 +3,8 @@ | |
| 3 3 | 
             
            module Playbook
         | 
| 4 4 | 
             
              module PbAdvancedTable
         | 
| 5 5 | 
             
                class TableHeader < Playbook::KitBase
         | 
| 6 | 
            -
                  prop : | 
| 7 | 
            -
             | 
| 6 | 
            +
                  prop :table_id, type: Playbook::Props::String,
         | 
| 7 | 
            +
                                  default: ""
         | 
| 8 8 | 
             
                  prop :column_definitions, type: Playbook::Props::Array,
         | 
| 9 9 | 
             
                                            default: []
         | 
| 10 10 | 
             
                  prop :enable_toggle_expansion, type: Playbook::Props::Enum,
         | 
| @@ -58,10 +58,10 @@ module Playbook | |
| 58 58 | 
             
                                 classname: additional_classes.join(" "),
         | 
| 59 59 | 
             
                               }) do
         | 
| 60 60 | 
             
                        pb_rails("checkbox", props: {
         | 
| 61 | 
            -
                                   id: "#{ | 
| 61 | 
            +
                                   id: "#{table_id ? "#{table_id}-" : ''}select-all-rows",
         | 
| 62 62 | 
             
                                   indeterminate_main: true,
         | 
| 63 63 | 
             
                                   indeterminate_main_labels: ["", ""],
         | 
| 64 | 
            -
                                   name: "#{ | 
| 64 | 
            +
                                   name: "#{table_id ? "#{table_id}-" : ''}select-all-rows",
         | 
| 65 65 | 
             
                                 })
         | 
| 66 66 | 
             
                      end
         | 
| 67 67 | 
             
                    end
         | 
| @@ -71,10 +71,10 @@ module Playbook | |
| 71 71 | 
             
                  def render_select_all_checkbox
         | 
| 72 72 | 
             
                    if selectable_rows
         | 
| 73 73 | 
             
                      pb_rails("checkbox", props: {
         | 
| 74 | 
            -
                                 id: "#{ | 
| 74 | 
            +
                                 id: "#{table_id ? "#{table_id}-" : ''}select-all-rows",
         | 
| 75 75 | 
             
                                 indeterminate_main: true,
         | 
| 76 76 | 
             
                                 indeterminate_main_labels: ["", ""],
         | 
| 77 | 
            -
                                 name: "#{ | 
| 77 | 
            +
                                 name: "#{table_id ? "#{table_id}-" : ''}select-all-rows",
         | 
| 78 78 | 
             
                                 data: {
         | 
| 79 79 | 
             
                                   action: "click->pb-advanced-table#toggleAllRowSelection",
         | 
| 80 80 | 
             
                                 },
         | 
| @@ -12,7 +12,8 @@ | |
| 12 12 | 
             
                <% end %>
         | 
| 13 13 | 
             
                <% object.column_definitions.each_with_index do |column, index| %>
         | 
| 14 14 | 
             
                    <% next unless column[:accessor].present? %>
         | 
| 15 | 
            -
                     | 
| 15 | 
            +
                    <% component_info = object.cell_component_info(column, index, bg_color, font_color) %>
         | 
| 16 | 
            +
                    <%= pb_rails(component_info[:name], props: component_info[:props]) do %>
         | 
| 16 17 | 
             
                        <%= pb_rails("flex", props:{ align: "center", justify: object.justify_for(column, index), classname: object.loading ? "loading-cell" : "" }) do %>
         | 
| 17 18 | 
             
                            <% if collapsible_trail && index.zero? %>
         | 
| 18 19 | 
             
                                <% (1..depth).each do |i| %>
         | 
| @@ -33,7 +34,7 @@ | |
| 33 34 | 
             
                                        <% end %>
         | 
| 34 35 | 
             
                                        <% if object.row[:children].present? %>
         | 
| 35 36 | 
             
                                            <button
         | 
| 36 | 
            -
                                                id="<%= "#{object. | 
| 37 | 
            +
                                                id="<%= "#{object.table_id}_#{object.row.object_id}" %>"
         | 
| 37 38 | 
             
                                                class="gray-icon expand-toggle-icon"
         | 
| 38 39 | 
             
                                                data-advanced-table="true"
         | 
| 39 40 | 
             
                                                style="color: <%= button_color %>"
         | 
| @@ -3,8 +3,8 @@ | |
| 3 3 | 
             
            module Playbook
         | 
| 4 4 | 
             
              module PbAdvancedTable
         | 
| 5 5 | 
             
                class TableRow < Playbook::KitBase
         | 
| 6 | 
            -
                  prop : | 
| 7 | 
            -
             | 
| 6 | 
            +
                  prop :table_id, type: Playbook::Props::String,
         | 
| 7 | 
            +
                                  default: ""
         | 
| 8 8 | 
             
                  prop :column_definitions, type: Playbook::Props::Array,
         | 
| 9 9 | 
             
                                            default: []
         | 
| 10 10 | 
             
                  prop :row
         | 
| @@ -46,9 +46,53 @@ module Playbook | |
| 46 46 | 
             
                    classes = %w[id-cell]
         | 
| 47 47 | 
             
                    classes << "last-cell" if column[:is_last_in_group]
         | 
| 48 48 | 
             
                    classes << "pinned-left" if index.zero? && is_pinned_left && responsive == "scroll"
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                    row_style = row_styling.find { |style| style[:row_id].to_s == row_id.to_s }
         | 
| 51 | 
            +
                    row_padding = row_style&.[](:cell_padding)
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                    if column[:accessor].present?
         | 
| 54 | 
            +
                      orig_def = find_column_def_by_accessor(column_definitions, column[:accessor])
         | 
| 55 | 
            +
                      column_padding = orig_def[:column_styling][:cell_padding] if orig_def && orig_def[:column_styling].is_a?(Hash) && orig_def[:column_styling][:cell_padding].present?
         | 
| 56 | 
            +
                    end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                    classes << "p_#{row_padding}" if row_padding.present?
         | 
| 59 | 
            +
                    classes << "p_#{column_padding}" if column_padding.present?
         | 
| 60 | 
            +
             | 
| 49 61 | 
             
                    classes.join(" ")
         | 
| 50 62 | 
             
                  end
         | 
| 51 63 |  | 
| 64 | 
            +
                  def cell_background_color(column)
         | 
| 65 | 
            +
                    return nil unless column[:accessor].present?
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                    orig_def = find_column_def_by_accessor(column_definitions, column[:accessor])
         | 
| 68 | 
            +
                    if orig_def && orig_def[:column_styling].is_a?(Hash) && orig_def[:column_styling][:cell_background_color].present?
         | 
| 69 | 
            +
                      bg_color = orig_def[:column_styling][:cell_background_color]
         | 
| 70 | 
            +
                      if bg_color.respond_to?(:call)
         | 
| 71 | 
            +
                        bg_color.call(row)
         | 
| 72 | 
            +
                      else
         | 
| 73 | 
            +
                        bg_color
         | 
| 74 | 
            +
                      end
         | 
| 75 | 
            +
                    end
         | 
| 76 | 
            +
                  end
         | 
| 77 | 
            +
             | 
| 78 | 
            +
                  def has_custom_background_color?(column)
         | 
| 79 | 
            +
                    cell_background_color(column).present?
         | 
| 80 | 
            +
                  end
         | 
| 81 | 
            +
             | 
| 82 | 
            +
                  # Uses a regular table/table_cell component if there is no custom background color; if there is a cell_background_color uses a background component with tag "td"
         | 
| 83 | 
            +
                  def cell_component_info(column, index, bg_color, font_color)
         | 
| 84 | 
            +
                    if has_custom_background_color?(column)
         | 
| 85 | 
            +
                      custom_bg_color = cell_background_color(column)
         | 
| 86 | 
            +
                      component_name = "background"
         | 
| 87 | 
            +
                      component_props = { background_color: custom_bg_color, tag: "td", classname: td_classname(column, index) }
         | 
| 88 | 
            +
                    else
         | 
| 89 | 
            +
                      component_name = "table/table_cell"
         | 
| 90 | 
            +
                      component_props = { html_options: { style: { "background-color": bg_color, color: font_color } }, classname: td_classname(column, index) }
         | 
| 91 | 
            +
                    end
         | 
| 92 | 
            +
             | 
| 93 | 
            +
                    { name: component_name, props: component_props }
         | 
| 94 | 
            +
                  end
         | 
| 95 | 
            +
             | 
| 52 96 | 
             
                  def depth_accessors
         | 
| 53 97 | 
             
                    column_definitions.flat_map do |column|
         | 
| 54 98 | 
             
                      column[:cellAccessors] if column.key?(:cellAccessors)
         | 
| @@ -58,13 +102,13 @@ module Playbook | |
| 58 102 | 
             
                  # Selectable Rows No Subrows - checkboxes in their own first cell
         | 
| 59 103 | 
             
                  def render_checkbox_cell
         | 
| 60 104 | 
             
                    if selectable_rows
         | 
| 61 | 
            -
                      prefix =  | 
| 105 | 
            +
                      prefix = table_id ? "#{table_id}-" : ""
         | 
| 62 106 | 
             
                      pb_rails("table/table_cell", props: {
         | 
| 63 107 | 
             
                                 classname: "checkbox-cell",
         | 
| 64 108 | 
             
                               }) do
         | 
| 65 109 | 
             
                        pb_rails("checkbox", props: {
         | 
| 66 110 | 
             
                                   id: "#{prefix}select-row-#{row_id || row.object_id}",
         | 
| 67 | 
            -
                                   indeterminate_parent: "#{ | 
| 111 | 
            +
                                   indeterminate_parent: "#{table_id ? "#{table_id}-" : ''}select-all-rows",
         | 
| 68 112 | 
             
                                   name: "#{prefix}select-row-#{row_id || row.object_id}",
         | 
| 69 113 | 
             
                                   data: {
         | 
| 70 114 | 
             
                                     row_id: row_id || row.object_id.to_s,
         | 
| @@ -78,7 +122,7 @@ module Playbook | |
| 78 122 | 
             
                  # Selectable Rows w/ Subrows - checkboxes part of toggleable first cell
         | 
| 79 123 | 
             
                  def render_row_checkbox
         | 
| 80 124 | 
             
                    if selectable_rows
         | 
| 81 | 
            -
                      prefix =  | 
| 125 | 
            +
                      prefix = table_id ? "#{table_id}-" : ""
         | 
| 82 126 | 
             
                      indeterminate_parent =
         | 
| 83 127 | 
             
                        if depth.zero?
         | 
| 84 128 | 
             
                          "#{prefix}select-all-rows"
         | 
| @@ -1,13 +1,13 @@ | |
| 1 1 |  | 
| 2 2 | 
             
            <div>
         | 
| 3 3 | 
             
              <%= pb_rails("bread_crumbs", props: { aria: { label: "Breadcrumb Navigation" } }) do%>
         | 
| 4 | 
            -
                <%= pb_rails("icon", props: { icon: "home"}) %>
         | 
| 4 | 
            +
                <%= pb_rails("icon", props: { icon: "home", color: "link"}) %>
         | 
| 5 5 | 
             
                <%= pb_rails("bread_crumbs/bread_crumb_item", props: { link: "/" }) do %> 
         | 
| 6 | 
            -
                  <%= pb_rails("title", props: { size: 4, text: "Home", tag: "span" }) %>
         | 
| 6 | 
            +
                  <%= pb_rails("title", props: { size: 4, text: "Home", tag: "span", color: "link" }) %>
         | 
| 7 7 | 
             
                 <%end%>
         | 
| 8 | 
            -
                 <%= pb_rails("icon", props: { icon: 'users'}) %>
         | 
| 8 | 
            +
                 <%= pb_rails("icon", props: { icon: 'users', color: "link"}) %>
         | 
| 9 9 | 
             
                <%= pb_rails("bread_crumbs/bread_crumb_item", props: { link: "/users" }) do %> 
         | 
| 10 | 
            -
                  <%= pb_rails("title", props: { size: 4, text: "Users", tag: "span" }) %>
         | 
| 10 | 
            +
                  <%= pb_rails("title", props: { size: 4, text: "Users", tag: "span", color: "link" }) %>
         | 
| 11 11 | 
             
                 <%end%>
         | 
| 12 12 | 
             
                 <%= pb_rails("icon", props: { icon: "user"}) %>
         | 
| 13 13 | 
             
                <%= pb_rails("bread_crumbs/bread_crumb_item") do %> 
         | 
| @@ -12,6 +12,7 @@ const BreadCrumbsDefault = (props) => { | |
| 12 12 | 
             
                    {...props}
         | 
| 13 13 | 
             
                >
         | 
| 14 14 | 
             
                  <Icon
         | 
| 15 | 
            +
                      color="link"
         | 
| 15 16 | 
             
                      icon="home"
         | 
| 16 17 | 
             
                      size="1x"
         | 
| 17 18 | 
             
                      {...props}
         | 
| @@ -21,6 +22,7 @@ const BreadCrumbsDefault = (props) => { | |
| 21 22 | 
             
                      href="/home"
         | 
| 22 23 | 
             
                  >
         | 
| 23 24 | 
             
                    <Title
         | 
| 25 | 
            +
                        color="link"
         | 
| 24 26 | 
             
                        size="4"
         | 
| 25 27 | 
             
                        tag="span"
         | 
| 26 28 | 
             
                        text="Home"
         | 
| @@ -28,6 +30,7 @@ const BreadCrumbsDefault = (props) => { | |
| 28 30 | 
             
                    />
         | 
| 29 31 | 
             
                  </BreadCrumbItem>
         | 
| 30 32 | 
             
                  <Icon
         | 
| 33 | 
            +
                      color="link"
         | 
| 31 34 | 
             
                      icon="users"
         | 
| 32 35 | 
             
                      size="1x"
         | 
| 33 36 | 
             
                      {...props}
         | 
| @@ -37,6 +40,7 @@ const BreadCrumbsDefault = (props) => { | |
| 37 40 | 
             
                      href="/users"
         | 
| 38 41 | 
             
                  >
         | 
| 39 42 | 
             
                    <Title
         | 
| 43 | 
            +
                        color="link"
         | 
| 40 44 | 
             
                        size="4"
         | 
| 41 45 | 
             
                        tag="span"
         | 
| 42 46 | 
             
                        text="Users"
         | 
| @@ -1,3 +1,7 @@ | |
| 1 | 
            -
            <%= pb_rails(" | 
| 2 | 
            -
            <%= pb_rails("button", props: { aria: { label: "Loading" },  | 
| 3 | 
            -
            <%= pb_rails("button", props: { aria: { label: "Loading" },  | 
| 1 | 
            +
            <%= pb_rails("caption", props: { margin_y: "md", text: "Button variants with loading" }) %>
         | 
| 2 | 
            +
            <%= pb_rails("button", props: { aria: { label: "Loading" }, loading: true, margin_right: "lg" }) %>
         | 
| 3 | 
            +
            <%= pb_rails("button", props: { aria: { label: "Loading" }, variant: "secondary", loading: true, margin_right: "lg" }) %>
         | 
| 4 | 
            +
            <%= pb_rails("button", props: { aria: { label: "Loading" }, variant: "link", loading: true, margin_right: "lg" }) %>
         | 
| 5 | 
            +
            <%= pb_rails("caption", props: { margin_y: "md", text: "Button sizes with loading" }) %>
         | 
| 6 | 
            +
            <%= pb_rails("button", props: { aria: { label: "Loading" }, loading: true, size: "sm", margin_right: "lg" }) %>
         | 
| 7 | 
            +
            <%= pb_rails("button", props: { aria: { label: "Loading" }, loading: true, size: "lg", margin_right: "lg" }) %>
         | 
| @@ -1,8 +1,13 @@ | |
| 1 1 | 
             
            import React from 'react'
         | 
| 2 2 | 
             
            import Button from "../../pb_button/_button"
         | 
| 3 | 
            +
            import Caption from "../../pb_caption/_caption"
         | 
| 3 4 |  | 
| 4 5 | 
             
            const ButtonLoading = (props) => (
         | 
| 5 6 | 
             
              <div>
         | 
| 7 | 
            +
                <Caption 
         | 
| 8 | 
            +
                    marginY="md" 
         | 
| 9 | 
            +
                    text="Button variants with loading" 
         | 
| 10 | 
            +
                />
         | 
| 6 11 | 
             
                <Button
         | 
| 7 12 | 
             
                    aria={{ label: 'Loading' }}
         | 
| 8 13 | 
             
                    loading
         | 
| @@ -31,6 +36,30 @@ const ButtonLoading = (props) => ( | |
| 31 36 | 
             
                    variant="link"
         | 
| 32 37 | 
             
                    {...props}
         | 
| 33 38 | 
             
                />
         | 
| 39 | 
            +
                <br/>
         | 
| 40 | 
            +
                <Caption 
         | 
| 41 | 
            +
                    marginY="md" 
         | 
| 42 | 
            +
                    text="Button sizes with loading" 
         | 
| 43 | 
            +
                />
         | 
| 44 | 
            +
                <Button
         | 
| 45 | 
            +
                    aria={{ label: 'Loading' }}
         | 
| 46 | 
            +
                    loading
         | 
| 47 | 
            +
                    marginRight='lg'
         | 
| 48 | 
            +
                    size="sm"
         | 
| 49 | 
            +
                    tabIndex={0}
         | 
| 50 | 
            +
                    text="Small Button"
         | 
| 51 | 
            +
                    {...props}
         | 
| 52 | 
            +
                />
         | 
| 53 | 
            +
                {' '}
         | 
| 54 | 
            +
                <Button
         | 
| 55 | 
            +
                    aria={{ label: 'Loading' }}
         | 
| 56 | 
            +
                    loading
         | 
| 57 | 
            +
                    marginRight='lg'
         | 
| 58 | 
            +
                    size="lg"
         | 
| 59 | 
            +
                    tabIndex={0}
         | 
| 60 | 
            +
                    text="Small Button"
         | 
| 61 | 
            +
                    {...props}
         | 
| 62 | 
            +
                />
         | 
| 34 63 | 
             
              </div>
         | 
| 35 64 | 
             
            )
         | 
| 36 65 |  | 
| @@ -9,29 +9,20 @@ $pb_card_border_radius: $border_rad_heavier; | |
| 9 9 |  | 
| 10 10 | 
             
            // used to display dropdown on the left of the calender
         | 
| 11 11 | 
             
            .quick-pick-drop-down {
         | 
| 12 | 
            -
              width:  | 
| 13 | 
            -
              display: grid;
         | 
| 12 | 
            +
              width: 100%;
         | 
| 14 13 | 
             
            }
         | 
| 15 14 |  | 
| 16 15 | 
             
            .quick-pick-ul {
         | 
| 17 | 
            -
              padding: $space_xs 0px;
         | 
| 18 16 | 
             
              margin: 0;
         | 
| 19 17 | 
             
              list-style: none;
         | 
| 20 18 | 
             
            }
         | 
| 21 19 |  | 
| 22 20 | 
             
            .nav-item {
         | 
| 23 21 | 
             
              list-style: none;
         | 
| 24 | 
            -
              border-radius: 6px;
         | 
| 25 | 
            -
              border-bottom: 0;
         | 
| 26 | 
            -
              margin: $space_xs $space_sm;
         | 
| 27 22 | 
             
            }
         | 
| 28 23 |  | 
| 29 24 | 
             
            .nav-item-link {
         | 
| 30 25 | 
             
              text-decoration: none;
         | 
| 31 | 
            -
              border-width: $pb_card_border_width;
         | 
| 32 | 
            -
              border-style: solid;
         | 
| 33 | 
            -
              border-color: $border_light;
         | 
| 34 | 
            -
              border-radius: $pb_card_border_radius;
         | 
| 35 26 | 
             
              padding: $space_xs 14px;
         | 
| 36 27 | 
             
              transition-property: color, background-color;
         | 
| 37 28 | 
             
              transition-duration: 0.15s;
         | 
| @@ -40,15 +31,21 @@ $pb_card_border_radius: $border_rad_heavier; | |
| 40 31 | 
             
              color: $charcoal;
         | 
| 41 32 | 
             
              font-size: $font_default;
         | 
| 42 33 | 
             
              font-weight: $regular;
         | 
| 34 | 
            +
              text-align: left;
         | 
| 35 | 
            +
              border-bottom: 1px solid $border_light;
         | 
| 43 36 | 
             
              &.active {
         | 
| 44 | 
            -
                 | 
| 45 | 
            -
                 | 
| 37 | 
            +
                color: $white;
         | 
| 38 | 
            +
                background-color: $primary;
         | 
| 39 | 
            +
                &:hover {
         | 
| 40 | 
            +
                  background-color: $product_1_background;
         | 
| 41 | 
            +
                  color: $white;
         | 
| 42 | 
            +
                }
         | 
| 46 43 | 
             
              }
         | 
| 47 44 | 
             
              @media (hover:hover) {
         | 
| 48 45 | 
             
                &:hover {
         | 
| 49 46 | 
             
                  cursor: pointer;
         | 
| 50 | 
            -
                   | 
| 51 | 
            -
                   | 
| 47 | 
            +
                  background-color: $bg_light;
         | 
| 48 | 
            +
                  color: $primary;
         | 
| 52 49 | 
             
                }
         | 
| 53 50 | 
             
              }
         | 
| 54 51 | 
             
            }
         | 
| @@ -57,19 +54,3 @@ $pb_card_border_radius: $border_rad_heavier; | |
| 57 54 | 
             
            .quick-pick-drop-down > .flatpickr-months, .quick-pick-drop-down > .flatpickr-innerContainer {
         | 
| 58 55 | 
             
              display: none;
         | 
| 59 56 | 
             
            }
         | 
| 60 | 
            -
             | 
| 61 | 
            -
            @media only screen and (max-width: 767px) {
         | 
| 62 | 
            -
              .quick-pick-ul {
         | 
| 63 | 
            -
                padding: $space_xs $space_xs;
         | 
| 64 | 
            -
                display: grid;
         | 
| 65 | 
            -
                grid-template-columns: 1fr 1fr;
         | 
| 66 | 
            -
              }
         | 
| 67 | 
            -
             | 
| 68 | 
            -
              .nav-item {
         | 
| 69 | 
            -
                margin: $space_xxs $space_xs;
         | 
| 70 | 
            -
              }
         | 
| 71 | 
            -
             | 
| 72 | 
            -
              .nav-item-link {
         | 
| 73 | 
            -
                padding: $space_xs $space_xxs;
         | 
| 74 | 
            -
              }
         | 
| 75 | 
            -
            }
         | 
| @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            import React, { useEffect, useState } from "react";
         | 
| 2 2 | 
             
            import classnames from "classnames";
         | 
| 3 3 |  | 
| 4 | 
            -
            import { globalProps } from "../utilities/globalProps";
         | 
| 4 | 
            +
            import { globalProps, GlobalProps } from "../utilities/globalProps";
         | 
| 5 5 | 
             
            import { buildHtmlProps } from "../utilities/props";
         | 
| 6 6 | 
             
            import { VoidCallback } from "../types";
         | 
| 7 7 |  | 
| @@ -31,7 +31,8 @@ type FixedConfirmationToastProps = { | |
| 31 31 | 
             
              status?: "success" | "error" | "neutral" | "tip";
         | 
| 32 32 | 
             
              text?: string;
         | 
| 33 33 | 
             
              vertical?: "top" | "bottom";
         | 
| 34 | 
            -
             | 
| 34 | 
            +
              zIndex?: number | string;
         | 
| 35 | 
            +
            } & GlobalProps
         | 
| 35 36 |  | 
| 36 37 | 
             
            const FixedConfirmationToast = (props: FixedConfirmationToastProps): React.ReactElement => {
         | 
| 37 38 | 
             
              const [showToast, toggleToast] = useState(true);
         | 
| @@ -50,6 +51,7 @@ const FixedConfirmationToast = (props: FixedConfirmationToastProps): React.React | |
| 50 51 | 
             
                status = "neutral",
         | 
| 51 52 | 
             
                text,
         | 
| 52 53 | 
             
                vertical,
         | 
| 54 | 
            +
                zIndex = 'max',
         | 
| 53 55 | 
             
              } = props;
         | 
| 54 56 |  | 
| 55 57 | 
             
              const returnedIcon = icon || iconMap[status]
         | 
| @@ -59,7 +61,7 @@ const FixedConfirmationToast = (props: FixedConfirmationToastProps): React.React | |
| 59 61 | 
             
                `pb_fixed_confirmation_toast_kit_${status}${multiLine ? '_multi_line' : ''}`,
         | 
| 60 62 | 
             
                { [`positioned_toast ${vertical} ${horizontal}`]: vertical && horizontal },
         | 
| 61 63 | 
             
                `${iconClass}`,
         | 
| 62 | 
            -
                globalProps(props),
         | 
| 64 | 
            +
                globalProps(props, { zIndex }),
         | 
| 63 65 | 
             
                className
         | 
| 64 66 | 
             
              );
         | 
| 65 67 |  | 
| @@ -1,2 +1,4 @@ | |
| 1 1 |  | 
| 2 2 | 
             
            Fixed Confirmation Toast is used as an alert. Success is used when a user successfully completes an action. Error is used when there is an error and the user cannot proceed. Neutral is used to display information to a user to complete a task.
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            **NOTE**: z index for Fixed Confirmation Toast is set to 'max' by default which has the value of `999999`. the z Index global prop can be used to override this if you want to set it to a different value.
         | 
| @@ -60,7 +60,10 @@ module Playbook | |
| 60 60 | 
             
                  end
         | 
| 61 61 |  | 
| 62 62 | 
             
                  def classname
         | 
| 63 | 
            -
                     | 
| 63 | 
            +
                    default_z_index = z_index.present? ? "" : " z_index_max"
         | 
| 64 | 
            +
                    # IMPORTANT: the AutoClose class must be the last class in the string for JS to read it correctly
         | 
| 65 | 
            +
                    # Changing the order will break the auto_close functionality
         | 
| 66 | 
            +
                    generate_classname("pb_fixed_confirmation_toast_kit", status, multi_line_class) + close_class + position_class + icon_class + default_z_index + auto_close_class
         | 
| 64 67 | 
             
                  end
         | 
| 65 68 | 
             
                end
         | 
| 66 69 | 
             
              end
         | 
| @@ -75,4 +75,14 @@ test('renders position when provided', () => { | |
| 75 75 | 
             
                    />
         | 
| 76 76 | 
             
                );
         | 
| 77 77 | 
             
                expect(container.querySelector('.positioned_toast')).toBeInTheDocument();
         | 
| 78 | 
            +
            });
         | 
| 79 | 
            +
             | 
| 80 | 
            +
            test('renders max zIndex by default', () => {
         | 
| 81 | 
            +
                const { container } = render(<FixedConfirmationToast />);
         | 
| 82 | 
            +
                expect(container.querySelector('.z_index_max')).toBeInTheDocument();
         | 
| 83 | 
            +
            });
         | 
| 84 | 
            +
             | 
| 85 | 
            +
            test('applies custom zIndex when provided', () => {
         | 
| 86 | 
            +
                const { container } = render(<FixedConfirmationToast zIndex={10} />);
         | 
| 87 | 
            +
                expect(container.querySelector('.z_index_10')).toBeInTheDocument();
         | 
| 78 88 | 
             
            });
         | 
| @@ -18,7 +18,7 @@ | |
| 18 18 |  | 
| 19 19 | 
             
                        if (submitButton) {
         | 
| 20 20 | 
             
                            let currentClass = submitButton.className;
         | 
| 21 | 
            -
                            let newClass = currentClass.replace(" | 
| 21 | 
            +
                            let newClass = currentClass.replace("pb_button_disabled pb_button_loading", "pb_button_enabled");
         | 
| 22 22 |  | 
| 23 23 | 
             
                            let cancelClass = cancelButton ? cancelButton.className : "";
         | 
| 24 24 | 
             
                            let newCancelClass = cancelClass.replace("_disabled", "_enabled");
         |