/** * AdvancedFilterコンポーネントの共通ヘルパー関数 * * このファイルには、AdvancedFilterコンポーネントで使用される共通のロジックと * ヘルパー関数が含まれています。これらの関数を使用することで、 * コンポーネント間での重複コードを削減し、保守性を向上させています。 * * 主な機能カテゴリ: * - フィルター操作: フィルターの追加・更新・削除・クリア * - 設定取得: オペレーター・入力タイプ・プレースホルダー・オプションの取得 * - タグ表示: タグのテキスト・タイトル生成 * - バリデーション: フィルター設定・タイプの有効性チェック */ import { AppliedFilter, FilterConfig, FilterInputType, FilterSlotView, FilterTypeConfig, MultiConditionLogic, MultiFilterConditionConfig, OperatorDefinition, ValueDefinition } from "../types"; /** * 範囲指定が必要なオペレーターかどうかを判定 * @param operator オペレーターのvalue * @param filterConfig フィルター設定 * @returns 範囲指定が必要な場合true */ export declare const isRangeOperator: (operator: string, filterConfig?: FilterTypeConfig) => boolean; /** * カスタムオペレーターかどうかを判定する */ export declare const isCustomOperator: (operator: string, filterConfig?: FilterTypeConfig) => boolean; /** persistOption が有効か(ConfigPanel にチェックボックスを表示するか) */ export declare const isPersistOptionEnabled: (filterConfig?: FilterTypeConfig) => boolean; /** ConfigPanel チェックボックスの初期値 */ export declare const getInitialPersistValue: (filterConfig?: FilterTypeConfig, editingFilter?: { persist?: boolean; } | null) => boolean; /** persistOption の表示ラベル */ export declare const getPersistOptionLabel: (filterConfig?: FilterTypeConfig) => string; /** * フィルターを適用する */ export declare const applyFilter: (filterType: string, filterTypeLabel: string, config: FilterConfig) => AppliedFilter; /** * フィルターを更新する */ export declare const updateFilter: (existingFilter: AppliedFilter, config: FilterConfig) => AppliedFilter; /** * フィルターを削除する */ export declare const removeFilter: (filters: AppliedFilter[], filterId: string) => AppliedFilter[]; /** * すべてのフィルターをクリアする */ export declare const clearAllFilters: () => AppliedFilter[]; /** * デフォルトオペレーターを取得する * defaultOperatorがoperatorsに存在しない場合はエラーを投げる */ export declare const getDefaultOperator: (filterConfig?: FilterTypeConfig) => string; /** * オペレーターリストを取得する */ export declare const getOperators: (filterConfig?: FilterTypeConfig) => OperatorDefinition[]; /** * 入力タイプを取得する */ export declare const getInputType: (filterConfig?: FilterTypeConfig, operator?: string) => FilterInputType; /** * プレースホルダーを取得する */ export declare const getPlaceholder: (filterConfig?: FilterTypeConfig) => string; /** * オプションリストを取得する */ export declare const getOptions: (filterConfig?: FilterTypeConfig, operator?: string) => ValueDefinition[]; /** * 日付フォーマットを取得する */ export declare const getDateFormat: (filterConfig?: FilterTypeConfig) => string; /** * タグの表示テキストを生成する */ export declare const generateTagText: (filter: AppliedFilter) => string; /** * タグのタイトル(ツールチップ)を生成する */ export declare const generateTagTitle: (filter: AppliedFilter) => string; /** * フィルター設定が有効かチェックする */ export declare const isValidFilterConfig: (config: FilterConfig) => boolean; /** * フィルタータイプが有効かチェックする */ export declare const isValidFilterType: (filterType: string, types: Array<{ type: string; label: string; }>) => boolean; /** * 利用可能なフィルタータイプを取得する * * すでに適用されているフィルタータイプを除外して、新規追加可能なタイプのみを返します。 * * @param types - すべてのフィルタータイプ * @param appliedFilters - 適用済みフィルターの配列 * @returns 利用可能なフィルタータイプの配列 */ export declare const getAvailableTypes: (types: T[], appliedFilters: AppliedFilter[]) => T[]; /** * フィルタータイプのラベルを取得する * * @param types - フィルタータイプの配列 * @param type - フィルタータイプのvalue * @returns フィルタータイプのラベル(見つからない場合はvalueをそのまま返す) */ export declare const getFilterTypeLabel: (types: Array<{ type: string; label: string; }>, type: string | null) => string; /** * タグの太字表示部分(値の部分)を取得する * * @param filter - 適用済みフィルター * @returns 太字表示すべきテキスト */ export declare const getTagBoldText: (filter: AppliedFilter) => string | string[]; /** * フィルタタイプが複数条件モードかどうかを判定 */ export declare const hasMultiConditions: (filterConfig?: FilterTypeConfig) => boolean; /** * ConfigPanel に説明文を出すかどうか。関数のときは、評価してよい場合だけ true を返す(評価は描画する側で行う)。 * 複数条件は条件ごとにオペレーターが違うため評価しない。その項目の operators にないオペレーターでも評価しない。 * 開いたまま別の項目に切り替えた直後の 1 レンダーは、前の項目のオペレーターが状態に残っているため */ export declare const shouldRenderHelpText: (filterConfig: FilterTypeConfig | undefined, operator: string) => boolean; /** * 複数条件設定を取得する */ export declare const getMultiConditionConfigs: (filterConfig?: FilterTypeConfig) => MultiFilterConditionConfig[]; /** * 複数条件フィルタ内の条件結合ロジックを取得する */ export declare const getMultiConditionLogic: (filterConfig?: FilterTypeConfig) => MultiConditionLogic; /** * 条件キーから条件設定を取得する */ export declare const getConditionConfigByKey: (filterConfig: FilterTypeConfig | undefined, conditionKey: string) => MultiFilterConditionConfig | undefined; /** * enabledWhen により条件入力が非活性かどうかを判定する */ export declare const isConditionDisabledByDependency: (conditionConfig: MultiFilterConditionConfig, conditions: Array<{ conditionKey: string; operator: string; value: string; selectedValues: (string | boolean)[]; selectedRadioValue: string | boolean; }>, filterConfig?: FilterTypeConfig) => boolean; /** * 条件設定のデフォルトオペレーターを取得する * defaultOperatorがoperatorsに存在しない場合はエラーを投げる */ export declare const getConditionDefaultOperator: (conditionConfig: MultiFilterConditionConfig) => string; /** * 条件設定のオペレーターリストを取得する */ export declare const getConditionOperators: (conditionConfig: MultiFilterConditionConfig) => OperatorDefinition[]; /** * 条件設定の入力タイプを取得する */ export declare const getConditionInputType: (conditionConfig: MultiFilterConditionConfig, operator?: string) => FilterInputType; /** * 条件設定のオプションリストを取得する */ export declare const getConditionOptions: (conditionConfig: MultiFilterConditionConfig, operator?: string) => ValueDefinition[]; /** * 条件設定のプレースホルダーを取得する */ export declare const getConditionPlaceholder: (conditionConfig: MultiFilterConditionConfig) => string; /** * 条件設定の範囲指定オペレーターかどうかを判定 */ export declare const isConditionRangeOperator: (conditionConfig: MultiFilterConditionConfig, operator: string) => boolean; type ConditionForTextFocus = { id: string; conditionKey: string; operator: string; }; /** * 複数条件モードで最初のテキスト入力条件の ID を取得する */ export declare const getFirstTextConditionId: (filterConfig: FilterTypeConfig | undefined, conditions: ConditionForTextFocus[]) => string | null; /** 未設定スロットの安定 ID */ export declare const getPresetSlotId: (type: string) => string; /** 設定済み(値が入っている)フィルターかどうか */ export declare const isConfiguredFilter: (filter: AppliedFilter) => boolean; /** 設定済みフィルターのみ返す */ export declare const getConfiguredFilters: (appliedFilters: AppliedFilter[]) => AppliedFilter[]; /** types と appliedFilters から presetSlots 表示用スロットを構築 */ export declare const buildFilterSlots: (types: Array<{ type: string; label: string; disabled?: boolean; }>, appliedFilters: AppliedFilter[]) => FilterSlotView[]; export {};