import * as React from 'react'; import styled from '@emotion/styled'; import { Checkbox as CheckboxBase, CheckboxProps } from '@lightspeed/flame/Checkbox'; import { Flex, Box } from '@lightspeed/flame/Core'; import { Text } from '@lightspeed/flame/Text'; import { themeGet } from '@styled-system/theme-get'; import { Th, Td, Tr, TrProps } from '../../../components/Table'; import BulkButton from './BulkButton'; import { Dropdown, DropdownList } from './Dropdown'; const Addon = styled(Flex)` border: 1px solid ${themeGet('buttonVariants.fill.neutral.borderColor')}; border-top-left-radius: ${themeGet('radii.radius-1')}; border-bottom-left-radius: ${themeGet('radii.radius-1')}; `; // Nasty hack const Checkbox = styled(CheckboxBase)` padding: 6px; input { height: 16px; } input + div { margin-right: 0px; } `; const Group = styled(Flex)` ${BulkButton as any} { border-top-left-radius: 0; border-bottom-left-radius: 0; margin-left: -1px; } `; export const BatchCheckbox: React.FC> = ({ children, ...restProps }) => ( {children} ); interface CheckboxWellProp extends React.ComponentPropsWithoutRef<'input'> { selectedItemsText: React.ReactNode; innerGroup: React.ReactNode; outerGroup: React.ReactNode; css: any; } export const CheckboxWell: React.FC = ({ selectedItemsText, innerGroup, outerGroup, ...restProps }) => ( {selectedItemsText} {innerGroup} {outerGroup} ); const ModdedTr = styled(Tr)` td:nth-of-type(2), th:nth-of-type(2) { padding-left: 0; } /* yolo this is what happens when you have random style changes across features + feature existence... */ th:nth-of-type(2) > .cr-table-icon-button { margin-left: -6px; } `; interface BatchSelectHeaderTrProps { selectedItemsText: React.ReactNode; innerGroup?: React.ReactNode; outerGroup?: React.ReactNode; itemsSelectedCount: number; checkboxProps: CheckboxProps; } export const BatchSelectHeaderTr: React.FC = ({ itemsSelectedCount, selectedItemsText, innerGroup, outerGroup, checkboxProps, children, ...restProps }) => { return !itemsSelectedCount ? ( {React.Children.map(children, (child, index) => { if (index === 0) { return ( {child} ); } return child; })} ) : ( ); }; interface BatchSelectTrProps extends TrProps { checkboxProps: CheckboxProps; } export const BatchSelectTr: React.FC = ({ checkboxProps, children, ...restProps }) => ( {React.Children.map(children, (child, index) => { if (index === 0) { return ( {child} ); } return child; })} ); export { Dropdown, DropdownList, BulkButton };