Skip to content

Feature/add styles #866

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 24 commits into from
May 10, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
select and cascader style updated
  • Loading branch information
MenamAfzal committed May 8, 2024
commit 25f955c47dd16c514b5f920d7dd26e4a4c5ca823
Original file line number Diff line number Diff line change
@@ -1,20 +1,39 @@
import { default as Cascader } from "antd/es/cascader";
import { CascaderStyleType } from "comps/controls/styleControlConstants";
import { CascaderStyleType, ChildrenMultiSelectStyleType } from "comps/controls/styleControlConstants";
import { blurMethod, focusMethod } from "comps/utils/methodUtils";
import { trans } from "i18n";
import styled from "styled-components";
import { UICompBuilder, withDefault } from "../../generators";
import { CommonNameConfig, NameConfig, withExposingConfigs } from "../../generators/withExposing";
import { CascaderChildren, CascaderPropertyView, defaultDataSource } from "./cascaderContants";
import { getStyle } from "./selectCompConstants";
import { refMethods } from "comps/generators/withMethodExposing";

const CascaderStyle = styled(Cascader)<{ $style: CascaderStyleType }>`
const CascaderStyle = styled(Cascader)<{ $style: CascaderStyleType,$childrenInputFieldStyle:ChildrenMultiSelectStyleType }>`
width: 100%;
font-family:"Montserrat";
${(props) => props.$style && getStyle(props.$style)}
${(props) => { return props.$style && { ...props.$style, 'border-radius': props.$style.radius } }}
`;

const DropdownRenderStyle = styled.div<{ $childrenInputFieldStyle: ChildrenMultiSelectStyleType }>`
background-color: ${props => props.$childrenInputFieldStyle?.background};
border: ${props => props.$childrenInputFieldStyle?.border};
border-style: ${props => props.$childrenInputFieldStyle?.borderStyle};
border-width: ${props => props.$childrenInputFieldStyle?.borderWidth};
border-radius: ${props => props.$childrenInputFieldStyle?.radius};
rotate: ${props => props.$childrenInputFieldStyle?.rotation};
margin: ${props => props.$childrenInputFieldStyle?.margin};
padding: ${props => props.$childrenInputFieldStyle?.padding};
.ant-cascader-menu-item-content{
font-size: ${props => props.$childrenInputFieldStyle?.textSize};
font-style: ${props => props.$childrenInputFieldStyle?.fontStyle};
font-family: ${props => props.$childrenInputFieldStyle?.fontFamily};
font-weight: ${props => props.$childrenInputFieldStyle?.textWeight};
text-transform: ${props => props.$childrenInputFieldStyle?.textTransform};
text-decoration: ${props => props.$childrenInputFieldStyle?.textDecoration};
color: ${props => props.$childrenInputFieldStyle?.text};
}
`

let CascaderBasicComp = (function () {
const childrenMap = CascaderChildren;

Expand All @@ -23,6 +42,7 @@ let CascaderBasicComp = (function () {
style: props.style,
labelStyle: props.labelStyle,
inputFieldStyle:props.inputFieldStyle,
childrenInputFieldStyle:props.childrenInputFieldStyle,
children: (
<CascaderStyle
ref={props.viewRef}
Expand All @@ -34,8 +54,14 @@ let CascaderBasicComp = (function () {
placeholder={props.placeholder}
showSearch={props.showSearch}
$style={props.inputFieldStyle}
$childrenInputFieldStyle={props.childrenInputFieldStyle}
onFocus={() => props.onEvent("focus")}
onBlur={() => props.onEvent("blur")}
dropdownRender={(menus: React.ReactNode) => (
<DropdownRenderStyle $childrenInputFieldStyle={props.childrenInputFieldStyle}>
{menus}
</DropdownRenderStyle>
)}
onChange={(value: (string | number)[]) => {
props.value.onChange(value as string[]);
props.onEvent("change");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { arrayStringExposingStateControl } from "comps/controls/codeStateControl
import { BoolControl } from "comps/controls/boolControl";
import { LabelControl } from "comps/controls/labelControl";
import { styleControl } from "comps/controls/styleControl";
import { CascaderStyle, InputFieldStyle, LabelStyle } from "comps/controls/styleControlConstants";
import { CascaderStyle, ChildrenMultiSelectStyle, InputFieldStyle, LabelStyle } from "comps/controls/styleControlConstants";
import {
allowClearPropertyView,
disabledPropertyView,
Expand Down Expand Up @@ -40,7 +40,8 @@ export const CascaderChildren = {
viewRef: RefControl<CascaderRef>,
margin: MarginControl,
padding: PaddingControl,
inputFieldStyle:styleControl(CascaderStyle)
inputFieldStyle:styleControl(CascaderStyle),
childrenInputFieldStyle:styleControl(ChildrenMultiSelectStyle)
};

export const CascaderPropertyView = (
Expand Down Expand Up @@ -83,6 +84,9 @@ export const CascaderPropertyView = (
<Section name={sectionNames.inputFieldStyle}>
{children.inputFieldStyle.getPropertyView()}
</Section>
<Section name={'Children Input Field Style'}>
{children.childrenInputFieldStyle.getPropertyView()}
</Section>
</>
)}
</>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { styleControl } from "comps/controls/styleControl";
import { InputFieldStyle, LabelStyle, MultiSelectStyle } from "comps/controls/styleControlConstants";
import { ChildrenMultiSelectStyle, InputFieldStyle, LabelStyle, MultiSelectStyle } from "comps/controls/styleControlConstants";
import { trans } from "i18n";
import { arrayStringExposingStateControl } from "../../controls/codeStateControl";
import { UICompBuilder } from "../../generators";
Expand All @@ -25,6 +25,7 @@ let MultiSelectBasicComp = (function () {
style: styleControl(InputFieldStyle),
labelStyle:styleControl(LabelStyle),
inputFieldStyle:styleControl(MultiSelectStyle),
childrenInputFieldStyle:styleControl(ChildrenMultiSelectStyle),
margin: MarginControl,
padding: PaddingControl,
};
Expand All @@ -40,6 +41,7 @@ let MultiSelectBasicComp = (function () {
style: props.style,
labelStyle: props.labelStyle,
inputFieldStyle:props.inputFieldStyle,
childrenInputFieldStyle:props.childrenInputFieldStyle,
children: (
<SelectUIView
{...props}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { styleControl } from "comps/controls/styleControl";
import { InputFieldStyle, LabelStyle, SelectStyle } from "comps/controls/styleControlConstants";
import { ChildrenMultiSelectStyle, InputFieldStyle, LabelStyle, SelectStyle } from "comps/controls/styleControlConstants";
import { trans } from "i18n";
import { stringExposingStateControl } from "../../controls/codeStateControl";
import { UICompBuilder } from "../../generators";
Expand Down Expand Up @@ -27,7 +27,8 @@ let SelectBasicComp = (function () {
value: stringExposingStateControl("value"),
style: styleControl(InputFieldStyle),
labelStyle: styleControl(LabelStyle),
inputFieldStyle: styleControl(SelectStyle)
inputFieldStyle: styleControl(SelectStyle),
childrenInputFieldStyle: styleControl(ChildrenMultiSelectStyle)
};
return new UICompBuilder(childrenMap, (props, dispatch) => {
const [
Expand All @@ -45,6 +46,7 @@ let SelectBasicComp = (function () {
style: props.style,
labelStyle: props.labelStyle,
inputFieldStyle:props.inputFieldStyle,
childrenInputFieldStyle:props.childrenInputFieldStyle,
children: (
<SelectUIView
{...props}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ import {
heightCalculator,

SelectStyle,
ChildrenMultiSelectStyleType,
} from "comps/controls/styleControlConstants";
import { stateComp, withDefault } from "../../generators";
import {
Expand Down Expand Up @@ -186,10 +187,25 @@ const Select = styled(AntdSelect) <{ $style: SelectStyleType & MultiSelectStyleT
${(props) => props.$style && getStyle(props.$style)}
`;

const DropdownStyled = styled.div<{ $style: MultiSelectStyleType }>`
${(props) => props.$style && getDropdownStyle(props.$style)}
const DropdownStyled = styled.div<{ $style: ChildrenMultiSelectStyleType }>`
background-color: ${props => props.$style?.background};
border: ${props => props.$style?.border};
border-style: ${props => props.$style?.borderStyle};
border-width: ${props => props.$style?.borderWidth};
border-radius: ${props => props.$style?.radius};
rotate: ${props => props.$style?.rotation};
margin: ${props => props.$style?.margin};
padding: ${props => props.$style?.padding};
.ant-select-item-option-content {
${(props) => `padding: ${props.$style.padding}`};
font-size: ${props => props.$style?.textSize};
font-style: ${props => props.$style?.fontStyle};
font-family: ${props => props.$style?.fontFamily};
font-weight: ${props => props.$style?.textWeight};
text-transform: ${props => props.$style?.textTransform};
color: ${props => props.$style?.text};
}
.option-label{
text-decoration: ${props => props.$style?.textDecoration} !important;
}
.option-label img {
min-width: 14px;
Expand Down Expand Up @@ -229,11 +245,12 @@ export const SelectUIView = (
mode?: "multiple" | "tags";
value: any;
style: SelectStyleType | MultiSelectStyleType;
childrenInputFieldStyle: ChildrenMultiSelectStyleType;
onChange: (value: any) => void;
dispatch: DispatchType;
}
) => (
<Select
) => {
return <Select
ref={props.viewRef}
mode={props.mode}
$style={props.style as SelectStyleType & MultiSelectStyleType}
Expand All @@ -246,7 +263,7 @@ export const SelectUIView = (
option?.label.toLowerCase().includes(input.toLowerCase())
}
dropdownRender={(originNode: ReactNode) => (
<DropdownStyled $style={props.style as MultiSelectStyleType}>
<DropdownStyled $style={props.childrenInputFieldStyle as ChildrenMultiSelectStyleType}>
{originNode}
</DropdownStyled>
)}
Expand Down Expand Up @@ -282,7 +299,7 @@ export const SelectUIView = (
</Select.Option>
))}
</Select>
);
}

export const SelectPropertyView = (
children: RecordConstructorToComp<
Expand All @@ -295,6 +312,7 @@ export const SelectPropertyView = (
style: { getPropertyView: () => ControlNode };
labelStyle: { getPropertyView: () => ControlNode };
inputFieldStyle: { getPropertyView: () => ControlNode };
childrenInputFieldStyle: { getPropertyView: () => ControlNode };
}
) => (
<>
Expand Down Expand Up @@ -343,6 +361,9 @@ export const SelectPropertyView = (
<Section name={sectionNames.inputFieldStyle}>
{children.inputFieldStyle.getPropertyView()}
</Section>
<Section name={'Children Input Field Styles'}>
{children.childrenInputFieldStyle.getPropertyView()}
</Section>
</>
)}
</>
Expand Down
10 changes: 6 additions & 4 deletions client/packages/lowcoder/src/comps/controls/labelControl.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ type LabelViewProps = Pick<FormItemProps, "required" | "help" | "validateStatus"
labelStyle?: Record<string, string>;
field?: Record<string, string>;
inputFieldStyle?: Record<string, string>;
childrenInputFieldStyle?: Record<string, string>;
};

const StyledStarIcon = styled(StarIcon)`
Expand Down Expand Up @@ -168,8 +169,9 @@ export const LabelControl = (function () {
align: dropdownControl(AlignOptions, "left"),
};

return new MultiCompBuilder(childrenMap, (props) => (args: LabelViewProps) => (
<LabelViewWrapper $style={args.style} inputFieldStyle={args.inputFieldStyle}>
return new MultiCompBuilder(childrenMap, (props) => (args: LabelViewProps) =>
{
return <LabelViewWrapper $style={args.style} inputFieldStyle={args.inputFieldStyle}>
<MainWrapper
$position={props.position}
$hasLabel={!!props.text}
Expand Down Expand Up @@ -246,8 +248,8 @@ export const LabelControl = (function () {
{args.help}
</HelpWrapper>
)}
</LabelViewWrapper>
))
</LabelViewWrapper>}
)
.setPropertyViewFn((children) => (
<Section name={trans("label")}>
{children.text.propertyView({ label: trans("labelProp.text") })}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -976,6 +976,18 @@ export const MultiSelectStyle = [
...ACCENT_VALIDATE,
] as const;

export const ChildrenMultiSelectStyle = [
...multiSelectCommon,
{
name: "multiIcon",
label: trans("style.multiIcon"),
depTheme: "primary",
depType: DEP_TYPE.SELF,
transformer: toSelf,
platform: "pc",
},
] as const;

export const TabContainerStyle = [
// Keep background related properties of container as STYLING_FIELDS_SEQUENCE has rest of the properties
...replaceAndMergeMultipleStyles([...ContainerStyle.filter((style) => ['border', 'radius', 'borderWidth', 'margin', 'padding'].includes(style.name) === false), ...STYLING_FIELDS_SEQUENCE], 'text', [{
Expand Down Expand Up @@ -1618,6 +1630,7 @@ export type RatingStyleType = StyleConfigType<typeof RatingStyle>;
export type SwitchStyleType = StyleConfigType<typeof SwitchStyle>;
export type SelectStyleType = StyleConfigType<typeof SelectStyle>;
export type MultiSelectStyleType = StyleConfigType<typeof MultiSelectStyle>;
export type ChildrenMultiSelectStyleType = StyleConfigType<typeof ChildrenMultiSelectStyle>;
export type TabContainerStyleType = StyleConfigType<typeof TabContainerStyle>;
export type ModalStyleType = StyleConfigType<typeof ModalStyle>;
export type CascaderStyleType = StyleConfigType<typeof CascaderStyle>;
Expand Down