From 7e8b511b28c1878f8ee279a574cd05bfe83d9a7a Mon Sep 17 00:00:00 2001 From: v_luopinluo <173308582@qq.com> Date: Wed, 23 Sep 2026 10:46:51 +0800 Subject: [PATCH 1/7] feat(cascader): add filterable --- src/_common | 2 +- src/cascader/Cascader.tsx | 472 ++++++++++++++++++----- src/cascader/__tests__/cascader.test.tsx | 128 ++++++ src/cascader/_example/filterable.tsx | 123 ++++++ src/cascader/_example/index.tsx | 4 + 5 files changed, 628 insertions(+), 101 deletions(-) create mode 100644 src/cascader/_example/filterable.tsx diff --git a/src/_common b/src/_common index 3877b3252..00e50af65 160000 --- a/src/_common +++ b/src/_common @@ -1 +1 @@ -Subproject commit 3877b3252de69cdef86172f14e35d63bad3a0960 +Subproject commit 00e50af65dd5d1a983cbfdb649faa77524330f01 diff --git a/src/cascader/Cascader.tsx b/src/cascader/Cascader.tsx index b1c0a50cf..ed9683bd3 100644 --- a/src/cascader/Cascader.tsx +++ b/src/cascader/Cascader.tsx @@ -1,11 +1,12 @@ import { useDeepCompareEffect } from 'ahooks'; import classNames from 'classnames'; import last from 'lodash-es/last'; -import React, { useCallback, useEffect, useMemo, useState } from 'react'; +import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { CloseIcon, ChevronRightIcon } from 'tdesign-icons-react'; import useDefault from '../_util/useDefault'; import { Popup } from '../popup'; import { RadioGroup } from '../radio'; +import { Search } from '../search'; import Tabs from '../tabs'; import { StyledProps, TreeOptionData } from '../common'; import { usePrefixClass } from '../hooks/useClass'; @@ -13,10 +14,98 @@ import useConfig from '../hooks/useConfig'; import useDefaultProps from '../hooks/useDefaultProps'; import parseTNode from '../_util/parseTNode'; import { cascaderDefaultProps } from './defaultProps'; -import { CascaderTriggerSource, TdCascaderProps } from './type'; +import { CascaderFilterFunction, CascaderTriggerSource, TdCascaderProps } from './type'; + +type OptionsType = TreeOptionData[]; + +type FlatPath = { + key: string; + path: TreeOptionData[]; + indexes: number[]; + labels: string[]; + text: string; + disabled: boolean; +}; + +type ResultFragment = { id: number; text: string; highlight: boolean }; + +type FilterResult = { + key: string; + indexes: number[]; + disabled: boolean; + fragments: ResultFragment[]; +}; export interface CascaderProps extends TdCascaderProps, StyledProps {} +function flattenPaths( + options: OptionsType, + keys: { label: string; value: string; children: string; disabled: string }, +): FlatPath[] { + const result: FlatPath[] = []; + + const walk = (list: TreeOptionData[], path: TreeOptionData[], indexes: number[]) => { + list.forEach((item, idx) => { + const nextPath = [...path, item]; + const nextIndexes = [...indexes, idx]; + const children = item[keys.children]; + if (Array.isArray(children) && children.length > 0) { + walk(children as TreeOptionData[], nextPath, nextIndexes); + } else { + const labels = nextPath.map((node) => String(node[keys.label] ?? '')); + const text = [labels.join(''), String(item?.text ?? '')].filter(Boolean).join(''); + result.push({ + key: nextPath.map((node) => String(node[keys.value] ?? '')).join('/'), + path: nextPath, + indexes: nextIndexes, + labels, + text, + disabled: nextPath.some((node) => node[keys.disabled]), + }); + } + }); + }; + + walk(options || [], [], []); + return result; +} + +function buildFragments(labels: string[], keyword: string): ResultFragment[] { + const joined = labels.join(' / '); + const push = (acc: ResultFragment[], text: string, highlight: boolean) => { + if (!text) return; + acc.push({ id: acc.length, text, highlight }); + }; + + if (!keyword) return [{ id: 0, text: joined, highlight: false }]; + + const fragments: ResultFragment[] = []; + const haystack = joined.toLowerCase(); + const needle = keyword.toLowerCase(); + let cursor = 0; + while (cursor < joined.length) { + const hit = haystack.indexOf(needle, cursor); + if (hit === -1) { + push(fragments, joined.slice(cursor), false); + break; + } + push(fragments, joined.slice(cursor, hit), false); + push(fragments, joined.slice(hit, hit + needle.length), true); + cursor = hit + needle.length; + } + return fragments.length ? fragments : [{ id: 0, text: joined, highlight: false }]; +} + +function defaultFilter(keyword: string, _option: TreeOptionData, path: TreeOptionData[], labelKey: string): boolean { + const lower = keyword.toLowerCase(); + const joined = path + .map((node) => String(node?.[labelKey] ?? '')) + .join('') + .toLowerCase(); + const text = String(path[path.length - 1]?.text ?? '').toLowerCase(); + return joined.includes(lower) || (!!text && text.includes(lower)); +} + const Cascader: React.FC = (props) => { const cascaderClass = usePrefixClass('cascader'); const globalConfig = useConfig(); @@ -39,18 +128,29 @@ const Cascader: React.FC = (props) => { checkStrictly, closeBtn, load, + filter, + filterPlaceholder, + filterable, onChange, onClose, onPick, } = useDefaultProps(props, cascaderDefaultProps); const placeholderText = placeholder ?? globalConfig?.cascader?.placeholder; + const filterPlaceholderText = filterPlaceholder ?? globalConfig?.cascader?.filterPlaceholder; const [internalValue, setInternalValue] = useDefault(value, defaultValue, onChange); const [internalVisible, setInternalVisible] = useDefault(visible, false, () => ({})); const [internalSelectedValues, setInternalSelectedValues] = useState([]); const [stepIndex, setStepIndex] = useState(0); + // 搜索相关状态 + const [filterKeyword, setFilterKeyword] = useState(''); + const [filterResults, setFilterResults] = useState([]); + const [isSearching, setIsSearching] = useState(false); + const filterDebouncedRef = useRef | null>(null); + const flatPathsRef = useRef([]); + const normalizedKeys = useMemo( () => ({ label: keys?.label ?? 'label', @@ -157,6 +257,132 @@ const Cascader: React.FC = (props) => { [onClose, normalizedKeys, optionsList, setInternalValue, setInternalVisible], ); + // 搜索相关函数 + const ensureFlatPaths = useCallback(() => { + if (flatPathsRef.current.length === 0) { + flatPathsRef.current = flattenPaths(inputOptions, normalizedKeys); + } + return flatPathsRef.current; + }, [inputOptions, normalizedKeys]); + + const resetFilter = useCallback(() => { + setFilterKeyword(''); + setFilterResults([]); + setIsSearching(false); + }, []); + + const applyFilter = useCallback( + (rawKeyword: string) => { + const keyword = String(rawKeyword ?? '').trim(); + if (!keyword) { + resetFilter(); + return; + } + + const userFilter = filter as CascaderFilterFunction | null; + const flat = ensureFlatPaths(); + const results: FilterResult[] = []; + + flat.forEach((entry: FlatPath) => { + const leaf = entry.path[entry.path.length - 1]; + const matched = + typeof userFilter === 'function' + ? !!userFilter(keyword, leaf, entry.path) + : defaultFilter(keyword, leaf, entry.path, normalizedKeys.label); + if (matched) { + results.push({ + key: entry.key, + indexes: entry.indexes, + disabled: entry.disabled, + fragments: buildFragments(entry.labels, keyword), + }); + } + }); + + setFilterKeyword(rawKeyword); + setFilterResults(results); + setIsSearching(true); + }, + [filter, normalizedKeys, ensureFlatPaths, resetFilter], + ); + + const handleFilterChange = useCallback( + (value: string) => { + if (filterDebouncedRef.current) { + clearTimeout(filterDebouncedRef.current); + } + filterDebouncedRef.current = setTimeout(() => { + applyFilter(value); + }, 200); + }, + [applyFilter], + ); + + const handleFilterClear = useCallback(() => { + if (filterDebouncedRef.current) { + clearTimeout(filterDebouncedRef.current); + } + resetFilter(); + }, [resetFilter]); + + const handleFilterResultTap = useCallback( + (result: FilterResult) => { + if (result.disabled) return; + + const { indexes } = result; + const selectedValues: CascaderProps['value'][] = []; + const selectedOptions: { [key: string]: any }[] = []; + const labelKey = normalizedKeys.label; + const valueKey = normalizedKeys.value; + const childrenKey = normalizedKeys.children; + + let current: TreeOptionData[] = inputOptions; + for (let i = 0; i < indexes.length; i++) { + const index = indexes[i]; + const next = current[index]; + selectedValues.push(next[valueKey]); + selectedOptions.push({ + [labelKey]: next[labelKey], + [valueKey]: next[valueKey], + }); + const children = next[childrenKey]; + if (Array.isArray(children) && children.length > 0) { + current = children as TreeOptionData[]; + } + } + + resetFilter(); + setInternalValue(last(selectedValues), selectedOptions as any); + setInternalVisible(false); + onClose?.('finish'); + }, + [normalizedKeys, inputOptions, setInternalValue, setInternalVisible, onClose, resetFilter], + ); + + // 清理防抖定时器 + useEffect( + () => () => { + if (filterDebouncedRef.current) { + clearTimeout(filterDebouncedRef.current); + } + }, + [], + ); + + // visible 变化时重置搜索状态 + useEffect(() => { + if (!internalVisible) { + resetFilter(); + } + }, [internalVisible, resetFilter]); + + // filterable 关闭时重置搜索状态 + useEffect(() => { + if (!filterable && isSearching) { + resetFilter(); + } + }, [filterable, isSearching, resetFilter]); + return ( = (props) => { {parseTNode(header)}
- {labelList.length > 0 && ( -
- {theme === 'step' ? ( -
- {labelList.map((labelItem, index) => ( -
setStepIndex(index)}> -
-
- {parseTNode(labelItem.label)} -
- + {/* 搜索框 */} + {filterable && ( +
+ +
+ )} + + {!isSearching ? ( + <> + {labelList.length > 0 && ( +
+ {theme === 'step' ? ( +
+ {labelList.map((labelItem, index) => ( +
setStepIndex(index)}> +
+
+ {parseTNode(labelItem.label)} +
+ +
+ ))}
- ))} + ) : null} + {theme === 'tab' && internalVisible ? ( + ({ + label: item.label, + value: index, + }))} + spaceEvenly={false} + value={stepIndex} + onChange={(nextValue: number) => { + setStepIndex(nextValue); + }} + /> + ) : null}
+ )} + {parseTNode(middleContent)} + {subTitles[stepIndex] ? ( +
{subTitles[stepIndex]}
) : null} - {theme === 'tab' && internalVisible ? ( - ({ - label: item.label, - value: index, - }))} - spaceEvenly={false} - value={stepIndex} - onChange={(nextValue: number) => { - setStepIndex(nextValue); - }} - /> - ) : null} -
- )} - {parseTNode(middleContent)} - {subTitles[stepIndex] ? ( -
{subTitles[stepIndex]}
- ) : null} -
- {optionsList.map((currentOptions, index) => ( -
-
- { - const targetIndex = currentOptions.findIndex((item) => item.value === nextValue); - const target = currentOptions[targetIndex]; - const selectedValues = [...internalSelectedValues.slice(0, index), nextValue]; - - setInternalSelectedValues(selectedValues); - onPick?.({ - value: nextValue, - label: String(target?.label || ''), - index: targetIndex, - level: index, - }); - - if (target?.children === true && load) { - load({ data: target.data, value: target.value, label: target.label }) - .then((loadedChildren) => { - setOptionsList((prev) => [ - ...prev.slice(0, index + 1), - normalizeOptionsByKeys(loadedChildren), - ]); - setStepIndex(index + 1); - }) - .catch((error) => { - console.error('Load children failed:', error); +
+ {optionsList.map((currentOptions, index) => ( +
+
+ { + const targetIndex = currentOptions.findIndex((item) => item.value === nextValue); + const target = currentOptions[targetIndex]; + const selectedValues = [...internalSelectedValues.slice(0, index), nextValue]; + + setInternalSelectedValues(selectedValues); + onPick?.({ + value: nextValue, + label: String(target?.label || ''), + index: targetIndex, + level: index, }); - return; - } - - if (target && Array.isArray(target.children) && target.children.length > 0) { - const children = target.children as TreeOptionData[]; - setOptionsList((prev) => [...prev.slice(0, index + 1), children]); - setStepIndex(index + 1); - return; - } - - setOptionsList((prev) => prev.slice(0, index + 1)); - setStepIndex(index); - onFinish(selectedValues); - }} - /> -
+ + if (target?.children === true && load) { + load({ data: target.data, value: target.value, label: target.label }) + .then((loadedChildren) => { + setOptionsList((prev) => [ + ...prev.slice(0, index + 1), + normalizeOptionsByKeys(loadedChildren), + ]); + setStepIndex(index + 1); + }) + .catch((error) => { + console.error('Load children failed:', error); + }); + return; + } + + if (target && Array.isArray(target.children) && target.children.length > 0) { + const children = target.children as TreeOptionData[]; + setOptionsList((prev) => [...prev.slice(0, index + 1), children]); + setStepIndex(index + 1); + return; + } + + setOptionsList((prev) => prev.slice(0, index + 1)); + setStepIndex(index); + onFinish(selectedValues); + }} + /> +
+
+ ))}
- ))} -
+ + ) : ( + <> + {filterResults.length > 0 ? ( +
+ {filterResults.map((result) => ( +
handleFilterResultTap(result)} + > + {result.fragments.map((frag) => ( + + {frag.text} + + ))} +
+ ))} +
+ ) : ( +
{globalConfig.cascader.empty}
+ )} + + )}
diff --git a/src/cascader/__tests__/cascader.test.tsx b/src/cascader/__tests__/cascader.test.tsx index 5d6467d65..3d145bc70 100644 --- a/src/cascader/__tests__/cascader.test.tsx +++ b/src/cascader/__tests__/cascader.test.tsx @@ -409,6 +409,134 @@ describe('Cascader', () => { expect(onClose).toHaveBeenCalledWith('finish'); }); + + it(': filterable', async () => { + const filterableOptions = [ + { + label: '北京市', + value: '110000', + children: [ + { + label: '北京市', + value: '110100', + children: [ + { label: '海淀区', value: '110108' }, + { label: '朝阳区', value: '110105' }, + ], + }, + ], + }, + { + label: '上海市', + value: '310000', + children: [{ label: '上海市', value: '310100', children: [{ label: '浦东新区', value: '310115' }] }], + }, + { + label: '广东省', + value: '440000', + children: [{ label: '珠海市', value: '440400' }], + }, + ]; + + const renderCascader = (overrides = {}) => { + const props: CascaderProps = { + visible: true, + filterable: true, + options: filterableOptions, + ...overrides, + }; + return render(); + }; + + const typeInSearch = (value: string) => { + const searchInput = document.querySelector('.t-search input') as HTMLInputElement; + fireEvent.input(searchInput, { target: { value } }); + }; + + // renders search input + renderCascader(); + expect(document.querySelector('.t-search')).toBeTruthy(); + + // default filter matches full-path label + typeInSearch('海'); + await act(async () => { + vi.advanceTimersByTime(300); + }); + const results = document.querySelectorAll(`${name}__filter-result-item`); + expect(results.length).toBeGreaterThan(0); + + // shows empty state when no match + typeInSearch('xxxxx'); + await act(async () => { + vi.advanceTimersByTime(300); + }); + expect(document.querySelector(`${name}__filter-empty`)).toBeTruthy(); + }); + + it(': filterable - custom filter function', async () => { + const filterableOptions = [ + { + label: '北京市', + value: '110000', + children: [ + { + label: '北京市', + value: '110100', + children: [{ label: '海淀区', value: '110108' }], + }, + ], + }, + { + label: '上海市', + value: '310000', + children: [{ label: '上海市', value: '310100', children: [{ label: '浦东新区', value: '310115' }] }], + }, + ]; + + const customFilter = vi.fn((keyword: string, option: any) => option.label === keyword); + render(); + + const searchInput = document.querySelector('.t-search input') as HTMLInputElement; + fireEvent.input(searchInput, { target: { value: '浦东新区' } }); + await act(async () => { + vi.advanceTimersByTime(300); + }); + + expect(customFilter).toHaveBeenCalled(); + }); + + it(': filterable - selecting result closes cascader', async () => { + const filterableOptions = [ + { + label: '北京市', + value: '110000', + children: [ + { + label: '北京市', + value: '110100', + children: [{ label: '海淀区', value: '110108' }], + }, + ], + }, + ]; + + const onChange = vi.fn(); + const onClose = vi.fn(); + render(); + + const searchInput = document.querySelector('.t-search input') as HTMLInputElement; + fireEvent.input(searchInput, { target: { value: '海淀' } }); + await act(async () => { + vi.advanceTimersByTime(300); + }); + + const resultItem = document.querySelector(`${name}__filter-result-item`); + expect(resultItem).toBeTruthy(); + + fireEvent.click(resultItem); + expect(onChange).toHaveBeenCalled(); + expect(onClose).toHaveBeenCalledWith('finish'); + }); }); it(': lazy demo unlocks after loading and allows selection', async () => { diff --git a/src/cascader/_example/filterable.tsx b/src/cascader/_example/filterable.tsx new file mode 100644 index 000000000..235fbf187 --- /dev/null +++ b/src/cascader/_example/filterable.tsx @@ -0,0 +1,123 @@ +import React, { useState } from 'react'; + +import { Cascader, Cell } from 'tdesign-mobile-react'; + +const data = { + areaList: [ + { + label: '北京市', + value: '110000', + children: [ + { + value: '110100', + label: '北京市', + children: [ + { value: '110101', label: '东城区' }, + { value: '110102', label: '西城区' }, + { value: '110105', label: '朝阳区' }, + { value: '110106', label: '丰台区' }, + { value: '110107', label: '石景山区' }, + { value: '110108', label: '海淀区' }, + { value: '110109', label: '门头沟区' }, + { value: '110111', label: '房山区' }, + { value: '110112', label: '通州区' }, + { value: '110113', label: '顺义区' }, + { value: '110114', label: '昌平区' }, + { value: '110115', label: '大兴区' }, + { value: '110116', label: '怀柔区' }, + { value: '110117', label: '平谷区' }, + { value: '110118', label: '密云区' }, + { value: '110119', label: '延庆区' }, + ], + }, + ], + }, + { + label: '上海市', + value: '310000', + children: [ + { + value: '310100', + label: '上海市', + children: [ + { value: '310101', label: '黄浦区' }, + { value: '310104', label: '徐汇区' }, + { value: '310105', label: '长宁区' }, + { value: '310106', label: '静安区' }, + { value: '310107', label: '普陀区' }, + { value: '310109', label: '虹口区' }, + { value: '310110', label: '杨浦区' }, + { value: '310112', label: '闵行区' }, + { value: '310113', label: '宝山区' }, + { value: '310114', label: '嘉定区' }, + { value: '310115', label: '浦东新区' }, + ], + }, + ], + }, + { + label: '广东省', + value: '440000', + children: [ + { + value: '440100', + label: '广州市', + children: [ + { value: '440103', label: '荔湾区' }, + { value: '440104', label: '越秀区' }, + { value: '440105', label: '海珠区' }, + { value: '440106', label: '天河区' }, + { value: '440111', label: '白云区' }, + ], + }, + { + value: '440300', + label: '深圳市', + children: [ + { value: '440303', label: '罗湖区' }, + { value: '440304', label: '福田区' }, + { value: '440305', label: '南山区' }, + { value: '440306', label: '宝安区' }, + { value: '440307', label: '龙岗区' }, + ], + }, + ], + }, + ], +}; + +export default function FilterableDemo() { + const [visible, setVisible] = useState(false); + + const [note, setNote] = useState('请选择地址'); + + const [value, setValue] = useState(); + + return ( + <> + { + setVisible(true); + }} + /> + { + setNote((selectedOptions as any).map((item) => item.label).join('/') || ''); + setValue(value); + }} + onClose={() => { + setVisible(false); + }} + /> + + ); +} diff --git a/src/cascader/_example/index.tsx b/src/cascader/_example/index.tsx index e0630c4eb..9f90d6214 100644 --- a/src/cascader/_example/index.tsx +++ b/src/cascader/_example/index.tsx @@ -3,6 +3,7 @@ import TDemoBlock from '../../../site/mobile/components/DemoBlock'; import TDemoHeader from '../../../site/mobile/components/DemoHeader'; import BaseDemo from './base'; import CheckStrictlyDemo from './check-strictly'; +import FilterableDemo from './filterable'; import KeysDemo from './keys'; import LazyDemo from './lazy'; import ThemeTabDemo from './theme-tab'; @@ -36,6 +37,9 @@ export default function CascaderDemo() { + + +
); } From 805bd9fccf3259cb599a943676240768518c4b72 Mon Sep 17 00:00:00 2001 From: v_luopinluo <173308582@qq.com> Date: Wed, 23 Sep 2026 16:58:44 +0800 Subject: [PATCH 2/7] =?UTF-8?q?fix(cascder):=20=E6=96=87=E6=A1=A3=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/cascader/cascader.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/cascader/cascader.md b/src/cascader/cascader.md index ce6d2b44e..c3c609c30 100644 --- a/src/cascader/cascader.md +++ b/src/cascader/cascader.md @@ -10,9 +10,9 @@ className | String | - | 类名 | N style | Object | - | 样式,TS 类型:`React.CSSProperties` | N checkStrictly | Boolean | false | 父子节点选中状态不再关联,可各自选中或取消 | N closeBtn | TNode | true | 关闭按钮。TS 类型:`boolean \| TNode`。[通用类型定义](https://github.com/Tencent/tdesign-mobile-react/blob/develop/src/common.ts) | N -filter | Function | - | 【开发中】自定义过滤函数。返回 true 表示匹配,未设置时使用内置匹配规则:对路径中所有 label 拼接后做大小写不敏感的 includes 匹配。TS 类型:`CascaderFilterFunction ` `type CascaderFilterFunction = (keyword: string, option: CascaderOption, path: CascaderOption[]) => boolean`。[通用类型定义](https://github.com/Tencent/tdesign-mobile-react/blob/develop/src/common.ts)。[详细类型定义](https://github.com/Tencent/tdesign-mobile-react/tree/develop/src/cascader/type.ts) | N -filterPlaceholder | String | - | 【开发中】搜索框占位符描述文本 | N -filterable | Boolean | false | 【开发中】是否可搜索,开启后顶部会展示一个搜索框 | N +filter | Function | - | 自定义过滤函数。返回 true 表示匹配,未设置时使用内置匹配规则:对路径中所有 label 拼接后做大小写不敏感的 includes 匹配。TS 类型:`CascaderFilterFunction ` `type CascaderFilterFunction = (keyword: string, option: CascaderOption, path: CascaderOption[]) => boolean`。[通用类型定义](https://github.com/Tencent/tdesign-mobile-react/blob/develop/src/common.ts)。[详细类型定义](https://github.com/Tencent/tdesign-mobile-react/tree/develop/src/cascader/type.ts) | N +filterPlaceholder | String | - | 搜索框占位符描述文本 | N +filterable | Boolean | false | 是否可搜索,开启后顶部会展示一个搜索框 | N header | TElement | - | `0.21.2`。头部。TS 类型:`TNode`。[通用类型定义](https://github.com/Tencent/tdesign-mobile-react/blob/develop/src/common.ts) | N keys | Object | - | 用来定义 value / label / children / disabled 在 `options` 中对应的字段别名。TS 类型:`CascaderKeysType` `type CascaderKeysType = TreeKeysType`。[通用类型定义](https://github.com/Tencent/tdesign-mobile-react/blob/develop/src/common.ts)。[详细类型定义](https://github.com/Tencent/tdesign-mobile-react/tree/develop/src/cascader/type.ts) | N load | Function | - | 加载子树数据的方法(仅当节点 children 为 true 时生效)。TS 类型:`(node: CascaderOption) => Promise>` | N From 6d1f488ee610e639bd02f1b2605f311e814e444f Mon Sep 17 00:00:00 2001 From: v_luopinluo <173308582@qq.com> Date: Wed, 23 Sep 2026 17:09:39 +0800 Subject: [PATCH 3/7] =?UTF-8?q?fix(cascader):=20config-provider=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/config-provider/config-provider.en-US.md | 2 ++ src/config-provider/config-provider.md | 2 ++ src/config-provider/type.ts | 10 ++++++++++ 3 files changed, 14 insertions(+) diff --git a/src/config-provider/config-provider.en-US.md b/src/config-provider/config-provider.en-US.md index a707b8e79..15842d946 100644 --- a/src/config-provider/config-provider.en-US.md +++ b/src/config-provider/config-provider.en-US.md @@ -50,6 +50,8 @@ weekdays | Array | - | Typescript: `string[]` | N name | type | default | description | required -- | -- | -- | -- | -- +empty | String | - | \- | N +filterPlaceholder | String | - | \- | N placeholder | String | - | \- | N title | String | - | \- | N diff --git a/src/config-provider/config-provider.md b/src/config-provider/config-provider.md index aacb5a48f..ba7959640 100644 --- a/src/config-provider/config-provider.md +++ b/src/config-provider/config-provider.md @@ -50,6 +50,8 @@ weekdays | Array | - | 星期文本描述,默认值:['日', '一', '二', ' 名称 | 类型 | 默认值 | 描述 | 必传 -- | -- | -- | -- | -- +empty | String | - | 语言配置,“暂无数据”描述文本 | N +filterPlaceholder | String | - | 语言配置,“搜索框”占位描述文本 | N placeholder | String | - | 语言配置,未选中时的提示文案“选择选项”描述文本 | N title | String | - | 语言配置,组件标题“选择地址”描述文本 | N diff --git a/src/config-provider/type.ts b/src/config-provider/type.ts index f7f72e787..0bf632b1d 100644 --- a/src/config-provider/type.ts +++ b/src/config-provider/type.ts @@ -122,6 +122,16 @@ export interface CalendarConfig { } export interface CascaderConfig { + /** + * 语言配置,“暂无数据”描述文本 + * @default '' + */ + empty?: string; + /** + * 语言配置,“搜索框”占位描述文本 + * @default '' + */ + filterPlaceholder?: string; /** * 语言配置,未选中时的提示文案“选择选项”描述文本 * @default '' From 705472b54b422a29eb001dcba31c74b8ef042a03 Mon Sep 17 00:00:00 2001 From: v_luopinluo <173308582@qq.com> Date: Thu, 24 Sep 2026 11:18:52 +0800 Subject: [PATCH 4/7] =?UTF-8?q?fix(cascader):=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=BF=AB=E7=85=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/snap/__snapshots__/csr.test.jsx.snap | 1456 +++++++++++++++------ test/snap/__snapshots__/ssr.test.jsx.snap | 4 +- 2 files changed, 1080 insertions(+), 380 deletions(-) diff --git a/test/snap/__snapshots__/csr.test.jsx.snap b/test/snap/__snapshots__/csr.test.jsx.snap index 3ddca6eba..73e1a6cf3 100644 --- a/test/snap/__snapshots__/csr.test.jsx.snap +++ b/test/snap/__snapshots__/csr.test.jsx.snap @@ -118,7 +118,7 @@ exports[`csr snapshot test > csr test src/action-sheet/_example/align.tsx 1`] = csr test src/action-sheet/_example/align.tsx 1`] = d="M5 4H19V21L12 16L5 21V4Z" fill="transparent" id="fill1" - mask="url(#t-icon-bookmark-instance-_r_12v_-overlap-fill1)" + mask="url(#t-icon-bookmark-instance-_r_137_-overlap-fill1)" /> csr test src/action-sheet/_example/align.tsx 1`] = csr test src/action-sheet/_example/align.tsx 1`] = d="M21.962 6.28235L17.7197 2.04004L9.94034 8.39867L7.81896 6.27728L3.57422 10.522L13.4737 20.4215L17.7185 16.1768L15.5972 14.0555L21.962 6.28235Z" fill="transparent" id="fill1" - mask="url(#t-icon-pin-instance-_r_130_-overlap-fill1)" + mask="url(#t-icon-pin-instance-_r_138_-overlap-fill1)" /> csr test src/action-sheet/_example/align.tsx 1`] = csr test src/action-sheet/_example/align.tsx 1`] = d="M5 4H19V21L12 16L5 21V4Z" fill="transparent" id="fill1" - mask="url(#t-icon-bookmark-instance-_r_133_-overlap-fill1)" + mask="url(#t-icon-bookmark-instance-_r_13b_-overlap-fill1)" /> csr test src/action-sheet/_example/align.tsx 1`] = csr test src/action-sheet/_example/align.tsx 1`] = d="M21.962 6.28235L17.7197 2.04004L9.94034 8.39867L7.81896 6.27728L3.57422 10.522L13.4737 20.4215L17.7185 16.1768L15.5972 14.0555L21.962 6.28235Z" fill="transparent" id="fill1" - mask="url(#t-icon-pin-instance-_r_134_-overlap-fill1)" + mask="url(#t-icon-pin-instance-_r_13c_-overlap-fill1)" /> csr test src/action-sheet/_example/grid.tsx 1`] = ` csr test src/action-sheet/_example/grid.tsx 1`] = ` > csr test src/action-sheet/_example/grid.tsx 1`] = ` csr test src/action-sheet/_example/grid.tsx 1`] = ` d="M12.0001 3.67603L14.1867 9.96648L20.8449 10.1022L15.538 14.1256L17.4665 20.4999L12.0001 16.696L6.5337 20.4999L8.46217 14.1256L3.15527 10.1022L9.81354 9.96648L12.0001 3.67603Z" fill="transparent" id="fill1" - mask="url(#t-icon-star-instance-_r_12d_-overlap-fill1)" + mask="url(#t-icon-star-instance-_r_12l_-overlap-fill1)" /> csr test src/action-sheet/_example/grid.tsx 1`] = ` csr test src/action-sheet/_example/grid.tsx 1`] = ` csr test src/action-sheet/_example/grid.tsx 1`] = ` d="M3.0001 20.9999L7.5 20.9999L17.5 11L13 6.5L3.0001 16.5L3.0001 20.9999Z" fill="transparent" id="fill1" - mask="url(#t-icon-edit-1-instance-_r_12f_-overlap-fill1)" + mask="url(#t-icon-edit-1-instance-_r_12n_-overlap-fill1)" /> csr test src/action-sheet/_example/grid.tsx 1`] = ` csr test src/action-sheet/_example/grid.tsx 1`] = ` > csr test src/action-sheet/_example/grid.tsx 1`] = ` csr test src/action-sheet/_example/grid.tsx 1`] = ` d="M12.0001 3.67603L14.1867 9.96648L20.8449 10.1022L15.538 14.1256L17.4665 20.4999L12.0001 16.696L6.5337 20.4999L8.46217 14.1256L3.15527 10.1022L9.81354 9.96648L12.0001 3.67603Z" fill="transparent" id="fill1" - mask="url(#t-icon-star-instance-_r_12h_-overlap-fill1)" + mask="url(#t-icon-star-instance-_r_12p_-overlap-fill1)" /> csr test src/action-sheet/_example/grid.tsx 1`] = ` csr test src/action-sheet/_example/grid.tsx 1`] = ` csr test src/action-sheet/_example/grid.tsx 1`] = ` d="M3.0001 20.9999L7.5 20.9999L17.5 11L13 6.5L3.0001 16.5L3.0001 20.9999Z" fill="transparent" id="fill1" - mask="url(#t-icon-edit-1-instance-_r_12j_-overlap-fill1)" + mask="url(#t-icon-edit-1-instance-_r_12r_-overlap-fill1)" /> csr test src/action-sheet/_example/grid.tsx 1`] = ` csr test src/action-sheet/_example/grid.tsx 1`] = ` > csr test src/action-sheet/_example/grid.tsx 1`] = ` csr test src/action-sheet/_example/grid.tsx 1`] = ` d="M12.0001 3.67603L14.1867 9.96648L20.8449 10.1022L15.538 14.1256L17.4665 20.4999L12.0001 16.696L6.5337 20.4999L8.46217 14.1256L3.15527 10.1022L9.81354 9.96648L12.0001 3.67603Z" fill="transparent" id="fill1" - mask="url(#t-icon-star-instance-_r_12l_-overlap-fill1)" + mask="url(#t-icon-star-instance-_r_12t_-overlap-fill1)" /> csr test src/action-sheet/_example/grid.tsx 1`] = ` csr test src/action-sheet/_example/grid.tsx 1`] = ` csr test src/action-sheet/_example/grid.tsx 1`] = ` d="M3.0001 20.9999L7.5 20.9999L17.5 11L13 6.5L3.0001 16.5L3.0001 20.9999Z" fill="transparent" id="fill1" - mask="url(#t-icon-edit-1-instance-_r_12n_-overlap-fill1)" + mask="url(#t-icon-edit-1-instance-_r_12v_-overlap-fill1)" /> csr test src/action-sheet/_example/grid-multiple.ts csr test src/action-sheet/_example/grid-multiple.ts > csr test src/action-sheet/_example/grid-multiple.ts csr test src/action-sheet/_example/grid-multiple.ts d="M12.0001 3.67603L14.1867 9.96648L20.8449 10.1022L15.538 14.1256L17.4665 20.4999L12.0001 16.696L6.5337 20.4999L8.46217 14.1256L3.15527 10.1022L9.81354 9.96648L12.0001 3.67603Z" fill="transparent" id="fill1" - mask="url(#t-icon-star-instance-_r_12p_-overlap-fill1)" + mask="url(#t-icon-star-instance-_r_131_-overlap-fill1)" /> csr test src/action-sheet/_example/grid-multiple.ts csr test src/action-sheet/_example/grid-multiple.ts csr test src/action-sheet/_example/grid-multiple.ts d="M3.0001 20.9999L7.5 20.9999L17.5 11L13 6.5L3.0001 16.5L3.0001 20.9999Z" fill="transparent" id="fill1" - mask="url(#t-icon-edit-1-instance-_r_12r_-overlap-fill1)" + mask="url(#t-icon-edit-1-instance-_r_133_-overlap-fill1)" /> csr test src/action-sheet/_example/grid-multiple.ts csr test src/action-sheet/_example/grid-multiple.ts csr test src/action-sheet/_example/grid-multiple.ts d="M3 21H20L9 10L3 16V21Z" fill="transparent" id="fill1" - mask="url(#t-icon-image-instance-_r_12s_-overlap-fill1)" + mask="url(#t-icon-image-instance-_r_134_-overlap-fill1)" /> csr test src/action-sheet/_example/grid-multiple.ts csr test src/action-sheet/_example/grid-multiple.ts csr test src/action-sheet/_example/grid-multiple.ts d="M3 21H20L9 10L3 16V21Z" fill="transparent" id="fill1" - mask="url(#t-icon-image-instance-_r_12t_-overlap-fill1)" + mask="url(#t-icon-image-instance-_r_135_-overlap-fill1)" /> csr test src/action-sheet/_example/index.tsx 1`] = csr test src/action-sheet/_example/index.tsx 1`] = d="M5 4H19V21L12 16L5 21V4Z" fill="transparent" id="fill1" - mask="url(#t-icon-bookmark-instance-_r_11b_-overlap-fill1)" + mask="url(#t-icon-bookmark-instance-_r_11j_-overlap-fill1)" /> csr test src/action-sheet/_example/index.tsx 1`] = csr test src/action-sheet/_example/index.tsx 1`] = d="M21.962 6.28235L17.7197 2.04004L9.94034 8.39867L7.81896 6.27728L3.57422 10.522L13.4737 20.4215L17.7185 16.1768L15.5972 14.0555L21.962 6.28235Z" fill="transparent" id="fill1" - mask="url(#t-icon-pin-instance-_r_11c_-overlap-fill1)" + mask="url(#t-icon-pin-instance-_r_11k_-overlap-fill1)" /> csr test src/action-sheet/_example/index.tsx 1`] = csr test src/action-sheet/_example/index.tsx 1`] = > csr test src/action-sheet/_example/index.tsx 1`] = csr test src/action-sheet/_example/index.tsx 1`] = d="M12.0001 3.67603L14.1867 9.96648L20.8449 10.1022L15.538 14.1256L17.4665 20.4999L12.0001 16.696L6.5337 20.4999L8.46217 14.1256L3.15527 10.1022L9.81354 9.96648L12.0001 3.67603Z" fill="transparent" id="fill1" - mask="url(#t-icon-star-instance-_r_11f_-overlap-fill1)" + mask="url(#t-icon-star-instance-_r_11n_-overlap-fill1)" /> csr test src/action-sheet/_example/index.tsx 1`] = csr test src/action-sheet/_example/index.tsx 1`] = csr test src/action-sheet/_example/index.tsx 1`] = d="M3.0001 20.9999L7.5 20.9999L17.5 11L13 6.5L3.0001 16.5L3.0001 20.9999Z" fill="transparent" id="fill1" - mask="url(#t-icon-edit-1-instance-_r_11h_-overlap-fill1)" + mask="url(#t-icon-edit-1-instance-_r_11p_-overlap-fill1)" /> csr test src/action-sheet/_example/index.tsx 1`] = csr test src/action-sheet/_example/index.tsx 1`] = > csr test src/action-sheet/_example/index.tsx 1`] = csr test src/action-sheet/_example/index.tsx 1`] = d="M12.0001 3.67603L14.1867 9.96648L20.8449 10.1022L15.538 14.1256L17.4665 20.4999L12.0001 16.696L6.5337 20.4999L8.46217 14.1256L3.15527 10.1022L9.81354 9.96648L12.0001 3.67603Z" fill="transparent" id="fill1" - mask="url(#t-icon-star-instance-_r_11j_-overlap-fill1)" + mask="url(#t-icon-star-instance-_r_11r_-overlap-fill1)" /> csr test src/action-sheet/_example/index.tsx 1`] = csr test src/action-sheet/_example/index.tsx 1`] = csr test src/action-sheet/_example/index.tsx 1`] = d="M3.0001 20.9999L7.5 20.9999L17.5 11L13 6.5L3.0001 16.5L3.0001 20.9999Z" fill="transparent" id="fill1" - mask="url(#t-icon-edit-1-instance-_r_11l_-overlap-fill1)" + mask="url(#t-icon-edit-1-instance-_r_11t_-overlap-fill1)" /> csr test src/action-sheet/_example/index.tsx 1`] = csr test src/action-sheet/_example/index.tsx 1`] = > csr test src/action-sheet/_example/index.tsx 1`] = csr test src/action-sheet/_example/index.tsx 1`] = d="M12.0001 3.67603L14.1867 9.96648L20.8449 10.1022L15.538 14.1256L17.4665 20.4999L12.0001 16.696L6.5337 20.4999L8.46217 14.1256L3.15527 10.1022L9.81354 9.96648L12.0001 3.67603Z" fill="transparent" id="fill1" - mask="url(#t-icon-star-instance-_r_11n_-overlap-fill1)" + mask="url(#t-icon-star-instance-_r_11v_-overlap-fill1)" /> csr test src/action-sheet/_example/index.tsx 1`] = csr test src/action-sheet/_example/index.tsx 1`] = csr test src/action-sheet/_example/index.tsx 1`] = d="M3.0001 20.9999L7.5 20.9999L17.5 11L13 6.5L3.0001 16.5L3.0001 20.9999Z" fill="transparent" id="fill1" - mask="url(#t-icon-edit-1-instance-_r_11p_-overlap-fill1)" + mask="url(#t-icon-edit-1-instance-_r_121_-overlap-fill1)" /> csr test src/action-sheet/_example/index.tsx 1`] = csr test src/action-sheet/_example/index.tsx 1`] = > csr test src/action-sheet/_example/index.tsx 1`] = csr test src/action-sheet/_example/index.tsx 1`] = d="M12.0001 3.67603L14.1867 9.96648L20.8449 10.1022L15.538 14.1256L17.4665 20.4999L12.0001 16.696L6.5337 20.4999L8.46217 14.1256L3.15527 10.1022L9.81354 9.96648L12.0001 3.67603Z" fill="transparent" id="fill1" - mask="url(#t-icon-star-instance-_r_11r_-overlap-fill1)" + mask="url(#t-icon-star-instance-_r_123_-overlap-fill1)" /> csr test src/action-sheet/_example/index.tsx 1`] = csr test src/action-sheet/_example/index.tsx 1`] = csr test src/action-sheet/_example/index.tsx 1`] = d="M3.0001 20.9999L7.5 20.9999L17.5 11L13 6.5L3.0001 16.5L3.0001 20.9999Z" fill="transparent" id="fill1" - mask="url(#t-icon-edit-1-instance-_r_11t_-overlap-fill1)" + mask="url(#t-icon-edit-1-instance-_r_125_-overlap-fill1)" /> csr test src/action-sheet/_example/index.tsx 1`] = csr test src/action-sheet/_example/index.tsx 1`] = csr test src/action-sheet/_example/index.tsx 1`] = d="M3 21H20L9 10L3 16V21Z" fill="transparent" id="fill1" - mask="url(#t-icon-image-instance-_r_11u_-overlap-fill1)" + mask="url(#t-icon-image-instance-_r_126_-overlap-fill1)" /> csr test src/action-sheet/_example/index.tsx 1`] = csr test src/action-sheet/_example/index.tsx 1`] = csr test src/action-sheet/_example/index.tsx 1`] = d="M3 21H20L9 10L3 16V21Z" fill="transparent" id="fill1" - mask="url(#t-icon-image-instance-_r_11v_-overlap-fill1)" + mask="url(#t-icon-image-instance-_r_127_-overlap-fill1)" /> csr test src/action-sheet/_example/index.tsx 1`] = csr test src/action-sheet/_example/index.tsx 1`] = d="M5 4H19V21L12 16L5 21V4Z" fill="transparent" id="fill1" - mask="url(#t-icon-bookmark-instance-_r_121_-overlap-fill1)" + mask="url(#t-icon-bookmark-instance-_r_129_-overlap-fill1)" /> csr test src/action-sheet/_example/index.tsx 1`] = csr test src/action-sheet/_example/index.tsx 1`] = d="M21.962 6.28235L17.7197 2.04004L9.94034 8.39867L7.81896 6.27728L3.57422 10.522L13.4737 20.4215L17.7185 16.1768L15.5972 14.0555L21.962 6.28235Z" fill="transparent" id="fill1" - mask="url(#t-icon-pin-instance-_r_122_-overlap-fill1)" + mask="url(#t-icon-pin-instance-_r_12a_-overlap-fill1)" /> csr test src/action-sheet/_example/index.tsx 1`] = csr test src/action-sheet/_example/index.tsx 1`] = d="M5 4H19V21L12 16L5 21V4Z" fill="transparent" id="fill1" - mask="url(#t-icon-bookmark-instance-_r_125_-overlap-fill1)" + mask="url(#t-icon-bookmark-instance-_r_12d_-overlap-fill1)" /> csr test src/action-sheet/_example/index.tsx 1`] = csr test src/action-sheet/_example/index.tsx 1`] = d="M21.962 6.28235L17.7197 2.04004L9.94034 8.39867L7.81896 6.27728L3.57422 10.522L13.4737 20.4215L17.7185 16.1768L15.5972 14.0555L21.962 6.28235Z" fill="transparent" id="fill1" - mask="url(#t-icon-pin-instance-_r_126_-overlap-fill1)" + mask="url(#t-icon-pin-instance-_r_12e_-overlap-fill1)" /> csr test src/action-sheet/_example/index.tsx 1`] = csr test src/action-sheet/_example/index.tsx 1`] = d="M5 4H19V21L12 16L5 21V4Z" fill="transparent" id="fill1" - mask="url(#t-icon-bookmark-instance-_r_129_-overlap-fill1)" + mask="url(#t-icon-bookmark-instance-_r_12h_-overlap-fill1)" /> csr test src/action-sheet/_example/index.tsx 1`] = csr test src/action-sheet/_example/index.tsx 1`] = d="M21.962 6.28235L17.7197 2.04004L9.94034 8.39867L7.81896 6.27728L3.57422 10.522L13.4737 20.4215L17.7185 16.1768L15.5972 14.0555L21.962 6.28235Z" fill="transparent" id="fill1" - mask="url(#t-icon-pin-instance-_r_12a_-overlap-fill1)" + mask="url(#t-icon-pin-instance-_r_12i_-overlap-fill1)" /> csr test src/action-sheet/_example/list.tsx 1`] = ` csr test src/action-sheet/_example/list.tsx 1`] = ` d="M5 4H19V21L12 16L5 21V4Z" fill="transparent" id="fill1" - mask="url(#t-icon-bookmark-instance-_r_117_-overlap-fill1)" + mask="url(#t-icon-bookmark-instance-_r_11f_-overlap-fill1)" /> csr test src/action-sheet/_example/list.tsx 1`] = ` csr test src/action-sheet/_example/list.tsx 1`] = ` d="M21.962 6.28235L17.7197 2.04004L9.94034 8.39867L7.81896 6.27728L3.57422 10.522L13.4737 20.4215L17.7185 16.1768L15.5972 14.0555L21.962 6.28235Z" fill="transparent" id="fill1" - mask="url(#t-icon-pin-instance-_r_118_-overlap-fill1)" + mask="url(#t-icon-pin-instance-_r_11g_-overlap-fill1)" /> csr test src/action-sheet/_example/status.tsx 1`] = csr test src/action-sheet/_example/status.tsx 1`] = d="M5 4H19V21L12 16L5 21V4Z" fill="transparent" id="fill1" - mask="url(#t-icon-bookmark-instance-_r_113_-overlap-fill1)" + mask="url(#t-icon-bookmark-instance-_r_11b_-overlap-fill1)" /> csr test src/action-sheet/_example/status.tsx 1`] = csr test src/action-sheet/_example/status.tsx 1`] = d="M21.962 6.28235L17.7197 2.04004L9.94034 8.39867L7.81896 6.27728L3.57422 10.522L13.4737 20.4215L17.7185 16.1768L15.5972 14.0555L21.962 6.28235Z" fill="transparent" id="fill1" - mask="url(#t-icon-pin-instance-_r_114_-overlap-fill1)" + mask="url(#t-icon-pin-instance-_r_11c_-overlap-fill1)" /> csr test src/avatar/_example/action.tsx 1`] = ` csr test src/avatar/_example/action.tsx 1`] = ` d="M16 7.5C16 9.98528 13.9853 12 11.5 12C9.01472 12 7 9.98528 7 7.5C7 5.01472 9.01472 3 11.5 3C13.9853 3 16 5.01472 16 7.5Z" fill="transparent" id="fill1" - mask="url(#t-icon-user-add-instance-_r_111_-overlap-fill1)" + mask="url(#t-icon-user-add-instance-_r_119_-overlap-fill1)" /> csr test src/avatar/_example/badge-avatar.tsx 1`] = csr test src/avatar/_example/badge-avatar.tsx 1`] = > csr test src/avatar/_example/icon-avatar.tsx 1`] = csr test src/avatar/_example/icon-avatar.tsx 1`] = > csr test src/avatar/_example/icon-avatar.tsx 1`] = csr test src/avatar/_example/icon-avatar.tsx 1`] = > csr test src/avatar/_example/index.tsx 1`] = ` csr test src/avatar/_example/index.tsx 1`] = ` > csr test src/avatar/_example/index.tsx 1`] = ` csr test src/avatar/_example/index.tsx 1`] = ` > csr test src/avatar/_example/index.tsx 1`] = ` csr test src/avatar/_example/index.tsx 1`] = ` > csr test src/avatar/_example/index.tsx 1`] = ` csr test src/avatar/_example/index.tsx 1`] = ` d="M16 7.5C16 9.98528 13.9853 12 11.5 12C9.01472 12 7 9.98528 7 7.5C7 5.01472 9.01472 3 11.5 3C13.9853 3 16 5.01472 16 7.5Z" fill="transparent" id="fill1" - mask="url(#t-icon-user-add-instance-_r_10q_-overlap-fill1)" + mask="url(#t-icon-user-add-instance-_r_112_-overlap-fill1)" /> csr test src/avatar/_example/index.tsx 1`] = ` csr test src/avatar/_example/index.tsx 1`] = ` > csr test src/avatar/_example/index.tsx 1`] = ` csr test src/avatar/_example/index.tsx 1`] = ` > csr test src/avatar/_example/index.tsx 1`] = ` csr test src/avatar/_example/index.tsx 1`] = ` > csr test src/avatar/_example/size.tsx 1`] = ` csr test src/avatar/_example/size.tsx 1`] = ` > csr test src/avatar/_example/size.tsx 1`] = ` csr test src/avatar/_example/size.tsx 1`] = ` > csr test src/avatar/_example/size.tsx 1`] = ` csr test src/avatar/_example/size.tsx 1`] = ` > csr test src/badge/_example/base.tsx 1`] = ` csr test src/badge/_example/base.tsx 1`] = ` csr test src/badge/_example/base.tsx 1`] = ` d="M3 19H21V16L19 13V8C19 4.13401 15.866 1 12 1C8.13401 1 5 4.13401 5 8V13L3 16V19Z" fill="transparent" id="fill1" - mask="url(#t-icon-notification-instance-_r_10h_-overlap-fill1)" + mask="url(#t-icon-notification-instance-_r_10p_-overlap-fill1)" /> csr test src/badge/_example/base.tsx 1`] = ` csr test src/badge/_example/base.tsx 1`] = ` csr test src/badge/_example/base.tsx 1`] = ` d="M3 19H21V16L19 13V8C19 4.13401 15.866 1 12 1C8.13401 1 5 4.13401 5 8V13L3 16V19Z" fill="transparent" id="fill1" - mask="url(#t-icon-notification-instance-_r_10i_-overlap-fill1)" + mask="url(#t-icon-notification-instance-_r_10q_-overlap-fill1)" /> csr test src/badge/_example/base.tsx 1`] = ` csr test src/badge/_example/base.tsx 1`] = ` csr test src/badge/_example/base.tsx 1`] = ` d="M3 19H21V16L19 13V8C19 4.13401 15.866 1 12 1C8.13401 1 5 4.13401 5 8V13L3 16V19Z" fill="transparent" id="fill1" - mask="url(#t-icon-notification-instance-_r_10j_-overlap-fill1)" + mask="url(#t-icon-notification-instance-_r_10r_-overlap-fill1)" /> csr test src/badge/_example/index.tsx 1`] = ` csr test src/badge/_example/index.tsx 1`] = ` csr test src/badge/_example/index.tsx 1`] = ` d="M3 19H21V16L19 13V8C19 4.13401 15.866 1 12 1C8.13401 1 5 4.13401 5 8V13L3 16V19Z" fill="transparent" id="fill1" - mask="url(#t-icon-notification-instance-_r_109_-overlap-fill1)" + mask="url(#t-icon-notification-instance-_r_10h_-overlap-fill1)" /> csr test src/badge/_example/index.tsx 1`] = ` csr test src/badge/_example/index.tsx 1`] = ` csr test src/badge/_example/index.tsx 1`] = ` d="M3 19H21V16L19 13V8C19 4.13401 15.866 1 12 1C8.13401 1 5 4.13401 5 8V13L3 16V19Z" fill="transparent" id="fill1" - mask="url(#t-icon-notification-instance-_r_10a_-overlap-fill1)" + mask="url(#t-icon-notification-instance-_r_10i_-overlap-fill1)" /> csr test src/badge/_example/index.tsx 1`] = ` csr test src/badge/_example/index.tsx 1`] = ` csr test src/badge/_example/index.tsx 1`] = ` d="M3 19H21V16L19 13V8C19 4.13401 15.866 1 12 1C8.13401 1 5 4.13401 5 8V13L3 16V19Z" fill="transparent" id="fill1" - mask="url(#t-icon-notification-instance-_r_10b_-overlap-fill1)" + mask="url(#t-icon-notification-instance-_r_10j_-overlap-fill1)" /> csr test src/badge/_example/index.tsx 1`] = ` csr test src/badge/_example/index.tsx 1`] = ` csr test src/badge/_example/index.tsx 1`] = ` d="M3 19H21V16L19 13V8C19 4.13401 15.866 1 12 1C8.13401 1 5 4.13401 5 8V13L3 16V19Z" fill="transparent" id="fill1" - mask="url(#t-icon-notification-instance-_r_10c_-overlap-fill1)" + mask="url(#t-icon-notification-instance-_r_10k_-overlap-fill1)" /> csr test src/badge/_example/index.tsx 1`] = ` csr test src/badge/_example/index.tsx 1`] = ` csr test src/badge/_example/index.tsx 1`] = ` d="M3 19H21V16L19 13V8C19 4.13401 15.866 1 12 1C8.13401 1 5 4.13401 5 8V13L3 16V19Z" fill="transparent" id="fill1" - mask="url(#t-icon-notification-instance-_r_10d_-overlap-fill1)" + mask="url(#t-icon-notification-instance-_r_10l_-overlap-fill1)" /> csr test src/badge/_example/index.tsx 1`] = ` csr test src/badge/_example/index.tsx 1`] = ` d="M4 8H20V22H4V8Z" fill="transparent" id="fill1" - mask="url(#t-icon-shop-instance-_r_10e_-overlap-fill1)" + mask="url(#t-icon-shop-instance-_r_10m_-overlap-fill1)" /> csr test src/badge/_example/index.tsx 1`] = ` csr test src/badge/_example/index.tsx 1`] = ` > csr test src/badge/_example/index.tsx 1`] = ` csr test src/badge/_example/index.tsx 1`] = ` > csr test src/badge/_example/size.tsx 1`] = ` csr test src/badge/_example/size.tsx 1`] = ` > csr test src/badge/_example/size.tsx 1`] = ` csr test src/badge/_example/size.tsx 1`] = ` > csr test src/badge/_example/theme.tsx 1`] = ` csr test src/badge/_example/theme.tsx 1`] = ` csr test src/badge/_example/theme.tsx 1`] = ` d="M3 19H21V16L19 13V8C19 4.13401 15.866 1 12 1C8.13401 1 5 4.13401 5 8V13L3 16V19Z" fill="transparent" id="fill1" - mask="url(#t-icon-notification-instance-_r_104_-overlap-fill1)" + mask="url(#t-icon-notification-instance-_r_10c_-overlap-fill1)" /> csr test src/badge/_example/theme.tsx 1`] = ` csr test src/badge/_example/theme.tsx 1`] = ` csr test src/badge/_example/theme.tsx 1`] = ` d="M3 19H21V16L19 13V8C19 4.13401 15.866 1 12 1C8.13401 1 5 4.13401 5 8V13L3 16V19Z" fill="transparent" id="fill1" - mask="url(#t-icon-notification-instance-_r_105_-overlap-fill1)" + mask="url(#t-icon-notification-instance-_r_10d_-overlap-fill1)" /> csr test src/badge/_example/theme.tsx 1`] = ` csr test src/badge/_example/theme.tsx 1`] = ` d="M4 8H20V22H4V8Z" fill="transparent" id="fill1" - mask="url(#t-icon-shop-instance-_r_106_-overlap-fill1)" + mask="url(#t-icon-shop-instance-_r_10e_-overlap-fill1)" /> csr test src/button/_example/icon.tsx 1`] = ` csr test src/button/_example/icon.tsx 1`] = ` csr test src/button/_example/icon.tsx 1`] = ` > csr test src/button/_example/icon.tsx 1`] = ` d="M21.5 6.5C21.5 8.70914 19.7091 10.5 17.5 10.5C15.2909 10.5 13.5 8.70914 13.5 6.5C13.5 4.29086 15.2909 2.5 17.5 2.5C19.7091 2.5 21.5 4.29086 21.5 6.5Z" fill="transparent" id="fill2" - mask="url(#t-icon-app-instance-_r_102_-overlap-fill2)" + mask="url(#t-icon-app-instance-_r_10a_-overlap-fill2)" /> csr test src/button/_example/icon.tsx 1`] = ` csr test src/button/_example/icon.tsx 1`] = ` csr test src/button/_example/icon.tsx 1`] = ` > csr test src/button/_example/icon.tsx 1`] = ` d="M21.5 6.5C21.5 8.70914 19.7091 10.5 17.5 10.5C15.2909 10.5 13.5 8.70914 13.5 6.5C13.5 4.29086 15.2909 2.5 17.5 2.5C19.7091 2.5 21.5 4.29086 21.5 6.5Z" fill="transparent" id="fill2" - mask="url(#t-icon-app-instance-_r_103_-overlap-fill2)" + mask="url(#t-icon-app-instance-_r_10b_-overlap-fill2)" /> csr test src/button/_example/index.tsx 1`] = ` csr test src/button/_example/index.tsx 1`] = ` csr test src/button/_example/index.tsx 1`] = ` > csr test src/button/_example/index.tsx 1`] = ` d="M21.5 6.5C21.5 8.70914 19.7091 10.5 17.5 10.5C15.2909 10.5 13.5 8.70914 13.5 6.5C13.5 4.29086 15.2909 2.5 17.5 2.5C19.7091 2.5 21.5 4.29086 21.5 6.5Z" fill="transparent" id="fill2" - mask="url(#t-icon-app-instance-_r_vu_-overlap-fill2)" + mask="url(#t-icon-app-instance-_r_106_-overlap-fill2)" /> csr test src/button/_example/index.tsx 1`] = ` csr test src/button/_example/index.tsx 1`] = ` csr test src/button/_example/index.tsx 1`] = ` > csr test src/button/_example/index.tsx 1`] = ` d="M21.5 6.5C21.5 8.70914 19.7091 10.5 17.5 10.5C15.2909 10.5 13.5 8.70914 13.5 6.5C13.5 4.29086 15.2909 2.5 17.5 2.5C19.7091 2.5 21.5 4.29086 21.5 6.5Z" fill="transparent" id="fill2" - mask="url(#t-icon-app-instance-_r_vv_-overlap-fill2)" + mask="url(#t-icon-app-instance-_r_107_-overlap-fill2)" /> csr test src/button/_example/index.tsx 1`] = ` csr test src/button/_example/index.tsx 1`] = ` csr test src/button/_example/index.tsx 1`] = ` > csr test src/button/_example/index.tsx 1`] = ` d="M21.5 6.5C21.5 8.70914 19.7091 10.5 17.5 10.5C15.2909 10.5 13.5 8.70914 13.5 6.5C13.5 4.29086 15.2909 2.5 17.5 2.5C19.7091 2.5 21.5 4.29086 21.5 6.5Z" fill="transparent" id="fill2" - mask="url(#t-icon-app-instance-_r_100_-overlap-fill2)" + mask="url(#t-icon-app-instance-_r_108_-overlap-fill2)" /> csr test src/button/_example/index.tsx 1`] = ` csr test src/button/_example/index.tsx 1`] = ` csr test src/button/_example/index.tsx 1`] = ` > csr test src/button/_example/index.tsx 1`] = ` d="M21.5 6.5C21.5 8.70914 19.7091 10.5 17.5 10.5C15.2909 10.5 13.5 8.70914 13.5 6.5C13.5 4.29086 15.2909 2.5 17.5 2.5C19.7091 2.5 21.5 4.29086 21.5 6.5Z" fill="transparent" id="fill2" - mask="url(#t-icon-app-instance-_r_101_-overlap-fill2)" + mask="url(#t-icon-app-instance-_r_109_-overlap-fill2)" /> csr test src/button/_example/shape.tsx 1`] = ` csr test src/button/_example/shape.tsx 1`] = ` csr test src/button/_example/shape.tsx 1`] = ` > csr test src/button/_example/shape.tsx 1`] = ` d="M21.5 6.5C21.5 8.70914 19.7091 10.5 17.5 10.5C15.2909 10.5 13.5 8.70914 13.5 6.5C13.5 4.29086 15.2909 2.5 17.5 2.5C19.7091 2.5 21.5 4.29086 21.5 6.5Z" fill="transparent" id="fill2" - mask="url(#t-icon-app-instance-_r_vs_-overlap-fill2)" + mask="url(#t-icon-app-instance-_r_104_-overlap-fill2)" /> csr test src/button/_example/shape.tsx 1`] = ` csr test src/button/_example/shape.tsx 1`] = ` csr test src/button/_example/shape.tsx 1`] = ` > csr test src/button/_example/shape.tsx 1`] = ` d="M21.5 6.5C21.5 8.70914 19.7091 10.5 17.5 10.5C15.2909 10.5 13.5 8.70914 13.5 6.5C13.5 4.29086 15.2909 2.5 17.5 2.5C19.7091 2.5 21.5 4.29086 21.5 6.5Z" fill="transparent" id="fill2" - mask="url(#t-icon-app-instance-_r_vt_-overlap-fill2)" + mask="url(#t-icon-app-instance-_r_105_-overlap-fill2)" /> csr test src/cascader/_example/check-strictly.tsx 1
`; +exports[`csr snapshot test > csr test src/cascader/_example/filterable.tsx 1`] = ` +
+
+
+
+
+ 地址 +
+
+
+ 请选择地址 +
+
+
+ + + + + +
+
+
+ +
+
+
+
+
+
+

+ 选择任意一项 +

+
+
+
+
+
+
+ 地址 +
+
+
+ 请选择地址 +
+
+
+ + + + + +
+
+
+