@rainbow-oh/yee-c 0.1.0 → 0.2.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 (228) hide show
  1. package/dist/cjs/Alert/alert.js +10 -4
  2. package/dist/cjs/Alert/style/index.less +3 -0
  3. package/dist/cjs/Anchor/anchor-item.js +6 -4
  4. package/dist/cjs/Anchor/anchor.js +38 -22
  5. package/dist/cjs/Anchor/demo/auto.d.ts +11 -0
  6. package/dist/cjs/Anchor/demo/auto.js +85 -0
  7. package/dist/cjs/Anchor/demo/basic.js +7 -1
  8. package/dist/cjs/Anchor/demo/controlled.js +42 -30
  9. package/dist/cjs/Anchor/interface.d.ts +2 -0
  10. package/dist/cjs/Anchor/style/index.less +2 -2
  11. package/dist/cjs/Button/button.d.ts +1 -1
  12. package/dist/cjs/Checkbox/checkbox-group.js +4 -1
  13. package/dist/cjs/Checkbox/demo/group.js +1 -0
  14. package/dist/cjs/Checkbox/interface.d.ts +5 -0
  15. package/dist/cjs/Checkbox/style/index.less +21 -1
  16. package/dist/cjs/Dropdown/demo/placement.js +2 -1
  17. package/dist/cjs/Dropdown/dropdown.js +3 -0
  18. package/dist/cjs/Dropdown/style/index.less +6 -0
  19. package/dist/cjs/Form/Field.js +33 -3
  20. package/dist/cjs/Form/Group.js +3 -2
  21. package/dist/cjs/Form/demo/form-table.js +1 -8
  22. package/dist/cjs/Form/demo/tooltip.d.ts +3 -0
  23. package/dist/cjs/Form/demo/tooltip.js +84 -0
  24. package/dist/cjs/Form/interface.d.ts +34 -1
  25. package/dist/cjs/Form/style/index.less +22 -7
  26. package/dist/cjs/Popconfirm/popconfirm.js +1 -1
  27. package/dist/cjs/Popconfirm/style/index.less +6 -0
  28. package/dist/cjs/Popover/popover.js +1 -1
  29. package/dist/cjs/Popover/style/index.less +6 -0
  30. package/dist/cjs/Progress/progress.js +2 -2
  31. package/dist/cjs/Radio/style/index.less +13 -6
  32. package/dist/cjs/Select/option.js +3 -2
  33. package/dist/cjs/Select/options.js +9 -1
  34. package/dist/cjs/Select/select.js +1 -0
  35. package/dist/cjs/Skeleton/demo/basic.js +1 -1
  36. package/dist/cjs/Space/interface.d.ts +4 -0
  37. package/dist/cjs/Space/space.js +36 -16
  38. package/dist/cjs/Splitter/demo/basic.js +1 -1
  39. package/dist/cjs/Splitter/demo/vertical.js +23 -1
  40. package/dist/cjs/Splitter/index.d.ts +1 -1
  41. package/dist/cjs/Splitter/interface.d.ts +9 -3
  42. package/dist/cjs/Splitter/splitter-handler.d.ts +1 -1
  43. package/dist/cjs/Splitter/splitter-handler.js +2 -1
  44. package/dist/cjs/Splitter/splitter.d.ts +2 -9
  45. package/dist/cjs/Splitter/splitter.js +53 -50
  46. package/dist/cjs/Splitter/style/index.less +21 -0
  47. package/dist/cjs/Table/demo/size.js +1 -1
  48. package/dist/cjs/Tabs/hooks/useTabScroll.d.ts +1 -1
  49. package/dist/cjs/Tabs/interface.d.ts +1 -1
  50. package/dist/cjs/Tabs/style/index.less +4 -0
  51. package/dist/cjs/Tabs/tab-header/index.js +56 -25
  52. package/dist/cjs/Tooltip/interface.d.ts +4 -0
  53. package/dist/cjs/Tooltip/style/index.less +8 -8
  54. package/dist/cjs/Tooltip/tooltip.js +11 -3
  55. package/dist/cjs/Tree/demo/draggable.d.ts +3 -0
  56. package/dist/cjs/Tree/demo/draggable.js +88 -0
  57. package/dist/cjs/Tree/demo/expanded.js +6 -6
  58. package/dist/cjs/Tree/index.d.ts +1 -0
  59. package/dist/cjs/Tree/index.js +3 -1
  60. package/dist/cjs/Tree/interface.d.ts +26 -0
  61. package/dist/cjs/Tree/style/index.less +25 -0
  62. package/dist/cjs/Tree/tree-node.js +38 -4
  63. package/dist/cjs/Tree/tree.d.ts +12 -1
  64. package/dist/cjs/Tree/tree.js +174 -18
  65. package/dist/cjs/Tree/utils/tree-tools.d.ts +21 -0
  66. package/dist/cjs/Tree/utils/tree-tools.js +88 -0
  67. package/dist/cjs/Trigger/style/index.less +17 -0
  68. package/dist/cjs/Trigger/trigger.js +3 -1
  69. package/dist/cjs/hooks/useDebounceFunction.d.ts +1 -1
  70. package/dist/cjs/hooks/useLayoutEffect.d.ts +1 -1
  71. package/dist/cjs/style/size.css +13 -4
  72. package/dist/cjs/style/themes.css +1 -1
  73. package/dist/cjs/style/variables.css +14 -5
  74. package/dist/cjs/utils/debounce.d.ts +6 -1
  75. package/dist/cjs/utils/debounce.js +9 -1
  76. package/dist/cjs/version.d.ts +1 -1
  77. package/dist/cjs/version.js +1 -1
  78. package/dist/esm/Alert/alert.js +24 -8
  79. package/dist/esm/Alert/style/index.less +3 -0
  80. package/dist/esm/Anchor/anchor-item.js +6 -3
  81. package/dist/esm/Anchor/anchor.js +38 -19
  82. package/dist/esm/Anchor/demo/auto.d.ts +11 -0
  83. package/dist/esm/Anchor/demo/auto.js +62 -0
  84. package/dist/esm/Anchor/demo/basic.js +3 -1
  85. package/dist/esm/Anchor/demo/controlled.js +14 -9
  86. package/dist/esm/Anchor/interface.d.ts +2 -0
  87. package/dist/esm/Anchor/style/index.less +2 -2
  88. package/dist/esm/Button/button.d.ts +1 -1
  89. package/dist/esm/Checkbox/checkbox-group.js +4 -2
  90. package/dist/esm/Checkbox/demo/group.js +1 -0
  91. package/dist/esm/Checkbox/interface.d.ts +5 -0
  92. package/dist/esm/Checkbox/style/index.less +21 -1
  93. package/dist/esm/Dropdown/demo/placement.js +2 -1
  94. package/dist/esm/Dropdown/dropdown.js +6 -1
  95. package/dist/esm/Dropdown/style/index.less +6 -0
  96. package/dist/esm/Form/Field.js +43 -5
  97. package/dist/esm/Form/Group.js +4 -2
  98. package/dist/esm/Form/demo/form-table.js +8 -6
  99. package/dist/esm/Form/demo/tooltip.d.ts +3 -0
  100. package/dist/esm/Form/demo/tooltip.js +59 -0
  101. package/dist/esm/Form/interface.d.ts +34 -1
  102. package/dist/esm/Form/style/index.less +22 -7
  103. package/dist/esm/Popconfirm/popconfirm.js +3 -1
  104. package/dist/esm/Popconfirm/style/index.less +6 -0
  105. package/dist/esm/Popover/popover.js +3 -1
  106. package/dist/esm/Popover/style/index.less +6 -0
  107. package/dist/esm/Progress/progress.js +5 -5
  108. package/dist/esm/Radio/style/index.less +13 -6
  109. package/dist/esm/Select/option.js +4 -2
  110. package/dist/esm/Select/options.js +5 -3
  111. package/dist/esm/Select/select.js +1 -0
  112. package/dist/esm/Skeleton/demo/basic.js +2 -8
  113. package/dist/esm/Space/interface.d.ts +4 -0
  114. package/dist/esm/Space/space.js +24 -13
  115. package/dist/esm/Splitter/demo/basic.js +2 -0
  116. package/dist/esm/Splitter/demo/vertical.js +13 -5
  117. package/dist/esm/Splitter/index.d.ts +1 -1
  118. package/dist/esm/Splitter/interface.d.ts +9 -3
  119. package/dist/esm/Splitter/splitter-handler.d.ts +1 -1
  120. package/dist/esm/Splitter/splitter-handler.js +3 -1
  121. package/dist/esm/Splitter/splitter.d.ts +2 -9
  122. package/dist/esm/Splitter/splitter.js +59 -56
  123. package/dist/esm/Splitter/style/index.less +21 -0
  124. package/dist/esm/Table/demo/size.js +2 -7
  125. package/dist/esm/Tabs/hooks/useTabScroll.d.ts +1 -1
  126. package/dist/esm/Tabs/interface.d.ts +1 -1
  127. package/dist/esm/Tabs/style/index.less +4 -0
  128. package/dist/esm/Tabs/tab-header/index.js +11 -5
  129. package/dist/esm/Tooltip/interface.d.ts +4 -0
  130. package/dist/esm/Tooltip/style/index.less +8 -8
  131. package/dist/esm/Tooltip/tooltip.js +14 -2
  132. package/dist/esm/Tree/demo/draggable.d.ts +3 -0
  133. package/dist/esm/Tree/demo/draggable.js +61 -0
  134. package/dist/esm/Tree/demo/expanded.js +6 -6
  135. package/dist/esm/Tree/index.d.ts +1 -0
  136. package/dist/esm/Tree/index.js +1 -0
  137. package/dist/esm/Tree/interface.d.ts +26 -0
  138. package/dist/esm/Tree/style/index.less +25 -0
  139. package/dist/esm/Tree/tree-node.js +29 -4
  140. package/dist/esm/Tree/tree.d.ts +12 -1
  141. package/dist/esm/Tree/tree.js +135 -4
  142. package/dist/esm/Tree/utils/tree-tools.d.ts +21 -0
  143. package/dist/esm/Tree/utils/tree-tools.js +128 -1
  144. package/dist/esm/Trigger/style/index.less +17 -0
  145. package/dist/esm/Trigger/trigger.js +4 -3
  146. package/dist/esm/hooks/useDebounceFunction.d.ts +1 -1
  147. package/dist/esm/hooks/useLayoutEffect.d.ts +1 -1
  148. package/dist/esm/style/size.css +13 -4
  149. package/dist/esm/style/themes.css +1 -1
  150. package/dist/esm/style/variables.css +14 -5
  151. package/dist/esm/utils/debounce.d.ts +6 -1
  152. package/dist/esm/utils/debounce.js +9 -2
  153. package/dist/esm/version.d.ts +1 -1
  154. package/dist/esm/version.js +1 -1
  155. package/dist/umd/yee-c.min.css +2 -2
  156. package/dist/umd/yee-c.min.js +1 -1
  157. package/package.json +21 -23
  158. package/src/Alert/alert.tsx +10 -4
  159. package/src/Alert/style/index.less +3 -0
  160. package/src/Anchor/anchor-item.tsx +7 -2
  161. package/src/Anchor/anchor.tsx +49 -23
  162. package/src/Anchor/demo/auto.tsx +55 -0
  163. package/src/Anchor/demo/basic.tsx +7 -1
  164. package/src/Anchor/demo/controlled.tsx +18 -14
  165. package/src/Anchor/index.en-US.md +17 -0
  166. package/src/Anchor/index.zh-CN.md +17 -0
  167. package/src/Anchor/interface.ts +2 -0
  168. package/src/Anchor/style/index.less +2 -2
  169. package/src/Checkbox/checkbox-group.tsx +5 -1
  170. package/src/Checkbox/demo/group.tsx +1 -0
  171. package/src/Checkbox/interface.ts +5 -0
  172. package/src/Checkbox/style/index.less +21 -1
  173. package/src/Dropdown/demo/placement.tsx +1 -0
  174. package/src/Dropdown/dropdown.tsx +2 -0
  175. package/src/Dropdown/style/index.less +6 -0
  176. package/src/Form/Field.tsx +45 -3
  177. package/src/Form/Group.tsx +4 -1
  178. package/src/Form/demo/form-table.tsx +7 -7
  179. package/src/Form/demo/tooltip.tsx +72 -0
  180. package/src/Form/form-store.ts +1 -1
  181. package/src/Form/index.en-US.md +2 -0
  182. package/src/Form/index.zh-CN.md +83 -85
  183. package/src/Form/interface.ts +36 -1
  184. package/src/Form/style/index.less +22 -7
  185. package/src/Popconfirm/popconfirm.tsx +1 -1
  186. package/src/Popconfirm/style/index.less +6 -0
  187. package/src/Popover/popover.tsx +1 -1
  188. package/src/Popover/style/index.less +6 -0
  189. package/src/Progress/progress.tsx +2 -2
  190. package/src/Radio/style/index.less +13 -6
  191. package/src/Select/option.tsx +2 -1
  192. package/src/Select/options.tsx +7 -2
  193. package/src/Select/select.tsx +1 -0
  194. package/src/Skeleton/demo/basic.tsx +3 -3
  195. package/src/Space/interface.ts +4 -0
  196. package/src/Space/space.tsx +40 -16
  197. package/src/Splitter/demo/basic.tsx +2 -2
  198. package/src/Splitter/demo/vertical.tsx +19 -5
  199. package/src/Splitter/index.ts +5 -1
  200. package/src/Splitter/interface.ts +10 -3
  201. package/src/Splitter/splitter-handler.tsx +4 -2
  202. package/src/Splitter/splitter.tsx +55 -60
  203. package/src/Splitter/style/index.less +21 -0
  204. package/src/Table/demo/size.tsx +3 -3
  205. package/src/Table/index.zh-CN.md +50 -50
  206. package/src/Tabs/interface.ts +1 -1
  207. package/src/Tabs/style/index.less +4 -0
  208. package/src/Tabs/tab-header/index.tsx +26 -5
  209. package/src/Tooltip/index.en-US.md +1 -0
  210. package/src/Tooltip/index.zh-CN.md +1 -0
  211. package/src/Tooltip/interface.ts +4 -0
  212. package/src/Tooltip/style/index.less +8 -8
  213. package/src/Tooltip/tooltip.tsx +10 -1
  214. package/src/Tree/demo/draggable.tsx +58 -0
  215. package/src/Tree/demo/expanded.tsx +7 -7
  216. package/src/Tree/index.en-US.md +3 -0
  217. package/src/Tree/index.ts +1 -0
  218. package/src/Tree/index.zh-CN.md +3 -0
  219. package/src/Tree/interface.ts +28 -0
  220. package/src/Tree/style/index.less +25 -0
  221. package/src/Tree/tree-node.tsx +26 -0
  222. package/src/Tree/tree.tsx +183 -2
  223. package/src/Tree/utils/tree-tools.ts +107 -0
  224. package/src/Trigger/style/index.less +17 -0
  225. package/src/Trigger/trigger.tsx +3 -1
  226. package/src/style/size.css +13 -4
  227. package/src/utils/debounce.ts +22 -3
  228. package/src/version.ts +1 -1
@@ -70,10 +70,16 @@ var import_mergeContextToProps = __toESM(require("../utils/mergeContextToProps")
70
70
  var import_style = require("./style/index.less");
71
71
  var ICON_STROKE_WIDTH = 1.5;
72
72
  var iconMap = {
73
- info: { small: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Info, null), large: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Info, null) },
74
- success: { small: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.CircleCheckBig, null), large: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.CircleCheckBig, null) },
75
- warning: { small: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.CircleAlert, null), large: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.CircleAlert, null) },
76
- error: { small: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.CircleX, null), large: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.CircleX, null) }
73
+ info: { small: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Info, { size: 16 }), large: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Info, { size: 24 }) },
74
+ success: {
75
+ small: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.CircleCheckBig, { size: 16 }),
76
+ large: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.CircleCheckBig, { size: 24 })
77
+ },
78
+ warning: {
79
+ small: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.CircleAlert, { size: 16 }),
80
+ large: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.CircleAlert, { size: 24 })
81
+ },
82
+ error: { small: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.CircleX, { size: 16 }), large: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.CircleX, { size: 24 }) }
77
83
  };
78
84
  var Alert = (baseprops) => {
79
85
  const { alert } = (0, import_react.useContext)(import_Config_Provider.GlobalContext);
@@ -69,4 +69,7 @@
69
69
  border: none;
70
70
  border-radius: 0;
71
71
  }
72
+
73
+ &-small {
74
+ }
72
75
  }
@@ -83,7 +83,8 @@ var AnchorItem = (props) => {
83
83
  "level",
84
84
  "children"
85
85
  ]);
86
- const { prefixCls, activeKey, onClick } = (0, import_react.useContext)(import_anchor.AnchorContext);
86
+ const { prefixCls, activeKey, onClick, classNames, styles } = (0, import_react.useContext)(import_anchor.AnchorContext);
87
+ const isActive = targetKey === activeKey;
87
88
  const handleClick = (e) => {
88
89
  e.preventDefault();
89
90
  e.stopPropagation();
@@ -92,12 +93,13 @@ var AnchorItem = (props) => {
92
93
  const cls = (0, import_clsx.default)(
93
94
  `${prefixCls}-item`,
94
95
  {
95
- [`${prefixCls}-item-active`]: targetKey === activeKey,
96
+ [`${prefixCls}-item-active`]: isActive,
96
97
  [`${prefixCls}-item-${status}`]: status
97
98
  },
98
- className
99
+ className,
100
+ isActive && (classNames == null ? void 0 : classNames.active)
99
101
  );
100
- const itemStyle = __spreadProps(__spreadValues({}, style), {
102
+ const itemStyle = __spreadProps(__spreadValues(__spreadValues({}, style), isActive ? styles == null ? void 0 : styles.active : void 0), {
101
103
  paddingLeft: `${level * INDENT_WIDTH}px`
102
104
  });
103
105
  const renderItem = /* @__PURE__ */ import_react.default.createElement("li", __spreadValues({ className: cls, style: itemStyle }, rest), /* @__PURE__ */ import_react.default.createElement("a", { href: `#${targetKey}`, onClick: handleClick }, /* @__PURE__ */ import_react.default.createElement("span", { className: `${prefixCls}-item-label`, title: String(title) }, title)));
@@ -118,11 +118,17 @@ var Anchor = (0, import_react.forwardRef)((baseprops, ref) => {
118
118
  });
119
119
  const [anchorList, setAnchorList] = (0, import_react.useState)([]);
120
120
  const containerRef = (0, import_react.useRef)(null);
121
+ const activeKeyRef = (0, import_react.useRef)(mergedActiveKey);
122
+ (0, import_react.useEffect)(() => {
123
+ activeKeyRef.current = mergedActiveKey;
124
+ }, [mergedActiveKey]);
121
125
  const generateAnchorList = (0, import_react.useCallback)(() => {
122
126
  if (!auto || !name)
123
127
  return;
124
128
  const list = [];
125
- const elements = document.querySelectorAll(`[data-anchor-group="${name}"]`);
129
+ const elements = document.querySelectorAll(
130
+ `[data-anchor-group="${CSS.escape(name)}"]`
131
+ );
126
132
  elements.forEach((element) => {
127
133
  const key = element.getAttribute("id") || "";
128
134
  const title = element.getAttribute("data-anchor-title") || "";
@@ -138,6 +144,12 @@ var Anchor = (0, import_react.forwardRef)((baseprops, ref) => {
138
144
  generateAnchorList();
139
145
  }
140
146
  }, [auto, generateAnchorList]);
147
+ const getTargetOffsetTop = (0, import_react.useCallback)((target) => {
148
+ const container = containerRef.current;
149
+ const containerTop = container === window ? 0 : container.getBoundingClientRect().top;
150
+ const currentScroll = container === window ? window.scrollY : container.scrollTop;
151
+ return currentScroll + (target.getBoundingClientRect().top - containerTop);
152
+ }, []);
141
153
  const handleScroll = (0, import_react.useCallback)(() => {
142
154
  const container = containerRef.current;
143
155
  if (!container)
@@ -150,30 +162,29 @@ var Anchor = (0, import_react.forwardRef)((baseprops, ref) => {
150
162
  const item = currentItems2[i];
151
163
  const target = document.getElementById(item.key);
152
164
  if (target) {
153
- const targetTop = target.offsetTop;
165
+ const targetTop = getTargetOffsetTop(target);
154
166
  if (scrollTop + offsetTop >= targetTop) {
155
- setMergedActiveKey(item.key);
156
- onChange == null ? void 0 : onChange(item.key);
167
+ if (activeKeyRef.current !== item.key) {
168
+ setMergedActiveKey(item.key);
169
+ onChange == null ? void 0 : onChange(item.key);
170
+ }
157
171
  break;
158
172
  }
159
173
  }
160
174
  }
161
- }, [auto, anchorList, items, offsetTop, onChange]);
175
+ }, [auto, anchorList, items, offsetTop, onChange, getTargetOffsetTop]);
162
176
  (0, import_react.useEffect)(() => {
163
- const container = getContainer ? getContainer() : window;
164
- containerRef.current = container;
165
- if (container && typeof activeKey === "undefined") {
166
- const debouncedScroll = (0, import_debounce.default)(handleScroll, 100);
167
- container.addEventListener("scroll", debouncedScroll);
168
- handleScroll();
169
- return () => {
170
- container.removeEventListener(
171
- "scroll",
172
- debouncedScroll
173
- );
174
- };
175
- }
176
- }, [getContainer, handleScroll, activeKey]);
177
+ const container = containerRef.current;
178
+ if (!container)
179
+ return;
180
+ const debouncedScroll = (0, import_debounce.default)(handleScroll, 100);
181
+ container.addEventListener("scroll", debouncedScroll);
182
+ handleScroll();
183
+ return () => {
184
+ container.removeEventListener("scroll", debouncedScroll);
185
+ debouncedScroll.cancel();
186
+ };
187
+ }, [getContainer, handleScroll]);
177
188
  const scrollToAnchor = (0, import_react.useCallback)(
178
189
  (key) => {
179
190
  const target = document.getElementById(key);
@@ -182,7 +193,7 @@ var Anchor = (0, import_react.forwardRef)((baseprops, ref) => {
182
193
  const container = containerRef.current;
183
194
  if (!container)
184
195
  return;
185
- const targetTop = target.offsetTop - offsetTop;
196
+ const targetTop = getTargetOffsetTop(target) - offsetTop;
186
197
  if (container === window) {
187
198
  window.scrollTo({ top: targetTop, behavior: "smooth" });
188
199
  } else {
@@ -192,8 +203,11 @@ var Anchor = (0, import_react.forwardRef)((baseprops, ref) => {
192
203
  });
193
204
  }
194
205
  },
195
- [offsetTop]
206
+ [offsetTop, getTargetOffsetTop]
196
207
  );
208
+ (0, import_react.useLayoutEffect)(() => {
209
+ containerRef.current = getContainer ? getContainer() : window;
210
+ }, [getContainer]);
197
211
  (0, import_react.useLayoutEffect)(() => {
198
212
  if (defaultActiveKey) {
199
213
  scrollToAnchor(defaultActiveKey);
@@ -220,7 +234,9 @@ var Anchor = (0, import_react.forwardRef)((baseprops, ref) => {
220
234
  const contextValue = {
221
235
  prefixCls,
222
236
  activeKey: mergedActiveKey,
223
- onClick: handleItemClick
237
+ onClick: handleItemClick,
238
+ classNames,
239
+ styles
224
240
  };
225
241
  const renderNavArrow = () => {
226
242
  if (!affix || direction !== "vertical")
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ /**
3
+ * `auto` mode: the anchor list is generated from the DOM. Decorate each target
4
+ * section with the following attributes:
5
+ * - data-anchor-group="<name>" must match the Anchor's `name` prop
6
+ * - id="<key>" used as the anchor key and scroll target
7
+ * - data-anchor-title="<title>" the nav label (required; a section without it is skipped)
8
+ * - data-anchor-status="success | error | warning" optional status badge color
9
+ */
10
+ declare const _default: () => React.JSX.Element;
11
+ export default _default;
@@ -0,0 +1,85 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // src/Anchor/demo/auto.tsx
30
+ var auto_exports = {};
31
+ __export(auto_exports, {
32
+ default: () => auto_default
33
+ });
34
+ module.exports = __toCommonJS(auto_exports);
35
+ var import_yee_c = require("../..");
36
+ var import_react = __toESM(require("react"));
37
+ var auto_default = () => {
38
+ return /* @__PURE__ */ import_react.default.createElement(
39
+ "div",
40
+ {
41
+ id: "auto-container",
42
+ style: { display: "flex", height: 300, overflow: "auto" }
43
+ },
44
+ /* @__PURE__ */ import_react.default.createElement(
45
+ import_yee_c.Anchor,
46
+ {
47
+ auto: true,
48
+ name: "article",
49
+ affix: false,
50
+ defaultActiveKey: "auto-intro",
51
+ getContainer: () => document.getElementById("auto-container")
52
+ }
53
+ ),
54
+ /* @__PURE__ */ import_react.default.createElement("div", { style: { flex: 1, padding: 20 } }, /* @__PURE__ */ import_react.default.createElement(
55
+ "section",
56
+ {
57
+ id: "auto-intro",
58
+ "data-anchor-group": "article",
59
+ "data-anchor-title": "Introduction",
60
+ style: { height: 300, background: "#f0f0f0", marginBottom: 20 }
61
+ },
62
+ "Introduction"
63
+ ), /* @__PURE__ */ import_react.default.createElement(
64
+ "section",
65
+ {
66
+ id: "auto-usage",
67
+ "data-anchor-group": "article",
68
+ "data-anchor-title": "Usage",
69
+ "data-anchor-status": "success",
70
+ style: { height: 300, background: "#e0e0e0", marginBottom: 20 }
71
+ },
72
+ "Usage"
73
+ ), /* @__PURE__ */ import_react.default.createElement(
74
+ "section",
75
+ {
76
+ id: "auto-caveats",
77
+ "data-anchor-group": "article",
78
+ "data-anchor-title": "Caveats",
79
+ "data-anchor-status": "warning",
80
+ style: { height: 300, background: "#d0d0d0" }
81
+ },
82
+ "Caveats"
83
+ ))
84
+ );
85
+ };
@@ -53,7 +53,13 @@ var basic_default = () => {
53
53
  "div",
54
54
  {
55
55
  id: "basic-container",
56
- style: { display: "flex", height: "100vh", overflow: "auto" }
56
+ style: {
57
+ position: "relative",
58
+ display: "flex",
59
+ height: "100vh",
60
+ overflow: "auto",
61
+ transform: "scale(1)"
62
+ }
57
63
  },
58
64
  /* @__PURE__ */ import_react.default.createElement(
59
65
  import_yee_c.Anchor,
@@ -36,42 +36,54 @@ var import_yee_c = require("../..");
36
36
  var import_react = __toESM(require("react"));
37
37
  var controlled_default = () => {
38
38
  const [activeKey, setActiveKey] = (0, import_react.useState)("part1");
39
+ const containerRef = (0, import_react.useRef)(null);
39
40
  const onChange = (key) => {
40
41
  console.log("Anchor changed to:", key);
41
42
  setActiveKey(key);
42
43
  };
43
- return /* @__PURE__ */ import_react.default.createElement("div", { style: { display: "flex" } }, /* @__PURE__ */ import_react.default.createElement("div", { style: { width: "200px" } }, /* @__PURE__ */ import_react.default.createElement(
44
- import_yee_c.Anchor,
45
- {
46
- items: [
47
- { key: "part1", title: "Part 1" },
48
- { key: "part2", title: "Part 2" },
49
- { key: "part3", title: "Part 3" }
50
- ],
51
- activeKey,
52
- onChange
53
- }
54
- )), /* @__PURE__ */ import_react.default.createElement("div", { style: { flex: 1, padding: "20px" } }, /* @__PURE__ */ import_react.default.createElement(
44
+ return /* @__PURE__ */ import_react.default.createElement(
55
45
  "div",
56
46
  {
57
- id: "part1",
58
- style: {
59
- height: "300px",
60
- backgroundColor: "#f0f0f0",
61
- marginBottom: "20px"
62
- }
47
+ style: { display: "flex", height: "200px", overflow: "auto" },
48
+ ref: containerRef
63
49
  },
64
- "Part 1"
65
- ), /* @__PURE__ */ import_react.default.createElement(
66
- "div",
67
- {
68
- id: "part2",
69
- style: {
70
- height: "300px",
71
- backgroundColor: "#e0e0e0",
72
- marginBottom: "20px"
50
+ /* @__PURE__ */ import_react.default.createElement(
51
+ import_yee_c.Anchor,
52
+ {
53
+ items: [
54
+ { key: "part1", title: "Part 1" },
55
+ { key: "part2", title: "Part 2" },
56
+ { key: "part3", title: "Part 3" }
57
+ ],
58
+ direction: "vertical",
59
+ affix: false,
60
+ activeKey,
61
+ onChange,
62
+ getContainer: () => containerRef.current
73
63
  }
74
- },
75
- "Part 2"
76
- ), /* @__PURE__ */ import_react.default.createElement("div", { id: "part3", style: { height: "300px", backgroundColor: "#d0d0d0" } }, "Part 3")));
64
+ ),
65
+ /* @__PURE__ */ import_react.default.createElement("div", { style: { flex: 1, padding: "20px" } }, /* @__PURE__ */ import_react.default.createElement(
66
+ "div",
67
+ {
68
+ id: "part1",
69
+ style: {
70
+ height: "300px",
71
+ backgroundColor: "#f0f0f0",
72
+ marginBottom: "20px"
73
+ }
74
+ },
75
+ "Part 1"
76
+ ), /* @__PURE__ */ import_react.default.createElement(
77
+ "div",
78
+ {
79
+ id: "part2",
80
+ style: {
81
+ height: "300px",
82
+ backgroundColor: "#e0e0e0",
83
+ marginBottom: "20px"
84
+ }
85
+ },
86
+ "Part 2"
87
+ ), /* @__PURE__ */ import_react.default.createElement("div", { id: "part3", style: { height: "300px", backgroundColor: "#d0d0d0" } }, "Part 3"))
88
+ );
77
89
  };
@@ -119,4 +119,6 @@ export interface AnchorContextType {
119
119
  prefixCls: string;
120
120
  activeKey?: string;
121
121
  onClick?: (key: string) => void;
122
+ classNames?: Partial<Record<AnchorSemanticDOM, string>>;
123
+ styles?: Partial<Record<AnchorSemanticDOM, React.CSSProperties>>;
122
124
  }
@@ -53,7 +53,7 @@
53
53
  width: var(--yee-anchor-static-item-active-width);
54
54
  height: var(--yee-anchor-static-item-active-height);
55
55
  border: none;
56
- border-radius: 0;
56
+ border-radius: var(--yee-anchor-static-item-active-width);
57
57
  background-color: var(--yee-anchor-item-active-font-color);
58
58
  }
59
59
  }
@@ -165,7 +165,7 @@
165
165
 
166
166
  &-item {
167
167
  position: relative;
168
- padding: var(--yee-anchor-item-padding);
168
+ margin: var(--yee-anchor-item-padding);
169
169
  white-space: nowrap;
170
170
  color: var(--yee-anchor-item-font-color);
171
171
  cursor: pointer;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
2
  import type { ButtonProps } from './interface';
3
3
  import './style/index.less';
4
- declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement | HTMLAnchorElement>>;
4
+ declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLAnchorElement | HTMLButtonElement>>;
5
5
  export default Button;
@@ -78,6 +78,7 @@ var CheckboxGroup = (baseprops) => {
78
78
  options,
79
79
  buttonStyle,
80
80
  disabled,
81
+ layout = "horizontal",
81
82
  onChange
82
83
  } = props;
83
84
  const [mergedValue, setMergedValue] = (0, import_useMergedState.default)([], {
@@ -86,6 +87,7 @@ var CheckboxGroup = (baseprops) => {
86
87
  });
87
88
  const cls = (0, import_clsx.default)(
88
89
  prefixCls,
90
+ [`${prefixCls}-${layout}`],
89
91
  {
90
92
  [`${prefixCls}-${buttonStyle}`]: buttonStyle,
91
93
  [`${prefixCls}-disabled`]: disabled
@@ -110,7 +112,8 @@ var CheckboxGroup = (baseprops) => {
110
112
  }, option), {
111
113
  checked: mergedValue.includes(option.value),
112
114
  key: option.value || index
113
- })
115
+ }),
116
+ option.label
114
117
  ))
115
118
  ));
116
119
  };
@@ -51,6 +51,7 @@ var group_default = () => {
51
51
  {
52
52
  value,
53
53
  onChange,
54
+ layout: "vertical",
54
55
  options: [
55
56
  { value: "A", label: "Option A" },
56
57
  { value: "B", label: "Option B" },
@@ -93,6 +93,11 @@ export interface CheckboxGroupProps {
93
93
  * Options
94
94
  */
95
95
  options?: Array<CheckboxOption>;
96
+ /**
97
+ * group layout
98
+ * @default horizontal
99
+ */
100
+ layout?: 'horizontal' | 'vertical';
96
101
  /**
97
102
  * Callback when value changes
98
103
  */
@@ -33,6 +33,10 @@
33
33
  background-color: var(--yee-checkbox-checked-bg-color);
34
34
  border-color: var(--yee-checkbox-checked-border-color);
35
35
 
36
+ --ye-checkbox-checked-border-color: var(
37
+ --yee-checkbox-checked-after-border-color
38
+ );
39
+
36
40
  &::after {
37
41
  position: absolute;
38
42
  top: 50%;
@@ -41,7 +45,7 @@
41
45
  width: var(--yee-checkbox-checked-after-width);
42
46
  height: var(--yee-checkbox-checked-after-height);
43
47
  border: var(--yee-checkbox-checked-after-border-width) solid
44
- var(--yee-checkbox-checked-after-border-color);
48
+ var(--ye-checkbox-checked-border-color);
45
49
  border-top: 0;
46
50
  transform: rotate(45deg) scale(1) translate(-50%, -50%);
47
51
  content: '';
@@ -59,6 +63,14 @@
59
63
  border-color: var(--yee-checkbox-border-color);
60
64
  }
61
65
 
66
+ &&-checked {
67
+ @{pls}-inner {
68
+ --ye-checkbox-checked-border-color: var(
69
+ --yee-checkbox-disabled-checked-border-color
70
+ );
71
+ }
72
+ }
73
+
62
74
  @{pls}-input {
63
75
  display: none;
64
76
  }
@@ -100,4 +112,12 @@
100
112
  }
101
113
  }
102
114
  }
115
+
116
+ &-group {
117
+ &-vertical {
118
+ display: flex;
119
+ flex-direction: column;
120
+ gap: 8px;
121
+ }
122
+ }
103
123
  }
@@ -42,7 +42,8 @@ var placement_default = () => {
42
42
  { key: "1", label: "Option 1" },
43
43
  { key: "2", label: "Option 2" },
44
44
  { key: "3", label: "Option 3" }
45
- ]
45
+ ],
46
+ keyboard: true
46
47
  }
47
48
  );
48
49
  return /* @__PURE__ */ import_react.default.createElement(import_yee_c.Space, { wrap: true }, /* @__PURE__ */ import_react.default.createElement(import_yee_c.Dropdown, { popup: menu, placement: "bottomLeft" }, /* @__PURE__ */ import_react.default.createElement(import_yee_c.Button, null, "Bottom Left")), /* @__PURE__ */ import_react.default.createElement(import_yee_c.Dropdown, { popup: menu, placement: "bottom" }, /* @__PURE__ */ import_react.default.createElement(import_yee_c.Button, null, "Bottom Center")), /* @__PURE__ */ import_react.default.createElement(import_yee_c.Dropdown, { popup: menu, placement: "bottomRight" }, /* @__PURE__ */ import_react.default.createElement(import_yee_c.Button, null, "Bottom Right")), /* @__PURE__ */ import_react.default.createElement(import_yee_c.Dropdown, { popup: menu, placement: "topLeft" }, /* @__PURE__ */ import_react.default.createElement(import_yee_c.Button, null, "Top Left")), /* @__PURE__ */ import_react.default.createElement(import_yee_c.Dropdown, { popup: menu, placement: "top" }, /* @__PURE__ */ import_react.default.createElement(import_yee_c.Button, null, "Top Center")), /* @__PURE__ */ import_react.default.createElement(import_yee_c.Dropdown, { popup: menu, placement: "topRight" }, /* @__PURE__ */ import_react.default.createElement(import_yee_c.Button, null, "Top Right")));
@@ -80,6 +80,7 @@ var Dropdown = (baseprops) => {
80
80
  menu,
81
81
  open,
82
82
  defaultOpen,
83
+ arrow = { className: `${prefixCls}-arrow` },
83
84
  onOpenChange
84
85
  } = _a, rest = __objRest(_a, [
85
86
  "children",
@@ -89,6 +90,7 @@ var Dropdown = (baseprops) => {
89
90
  "menu",
90
91
  "open",
91
92
  "defaultOpen",
93
+ "arrow",
92
94
  "onOpenChange"
93
95
  ]);
94
96
  const [mergedOpen, setMergedOpen] = (0, import_useMergedState.default)(false, {
@@ -115,6 +117,7 @@ var Dropdown = (baseprops) => {
115
117
  return /* @__PURE__ */ import_react.default.createElement(
116
118
  import_Trigger.default,
117
119
  __spreadProps(__spreadValues({}, rest), {
120
+ arrow,
118
121
  popup: renderPopup(),
119
122
  placement,
120
123
  popupClassName: `${prefixCls}-popup`,
@@ -4,4 +4,10 @@
4
4
  &-popup {
5
5
  background-color: var(--yee-dropdown-bg-color);
6
6
  }
7
+
8
+ &-arrow {
9
+ &::after {
10
+ background-color: var(--yee-dropdown-bg-color);
11
+ }
12
+ }
7
13
  }
@@ -21,6 +21,18 @@ var __spreadValues = (a, b) => {
21
21
  return a;
22
22
  };
23
23
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
24
+ var __objRest = (source, exclude) => {
25
+ var target = {};
26
+ for (var prop in source)
27
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
28
+ target[prop] = source[prop];
29
+ if (source != null && __getOwnPropSymbols)
30
+ for (var prop of __getOwnPropSymbols(source)) {
31
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
32
+ target[prop] = source[prop];
33
+ }
34
+ return target;
35
+ };
24
36
  var __export = (target, all) => {
25
37
  for (var name in all)
26
38
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -50,8 +62,10 @@ __export(Field_exports, {
50
62
  });
51
63
  module.exports = __toCommonJS(Field_exports);
52
64
  var import_clsx = __toESM(require("clsx"));
65
+ var import_lucide_react = require("lucide-react");
53
66
  var import_react = require("motion/react");
54
67
  var import_react2 = __toESM(require("react"));
68
+ var import_Tooltip = __toESM(require("../Tooltip"));
55
69
  var import_FieldContext = __toESM(require("./FieldContext"));
56
70
  var import_FormContext = __toESM(require("./FormContext"));
57
71
  var import_List = require("./List");
@@ -71,9 +85,11 @@ var Field = (props) => {
71
85
  name,
72
86
  rules,
73
87
  label,
88
+ tooltip,
74
89
  required,
75
90
  disabled,
76
91
  valuePropName = "value",
92
+ layout = "vertical",
77
93
  formatter
78
94
  } = props;
79
95
  const {
@@ -110,6 +126,18 @@ var Field = (props) => {
110
126
  return Array.isArray(rules) && rules.find((rule) => rule.required) || required;
111
127
  };
112
128
  const validate = getFieldValidate == null ? void 0 : getFieldValidate(normalizedName);
129
+ const tooltipConfig = (0, import_react2.useMemo)(() => {
130
+ if (tooltip === void 0 || tooltip === null || tooltip === false)
131
+ return null;
132
+ if (typeof tooltip === "object" && !import_react2.default.isValidElement(tooltip) && "title" in tooltip) {
133
+ const _a = tooltip, { icon } = _a, rest = __objRest(_a, ["icon"]);
134
+ return { icon: icon != null ? icon : /* @__PURE__ */ import_react2.default.createElement(import_lucide_react.HelpCircle, { size: 14 }), tooltipProps: rest };
135
+ }
136
+ return {
137
+ icon: /* @__PURE__ */ import_react2.default.createElement(import_lucide_react.HelpCircle, { size: 14 }),
138
+ tooltipProps: { title: tooltip }
139
+ };
140
+ }, [tooltip]);
113
141
  const getControlled = (children2) => {
114
142
  var _a, _b, _c;
115
143
  const props2 = children2.props;
@@ -150,11 +178,11 @@ var Field = (props) => {
150
178
  return /* @__PURE__ */ import_react2.default.createElement(
151
179
  "div",
152
180
  {
153
- className: (0, import_clsx.default)(`${prefixCls}-item`, {
181
+ className: (0, import_clsx.default)(`${prefixCls}-item`, `${prefixCls}-item-${layout}`, {
154
182
  [`${prefixCls}-item-${validate == null ? void 0 : validate.status}`]: validate && validate.status
155
183
  })
156
184
  },
157
- /* @__PURE__ */ import_react2.default.createElement("div", { className: (0, import_clsx.default)(`${prefixCls}-item-row`) }, label ? /* @__PURE__ */ import_react2.default.createElement(
185
+ /* @__PURE__ */ import_react2.default.createElement("div", { className: (0, import_clsx.default)(`${prefixCls}-item-row`) }, label || tooltipConfig ? /* @__PURE__ */ import_react2.default.createElement(
158
186
  "label",
159
187
  {
160
188
  htmlFor: normalizedName,
@@ -162,7 +190,9 @@ var Field = (props) => {
162
190
  [`${prefixCls}-item-required`]: isRequired()
163
191
  })
164
192
  },
165
- label
193
+ label,
194
+ isRequired() ? /* @__PURE__ */ import_react2.default.createElement("span", { className: `${prefixCls}-item-required-mark` }, "*") : null,
195
+ tooltipConfig ? /* @__PURE__ */ import_react2.default.createElement(import_Tooltip.default, __spreadValues({}, tooltipConfig.tooltipProps), /* @__PURE__ */ import_react2.default.createElement("span", { className: `${prefixCls}-item-tooltip-icon` }, tooltipConfig.icon)) : null
166
196
  ) : null, /* @__PURE__ */ import_react2.default.createElement("div", { className: `${prefixCls}-item-control` }, import_react2.default.isValidElement(children) ? import_react2.default.cloneElement(
167
197
  children,
168
198
  getControlled(children)
@@ -85,7 +85,7 @@ var Group = (props) => {
85
85
  name: childNames,
86
86
  status: "error",
87
87
  value: values,
88
- message: rule.message
88
+ message: rule.message || ""
89
89
  });
90
90
  }
91
91
  }
@@ -143,7 +143,8 @@ var Group = (props) => {
143
143
  [`${itemCls}-required`]: required
144
144
  })
145
145
  },
146
- label
146
+ label,
147
+ required ? /* @__PURE__ */ import_react2.default.createElement("span", { className: `${itemCls}-required-mark` }, "*") : null
147
148
  ), /* @__PURE__ */ import_react2.default.createElement("div", { className: `${itemCls}-control` }, content)),
148
149
  /* @__PURE__ */ import_react2.default.createElement(import_react.AnimatePresence, null, hasError && /* @__PURE__ */ import_react2.default.createElement(
149
150
  import_react.motion.small,