From 21b5e44c504aa463ed94dd06477f9c27a68080bc Mon Sep 17 00:00:00 2001 From: Rebeka Dekany <50901361+rebekadekany@users.noreply.github.com> Date: Fri, 23 Feb 2024 12:23:32 +0100 Subject: [PATCH] Merge pull request #16925 from overleaf/rd-dropdown-bootstrap5 Bootstrap-5 Dropdown menu component GitOrigin-RevId: 8a74f2341eebf953367ab73946d72e8aa7bd3c13 --- .../ui/components/bootstrap-5/button.tsx | 3 +- .../components/bootstrap-5/dropdown-menu.tsx | 69 +++++++++ .../components/bootstrap-5/split-button.tsx | 46 ++++++ .../ui/components/types/button-props.ts | 3 +- .../components/types/dropdown-menu-props.ts | 45 ++++++ .../ui/components/types/split-button-props.ts | 28 ++++ .../stories/ui/dropdown-menu.stories.tsx | 132 ++++++++++++++++++ .../stories/ui/split-button.stories.tsx | 34 +++++ .../bootstrap-5/foundations/elevation.scss | 15 ++ .../stylesheets/bootstrap-5/main-style.scss | 5 + .../bootstrap-5/scss/bootstrap.scss | 3 +- .../scss/components/dropdown-menu.scss | 106 ++++++++++++++ .../scss/components/split-button.scss | 9 ++ 13 files changed, 494 insertions(+), 4 deletions(-) create mode 100644 services/web/frontend/js/features/ui/components/bootstrap-5/dropdown-menu.tsx create mode 100644 services/web/frontend/js/features/ui/components/bootstrap-5/split-button.tsx create mode 100644 services/web/frontend/js/features/ui/components/types/dropdown-menu-props.ts create mode 100644 services/web/frontend/js/features/ui/components/types/split-button-props.ts create mode 100644 services/web/frontend/stories/ui/dropdown-menu.stories.tsx create mode 100644 services/web/frontend/stories/ui/split-button.stories.tsx create mode 100644 services/web/frontend/stylesheets/bootstrap-5/foundations/elevation.scss create mode 100644 services/web/frontend/stylesheets/bootstrap-5/scss/components/dropdown-menu.scss create mode 100644 services/web/frontend/stylesheets/bootstrap-5/scss/components/split-button.scss diff --git a/services/web/frontend/js/features/ui/components/bootstrap-5/button.tsx b/services/web/frontend/js/features/ui/components/bootstrap-5/button.tsx index c041bf984b..b64b390144 100644 --- a/services/web/frontend/js/features/ui/components/bootstrap-5/button.tsx +++ b/services/web/frontend/js/features/ui/components/bootstrap-5/button.tsx @@ -14,13 +14,14 @@ function Button({ disabled = false, loading = false, children, + className, }: ButtonProps) { const sizeClass = sizeClasses.get(size) return ( diff --git a/services/web/frontend/js/features/ui/components/bootstrap-5/dropdown-menu.tsx b/services/web/frontend/js/features/ui/components/bootstrap-5/dropdown-menu.tsx new file mode 100644 index 0000000000..e6f26cb4b5 --- /dev/null +++ b/services/web/frontend/js/features/ui/components/bootstrap-5/dropdown-menu.tsx @@ -0,0 +1,69 @@ +import React from 'react' +import { + Dropdown as B5Dropdown, + DropdownToggle as B5DropdownToggle, + DropdownMenu as B5DropdownMenu, + DropdownItem as B5DropdownItem, + DropdownDivider as B5DropdownDivider, +} from 'react-bootstrap-5' +import type { + DropdownProps, + DropdownItemProps, + DropdownToggleProps, + DropdownMenuProps, +} from '@/features/ui/components/types/dropdown-menu-props' +import MaterialIcon from '@/shared/components/material-icon' + +export function Dropdown({ ...props }: DropdownProps) { + return +} + +export function DropdownItem({ + active, + children, + description, + leadingIcon, + trailingIcon, + ...props +}: DropdownItemProps) { + const trailingIconType = active ? 'check' : trailingIcon + return ( +
  • + + {leadingIcon && ( + + )} + {children} + {trailingIconType && ( + + )} + {description && ( + {description} + )} + +
  • + ) +} + +export function DropdownToggle({ ...props }: DropdownToggleProps) { + return +} + +export function DropdownMenu({ as = 'ul', ...props }: DropdownMenuProps) { + return +} + +export function DropdownDivider() { + return