Enable find records action + Implement readonly (#12636)
- Add readonly in context - Avoid using it in AdvancedFilters component directly. Keeping it workflow related <img width="495" alt="Capture d’écran 2025-06-16 à 18 23 34" src="https://github.com/user-attachments/assets/dfdfdb71-d5a9-4eed-8938-b06790c62bcd" />
This commit is contained in:
@ -1,13 +1,5 @@
|
|||||||
import { useGetFieldMetadataItemById } from '@/object-metadata/hooks/useGetFieldMetadataItemById';
|
import { useRecordFilterField } from '@/object-record/advanced-filter/hooks/useRecordFilterField';
|
||||||
import { getCompositeSubFieldLabel } from '@/object-record/object-filter-dropdown/utils/getCompositeSubFieldLabel';
|
|
||||||
import { isCompositeFieldType } from '@/object-record/object-filter-dropdown/utils/isCompositeFieldType';
|
|
||||||
import { currentRecordFiltersComponentState } from '@/object-record/record-filter/states/currentRecordFiltersComponentState';
|
|
||||||
import { isValidSubFieldName } from '@/settings/data-model/utils/isValidSubFieldName';
|
|
||||||
import { SelectControl } from '@/ui/input/components/SelectControl';
|
import { SelectControl } from '@/ui/input/components/SelectControl';
|
||||||
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValueV2';
|
|
||||||
import { isNonEmptyString } from '@sniptt/guards';
|
|
||||||
import { isDefined } from 'twenty-shared/utils';
|
|
||||||
import { useIcons } from 'twenty-ui/display';
|
|
||||||
|
|
||||||
type AdvancedFilterFieldSelectDropdownButtonClickableSelectProps = {
|
type AdvancedFilterFieldSelectDropdownButtonClickableSelectProps = {
|
||||||
recordFilterId: string;
|
recordFilterId: string;
|
||||||
@ -16,47 +8,14 @@ type AdvancedFilterFieldSelectDropdownButtonClickableSelectProps = {
|
|||||||
export const AdvancedFilterFieldSelectDropdownButtonClickableSelect = ({
|
export const AdvancedFilterFieldSelectDropdownButtonClickableSelect = ({
|
||||||
recordFilterId,
|
recordFilterId,
|
||||||
}: AdvancedFilterFieldSelectDropdownButtonClickableSelectProps) => {
|
}: AdvancedFilterFieldSelectDropdownButtonClickableSelectProps) => {
|
||||||
const currentRecordFilters = useRecoilComponentValueV2(
|
const { label, icon } = useRecordFilterField(recordFilterId);
|
||||||
currentRecordFiltersComponentState,
|
|
||||||
);
|
|
||||||
|
|
||||||
const recordFilter = currentRecordFilters.find(
|
|
||||||
(recordFilter) => recordFilter.id === recordFilterId,
|
|
||||||
);
|
|
||||||
|
|
||||||
const { getFieldMetadataItemById } = useGetFieldMetadataItemById();
|
|
||||||
|
|
||||||
const fieldMetadataItem = isNonEmptyString(recordFilter?.fieldMetadataId)
|
|
||||||
? getFieldMetadataItemById(recordFilter?.fieldMetadataId)
|
|
||||||
: undefined;
|
|
||||||
|
|
||||||
const { getIcon } = useIcons();
|
|
||||||
|
|
||||||
const fieldIcon = isDefined(fieldMetadataItem?.icon)
|
|
||||||
? getIcon(fieldMetadataItem?.icon)
|
|
||||||
: undefined;
|
|
||||||
|
|
||||||
const subFieldLabel =
|
|
||||||
isDefined(fieldMetadataItem) &&
|
|
||||||
isCompositeFieldType(fieldMetadataItem.type) &&
|
|
||||||
isNonEmptyString(recordFilter?.subFieldName) &&
|
|
||||||
isValidSubFieldName(recordFilter.subFieldName)
|
|
||||||
? getCompositeSubFieldLabel(
|
|
||||||
fieldMetadataItem.type,
|
|
||||||
recordFilter.subFieldName,
|
|
||||||
)
|
|
||||||
: '';
|
|
||||||
|
|
||||||
const fieldNameLabel = isNonEmptyString(subFieldLabel)
|
|
||||||
? `${recordFilter?.label} / ${subFieldLabel}`
|
|
||||||
: (recordFilter?.label ?? '');
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<SelectControl
|
<SelectControl
|
||||||
selectedOption={{
|
selectedOption={{
|
||||||
label: fieldNameLabel,
|
label,
|
||||||
value: null,
|
value: null,
|
||||||
Icon: fieldIcon,
|
Icon: icon,
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
|
|||||||
@ -0,0 +1,51 @@
|
|||||||
|
import { useGetFieldMetadataItemById } from '@/object-metadata/hooks/useGetFieldMetadataItemById';
|
||||||
|
import { getCompositeSubFieldLabel } from '@/object-record/object-filter-dropdown/utils/getCompositeSubFieldLabel';
|
||||||
|
import { isCompositeFieldType } from '@/object-record/object-filter-dropdown/utils/isCompositeFieldType';
|
||||||
|
import { currentRecordFiltersComponentState } from '@/object-record/record-filter/states/currentRecordFiltersComponentState';
|
||||||
|
import { isValidSubFieldName } from '@/settings/data-model/utils/isValidSubFieldName';
|
||||||
|
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValueV2';
|
||||||
|
import { isNonEmptyString } from '@sniptt/guards';
|
||||||
|
import { isDefined } from 'twenty-shared/utils';
|
||||||
|
import { useIcons } from 'twenty-ui/display';
|
||||||
|
|
||||||
|
export const useRecordFilterField = (recordFilterId: string) => {
|
||||||
|
const currentRecordFilters = useRecoilComponentValueV2(
|
||||||
|
currentRecordFiltersComponentState,
|
||||||
|
);
|
||||||
|
|
||||||
|
const recordFilter = currentRecordFilters.find(
|
||||||
|
(recordFilter) => recordFilter.id === recordFilterId,
|
||||||
|
);
|
||||||
|
|
||||||
|
const { getFieldMetadataItemById } = useGetFieldMetadataItemById();
|
||||||
|
|
||||||
|
const fieldMetadataItem = isNonEmptyString(recordFilter?.fieldMetadataId)
|
||||||
|
? getFieldMetadataItemById(recordFilter?.fieldMetadataId)
|
||||||
|
: undefined;
|
||||||
|
|
||||||
|
const { getIcon } = useIcons();
|
||||||
|
|
||||||
|
const icon = isDefined(fieldMetadataItem?.icon)
|
||||||
|
? getIcon(fieldMetadataItem?.icon)
|
||||||
|
: undefined;
|
||||||
|
|
||||||
|
const subFieldLabel =
|
||||||
|
isDefined(fieldMetadataItem) &&
|
||||||
|
isCompositeFieldType(fieldMetadataItem.type) &&
|
||||||
|
isNonEmptyString(recordFilter?.subFieldName) &&
|
||||||
|
isValidSubFieldName(recordFilter.subFieldName)
|
||||||
|
? getCompositeSubFieldLabel(
|
||||||
|
fieldMetadataItem.type,
|
||||||
|
recordFilter.subFieldName,
|
||||||
|
)
|
||||||
|
: '';
|
||||||
|
|
||||||
|
const label = isNonEmptyString(subFieldLabel)
|
||||||
|
? `${recordFilter?.label} / ${subFieldLabel}`
|
||||||
|
: (recordFilter?.label ?? '');
|
||||||
|
|
||||||
|
return {
|
||||||
|
label,
|
||||||
|
icon,
|
||||||
|
};
|
||||||
|
};
|
||||||
@ -3,6 +3,7 @@ import { createContext } from 'react';
|
|||||||
type AdvancedFilterContextType = {
|
type AdvancedFilterContextType = {
|
||||||
onUpdate?: () => void;
|
onUpdate?: () => void;
|
||||||
isWorkflowFindRecords?: boolean;
|
isWorkflowFindRecords?: boolean;
|
||||||
|
readonly?: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const AdvancedFilterContext = createContext<AdvancedFilterContextType>(
|
export const AdvancedFilterContext = createContext<AdvancedFilterContextType>(
|
||||||
|
|||||||
@ -23,10 +23,9 @@ export const RECORD_ACTIONS: Array<{
|
|||||||
type: 'DELETE_RECORD',
|
type: 'DELETE_RECORD',
|
||||||
icon: 'IconTrash',
|
icon: 'IconTrash',
|
||||||
},
|
},
|
||||||
// TODO: Add search records action
|
{
|
||||||
// {
|
label: 'Search Records',
|
||||||
// label: 'Search Records',
|
type: 'FIND_RECORDS',
|
||||||
// type: 'FIND_RECORDS',
|
icon: 'IconSearch',
|
||||||
// icon: 'IconSearch',
|
},
|
||||||
// },
|
|
||||||
];
|
];
|
||||||
|
|||||||
@ -0,0 +1,23 @@
|
|||||||
|
import { useRecordFilterField } from '@/object-record/advanced-filter/hooks/useRecordFilterField';
|
||||||
|
import { SelectControl } from '@/ui/input/components/SelectControl';
|
||||||
|
|
||||||
|
type WorkflowAdvancedFilterFieldSelectDisabledProps = {
|
||||||
|
recordFilterId: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const WorkflowAdvancedFilterFieldSelectDisabled = ({
|
||||||
|
recordFilterId,
|
||||||
|
}: WorkflowAdvancedFilterFieldSelectDisabledProps) => {
|
||||||
|
const { label, icon } = useRecordFilterField(recordFilterId);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<SelectControl
|
||||||
|
selectedOption={{
|
||||||
|
label,
|
||||||
|
value: null,
|
||||||
|
Icon: icon,
|
||||||
|
}}
|
||||||
|
isDisabled
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
};
|
||||||
@ -1,4 +1,5 @@
|
|||||||
import { formatFieldMetadataItemAsFieldDefinition } from '@/object-metadata/utils/formatFieldMetadataItemAsFieldDefinition';
|
import { formatFieldMetadataItemAsFieldDefinition } from '@/object-metadata/utils/formatFieldMetadataItemAsFieldDefinition';
|
||||||
|
import { AdvancedFilterContext } from '@/object-record/advanced-filter/states/context/AdvancedFilterContext';
|
||||||
import { shouldShowFilterTextInput } from '@/object-record/advanced-filter/utils/shouldShowFilterTextInput';
|
import { shouldShowFilterTextInput } from '@/object-record/advanced-filter/utils/shouldShowFilterTextInput';
|
||||||
import { useApplyObjectFilterDropdownFilterValue } from '@/object-record/object-filter-dropdown/hooks/useApplyObjectFilterDropdownFilterValue';
|
import { useApplyObjectFilterDropdownFilterValue } from '@/object-record/object-filter-dropdown/hooks/useApplyObjectFilterDropdownFilterValue';
|
||||||
import { fieldMetadataItemUsedInDropdownComponentSelector } from '@/object-record/object-filter-dropdown/states/fieldMetadataItemUsedInDropdownComponentSelector';
|
import { fieldMetadataItemUsedInDropdownComponentSelector } from '@/object-record/object-filter-dropdown/states/fieldMetadataItemUsedInDropdownComponentSelector';
|
||||||
@ -18,6 +19,7 @@ import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/
|
|||||||
import { WorkflowAdvancedFilterValueFormCompositeFieldInput } from '@/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowAdvancedFilterValueFormCompositeFieldInput';
|
import { WorkflowAdvancedFilterValueFormCompositeFieldInput } from '@/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowAdvancedFilterValueFormCompositeFieldInput';
|
||||||
import { WorkflowVariablePicker } from '@/workflow/workflow-variables/components/WorkflowVariablePicker';
|
import { WorkflowVariablePicker } from '@/workflow/workflow-variables/components/WorkflowVariablePicker';
|
||||||
import { isObject } from '@sniptt/guards';
|
import { isObject } from '@sniptt/guards';
|
||||||
|
import { useContext } from 'react';
|
||||||
import { FieldMetadataType } from 'twenty-shared/types';
|
import { FieldMetadataType } from 'twenty-shared/types';
|
||||||
import { isDefined } from 'twenty-shared/utils';
|
import { isDefined } from 'twenty-shared/utils';
|
||||||
import { JsonValue } from 'type-fest';
|
import { JsonValue } from 'type-fest';
|
||||||
@ -27,6 +29,8 @@ export const WorkflowAdvancedFilterValueFormInput = ({
|
|||||||
}: {
|
}: {
|
||||||
recordFilterId: string;
|
recordFilterId: string;
|
||||||
}) => {
|
}) => {
|
||||||
|
const { readonly } = useContext(AdvancedFilterContext);
|
||||||
|
|
||||||
const currentRecordFilters = useRecoilComponentValueV2(
|
const currentRecordFilters = useRecoilComponentValueV2(
|
||||||
currentRecordFiltersComponentState,
|
currentRecordFiltersComponentState,
|
||||||
);
|
);
|
||||||
@ -99,6 +103,7 @@ export const WorkflowAdvancedFilterValueFormInput = ({
|
|||||||
label={''}
|
label={''}
|
||||||
defaultValue={recordFilter.value}
|
defaultValue={recordFilter.value}
|
||||||
onChange={handleChange}
|
onChange={handleChange}
|
||||||
|
readonly={readonly}
|
||||||
VariablePicker={WorkflowVariablePicker}
|
VariablePicker={WorkflowVariablePicker}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
@ -123,6 +128,7 @@ export const WorkflowAdvancedFilterValueFormInput = ({
|
|||||||
label={''}
|
label={''}
|
||||||
defaultValue={recordFilter.value}
|
defaultValue={recordFilter.value}
|
||||||
onChange={handleChange}
|
onChange={handleChange}
|
||||||
|
readonly={readonly}
|
||||||
VariablePicker={WorkflowVariablePicker}
|
VariablePicker={WorkflowVariablePicker}
|
||||||
options={metadata?.options ?? []}
|
options={metadata?.options ?? []}
|
||||||
/>
|
/>
|
||||||
@ -140,6 +146,7 @@ export const WorkflowAdvancedFilterValueFormInput = ({
|
|||||||
field={field}
|
field={field}
|
||||||
defaultValue={recordFilter.value}
|
defaultValue={recordFilter.value}
|
||||||
onChange={handleChange}
|
onChange={handleChange}
|
||||||
|
readonly={readonly}
|
||||||
// VariablePicker is not supported for date filters yet
|
// VariablePicker is not supported for date filters yet
|
||||||
VariablePicker={
|
VariablePicker={
|
||||||
isFilterableByDateValue ? undefined : WorkflowVariablePicker
|
isFilterableByDateValue ? undefined : WorkflowVariablePicker
|
||||||
|
|||||||
@ -1,7 +1,13 @@
|
|||||||
import { AdvancedFilterLogicalOperatorDropdown } from '@/object-record/advanced-filter/components/AdvancedFilterLogicalOperatorDropdown';
|
import { AdvancedFilterLogicalOperatorDropdown } from '@/object-record/advanced-filter/components/AdvancedFilterLogicalOperatorDropdown';
|
||||||
|
import { ADVANCED_FILTER_LOGICAL_OPERATOR_OPTIONS } from '@/object-record/advanced-filter/constants/AdvancedFilterLogicalOperatorOptions';
|
||||||
|
import { DEFAULT_ADVANCED_FILTER_DROPDOWN_OFFSET } from '@/object-record/advanced-filter/constants/DefaultAdvancedFilterDropdownOffset';
|
||||||
|
import { AdvancedFilterContext } from '@/object-record/advanced-filter/states/context/AdvancedFilterContext';
|
||||||
import { RecordFilterGroup } from '@/object-record/record-filter-group/types/RecordFilterGroup';
|
import { RecordFilterGroup } from '@/object-record/record-filter-group/types/RecordFilterGroup';
|
||||||
|
import { Select } from '@/ui/input/components/Select';
|
||||||
|
import { GenericDropdownContentWidth } from '@/ui/layout/dropdown/constants/GenericDropdownContentWidth';
|
||||||
|
|
||||||
import styled from '@emotion/styled';
|
import styled from '@emotion/styled';
|
||||||
|
import { useContext } from 'react';
|
||||||
import { capitalize } from 'twenty-shared/utils';
|
import { capitalize } from 'twenty-shared/utils';
|
||||||
|
|
||||||
const StyledText = styled.div`
|
const StyledText = styled.div`
|
||||||
@ -26,14 +32,28 @@ export const WorkflowAdvancedFilterLogicalOperatorCell = ({
|
|||||||
index,
|
index,
|
||||||
recordFilterGroup,
|
recordFilterGroup,
|
||||||
}: WorkflowAdvancedFilterLogicalOperatorCellProps) => {
|
}: WorkflowAdvancedFilterLogicalOperatorCellProps) => {
|
||||||
|
const { readonly } = useContext(AdvancedFilterContext);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<StyledContainer>
|
<StyledContainer>
|
||||||
{index === 0 ? (
|
{index === 0 ? (
|
||||||
<StyledText>Where</StyledText>
|
<StyledText>Where</StyledText>
|
||||||
) : index === 1 ? (
|
) : index === 1 ? (
|
||||||
<AdvancedFilterLogicalOperatorDropdown
|
readonly ? (
|
||||||
recordFilterGroup={recordFilterGroup}
|
<Select
|
||||||
/>
|
fullWidth
|
||||||
|
dropdownWidth={GenericDropdownContentWidth.Narrow}
|
||||||
|
dropdownId={`advanced-filter-logical-operator-${recordFilterGroup.id}`}
|
||||||
|
value={recordFilterGroup.logicalOperator}
|
||||||
|
options={ADVANCED_FILTER_LOGICAL_OPERATOR_OPTIONS}
|
||||||
|
dropdownOffset={DEFAULT_ADVANCED_FILTER_DROPDOWN_OFFSET}
|
||||||
|
disabled
|
||||||
|
/>
|
||||||
|
) : (
|
||||||
|
<AdvancedFilterLogicalOperatorDropdown
|
||||||
|
recordFilterGroup={recordFilterGroup}
|
||||||
|
/>
|
||||||
|
)
|
||||||
) : (
|
) : (
|
||||||
<StyledText>
|
<StyledText>
|
||||||
{capitalize(recordFilterGroup.logicalOperator.toLowerCase())}
|
{capitalize(recordFilterGroup.logicalOperator.toLowerCase())}
|
||||||
|
|||||||
@ -1,14 +1,17 @@
|
|||||||
import { AdvancedFilterFieldSelectDropdownButton } from '@/object-record/advanced-filter/components/AdvancedFilterFieldSelectDropdownButton';
|
import { AdvancedFilterFieldSelectDropdownButton } from '@/object-record/advanced-filter/components/AdvancedFilterFieldSelectDropdownButton';
|
||||||
import { AdvancedFilterRecordFilterOptionsDropdown } from '@/object-record/advanced-filter/components/AdvancedFilterRecordFilterOptionsDropdown';
|
import { AdvancedFilterRecordFilterOptionsDropdown } from '@/object-record/advanced-filter/components/AdvancedFilterRecordFilterOptionsDropdown';
|
||||||
|
import { AdvancedFilterContext } from '@/object-record/advanced-filter/states/context/AdvancedFilterContext';
|
||||||
import { getAdvancedFilterObjectFilterDropdownComponentInstanceId } from '@/object-record/advanced-filter/utils/getAdvancedFilterObjectFilterDropdownComponentInstanceId';
|
import { getAdvancedFilterObjectFilterDropdownComponentInstanceId } from '@/object-record/advanced-filter/utils/getAdvancedFilterObjectFilterDropdownComponentInstanceId';
|
||||||
import { ObjectFilterDropdownComponentInstanceContext } from '@/object-record/object-filter-dropdown/states/contexts/ObjectFilterDropdownComponentInstanceContext';
|
import { ObjectFilterDropdownComponentInstanceContext } from '@/object-record/object-filter-dropdown/states/contexts/ObjectFilterDropdownComponentInstanceContext';
|
||||||
import { RecordFilterGroup } from '@/object-record/record-filter-group/types/RecordFilterGroup';
|
import { RecordFilterGroup } from '@/object-record/record-filter-group/types/RecordFilterGroup';
|
||||||
import { RecordFilter } from '@/object-record/record-filter/types/RecordFilter';
|
import { RecordFilter } from '@/object-record/record-filter/types/RecordFilter';
|
||||||
import { WorkflowAdvancedFilterDropdownColumn } from '@/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowAdvancedFilterDropdownColumn';
|
import { WorkflowAdvancedFilterDropdownColumn } from '@/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowAdvancedFilterDropdownColumn';
|
||||||
|
import { WorkflowAdvancedFilterFieldSelectDisabled } from '@/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowAdvancedFilterFieldSelectDisabled';
|
||||||
import { WorkflowAdvancedFilterValueFormInput } from '@/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowAdvancedFilterFormInput';
|
import { WorkflowAdvancedFilterValueFormInput } from '@/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowAdvancedFilterFormInput';
|
||||||
import { WorkflowAdvancedFilterLogicalOperatorCell } from '@/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowAdvancedFilterLogicalOperatorCell';
|
import { WorkflowAdvancedFilterLogicalOperatorCell } from '@/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowAdvancedFilterLogicalOperatorCell';
|
||||||
import { WorkflowAdvancedFilterRecordFilterOperandSelect } from '@/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowAdvancedFilterRecordFilterOperandSelect';
|
import { WorkflowAdvancedFilterRecordFilterOperandSelect } from '@/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowAdvancedFilterRecordFilterOperandSelect';
|
||||||
import styled from '@emotion/styled';
|
import styled from '@emotion/styled';
|
||||||
|
import { useContext } from 'react';
|
||||||
|
|
||||||
const StyledContainer = styled.div`
|
const StyledContainer = styled.div`
|
||||||
display: flex;
|
display: flex;
|
||||||
@ -26,6 +29,8 @@ export const WorkflowAdvancedFilterRecordFilterColumn = ({
|
|||||||
recordFilter: RecordFilter;
|
recordFilter: RecordFilter;
|
||||||
recordFilterIndex: number;
|
recordFilterIndex: number;
|
||||||
}) => {
|
}) => {
|
||||||
|
const { readonly } = useContext(AdvancedFilterContext);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ObjectFilterDropdownComponentInstanceContext.Provider
|
<ObjectFilterDropdownComponentInstanceContext.Provider
|
||||||
value={{
|
value={{
|
||||||
@ -40,13 +45,21 @@ export const WorkflowAdvancedFilterRecordFilterColumn = ({
|
|||||||
index={recordFilterIndex}
|
index={recordFilterIndex}
|
||||||
recordFilterGroup={recordFilterGroup}
|
recordFilterGroup={recordFilterGroup}
|
||||||
/>
|
/>
|
||||||
<AdvancedFilterRecordFilterOptionsDropdown
|
{!readonly && (
|
||||||
|
<AdvancedFilterRecordFilterOptionsDropdown
|
||||||
|
recordFilterId={recordFilter.id}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
</StyledContainer>
|
||||||
|
{readonly ? (
|
||||||
|
<WorkflowAdvancedFilterFieldSelectDisabled
|
||||||
recordFilterId={recordFilter.id}
|
recordFilterId={recordFilter.id}
|
||||||
/>
|
/>
|
||||||
</StyledContainer>
|
) : (
|
||||||
<AdvancedFilterFieldSelectDropdownButton
|
<AdvancedFilterFieldSelectDropdownButton
|
||||||
recordFilterId={recordFilter.id}
|
recordFilterId={recordFilter.id}
|
||||||
/>
|
/>
|
||||||
|
)}
|
||||||
<WorkflowAdvancedFilterRecordFilterOperandSelect
|
<WorkflowAdvancedFilterRecordFilterOperandSelect
|
||||||
recordFilterId={recordFilter.id}
|
recordFilterId={recordFilter.id}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@ -1,8 +1,10 @@
|
|||||||
import { AdvancedFilterAddFilterRuleSelect } from '@/object-record/advanced-filter/components/AdvancedFilterAddFilterRuleSelect';
|
import { AdvancedFilterAddFilterRuleSelect } from '@/object-record/advanced-filter/components/AdvancedFilterAddFilterRuleSelect';
|
||||||
|
|
||||||
import { useChildRecordFiltersAndRecordFilterGroups } from '@/object-record/advanced-filter/hooks/useChildRecordFiltersAndRecordFilterGroups';
|
import { useChildRecordFiltersAndRecordFilterGroups } from '@/object-record/advanced-filter/hooks/useChildRecordFiltersAndRecordFilterGroups';
|
||||||
|
import { AdvancedFilterContext } from '@/object-record/advanced-filter/states/context/AdvancedFilterContext';
|
||||||
import { WorkflowAdvancedFilterRecordFilterColumn } from '@/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowAdvancedFilterRecordFilterColumn';
|
import { WorkflowAdvancedFilterRecordFilterColumn } from '@/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowAdvancedFilterRecordFilterColumn';
|
||||||
import styled from '@emotion/styled';
|
import styled from '@emotion/styled';
|
||||||
|
import { useContext } from 'react';
|
||||||
import { isDefined } from 'twenty-shared/utils';
|
import { isDefined } from 'twenty-shared/utils';
|
||||||
|
|
||||||
const StyledContainer = styled.div<{ isGrayBackground?: boolean }>`
|
const StyledContainer = styled.div<{ isGrayBackground?: boolean }>`
|
||||||
@ -25,6 +27,7 @@ type WorkflowAdvancedFilterRecordFilterGroupChildrenProps = {
|
|||||||
export const WorkflowAdvancedFilterRecordFilterGroupChildren = ({
|
export const WorkflowAdvancedFilterRecordFilterGroupChildren = ({
|
||||||
recordFilterGroupId,
|
recordFilterGroupId,
|
||||||
}: WorkflowAdvancedFilterRecordFilterGroupChildrenProps) => {
|
}: WorkflowAdvancedFilterRecordFilterGroupChildrenProps) => {
|
||||||
|
const { readonly } = useContext(AdvancedFilterContext);
|
||||||
const { currentRecordFilterGroup, childRecordFilters } =
|
const { currentRecordFilterGroup, childRecordFilters } =
|
||||||
useChildRecordFiltersAndRecordFilterGroups({
|
useChildRecordFiltersAndRecordFilterGroups({
|
||||||
recordFilterGroupId,
|
recordFilterGroupId,
|
||||||
@ -48,9 +51,11 @@ export const WorkflowAdvancedFilterRecordFilterGroupChildren = ({
|
|||||||
recordFilterGroup={currentRecordFilterGroup}
|
recordFilterGroup={currentRecordFilterGroup}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
<AdvancedFilterAddFilterRuleSelect
|
{!readonly && (
|
||||||
recordFilterGroup={currentRecordFilterGroup}
|
<AdvancedFilterAddFilterRuleSelect
|
||||||
/>
|
recordFilterGroup={currentRecordFilterGroup}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
</StyledContainer>
|
</StyledContainer>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,9 +1,11 @@
|
|||||||
import { AdvancedFilterRecordFilterGroupOptionsDropdown } from '@/object-record/advanced-filter/components/AdvancedFilterRecordFilterGroupOptionsDropdown';
|
import { AdvancedFilterRecordFilterGroupOptionsDropdown } from '@/object-record/advanced-filter/components/AdvancedFilterRecordFilterGroupOptionsDropdown';
|
||||||
|
import { AdvancedFilterContext } from '@/object-record/advanced-filter/states/context/AdvancedFilterContext';
|
||||||
import { RecordFilterGroup } from '@/object-record/record-filter-group/types/RecordFilterGroup';
|
import { RecordFilterGroup } from '@/object-record/record-filter-group/types/RecordFilterGroup';
|
||||||
import { WorkflowAdvancedFilterDropdownColumn } from '@/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowAdvancedFilterDropdownColumn';
|
import { WorkflowAdvancedFilterDropdownColumn } from '@/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowAdvancedFilterDropdownColumn';
|
||||||
import { WorkflowAdvancedFilterLogicalOperatorCell } from '@/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowAdvancedFilterLogicalOperatorCell';
|
import { WorkflowAdvancedFilterLogicalOperatorCell } from '@/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowAdvancedFilterLogicalOperatorCell';
|
||||||
import { WorkflowAdvancedFilterRecordFilterGroupChildren } from '@/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowAdvancedFilterRecordFilterGroupChildren';
|
import { WorkflowAdvancedFilterRecordFilterGroupChildren } from '@/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowAdvancedFilterRecordFilterGroupChildren';
|
||||||
import styled from '@emotion/styled';
|
import styled from '@emotion/styled';
|
||||||
|
import { useContext } from 'react';
|
||||||
|
|
||||||
const StyledContainer = styled.div`
|
const StyledContainer = styled.div`
|
||||||
display: flex;
|
display: flex;
|
||||||
@ -21,6 +23,8 @@ export const WorkflowAdvancedFilterRecordFilterGroupColumn = ({
|
|||||||
recordFilterGroup: RecordFilterGroup;
|
recordFilterGroup: RecordFilterGroup;
|
||||||
recordFilterGroupIndex: number;
|
recordFilterGroupIndex: number;
|
||||||
}) => {
|
}) => {
|
||||||
|
const { readonly } = useContext(AdvancedFilterContext);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<WorkflowAdvancedFilterDropdownColumn>
|
<WorkflowAdvancedFilterDropdownColumn>
|
||||||
<StyledContainer>
|
<StyledContainer>
|
||||||
@ -28,9 +32,11 @@ export const WorkflowAdvancedFilterRecordFilterGroupColumn = ({
|
|||||||
index={recordFilterGroupIndex}
|
index={recordFilterGroupIndex}
|
||||||
recordFilterGroup={parentRecordFilterGroup}
|
recordFilterGroup={parentRecordFilterGroup}
|
||||||
/>
|
/>
|
||||||
<AdvancedFilterRecordFilterGroupOptionsDropdown
|
{!readonly && (
|
||||||
recordFilterGroupId={recordFilterGroup.id}
|
<AdvancedFilterRecordFilterGroupOptionsDropdown
|
||||||
/>
|
recordFilterGroupId={recordFilterGroup.id}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
</StyledContainer>
|
</StyledContainer>
|
||||||
<WorkflowAdvancedFilterRecordFilterGroupChildren
|
<WorkflowAdvancedFilterRecordFilterGroupChildren
|
||||||
recordFilterGroupId={recordFilterGroup.id}
|
recordFilterGroupId={recordFilterGroup.id}
|
||||||
|
|||||||
@ -1,10 +1,12 @@
|
|||||||
import { AdvancedFilterRecordFilterOperandSelectContent } from '@/object-record/advanced-filter/components/AdvancedFilterRecordFilterOperandSelectContent';
|
import { AdvancedFilterRecordFilterOperandSelectContent } from '@/object-record/advanced-filter/components/AdvancedFilterRecordFilterOperandSelectContent';
|
||||||
|
import { AdvancedFilterContext } from '@/object-record/advanced-filter/states/context/AdvancedFilterContext';
|
||||||
import { getOperandLabel } from '@/object-record/object-filter-dropdown/utils/getOperandLabel';
|
import { getOperandLabel } from '@/object-record/object-filter-dropdown/utils/getOperandLabel';
|
||||||
import { currentRecordFiltersComponentState } from '@/object-record/record-filter/states/currentRecordFiltersComponentState';
|
import { currentRecordFiltersComponentState } from '@/object-record/record-filter/states/currentRecordFiltersComponentState';
|
||||||
import { RecordFilterOperand } from '@/object-record/record-filter/types/RecordFilterOperand';
|
import { RecordFilterOperand } from '@/object-record/record-filter/types/RecordFilterOperand';
|
||||||
import { getRecordFilterOperands } from '@/object-record/record-filter/utils/getRecordFilterOperands';
|
import { getRecordFilterOperands } from '@/object-record/record-filter/utils/getRecordFilterOperands';
|
||||||
import { SelectControl } from '@/ui/input/components/SelectControl';
|
import { SelectControl } from '@/ui/input/components/SelectControl';
|
||||||
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValueV2';
|
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValueV2';
|
||||||
|
import { useContext } from 'react';
|
||||||
import { isDefined } from 'twenty-shared/utils';
|
import { isDefined } from 'twenty-shared/utils';
|
||||||
|
|
||||||
type WorkflowAdvancedFilterRecordFilterOperandSelectProps = {
|
type WorkflowAdvancedFilterRecordFilterOperandSelectProps = {
|
||||||
@ -14,6 +16,7 @@ type WorkflowAdvancedFilterRecordFilterOperandSelectProps = {
|
|||||||
export const WorkflowAdvancedFilterRecordFilterOperandSelect = ({
|
export const WorkflowAdvancedFilterRecordFilterOperandSelect = ({
|
||||||
recordFilterId,
|
recordFilterId,
|
||||||
}: WorkflowAdvancedFilterRecordFilterOperandSelectProps) => {
|
}: WorkflowAdvancedFilterRecordFilterOperandSelectProps) => {
|
||||||
|
const { readonly } = useContext(AdvancedFilterContext);
|
||||||
const currentRecordFilters = useRecoilComponentValueV2(
|
const currentRecordFilters = useRecoilComponentValueV2(
|
||||||
currentRecordFiltersComponentState,
|
currentRecordFiltersComponentState,
|
||||||
);
|
);
|
||||||
@ -22,7 +25,7 @@ export const WorkflowAdvancedFilterRecordFilterOperandSelect = ({
|
|||||||
(recordFilter) => recordFilter.id === recordFilterId,
|
(recordFilter) => recordFilter.id === recordFilterId,
|
||||||
);
|
);
|
||||||
|
|
||||||
const isDisabled = !filter?.fieldMetadataId;
|
const isDisabled = !filter?.fieldMetadataId || readonly;
|
||||||
|
|
||||||
const filterType = filter?.type;
|
const filterType = filter?.type;
|
||||||
|
|
||||||
@ -33,7 +36,7 @@ export const WorkflowAdvancedFilterRecordFilterOperandSelect = ({
|
|||||||
}).filter((operand) => operand !== RecordFilterOperand.IsRelative)
|
}).filter((operand) => operand !== RecordFilterOperand.IsRelative)
|
||||||
: [];
|
: [];
|
||||||
|
|
||||||
if (isDisabled) {
|
if (isDisabled === true) {
|
||||||
return (
|
return (
|
||||||
<SelectControl
|
<SelectControl
|
||||||
selectedOption={{
|
selectedOption={{
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
import { AdvancedFilterContext } from '@/object-record/advanced-filter/states/context/AdvancedFilterContext';
|
||||||
import { subFieldNameUsedInDropdownComponentState } from '@/object-record/object-filter-dropdown/states/subFieldNameUsedInDropdownComponentState';
|
import { subFieldNameUsedInDropdownComponentState } from '@/object-record/object-filter-dropdown/states/subFieldNameUsedInDropdownComponentState';
|
||||||
import { FormCountryMultiSelectInput } from '@/object-record/record-field/form-types/components/FormCountryMultiSelectInput';
|
import { FormCountryMultiSelectInput } from '@/object-record/record-field/form-types/components/FormCountryMultiSelectInput';
|
||||||
import { FormMultiSelectFieldInput } from '@/object-record/record-field/form-types/components/FormMultiSelectFieldInput';
|
import { FormMultiSelectFieldInput } from '@/object-record/record-field/form-types/components/FormMultiSelectFieldInput';
|
||||||
@ -7,6 +8,7 @@ import { RecordFilter } from '@/object-record/record-filter/types/RecordFilter';
|
|||||||
import { CURRENCIES } from '@/settings/data-model/constants/Currencies';
|
import { CURRENCIES } from '@/settings/data-model/constants/Currencies';
|
||||||
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValueV2';
|
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValueV2';
|
||||||
import { WorkflowVariablePicker } from '@/workflow/workflow-variables/components/WorkflowVariablePicker';
|
import { WorkflowVariablePicker } from '@/workflow/workflow-variables/components/WorkflowVariablePicker';
|
||||||
|
import { useContext } from 'react';
|
||||||
import { JsonValue } from 'type-fest';
|
import { JsonValue } from 'type-fest';
|
||||||
|
|
||||||
export const WorkflowAdvancedFilterValueFormCompositeFieldInput = ({
|
export const WorkflowAdvancedFilterValueFormCompositeFieldInput = ({
|
||||||
@ -22,6 +24,8 @@ export const WorkflowAdvancedFilterValueFormCompositeFieldInput = ({
|
|||||||
|
|
||||||
const filterType = recordFilter.type;
|
const filterType = recordFilter.type;
|
||||||
|
|
||||||
|
const { readonly } = useContext(AdvancedFilterContext);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{filterType === 'ADDRESS' ? (
|
{filterType === 'ADDRESS' ? (
|
||||||
@ -30,12 +34,14 @@ export const WorkflowAdvancedFilterValueFormCompositeFieldInput = ({
|
|||||||
defaultValue={recordFilter.value}
|
defaultValue={recordFilter.value}
|
||||||
onChange={onChange}
|
onChange={onChange}
|
||||||
VariablePicker={WorkflowVariablePicker}
|
VariablePicker={WorkflowVariablePicker}
|
||||||
|
readonly={readonly}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<FormTextFieldInput
|
<FormTextFieldInput
|
||||||
defaultValue={recordFilter.value}
|
defaultValue={recordFilter.value}
|
||||||
onChange={onChange}
|
onChange={onChange}
|
||||||
VariablePicker={WorkflowVariablePicker}
|
VariablePicker={WorkflowVariablePicker}
|
||||||
|
readonly={readonly}
|
||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
) : filterType === 'CURRENCY' ? (
|
) : filterType === 'CURRENCY' ? (
|
||||||
@ -45,12 +51,14 @@ export const WorkflowAdvancedFilterValueFormCompositeFieldInput = ({
|
|||||||
onChange={onChange}
|
onChange={onChange}
|
||||||
VariablePicker={WorkflowVariablePicker}
|
VariablePicker={WorkflowVariablePicker}
|
||||||
options={CURRENCIES}
|
options={CURRENCIES}
|
||||||
|
readonly={readonly}
|
||||||
/>
|
/>
|
||||||
) : recordFilter.subFieldName === 'amountMicros' ? (
|
) : recordFilter.subFieldName === 'amountMicros' ? (
|
||||||
<FormNumberFieldInput
|
<FormNumberFieldInput
|
||||||
defaultValue={recordFilter.value}
|
defaultValue={recordFilter.value}
|
||||||
onChange={onChange}
|
onChange={onChange}
|
||||||
VariablePicker={WorkflowVariablePicker}
|
VariablePicker={WorkflowVariablePicker}
|
||||||
|
readonly={readonly}
|
||||||
/>
|
/>
|
||||||
) : null
|
) : null
|
||||||
) : filterType === 'PHONES' ? (
|
) : filterType === 'PHONES' ? (
|
||||||
@ -59,12 +67,14 @@ export const WorkflowAdvancedFilterValueFormCompositeFieldInput = ({
|
|||||||
defaultValue={recordFilter.value}
|
defaultValue={recordFilter.value}
|
||||||
onChange={onChange}
|
onChange={onChange}
|
||||||
VariablePicker={WorkflowVariablePicker}
|
VariablePicker={WorkflowVariablePicker}
|
||||||
|
readonly={readonly}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<FormTextFieldInput
|
<FormTextFieldInput
|
||||||
defaultValue={recordFilter.value}
|
defaultValue={recordFilter.value}
|
||||||
onChange={onChange}
|
onChange={onChange}
|
||||||
VariablePicker={WorkflowVariablePicker}
|
VariablePicker={WorkflowVariablePicker}
|
||||||
|
readonly={readonly}
|
||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
) : (
|
) : (
|
||||||
@ -72,6 +82,7 @@ export const WorkflowAdvancedFilterValueFormCompositeFieldInput = ({
|
|||||||
defaultValue={recordFilter.value}
|
defaultValue={recordFilter.value}
|
||||||
onChange={onChange}
|
onChange={onChange}
|
||||||
VariablePicker={WorkflowVariablePicker}
|
VariablePicker={WorkflowVariablePicker}
|
||||||
|
readonly={readonly}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</>
|
</>
|
||||||
|
|||||||
@ -185,6 +185,10 @@ export const WorkflowEditActionFindRecords = ({
|
|||||||
<WorkflowFindRecordsFilters
|
<WorkflowFindRecordsFilters
|
||||||
objectMetadataItem={selectedObjectMetadataItem}
|
objectMetadataItem={selectedObjectMetadataItem}
|
||||||
onChange={(filter: FindRecordsActionFilter) => {
|
onChange={(filter: FindRecordsActionFilter) => {
|
||||||
|
if (isFormDisabled === true) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const newFormData: FindRecordsFormData = {
|
const newFormData: FindRecordsFormData = {
|
||||||
...formData,
|
...formData,
|
||||||
filter,
|
filter,
|
||||||
@ -194,6 +198,7 @@ export const WorkflowEditActionFindRecords = ({
|
|||||||
|
|
||||||
saveAction(newFormData);
|
saveAction(newFormData);
|
||||||
}}
|
}}
|
||||||
|
readonly={isFormDisabled}
|
||||||
/>
|
/>
|
||||||
<WorkflowFindRecordsFiltersEffect
|
<WorkflowFindRecordsFiltersEffect
|
||||||
defaultValue={formData.filter}
|
defaultValue={formData.filter}
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem';
|
import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem';
|
||||||
|
import { AdvancedFilterContext } from '@/object-record/advanced-filter/states/context/AdvancedFilterContext';
|
||||||
import { rootLevelRecordFilterGroupComponentSelector } from '@/object-record/advanced-filter/states/rootLevelRecordFilterGroupComponentSelector';
|
import { rootLevelRecordFilterGroupComponentSelector } from '@/object-record/advanced-filter/states/rootLevelRecordFilterGroupComponentSelector';
|
||||||
import { useUpsertRecordFilterGroup } from '@/object-record/record-filter-group/hooks/useUpsertRecordFilterGroup';
|
import { useUpsertRecordFilterGroup } from '@/object-record/record-filter-group/hooks/useUpsertRecordFilterGroup';
|
||||||
import { RecordFilterGroupLogicalOperator } from '@/object-record/record-filter-group/types/RecordFilterGroupLogicalOperator';
|
import { RecordFilterGroupLogicalOperator } from '@/object-record/record-filter-group/types/RecordFilterGroupLogicalOperator';
|
||||||
@ -7,6 +8,7 @@ import { useUpsertRecordFilter } from '@/object-record/record-filter/hooks/useUp
|
|||||||
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValueV2';
|
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValueV2';
|
||||||
import { useSetRecoilComponentFamilyStateV2 } from '@/ui/utilities/state/component-state/hooks/useSetRecoilComponentFamilyStateV2';
|
import { useSetRecoilComponentFamilyStateV2 } from '@/ui/utilities/state/component-state/hooks/useSetRecoilComponentFamilyStateV2';
|
||||||
import { hasInitializedCurrentRecordFiltersComponentFamilyState } from '@/views/states/hasInitializedCurrentRecordFiltersComponentFamilyState';
|
import { hasInitializedCurrentRecordFiltersComponentFamilyState } from '@/views/states/hasInitializedCurrentRecordFiltersComponentFamilyState';
|
||||||
|
import { useContext } from 'react';
|
||||||
import { isDefined } from 'twenty-shared/utils';
|
import { isDefined } from 'twenty-shared/utils';
|
||||||
import { IconFilter } from 'twenty-ui/display';
|
import { IconFilter } from 'twenty-ui/display';
|
||||||
import { Button } from 'twenty-ui/input';
|
import { Button } from 'twenty-ui/input';
|
||||||
@ -16,6 +18,7 @@ export const WorkflowFindRecordsAddFilterButton = ({
|
|||||||
}: {
|
}: {
|
||||||
defaultFieldMetadataItem: FieldMetadataItem;
|
defaultFieldMetadataItem: FieldMetadataItem;
|
||||||
}) => {
|
}) => {
|
||||||
|
const { readonly } = useContext(AdvancedFilterContext);
|
||||||
const rootRecordFilterGroup = useRecoilComponentValueV2(
|
const rootRecordFilterGroup = useRecoilComponentValueV2(
|
||||||
rootLevelRecordFilterGroupComponentSelector,
|
rootLevelRecordFilterGroupComponentSelector,
|
||||||
);
|
);
|
||||||
@ -69,6 +72,7 @@ export const WorkflowFindRecordsAddFilterButton = ({
|
|||||||
onClick={addRootRecordFilterGroup}
|
onClick={addRootRecordFilterGroup}
|
||||||
ariaLabel="Add filter"
|
ariaLabel="Add filter"
|
||||||
title="Add filter"
|
title="Add filter"
|
||||||
|
disabled={readonly}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@ -36,9 +36,11 @@ const StyledChildContainer = styled.div`
|
|||||||
export const WorkflowFindRecordsFilters = ({
|
export const WorkflowFindRecordsFilters = ({
|
||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
onChange,
|
onChange,
|
||||||
|
readonly,
|
||||||
}: {
|
}: {
|
||||||
objectMetadataItem: ObjectMetadataItem;
|
objectMetadataItem: ObjectMetadataItem;
|
||||||
onChange: (filter: FindRecordsActionFilter) => void;
|
onChange: (filter: FindRecordsActionFilter) => void;
|
||||||
|
readonly?: boolean;
|
||||||
}) => {
|
}) => {
|
||||||
const rootRecordFilterGroup = useRecoilComponentValueV2(
|
const rootRecordFilterGroup = useRecoilComponentValueV2(
|
||||||
rootLevelRecordFilterGroupComponentSelector,
|
rootLevelRecordFilterGroupComponentSelector,
|
||||||
@ -108,8 +110,9 @@ export const WorkflowFindRecordsFilters = ({
|
|||||||
return (
|
return (
|
||||||
<AdvancedFilterContext.Provider
|
<AdvancedFilterContext.Provider
|
||||||
value={{
|
value={{
|
||||||
onUpdate,
|
onUpdate: readonly ? undefined : onUpdate,
|
||||||
isWorkflowFindRecords: true,
|
isWorkflowFindRecords: true,
|
||||||
|
readonly,
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{isDefined(rootRecordFilterGroup) ? (
|
{isDefined(rootRecordFilterGroup) ? (
|
||||||
@ -136,9 +139,11 @@ export const WorkflowFindRecordsFilters = ({
|
|||||||
),
|
),
|
||||||
)}
|
)}
|
||||||
</StyledChildContainer>
|
</StyledChildContainer>
|
||||||
<AdvancedFilterAddFilterRuleSelect
|
{!readonly && (
|
||||||
recordFilterGroup={rootRecordFilterGroup}
|
<AdvancedFilterAddFilterRuleSelect
|
||||||
/>
|
recordFilterGroup={rootRecordFilterGroup}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
</StyledContainer>
|
</StyledContainer>
|
||||||
) : (
|
) : (
|
||||||
<WorkflowFindRecordsAddFilterButton
|
<WorkflowFindRecordsAddFilterButton
|
||||||
|
|||||||
Reference in New Issue
Block a user