PromucFlow_constructor/app/client/src/components/formControls/PaginationControl.tsx
Ayush Pahwa f100b5918d
fix: Where clause UI fixes (10406) (#10411)
* Replaced vh with vw, fixed logic for customStyles

* Removed console logs

* Updated width of the dropdown options

* Fixes where clause filter group delete icon placement

Co-authored-by: Irongade <adeoluayangade@yahoo.com>
2022-01-14 19:20:54 +05:30

127 lines
3.1 KiB
TypeScript

import React from "react";
import BaseControl, { ControlProps } from "./BaseControl";
import { ControlType } from "constants/PropertyControlConstants";
import FormControl from "pages/Editor/FormControl";
import FormLabel from "components/editorComponents/FormLabel";
import { Colors } from "constants/Colors";
import styled from "styled-components";
export const StyledFormLabel = styled(FormLabel)`
margin-top: 5px;
font-weight: 400;
font-size: 12px;
color: ${Colors.GREY_7};
line-height: 16px;
`;
export const FormControlContainer = styled.div`
display: flex;
flex-direction: column;
margin-bottom: 10px;
`;
// using query dynamic input text for both so user can dynamically change these values.
const valueFieldConfig: any = {
key: "value",
controlType: "QUERY_DYNAMIC_INPUT_TEXT",
placeholderText: "value",
};
const limitFieldConfig: any = {
...valueFieldConfig,
placeholderText: "20",
};
const offsetFieldConfig: any = {
...valueFieldConfig,
placeholderText: "0",
};
export function Pagination(props: {
label: string;
isValid: boolean;
validationMessage?: string;
placeholder?: string;
isRequired?: boolean;
name: string;
disabled?: boolean;
customStyles?: any;
configProperty: string;
formName: string;
}) {
const { configProperty, customStyles, formName, name } = props;
return (
<div data-cy={name} style={{ width: "20vw" }}>
{/* form control for Limit field */}
<FormControlContainer>
<FormControl
config={{
...limitFieldConfig,
label: "Limit",
customStyles,
configProperty: `${configProperty}.limit`,
}}
formName={formName}
/>
<StyledFormLabel>Limits the number of rows returned.</StyledFormLabel>
</FormControlContainer>
{/* form control for Offset field */}
<FormControlContainer>
<FormControl
config={{
...offsetFieldConfig,
label: "Offset",
customStyles,
configProperty: `${configProperty}.offset`,
}}
formName={formName}
/>
<StyledFormLabel>
No of rows that are skipped before starting to count.
</StyledFormLabel>
</FormControlContainer>
</div>
);
}
class PaginationControl extends BaseControl<PaginationControlProps> {
render() {
const {
configProperty, // JSON path for the pagination data
disabled,
formName, // Name of the form, used by redux-form lib to store the data in redux store
isValid,
label,
placeholderText,
validationMessage,
} = this.props;
return (
// pagination component
<Pagination
configProperty={configProperty}
disabled={disabled}
formName={formName}
isValid={isValid}
label={label}
name={configProperty}
placeholder={placeholderText}
validationMessage={validationMessage}
/>
);
}
getControlType(): ControlType {
return "PAGINATION";
}
}
export interface PaginationControlProps extends ControlProps {
placeholderText: string;
disabled?: boolean;
}
export default PaginationControl;