packages/react-params/src/Holder.tsx
// Copyright 2017-2024 @polkadot/react-params authors & contributors
// SPDX-License-Identifier: Apache-2.0
import React from 'react';
import { styled } from '@polkadot/react-components';
interface Props {
children?: React.ReactNode;
className?: string;
withBorder?: boolean;
withExpander?: boolean;
withPadding?: boolean;
}
function Holder ({ children, className = '', withBorder, withExpander, withPadding }: Props): React.ReactElement<Props> {
return (
<StyledDiv className={`${className} ui--Params ${withBorder ? 'withBorder' : ''} ${withPadding ? 'withPadding' : ''} ${withExpander ? 'withExpander' : ''}`}>
{children}
</StyledDiv>
);
}
const StyledDiv = styled.div`
&.withBorder {
padding-left: 2rem;
.ui--Params-Content {
border-left: 1px dashed var(--border-input);
.ui--Params.withBorder {
padding-left: 0;
}
}
}
&.withExpander {
padding-left: 0.25rem;
}
&.withPadding {
padding-left: 4rem;
}
.ui--Param-composite .ui--row,
.ui--Param-composite .ui--row .ui--InputAddressSimple {
& > .ui--Labelled > label {
text-transform: none !important;
}
}
.ui--row {
flex-wrap: wrap;
}
.ui--Param-Address {
}
.ui--Params-Content {
box-sizing: border-box;
padding: 0;
.ui--Params-Content {
margin-left: 2rem;
}
}
.ui--Param-text {
display: inline-block;
font-size: var(--font-size-base);
line-height: 1.714rem;
overflow: hidden;
text-overflow: ellipsis;
}
.ui--Param-text .icon {
margin-right: 0.5rem !important;
}
.ui--Param-text * {
vertical-align: middle;
}
.ui--Param-text.nowrap {
white-space: nowrap;
}
.ui--Param-text.name {
color: rgba(0, 0, 0, .6);
font-style: italic;
}
.ui--Param-text + .ui--Param-text {
margin-left: 0.5rem;
}
.ui--Param-Vector-buttons {
text-align: right;
}
.ui--Param-BTreeMap-buttons {
text-align: right;
}
.ui--Param-composite {
position: relative;
.ui--Param-overlay {
position: absolute;
top: 0.5rem;
right: 3.5rem;
}
}
`;
export default React.memo(Holder);