diff --git a/app/client/craco.build.config.js b/app/client/craco.build.config.js index cc57165f69..2ca83fa0f2 100644 --- a/app/client/craco.build.config.js +++ b/app/client/craco.build.config.js @@ -18,7 +18,7 @@ if (env === "PRODUCTION" || env === "STAGING") { auto: true }, deploy: { - env: REACT_APP_SENTRY_ENVIRONMENT + env: process.env.REACT_APP_SENTRY_ENVIRONMENT } }), ); diff --git a/app/client/src/components/designSystems/appsmith/CascadeFields.tsx b/app/client/src/components/designSystems/appsmith/CascadeFields.tsx index 1445ab5478..c5ca2a9bc0 100644 --- a/app/client/src/components/designSystems/appsmith/CascadeFields.tsx +++ b/app/client/src/components/designSystems/appsmith/CascadeFields.tsx @@ -19,6 +19,7 @@ import { DropdownOption, ReactTableFilter, } from "components/designSystems/appsmith/TableFilters"; +import { RenderOptionWrapper } from "components/designSystems/appsmith/TableStyledWrappers"; import { debounce } from "lodash"; const StyledRemoveIcon = styled( @@ -169,11 +170,35 @@ const operatorOptions: DropdownOption[] = [ { label: "AND", value: OperatorTypes.AND, type: "" }, ]; +const columnTypeNameMap: Record = { + [ColumnTypes.TEXT]: "Text", + [ColumnTypes.VIDEO]: "Video", + [ColumnTypes.IMAGE]: "Image", + [ColumnTypes.NUMBER]: "Num", + [ColumnTypes.DATE]: "Date", + [ColumnTypes.CURRENCY]: "Curr", + [ColumnTypes.TIME]: "Time", +}; + +const RenderOption = (props: { + type: string; + title: string; + active: boolean; +}) => { + return ( + +
{props.title}
+
{columnTypeNameMap[props.type as ColumnTypes]}
+
+ ); +}; + const RenderOptions = (props: { columns: DropdownOption[]; selectItem: (column: DropdownOption) => void; placeholder: string; value?: string | Condition; + showType?: boolean; className?: string; }) => { const [selectedValue, selectValue] = useState(props.placeholder); @@ -181,10 +206,19 @@ const RenderOptions = (props: { sections: [ { options: props.columns.map((column: DropdownOption) => { + const isActive = column.value === props.value; return { - content: column.label, + content: props.showType ? ( + + ) : ( + column.label + ), value: column.value, - active: column.value === props.value, + active: isActive, onSelect: () => { selectValue(column.label); props.selectItem(column); @@ -207,19 +241,19 @@ const RenderOptions = (props: { skin: Skin.LIGHT, }; useEffect(() => { - if (props.value && configs.sections[0].options) { - const selectedOptions = configs.sections[0].options.filter( + if (props.value && props.columns) { + const selectedOptions = props.columns.filter( i => i.value === props.value, ); if (selectedOptions && selectedOptions.length) { - selectValue(selectedOptions[0].content); + selectValue(selectedOptions[0].value); } else { selectValue(props.placeholder); } } else { selectValue(props.placeholder); } - }, [props.value, props.placeholder, configs.sections]); + }, [props.value, props.placeholder, props.columns]); return ; }; @@ -503,6 +537,7 @@ const Fields = (props: CascadeFieldProps & { state: CascadeFieldState }) => { columns={props.columns} selectItem={selectColumn} value={column} + showType placeholder="Attribute" className="t--table-filter-columns-dropdown" /> diff --git a/app/client/src/components/designSystems/appsmith/TableStyledWrappers.tsx b/app/client/src/components/designSystems/appsmith/TableStyledWrappers.tsx index 81a06d3955..6048971997 100644 --- a/app/client/src/components/designSystems/appsmith/TableStyledWrappers.tsx +++ b/app/client/src/components/designSystems/appsmith/TableStyledWrappers.tsx @@ -340,3 +340,25 @@ export const TableIconWrapper = styled.div<{ export const SortIconWrapper = styled.div<{ rotate: string }>` transform: ${props => (props.rotate === "true" ? "rotate(180deg)" : "none")}; `; + +export const RenderOptionWrapper = styled.div<{ selected: boolean }>` + display: flex; + justify-content: space-between; + align-items: center; + width: 150px; + background: ${props => props.selected && Colors.GREEN}; + position: relative; + .title { + color: ${props => (props.selected ? Colors.WHITE : Colors.OXFORD_BLUE)}; + width: 120px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + .type { + position: absolute; + left: 135px; + font-size: 12px !important; + color: ${props => (props.selected ? Colors.WHITE : Colors.BLUE_BAYOUX)}; + } +`;