@luoluoyu/fluentui-plus 0.1.7 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/README.md +18 -8
  2. package/dist/components/InputTag/Input.d.ts +5 -0
  3. package/dist/components/InputTag/Input.d.ts.map +1 -0
  4. package/dist/components/InputTag/InputTag.d.ts +6 -0
  5. package/dist/components/InputTag/InputTag.d.ts.map +1 -0
  6. package/dist/components/InputTag/TagList.d.ts +5 -0
  7. package/dist/components/InputTag/TagList.d.ts.map +1 -0
  8. package/dist/components/InputTag/hooks/index.d.ts +4 -0
  9. package/dist/components/InputTag/hooks/index.d.ts.map +1 -0
  10. package/dist/components/InputTag/hooks/useInputHandlers.d.ts +21 -0
  11. package/dist/components/InputTag/hooks/useInputHandlers.d.ts.map +1 -0
  12. package/dist/components/InputTag/hooks/useInputTag.d.ts +16 -0
  13. package/dist/components/InputTag/hooks/useInputTag.d.ts.map +1 -0
  14. package/dist/components/InputTag/index.d.ts +3 -0
  15. package/dist/components/InputTag/index.d.ts.map +1 -0
  16. package/dist/components/InputTag/types.d.ts +53 -0
  17. package/dist/components/InputTag/types.d.ts.map +1 -0
  18. package/dist/components/Nav/Nav.d.ts +6 -0
  19. package/dist/components/Nav/Nav.d.ts.map +1 -0
  20. package/dist/components/Nav/NavItem.d.ts +5 -0
  21. package/dist/components/Nav/NavItem.d.ts.map +1 -0
  22. package/dist/components/Nav/NavSubmenu.d.ts +9 -0
  23. package/dist/components/Nav/NavSubmenu.d.ts.map +1 -0
  24. package/dist/components/Nav/hooks/index.d.ts +3 -0
  25. package/dist/components/Nav/hooks/index.d.ts.map +1 -0
  26. package/dist/components/Nav/hooks/useNavigation.d.ts +25 -0
  27. package/dist/components/Nav/hooks/useNavigation.d.ts.map +1 -0
  28. package/dist/components/Nav/index.d.ts +3 -0
  29. package/dist/components/Nav/index.d.ts.map +1 -0
  30. package/dist/components/Nav/types.d.ts +43 -0
  31. package/dist/components/Nav/types.d.ts.map +1 -0
  32. package/dist/components/Select/Listbox.d.ts +5 -0
  33. package/dist/components/Select/Listbox.d.ts.map +1 -0
  34. package/dist/components/Select/MultipleSelector.d.ts +5 -0
  35. package/dist/components/Select/MultipleSelector.d.ts.map +1 -0
  36. package/dist/components/Select/OptionItem.d.ts +5 -0
  37. package/dist/components/Select/OptionItem.d.ts.map +1 -0
  38. package/dist/components/Select/SearchInput.d.ts +5 -0
  39. package/dist/components/Select/SearchInput.d.ts.map +1 -0
  40. package/dist/components/Select/Select.d.ts +6 -0
  41. package/dist/components/Select/Select.d.ts.map +1 -0
  42. package/dist/components/Select/Selector.d.ts +5 -0
  43. package/dist/components/Select/Selector.d.ts.map +1 -0
  44. package/dist/components/Select/TextDisplay.d.ts +5 -0
  45. package/dist/components/Select/TextDisplay.d.ts.map +1 -0
  46. package/dist/components/Select/hooks/index.d.ts +8 -0
  47. package/dist/components/Select/hooks/index.d.ts.map +1 -0
  48. package/dist/components/Select/hooks/useClickOutside.d.ts +12 -0
  49. package/dist/components/Select/hooks/useClickOutside.d.ts.map +1 -0
  50. package/dist/components/Select/hooks/useFloatingPosition.d.ts +15 -0
  51. package/dist/components/Select/hooks/useFloatingPosition.d.ts.map +1 -0
  52. package/dist/components/Select/hooks/useOptionSelection.d.ts +27 -0
  53. package/dist/components/Select/hooks/useOptionSelection.d.ts.map +1 -0
  54. package/dist/components/Select/hooks/useSelect.d.ts +47 -0
  55. package/dist/components/Select/hooks/useSelect.d.ts.map +1 -0
  56. package/dist/components/Select/hooks/useSelectSearch.d.ts +25 -0
  57. package/dist/components/Select/hooks/useSelectSearch.d.ts.map +1 -0
  58. package/dist/components/Select/hooks/useSelectState.d.ts +18 -0
  59. package/dist/components/Select/hooks/useSelectState.d.ts.map +1 -0
  60. package/dist/components/Select/index.d.ts +3 -0
  61. package/dist/components/Select/index.d.ts.map +1 -0
  62. package/dist/components/Select/types.d.ts +96 -0
  63. package/dist/components/Select/types.d.ts.map +1 -0
  64. package/dist/components/Tag/CheckableTag.d.ts +2 -5
  65. package/dist/components/Tag/CheckableTag.d.ts.map +1 -1
  66. package/dist/components/Tag/Tag.d.ts +3 -11
  67. package/dist/components/Tag/Tag.d.ts.map +1 -1
  68. package/dist/components/Tag/types.d.ts +15 -0
  69. package/dist/components/Tag/types.d.ts.map +1 -0
  70. package/dist/components/index.d.ts +6 -0
  71. package/dist/components/index.d.ts.map +1 -1
  72. package/dist/hooks/index.d.ts +4 -0
  73. package/dist/hooks/index.d.ts.map +1 -0
  74. package/dist/hooks/useInputValue.d.ts +27 -0
  75. package/dist/hooks/useInputValue.d.ts.map +1 -0
  76. package/dist/hooks/useTagManager.d.ts +27 -0
  77. package/dist/hooks/useTagManager.d.ts.map +1 -0
  78. package/dist/index.esm.js +6635 -743
  79. package/dist/index.esm.js.map +1 -1
  80. package/dist/style.css +1 -1
  81. package/package.json +16 -3
package/README.md CHANGED
@@ -31,14 +31,23 @@ yarn add @luoluoyu/fluentui-plus @fluentui/react-components
31
31
 
32
32
  ```jsx
33
33
  import React from 'react';
34
- import { Button, Tag } from '@luoluoyu/fluentui-plus';
34
+ import { Tag, InputTag, Nav } from '@luoluoyu/fluentui-plus';
35
35
  // 样式会自动导入,无需手动引入
36
36
 
37
37
  function App() {
38
+ const navItems = [
39
+ { key: 'home', label: '首页', icon: '🏠', title: '首页' },
40
+ { key: 'components', label: '组件', icon: '📦', title: '组件' },
41
+ ];
42
+
38
43
  return (
39
44
  <div>
40
- <Button variant='primary'>主要按钮</Button>
41
- <Tag color='primary'>标签</Tag>
45
+ <Tag color='#1890ff'>蓝色标签</Tag>
46
+ <Tag.CheckableTag checked={true} onChange={checked => console.log(checked)}>
47
+ 可选择标签
48
+ </Tag.CheckableTag>
49
+ <InputTag defaultValue={['React', 'TypeScript']} placeholder='输入标签...' maxTags={10} allowDuplicates={false} />
50
+ <Nav items={navItems} defaultSelectedKeys={['home']} onSelect={info => console.log('选择了:', info.key)} />
42
51
  </div>
43
52
  );
44
53
  }
@@ -50,7 +59,7 @@ function App() {
50
59
 
51
60
  ```less
52
61
  // your-theme.less
53
- @import '~fluentui-plus/lib/styles/variables.less';
62
+ @import '~@luoluoyu/fluentui-plus/dist/styles/variables.less';
54
63
 
55
64
  // 覆盖品牌色
56
65
  @brand-primary: #your-brand-color;
@@ -62,20 +71,21 @@ function App() {
62
71
  你可以直接从主包按需引入组件(推荐方式,支持 tree-shaking):
63
72
 
64
73
  ```jsx
65
- import { Button, Input } from 'fluentui-plus';
74
+ import { Tag, InputTag, Nav } from '@luoluoyu/fluentui-plus';
66
75
  ```
67
76
 
68
77
  如果需要兼容某些工具链或自定义打包方式,也可以使用子路径导入:
69
78
 
70
79
  ```jsx
71
- import Button from 'fluentui-plus/lib/Button';
72
- import Input from 'fluentui-plus/lib/Input';
80
+ import Tag from '@luoluoyu/fluentui-plus/lib/Tag';
81
+ import InputTag from '@luoluoyu/fluentui-plus/lib/InputTag';
73
82
  ```
74
83
 
75
84
  ## 👥 开发指南
76
85
 
77
86
  如果你是团队成员或想要为项目贡献代码,请参考以下文档:
78
87
 
88
+ - **[API 参考文档](./docs/API_REFERENCE.md)** - 详细的组件 API 文档和使用示例
79
89
  - **[开发规范与工作流指南](./docs/DEVELOPMENT_GUIDE.md)** - 详细的开发规范、提交规范和工作流说明
80
90
  - **[快速参考](./docs/QUICK_REFERENCE.md)** - 常用命令和规范的快速参考卡片
81
91
  - **[贡献指南](./docs/CONTRIBUTING.md)** - 如何参与项目贡献
@@ -109,7 +119,7 @@ git commit -m "fix(Button): resolve click event issue"
109
119
 
110
120
  - [📖 文档地址](https://your-docs-site.com)
111
121
  - [🐛 问题反馈](https://github.com/HuiruDong/fluentui-plus/issues)
112
- - [📦 NPM 包](https://www.npmjs.com/package/fluentui-plus)
122
+ - [📦 NPM 包](https://www.npmjs.com/package/@luoluoyu/fluentui-plus)
113
123
 
114
124
  ## 🤝 参与贡献
115
125
 
@@ -0,0 +1,5 @@
1
+ import { default as React } from 'react';
2
+ import { InputProps } from './types';
3
+ declare const Input: React.FC<InputProps>;
4
+ export default Input;
5
+ //# sourceMappingURL=Input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../src/components/InputTag/Input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAI1C,QAAA,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CA8B/B,CAAC;AAEF,eAAe,KAAK,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { default as React } from 'react';
2
+ import { InputTagProps } from './types';
3
+ declare const InputTag: React.FC<InputTagProps>;
4
+ export default InputTag;
5
+ export type { InputTagProps };
6
+ //# sourceMappingURL=InputTag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputTag.d.ts","sourceRoot":"","sources":["../../../src/components/InputTag/InputTag.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAK9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,cAAc,CAAC;AAItB,QAAA,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAkHrC,CAAC;AAEF,eAAe,QAAQ,CAAC;AACxB,YAAY,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { default as React } from 'react';
2
+ import { TagListProps } from './types';
3
+ declare const TagList: React.FC<TagListProps>;
4
+ export default TagList;
5
+ //# sourceMappingURL=TagList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TagList.d.ts","sourceRoot":"","sources":["../../../src/components/InputTag/TagList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAE3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAI5C,QAAA,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAyCnC,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { useInputTag } from './useInputTag';
2
+ import { useInputHandlers } from './useInputHandlers';
3
+ export { useInputTag, useInputHandlers, };
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/InputTag/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAEL,WAAW,EAGX,gBAAgB,GACjB,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { default as React } from 'react';
2
+ export interface UseInputHandlersProps {
3
+ onInputChange?: (value: string) => void;
4
+ addTag: (tag: string) => boolean;
5
+ removeTag: (index: number) => boolean;
6
+ addMultipleTags: (tags: string[]) => number;
7
+ getCurrentTags: () => string[];
8
+ isDeleting: boolean;
9
+ delimiter?: string | RegExp;
10
+ }
11
+ export declare const useInputHandlers: ({ onInputChange, addTag, removeTag, addMultipleTags, getCurrentTags, isDeleting, delimiter, }: UseInputHandlersProps) => {
12
+ inputValue: string;
13
+ isFocused: boolean;
14
+ setIsFocused: React.Dispatch<React.SetStateAction<boolean>>;
15
+ handleInputChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
16
+ handleKeyDown: (e: React.KeyboardEvent<HTMLInputElement>) => void;
17
+ handlePaste: (e: React.ClipboardEvent<HTMLInputElement>) => void;
18
+ handleContainerBlur: (e: React.FocusEvent<HTMLDivElement>) => void;
19
+ handleInputBlur: (_: React.FocusEvent<HTMLInputElement>) => void;
20
+ };
21
+ //# sourceMappingURL=useInputHandlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInputHandlers.d.ts","sourceRoot":"","sources":["../../../../src/components/InputTag/hooks/useInputHandlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAG3C,MAAM,WAAW,qBAAqB;IACpC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACjC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC;IAC5C,cAAc,EAAE,MAAM,MAAM,EAAE,CAAC;IAC/B,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7B;AAED,eAAO,MAAM,gBAAgB,GAAI,+FAQ9B,qBAAqB;;;;2BAQhB,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC;uBA+CnC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC;qBAcrC,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC;6BA2BtC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC;yBAcE,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC;CAc3E,CAAC"}
@@ -0,0 +1,16 @@
1
+ export interface UseInputTagProps {
2
+ value?: string[];
3
+ defaultValue?: string[];
4
+ onChange?: (tags: string[]) => void;
5
+ maxTags?: number;
6
+ allowDuplicates?: boolean;
7
+ onTagRemove?: (tag: string, index: number) => void;
8
+ }
9
+ export declare const useInputTag: ({ value, defaultValue, onChange, maxTags, allowDuplicates, onTagRemove, }: UseInputTagProps) => {
10
+ getCurrentTags: () => string[];
11
+ addTag: (tag: string) => boolean;
12
+ removeTag: (indexToRemove: number) => boolean;
13
+ addMultipleTags: (tags: string[]) => number;
14
+ isDeleting: boolean;
15
+ };
16
+ //# sourceMappingURL=useInputTag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInputTag.d.ts","sourceRoot":"","sources":["../../../../src/components/InputTag/hooks/useInputTag.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACpD;AAED,eAAO,MAAM,WAAW,GAAI,2EAOzB,gBAAgB;;kBAmBT,MAAM;+BAQI,MAAM;4BA2Bf,MAAM,EAAE;;CAalB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { default as InputTag } from './InputTag';
2
+ export type { InputTagProps } from './types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/InputTag/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGjD,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,53 @@
1
+ import { default as React } from 'react';
2
+ interface BaseInputTagProps {
3
+ /** 输入框占位符 */
4
+ placeholder?: string;
5
+ /** 是否禁用 */
6
+ disabled?: boolean;
7
+ /** 自定义样式类名 */
8
+ className?: string;
9
+ /** 自定义内联样式 */
10
+ style?: React.CSSProperties;
11
+ }
12
+ interface BaseTagProps {
13
+ /** 标签是否可关闭 */
14
+ tagClosable?: boolean;
15
+ /** 自定义标签渲染 */
16
+ renderTag?: (tag: string, index: number, onClose: () => void) => React.ReactNode;
17
+ /** 标签被移除时的回调 */
18
+ onTagRemove?: (tag: string, index: number) => void;
19
+ }
20
+ export interface InputProps extends BaseInputTagProps {
21
+ value: string;
22
+ inputRef: React.RefObject<HTMLInputElement>;
23
+ onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
24
+ onKeyDown: (e: React.KeyboardEvent<HTMLInputElement>) => void;
25
+ onFocus: () => void;
26
+ onBlur: (e: React.FocusEvent<HTMLInputElement>) => void;
27
+ onPaste: (e: React.ClipboardEvent<HTMLInputElement>) => void;
28
+ /** 自定义样式类名 */
29
+ className?: string;
30
+ /** 自定义内联样式 */
31
+ style?: React.CSSProperties;
32
+ }
33
+ export interface TagListProps extends Omit<BaseInputTagProps, 'placeholder'>, BaseTagProps {
34
+ tags: string[];
35
+ }
36
+ export interface InputTagProps extends BaseInputTagProps, BaseTagProps {
37
+ /** 受控模式的标签值 */
38
+ value?: string[];
39
+ /** 非受控模式的默认标签值 */
40
+ defaultValue?: string[];
41
+ /** 标签列表变化时的回调 */
42
+ onChange?: (tags: string[]) => void;
43
+ /** 输入内容变化时的回调 */
44
+ onInputChange?: (value: string) => void;
45
+ /** 最大标签数量 */
46
+ maxTags?: number;
47
+ /** 是否允许重复标签 */
48
+ allowDuplicates?: boolean;
49
+ /** 自定义分隔符,支持字符串或正则表达式,用于自动分割输入内容为标签 */
50
+ delimiter?: string | RegExp;
51
+ }
52
+ export {};
53
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/InputTag/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,iBAAiB;IACzB,aAAa;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW;IACX,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc;IACd,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAGD,UAAU,YAAY;IACpB,cAAc;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc;IACd,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC;IACjF,gBAAgB;IAChB,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACpD;AAGD,MAAM,WAAW,UAAW,SAAQ,iBAAiB;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC5C,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IAC3D,SAAS,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IAC9D,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACxD,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IAC7D,cAAc;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc;IACd,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAGD,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC,EAAE,YAAY;IACxF,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAGD,MAAM,WAAW,aAAc,SAAQ,iBAAiB,EAAE,YAAY;IACpE,eAAe;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,kBAAkB;IAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,iBAAiB;IACjB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACpC,iBAAiB;IACjB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,aAAa;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7B"}
@@ -0,0 +1,6 @@
1
+ import { default as React } from 'react';
2
+ import { NavProps } from './types';
3
+ declare const Nav: React.FC<NavProps>;
4
+ export default Nav;
5
+ export type { NavProps } from './types';
6
+ //# sourceMappingURL=Nav.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Nav.d.ts","sourceRoot":"","sources":["../../../src/components/Nav/Nav.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnC,OAAO,cAAc,CAAC;AAKtB,QAAA,MAAM,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,QAAQ,CAiD3B,CAAC;AAEF,eAAe,GAAG,CAAC;AACnB,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { default as React } from 'react';
2
+ import { NavItemProps } from './types';
3
+ declare const NavItem: React.FC<NavItemProps>;
4
+ export default NavItem;
5
+ //# sourceMappingURL=NavItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NavItem.d.ts","sourceRoot":"","sources":["../../../src/components/Nav/NavItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAGhD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAIvC,QAAA,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CA4NnC,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { default as React } from 'react';
2
+ import { NavItemType } from './types';
3
+ interface NavSubmenuProps {
4
+ items: NavItemType[];
5
+ onItemClick: (key: string, item: NavItemType) => void;
6
+ }
7
+ declare const NavSubmenu: React.FC<NavSubmenuProps>;
8
+ export default NavSubmenu;
9
+ //# sourceMappingURL=NavSubmenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NavSubmenu.d.ts","sourceRoot":"","sources":["../../../src/components/Nav/NavSubmenu.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,UAAU,eAAe;IACvB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;CACvD;AAED,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAuCzC,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { useNavigation } from './useNavigation';
2
+ export { useNavigation, };
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/Nav/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAEL,aAAa,GACd,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { NavItemType } from '../types';
2
+ export interface UseNavigationProps {
3
+ items: NavItemType[];
4
+ defaultSelectedKeys?: string[];
5
+ defaultOpenKeys?: string[];
6
+ selectedKeys?: string[];
7
+ openKeys?: string[];
8
+ onSelect?: (info: {
9
+ key: string;
10
+ keyPath: string[];
11
+ selectedKeys: string[];
12
+ item: NavItemType;
13
+ }) => void;
14
+ onOpenChange?: (openKeys: string[]) => void;
15
+ }
16
+ export declare const useNavigation: ({ items, defaultSelectedKeys, defaultOpenKeys, selectedKeys: controlledSelectedKeys, openKeys: controlledOpenKeys, onSelect, onOpenChange, }: UseNavigationProps) => {
17
+ selectedKeys: string[];
18
+ openKeys: string[];
19
+ handleItemClick: (key: string, item: NavItemType) => void;
20
+ handleToggleExpand: (key: string) => void;
21
+ autoExpandParents: (selectedKey: string) => void;
22
+ getItemInfo: (key: string) => NavItemType | null;
23
+ currentSelectedItem: NavItemType | null;
24
+ };
25
+ //# sourceMappingURL=useNavigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useNavigation.d.ts","sourceRoot":"","sources":["../../../../src/components/Nav/hooks/useNavigation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,YAAY,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,EAAE,WAAW,CAAA;KAAE,KAAK,IAAI,CAAC;IACzG,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CAC7C;AAED,eAAO,MAAM,aAAa,GAAI,8IAQ3B,kBAAkB;;;2BAWX,MAAM,QAAQ,WAAW;8BAsBzB,MAAM;qCAsBE,MAAM;uBAcgB,MAAM;;CAiB7C,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { default as Nav } from './Nav';
2
+ export type { NavProps, NavItemType } from './types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Nav/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,OAAO,CAAC;AACvC,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { default as React } from 'react';
2
+ export interface NavItemType {
3
+ key: string;
4
+ type?: 'item' | 'divider' | 'group';
5
+ label?: React.ReactNode;
6
+ title?: string;
7
+ icon?: React.ReactNode;
8
+ disabled?: boolean;
9
+ children?: NavItemType[];
10
+ className?: string;
11
+ style?: React.CSSProperties;
12
+ }
13
+ export interface NavProps {
14
+ items: NavItemType[];
15
+ mode?: 'inline';
16
+ collapsed?: boolean;
17
+ selectedKeys?: string[];
18
+ defaultSelectedKeys?: string[];
19
+ openKeys?: string[];
20
+ defaultOpenKeys?: string[];
21
+ onSelect?: (info: {
22
+ key: string;
23
+ keyPath: string[];
24
+ selectedKeys: string[];
25
+ item: NavItemType;
26
+ }) => void;
27
+ onOpenChange?: (openKeys: string[]) => void;
28
+ expandIcon?: React.ReactNode;
29
+ className?: string;
30
+ style?: React.CSSProperties;
31
+ }
32
+ export interface NavItemProps {
33
+ item: NavItemType;
34
+ level: number;
35
+ collapsed?: boolean;
36
+ selectedKeys: string[];
37
+ openKeys: string[];
38
+ onItemClick: (key: string, item: NavItemType) => void;
39
+ onToggleExpand: (key: string) => void;
40
+ expandIcon?: React.ReactNode;
41
+ prefixCls: string;
42
+ }
43
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/Nav/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IACpC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,YAAY,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,EAAE,WAAW,CAAA;KAAE,KAAK,IAAI,CAAC;IACzG,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC5C,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IACtD,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,5 @@
1
+ import { default as React } from 'react';
2
+ import { ListboxProps } from './types';
3
+ declare const Listbox: React.FC<ListboxProps>;
4
+ export default Listbox;
5
+ //# sourceMappingURL=Listbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Listbox.d.ts","sourceRoot":"","sources":["../../../src/components/Select/Listbox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAI5C,QAAA,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAmEnC,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { default as React } from 'react';
2
+ import { MultipleSelectorProps } from './types';
3
+ declare const MultipleSelector: React.FC<MultipleSelectorProps>;
4
+ export default MultipleSelector;
5
+ //# sourceMappingURL=MultipleSelector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultipleSelector.d.ts","sourceRoot":"","sources":["../../../src/components/Select/MultipleSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAKvC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAErD,QAAA,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAmDrD,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { default as React } from 'react';
2
+ import { OptionItemProps } from './types';
3
+ declare const OptionItem: React.FC<OptionItemProps>;
4
+ export default OptionItem;
5
+ //# sourceMappingURL=OptionItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OptionItem.d.ts","sourceRoot":"","sources":["../../../src/components/Select/OptionItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAI/C,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA2CzC,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { default as React } from 'react';
2
+ import { SearchInputProps } from './types';
3
+ declare const SearchInput: React.FC<SearchInputProps>;
4
+ export default SearchInput;
5
+ //# sourceMappingURL=SearchInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchInput.d.ts","sourceRoot":"","sources":["../../../src/components/Select/SearchInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiB,MAAM,OAAO,CAAC;AAEtC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAyB3C,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { default as React } from 'react';
2
+ import { SelectProps } from './types';
3
+ declare const Select: React.FC<SelectProps>;
4
+ export default Select;
5
+ export type { SelectProps } from './types';
6
+ //# sourceMappingURL=Select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../src/components/Select/Select.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,KAAK,EAAE,WAAW,EAAU,MAAM,SAAS,CAAC;AAInD,OAAO,cAAc,CAAC;AAItB,QAAA,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAyJjC,CAAC;AAEF,eAAe,MAAM,CAAC;AACtB,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { default as React } from 'react';
2
+ import { SelectorProps } from './types';
3
+ declare const Selector: React.FC<SelectorProps>;
4
+ export default Selector;
5
+ //# sourceMappingURL=Selector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Selector.d.ts","sourceRoot":"","sources":["../../../src/components/Select/Selector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,aAAa,EAAU,MAAM,SAAS,CAAC;AAMrD,QAAA,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAqDrC,CAAC;AAkIF,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { default as React } from 'react';
2
+ import { TextDisplayProps } from './types';
3
+ declare const TextDisplay: React.FC<TextDisplayProps>;
4
+ export default TextDisplay;
5
+ //# sourceMappingURL=TextDisplay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextDisplay.d.ts","sourceRoot":"","sources":["../../../src/components/Select/TextDisplay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAyB3C,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { useSelectState } from './useSelectState';
2
+ import { useOptionSelection } from './useOptionSelection';
3
+ import { useSelectSearch } from './useSelectSearch';
4
+ import { useFloatingPosition } from './useFloatingPosition';
5
+ import { useClickOutside } from './useClickOutside';
6
+ import { useSelect } from './useSelect';
7
+ export { useSelectState, useOptionSelection, useSelectSearch, useFloatingPosition, useClickOutside, useSelect, };
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/Select/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAEL,cAAc,EACd,kBAAkB,EAClB,eAAe,EAGf,mBAAmB,EACnB,eAAe,EAGf,SAAS,GACV,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { default as React } from 'react';
2
+ interface UseClickOutsideProps {
3
+ isActive: boolean;
4
+ triggerRef: React.RefObject<HTMLElement>;
5
+ floatingRef: React.RefObject<HTMLElement>;
6
+ onClickOutside?: () => void;
7
+ }
8
+ export declare const useClickOutside: ({ isActive, triggerRef, floatingRef, onClickOutside }: UseClickOutsideProps) => {
9
+ handleClickOutside: (event: MouseEvent) => void;
10
+ };
11
+ export {};
12
+ //# sourceMappingURL=useClickOutside.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useClickOutside.d.ts","sourceRoot":"","sources":["../../../../src/components/Select/hooks/useClickOutside.ts"],"names":[],"mappings":"AAAA,OAAO,KAAiC,MAAM,OAAO,CAAC;AAEtD,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACzC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC1C,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,eAAO,MAAM,eAAe,GAAI,uDAAuD,oBAAoB;gCAG/F,UAAU;CA8BrB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { default as React } from 'react';
2
+ interface UseFloatingPositionProps {
3
+ isOpen: boolean;
4
+ triggerRef: React.RefObject<HTMLElement>;
5
+ onClickOutside?: () => void;
6
+ placement?: 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end';
7
+ offsetDistance?: number;
8
+ shiftPadding?: number;
9
+ }
10
+ export declare const useFloatingPosition: ({ isOpen, triggerRef, onClickOutside, placement, offsetDistance, shiftPadding, }: UseFloatingPositionProps) => {
11
+ floatingRef: React.RefObject<HTMLDivElement>;
12
+ updatePosition: () => void;
13
+ };
14
+ export {};
15
+ //# sourceMappingURL=useFloatingPosition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFloatingPosition.d.ts","sourceRoot":"","sources":["../../../../src/components/Select/hooks/useFloatingPosition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAI9D,UAAU,wBAAwB;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACzC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,SAAS,CAAC;IACpE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,mBAAmB,GAAI,kFAOjC,wBAAwB;;;CAwG1B,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { Option } from '../types';
2
+ interface UseOptionSelectionProps {
3
+ value?: string | number | (string | number)[];
4
+ defaultValue?: string | number | (string | number)[];
5
+ multiple?: boolean;
6
+ options?: Option[];
7
+ onChange?: (value: string | number | (string | number)[], selectedOptions: Option | Option[] | null) => void;
8
+ }
9
+ /**
10
+ * 选项选择管理Hook
11
+ * 职责:管理选中状态、处理单选/多选逻辑、触发onChange回调
12
+ */
13
+ export declare const useOptionSelection: ({ value, defaultValue, multiple, options, onChange, }: UseOptionSelectionProps) => {
14
+ getCurrentValue: () => string | number | (string | number)[] | undefined;
15
+ getSelectedOptions: () => Option[];
16
+ isOptionSelected: (option: Option) => boolean;
17
+ handleOptionSelect: (option: Option) => void;
18
+ handleTagRemove: (tag: string, index: number) => void;
19
+ tagManager: {
20
+ getCurrentTags: () => string[];
21
+ addTag: (tag: string) => boolean;
22
+ removeTag: (indexToRemove: number) => boolean;
23
+ addMultipleTags: (tags: string[]) => number;
24
+ };
25
+ };
26
+ export {};
27
+ //# sourceMappingURL=useOptionSelection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOptionSelection.d.ts","sourceRoot":"","sources":["../../../../src/components/Select/hooks/useOptionSelection.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,UAAU,uBAAuB;IAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC9C,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACrD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;CAC9G;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,uDAMhC,uBAAuB;;;+BA8Db,MAAM;iCAcN,MAAM;2BA8BT,MAAM,SAAS,MAAM;;;;;;;CAsB9B,CAAC"}
@@ -0,0 +1,47 @@
1
+ import { Option } from '../types';
2
+ interface UseSelectProps {
3
+ value?: string | number | (string | number)[];
4
+ defaultValue?: string | number | (string | number)[];
5
+ multiple?: boolean;
6
+ showSearch?: boolean;
7
+ open?: boolean;
8
+ options?: Option[];
9
+ onChange?: (value: string | number | (string | number)[], selectedOptions: Option | Option[] | null) => void;
10
+ onSearch?: (value: string) => void;
11
+ filterOption?: (input: string, option: Option) => boolean;
12
+ }
13
+ /**
14
+ * Select主组合Hook
15
+ * 职责:组合基础Hook,提供统一的对外接口
16
+ */
17
+ export declare const useSelect: ({ value, defaultValue, multiple, showSearch, open, options, onChange, onSearch, filterOption, }: UseSelectProps) => {
18
+ isOpen: boolean;
19
+ focusedIndex: number;
20
+ getCurrentValue: () => string | number | (string | number)[] | undefined;
21
+ getSelectedOptions: () => Option[];
22
+ isOptionSelected: (option: Option) => boolean;
23
+ inputManager: {
24
+ inputValue: string;
25
+ setInputValue: import('react').Dispatch<import('react').SetStateAction<string>>;
26
+ isFocused: boolean;
27
+ setIsFocused: import('react').Dispatch<import('react').SetStateAction<boolean>>;
28
+ handleInputChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
29
+ clearInput: () => void;
30
+ };
31
+ filteredOptions: Option[];
32
+ handleOptionSelect: (option: Option) => void;
33
+ handleTagRemove: (tag: string, index: number) => void;
34
+ handleBlur: () => void;
35
+ handleSelectorClick: () => void;
36
+ openDropdown: () => void;
37
+ closeDropdown: () => void;
38
+ setFocusedIndex: import('react').Dispatch<import('react').SetStateAction<number>>;
39
+ tagManager: {
40
+ getCurrentTags: () => string[];
41
+ addTag: (tag: string) => boolean;
42
+ removeTag: (indexToRemove: number) => boolean;
43
+ addMultipleTags: (tags: string[]) => number;
44
+ };
45
+ };
46
+ export {};
47
+ //# sourceMappingURL=useSelect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSelect.d.ts","sourceRoot":"","sources":["../../../../src/components/Select/hooks/useSelect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAKvC,UAAU,cAAc;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC9C,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACrD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IAC7G,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;CAC3D;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,GAAI,iGAUvB,cAAc;;;;;;;;;;;;;;;iCAuBJ,MAAM;2BAkBT,MAAM,SAAS,MAAM;;;;;;;;;;;;CA+C9B,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { Option } from '../types';
2
+ interface UseSelectSearchProps {
3
+ showSearch?: boolean;
4
+ options?: Option[];
5
+ onSearch?: (value: string) => void;
6
+ filterOption?: (input: string, option: Option) => boolean;
7
+ }
8
+ /**
9
+ * 搜索功能Hook
10
+ * 职责:管理搜索输入状态、防抖处理、选项过滤
11
+ */
12
+ export declare const useSelectSearch: ({ showSearch, options, onSearch, filterOption }: UseSelectSearchProps) => {
13
+ inputManager: {
14
+ inputValue: string;
15
+ setInputValue: import('react').Dispatch<import('react').SetStateAction<string>>;
16
+ isFocused: boolean;
17
+ setIsFocused: import('react').Dispatch<import('react').SetStateAction<boolean>>;
18
+ handleInputChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
19
+ clearInput: () => void;
20
+ };
21
+ filteredOptions: Option[];
22
+ hasSearchValue: boolean;
23
+ };
24
+ export {};
25
+ //# sourceMappingURL=useSelectSearch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSelectSearch.d.ts","sourceRoot":"","sources":["../../../../src/components/Select/hooks/useSelectSearch.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGvC,UAAU,oBAAoB;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;CAC3D;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,iDAA8D,oBAAoB;;;;;;;;;;;CA4BjH,CAAC"}