huibo-ui 0.3.0 → 0.4.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 (668) hide show
  1. package/dist/cjs/{date-helpers-904747ff.js → date-helpers-1ffddc59.js} +7 -3
  2. package/dist/cjs/date-helpers-1ffddc59.js.map +1 -0
  3. package/dist/cjs/hb-affix.cjs.entry.js +1 -1
  4. package/dist/cjs/hb-aside.cjs.entry.js +1 -1
  5. package/dist/cjs/hb-avatar.cjs.entry.js +1 -1
  6. package/dist/cjs/hb-backtop.cjs.entry.js +2 -2
  7. package/dist/cjs/hb-badge.cjs.entry.js +1 -1
  8. package/dist/cjs/hb-breadcrumb-item.cjs.entry.js +1 -1
  9. package/dist/cjs/hb-breadcrumb.cjs.entry.js +1 -1
  10. package/dist/cjs/hb-button.cjs.entry.js +2 -2
  11. package/dist/cjs/hb-calendar.cjs.entry.js +78 -10
  12. package/dist/cjs/hb-calendar.cjs.entry.js.map +1 -1
  13. package/dist/cjs/hb-card.cjs.entry.js +1 -1
  14. package/dist/cjs/hb-cascader.cjs.entry.js +270 -146
  15. package/dist/cjs/hb-cascader.cjs.entry.js.map +1 -1
  16. package/dist/cjs/hb-checkbox-group.cjs.entry.js +2 -2
  17. package/dist/cjs/hb-checkbox.cjs.entry.js +3 -3
  18. package/dist/cjs/hb-collapse-item.cjs.entry.js +1 -1
  19. package/dist/cjs/hb-collapse.cjs.entry.js +1 -1
  20. package/dist/cjs/hb-color-picker-panel.cjs.entry.js +2 -2
  21. package/dist/cjs/hb-color-picker.cjs.entry.js +91 -14
  22. package/dist/cjs/hb-color-picker.cjs.entry.js.map +1 -1
  23. package/dist/cjs/hb-config-provider.cjs.entry.js +1 -1
  24. package/dist/cjs/hb-container.cjs.entry.js +2 -2
  25. package/dist/cjs/hb-date-picker-pane.cjs.entry.js +2 -2
  26. package/dist/cjs/hb-date-picker.cjs.entry.js +85 -7
  27. package/dist/cjs/hb-date-picker.cjs.entry.js.map +1 -1
  28. package/dist/cjs/hb-date-range-picker.cjs.entry.js +3 -3
  29. package/dist/cjs/hb-date-time-picker.cjs.entry.js +3 -3
  30. package/dist/cjs/hb-descriptions.cjs.entry.js +2 -2
  31. package/dist/cjs/hb-descriptions.cjs.entry.js.map +1 -1
  32. package/dist/cjs/hb-divider.cjs.entry.js +2 -2
  33. package/dist/cjs/hb-drawer.cjs.entry.js +1 -1
  34. package/dist/cjs/hb-dropdown.cjs.entry.js +74 -6
  35. package/dist/cjs/hb-dropdown.cjs.entry.js.map +1 -1
  36. package/dist/cjs/hb-empty.cjs.entry.js +1 -1
  37. package/dist/cjs/hb-float-button.cjs.entry.js +2 -2
  38. package/dist/cjs/hb-footer.cjs.entry.js +1 -1
  39. package/dist/cjs/hb-form-item.cjs.entry.js +59 -8
  40. package/dist/cjs/hb-form-item.cjs.entry.js.map +1 -1
  41. package/dist/cjs/hb-form.cjs.entry.js +3 -3
  42. package/dist/cjs/hb-form.cjs.entry.js.map +1 -1
  43. package/dist/cjs/hb-header.cjs.entry.js +1 -1
  44. package/dist/cjs/hb-image-preview.cjs.entry.js +12 -8
  45. package/dist/cjs/hb-image-preview.cjs.entry.js.map +1 -1
  46. package/dist/cjs/hb-image.cjs.entry.js +1 -1
  47. package/dist/cjs/hb-input-number.cjs.entry.js +5 -5
  48. package/dist/cjs/hb-input-tag.cjs.entry.js +2 -2
  49. package/dist/cjs/hb-input.cjs.entry.js +39 -3
  50. package/dist/cjs/hb-input.cjs.entry.js.map +1 -1
  51. package/dist/cjs/hb-layout.cjs.entry.js +36 -14
  52. package/dist/cjs/hb-layout.cjs.entry.js.map +1 -1
  53. package/dist/cjs/hb-link.cjs.entry.js +2 -2
  54. package/dist/cjs/hb-loading.cjs.entry.js +2 -2
  55. package/dist/cjs/hb-main.cjs.entry.js +1 -1
  56. package/dist/cjs/hb-menu-item.cjs.entry.js +2 -2
  57. package/dist/cjs/hb-menu.cjs.entry.js +3 -3
  58. package/dist/cjs/hb-menu.cjs.entry.js.map +1 -1
  59. package/dist/cjs/hb-message.cjs.entry.js +2 -2
  60. package/dist/cjs/hb-notification.cjs.entry.js +2 -2
  61. package/dist/cjs/hb-page-header.cjs.entry.js +1 -1
  62. package/dist/cjs/hb-pagination.cjs.entry.js +21 -8
  63. package/dist/cjs/hb-pagination.cjs.entry.js.map +1 -1
  64. package/dist/cjs/hb-popconfirm.cjs.entry.js +37 -7
  65. package/dist/cjs/hb-popconfirm.cjs.entry.js.map +1 -1
  66. package/dist/cjs/hb-popover.cjs.entry.js +22 -2
  67. package/dist/cjs/hb-popover.cjs.entry.js.map +1 -1
  68. package/dist/cjs/hb-progress.cjs.entry.js +1 -1
  69. package/dist/cjs/hb-radio.cjs.entry.js +2 -2
  70. package/dist/cjs/hb-rate.cjs.entry.js +45 -3
  71. package/dist/cjs/hb-rate.cjs.entry.js.map +1 -1
  72. package/dist/cjs/hb-result.cjs.entry.js +1 -1
  73. package/dist/cjs/hb-row.cjs.entry.js +2 -2
  74. package/dist/cjs/hb-segmented.cjs.entry.js +39 -5
  75. package/dist/cjs/hb-segmented.cjs.entry.js.map +1 -1
  76. package/dist/cjs/hb-select.cjs.entry.js +47 -8
  77. package/dist/cjs/hb-select.cjs.entry.js.map +1 -1
  78. package/dist/cjs/hb-slider.cjs.entry.js +189 -20
  79. package/dist/cjs/hb-slider.cjs.entry.js.map +1 -1
  80. package/dist/cjs/hb-space.cjs.entry.js +2 -2
  81. package/dist/cjs/hb-statistic.cjs.entry.js +1 -1
  82. package/dist/cjs/hb-step.cjs.entry.js +1 -1
  83. package/dist/cjs/hb-steps.cjs.entry.js +30 -9
  84. package/dist/cjs/hb-steps.cjs.entry.js.map +1 -1
  85. package/dist/cjs/hb-sub-menu.cjs.entry.js +4 -4
  86. package/dist/cjs/hb-switch.cjs.entry.js +9 -4
  87. package/dist/cjs/hb-switch.cjs.entry.js.map +1 -1
  88. package/dist/cjs/hb-tab-pane.cjs.entry.js +1 -1
  89. package/dist/cjs/hb-table.cjs.entry.js +1 -1
  90. package/dist/cjs/hb-table.cjs.entry.js.map +1 -1
  91. package/dist/cjs/hb-tabs.cjs.entry.js +2 -2
  92. package/dist/cjs/hb-tag.cjs.entry.js +2 -2
  93. package/dist/cjs/hb-text.cjs.entry.js +2 -2
  94. package/dist/cjs/hb-time-picker.cjs.entry.js +4 -4
  95. package/dist/cjs/hb-time-select.cjs.entry.js +2 -2
  96. package/dist/cjs/hb-timeline.cjs.entry.js +1 -1
  97. package/dist/cjs/hb-tooltip.cjs.entry.js +18 -1
  98. package/dist/cjs/hb-tooltip.cjs.entry.js.map +1 -1
  99. package/dist/cjs/hb-transfer.cjs.entry.js +2 -2
  100. package/dist/cjs/hb-tree-select.cjs.entry.js +95 -18
  101. package/dist/cjs/hb-tree-select.cjs.entry.js.map +1 -1
  102. package/dist/cjs/hb-tree.cjs.entry.js +1 -1
  103. package/dist/cjs/hb-upload.cjs.entry.js +3 -3
  104. package/dist/cjs/hb-watermark.cjs.entry.js +1 -1
  105. package/dist/cjs/huibo-ui.cjs.js +1 -1
  106. package/dist/cjs/loader.cjs.js +1 -1
  107. package/dist/collection/collection-manifest.json +3 -3
  108. package/dist/collection/components/Affix/Affix.js +1 -1
  109. package/dist/collection/components/Avatar/Avatar.js +1 -1
  110. package/dist/collection/components/Backtop/Backtop.js +2 -2
  111. package/dist/collection/components/Badge/Badge.js +1 -1
  112. package/dist/collection/components/Breadcrumb/Breadcrumb.js +1 -1
  113. package/dist/collection/components/Breadcrumb/BreadcrumbItem.js +1 -1
  114. package/dist/collection/components/Button/Button.js +2 -2
  115. package/dist/collection/components/Calendar/Calendar.js +84 -10
  116. package/dist/collection/components/Calendar/Calendar.js.map +1 -1
  117. package/dist/collection/components/Calendar/calendar.css +16 -0
  118. package/dist/collection/components/Card/Card.js +1 -1
  119. package/dist/collection/components/Cascader/Cascader.js +374 -194
  120. package/dist/collection/components/Cascader/Cascader.js.map +1 -1
  121. package/dist/collection/components/Cascader/cascader.css +170 -16
  122. package/dist/collection/components/Checkbox/Checkbox.js +3 -3
  123. package/dist/collection/components/Checkbox/CheckboxGroup.js +2 -2
  124. package/dist/collection/components/Collapse/Collapse.js +1 -1
  125. package/dist/collection/components/Collapse/CollapseItem.js +1 -1
  126. package/dist/collection/components/ColorPicker/ColorPicker.js +92 -14
  127. package/dist/collection/components/ColorPicker/ColorPicker.js.map +1 -1
  128. package/dist/collection/components/ColorPicker/color-picker.css +13 -0
  129. package/dist/collection/components/ColorPickerPanel/ColorPickerPanel.js +2 -2
  130. package/dist/collection/components/ConfigProvider/ConfigProvider.js +1 -1
  131. package/dist/collection/components/Container/Aside.js +1 -1
  132. package/dist/collection/components/Container/Container.js +2 -2
  133. package/dist/collection/components/Container/Footer.js +1 -1
  134. package/dist/collection/components/Container/Header.js +1 -1
  135. package/dist/collection/components/Container/Main.js +1 -1
  136. package/dist/collection/components/DatePicker/DatePicker.js +89 -10
  137. package/dist/collection/components/DatePicker/DatePicker.js.map +1 -1
  138. package/dist/collection/components/DatePicker/date-picker.css +62 -2
  139. package/dist/collection/components/DatePickerPane/DatePickerPane.js +1 -1
  140. package/dist/collection/components/DateRangePicker/DateRangePicker.js +2 -2
  141. package/dist/collection/components/DateTimePicker/DateTimePicker.js +2 -2
  142. package/dist/collection/components/Descriptions/Descriptions.js +1 -1
  143. package/dist/collection/components/Descriptions/descriptions.css +22 -0
  144. package/dist/collection/components/Divider/Divider.js +2 -2
  145. package/dist/collection/components/Drawer/Drawer.js +1 -1
  146. package/dist/collection/components/Dropdown/Dropdown.js +83 -7
  147. package/dist/collection/components/Dropdown/Dropdown.js.map +1 -1
  148. package/dist/collection/components/Dropdown/dropdown.css +2 -1
  149. package/dist/collection/components/Empty/Empty.js +1 -1
  150. package/dist/collection/components/FloatButton/FloatButton.js +2 -2
  151. package/dist/collection/components/Form/Form.js +2 -2
  152. package/dist/collection/components/Form/FormItem.js +60 -9
  153. package/dist/collection/components/Form/FormItem.js.map +1 -1
  154. package/dist/collection/components/Form/form-item.css +49 -4
  155. package/dist/collection/components/Form/form.css +1 -0
  156. package/dist/collection/components/Image/Image.js +1 -1
  157. package/dist/collection/components/ImagePreview/ImagePreview.js +12 -8
  158. package/dist/collection/components/ImagePreview/ImagePreview.js.map +1 -1
  159. package/dist/collection/components/Input/Input.js +38 -2
  160. package/dist/collection/components/Input/Input.js.map +1 -1
  161. package/dist/collection/components/Input/input.css +21 -2
  162. package/dist/collection/components/InputNumber/InputNumber.js +5 -5
  163. package/dist/collection/components/InputTag/InputTag.js +2 -2
  164. package/dist/collection/components/Layout/Layout.js +87 -34
  165. package/dist/collection/components/Layout/Layout.js.map +1 -1
  166. package/dist/collection/components/Layout/Row.js +2 -2
  167. package/dist/collection/components/Layout/layout.css +524 -0
  168. package/dist/collection/components/Link/Link.js +2 -2
  169. package/dist/collection/components/Loading/Loading.js +2 -2
  170. package/dist/collection/components/Menu/Menu.js +2 -2
  171. package/dist/collection/components/Menu/MenuItem.js +2 -2
  172. package/dist/collection/components/Menu/SubMenu.js +4 -4
  173. package/dist/collection/components/Menu/menu.css +25 -0
  174. package/dist/collection/components/Message/Message.js +2 -2
  175. package/dist/collection/components/Notification/Notification.js +2 -2
  176. package/dist/collection/components/PageHeader/PageHeader.js +1 -1
  177. package/dist/collection/components/Pagination/Pagination.js +23 -7
  178. package/dist/collection/components/Pagination/Pagination.js.map +1 -1
  179. package/dist/collection/components/Pagination/pagination.css +23 -0
  180. package/dist/collection/components/Popconfirm/Popconfirm.js +44 -7
  181. package/dist/collection/components/Popconfirm/Popconfirm.js.map +1 -1
  182. package/dist/collection/components/Popover/Popover.js +29 -2
  183. package/dist/collection/components/Popover/Popover.js.map +1 -1
  184. package/dist/collection/components/Progress/Progress.js +1 -1
  185. package/dist/collection/components/Radio/Radio.js +2 -2
  186. package/dist/collection/components/Rate/Rate.js +45 -3
  187. package/dist/collection/components/Rate/Rate.js.map +1 -1
  188. package/dist/collection/components/Result/Result.js +1 -1
  189. package/dist/collection/components/Segmented/Segmented.js +51 -6
  190. package/dist/collection/components/Segmented/Segmented.js.map +1 -1
  191. package/dist/collection/components/Select/Select.js +46 -7
  192. package/dist/collection/components/Select/Select.js.map +1 -1
  193. package/dist/collection/components/Select/select.css +50 -4
  194. package/dist/collection/components/Slider/Slider.js +221 -21
  195. package/dist/collection/components/Slider/Slider.js.map +1 -1
  196. package/dist/collection/components/Slider/slider.css +58 -7
  197. package/dist/collection/components/Space/Space.js +2 -2
  198. package/dist/collection/components/Statistic/Statistic.js +1 -1
  199. package/dist/collection/components/Steps/Step.js +1 -1
  200. package/dist/collection/components/Steps/Steps.js +35 -8
  201. package/dist/collection/components/Steps/Steps.js.map +1 -1
  202. package/dist/collection/components/Switch/Switch.js +8 -3
  203. package/dist/collection/components/Switch/Switch.js.map +1 -1
  204. package/dist/collection/components/Switch/switch.css +45 -0
  205. package/dist/collection/components/Table/table.css +20 -0
  206. package/dist/collection/components/Tabs/TabPane.js +1 -1
  207. package/dist/collection/components/Tabs/Tabs.js +2 -2
  208. package/dist/collection/components/Tag/Tag.js +2 -2
  209. package/dist/collection/components/Text/Text.js +2 -2
  210. package/dist/collection/components/TimePicker/TimePicker.js +4 -4
  211. package/dist/collection/components/TimeSelect/TimeSelect.js +2 -2
  212. package/dist/collection/components/Timeline/Timeline.js +1 -1
  213. package/dist/collection/components/Tooltip/Tooltip.js +25 -2
  214. package/dist/collection/components/Tooltip/Tooltip.js.map +1 -1
  215. package/dist/collection/components/Transfer/Transfer.js +2 -2
  216. package/dist/collection/components/Tree/Tree.js +1 -1
  217. package/dist/collection/components/TreeSelect/TreeSelect.js +94 -17
  218. package/dist/collection/components/TreeSelect/TreeSelect.js.map +1 -1
  219. package/dist/collection/components/TreeSelect/tree-select.css +41 -7
  220. package/dist/collection/components/Upload/Upload.js +3 -3
  221. package/dist/collection/components/Watermark/Watermark.js +1 -1
  222. package/dist/collection/utils/date-helpers.js +6 -2
  223. package/dist/collection/utils/date-helpers.js.map +1 -1
  224. package/dist/components/hb-affix.js +1 -1
  225. package/dist/components/hb-aside.js +1 -1
  226. package/dist/components/hb-avatar.js +1 -1
  227. package/dist/components/hb-backtop.js +2 -2
  228. package/dist/components/hb-badge.js +1 -1
  229. package/dist/components/hb-breadcrumb-item.js +1 -1
  230. package/dist/components/hb-breadcrumb.js +1 -1
  231. package/dist/components/hb-button.js +2 -2
  232. package/dist/components/hb-calendar.js +80 -11
  233. package/dist/components/hb-calendar.js.map +1 -1
  234. package/dist/components/hb-card.js +1 -1
  235. package/dist/components/hb-cascader.js +273 -146
  236. package/dist/components/hb-cascader.js.map +1 -1
  237. package/dist/components/hb-checkbox-group.js +2 -2
  238. package/dist/components/hb-checkbox.js +3 -3
  239. package/dist/components/hb-collapse-item.js +1 -1
  240. package/dist/components/hb-collapse.js +1 -1
  241. package/dist/components/hb-color-picker-panel.js +2 -2
  242. package/dist/components/hb-color-picker.js +93 -15
  243. package/dist/components/hb-color-picker.js.map +1 -1
  244. package/dist/components/hb-config-provider.js +1 -1
  245. package/dist/components/hb-container.js +2 -2
  246. package/dist/components/hb-date-picker-pane.js +2 -2
  247. package/dist/components/hb-date-picker.js +87 -8
  248. package/dist/components/hb-date-picker.js.map +1 -1
  249. package/dist/components/hb-date-range-picker.js +3 -3
  250. package/dist/components/hb-date-time-picker.js +3 -3
  251. package/dist/components/hb-descriptions.js +2 -2
  252. package/dist/components/hb-descriptions.js.map +1 -1
  253. package/dist/components/hb-divider.js +2 -2
  254. package/dist/components/hb-drawer.js +1 -1
  255. package/dist/components/hb-dropdown.js +76 -7
  256. package/dist/components/hb-dropdown.js.map +1 -1
  257. package/dist/components/hb-empty.js +1 -1
  258. package/dist/components/hb-float-button.js +2 -2
  259. package/dist/components/hb-footer.js +1 -1
  260. package/dist/components/hb-form-item.js +59 -8
  261. package/dist/components/hb-form-item.js.map +1 -1
  262. package/dist/components/hb-form.js +3 -3
  263. package/dist/components/hb-form.js.map +1 -1
  264. package/dist/components/hb-header.js +1 -1
  265. package/dist/components/hb-icon.js +1 -89
  266. package/dist/components/hb-icon.js.map +1 -1
  267. package/dist/components/hb-image-preview.js +12 -8
  268. package/dist/components/hb-image-preview.js.map +1 -1
  269. package/dist/components/hb-image.js +1 -1
  270. package/dist/components/hb-input-number.js +5 -5
  271. package/dist/components/hb-input-tag.js +2 -2
  272. package/dist/components/hb-input.js +39 -3
  273. package/dist/components/hb-input.js.map +1 -1
  274. package/dist/components/hb-layout.js +36 -14
  275. package/dist/components/hb-layout.js.map +1 -1
  276. package/dist/components/hb-link.js +2 -2
  277. package/dist/components/hb-loading.js +2 -2
  278. package/dist/components/hb-main.js +1 -1
  279. package/dist/components/hb-menu-item.js +2 -2
  280. package/dist/components/hb-menu.js +3 -3
  281. package/dist/components/hb-menu.js.map +1 -1
  282. package/dist/components/hb-message.js +2 -2
  283. package/dist/components/hb-notification.js +2 -2
  284. package/dist/components/hb-page-header.js +1 -1
  285. package/dist/components/hb-pagination.js +25 -10
  286. package/dist/components/hb-pagination.js.map +1 -1
  287. package/dist/components/hb-popconfirm.js +37 -7
  288. package/dist/components/hb-popconfirm.js.map +1 -1
  289. package/dist/components/hb-popover.js +22 -2
  290. package/dist/components/hb-popover.js.map +1 -1
  291. package/dist/components/hb-progress.js +1 -1
  292. package/dist/components/hb-radio.js +2 -2
  293. package/dist/components/hb-rate.js +45 -3
  294. package/dist/components/hb-rate.js.map +1 -1
  295. package/dist/components/hb-result.js +1 -1
  296. package/dist/components/hb-row.js +2 -2
  297. package/dist/components/hb-segmented.js +41 -6
  298. package/dist/components/hb-segmented.js.map +1 -1
  299. package/dist/components/hb-select.js +47 -8
  300. package/dist/components/hb-select.js.map +1 -1
  301. package/dist/components/hb-slider.js +194 -21
  302. package/dist/components/hb-slider.js.map +1 -1
  303. package/dist/components/hb-space.js +2 -2
  304. package/dist/components/hb-statistic.js +1 -1
  305. package/dist/components/hb-step.js +1 -1
  306. package/dist/components/hb-steps.js +35 -8
  307. package/dist/components/hb-steps.js.map +1 -1
  308. package/dist/components/hb-sub-menu.js +4 -4
  309. package/dist/components/hb-switch.js +9 -4
  310. package/dist/components/hb-switch.js.map +1 -1
  311. package/dist/components/hb-tab-pane.js +1 -1
  312. package/dist/components/hb-table.js +1 -1
  313. package/dist/components/hb-table.js.map +1 -1
  314. package/dist/components/hb-tabs.js +2 -2
  315. package/dist/components/hb-tag.js +2 -2
  316. package/dist/components/hb-text.js +2 -2
  317. package/dist/components/hb-time-picker.js +4 -4
  318. package/dist/components/hb-time-select.js +2 -2
  319. package/dist/components/hb-timeline.js +1 -1
  320. package/dist/components/hb-tooltip.js +18 -1
  321. package/dist/components/hb-tooltip.js.map +1 -1
  322. package/dist/components/hb-transfer.js +2 -2
  323. package/dist/components/hb-tree-select.js +95 -18
  324. package/dist/components/hb-tree-select.js.map +1 -1
  325. package/dist/components/hb-tree.js +1 -1
  326. package/dist/components/hb-upload.js +3 -3
  327. package/dist/components/hb-watermark.js +1 -1
  328. package/dist/components/{p-cf94cbf6.js → p-08b4005c.js} +7 -3
  329. package/dist/components/p-08b4005c.js.map +1 -0
  330. package/dist/components/p-86d92faf.js +93 -0
  331. package/dist/components/p-86d92faf.js.map +1 -0
  332. package/dist/esm/{date-helpers-e4d85a67.js → date-helpers-44507189.js} +7 -3
  333. package/dist/esm/date-helpers-44507189.js.map +1 -0
  334. package/dist/esm/hb-affix.entry.js +1 -1
  335. package/dist/esm/hb-aside.entry.js +1 -1
  336. package/dist/esm/hb-avatar.entry.js +1 -1
  337. package/dist/esm/hb-backtop.entry.js +2 -2
  338. package/dist/esm/hb-badge.entry.js +1 -1
  339. package/dist/esm/hb-breadcrumb-item.entry.js +1 -1
  340. package/dist/esm/hb-breadcrumb.entry.js +1 -1
  341. package/dist/esm/hb-button.entry.js +2 -2
  342. package/dist/esm/hb-calendar.entry.js +78 -10
  343. package/dist/esm/hb-calendar.entry.js.map +1 -1
  344. package/dist/esm/hb-card.entry.js +1 -1
  345. package/dist/esm/hb-cascader.entry.js +270 -146
  346. package/dist/esm/hb-cascader.entry.js.map +1 -1
  347. package/dist/esm/hb-checkbox-group.entry.js +2 -2
  348. package/dist/esm/hb-checkbox.entry.js +3 -3
  349. package/dist/esm/hb-collapse-item.entry.js +1 -1
  350. package/dist/esm/hb-collapse.entry.js +1 -1
  351. package/dist/esm/hb-color-picker-panel.entry.js +2 -2
  352. package/dist/esm/hb-color-picker.entry.js +91 -14
  353. package/dist/esm/hb-color-picker.entry.js.map +1 -1
  354. package/dist/esm/hb-config-provider.entry.js +1 -1
  355. package/dist/esm/hb-container.entry.js +2 -2
  356. package/dist/esm/hb-date-picker-pane.entry.js +2 -2
  357. package/dist/esm/hb-date-picker.entry.js +85 -7
  358. package/dist/esm/hb-date-picker.entry.js.map +1 -1
  359. package/dist/esm/hb-date-range-picker.entry.js +3 -3
  360. package/dist/esm/hb-date-time-picker.entry.js +3 -3
  361. package/dist/esm/hb-descriptions.entry.js +2 -2
  362. package/dist/esm/hb-descriptions.entry.js.map +1 -1
  363. package/dist/esm/hb-divider.entry.js +2 -2
  364. package/dist/esm/hb-drawer.entry.js +1 -1
  365. package/dist/esm/hb-dropdown.entry.js +74 -6
  366. package/dist/esm/hb-dropdown.entry.js.map +1 -1
  367. package/dist/esm/hb-empty.entry.js +1 -1
  368. package/dist/esm/hb-float-button.entry.js +2 -2
  369. package/dist/esm/hb-footer.entry.js +1 -1
  370. package/dist/esm/hb-form-item.entry.js +59 -8
  371. package/dist/esm/hb-form-item.entry.js.map +1 -1
  372. package/dist/esm/hb-form.entry.js +3 -3
  373. package/dist/esm/hb-form.entry.js.map +1 -1
  374. package/dist/esm/hb-header.entry.js +1 -1
  375. package/dist/esm/hb-image-preview.entry.js +12 -8
  376. package/dist/esm/hb-image-preview.entry.js.map +1 -1
  377. package/dist/esm/hb-image.entry.js +1 -1
  378. package/dist/esm/hb-input-number.entry.js +5 -5
  379. package/dist/esm/hb-input-tag.entry.js +2 -2
  380. package/dist/esm/hb-input.entry.js +39 -3
  381. package/dist/esm/hb-input.entry.js.map +1 -1
  382. package/dist/esm/hb-layout.entry.js +36 -14
  383. package/dist/esm/hb-layout.entry.js.map +1 -1
  384. package/dist/esm/hb-link.entry.js +2 -2
  385. package/dist/esm/hb-loading.entry.js +2 -2
  386. package/dist/esm/hb-main.entry.js +1 -1
  387. package/dist/esm/hb-menu-item.entry.js +2 -2
  388. package/dist/esm/hb-menu.entry.js +3 -3
  389. package/dist/esm/hb-menu.entry.js.map +1 -1
  390. package/dist/esm/hb-message.entry.js +2 -2
  391. package/dist/esm/hb-notification.entry.js +2 -2
  392. package/dist/esm/hb-page-header.entry.js +1 -1
  393. package/dist/esm/hb-pagination.entry.js +21 -8
  394. package/dist/esm/hb-pagination.entry.js.map +1 -1
  395. package/dist/esm/hb-popconfirm.entry.js +37 -7
  396. package/dist/esm/hb-popconfirm.entry.js.map +1 -1
  397. package/dist/esm/hb-popover.entry.js +22 -2
  398. package/dist/esm/hb-popover.entry.js.map +1 -1
  399. package/dist/esm/hb-progress.entry.js +1 -1
  400. package/dist/esm/hb-radio.entry.js +2 -2
  401. package/dist/esm/hb-rate.entry.js +45 -3
  402. package/dist/esm/hb-rate.entry.js.map +1 -1
  403. package/dist/esm/hb-result.entry.js +1 -1
  404. package/dist/esm/hb-row.entry.js +2 -2
  405. package/dist/esm/hb-segmented.entry.js +40 -6
  406. package/dist/esm/hb-segmented.entry.js.map +1 -1
  407. package/dist/esm/hb-select.entry.js +47 -8
  408. package/dist/esm/hb-select.entry.js.map +1 -1
  409. package/dist/esm/hb-slider.entry.js +189 -20
  410. package/dist/esm/hb-slider.entry.js.map +1 -1
  411. package/dist/esm/hb-space.entry.js +2 -2
  412. package/dist/esm/hb-statistic.entry.js +1 -1
  413. package/dist/esm/hb-step.entry.js +1 -1
  414. package/dist/esm/hb-steps.entry.js +28 -7
  415. package/dist/esm/hb-steps.entry.js.map +1 -1
  416. package/dist/esm/hb-sub-menu.entry.js +4 -4
  417. package/dist/esm/hb-switch.entry.js +9 -4
  418. package/dist/esm/hb-switch.entry.js.map +1 -1
  419. package/dist/esm/hb-tab-pane.entry.js +1 -1
  420. package/dist/esm/hb-table.entry.js +1 -1
  421. package/dist/esm/hb-table.entry.js.map +1 -1
  422. package/dist/esm/hb-tabs.entry.js +2 -2
  423. package/dist/esm/hb-tag.entry.js +2 -2
  424. package/dist/esm/hb-text.entry.js +2 -2
  425. package/dist/esm/hb-time-picker.entry.js +4 -4
  426. package/dist/esm/hb-time-select.entry.js +2 -2
  427. package/dist/esm/hb-timeline.entry.js +1 -1
  428. package/dist/esm/hb-tooltip.entry.js +18 -1
  429. package/dist/esm/hb-tooltip.entry.js.map +1 -1
  430. package/dist/esm/hb-transfer.entry.js +2 -2
  431. package/dist/esm/hb-tree-select.entry.js +95 -18
  432. package/dist/esm/hb-tree-select.entry.js.map +1 -1
  433. package/dist/esm/hb-tree.entry.js +1 -1
  434. package/dist/esm/hb-upload.entry.js +3 -3
  435. package/dist/esm/hb-watermark.entry.js +1 -1
  436. package/dist/esm/huibo-ui.js +1 -1
  437. package/dist/esm/loader.js +1 -1
  438. package/dist/huibo-ui/huibo-ui.css +1 -1
  439. package/dist/huibo-ui/huibo-ui.esm.js +1 -1
  440. package/dist/huibo-ui/huibo-ui.esm.js.map +1 -1
  441. package/dist/huibo-ui/p-02f15843.entry.js +2 -0
  442. package/dist/huibo-ui/p-08b4005c.js +2 -0
  443. package/dist/huibo-ui/p-08b4005c.js.map +1 -0
  444. package/dist/huibo-ui/{p-fd19813c.entry.js → p-0d4b2997.entry.js} +2 -2
  445. package/dist/huibo-ui/{p-672076c3.entry.js → p-10f6c184.entry.js} +2 -2
  446. package/dist/huibo-ui/p-10f6c184.entry.js.map +1 -0
  447. package/dist/huibo-ui/{p-d7815b4f.entry.js → p-13010da2.entry.js} +2 -2
  448. package/dist/huibo-ui/{p-8c80a765.entry.js → p-15db24e9.entry.js} +2 -2
  449. package/dist/huibo-ui/{p-8d925e3d.entry.js → p-1b0fbe69.entry.js} +2 -2
  450. package/dist/huibo-ui/p-1f8db37a.entry.js +2 -0
  451. package/dist/huibo-ui/p-1f8db37a.entry.js.map +1 -0
  452. package/dist/huibo-ui/{p-f374d5a3.entry.js → p-20632186.entry.js} +2 -2
  453. package/dist/huibo-ui/{p-e6f2d71d.entry.js → p-20fc554b.entry.js} +2 -2
  454. package/dist/huibo-ui/{p-315feadf.entry.js → p-213b9de7.entry.js} +2 -2
  455. package/dist/huibo-ui/p-25fd7d5c.entry.js +2 -0
  456. package/dist/huibo-ui/p-25fd7d5c.entry.js.map +1 -0
  457. package/dist/huibo-ui/p-2811e603.entry.js +2 -0
  458. package/dist/huibo-ui/p-2811e603.entry.js.map +1 -0
  459. package/dist/huibo-ui/{p-64ca0980.entry.js → p-2943f5d0.entry.js} +2 -2
  460. package/dist/huibo-ui/p-2943f5d0.entry.js.map +1 -0
  461. package/dist/huibo-ui/{p-710f38de.entry.js → p-2b4556ff.entry.js} +2 -2
  462. package/dist/huibo-ui/{p-e0ab9010.entry.js → p-33de6878.entry.js} +2 -2
  463. package/dist/huibo-ui/{p-ebd04656.entry.js → p-3807da71.entry.js} +2 -2
  464. package/dist/huibo-ui/{p-6a1ec3ff.entry.js → p-3deff48c.entry.js} +2 -2
  465. package/dist/huibo-ui/{p-e2a8a396.entry.js → p-41d9c846.entry.js} +2 -2
  466. package/dist/huibo-ui/{p-0a033738.entry.js → p-47ef7a86.entry.js} +2 -2
  467. package/dist/huibo-ui/p-4d34e43e.entry.js +2 -0
  468. package/dist/huibo-ui/p-4d34e43e.entry.js.map +1 -0
  469. package/dist/huibo-ui/p-54aa2fd8.entry.js +2 -0
  470. package/dist/huibo-ui/p-54aa2fd8.entry.js.map +1 -0
  471. package/dist/huibo-ui/{p-88127de1.entry.js → p-55cd13eb.entry.js} +2 -2
  472. package/dist/huibo-ui/{p-58ebb9b3.entry.js → p-5c839288.entry.js} +2 -2
  473. package/dist/huibo-ui/{p-c1b4eacb.entry.js → p-60532a1f.entry.js} +2 -2
  474. package/dist/huibo-ui/{p-59b2e61c.entry.js → p-626b48f1.entry.js} +2 -2
  475. package/dist/huibo-ui/p-626b48f1.entry.js.map +1 -0
  476. package/dist/huibo-ui/p-639f167d.entry.js +2 -0
  477. package/dist/huibo-ui/p-639f167d.entry.js.map +1 -0
  478. package/dist/huibo-ui/{p-f1c084c5.entry.js → p-678b4212.entry.js} +2 -2
  479. package/dist/huibo-ui/p-6beb5b81.entry.js +2 -0
  480. package/dist/huibo-ui/p-6beb5b81.entry.js.map +1 -0
  481. package/dist/huibo-ui/{p-a0015341.entry.js → p-6bfeab80.entry.js} +2 -2
  482. package/dist/huibo-ui/p-6c8cf248.entry.js +2 -0
  483. package/dist/huibo-ui/p-6c8cf248.entry.js.map +1 -0
  484. package/dist/huibo-ui/{p-85f68526.entry.js → p-735bceef.entry.js} +2 -2
  485. package/dist/huibo-ui/{p-8b1ae77e.entry.js → p-746a11a3.entry.js} +2 -2
  486. package/dist/huibo-ui/p-76519752.entry.js +2 -0
  487. package/dist/huibo-ui/{p-d3939d44.entry.js → p-79af2efa.entry.js} +2 -2
  488. package/dist/huibo-ui/{p-e0768565.entry.js → p-7da14d7c.entry.js} +2 -2
  489. package/dist/huibo-ui/{p-8c987d57.entry.js → p-7f65dc36.entry.js} +2 -2
  490. package/dist/huibo-ui/{p-0e65e1bd.entry.js → p-86bdc48a.entry.js} +2 -2
  491. package/dist/huibo-ui/p-86bdc48a.entry.js.map +1 -0
  492. package/dist/huibo-ui/{p-d87fc21a.entry.js → p-88a6c905.entry.js} +2 -2
  493. package/dist/huibo-ui/{p-d64b91ef.entry.js → p-89ea1141.entry.js} +2 -2
  494. package/dist/huibo-ui/p-89ea1141.entry.js.map +1 -0
  495. package/dist/huibo-ui/p-8a202bc5.entry.js +2 -0
  496. package/dist/huibo-ui/p-8a202bc5.entry.js.map +1 -0
  497. package/dist/huibo-ui/p-8a8443b8.entry.js +2 -0
  498. package/dist/huibo-ui/p-8a8443b8.entry.js.map +1 -0
  499. package/dist/huibo-ui/p-8fd788c9.entry.js +2 -0
  500. package/dist/huibo-ui/p-8fd788c9.entry.js.map +1 -0
  501. package/dist/huibo-ui/{p-9319c650.entry.js → p-8fdbd17c.entry.js} +2 -2
  502. package/dist/huibo-ui/p-92521c31.entry.js +2 -0
  503. package/dist/huibo-ui/p-92521c31.entry.js.map +1 -0
  504. package/dist/huibo-ui/{p-c3e665f6.entry.js → p-9a5406f0.entry.js} +2 -2
  505. package/dist/huibo-ui/p-9a5406f0.entry.js.map +1 -0
  506. package/dist/huibo-ui/{p-c321c4aa.entry.js → p-a084b8e5.entry.js} +2 -2
  507. package/dist/huibo-ui/{p-5df47135.entry.js → p-a190ca89.entry.js} +2 -2
  508. package/dist/huibo-ui/{p-463de26d.entry.js → p-a8996d22.entry.js} +2 -2
  509. package/dist/huibo-ui/p-aa5e5e02.entry.js +2 -0
  510. package/dist/huibo-ui/p-aa5e5e02.entry.js.map +1 -0
  511. package/dist/huibo-ui/{p-6b381d0e.entry.js → p-ab9cf0e4.entry.js} +2 -2
  512. package/dist/huibo-ui/{p-477d8568.entry.js → p-aeae83af.entry.js} +2 -2
  513. package/dist/huibo-ui/{p-77017274.entry.js → p-af74667d.entry.js} +2 -2
  514. package/dist/huibo-ui/{p-b489a526.entry.js → p-b06c8020.entry.js} +2 -2
  515. package/dist/huibo-ui/{p-2e6584ea.entry.js → p-b468858e.entry.js} +2 -2
  516. package/dist/huibo-ui/{p-2b286698.entry.js → p-b7885d4a.entry.js} +2 -2
  517. package/dist/huibo-ui/{p-231a7335.entry.js → p-b8d87f7e.entry.js} +2 -2
  518. package/dist/huibo-ui/{p-8b027491.entry.js → p-c50ad398.entry.js} +2 -2
  519. package/dist/huibo-ui/p-c6c91664.entry.js +2 -0
  520. package/dist/huibo-ui/{p-c3e8893d.entry.js → p-c80f8ace.entry.js} +2 -2
  521. package/dist/huibo-ui/p-c80f8ace.entry.js.map +1 -0
  522. package/dist/huibo-ui/{p-476527c1.entry.js → p-c8e917db.entry.js} +2 -2
  523. package/dist/huibo-ui/p-c8e917db.entry.js.map +1 -0
  524. package/dist/huibo-ui/{p-c922d672.entry.js → p-cad57c2d.entry.js} +2 -2
  525. package/dist/huibo-ui/{p-a042e3d0.entry.js → p-ccd09d5a.entry.js} +2 -2
  526. package/dist/huibo-ui/p-d79a15b1.entry.js +2 -0
  527. package/dist/huibo-ui/p-d79a15b1.entry.js.map +1 -0
  528. package/dist/huibo-ui/{p-10c088f3.entry.js → p-d9c7c378.entry.js} +2 -2
  529. package/dist/huibo-ui/{p-80aca641.entry.js → p-dfccc7aa.entry.js} +2 -2
  530. package/dist/huibo-ui/{p-21682e92.entry.js → p-dfd144d8.entry.js} +2 -2
  531. package/dist/huibo-ui/{p-be48d2aa.entry.js → p-e039155d.entry.js} +2 -2
  532. package/dist/huibo-ui/{p-dfaf7e37.entry.js → p-e10fcfbe.entry.js} +2 -2
  533. package/dist/huibo-ui/{p-079a4130.entry.js → p-e3155cd7.entry.js} +2 -2
  534. package/dist/huibo-ui/{p-4001c08d.entry.js → p-e5cbfa9e.entry.js} +2 -2
  535. package/dist/huibo-ui/p-e5cbfa9e.entry.js.map +1 -0
  536. package/dist/huibo-ui/p-edbda423.entry.js +2 -0
  537. package/dist/huibo-ui/p-edbda423.entry.js.map +1 -0
  538. package/dist/huibo-ui/{p-465dcb4c.entry.js → p-f2c78699.entry.js} +2 -2
  539. package/dist/huibo-ui/{p-6ac242fe.entry.js → p-f4336be9.entry.js} +2 -2
  540. package/dist/huibo-ui/{p-332c8877.entry.js → p-f5969181.entry.js} +2 -2
  541. package/dist/huibo-ui/{p-f81ec512.entry.js → p-f6889710.entry.js} +2 -2
  542. package/dist/huibo-ui/{p-24ad7eec.entry.js → p-f9bb5217.entry.js} +2 -2
  543. package/dist/huibo-ui/{p-4d8b1404.entry.js → p-fd8301c6.entry.js} +2 -2
  544. package/dist/huibo-ui/{p-dd05cb2c.entry.js → p-fea20295.entry.js} +2 -2
  545. package/dist/types/components/Calendar/Calendar.d.ts +13 -1
  546. package/dist/types/components/Cascader/Cascader.d.ts +68 -90
  547. package/dist/types/components/ColorPicker/ColorPicker.d.ts +11 -0
  548. package/dist/types/components/DatePicker/DatePicker.d.ts +14 -3
  549. package/dist/types/components/Dropdown/Dropdown.d.ts +14 -1
  550. package/dist/types/components/Form/FormItem.d.ts +10 -0
  551. package/dist/types/components/ImagePreview/ImagePreview.d.ts +5 -1
  552. package/dist/types/components/Input/Input.d.ts +9 -0
  553. package/dist/types/components/Layout/Layout.d.ts +20 -10
  554. package/dist/types/components/Pagination/Pagination.d.ts +3 -0
  555. package/dist/types/components/Popconfirm/Popconfirm.d.ts +12 -0
  556. package/dist/types/components/Popover/Popover.d.ts +9 -0
  557. package/dist/types/components/Rate/Rate.d.ts +7 -0
  558. package/dist/types/components/Segmented/Segmented.d.ts +12 -1
  559. package/dist/types/components/Select/Select.d.ts +6 -0
  560. package/dist/types/components/Slider/Slider.d.ts +27 -1
  561. package/dist/types/components/Steps/Steps.d.ts +14 -6
  562. package/dist/types/components/Tooltip/Tooltip.d.ts +9 -1
  563. package/dist/types/components/TreeSelect/TreeSelect.d.ts +9 -0
  564. package/dist/types/components.d.ts +250 -94
  565. package/dist/types/utils/date-helpers.d.ts +1 -1
  566. package/package.json +8 -2
  567. package/readme.md +88 -73
  568. package/dist/cjs/date-helpers-904747ff.js.map +0 -1
  569. package/dist/components/p-cf94cbf6.js.map +0 -1
  570. package/dist/esm/date-helpers-e4d85a67.js.map +0 -1
  571. package/dist/huibo-ui/p-003cee87.entry.js +0 -2
  572. package/dist/huibo-ui/p-003cee87.entry.js.map +0 -1
  573. package/dist/huibo-ui/p-0bef78ac.entry.js +0 -2
  574. package/dist/huibo-ui/p-0bef78ac.entry.js.map +0 -1
  575. package/dist/huibo-ui/p-0e65e1bd.entry.js.map +0 -1
  576. package/dist/huibo-ui/p-0f189251.entry.js +0 -2
  577. package/dist/huibo-ui/p-0f189251.entry.js.map +0 -1
  578. package/dist/huibo-ui/p-1b5acd6d.entry.js +0 -2
  579. package/dist/huibo-ui/p-1b5acd6d.entry.js.map +0 -1
  580. package/dist/huibo-ui/p-3c7f73c8.entry.js +0 -2
  581. package/dist/huibo-ui/p-3c7f73c8.entry.js.map +0 -1
  582. package/dist/huibo-ui/p-4001c08d.entry.js.map +0 -1
  583. package/dist/huibo-ui/p-44c48246.entry.js +0 -2
  584. package/dist/huibo-ui/p-44c48246.entry.js.map +0 -1
  585. package/dist/huibo-ui/p-476527c1.entry.js.map +0 -1
  586. package/dist/huibo-ui/p-4d0dff15.entry.js +0 -2
  587. package/dist/huibo-ui/p-58d20809.entry.js +0 -2
  588. package/dist/huibo-ui/p-58d20809.entry.js.map +0 -1
  589. package/dist/huibo-ui/p-59b2e61c.entry.js.map +0 -1
  590. package/dist/huibo-ui/p-64ca0980.entry.js.map +0 -1
  591. package/dist/huibo-ui/p-672076c3.entry.js.map +0 -1
  592. package/dist/huibo-ui/p-756acbdb.entry.js +0 -2
  593. package/dist/huibo-ui/p-756acbdb.entry.js.map +0 -1
  594. package/dist/huibo-ui/p-75a93de3.entry.js +0 -2
  595. package/dist/huibo-ui/p-75a93de3.entry.js.map +0 -1
  596. package/dist/huibo-ui/p-769960f4.entry.js +0 -2
  597. package/dist/huibo-ui/p-8d615521.entry.js +0 -2
  598. package/dist/huibo-ui/p-8d615521.entry.js.map +0 -1
  599. package/dist/huibo-ui/p-953b9514.entry.js +0 -2
  600. package/dist/huibo-ui/p-ad6b0c6e.entry.js +0 -2
  601. package/dist/huibo-ui/p-ad6b0c6e.entry.js.map +0 -1
  602. package/dist/huibo-ui/p-c1a059d9.entry.js +0 -2
  603. package/dist/huibo-ui/p-c1a059d9.entry.js.map +0 -1
  604. package/dist/huibo-ui/p-c3e665f6.entry.js.map +0 -1
  605. package/dist/huibo-ui/p-c3e8893d.entry.js.map +0 -1
  606. package/dist/huibo-ui/p-cf94cbf6.js +0 -2
  607. package/dist/huibo-ui/p-cf94cbf6.js.map +0 -1
  608. package/dist/huibo-ui/p-d64b91ef.entry.js.map +0 -1
  609. package/dist/huibo-ui/p-e9490259.entry.js +0 -2
  610. package/dist/huibo-ui/p-e9490259.entry.js.map +0 -1
  611. package/dist/huibo-ui/p-ed0ff857.entry.js +0 -2
  612. package/dist/huibo-ui/p-ed0ff857.entry.js.map +0 -1
  613. package/dist/huibo-ui/p-f0ac7db5.entry.js +0 -2
  614. package/dist/huibo-ui/p-f0ac7db5.entry.js.map +0 -1
  615. /package/dist/huibo-ui/{p-4d0dff15.entry.js.map → p-02f15843.entry.js.map} +0 -0
  616. /package/dist/huibo-ui/{p-fd19813c.entry.js.map → p-0d4b2997.entry.js.map} +0 -0
  617. /package/dist/huibo-ui/{p-d7815b4f.entry.js.map → p-13010da2.entry.js.map} +0 -0
  618. /package/dist/huibo-ui/{p-8c80a765.entry.js.map → p-15db24e9.entry.js.map} +0 -0
  619. /package/dist/huibo-ui/{p-8d925e3d.entry.js.map → p-1b0fbe69.entry.js.map} +0 -0
  620. /package/dist/huibo-ui/{p-f374d5a3.entry.js.map → p-20632186.entry.js.map} +0 -0
  621. /package/dist/huibo-ui/{p-e6f2d71d.entry.js.map → p-20fc554b.entry.js.map} +0 -0
  622. /package/dist/huibo-ui/{p-315feadf.entry.js.map → p-213b9de7.entry.js.map} +0 -0
  623. /package/dist/huibo-ui/{p-710f38de.entry.js.map → p-2b4556ff.entry.js.map} +0 -0
  624. /package/dist/huibo-ui/{p-e0ab9010.entry.js.map → p-33de6878.entry.js.map} +0 -0
  625. /package/dist/huibo-ui/{p-ebd04656.entry.js.map → p-3807da71.entry.js.map} +0 -0
  626. /package/dist/huibo-ui/{p-6a1ec3ff.entry.js.map → p-3deff48c.entry.js.map} +0 -0
  627. /package/dist/huibo-ui/{p-e2a8a396.entry.js.map → p-41d9c846.entry.js.map} +0 -0
  628. /package/dist/huibo-ui/{p-0a033738.entry.js.map → p-47ef7a86.entry.js.map} +0 -0
  629. /package/dist/huibo-ui/{p-88127de1.entry.js.map → p-55cd13eb.entry.js.map} +0 -0
  630. /package/dist/huibo-ui/{p-58ebb9b3.entry.js.map → p-5c839288.entry.js.map} +0 -0
  631. /package/dist/huibo-ui/{p-c1b4eacb.entry.js.map → p-60532a1f.entry.js.map} +0 -0
  632. /package/dist/huibo-ui/{p-f1c084c5.entry.js.map → p-678b4212.entry.js.map} +0 -0
  633. /package/dist/huibo-ui/{p-a0015341.entry.js.map → p-6bfeab80.entry.js.map} +0 -0
  634. /package/dist/huibo-ui/{p-85f68526.entry.js.map → p-735bceef.entry.js.map} +0 -0
  635. /package/dist/huibo-ui/{p-8b1ae77e.entry.js.map → p-746a11a3.entry.js.map} +0 -0
  636. /package/dist/huibo-ui/{p-953b9514.entry.js.map → p-76519752.entry.js.map} +0 -0
  637. /package/dist/huibo-ui/{p-d3939d44.entry.js.map → p-79af2efa.entry.js.map} +0 -0
  638. /package/dist/huibo-ui/{p-e0768565.entry.js.map → p-7da14d7c.entry.js.map} +0 -0
  639. /package/dist/huibo-ui/{p-8c987d57.entry.js.map → p-7f65dc36.entry.js.map} +0 -0
  640. /package/dist/huibo-ui/{p-d87fc21a.entry.js.map → p-88a6c905.entry.js.map} +0 -0
  641. /package/dist/huibo-ui/{p-9319c650.entry.js.map → p-8fdbd17c.entry.js.map} +0 -0
  642. /package/dist/huibo-ui/{p-c321c4aa.entry.js.map → p-a084b8e5.entry.js.map} +0 -0
  643. /package/dist/huibo-ui/{p-5df47135.entry.js.map → p-a190ca89.entry.js.map} +0 -0
  644. /package/dist/huibo-ui/{p-463de26d.entry.js.map → p-a8996d22.entry.js.map} +0 -0
  645. /package/dist/huibo-ui/{p-6b381d0e.entry.js.map → p-ab9cf0e4.entry.js.map} +0 -0
  646. /package/dist/huibo-ui/{p-477d8568.entry.js.map → p-aeae83af.entry.js.map} +0 -0
  647. /package/dist/huibo-ui/{p-77017274.entry.js.map → p-af74667d.entry.js.map} +0 -0
  648. /package/dist/huibo-ui/{p-b489a526.entry.js.map → p-b06c8020.entry.js.map} +0 -0
  649. /package/dist/huibo-ui/{p-2e6584ea.entry.js.map → p-b468858e.entry.js.map} +0 -0
  650. /package/dist/huibo-ui/{p-2b286698.entry.js.map → p-b7885d4a.entry.js.map} +0 -0
  651. /package/dist/huibo-ui/{p-231a7335.entry.js.map → p-b8d87f7e.entry.js.map} +0 -0
  652. /package/dist/huibo-ui/{p-8b027491.entry.js.map → p-c50ad398.entry.js.map} +0 -0
  653. /package/dist/huibo-ui/{p-769960f4.entry.js.map → p-c6c91664.entry.js.map} +0 -0
  654. /package/dist/huibo-ui/{p-c922d672.entry.js.map → p-cad57c2d.entry.js.map} +0 -0
  655. /package/dist/huibo-ui/{p-a042e3d0.entry.js.map → p-ccd09d5a.entry.js.map} +0 -0
  656. /package/dist/huibo-ui/{p-10c088f3.entry.js.map → p-d9c7c378.entry.js.map} +0 -0
  657. /package/dist/huibo-ui/{p-80aca641.entry.js.map → p-dfccc7aa.entry.js.map} +0 -0
  658. /package/dist/huibo-ui/{p-21682e92.entry.js.map → p-dfd144d8.entry.js.map} +0 -0
  659. /package/dist/huibo-ui/{p-be48d2aa.entry.js.map → p-e039155d.entry.js.map} +0 -0
  660. /package/dist/huibo-ui/{p-dfaf7e37.entry.js.map → p-e10fcfbe.entry.js.map} +0 -0
  661. /package/dist/huibo-ui/{p-079a4130.entry.js.map → p-e3155cd7.entry.js.map} +0 -0
  662. /package/dist/huibo-ui/{p-465dcb4c.entry.js.map → p-f2c78699.entry.js.map} +0 -0
  663. /package/dist/huibo-ui/{p-6ac242fe.entry.js.map → p-f4336be9.entry.js.map} +0 -0
  664. /package/dist/huibo-ui/{p-332c8877.entry.js.map → p-f5969181.entry.js.map} +0 -0
  665. /package/dist/huibo-ui/{p-f81ec512.entry.js.map → p-f6889710.entry.js.map} +0 -0
  666. /package/dist/huibo-ui/{p-24ad7eec.entry.js.map → p-f9bb5217.entry.js.map} +0 -0
  667. /package/dist/huibo-ui/{p-4d8b1404.entry.js.map → p-fd8301c6.entry.js.map} +0 -0
  668. /package/dist/huibo-ui/{p-dd05cb2c.entry.js.map → p-fea20295.entry.js.map} +0 -0
@@ -32,6 +32,7 @@ export class ColorPicker {
32
32
  hue = 210; // 色相值 0-360
33
33
  saturation = 100; // 饱和度 0-100
34
34
  value = 100; // 明度 0-100
35
+ alpha = 100; // 透明度 0-100(仅 showAlpha=true 时生效)
35
36
  /**
36
37
  * 值改变事件
37
38
  */
@@ -72,11 +73,36 @@ export class ColorPicker {
72
73
  return;
73
74
  this.isOpen = !this.isOpen;
74
75
  };
76
+ /** 键盘交互:Escape 关闭面板(对齐 antd / WAI-ARIA) */
77
+ handleKeyDown = (e) => {
78
+ if (this.disabled)
79
+ return;
80
+ if (e.key === 'Escape' && this.isOpen) {
81
+ e.preventDefault();
82
+ this.isOpen = false;
83
+ }
84
+ };
85
+ /** 把 3 位简写 hex 规范化为 6 位,避免后续 hexToRgb 解析失败 */
86
+ normalizeHex(color) {
87
+ if (typeof color !== 'string')
88
+ return null;
89
+ const c = color.trim();
90
+ if (/^#([A-Fa-f0-9]{6})$/.test(c))
91
+ return c.toLowerCase();
92
+ if (/^#([A-Fa-f0-9]{3})$/.test(c)) {
93
+ const [, r, g, b] = c.match(/^#(.)(.)(.)$/);
94
+ return `#${r}${r}${g}${g}${b}${b}`.toLowerCase();
95
+ }
96
+ return null;
97
+ }
75
98
  handleColorSelect = (color) => {
76
- this.currentColor = color;
77
- this.modelValue = color;
78
- this.hbChange.emit(color);
79
- this.hbActiveChange.emit(color);
99
+ const normalized = this.normalizeHex(color);
100
+ if (!normalized)
101
+ return; // 非法颜色直接忽略,防止 currentColor 进入不可解析态
102
+ this.currentColor = normalized;
103
+ this.modelValue = normalized;
104
+ this.hbChange.emit(normalized);
105
+ this.hbActiveChange.emit(normalized);
80
106
  };
81
107
  handleSaturationClick = (e) => {
82
108
  const target = e.currentTarget;
@@ -102,11 +128,20 @@ export class ColorPicker {
102
128
  handleInputChange = (e) => {
103
129
  const target = e.target;
104
130
  const value = target.value;
105
- // 验证 hex 颜色格式
131
+ // 验证 hex 颜色格式(3 位简写会被 handleColorSelect 内部规范化为 6 位)
106
132
  if (/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(value)) {
107
133
  this.handleColorSelect(value);
108
134
  }
109
135
  };
136
+ /** 透明度条点击/拖动:X 轴映射到 alpha 0-100 */
137
+ handleAlphaClick = (e) => {
138
+ const target = e.currentTarget;
139
+ const rect = target.getBoundingClientRect();
140
+ const x = e.clientX - rect.left;
141
+ this.alpha = Math.max(0, Math.min(100, Math.round((x / rect.width) * 100)));
142
+ // alpha 变化触发 active 事件(不改变 hex,但通知消费者透明度变化)
143
+ this.hbActiveChange.emit(this.getFormattedValue());
144
+ };
110
145
  handleRgbInputChange = (index, value) => {
111
146
  const rgb = this.hexToRgb(this.currentColor);
112
147
  if (rgb) {
@@ -127,7 +162,11 @@ export class ColorPicker {
127
162
  }
128
163
  };
129
164
  hexToRgb(hex) {
130
- const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
165
+ // 先用 normalizeHex 兜底 3 位简写(#abc → #aabbcc),再解析
166
+ const normalized = this.normalizeHex(hex);
167
+ if (!normalized)
168
+ return null;
169
+ const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(normalized);
131
170
  return result ? {
132
171
  r: parseInt(result[1], 16),
133
172
  g: parseInt(result[2], 16),
@@ -223,6 +262,36 @@ export class ColorPicker {
223
262
  this.value = hsv.v;
224
263
  }
225
264
  }
265
+ /** 按当前 colorFormat 输出最终颜色字符串(对齐 antd 的 format 行为) */
266
+ getFormattedValue() {
267
+ const rgb = this.hexToRgb(this.currentColor);
268
+ if (!rgb)
269
+ return this.currentColor;
270
+ switch (this.colorFormat) {
271
+ case 'rgb':
272
+ return `rgb(${rgb.r}, ${rgb.g}, ${rgb.b})`;
273
+ case 'hsl': {
274
+ const hsv = this.rgbToHsv(rgb.r, rgb.g, rgb.b);
275
+ const [h, s, l] = this.hsvToHsl(hsv.h, hsv.s, hsv.v);
276
+ return `hsl(${h}, ${s}%, ${l}%)`;
277
+ }
278
+ case 'hsv': {
279
+ const hsv = this.rgbToHsv(rgb.r, rgb.g, rgb.b);
280
+ return `hsv(${hsv.h}, ${hsv.s}%, ${hsv.v}%)`;
281
+ }
282
+ case 'hex':
283
+ default:
284
+ return this.currentColor;
285
+ }
286
+ }
287
+ /** HSV → HSL(HSL 字符串输出用) */
288
+ hsvToHsl(h, s, v) {
289
+ s /= 100;
290
+ v /= 100;
291
+ const l = v - (v * s) / 2;
292
+ const sl = l === 0 || l === 1 ? 0 : (v - l) / Math.min(l, 1 - l);
293
+ return [Math.round(h), Math.round(sl * 100), Math.round(l * 100)];
294
+ }
226
295
  render() {
227
296
  const rgb = this.hexToRgb(this.currentColor);
228
297
  const predefinedColors = this.predefine || [
@@ -231,19 +300,27 @@ export class ColorPicker {
231
300
  ];
232
301
  // 根据当前色相生成饱和度面板的背景色
233
302
  const hueColor = this.hsvToHex(this.hue, 100, 100);
234
- return (h("div", { key: '3a91756cec6b901dbd98049c6dea3f13cb0125b9', class: {
303
+ return (h("div", { key: '52393318617ee172eb5ea6cfbe2a4924a3b6b63e', class: {
235
304
  'hb-color-picker': true,
236
305
  'hb-color-picker--open': this.isOpen,
237
306
  'hb-color-picker--disabled': this.disabled,
238
- } }, h("div", { key: '60fcf367b48d726dec4626cade99ae39c10c83f7', class: "hb-color-picker__trigger", onClick: this.handleTriggerClick }, h("div", { key: '9b9f4c7f1444d76f1d6df1c480949572affb4a71', class: "hb-color-picker__color", style: { backgroundColor: this.currentColor } }), h("span", { key: 'ddc5c6d1d875012ad46638324b2e9a80eb50d989', class: "hb-color-picker__text" }, this.currentColor)), this.isOpen && (h("div", { key: '4f96c8be969d8b37f0acba6f9ec55d0b0223485d', class: "hb-color-picker__dropdown" }, h("div", { key: '6e754aa587fbe8161315ab3fedfd71ccdf7b9a7e', class: "hb-color-picker__panel" }, h("div", { key: '477dbbe265a0538e3f65f0d3c03dc653cf063982', class: "hb-color-picker__saturation", onClick: this.handleSaturationClick }, h("div", { key: 'eff441602d0795cfb6a05b9470dcec762c47e2a2', class: "hb-color-picker__saturation-bg", style: { backgroundColor: hueColor } }), h("div", { key: '3f3e8c420dbea347c6859f046d0398e1141de926', class: "hb-color-picker__saturation-white" }), h("div", { key: 'e501004e2e2d9f585b48bcc4a90def07c39964c2', class: "hb-color-picker__saturation-black" }), h("div", { key: 'b00cda534203c12195977d0933bd36b1baafab34', class: "hb-color-picker__saturation-pointer", style: {
307
+ }, onKeyDown: this.handleKeyDown }, h("div", { key: '58a32dc101b842064bade3fbd44b594bbbec05b5', class: "hb-color-picker__trigger", onClick: this.handleTriggerClick, role: "button", tabindex: this.disabled ? -1 : 0, "aria-haspopup": "dialog", "aria-expanded": this.isOpen ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false', onKeyDown: e => {
308
+ if (e.key === 'Enter' || e.key === ' ') {
309
+ e.preventDefault();
310
+ this.handleTriggerClick();
311
+ }
312
+ } }, h("div", { key: '5f183c7aa2a29818e13a569f172560a2ee7d475e', class: "hb-color-picker__color", style: { backgroundColor: this.currentColor } }), h("span", { key: 'eb1f178aff0cc1c6eb247322e9162dea60178b60', class: "hb-color-picker__text" }, this.currentColor)), this.isOpen && (h("div", { key: 'cca8bb671e305e262edebf7095128f91dcc78ee0', class: "hb-color-picker__dropdown", role: "dialog" }, h("div", { key: 'ecbbe0b9c3791a2638b0540f49f6cad628a15f64', class: "hb-color-picker__panel" }, h("div", { key: '514850ca7676e52c1fc7385c8cc352e4ad5d0362', class: "hb-color-picker__saturation", onClick: this.handleSaturationClick }, h("div", { key: 'b5e98c45b8a8a750f12e8bea6406a107e235a3be', class: "hb-color-picker__saturation-bg", style: { backgroundColor: hueColor } }), h("div", { key: 'fd7f705ad5e58713adb3dae2892abf830f57051d', class: "hb-color-picker__saturation-white" }), h("div", { key: 'e513305bb22b0753eb0c82829f843d68a19ee4fa', class: "hb-color-picker__saturation-black" }), h("div", { key: '3f44dc010cacd7cac78a88ace1cd86aa253b26f2', class: "hb-color-picker__saturation-pointer", style: {
239
313
  left: `${this.saturation}%`,
240
314
  top: `${100 - this.value}%`,
241
- } })), h("div", { key: 'ee86c70a807d70aa292a0208a3a172b35c791325', class: "hb-color-picker__controls" }, h("div", { key: 'd4dda211347b9c3e4ef1dc5e28f5a6a44359a162', class: "hb-color-picker__hue", onClick: this.handleHueClick }, h("div", { key: 'dbab23a4059b6dd2aeada35d7434c79a61860867', class: "hb-color-picker__hue-bar" }), h("div", { key: 'b612775578712beac58a487a23a25c812fb28077', class: "hb-color-picker__hue-pointer", style: {
315
+ } })), h("div", { key: '3b91d0d162027b58adb790d5f5ca0243fa3cb07c', class: "hb-color-picker__controls" }, h("div", { key: '1c1fe521f3820e86ed71c331e6da7213db907038', class: "hb-color-picker__hue", onClick: this.handleHueClick }, h("div", { key: 'a2caa8290277ad46c59efd087c255c3a55fe3ca6', class: "hb-color-picker__hue-bar" }), h("div", { key: '36f9bdd607dcc6181a554442e47a5f5574d71649', class: "hb-color-picker__hue-pointer", style: {
242
316
  left: `${(this.hue / 360) * 100}%`,
243
- } })), this.showAlpha && (h("div", { key: '1aee2cd74b0cdf27d0afcbd09384ae707a5d7485', class: "hb-color-picker__alpha" }, h("div", { key: 'eba46d362053e05c89a93f34dfb453a8ed2253c7', class: "hb-color-picker__alpha-bar", style: { backgroundColor: this.currentColor } })))), h("div", { key: '60f66da4a79a2eb0ce1c389d65fd30362bbb7c61', class: "hb-color-picker__input" }, h("input", { key: '1411561687211e4ea149421bfaf624c7cdc45ead', type: "text", class: "hb-color-picker__input-hex", value: this.currentColor, onInput: this.handleInputChange }), rgb && (h("div", { key: 'c24d2df8b8d04fee9eeba4d8de660d14857cdf77', class: "hb-color-picker__input-rgb" }, h("input", { key: 'e4dd71d86bda84168f7342b3cf0a7513f608f0e1', type: "number", min: "0", max: "255", value: rgb.r, onInput: (e) => this.handleRgbInputChange(0, e.target.value) }), h("input", { key: '198c25b1f2fe03bae65b2a6120b226684623a5a1', type: "number", min: "0", max: "255", value: rgb.g, onInput: (e) => this.handleRgbInputChange(1, e.target.value) }), h("input", { key: 'fe0c9273a4d283f3f4bde1b8c258e0adc370b9a6', type: "number", min: "0", max: "255", value: rgb.b, onInput: (e) => this.handleRgbInputChange(2, e.target.value) })))), this.predefine && this.predefine.length > 0 && (h("div", { key: '52b711be9fd4794a42fb0c4747a53df529895932', class: "hb-color-picker__predefine" }, predefinedColors.map((color) => (h("div", { class: {
244
- 'hb-color-picker__predefine-color': true,
245
- 'hb-color-picker__predefine-color--selected': color === this.currentColor,
246
- }, style: { backgroundColor: color }, onClick: () => this.handleColorSelect(color) }))))))))));
317
+ } })), this.showAlpha && (h("div", { key: 'ced86625cf6f3e461752a61022bbb36015fa3b3a', class: "hb-color-picker__alpha", onClick: this.handleAlphaClick }, h("div", { key: '2de6b6937338ccbdf07a89267ca274e1f04a5b0e', class: "hb-color-picker__alpha-bar", style: { backgroundColor: this.currentColor } }), h("div", { key: '4363ebb73a38c7b657ef80144e33220b0063b438', class: "hb-color-picker__alpha-pointer", style: { left: `${this.alpha}%` } })))), h("div", { key: 'd90829aaf4099621bcb438755ca44718f23652cd', class: "hb-color-picker__input" }, h("input", { key: '7209889a410ac83c73b52a4af3809e621ad4dfef', type: "text", class: "hb-color-picker__input-hex", value: this.currentColor, onInput: this.handleInputChange, "aria-label": "HEX \u989C\u8272\u503C" }), rgb && (h("div", { key: '83b2df101257f8ada13a9006dd9d7140db4123bc', class: "hb-color-picker__input-rgb" }, h("input", { key: '7858c1e35bcbe9e0356c3cab386b2e061a47c9ea', type: "number", min: "0", max: "255", value: rgb.r, onInput: (e) => this.handleRgbInputChange(0, e.target.value), "aria-label": "\u7EA2\u8272\u901A\u9053" }), h("input", { key: 'b03784fb1668bfdd78693b58fe912a121810b855', type: "number", min: "0", max: "255", value: rgb.g, onInput: (e) => this.handleRgbInputChange(1, e.target.value), "aria-label": "\u7EFF\u8272\u901A\u9053" }), h("input", { key: 'd40ae6d0ae271cadbd1e9ddca9e98b071357fc78', type: "number", min: "0", max: "255", value: rgb.b, onInput: (e) => this.handleRgbInputChange(2, e.target.value), "aria-label": "\u84DD\u8272\u901A\u9053" })))), this.predefine && this.predefine.length > 0 && (h("div", { key: '5c858086b250b0db9bea5add8685d3a39e073550', class: "hb-color-picker__predefine" }, predefinedColors.map((color) => {
318
+ const normalized = this.normalizeHex(color) || color;
319
+ return (h("div", { class: {
320
+ 'hb-color-picker__predefine-color': true,
321
+ 'hb-color-picker__predefine-color--selected': normalized === this.currentColor,
322
+ }, style: { backgroundColor: color }, onClick: () => this.handleColorSelect(color), title: color }));
323
+ }))))))));
247
324
  }
248
325
  static get is() { return "hb-color-picker"; }
249
326
  static get encapsulation() { return "shadow"; }
@@ -369,7 +446,8 @@ export class ColorPicker {
369
446
  "currentColor": {},
370
447
  "hue": {},
371
448
  "saturation": {},
372
- "value": {}
449
+ "value": {},
450
+ "alpha": {}
373
451
  };
374
452
  }
375
453
  static get events() {
@@ -1 +1 @@
1
- {"version":3,"file":"ColorPicker.js","sourceRoot":"","sources":["../../../src/components/ColorPicker/ColorPicker.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAgB,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE/F;;;GAGG;AAMH,MAAM,OAAO,WAAW;IACX,EAAE,CAAc;IAE3B;;OAEG;IACsB,UAAU,CAAU;IAE7C;;;OAGG;IACK,QAAQ,GAAY,KAAK,CAAC;IAElC;;OAEG;IACK,WAAW,GAAkC,KAAK,CAAC;IAE3D;;;OAGG;IACK,SAAS,GAAY,KAAK,CAAC;IAEnC;;OAEG;IACK,SAAS,CAAY;IAEpB,MAAM,GAAY,KAAK,CAAC;IACxB,YAAY,GAAW,SAAS,CAAC;IACjC,GAAG,GAAW,GAAG,CAAC,CAAC,YAAY;IAC/B,UAAU,GAAW,GAAG,CAAC,CAAC,YAAY;IACtC,KAAK,GAAW,GAAG,CAAC,CAAC,WAAW;IAEzC;;OAEG;IACM,QAAQ,CAAuB;IAExC;;OAEG;IACM,cAAc,CAAuB;IAE9C,gBAAgB;QACd,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC;YACpC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC7C,CAAC;QACD,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC/D,CAAC;IAED,oBAAoB;QAClB,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAClE,CAAC;IAEO,mBAAmB,GAAG,CAAC,CAAa,EAAE,EAAE;QAC9C,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QACzB,MAAM,MAAM,GAAG,CAAC,CAAC,MAAqB,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC,CAAC;IAGF,iBAAiB;QACf,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC;YACpC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAEO,kBAAkB,GAAG,GAAG,EAAE;QAChC,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;IAC7B,CAAC,CAAC;IAEM,iBAAiB,GAAG,CAAC,KAAa,EAAE,EAAE;QAC5C,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC,CAAC;IAEM,qBAAqB,GAAG,CAAC,CAAa,EAAE,EAAE;QAChD,MAAM,MAAM,GAAG,CAAC,CAAC,aAA4B,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;QAC5C,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;QAE/B,oBAAoB;QACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACrE,wBAAwB;QACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAEvE,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACjE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC,CAAC;IAEM,cAAc,GAAG,CAAC,CAAa,EAAE,EAAE;QACzC,MAAM,MAAM,GAAG,CAAC,CAAC,aAA4B,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;QAC5C,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;QAEhC,YAAY;QACZ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAE9D,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACjE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC,CAAC;IAEM,iBAAiB,GAAG,CAAC,CAAQ,EAAE,EAAE;QACvC,MAAM,MAAM,GAAG,CAAC,CAAC,MAA0B,CAAC;QAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3B,cAAc;QACd,IAAI,oCAAoC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACrD,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CAAC;IAEM,oBAAoB,GAAG,CAAC,KAAa,EAAE,KAAa,EAAE,EAAE;QAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC7C,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAChC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;gBAC1C,IAAI,KAAK,KAAK,CAAC;oBAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;qBACxB,IAAI,KAAK,KAAK,CAAC;oBAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;qBAC7B,IAAI,KAAK,KAAK,CAAC;oBAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;gBAElC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;oBAC5C,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAC3B,OAAO,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC5C,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBACd,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEM,QAAQ,CAAC,GAAW;QAC1B,MAAM,MAAM,GAAG,2CAA2C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrE,OAAO,MAAM,CAAC,CAAC,CAAC;YACd,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAC1B,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAC1B,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;SAC3B,CAAC,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAED,YAAY;IACJ,QAAQ,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;QAC9C,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACZ,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACZ,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QAEZ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;QAEvB,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACf,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;gBACd,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC;iBAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;gBACrB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QACD,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC;YAAE,CAAC,IAAI,GAAG,CAAC;QAEpB,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;QACzD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;QAEhC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACrB,CAAC;IAED,YAAY;IACJ,QAAQ,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;QAC9C,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACZ,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QAEZ,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEhB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAExB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YACrB,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;aAAM,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;YAC9B,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;aAAM,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;YAC/B,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;aAAM,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;YAC/B,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;aAAM,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;YAC/B,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;aAAM,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;YAC/B,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;QAED,OAAO;YACL,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;YAC5B,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;YAC5B,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;SAC7B,CAAC;IACJ,CAAC;IAED,YAAY;IACJ,QAAQ,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACvC,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC3B,OAAO,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC5C,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;IAChB,CAAC;IAED,aAAa;IACL,kBAAkB,CAAC,KAAa;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/C,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,MAAM;QACJ,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC7C,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,IAAI;YACzC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;YACrD,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;SACtD,CAAC;QAEF,oBAAoB;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAEnD,OAAO,CACL,4DACE,KAAK,EAAE;gBACL,iBAAiB,EAAE,IAAI;gBACvB,uBAAuB,EAAE,IAAI,CAAC,MAAM;gBACpC,2BAA2B,EAAE,IAAI,CAAC,QAAQ;aAC3C;YAED,4DAAK,KAAK,EAAC,0BAA0B,EAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB;gBACpE,4DAAK,KAAK,EAAC,wBAAwB,EAAC,KAAK,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,YAAY,EAAE,GAAQ;gBACzF,6DAAM,KAAK,EAAC,uBAAuB,IAAE,IAAI,CAAC,YAAY,CAAQ,CAC1D;YACL,IAAI,CAAC,MAAM,IAAI,CACd,4DAAK,KAAK,EAAC,2BAA2B;gBACpC,4DAAK,KAAK,EAAC,wBAAwB;oBACjC,4DAAK,KAAK,EAAC,6BAA6B,EAAC,OAAO,EAAE,IAAI,CAAC,qBAAqB;wBAC1E,4DAAK,KAAK,EAAC,gCAAgC,EAAC,KAAK,EAAE,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAQ;wBACxF,4DAAK,KAAK,EAAC,mCAAmC,GAAO;wBACrD,4DAAK,KAAK,EAAC,mCAAmC,GAAO;wBACrD,4DACE,KAAK,EAAC,qCAAqC,EAC3C,KAAK,EAAE;gCACL,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,GAAG;gCAC3B,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG;6BAC5B,GACI,CACH;oBACN,4DAAK,KAAK,EAAC,2BAA2B;wBACpC,4DAAK,KAAK,EAAC,sBAAsB,EAAC,OAAO,EAAE,IAAI,CAAC,cAAc;4BAC5D,4DAAK,KAAK,EAAC,0BAA0B,GAAO;4BAC5C,4DACE,KAAK,EAAC,8BAA8B,EACpC,KAAK,EAAE;oCACL,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG;iCACnC,GACI,CACH;wBACL,IAAI,CAAC,SAAS,IAAI,CACjB,4DAAK,KAAK,EAAC,wBAAwB;4BACjC,4DAAK,KAAK,EAAC,4BAA4B,EAAC,KAAK,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,YAAY,EAAE,GAAQ,CACzF,CACP,CACG;oBACN,4DAAK,KAAK,EAAC,wBAAwB;wBACjC,8DACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAE,IAAI,CAAC,YAAY,EACxB,OAAO,EAAE,IAAI,CAAC,iBAAiB,GAC/B;wBACD,GAAG,IAAI,CACN,4DAAK,KAAK,EAAC,4BAA4B;4BACrC,8DACE,IAAI,EAAC,QAAQ,EACb,GAAG,EAAC,GAAG,EACP,GAAG,EAAC,KAAK,EACT,KAAK,EAAE,GAAG,CAAC,CAAC,EACZ,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAG,CAAC,CAAC,MAA2B,CAAC,KAAK,CAAC,GAClF;4BACF,8DACE,IAAI,EAAC,QAAQ,EACb,GAAG,EAAC,GAAG,EACP,GAAG,EAAC,KAAK,EACT,KAAK,EAAE,GAAG,CAAC,CAAC,EACZ,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAG,CAAC,CAAC,MAA2B,CAAC,KAAK,CAAC,GAClF;4BACF,8DACE,IAAI,EAAC,QAAQ,EACb,GAAG,EAAC,GAAG,EACP,GAAG,EAAC,KAAK,EACT,KAAK,EAAE,GAAG,CAAC,CAAC,EACZ,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAG,CAAC,CAAC,MAA2B,CAAC,KAAK,CAAC,GAClF,CACE,CACP,CACG;oBACL,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAC9C,4DAAK,KAAK,EAAC,4BAA4B,IACpC,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAC/B,WACE,KAAK,EAAE;4BACL,kCAAkC,EAAE,IAAI;4BACxC,4CAA4C,EAAE,KAAK,KAAK,IAAI,CAAC,YAAY;yBAC1E,EACD,KAAK,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,EACjC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,GACvC,CACR,CAAC,CACE,CACP,CACG,CACF,CACP,CACG,CACP,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, h, Prop, Event, EventEmitter, State, Element, Watch } from '@stencil/core';\n\n/**\n * ColorPicker 颜色选择器组件\n * 用于颜色选择,支持多种格式\n */\n@Component({\n tag: 'hb-color-picker',\n styleUrl: 'color-picker.css',\n shadow: true,\n})\nexport class ColorPicker {\n @Element() el: HTMLElement;\n\n /**\n * 绑定值\n */\n @Prop({ mutable: true }) modelValue?: string;\n\n /**\n * 是否禁用\n * @default false\n */\n @Prop() disabled: boolean = false;\n\n /**\n * 颜色格式\n */\n @Prop() colorFormat: 'hsl' | 'hsv' | 'hex' | 'rgb' = 'hex';\n\n /**\n * 是否显示透明度\n * @default false\n */\n @Prop() showAlpha: boolean = false;\n\n /**\n * 预定义颜色\n */\n @Prop() predefine?: string[];\n\n @State() isOpen: boolean = false;\n @State() currentColor: string = '#409EFF';\n @State() hue: number = 210; // 色相值 0-360\n @State() saturation: number = 100; // 饱和度 0-100\n @State() value: number = 100; // 明度 0-100\n\n /**\n * 值改变事件\n */\n @Event() hbChange: EventEmitter<string>;\n\n /**\n * 激活时触发\n */\n @Event() hbActiveChange: EventEmitter<string>;\n\n componentDidLoad() {\n if (this.modelValue) {\n this.currentColor = this.modelValue;\n this.updateHSVFromColor(this.modelValue);\n } else {\n this.updateHSVFromColor(this.currentColor);\n }\n document.addEventListener('click', this.handleDocumentClick);\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this.handleDocumentClick);\n }\n\n private handleDocumentClick = (e: MouseEvent) => {\n if (!this.isOpen) return;\n const target = e.target as HTMLElement;\n if (!this.el.contains(target)) {\n this.isOpen = false;\n }\n };\n\n @Watch('modelValue')\n handleValueChange() {\n if (this.modelValue) {\n this.currentColor = this.modelValue;\n this.updateHSVFromColor(this.modelValue);\n }\n }\n\n private handleTriggerClick = () => {\n if (this.disabled) return;\n this.isOpen = !this.isOpen;\n };\n\n private handleColorSelect = (color: string) => {\n this.currentColor = color;\n this.modelValue = color;\n this.hbChange.emit(color);\n this.hbActiveChange.emit(color);\n };\n\n private handleSaturationClick = (e: MouseEvent) => {\n const target = e.currentTarget as HTMLElement;\n const rect = target.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n \n // X 轴代表饱和度 (0-100%)\n this.saturation = Math.max(0, Math.min(100, (x / rect.width) * 100));\n // Y 轴代表明度 (0-100%,从上到下)\n this.value = Math.max(0, Math.min(100, 100 - (y / rect.height) * 100));\n \n const hex = this.hsvToHex(this.hue, this.saturation, this.value);\n this.handleColorSelect(hex);\n };\n\n private handleHueClick = (e: MouseEvent) => {\n const target = e.currentTarget as HTMLElement;\n const rect = target.getBoundingClientRect();\n const x = e.clientX - rect.left;\n \n // 色相值 0-360\n this.hue = Math.max(0, Math.min(360, (x / rect.width) * 360));\n \n const hex = this.hsvToHex(this.hue, this.saturation, this.value);\n this.handleColorSelect(hex);\n };\n\n private handleInputChange = (e: Event) => {\n const target = e.target as HTMLInputElement;\n const value = target.value;\n // 验证 hex 颜色格式\n if (/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(value)) {\n this.handleColorSelect(value);\n }\n };\n\n private handleRgbInputChange = (index: number, value: string) => {\n const rgb = this.hexToRgb(this.currentColor);\n if (rgb) {\n const num = parseInt(value, 10);\n if (!isNaN(num) && num >= 0 && num <= 255) {\n if (index === 0) rgb.r = num;\n else if (index === 1) rgb.g = num;\n else if (index === 2) rgb.b = num;\n \n const hex = `#${[rgb.r, rgb.g, rgb.b].map(x => {\n const hex = x.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n }).join('')}`;\n this.handleColorSelect(hex);\n }\n }\n };\n\n private hexToRgb(hex: string): { r: number; g: number; b: number } | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n }\n\n // RGB 转 HSV\n private rgbToHsv(r: number, g: number, b: number): { h: number; s: number; v: number } {\n r = r / 255;\n g = g / 255;\n b = b / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const diff = max - min;\n\n let h = 0;\n if (diff !== 0) {\n if (max === r) {\n h = ((g - b) / diff) % 6;\n } else if (max === g) {\n h = (b - r) / diff + 2;\n } else {\n h = (r - g) / diff + 4;\n }\n }\n h = Math.round(h * 60);\n if (h < 0) h += 360;\n\n const s = max === 0 ? 0 : Math.round((diff / max) * 100);\n const v = Math.round(max * 100);\n\n return { h, s, v };\n }\n\n // HSV 转 RGB\n private hsvToRgb(h: number, s: number, v: number): { r: number; g: number; b: number } {\n s = s / 100;\n v = v / 100;\n\n const c = v * s;\n const x = c * (1 - Math.abs(((h / 60) % 2) - 1));\n const m = v - c;\n\n let r = 0, g = 0, b = 0;\n\n if (h >= 0 && h < 60) {\n r = c; g = x; b = 0;\n } else if (h >= 60 && h < 120) {\n r = x; g = c; b = 0;\n } else if (h >= 120 && h < 180) {\n r = 0; g = c; b = x;\n } else if (h >= 180 && h < 240) {\n r = 0; g = x; b = c;\n } else if (h >= 240 && h < 300) {\n r = x; g = 0; b = c;\n } else if (h >= 300 && h < 360) {\n r = c; g = 0; b = x;\n }\n\n return {\n r: Math.round((r + m) * 255),\n g: Math.round((g + m) * 255),\n b: Math.round((b + m) * 255)\n };\n }\n\n // HSV 转 Hex\n private hsvToHex(h: number, s: number, v: number): string {\n const rgb = this.hsvToRgb(h, s, v);\n return `#${[rgb.r, rgb.g, rgb.b].map(x => {\n const hex = x.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n }).join('')}`;\n }\n\n // 从颜色值更新 HSV\n private updateHSVFromColor(color: string) {\n const rgb = this.hexToRgb(color);\n if (rgb) {\n const hsv = this.rgbToHsv(rgb.r, rgb.g, rgb.b);\n this.hue = hsv.h;\n this.saturation = hsv.s;\n this.value = hsv.v;\n }\n }\n\n render() {\n const rgb = this.hexToRgb(this.currentColor);\n const predefinedColors = this.predefine || [\n '#ff4500', '#ff8c00', '#ffd700', '#90ee90', '#00ced1',\n '#1e90ff', '#c71585', '#000000', '#ffffff', '#808080',\n ];\n\n // 根据当前色相生成饱和度面板的背景色\n const hueColor = this.hsvToHex(this.hue, 100, 100);\n\n return (\n <div\n class={{\n 'hb-color-picker': true,\n 'hb-color-picker--open': this.isOpen,\n 'hb-color-picker--disabled': this.disabled,\n }}\n >\n <div class=\"hb-color-picker__trigger\" onClick={this.handleTriggerClick}>\n <div class=\"hb-color-picker__color\" style={{ backgroundColor: this.currentColor }}></div>\n <span class=\"hb-color-picker__text\">{this.currentColor}</span>\n </div>\n {this.isOpen && (\n <div class=\"hb-color-picker__dropdown\">\n <div class=\"hb-color-picker__panel\">\n <div class=\"hb-color-picker__saturation\" onClick={this.handleSaturationClick}>\n <div class=\"hb-color-picker__saturation-bg\" style={{ backgroundColor: hueColor }}></div>\n <div class=\"hb-color-picker__saturation-white\"></div>\n <div class=\"hb-color-picker__saturation-black\"></div>\n <div\n class=\"hb-color-picker__saturation-pointer\"\n style={{\n left: `${this.saturation}%`,\n top: `${100 - this.value}%`,\n }}\n ></div>\n </div>\n <div class=\"hb-color-picker__controls\">\n <div class=\"hb-color-picker__hue\" onClick={this.handleHueClick}>\n <div class=\"hb-color-picker__hue-bar\"></div>\n <div\n class=\"hb-color-picker__hue-pointer\"\n style={{\n left: `${(this.hue / 360) * 100}%`,\n }}\n ></div>\n </div>\n {this.showAlpha && (\n <div class=\"hb-color-picker__alpha\">\n <div class=\"hb-color-picker__alpha-bar\" style={{ backgroundColor: this.currentColor }}></div>\n </div>\n )}\n </div>\n <div class=\"hb-color-picker__input\">\n <input\n type=\"text\"\n class=\"hb-color-picker__input-hex\"\n value={this.currentColor}\n onInput={this.handleInputChange}\n />\n {rgb && (\n <div class=\"hb-color-picker__input-rgb\">\n <input \n type=\"number\" \n min=\"0\" \n max=\"255\" \n value={rgb.r}\n onInput={(e) => this.handleRgbInputChange(0, (e.target as HTMLInputElement).value)}\n />\n <input \n type=\"number\" \n min=\"0\" \n max=\"255\" \n value={rgb.g}\n onInput={(e) => this.handleRgbInputChange(1, (e.target as HTMLInputElement).value)}\n />\n <input \n type=\"number\" \n min=\"0\" \n max=\"255\" \n value={rgb.b}\n onInput={(e) => this.handleRgbInputChange(2, (e.target as HTMLInputElement).value)}\n />\n </div>\n )}\n </div>\n {this.predefine && this.predefine.length > 0 && (\n <div class=\"hb-color-picker__predefine\">\n {predefinedColors.map((color) => (\n <div\n class={{\n 'hb-color-picker__predefine-color': true,\n 'hb-color-picker__predefine-color--selected': color === this.currentColor,\n }}\n style={{ backgroundColor: color }}\n onClick={() => this.handleColorSelect(color)}\n ></div>\n ))}\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n );\n }\n}\n\n"]}
1
+ {"version":3,"file":"ColorPicker.js","sourceRoot":"","sources":["../../../src/components/ColorPicker/ColorPicker.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, h, Prop, Event, EventEmitter, State, Element, Watch } from '@stencil/core';\n\n/**\n * ColorPicker 颜色选择器组件\n * 用于颜色选择,支持多种格式\n */\n@Component({\n tag: 'hb-color-picker',\n styleUrl: 'color-picker.css',\n shadow: true,\n})\nexport class ColorPicker {\n @Element() el: HTMLElement;\n\n /**\n * 绑定值\n */\n @Prop({ mutable: true }) modelValue?: string;\n\n /**\n * 是否禁用\n * @default false\n */\n @Prop() disabled: boolean = false;\n\n /**\n * 颜色格式\n */\n @Prop() colorFormat: 'hsl' | 'hsv' | 'hex' | 'rgb' = 'hex';\n\n /**\n * 是否显示透明度\n * @default false\n */\n @Prop() showAlpha: boolean = false;\n\n /**\n * 预定义颜色\n */\n @Prop() predefine?: string[];\n\n @State() isOpen: boolean = false;\n @State() currentColor: string = '#409EFF';\n @State() hue: number = 210; // 色相值 0-360\n @State() saturation: number = 100; // 饱和度 0-100\n @State() value: number = 100; // 明度 0-100\n @State() alpha: number = 100; // 透明度 0-100(仅 showAlpha=true 时生效)\n\n /**\n * 值改变事件\n */\n @Event() hbChange: EventEmitter<string>;\n\n /**\n * 激活时触发\n */\n @Event() hbActiveChange: EventEmitter<string>;\n\n componentDidLoad() {\n if (this.modelValue) {\n this.currentColor = this.modelValue;\n this.updateHSVFromColor(this.modelValue);\n } else {\n this.updateHSVFromColor(this.currentColor);\n }\n document.addEventListener('click', this.handleDocumentClick);\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this.handleDocumentClick);\n }\n\n private handleDocumentClick = (e: MouseEvent) => {\n if (!this.isOpen) return;\n const target = e.target as HTMLElement;\n if (!this.el.contains(target)) {\n this.isOpen = false;\n }\n };\n\n @Watch('modelValue')\n handleValueChange() {\n if (this.modelValue) {\n this.currentColor = this.modelValue;\n this.updateHSVFromColor(this.modelValue);\n }\n }\n\n private handleTriggerClick = () => {\n if (this.disabled) return;\n this.isOpen = !this.isOpen;\n };\n\n /** 键盘交互:Escape 关闭面板(对齐 antd / WAI-ARIA) */\n private handleKeyDown = (e: KeyboardEvent) => {\n if (this.disabled) return;\n if (e.key === 'Escape' && this.isOpen) {\n e.preventDefault();\n this.isOpen = false;\n }\n };\n\n /** 把 3 位简写 hex 规范化为 6 位,避免后续 hexToRgb 解析失败 */\n private normalizeHex(color: string): string | null {\n if (typeof color !== 'string') return null;\n const c = color.trim();\n if (/^#([A-Fa-f0-9]{6})$/.test(c)) return c.toLowerCase();\n if (/^#([A-Fa-f0-9]{3})$/.test(c)) {\n const [, r, g, b] = c.match(/^#(.)(.)(.)$/)!;\n return `#${r}${r}${g}${g}${b}${b}`.toLowerCase();\n }\n return null;\n }\n\n private handleColorSelect = (color: string) => {\n const normalized = this.normalizeHex(color);\n if (!normalized) return; // 非法颜色直接忽略,防止 currentColor 进入不可解析态\n this.currentColor = normalized;\n this.modelValue = normalized;\n this.hbChange.emit(normalized);\n this.hbActiveChange.emit(normalized);\n };\n\n private handleSaturationClick = (e: MouseEvent) => {\n const target = e.currentTarget as HTMLElement;\n const rect = target.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n \n // X 轴代表饱和度 (0-100%)\n this.saturation = Math.max(0, Math.min(100, (x / rect.width) * 100));\n // Y 轴代表明度 (0-100%,从上到下)\n this.value = Math.max(0, Math.min(100, 100 - (y / rect.height) * 100));\n \n const hex = this.hsvToHex(this.hue, this.saturation, this.value);\n this.handleColorSelect(hex);\n };\n\n private handleHueClick = (e: MouseEvent) => {\n const target = e.currentTarget as HTMLElement;\n const rect = target.getBoundingClientRect();\n const x = e.clientX - rect.left;\n \n // 色相值 0-360\n this.hue = Math.max(0, Math.min(360, (x / rect.width) * 360));\n \n const hex = this.hsvToHex(this.hue, this.saturation, this.value);\n this.handleColorSelect(hex);\n };\n\n private handleInputChange = (e: Event) => {\n const target = e.target as HTMLInputElement;\n const value = target.value;\n // 验证 hex 颜色格式(3 位简写会被 handleColorSelect 内部规范化为 6 位)\n if (/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(value)) {\n this.handleColorSelect(value);\n }\n };\n\n /** 透明度条点击/拖动:X 轴映射到 alpha 0-100 */\n private handleAlphaClick = (e: MouseEvent) => {\n const target = e.currentTarget as HTMLElement;\n const rect = target.getBoundingClientRect();\n const x = e.clientX - rect.left;\n this.alpha = Math.max(0, Math.min(100, Math.round((x / rect.width) * 100)));\n // alpha 变化触发 active 事件(不改变 hex,但通知消费者透明度变化)\n this.hbActiveChange.emit(this.getFormattedValue());\n };\n\n private handleRgbInputChange = (index: number, value: string) => {\n const rgb = this.hexToRgb(this.currentColor);\n if (rgb) {\n const num = parseInt(value, 10);\n if (!isNaN(num) && num >= 0 && num <= 255) {\n if (index === 0) rgb.r = num;\n else if (index === 1) rgb.g = num;\n else if (index === 2) rgb.b = num;\n \n const hex = `#${[rgb.r, rgb.g, rgb.b].map(x => {\n const hex = x.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n }).join('')}`;\n this.handleColorSelect(hex);\n }\n }\n };\n\n private hexToRgb(hex: string): { r: number; g: number; b: number } | null {\n // 先用 normalizeHex 兜底 3 位简写(#abc → #aabbcc),再解析\n const normalized = this.normalizeHex(hex);\n if (!normalized) return null;\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(normalized);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n }\n\n // RGB 转 HSV\n private rgbToHsv(r: number, g: number, b: number): { h: number; s: number; v: number } {\n r = r / 255;\n g = g / 255;\n b = b / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const diff = max - min;\n\n let h = 0;\n if (diff !== 0) {\n if (max === r) {\n h = ((g - b) / diff) % 6;\n } else if (max === g) {\n h = (b - r) / diff + 2;\n } else {\n h = (r - g) / diff + 4;\n }\n }\n h = Math.round(h * 60);\n if (h < 0) h += 360;\n\n const s = max === 0 ? 0 : Math.round((diff / max) * 100);\n const v = Math.round(max * 100);\n\n return { h, s, v };\n }\n\n // HSV 转 RGB\n private hsvToRgb(h: number, s: number, v: number): { r: number; g: number; b: number } {\n s = s / 100;\n v = v / 100;\n\n const c = v * s;\n const x = c * (1 - Math.abs(((h / 60) % 2) - 1));\n const m = v - c;\n\n let r = 0, g = 0, b = 0;\n\n if (h >= 0 && h < 60) {\n r = c; g = x; b = 0;\n } else if (h >= 60 && h < 120) {\n r = x; g = c; b = 0;\n } else if (h >= 120 && h < 180) {\n r = 0; g = c; b = x;\n } else if (h >= 180 && h < 240) {\n r = 0; g = x; b = c;\n } else if (h >= 240 && h < 300) {\n r = x; g = 0; b = c;\n } else if (h >= 300 && h < 360) {\n r = c; g = 0; b = x;\n }\n\n return {\n r: Math.round((r + m) * 255),\n g: Math.round((g + m) * 255),\n b: Math.round((b + m) * 255)\n };\n }\n\n // HSV 转 Hex\n private hsvToHex(h: number, s: number, v: number): string {\n const rgb = this.hsvToRgb(h, s, v);\n return `#${[rgb.r, rgb.g, rgb.b].map(x => {\n const hex = x.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n }).join('')}`;\n }\n\n // 从颜色值更新 HSV\n private updateHSVFromColor(color: string) {\n const rgb = this.hexToRgb(color);\n if (rgb) {\n const hsv = this.rgbToHsv(rgb.r, rgb.g, rgb.b);\n this.hue = hsv.h;\n this.saturation = hsv.s;\n this.value = hsv.v;\n }\n }\n\n /** 按当前 colorFormat 输出最终颜色字符串(对齐 antd 的 format 行为) */\n private getFormattedValue(): string {\n const rgb = this.hexToRgb(this.currentColor);\n if (!rgb) return this.currentColor;\n switch (this.colorFormat) {\n case 'rgb':\n return `rgb(${rgb.r}, ${rgb.g}, ${rgb.b})`;\n case 'hsl': {\n const hsv = this.rgbToHsv(rgb.r, rgb.g, rgb.b);\n const [h, s, l] = this.hsvToHsl(hsv.h, hsv.s, hsv.v);\n return `hsl(${h}, ${s}%, ${l}%)`;\n }\n case 'hsv': {\n const hsv = this.rgbToHsv(rgb.r, rgb.g, rgb.b);\n return `hsv(${hsv.h}, ${hsv.s}%, ${hsv.v}%)`;\n }\n case 'hex':\n default:\n return this.currentColor;\n }\n }\n\n /** HSV → HSL(HSL 字符串输出用) */\n private hsvToHsl(h: number, s: number, v: number): [number, number, number] {\n s /= 100;\n v /= 100;\n const l = v - (v * s) / 2;\n const sl = l === 0 || l === 1 ? 0 : (v - l) / Math.min(l, 1 - l);\n return [Math.round(h), Math.round(sl * 100), Math.round(l * 100)];\n }\n\n render() {\n const rgb = this.hexToRgb(this.currentColor);\n const predefinedColors = this.predefine || [\n '#ff4500', '#ff8c00', '#ffd700', '#90ee90', '#00ced1',\n '#1e90ff', '#c71585', '#000000', '#ffffff', '#808080',\n ];\n\n // 根据当前色相生成饱和度面板的背景色\n const hueColor = this.hsvToHex(this.hue, 100, 100);\n\n return (\n <div\n class={{\n 'hb-color-picker': true,\n 'hb-color-picker--open': this.isOpen,\n 'hb-color-picker--disabled': this.disabled,\n }}\n onKeyDown={this.handleKeyDown}\n >\n <div\n class=\"hb-color-picker__trigger\"\n onClick={this.handleTriggerClick}\n role=\"button\"\n tabindex={this.disabled ? -1 : 0}\n aria-haspopup=\"dialog\"\n aria-expanded={this.isOpen ? 'true' : 'false'}\n aria-disabled={this.disabled ? 'true' : 'false'}\n onKeyDown={e => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n this.handleTriggerClick();\n }\n }}\n >\n <div class=\"hb-color-picker__color\" style={{ backgroundColor: this.currentColor }}></div>\n <span class=\"hb-color-picker__text\">{this.currentColor}</span>\n </div>\n {this.isOpen && (\n <div class=\"hb-color-picker__dropdown\" role=\"dialog\">\n <div class=\"hb-color-picker__panel\">\n <div class=\"hb-color-picker__saturation\" onClick={this.handleSaturationClick}>\n <div class=\"hb-color-picker__saturation-bg\" style={{ backgroundColor: hueColor }}></div>\n <div class=\"hb-color-picker__saturation-white\"></div>\n <div class=\"hb-color-picker__saturation-black\"></div>\n <div\n class=\"hb-color-picker__saturation-pointer\"\n style={{\n left: `${this.saturation}%`,\n top: `${100 - this.value}%`,\n }}\n ></div>\n </div>\n <div class=\"hb-color-picker__controls\">\n <div class=\"hb-color-picker__hue\" onClick={this.handleHueClick}>\n <div class=\"hb-color-picker__hue-bar\"></div>\n <div\n class=\"hb-color-picker__hue-pointer\"\n style={{\n left: `${(this.hue / 360) * 100}%`,\n }}\n ></div>\n </div>\n {this.showAlpha && (\n <div class=\"hb-color-picker__alpha\" onClick={this.handleAlphaClick}>\n <div class=\"hb-color-picker__alpha-bar\" style={{ backgroundColor: this.currentColor }}></div>\n <div\n class=\"hb-color-picker__alpha-pointer\"\n style={{ left: `${this.alpha}%` }}\n ></div>\n </div>\n )}\n </div>\n <div class=\"hb-color-picker__input\">\n <input\n type=\"text\"\n class=\"hb-color-picker__input-hex\"\n value={this.currentColor}\n onInput={this.handleInputChange}\n aria-label=\"HEX 颜色值\"\n />\n {rgb && (\n <div class=\"hb-color-picker__input-rgb\">\n <input\n type=\"number\"\n min=\"0\"\n max=\"255\"\n value={rgb.r}\n onInput={(e) => this.handleRgbInputChange(0, (e.target as HTMLInputElement).value)}\n aria-label=\"红色通道\"\n />\n <input\n type=\"number\"\n min=\"0\"\n max=\"255\"\n value={rgb.g}\n onInput={(e) => this.handleRgbInputChange(1, (e.target as HTMLInputElement).value)}\n aria-label=\"绿色通道\"\n />\n <input\n type=\"number\"\n min=\"0\"\n max=\"255\"\n value={rgb.b}\n onInput={(e) => this.handleRgbInputChange(2, (e.target as HTMLInputElement).value)}\n aria-label=\"蓝色通道\"\n />\n </div>\n )}\n </div>\n {this.predefine && this.predefine.length > 0 && (\n <div class=\"hb-color-picker__predefine\">\n {predefinedColors.map((color) => {\n const normalized = this.normalizeHex(color) || color;\n return (\n <div\n class={{\n 'hb-color-picker__predefine-color': true,\n 'hb-color-picker__predefine-color--selected': normalized === this.currentColor,\n }}\n style={{ backgroundColor: color }}\n onClick={() => this.handleColorSelect(color)}\n title={color}\n ></div>\n );\n })}\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n );\n }\n}\n\n"]}
@@ -139,6 +139,19 @@
139
139
  border-radius: 2px;
140
140
  }
141
141
 
142
+ .hb-color-picker__alpha-pointer {
143
+ position: absolute;
144
+ top: 0;
145
+ width: 4px;
146
+ height: 100%;
147
+ background: #fff;
148
+ border: 1px solid rgba(0, 0, 0, 0.3);
149
+ border-radius: 2px;
150
+ transform: translateX(-50%);
151
+ box-shadow: 0 0 2px rgba(0, 0, 0, 0.3);
152
+ pointer-events: none;
153
+ }
154
+
142
155
  .hb-color-picker__input {
143
156
  margin-top: 12px;
144
157
  }
@@ -59,10 +59,10 @@ export class ColorPickerPanel {
59
59
  '#ff4500', '#ff8c00', '#ffd700', '#90ee90', '#00ced1',
60
60
  '#1e90ff', '#c71585', '#000000', '#ffffff', '#808080',
61
61
  ];
62
- return (h("div", { key: '7f5215f6908b85c016b9fc68423d63736adc64ac', class: "hb-color-picker-panel" }, h("div", { key: '6e918eb9cfd1932f6b01bd1b4e34eab37f12d486', class: "hb-color-picker-panel__saturation" }, h("div", { key: '72b61931cb7d87060868328de1675998ebd59ec1', class: "hb-color-picker-panel__saturation-white" }), h("div", { key: 'a4e3f1c4ab9217793e710cf940ec15539eaa2f9d', class: "hb-color-picker-panel__saturation-black" }), h("div", { key: '68f53e538a84d86c6093a56a1cbc566e08a2e43e', class: "hb-color-picker-panel__saturation-pointer", style: {
62
+ return (h("div", { key: 'bf226e5918769e715aaf121e03316a9ba7165174', class: "hb-color-picker-panel" }, h("div", { key: 'e1940500a929515478b5a47540aabc716c81ff27', class: "hb-color-picker-panel__saturation" }, h("div", { key: 'cbb6de28453a7b72a2be56258af413814621bd04', class: "hb-color-picker-panel__saturation-white" }), h("div", { key: 'd982e1f04dc0566448bab44354bb47f9ed06e549', class: "hb-color-picker-panel__saturation-black" }), h("div", { key: 'd51391dd12c2383f01f0c80f677bbd30ffdf7540', class: "hb-color-picker-panel__saturation-pointer", style: {
63
63
  left: rgb ? `${(rgb.r / 255) * 100}%` : '50%',
64
64
  top: rgb ? `${(1 - rgb.g / 255) * 100}%` : '50%',
65
- } })), h("div", { key: '990b800e049ea8c5fd421a011486df34754584df', class: "hb-color-picker-panel__controls" }, h("div", { key: 'f2ae82fe0034874c623c259efdaeb4f4101c9b4b', class: "hb-color-picker-panel__hue" }, h("div", { key: '85a4d5b390e52856addafe49f9a467ab9554d895', class: "hb-color-picker-panel__hue-bar" })), this.showAlpha && (h("div", { key: 'c4d984971839bed5d5af92d9a15942f30f44073e', class: "hb-color-picker-panel__alpha" }, h("div", { key: 'b61fd80f873c2c62561f4d814a397e5a8eed2cb6', class: "hb-color-picker-panel__alpha-bar", style: { backgroundColor: this.currentColor } })))), h("div", { key: '64b5d37078471a314c26ef3e3e64c54887310cc1', class: "hb-color-picker-panel__input" }, h("input", { key: '2769607efa327d7b3c9c5e3fda4842a553c30cd2', type: "text", class: "hb-color-picker-panel__input-hex", value: this.currentColor, onInput: this.handleInputChange }), rgb && (h("div", { key: '4d3bf72b243b12f5f39d9c3f9800877a6d1eae9c', class: "hb-color-picker-panel__input-rgb" }, h("input", { key: 'd71850226823825cdc9eacc3cf8ff8a9b4d2c001', type: "number", min: "0", max: "255", value: rgb.r }), h("input", { key: 'ac86df2ab2e50574ddfb4938a85154e58969170e', type: "number", min: "0", max: "255", value: rgb.g }), h("input", { key: '457450f4ccdfe741dc28077a7160c504608cc23c', type: "number", min: "0", max: "255", value: rgb.b })))), this.predefine && this.predefine.length > 0 && (h("div", { key: 'b6ed00f9d32b953c4985a2336ee7901b61c64931', class: "hb-color-picker-panel__predefine" }, predefinedColors.map((color) => (h("div", { class: {
65
+ } })), h("div", { key: '3a962859eeeddabbe34ffd3459b6fead2bb93e20', class: "hb-color-picker-panel__controls" }, h("div", { key: '2d64a8c40a17a1a1e827b2ee3ebac717cfa10286', class: "hb-color-picker-panel__hue" }, h("div", { key: '30ab4768f4f6fd027d169480d44fc14089ed1452', class: "hb-color-picker-panel__hue-bar" })), this.showAlpha && (h("div", { key: '09984d0734eb3446962b4deb5ef617358a6d2c2f', class: "hb-color-picker-panel__alpha" }, h("div", { key: '1e2e49e7e6532a62ae1a539b4787adbde9a484da', class: "hb-color-picker-panel__alpha-bar", style: { backgroundColor: this.currentColor } })))), h("div", { key: '8a34f379cbd1032ec9ae024b1b1168a5b1ae0af1', class: "hb-color-picker-panel__input" }, h("input", { key: '181d1f41a560fc7f49a0e334c749bb539476549c', type: "text", class: "hb-color-picker-panel__input-hex", value: this.currentColor, onInput: this.handleInputChange }), rgb && (h("div", { key: '1580bf0e898561e1c9f93da1e6f121cecc452824', class: "hb-color-picker-panel__input-rgb" }, h("input", { key: 'ba0970b200000c7ccf744883caaf4fa3d33dad61', type: "number", min: "0", max: "255", value: rgb.r }), h("input", { key: '6b35330cce8d4b2a7f040c113b1c9e9bd243e1b6', type: "number", min: "0", max: "255", value: rgb.g }), h("input", { key: '723c29edbf58a838b7bedaee6758ae38cd948e13', type: "number", min: "0", max: "255", value: rgb.b })))), this.predefine && this.predefine.length > 0 && (h("div", { key: 'c5c89935fc736fde14d946139c31404a1b978be5', class: "hb-color-picker-panel__predefine" }, predefinedColors.map((color) => (h("div", { class: {
66
66
  'hb-color-picker-panel__predefine-color': true,
67
67
  'hb-color-picker-panel__predefine-color--selected': color === this.currentColor,
68
68
  }, style: { backgroundColor: color }, onClick: () => this.handleColorSelect(color) })))))));
@@ -12,7 +12,7 @@ export class ConfigProvider {
12
12
  /** 语言 */
13
13
  locale = 'zh-CN';
14
14
  render() {
15
- return h("slot", { key: '2f5645093f96615556fea763173dc339b8dfb515' });
15
+ return h("slot", { key: '60b01e02978bd4ce20fcebb1efc56b679001275a' });
16
16
  }
17
17
  componentDidLoad() {
18
18
  this.applyConfig();
@@ -13,7 +13,7 @@ export class Aside {
13
13
  if (this.width) {
14
14
  style.width = this.width;
15
15
  }
16
- return (h("aside", { key: 'f3a737773569b17eaeba7a061c087048d2f0b0d7', class: "hb-aside", style: style }, h("slot", { key: 'fde6d1fa95d2bb5c42202413b5c5716c85b26a7b' })));
16
+ return (h("aside", { key: '2615bba7300b1d86fa82a1618718e07479f41348', class: "hb-aside", style: style }, h("slot", { key: 'dd4ad7e905f2ea8c72bc4d70c82ab0a13bed5e0f' })));
17
17
  }
18
18
  static get is() { return "hb-aside"; }
19
19
  static get encapsulation() { return "shadow"; }
@@ -10,10 +10,10 @@ export class Container {
10
10
  */
11
11
  direction = 'horizontal';
12
12
  render() {
13
- return (h("section", { key: '8d2029a2363134efb2feb8df16510a5ababe2764', class: {
13
+ return (h("section", { key: 'ae4367497d812f39390c7b4fdeb3dc64586e5621', class: {
14
14
  'hb-container': true,
15
15
  'hb-container--vertical': this.direction === 'vertical',
16
- } }, h("slot", { key: 'fb2dea608d501e5db4a03657796571fdb30c9128' })));
16
+ } }, h("slot", { key: 'bdfee3ce5b691fcc69c4b1f3e7b7afd6b1709af2' })));
17
17
  }
18
18
  static get is() { return "hb-container"; }
19
19
  static get encapsulation() { return "shadow"; }
@@ -13,7 +13,7 @@ export class Footer {
13
13
  if (this.height) {
14
14
  style.height = this.height;
15
15
  }
16
- return (h("footer", { key: 'a6a73df27a1e1a7891a436a0f57c337e27cb9328', class: "hb-footer", style: style }, h("slot", { key: '02927f1f9433b928f2552ef19e2e3fbd7cf69d44' })));
16
+ return (h("footer", { key: '65847074853df09c57dd2bcead1470dac15f5951', class: "hb-footer", style: style }, h("slot", { key: 'e0f976bf1b3cd1f3a7ae2609bdf9b621070dac10' })));
17
17
  }
18
18
  static get is() { return "hb-footer"; }
19
19
  static get encapsulation() { return "shadow"; }
@@ -13,7 +13,7 @@ export class Header {
13
13
  if (this.height) {
14
14
  style.height = this.height;
15
15
  }
16
- return (h("header", { key: '86042705286a6d135858982b34cdb19da71b6744', class: "hb-header", style: style }, h("slot", { key: '96d5152e19c88d4cbc4c30bc136b27b6b8388331' })));
16
+ return (h("header", { key: 'b0f4403c73f20d13b4513dd21266e5fea1004f7b', class: "hb-header", style: style }, h("slot", { key: '15f9743951c0183e7ee10124c0e3d2e8d071bee0' })));
17
17
  }
18
18
  static get is() { return "hb-header"; }
19
19
  static get encapsulation() { return "shadow"; }
@@ -5,7 +5,7 @@ import { h } from "@stencil/core";
5
5
  */
6
6
  export class Main {
7
7
  render() {
8
- return (h("main", { key: 'd326db7b0e9de0ff411ca3af99f2399a5e760557', class: "hb-main" }, h("slot", { key: 'cea61788b327d41f6307be518c368eca41a254b2' })));
8
+ return (h("main", { key: '98dd998acef2d0cf91173425d84b5e14cd86c104', class: "hb-main" }, h("slot", { key: 'e508104800157f61bec0b0754371c83a4a76dabe' })));
9
9
  }
10
10
  static get is() { return "hb-main"; }
11
11
  static get encapsulation() { return "shadow"; }
@@ -22,8 +22,11 @@ export class DatePicker {
22
22
  /** 显示在输入框中的格式 */
23
23
  valueFormat;
24
24
  /**
25
- * 日期选择器类型
26
- * 当前仅支持 'date',更多类型将在后续版本实现
25
+ * 日期选择器类型:
26
+ * - 'date':日选择(默认)
27
+ * - 'month':月选择(month 视图网格,emit YYYY-MM)
28
+ * - 'year':年选择(year 视图网格,emit YYYY)
29
+ * 注:'datetime'/'week' 请用独立的 DateTimePicker 组件 / 后续补全。
27
30
  */
28
31
  type = 'date';
29
32
  /**
@@ -38,6 +41,8 @@ export class DatePicker {
38
41
  isOpen = false;
39
42
  inputValue = '';
40
43
  selectedDate;
44
+ /** month/year 模式的面板锚点(不随选择改变,仅导航用) */
45
+ panelViewDate = new Date();
41
46
  /** 值改变事件 */
42
47
  hbChange;
43
48
  clickOutside = createClickOutsideHandler({
@@ -74,6 +79,10 @@ export class DatePicker {
74
79
  if (this.disabled)
75
80
  return;
76
81
  this.isOpen = !this.isOpen;
82
+ // month/year 模式打开时,从已选值或今天初始化面板锚点
83
+ if (this.isOpen && (this.type === 'month' || this.type === 'year')) {
84
+ this.panelViewDate = this.selectedDate ? new Date(this.selectedDate) : new Date();
85
+ }
77
86
  };
78
87
  handleClear = (e) => {
79
88
  e.stopPropagation();
@@ -93,9 +102,44 @@ export class DatePicker {
93
102
  this.isOpen = false;
94
103
  this.hbChange.emit(this.modelValue);
95
104
  };
105
+ /** type='month':选某月 → 锚定到该月 1 号,emit YYYY-MM */
106
+ handleMonthSelect = (monthIndex) => {
107
+ const next = new Date(this.panelViewDate.getFullYear(), monthIndex, 1);
108
+ if (this.disabledDate && this.disabledDate(next))
109
+ return;
110
+ this.selectedDate = next;
111
+ this.panelViewDate = new Date(next);
112
+ const iso = `${next.getFullYear()}-${String(monthIndex + 1).padStart(2, '0')}`;
113
+ this.inputValue = iso;
114
+ this.modelValue = iso;
115
+ this.isOpen = false;
116
+ this.hbChange.emit(iso);
117
+ };
118
+ /** type='year':选某年 → 锚定到该年 1 月 1 日,emit YYYY */
119
+ handleYearSelect = (year) => {
120
+ const next = new Date(year, 0, 1);
121
+ if (this.disabledDate && this.disabledDate(next))
122
+ return;
123
+ this.selectedDate = next;
124
+ this.panelViewDate = new Date(next);
125
+ const iso = String(year);
126
+ this.inputValue = iso;
127
+ this.modelValue = iso;
128
+ this.isOpen = false;
129
+ this.hbChange.emit(iso);
130
+ };
96
131
  changeMonth(delta) {
97
132
  this.selectedDate = addMonths(this.selectedDate || new Date(), delta);
98
133
  }
134
+ /** month/year 面板导航:month ±1 年、year ±12 年 */
135
+ changePanelView(delta) {
136
+ const next = new Date(this.panelViewDate);
137
+ if (this.type === 'month')
138
+ next.setFullYear(next.getFullYear() + delta);
139
+ else
140
+ next.setFullYear(next.getFullYear() + delta * 12);
141
+ this.panelViewDate = next;
142
+ }
99
143
  /** 判断某日期是否被 disabledDate 禁用 */
100
144
  isDateDisabled = (date) => {
101
145
  return !!this.disabledDate && this.disabledDate(date);
@@ -103,12 +147,20 @@ export class DatePicker {
103
147
  render() {
104
148
  const days = getCalendarDays(this.selectedDate || new Date(), this.selectedDate);
105
149
  const current = this.selectedDate || new Date();
106
- return (h("div", { key: '79e20fe927318faa30086dbe5cd3e17b24077f8f', class: {
150
+ // month/year 面板锚点:默认用 panelViewDate,未打开时回退到 selectedDate/today
151
+ const panelAnchor = this.panelViewDate || current;
152
+ const headerLabel = this.type === 'month'
153
+ ? `${panelAnchor.getFullYear()} 年`
154
+ : this.type === 'year'
155
+ ? `${Math.floor(panelAnchor.getFullYear() / 12) * 12} - ${Math.floor(panelAnchor.getFullYear() / 12) * 12 + 11}`
156
+ : `${current.getFullYear()}年 ${MONTH_NAMES[current.getMonth()]}`;
157
+ return (h("div", { key: '2d4d4082eee095d506d8450a7f58685cbd4bb1a9', class: {
107
158
  'hb-date-picker': true,
108
159
  'hb-date-picker--open': this.isOpen,
109
160
  'hb-date-picker--disabled': this.disabled,
110
161
  [`hb-date-picker--${this.size}`]: true,
111
- } }, h("div", { key: 'eb216f889017004192cdc04496334c21e714e971', class: "hb-date-picker__input-wrapper", onClick: this.handleInputClick }, h("input", { key: 'ac23cc7e2d3ba77141ec342477bf984ce581b30a', type: "text", id: this.inputId, name: this.name, class: "hb-date-picker__input", placeholder: this.placeholder, value: this.inputValue, disabled: this.disabled, readonly: true, role: "combobox", "aria-haspopup": "dialog", "aria-expanded": this.isOpen ? 'true' : 'false', "aria-label": this.placeholder }), h("span", { key: 'd9371788b72feacd581e908d65770af8b9eb535a', class: "hb-date-picker__suffix" }, this.clearable && this.modelValue && (h("span", { key: '86601557f8419ba22111ca214c3130ee444b383e', class: "hb-date-picker__clear", role: "button", "aria-label": "\u6E05\u7A7A", onClick: this.handleClear }, "\u00D7")), h("span", { key: '55662b6a4b49cf42c54e2906fb062c8c45a9259e', class: "hb-date-picker__icon", "aria-hidden": "true" }, "\uD83D\uDCC5"))), this.isOpen && (h("div", { key: '3b1d2bbb8fd12b5b8c2748028f7b13daa08df5a0', class: "hb-date-picker__dropdown", role: "dialog", "aria-label": "\u9009\u62E9\u65E5\u671F" }, h("div", { key: '310b54cb7c477fc52657b220201e82f69059b3a0', class: "hb-date-picker__header" }, h("button", { key: '63cf02ce80ea6522592863a31696b91b79ebd0ef', type: "button", class: "hb-date-picker__prev-btn", "aria-label": "\u4E0A\u4E00\u6708", onClick: () => this.changeMonth(-1) }, "\u2039"), h("span", { key: 'f74837430f189198929125413a7b61568e37c1a7', class: "hb-date-picker__header-label", "aria-live": "polite" }, current.getFullYear(), "\u5E74 ", MONTH_NAMES[current.getMonth()]), h("button", { key: 'db36b5b8823fa3dc5f8355d77225b19ea262d2fd', type: "button", class: "hb-date-picker__next-btn", "aria-label": "\u4E0B\u4E00\u6708", onClick: () => this.changeMonth(1) }, "\u203A")), h("div", { key: '2adbe9940556d5f01049bcdb4777c67b2519c5ef', class: "hb-date-picker__body", role: "grid" }, h("div", { key: 'd4b2deab072b795b852abdb4e54f9c3493feaecd', class: "hb-date-picker__weekdays", role: "row" }, WEEK_DAY_NAMES.map(day => (h("div", { class: "hb-date-picker__weekday", role: "columnheader", "aria-disabled": "true" }, day)))), h("div", { key: '208e6260719c97616be80386b3fc9da3521eed83', class: "hb-date-picker__days", role: "row" }, days.map((day, index) => {
162
+ [`hb-date-picker--${this.type}`]: true,
163
+ } }, h("div", { key: '6b740a744a4f1d24d1d1b8d65d44a0ca6d69b3fb', class: "hb-date-picker__input-wrapper", onClick: this.handleInputClick }, h("input", { key: '7eeee5862662040a0f2858b04fa4ca96f01e3eb9', type: "text", id: this.inputId, name: this.name, class: "hb-date-picker__input", placeholder: this.placeholder, value: this.inputValue, disabled: this.disabled, readonly: true, role: "combobox", "aria-haspopup": "dialog", "aria-expanded": this.isOpen ? 'true' : 'false', "aria-label": this.placeholder }), h("span", { key: '754144e78db34c6f674469e2c95a51c39828c965', class: "hb-date-picker__suffix" }, this.clearable && this.modelValue && (h("span", { key: '7766158871f0d0b5288b4320f10976704879f680', class: "hb-date-picker__clear", role: "button", "aria-label": "\u6E05\u7A7A", onClick: this.handleClear }, h("svg", { key: '64ec132282290456ec08306f2219eae1fa420377', viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": 2, "stroke-linecap": "round", "stroke-linejoin": "round", "aria-hidden": "true" }, h("path", { key: 'f1a41eedee2964a1fd92672f90591b2afdd7f0ca', d: "M6 6l12 12M18 6L6 18" })))), h("span", { key: '6c1972309c18139b1cd310f26855dbe846e03982', class: "hb-date-picker__icon", "aria-hidden": "true" }, h("svg", { key: 'e15ef729755d5629fbe16d356a9723ea0ebda9ad', viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": 2, "stroke-linecap": "round", "stroke-linejoin": "round" }, h("rect", { key: 'db3dd7a69499a878ccd000eae533cbe9485b9d13', x: "3", y: "5", width: "18", height: "16", rx: "2" }), h("path", { key: 'dec2aa31cdf761b591e462d8c9dedb061a73ed63', d: "M3 9h18M8 3v4M16 3v4" }))))), this.isOpen && (h("div", { key: '626c192f0e2d45e7b5efbd53dd02241af51119be', class: "hb-date-picker__dropdown", role: "dialog", "aria-label": this.type === 'month' ? '选择月份' : this.type === 'year' ? '选择年份' : '选择日期' }, h("div", { key: 'a88b651f2defcee8a88ac07a4ce8a2e8a1857854', class: "hb-date-picker__header" }, h("button", { key: 'c47b93061818e710090959432b9e89f9281edb4e', type: "button", class: "hb-date-picker__prev-btn", "aria-label": this.type === 'date' ? '上一月' : '上一年', onClick: () => (this.type === 'date' ? this.changeMonth(-1) : this.changePanelView(-1)) }, "\u2039"), h("span", { key: 'ae85952f2be4f5cd1cb075c3cd9ea69503a0362e', class: "hb-date-picker__header-label", "aria-live": "polite" }, headerLabel), h("button", { key: '0114d37baea55623d2fc65680ae7d73749a1ef24', type: "button", class: "hb-date-picker__next-btn", "aria-label": this.type === 'date' ? '下一月' : '下一年', onClick: () => (this.type === 'date' ? this.changeMonth(1) : this.changePanelView(1)) }, "\u203A")), this.type === 'date' && (h("div", { key: '754807f77924d8a74ff4b5fc26b6f4794f3fcf3b', class: "hb-date-picker__body", role: "grid" }, h("div", { key: '80e7acb304dde0dd8dd256add20b5997c3d8311c', class: "hb-date-picker__weekdays", role: "row" }, WEEK_DAY_NAMES.map(day => (h("div", { class: "hb-date-picker__weekday", role: "columnheader", "aria-disabled": "true" }, day)))), h("div", { key: 'c8dce0eb806e015292e4841d4fe3dd349bc2a52b', class: "hb-date-picker__days", role: "row" }, days.map((day, index) => {
112
164
  const dayDisabled = day.isCurrentMonth && this.isDateDisabled(day.date);
113
165
  return (h("div", { key: index, class: {
114
166
  'hb-date-picker__day': true,
@@ -117,7 +169,33 @@ export class DatePicker {
117
169
  'hb-date-picker__day--selected': day.isSelected,
118
170
  'hb-date-picker__day--disabled': dayDisabled,
119
171
  }, role: "gridcell", "aria-selected": day.isSelected ? 'true' : 'false', "aria-disabled": !day.isCurrentMonth || dayDisabled ? 'true' : undefined, "aria-label": formatDate(day.date, this.format), onClick: () => day.isCurrentMonth && !dayDisabled && this.handleDateSelect(day.date) }, day.date.getDate()));
120
- })))))));
172
+ })))), this.type === 'month' && (h("div", { key: 'ebf1c3935e7c868153823113622e5c08ee0bdffd', class: "hb-date-picker__body hb-date-picker__month-grid", role: "grid" }, MONTH_NAMES.map((name, idx) => {
173
+ const probe = new Date(panelAnchor.getFullYear(), idx, 1);
174
+ const monthDisabled = !!this.disabledDate && this.disabledDate(probe);
175
+ const isSelected = !!this.selectedDate &&
176
+ this.selectedDate.getFullYear() === panelAnchor.getFullYear() &&
177
+ this.selectedDate.getMonth() === idx;
178
+ return (h("div", { class: {
179
+ 'hb-date-picker__month-cell': true,
180
+ 'hb-date-picker__month-cell--selected': isSelected,
181
+ 'hb-date-picker__month-cell--disabled': monthDisabled,
182
+ }, role: "gridcell", "aria-selected": isSelected ? 'true' : 'false', "aria-disabled": monthDisabled ? 'true' : undefined, onClick: () => !monthDisabled && this.handleMonthSelect(idx) }, name));
183
+ }))), this.type === 'year' && (h("div", { key: '1cf9555cc9c65d5a723528948cf5e63cc0e416f5', class: "hb-date-picker__body hb-date-picker__year-grid", role: "grid" }, (() => {
184
+ const startYear = Math.floor(panelAnchor.getFullYear() / 12) * 12;
185
+ const years = [];
186
+ for (let i = 0; i < 12; i++)
187
+ years.push(startYear + i);
188
+ return years.map(y => {
189
+ const probe = new Date(y, 0, 1);
190
+ const yearDisabled = !!this.disabledDate && this.disabledDate(probe);
191
+ const isSelected = !!this.selectedDate && this.selectedDate.getFullYear() === y;
192
+ return (h("div", { class: {
193
+ 'hb-date-picker__year-cell': true,
194
+ 'hb-date-picker__year-cell--selected': isSelected,
195
+ 'hb-date-picker__year-cell--disabled': yearDisabled,
196
+ }, role: "gridcell", "aria-selected": isSelected ? 'true' : 'false', "aria-disabled": yearDisabled ? 'true' : undefined, onClick: () => !yearDisabled && this.handleYearSelect(y) }, y));
197
+ });
198
+ })()))))));
121
199
  }
122
200
  static get is() { return "hb-date-picker"; }
123
201
  static get encapsulation() { return "shadow"; }
@@ -280,21 +358,21 @@ export class DatePicker {
280
358
  "type": "string",
281
359
  "mutable": false,
282
360
  "complexType": {
283
- "original": "\"date\"",
284
- "resolved": "\"date\"",
361
+ "original": "'date' | 'month' | 'year'",
362
+ "resolved": "\"date\" | \"month\" | \"year\"",
285
363
  "references": {}
286
364
  },
287
365
  "required": false,
288
366
  "optional": false,
289
367
  "docs": {
290
368
  "tags": [],
291
- "text": "\u65E5\u671F\u9009\u62E9\u5668\u7C7B\u578B\n\u5F53\u524D\u4EC5\u652F\u6301 'date'\uFF0C\u66F4\u591A\u7C7B\u578B\u5C06\u5728\u540E\u7EED\u7248\u672C\u5B9E\u73B0"
369
+ "text": "\u65E5\u671F\u9009\u62E9\u5668\u7C7B\u578B\uFF1A\n- 'date'\uFF1A\u65E5\u9009\u62E9\uFF08\u9ED8\u8BA4\uFF09\n- 'month'\uFF1A\u6708\u9009\u62E9\uFF08month \u89C6\u56FE\u7F51\u683C\uFF0Cemit YYYY-MM\uFF09\n- 'year'\uFF1A\u5E74\u9009\u62E9\uFF08year \u89C6\u56FE\u7F51\u683C\uFF0Cemit YYYY\uFF09\n\u6CE8\uFF1A'datetime'/'week' \u8BF7\u7528\u72EC\u7ACB\u7684 DateTimePicker \u7EC4\u4EF6 / \u540E\u7EED\u8865\u5168\u3002"
292
370
  },
293
371
  "getter": false,
294
372
  "setter": false,
295
373
  "attribute": "type",
296
374
  "reflect": false,
297
- "defaultValue": "'date' as const"
375
+ "defaultValue": "'date'"
298
376
  },
299
377
  "disabledDate": {
300
378
  "type": "unknown",
@@ -365,7 +443,8 @@ export class DatePicker {
365
443
  return {
366
444
  "isOpen": {},
367
445
  "inputValue": {},
368
- "selectedDate": {}
446
+ "selectedDate": {},
447
+ "panelViewDate": {}
369
448
  };
370
449
  }
371
450
  static get events() {