huibo-ui 0.4.0 → 0.6.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 (661) hide show
  1. package/dist/cjs/{a11y-802de67a.js → a11y-4385c871.js} +17 -2
  2. package/dist/cjs/a11y-4385c871.js.map +1 -0
  3. package/dist/cjs/{date-helpers-1ffddc59.js → date-helpers-c05ef385.js} +5 -16
  4. package/dist/cjs/date-helpers-c05ef385.js.map +1 -0
  5. package/dist/cjs/hb-alert.cjs.entry.js +2 -1
  6. package/dist/cjs/hb-alert.cjs.entry.js.map +1 -1
  7. package/dist/cjs/hb-calendar.cjs.entry.js +2 -2
  8. package/dist/cjs/hb-calendar.cjs.entry.js.map +1 -1
  9. package/dist/cjs/hb-cascader.cjs.entry.js +48 -12
  10. package/dist/cjs/hb-cascader.cjs.entry.js.map +1 -1
  11. package/dist/cjs/hb-checkbox-group.cjs.entry.js +12 -8
  12. package/dist/cjs/hb-checkbox-group.cjs.entry.js.map +1 -1
  13. package/dist/cjs/hb-checkbox.cjs.entry.js +9 -4
  14. package/dist/cjs/hb-checkbox.cjs.entry.js.map +1 -1
  15. package/dist/cjs/hb-collapse-item.cjs.entry.js +13 -4
  16. package/dist/cjs/hb-collapse-item.cjs.entry.js.map +1 -1
  17. package/dist/cjs/hb-collapse.cjs.entry.js +20 -15
  18. package/dist/cjs/hb-collapse.cjs.entry.js.map +1 -1
  19. package/dist/cjs/hb-color-picker.cjs.entry.js +22 -19
  20. package/dist/cjs/hb-color-picker.cjs.entry.js.map +1 -1
  21. package/dist/cjs/hb-date-picker-pane.cjs.entry.js +1 -1
  22. package/dist/cjs/hb-date-picker.cjs.entry.js +13 -10
  23. package/dist/cjs/hb-date-picker.cjs.entry.js.map +1 -1
  24. package/dist/cjs/hb-date-range-picker.cjs.entry.js +1 -1
  25. package/dist/cjs/hb-date-time-picker.cjs.entry.js +1 -1
  26. package/dist/cjs/hb-descriptions.cjs.entry.js.map +1 -1
  27. package/dist/cjs/hb-dialog.cjs.entry.js +51 -12
  28. package/dist/cjs/hb-dialog.cjs.entry.js.map +1 -1
  29. package/dist/cjs/hb-drawer.cjs.entry.js +34 -4
  30. package/dist/cjs/hb-drawer.cjs.entry.js.map +1 -1
  31. package/dist/cjs/hb-dropdown.cjs.entry.js +27 -15
  32. package/dist/cjs/hb-dropdown.cjs.entry.js.map +1 -1
  33. package/dist/cjs/hb-empty.cjs.entry.js +1 -1
  34. package/dist/cjs/hb-float-button.cjs.entry.js +2 -2
  35. package/dist/cjs/hb-form-item.cjs.entry.js +67 -16
  36. package/dist/cjs/hb-form-item.cjs.entry.js.map +1 -1
  37. package/dist/cjs/hb-form.cjs.entry.js +115 -7
  38. package/dist/cjs/hb-form.cjs.entry.js.map +1 -1
  39. package/dist/cjs/hb-image-preview.cjs.entry.js +1 -1
  40. package/dist/cjs/hb-image-preview.cjs.entry.js.map +1 -1
  41. package/dist/cjs/hb-image.cjs.entry.js +21 -3
  42. package/dist/cjs/hb-image.cjs.entry.js.map +1 -1
  43. package/dist/cjs/hb-input-number.cjs.entry.js +7 -7
  44. package/dist/cjs/hb-input-number.cjs.entry.js.map +1 -1
  45. package/dist/cjs/hb-input-tag.cjs.entry.js +2 -2
  46. package/dist/cjs/hb-input.cjs.entry.js +3 -2
  47. package/dist/cjs/hb-input.cjs.entry.js.map +1 -1
  48. package/dist/cjs/hb-layout.cjs.entry.js.map +1 -1
  49. package/dist/cjs/hb-link.cjs.entry.js +2 -2
  50. package/dist/cjs/hb-loading.cjs.entry.js +2 -2
  51. package/dist/cjs/hb-menu-item.cjs.entry.js +14 -5
  52. package/dist/cjs/hb-menu-item.cjs.entry.js.map +1 -1
  53. package/dist/cjs/hb-menu.cjs.entry.js +2 -2
  54. package/dist/cjs/hb-message.cjs.entry.js +13 -4
  55. package/dist/cjs/hb-message.cjs.entry.js.map +1 -1
  56. package/dist/cjs/hb-page-header.cjs.entry.js +1 -1
  57. package/dist/cjs/hb-pagination.cjs.entry.js +8 -5
  58. package/dist/cjs/hb-pagination.cjs.entry.js.map +1 -1
  59. package/dist/cjs/hb-popconfirm.cjs.entry.js +27 -8
  60. package/dist/cjs/hb-popconfirm.cjs.entry.js.map +1 -1
  61. package/dist/cjs/hb-popover.cjs.entry.js +26 -14
  62. package/dist/cjs/hb-popover.cjs.entry.js.map +1 -1
  63. package/dist/cjs/hb-progress.cjs.entry.js +1 -1
  64. package/dist/cjs/hb-radio.cjs.entry.js +8 -3
  65. package/dist/cjs/hb-radio.cjs.entry.js.map +1 -1
  66. package/dist/cjs/hb-rate.cjs.entry.js +3 -3
  67. package/dist/cjs/hb-rate.cjs.entry.js.map +1 -1
  68. package/dist/cjs/hb-row.cjs.entry.js +2 -2
  69. package/dist/cjs/hb-scrollbar.cjs.entry.js +5 -5
  70. package/dist/cjs/hb-scrollbar.cjs.entry.js.map +1 -1
  71. package/dist/cjs/hb-segmented.cjs.entry.js +13 -2
  72. package/dist/cjs/hb-segmented.cjs.entry.js.map +1 -1
  73. package/dist/cjs/hb-select.cjs.entry.js +100 -19
  74. package/dist/cjs/hb-select.cjs.entry.js.map +1 -1
  75. package/dist/cjs/hb-slider.cjs.entry.js +6 -12
  76. package/dist/cjs/hb-slider.cjs.entry.js.map +1 -1
  77. package/dist/cjs/hb-space.cjs.entry.js +2 -2
  78. package/dist/cjs/hb-statistic.cjs.entry.js +1 -1
  79. package/dist/cjs/hb-step.cjs.entry.js +1 -1
  80. package/dist/cjs/hb-steps.cjs.entry.js +3 -3
  81. package/dist/cjs/hb-steps.cjs.entry.js.map +1 -1
  82. package/dist/cjs/hb-sub-menu.cjs.entry.js +5 -5
  83. package/dist/cjs/hb-switch.cjs.entry.js +3 -3
  84. package/dist/cjs/hb-switch.cjs.entry.js.map +1 -1
  85. package/dist/cjs/hb-tab-pane.cjs.entry.js +1 -1
  86. package/dist/cjs/hb-table.cjs.entry.js +218 -41
  87. package/dist/cjs/hb-table.cjs.entry.js.map +1 -1
  88. package/dist/cjs/hb-tabs.cjs.entry.js +31 -10
  89. package/dist/cjs/hb-tabs.cjs.entry.js.map +1 -1
  90. package/dist/cjs/hb-tag.cjs.entry.js +3 -2
  91. package/dist/cjs/hb-tag.cjs.entry.js.map +1 -1
  92. package/dist/cjs/hb-text.cjs.entry.js +2 -2
  93. package/dist/cjs/hb-time-picker.cjs.entry.js +14 -9
  94. package/dist/cjs/hb-time-picker.cjs.entry.js.map +1 -1
  95. package/dist/cjs/hb-time-select.cjs.entry.js +13 -4
  96. package/dist/cjs/hb-time-select.cjs.entry.js.map +1 -1
  97. package/dist/cjs/hb-tooltip.cjs.entry.js +30 -10
  98. package/dist/cjs/hb-tooltip.cjs.entry.js.map +1 -1
  99. package/dist/cjs/hb-tree-select.cjs.entry.js +125 -10
  100. package/dist/cjs/hb-tree-select.cjs.entry.js.map +1 -1
  101. package/dist/cjs/hb-tree.cjs.entry.js +145 -12
  102. package/dist/cjs/hb-tree.cjs.entry.js.map +1 -1
  103. package/dist/cjs/hb-watermark.cjs.entry.js +19 -11
  104. package/dist/cjs/hb-watermark.cjs.entry.js.map +1 -1
  105. package/dist/cjs/huibo-ui.cjs.js +1 -1
  106. package/dist/cjs/loader.cjs.js +1 -1
  107. package/dist/cjs/transition-59f1da0f.js +34 -0
  108. package/dist/cjs/transition-59f1da0f.js.map +1 -0
  109. package/dist/collection/components/Alert/Alert.js +2 -1
  110. package/dist/collection/components/Alert/Alert.js.map +1 -1
  111. package/dist/collection/components/Calendar/Calendar.js +2 -2
  112. package/dist/collection/components/Calendar/Calendar.js.map +1 -1
  113. package/dist/collection/components/Cascader/Cascader.js +47 -11
  114. package/dist/collection/components/Cascader/Cascader.js.map +1 -1
  115. package/dist/collection/components/Checkbox/Checkbox.js +9 -4
  116. package/dist/collection/components/Checkbox/Checkbox.js.map +1 -1
  117. package/dist/collection/components/Checkbox/CheckboxGroup.js +12 -8
  118. package/dist/collection/components/Checkbox/CheckboxGroup.js.map +1 -1
  119. package/dist/collection/components/Collapse/Collapse.js +20 -15
  120. package/dist/collection/components/Collapse/Collapse.js.map +1 -1
  121. package/dist/collection/components/Collapse/CollapseItem.js +33 -4
  122. package/dist/collection/components/Collapse/CollapseItem.js.map +1 -1
  123. package/dist/collection/components/ColorPicker/ColorPicker.js +22 -19
  124. package/dist/collection/components/ColorPicker/ColorPicker.js.map +1 -1
  125. package/dist/collection/components/ColorPicker/color-picker.css +8 -3
  126. package/dist/collection/components/DatePicker/DatePicker.js +12 -9
  127. package/dist/collection/components/DatePicker/DatePicker.js.map +1 -1
  128. package/dist/collection/components/DatePicker/date-picker.css +3 -2
  129. package/dist/collection/components/Descriptions/descriptions.css +30 -10
  130. package/dist/collection/components/Dialog/Dialog.js +54 -10
  131. package/dist/collection/components/Dialog/Dialog.js.map +1 -1
  132. package/dist/collection/components/Dialog/dialog.css +57 -11
  133. package/dist/collection/components/Drawer/Drawer.js +34 -3
  134. package/dist/collection/components/Drawer/Drawer.js.map +1 -1
  135. package/dist/collection/components/Drawer/drawer.css +207 -17
  136. package/dist/collection/components/Dropdown/Dropdown.js +28 -13
  137. package/dist/collection/components/Dropdown/Dropdown.js.map +1 -1
  138. package/dist/collection/components/Dropdown/dropdown.css +24 -2
  139. package/dist/collection/components/Empty/Empty.js +1 -1
  140. package/dist/collection/components/FloatButton/FloatButton.js +2 -2
  141. package/dist/collection/components/Form/Form.js +217 -9
  142. package/dist/collection/components/Form/Form.js.map +1 -1
  143. package/dist/collection/components/Form/FormItem.js +126 -18
  144. package/dist/collection/components/Form/FormItem.js.map +1 -1
  145. package/dist/collection/components/Form/form-item.css +8 -2
  146. package/dist/collection/components/Image/Image.js +24 -3
  147. package/dist/collection/components/Image/Image.js.map +1 -1
  148. package/dist/collection/components/ImagePreview/ImagePreview.js +1 -1
  149. package/dist/collection/components/ImagePreview/ImagePreview.js.map +1 -1
  150. package/dist/collection/components/Input/Input.js +3 -2
  151. package/dist/collection/components/Input/Input.js.map +1 -1
  152. package/dist/collection/components/Input/input.css +1 -2
  153. package/dist/collection/components/InputNumber/InputNumber.js +6 -6
  154. package/dist/collection/components/InputNumber/InputNumber.js.map +1 -1
  155. package/dist/collection/components/InputNumber/input-number.css +11 -1
  156. package/dist/collection/components/InputTag/InputTag.js +2 -2
  157. package/dist/collection/components/Layout/Layout.js.map +1 -1
  158. package/dist/collection/components/Layout/Row.js +2 -2
  159. package/dist/collection/components/Layout/layout.css +1713 -576
  160. package/dist/collection/components/Link/Link.js +2 -2
  161. package/dist/collection/components/Loading/Loading.js +2 -2
  162. package/dist/collection/components/Menu/Menu.js +2 -2
  163. package/dist/collection/components/Menu/MenuItem.js +34 -5
  164. package/dist/collection/components/Menu/MenuItem.js.map +1 -1
  165. package/dist/collection/components/Menu/SubMenu.js +4 -4
  166. package/dist/collection/components/Message/Message.js +13 -4
  167. package/dist/collection/components/Message/Message.js.map +1 -1
  168. package/dist/collection/components/PageHeader/PageHeader.js +1 -1
  169. package/dist/collection/components/Pagination/Pagination.js +8 -5
  170. package/dist/collection/components/Pagination/Pagination.js.map +1 -1
  171. package/dist/collection/components/Popconfirm/Popconfirm.js +28 -6
  172. package/dist/collection/components/Popconfirm/Popconfirm.js.map +1 -1
  173. package/dist/collection/components/Popconfirm/popconfirm.css +80 -16
  174. package/dist/collection/components/Popover/Popover.js +27 -12
  175. package/dist/collection/components/Popover/Popover.js.map +1 -1
  176. package/dist/collection/components/Popover/popover.css +49 -8
  177. package/dist/collection/components/Progress/Progress.js +1 -1
  178. package/dist/collection/components/Radio/Radio.js +8 -3
  179. package/dist/collection/components/Radio/Radio.js.map +1 -1
  180. package/dist/collection/components/Rate/Rate.js +3 -3
  181. package/dist/collection/components/Rate/Rate.js.map +1 -1
  182. package/dist/collection/components/Scrollbar/Scrollbar.js +5 -5
  183. package/dist/collection/components/Scrollbar/Scrollbar.js.map +1 -1
  184. package/dist/collection/components/Segmented/Segmented.js +15 -1
  185. package/dist/collection/components/Segmented/Segmented.js.map +1 -1
  186. package/dist/collection/components/Select/Select.js +123 -19
  187. package/dist/collection/components/Select/Select.js.map +1 -1
  188. package/dist/collection/components/Select/select.css +0 -1
  189. package/dist/collection/components/Slider/Slider.js +6 -12
  190. package/dist/collection/components/Slider/Slider.js.map +1 -1
  191. package/dist/collection/components/Slider/slider.css +0 -1
  192. package/dist/collection/components/Space/Space.js +2 -2
  193. package/dist/collection/components/Statistic/Statistic.js +1 -1
  194. package/dist/collection/components/Steps/Step.js +1 -1
  195. package/dist/collection/components/Steps/Steps.js +2 -2
  196. package/dist/collection/components/Steps/Steps.js.map +1 -1
  197. package/dist/collection/components/Switch/Switch.js +3 -3
  198. package/dist/collection/components/Switch/Switch.js.map +1 -1
  199. package/dist/collection/components/Switch/switch.css +3 -2
  200. package/dist/collection/components/Table/Table.js +296 -41
  201. package/dist/collection/components/Table/Table.js.map +1 -1
  202. package/dist/collection/components/Table/table.css +6 -2
  203. package/dist/collection/components/Tabs/TabPane.js +1 -1
  204. package/dist/collection/components/Tabs/Tabs.js +31 -10
  205. package/dist/collection/components/Tabs/Tabs.js.map +1 -1
  206. package/dist/collection/components/Tag/Tag.js +3 -2
  207. package/dist/collection/components/Tag/Tag.js.map +1 -1
  208. package/dist/collection/components/Text/Text.js +2 -2
  209. package/dist/collection/components/TimePicker/TimePicker.js +14 -9
  210. package/dist/collection/components/TimePicker/TimePicker.js.map +1 -1
  211. package/dist/collection/components/TimeSelect/TimeSelect.js +13 -4
  212. package/dist/collection/components/TimeSelect/TimeSelect.js.map +1 -1
  213. package/dist/collection/components/Tooltip/Tooltip.js +31 -8
  214. package/dist/collection/components/Tooltip/Tooltip.js.map +1 -1
  215. package/dist/collection/components/Tooltip/tooltip.css +24 -2
  216. package/dist/collection/components/Tree/Tree.js +147 -13
  217. package/dist/collection/components/Tree/Tree.js.map +1 -1
  218. package/dist/collection/components/TreeSelect/TreeSelect.js +130 -11
  219. package/dist/collection/components/TreeSelect/TreeSelect.js.map +1 -1
  220. package/dist/collection/components/Watermark/Watermark.js +19 -11
  221. package/dist/collection/components/Watermark/Watermark.js.map +1 -1
  222. package/dist/collection/utils/a11y.js +15 -1
  223. package/dist/collection/utils/a11y.js.map +1 -1
  224. package/dist/collection/utils/date-helpers.js +4 -15
  225. package/dist/collection/utils/date-helpers.js.map +1 -1
  226. package/dist/collection/utils/transition.js +29 -0
  227. package/dist/collection/utils/transition.js.map +1 -0
  228. package/dist/collection/utils/virtual-scroll.js +39 -0
  229. package/dist/collection/utils/virtual-scroll.js.map +1 -0
  230. package/dist/components/hb-alert.js +2 -1
  231. package/dist/components/hb-alert.js.map +1 -1
  232. package/dist/components/hb-calendar.js +2 -2
  233. package/dist/components/hb-calendar.js.map +1 -1
  234. package/dist/components/hb-cascader.js +48 -12
  235. package/dist/components/hb-cascader.js.map +1 -1
  236. package/dist/components/hb-checkbox-group.js +12 -8
  237. package/dist/components/hb-checkbox-group.js.map +1 -1
  238. package/dist/components/hb-checkbox.js +9 -4
  239. package/dist/components/hb-checkbox.js.map +1 -1
  240. package/dist/components/hb-collapse-item.js +14 -4
  241. package/dist/components/hb-collapse-item.js.map +1 -1
  242. package/dist/components/hb-collapse.js +20 -15
  243. package/dist/components/hb-collapse.js.map +1 -1
  244. package/dist/components/hb-color-picker.js +22 -19
  245. package/dist/components/hb-color-picker.js.map +1 -1
  246. package/dist/components/hb-date-picker-pane.js +1 -1
  247. package/dist/components/hb-date-picker.js +13 -10
  248. package/dist/components/hb-date-picker.js.map +1 -1
  249. package/dist/components/hb-date-range-picker.js +1 -1
  250. package/dist/components/hb-date-time-picker.js +1 -1
  251. package/dist/components/hb-descriptions.js.map +1 -1
  252. package/dist/components/hb-dialog.js +53 -13
  253. package/dist/components/hb-dialog.js.map +1 -1
  254. package/dist/components/hb-drawer.js +36 -5
  255. package/dist/components/hb-drawer.js.map +1 -1
  256. package/dist/components/hb-dropdown.js +28 -15
  257. package/dist/components/hb-dropdown.js.map +1 -1
  258. package/dist/components/hb-empty.js +1 -1
  259. package/dist/components/hb-float-button.js +2 -2
  260. package/dist/components/hb-form-item.js +70 -16
  261. package/dist/components/hb-form-item.js.map +1 -1
  262. package/dist/components/hb-form.js +120 -7
  263. package/dist/components/hb-form.js.map +1 -1
  264. package/dist/components/hb-image-preview.js +1 -1
  265. package/dist/components/hb-image-preview.js.map +1 -1
  266. package/dist/components/hb-image.js +23 -3
  267. package/dist/components/hb-image.js.map +1 -1
  268. package/dist/components/hb-input-number.js +7 -7
  269. package/dist/components/hb-input-number.js.map +1 -1
  270. package/dist/components/hb-input-tag.js +2 -2
  271. package/dist/components/hb-input.js +3 -2
  272. package/dist/components/hb-input.js.map +1 -1
  273. package/dist/components/hb-layout.js.map +1 -1
  274. package/dist/components/hb-link.js +2 -2
  275. package/dist/components/hb-loading.js +2 -2
  276. package/dist/components/hb-menu-item.js +15 -5
  277. package/dist/components/hb-menu-item.js.map +1 -1
  278. package/dist/components/hb-menu.js +2 -2
  279. package/dist/components/hb-message.js +13 -4
  280. package/dist/components/hb-message.js.map +1 -1
  281. package/dist/components/hb-page-header.js +1 -1
  282. package/dist/components/hb-pagination.js +8 -5
  283. package/dist/components/hb-pagination.js.map +1 -1
  284. package/dist/components/hb-popconfirm.js +28 -8
  285. package/dist/components/hb-popconfirm.js.map +1 -1
  286. package/dist/components/hb-popover.js +27 -14
  287. package/dist/components/hb-popover.js.map +1 -1
  288. package/dist/components/hb-progress.js +1 -1
  289. package/dist/components/hb-radio.js +8 -3
  290. package/dist/components/hb-radio.js.map +1 -1
  291. package/dist/components/hb-rate.js +3 -3
  292. package/dist/components/hb-rate.js.map +1 -1
  293. package/dist/components/hb-row.js +2 -2
  294. package/dist/components/hb-scrollbar.js +5 -5
  295. package/dist/components/hb-scrollbar.js.map +1 -1
  296. package/dist/components/hb-segmented.js +15 -2
  297. package/dist/components/hb-segmented.js.map +1 -1
  298. package/dist/components/hb-select.js +105 -20
  299. package/dist/components/hb-select.js.map +1 -1
  300. package/dist/components/hb-slider.js +6 -12
  301. package/dist/components/hb-slider.js.map +1 -1
  302. package/dist/components/hb-space.js +2 -2
  303. package/dist/components/hb-statistic.js +1 -1
  304. package/dist/components/hb-step.js +1 -1
  305. package/dist/components/hb-steps.js +3 -3
  306. package/dist/components/hb-steps.js.map +1 -1
  307. package/dist/components/hb-sub-menu.js +5 -5
  308. package/dist/components/hb-switch.js +3 -3
  309. package/dist/components/hb-switch.js.map +1 -1
  310. package/dist/components/hb-tab-pane.js +1 -1
  311. package/dist/components/hb-table.js +226 -43
  312. package/dist/components/hb-table.js.map +1 -1
  313. package/dist/components/hb-tabs.js +31 -10
  314. package/dist/components/hb-tabs.js.map +1 -1
  315. package/dist/components/hb-tag.js +3 -2
  316. package/dist/components/hb-tag.js.map +1 -1
  317. package/dist/components/hb-text.js +2 -2
  318. package/dist/components/hb-time-picker.js +14 -9
  319. package/dist/components/hb-time-picker.js.map +1 -1
  320. package/dist/components/hb-time-select.js +13 -4
  321. package/dist/components/hb-time-select.js.map +1 -1
  322. package/dist/components/hb-tooltip.js +31 -10
  323. package/dist/components/hb-tooltip.js.map +1 -1
  324. package/dist/components/hb-tree-select.js +129 -11
  325. package/dist/components/hb-tree-select.js.map +1 -1
  326. package/dist/components/hb-tree.js +147 -13
  327. package/dist/components/hb-tree.js.map +1 -1
  328. package/dist/components/hb-watermark.js +19 -11
  329. package/dist/components/hb-watermark.js.map +1 -1
  330. package/dist/{esm/a11y-f9ab2964.js → components/p-00aa34c8.js} +17 -3
  331. package/dist/components/p-00aa34c8.js.map +1 -0
  332. package/dist/components/{p-08b4005c.js → p-e0876aca.js} +5 -16
  333. package/dist/components/p-e0876aca.js.map +1 -0
  334. package/dist/components/p-fad66d69.js +32 -0
  335. package/dist/components/p-fad66d69.js.map +1 -0
  336. package/dist/{components/p-cc0aeb50.js → esm/a11y-e4cde5b0.js} +17 -3
  337. package/dist/esm/a11y-e4cde5b0.js.map +1 -0
  338. package/dist/esm/{date-helpers-44507189.js → date-helpers-259ed2f1.js} +5 -16
  339. package/dist/esm/date-helpers-259ed2f1.js.map +1 -0
  340. package/dist/esm/hb-alert.entry.js +2 -1
  341. package/dist/esm/hb-alert.entry.js.map +1 -1
  342. package/dist/esm/hb-calendar.entry.js +2 -2
  343. package/dist/esm/hb-calendar.entry.js.map +1 -1
  344. package/dist/esm/hb-cascader.entry.js +48 -12
  345. package/dist/esm/hb-cascader.entry.js.map +1 -1
  346. package/dist/esm/hb-checkbox-group.entry.js +12 -8
  347. package/dist/esm/hb-checkbox-group.entry.js.map +1 -1
  348. package/dist/esm/hb-checkbox.entry.js +9 -4
  349. package/dist/esm/hb-checkbox.entry.js.map +1 -1
  350. package/dist/esm/hb-collapse-item.entry.js +13 -4
  351. package/dist/esm/hb-collapse-item.entry.js.map +1 -1
  352. package/dist/esm/hb-collapse.entry.js +20 -15
  353. package/dist/esm/hb-collapse.entry.js.map +1 -1
  354. package/dist/esm/hb-color-picker.entry.js +22 -19
  355. package/dist/esm/hb-color-picker.entry.js.map +1 -1
  356. package/dist/esm/hb-date-picker-pane.entry.js +1 -1
  357. package/dist/esm/hb-date-picker.entry.js +13 -10
  358. package/dist/esm/hb-date-picker.entry.js.map +1 -1
  359. package/dist/esm/hb-date-range-picker.entry.js +1 -1
  360. package/dist/esm/hb-date-time-picker.entry.js +1 -1
  361. package/dist/esm/hb-descriptions.entry.js.map +1 -1
  362. package/dist/esm/hb-dialog.entry.js +51 -12
  363. package/dist/esm/hb-dialog.entry.js.map +1 -1
  364. package/dist/esm/hb-drawer.entry.js +34 -4
  365. package/dist/esm/hb-drawer.entry.js.map +1 -1
  366. package/dist/esm/hb-dropdown.entry.js +27 -15
  367. package/dist/esm/hb-dropdown.entry.js.map +1 -1
  368. package/dist/esm/hb-empty.entry.js +1 -1
  369. package/dist/esm/hb-float-button.entry.js +2 -2
  370. package/dist/esm/hb-form-item.entry.js +67 -16
  371. package/dist/esm/hb-form-item.entry.js.map +1 -1
  372. package/dist/esm/hb-form.entry.js +115 -7
  373. package/dist/esm/hb-form.entry.js.map +1 -1
  374. package/dist/esm/hb-image-preview.entry.js +1 -1
  375. package/dist/esm/hb-image-preview.entry.js.map +1 -1
  376. package/dist/esm/hb-image.entry.js +21 -3
  377. package/dist/esm/hb-image.entry.js.map +1 -1
  378. package/dist/esm/hb-input-number.entry.js +7 -7
  379. package/dist/esm/hb-input-number.entry.js.map +1 -1
  380. package/dist/esm/hb-input-tag.entry.js +2 -2
  381. package/dist/esm/hb-input.entry.js +3 -2
  382. package/dist/esm/hb-input.entry.js.map +1 -1
  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-menu-item.entry.js +14 -5
  387. package/dist/esm/hb-menu-item.entry.js.map +1 -1
  388. package/dist/esm/hb-menu.entry.js +2 -2
  389. package/dist/esm/hb-message.entry.js +13 -4
  390. package/dist/esm/hb-message.entry.js.map +1 -1
  391. package/dist/esm/hb-page-header.entry.js +1 -1
  392. package/dist/esm/hb-pagination.entry.js +8 -5
  393. package/dist/esm/hb-pagination.entry.js.map +1 -1
  394. package/dist/esm/hb-popconfirm.entry.js +27 -8
  395. package/dist/esm/hb-popconfirm.entry.js.map +1 -1
  396. package/dist/esm/hb-popover.entry.js +26 -14
  397. package/dist/esm/hb-popover.entry.js.map +1 -1
  398. package/dist/esm/hb-progress.entry.js +1 -1
  399. package/dist/esm/hb-radio.entry.js +8 -3
  400. package/dist/esm/hb-radio.entry.js.map +1 -1
  401. package/dist/esm/hb-rate.entry.js +3 -3
  402. package/dist/esm/hb-rate.entry.js.map +1 -1
  403. package/dist/esm/hb-row.entry.js +2 -2
  404. package/dist/esm/hb-scrollbar.entry.js +5 -5
  405. package/dist/esm/hb-scrollbar.entry.js.map +1 -1
  406. package/dist/esm/hb-segmented.entry.js +13 -2
  407. package/dist/esm/hb-segmented.entry.js.map +1 -1
  408. package/dist/esm/hb-select.entry.js +100 -19
  409. package/dist/esm/hb-select.entry.js.map +1 -1
  410. package/dist/esm/hb-slider.entry.js +6 -12
  411. package/dist/esm/hb-slider.entry.js.map +1 -1
  412. package/dist/esm/hb-space.entry.js +2 -2
  413. package/dist/esm/hb-statistic.entry.js +1 -1
  414. package/dist/esm/hb-step.entry.js +1 -1
  415. package/dist/esm/hb-steps.entry.js +3 -3
  416. package/dist/esm/hb-steps.entry.js.map +1 -1
  417. package/dist/esm/hb-sub-menu.entry.js +5 -5
  418. package/dist/esm/hb-switch.entry.js +3 -3
  419. package/dist/esm/hb-switch.entry.js.map +1 -1
  420. package/dist/esm/hb-tab-pane.entry.js +1 -1
  421. package/dist/esm/hb-table.entry.js +218 -41
  422. package/dist/esm/hb-table.entry.js.map +1 -1
  423. package/dist/esm/hb-tabs.entry.js +31 -10
  424. package/dist/esm/hb-tabs.entry.js.map +1 -1
  425. package/dist/esm/hb-tag.entry.js +3 -2
  426. package/dist/esm/hb-tag.entry.js.map +1 -1
  427. package/dist/esm/hb-text.entry.js +2 -2
  428. package/dist/esm/hb-time-picker.entry.js +14 -9
  429. package/dist/esm/hb-time-picker.entry.js.map +1 -1
  430. package/dist/esm/hb-time-select.entry.js +13 -4
  431. package/dist/esm/hb-time-select.entry.js.map +1 -1
  432. package/dist/esm/hb-tooltip.entry.js +30 -10
  433. package/dist/esm/hb-tooltip.entry.js.map +1 -1
  434. package/dist/esm/hb-tree-select.entry.js +125 -10
  435. package/dist/esm/hb-tree-select.entry.js.map +1 -1
  436. package/dist/esm/hb-tree.entry.js +145 -12
  437. package/dist/esm/hb-tree.entry.js.map +1 -1
  438. package/dist/esm/hb-watermark.entry.js +19 -11
  439. package/dist/esm/hb-watermark.entry.js.map +1 -1
  440. package/dist/esm/huibo-ui.js +1 -1
  441. package/dist/esm/loader.js +1 -1
  442. package/dist/esm/transition-4295d789.js +32 -0
  443. package/dist/esm/transition-4295d789.js.map +1 -0
  444. package/dist/huibo-ui/huibo-ui.esm.js +1 -1
  445. package/dist/huibo-ui/huibo-ui.esm.js.map +1 -1
  446. package/dist/huibo-ui/p-00aa34c8.js +2 -0
  447. package/dist/huibo-ui/p-00aa34c8.js.map +1 -0
  448. package/dist/huibo-ui/p-0cc1e3f3.entry.js +2 -0
  449. package/dist/huibo-ui/p-0cc1e3f3.entry.js.map +1 -0
  450. package/dist/huibo-ui/{p-678b4212.entry.js → p-0ddae4e9.entry.js} +2 -2
  451. package/dist/huibo-ui/p-10f6c184.entry.js.map +1 -1
  452. package/dist/huibo-ui/{p-f4336be9.entry.js → p-14c3b47b.entry.js} +2 -2
  453. package/dist/huibo-ui/{p-c50ad398.entry.js → p-193efdc0.entry.js} +2 -2
  454. package/dist/huibo-ui/{p-735bceef.entry.js → p-1b98152b.entry.js} +2 -2
  455. package/dist/huibo-ui/p-1b98152b.entry.js.map +1 -0
  456. package/dist/huibo-ui/p-1f6d0adb.entry.js +2 -0
  457. package/dist/huibo-ui/p-1f6d0adb.entry.js.map +1 -0
  458. package/dist/huibo-ui/{p-0d4b2997.entry.js → p-2bcda1bb.entry.js} +2 -2
  459. package/dist/huibo-ui/{p-b8d87f7e.entry.js → p-2ca9796a.entry.js} +2 -2
  460. package/dist/huibo-ui/p-2ca9796a.entry.js.map +1 -0
  461. package/dist/huibo-ui/{p-c80f8ace.entry.js → p-2cf5bf20.entry.js} +2 -2
  462. package/dist/huibo-ui/p-2cf5bf20.entry.js.map +1 -0
  463. package/dist/huibo-ui/{p-7da14d7c.entry.js → p-3042f986.entry.js} +2 -2
  464. package/dist/huibo-ui/{p-e039155d.entry.js → p-3dacb26b.entry.js} +2 -2
  465. package/dist/huibo-ui/{p-a084b8e5.entry.js → p-412ff618.entry.js} +2 -2
  466. package/dist/huibo-ui/p-4148d875.entry.js +2 -0
  467. package/dist/huibo-ui/p-4148d875.entry.js.map +1 -0
  468. package/dist/huibo-ui/{p-6beb5b81.entry.js → p-415295f3.entry.js} +2 -2
  469. package/dist/huibo-ui/p-415295f3.entry.js.map +1 -0
  470. package/dist/huibo-ui/p-494e6c25.entry.js +2 -0
  471. package/dist/huibo-ui/p-494e6c25.entry.js.map +1 -0
  472. package/dist/huibo-ui/p-4d87d7f4.entry.js +2 -0
  473. package/dist/huibo-ui/p-4d87d7f4.entry.js.map +1 -0
  474. package/dist/huibo-ui/p-5e253c15.entry.js +2 -0
  475. package/dist/huibo-ui/p-5e253c15.entry.js.map +1 -0
  476. package/dist/huibo-ui/p-63d68c61.entry.js +2 -0
  477. package/dist/huibo-ui/p-63d68c61.entry.js.map +1 -0
  478. package/dist/huibo-ui/{p-ccd09d5a.entry.js → p-6518c435.entry.js} +2 -2
  479. package/dist/huibo-ui/{p-1f8db37a.entry.js → p-687d8dff.entry.js} +2 -2
  480. package/dist/huibo-ui/p-687d8dff.entry.js.map +1 -0
  481. package/dist/huibo-ui/p-688460ce.entry.js +2 -0
  482. package/dist/huibo-ui/p-688460ce.entry.js.map +1 -0
  483. package/dist/huibo-ui/p-69bb1dd9.entry.js +2 -0
  484. package/dist/huibo-ui/p-69bb1dd9.entry.js.map +1 -0
  485. package/dist/huibo-ui/{p-2811e603.entry.js → p-6bfe1954.entry.js} +2 -2
  486. package/dist/huibo-ui/p-6bfe1954.entry.js.map +1 -0
  487. package/dist/huibo-ui/{p-e5cbfa9e.entry.js → p-6c23fbd1.entry.js} +2 -2
  488. package/dist/huibo-ui/p-6c23fbd1.entry.js.map +1 -0
  489. package/dist/huibo-ui/p-6c8cf248.entry.js.map +1 -1
  490. package/dist/huibo-ui/p-6efed295.entry.js +2 -0
  491. package/dist/huibo-ui/p-6efed295.entry.js.map +1 -0
  492. package/dist/huibo-ui/p-7a38b3e2.entry.js +2 -0
  493. package/dist/huibo-ui/p-7a38b3e2.entry.js.map +1 -0
  494. package/dist/huibo-ui/{p-cad57c2d.entry.js → p-7a682c56.entry.js} +2 -2
  495. package/dist/huibo-ui/{p-a8996d22.entry.js → p-815fc943.entry.js} +2 -2
  496. package/dist/huibo-ui/{p-af74667d.entry.js → p-89be7973.entry.js} +2 -2
  497. package/dist/huibo-ui/p-8a202bc5.entry.js.map +1 -1
  498. package/dist/huibo-ui/{p-213b9de7.entry.js → p-8c4415ed.entry.js} +2 -2
  499. package/dist/huibo-ui/p-8c4415ed.entry.js.map +1 -0
  500. package/dist/huibo-ui/{p-8fdbd17c.entry.js → p-950e7465.entry.js} +2 -2
  501. package/dist/huibo-ui/{p-ab9cf0e4.entry.js → p-96cecd21.entry.js} +2 -2
  502. package/dist/huibo-ui/p-96cecd21.entry.js.map +1 -0
  503. package/dist/huibo-ui/{p-2b4556ff.entry.js → p-98b513cd.entry.js} +2 -2
  504. package/dist/huibo-ui/p-98b513cd.entry.js.map +1 -0
  505. package/dist/huibo-ui/{p-89ea1141.entry.js → p-ac45291c.entry.js} +2 -2
  506. package/dist/huibo-ui/{p-e10fcfbe.entry.js → p-b105cf76.entry.js} +2 -2
  507. package/dist/huibo-ui/p-b105cf76.entry.js.map +1 -0
  508. package/dist/huibo-ui/{p-9a5406f0.entry.js → p-b38802b0.entry.js} +2 -2
  509. package/dist/huibo-ui/{p-9a5406f0.entry.js.map → p-b38802b0.entry.js.map} +1 -1
  510. package/dist/huibo-ui/{p-ea74fcae.entry.js → p-b3fd12c7.entry.js} +2 -2
  511. package/dist/huibo-ui/p-b3fd12c7.entry.js.map +1 -0
  512. package/dist/huibo-ui/p-b5ea18ba.entry.js +2 -0
  513. package/dist/huibo-ui/p-b5ea18ba.entry.js.map +1 -0
  514. package/dist/huibo-ui/{p-41d9c846.entry.js → p-b6afe81e.entry.js} +2 -2
  515. package/dist/huibo-ui/p-b7900dee.entry.js +2 -0
  516. package/dist/huibo-ui/p-b7900dee.entry.js.map +1 -0
  517. package/dist/huibo-ui/p-b8c83751.entry.js +2 -0
  518. package/dist/huibo-ui/p-b8c83751.entry.js.map +1 -0
  519. package/dist/huibo-ui/p-c7713947.entry.js +2 -0
  520. package/dist/huibo-ui/p-c7713947.entry.js.map +1 -0
  521. package/dist/huibo-ui/{p-33de6878.entry.js → p-c869842c.entry.js} +2 -2
  522. package/dist/huibo-ui/p-c869842c.entry.js.map +1 -0
  523. package/dist/huibo-ui/p-c8e917db.entry.js.map +1 -1
  524. package/dist/huibo-ui/p-cb66dbef.entry.js +2 -0
  525. package/dist/huibo-ui/p-cb66dbef.entry.js.map +1 -0
  526. package/dist/huibo-ui/p-cde83f76.entry.js +2 -0
  527. package/dist/huibo-ui/p-cde83f76.entry.js.map +1 -0
  528. package/dist/huibo-ui/{p-f5969181.entry.js → p-dd9c6459.entry.js} +2 -2
  529. package/dist/huibo-ui/{p-08b4005c.js → p-e0876aca.js} +1 -1
  530. package/dist/huibo-ui/p-e0876aca.js.map +1 -0
  531. package/dist/huibo-ui/{p-aa5e5e02.entry.js → p-e1773c93.entry.js} +2 -2
  532. package/dist/huibo-ui/p-e1773c93.entry.js.map +1 -0
  533. package/dist/huibo-ui/{p-626b48f1.entry.js → p-e73c357f.entry.js} +2 -2
  534. package/dist/huibo-ui/p-e73c357f.entry.js.map +1 -0
  535. package/dist/huibo-ui/{p-60532a1f.entry.js → p-e7c73624.entry.js} +2 -2
  536. package/dist/huibo-ui/p-e7c73624.entry.js.map +1 -0
  537. package/dist/huibo-ui/{p-86bdc48a.entry.js → p-e8824b2c.entry.js} +2 -2
  538. package/dist/huibo-ui/p-e8824b2c.entry.js.map +1 -0
  539. package/dist/huibo-ui/{p-13010da2.entry.js → p-e9e7abca.entry.js} +2 -2
  540. package/dist/huibo-ui/{p-f6889710.entry.js → p-ea0823f3.entry.js} +2 -2
  541. package/dist/huibo-ui/p-ea0823f3.entry.js.map +1 -0
  542. package/dist/huibo-ui/{p-b468858e.entry.js → p-f1f2483f.entry.js} +2 -2
  543. package/dist/huibo-ui/p-f69599fa.entry.js +2 -0
  544. package/dist/huibo-ui/p-f69599fa.entry.js.map +1 -0
  545. package/dist/huibo-ui/p-fad66d69.js +2 -0
  546. package/dist/huibo-ui/p-fad66d69.js.map +1 -0
  547. package/dist/huibo-ui/{p-fd8301c6.entry.js → p-fd6831f9.entry.js} +2 -2
  548. package/dist/huibo-ui/p-ff6bc5cc.entry.js +2 -0
  549. package/dist/huibo-ui/p-ff6bc5cc.entry.js.map +1 -0
  550. package/dist/types/components/Cascader/Cascader.d.ts +12 -0
  551. package/dist/types/components/Checkbox/Checkbox.d.ts +5 -0
  552. package/dist/types/components/Checkbox/CheckboxGroup.d.ts +1 -0
  553. package/dist/types/components/Collapse/Collapse.d.ts +2 -0
  554. package/dist/types/components/Collapse/CollapseItem.d.ts +8 -1
  555. package/dist/types/components/Dialog/Dialog.d.ts +13 -1
  556. package/dist/types/components/Drawer/Drawer.d.ts +4 -0
  557. package/dist/types/components/Dropdown/Dropdown.d.ts +6 -2
  558. package/dist/types/components/Form/Form.d.ts +59 -0
  559. package/dist/types/components/Form/FormItem.d.ts +23 -0
  560. package/dist/types/components/Image/Image.d.ts +6 -0
  561. package/dist/types/components/Menu/MenuItem.d.ts +8 -1
  562. package/dist/types/components/Message/Message.d.ts +3 -0
  563. package/dist/types/components/Popconfirm/Popconfirm.d.ts +6 -2
  564. package/dist/types/components/Popover/Popover.d.ts +6 -1
  565. package/dist/types/components/Radio/Radio.d.ts +5 -0
  566. package/dist/types/components/Segmented/Segmented.d.ts +6 -0
  567. package/dist/types/components/Select/Select.d.ts +24 -0
  568. package/dist/types/components/Table/Table.d.ts +110 -9
  569. package/dist/types/components/Tabs/Tabs.d.ts +6 -0
  570. package/dist/types/components/Tooltip/Tooltip.d.ts +6 -0
  571. package/dist/types/components/Tree/Tree.d.ts +24 -0
  572. package/dist/types/components/TreeSelect/TreeSelect.d.ts +17 -0
  573. package/dist/types/components/Watermark/Watermark.d.ts +7 -1
  574. package/dist/types/components.d.ts +188 -6
  575. package/dist/types/utils/a11y.d.ts +9 -0
  576. package/dist/types/utils/transition.d.ts +27 -0
  577. package/dist/types/utils/virtual-scroll.d.ts +38 -0
  578. package/package.json +1 -1
  579. package/dist/cjs/a11y-802de67a.js.map +0 -1
  580. package/dist/cjs/date-helpers-1ffddc59.js.map +0 -1
  581. package/dist/components/p-08b4005c.js.map +0 -1
  582. package/dist/components/p-cc0aeb50.js.map +0 -1
  583. package/dist/esm/a11y-f9ab2964.js.map +0 -1
  584. package/dist/esm/date-helpers-44507189.js.map +0 -1
  585. package/dist/huibo-ui/p-08b4005c.js.map +0 -1
  586. package/dist/huibo-ui/p-1f8db37a.entry.js.map +0 -1
  587. package/dist/huibo-ui/p-213b9de7.entry.js.map +0 -1
  588. package/dist/huibo-ui/p-25fd7d5c.entry.js +0 -2
  589. package/dist/huibo-ui/p-25fd7d5c.entry.js.map +0 -1
  590. package/dist/huibo-ui/p-2811e603.entry.js.map +0 -1
  591. package/dist/huibo-ui/p-2943f5d0.entry.js +0 -2
  592. package/dist/huibo-ui/p-2943f5d0.entry.js.map +0 -1
  593. package/dist/huibo-ui/p-2b4556ff.entry.js.map +0 -1
  594. package/dist/huibo-ui/p-33de6878.entry.js.map +0 -1
  595. package/dist/huibo-ui/p-3807da71.entry.js +0 -2
  596. package/dist/huibo-ui/p-3807da71.entry.js.map +0 -1
  597. package/dist/huibo-ui/p-47ef7a86.entry.js +0 -2
  598. package/dist/huibo-ui/p-47ef7a86.entry.js.map +0 -1
  599. package/dist/huibo-ui/p-4d34e43e.entry.js +0 -2
  600. package/dist/huibo-ui/p-4d34e43e.entry.js.map +0 -1
  601. package/dist/huibo-ui/p-54aa2fd8.entry.js +0 -2
  602. package/dist/huibo-ui/p-54aa2fd8.entry.js.map +0 -1
  603. package/dist/huibo-ui/p-60532a1f.entry.js.map +0 -1
  604. package/dist/huibo-ui/p-626b48f1.entry.js.map +0 -1
  605. package/dist/huibo-ui/p-639f167d.entry.js +0 -2
  606. package/dist/huibo-ui/p-639f167d.entry.js.map +0 -1
  607. package/dist/huibo-ui/p-6beb5b81.entry.js.map +0 -1
  608. package/dist/huibo-ui/p-735bceef.entry.js.map +0 -1
  609. package/dist/huibo-ui/p-76519752.entry.js +0 -2
  610. package/dist/huibo-ui/p-76519752.entry.js.map +0 -1
  611. package/dist/huibo-ui/p-79af2efa.entry.js +0 -2
  612. package/dist/huibo-ui/p-79af2efa.entry.js.map +0 -1
  613. package/dist/huibo-ui/p-7f6975ad.entry.js +0 -2
  614. package/dist/huibo-ui/p-7f6975ad.entry.js.map +0 -1
  615. package/dist/huibo-ui/p-86bdc48a.entry.js.map +0 -1
  616. package/dist/huibo-ui/p-8a8443b8.entry.js +0 -2
  617. package/dist/huibo-ui/p-8a8443b8.entry.js.map +0 -1
  618. package/dist/huibo-ui/p-8fd788c9.entry.js +0 -2
  619. package/dist/huibo-ui/p-8fd788c9.entry.js.map +0 -1
  620. package/dist/huibo-ui/p-92521c31.entry.js +0 -2
  621. package/dist/huibo-ui/p-92521c31.entry.js.map +0 -1
  622. package/dist/huibo-ui/p-965d4d02.entry.js +0 -2
  623. package/dist/huibo-ui/p-965d4d02.entry.js.map +0 -1
  624. package/dist/huibo-ui/p-aa5e5e02.entry.js.map +0 -1
  625. package/dist/huibo-ui/p-ab9cf0e4.entry.js.map +0 -1
  626. package/dist/huibo-ui/p-b8d87f7e.entry.js.map +0 -1
  627. package/dist/huibo-ui/p-c6c91664.entry.js +0 -2
  628. package/dist/huibo-ui/p-c6c91664.entry.js.map +0 -1
  629. package/dist/huibo-ui/p-c80f8ace.entry.js.map +0 -1
  630. package/dist/huibo-ui/p-cc0aeb50.js +0 -2
  631. package/dist/huibo-ui/p-cc0aeb50.js.map +0 -1
  632. package/dist/huibo-ui/p-d79a15b1.entry.js +0 -2
  633. package/dist/huibo-ui/p-d79a15b1.entry.js.map +0 -1
  634. package/dist/huibo-ui/p-e10fcfbe.entry.js.map +0 -1
  635. package/dist/huibo-ui/p-e5cbfa9e.entry.js.map +0 -1
  636. package/dist/huibo-ui/p-ea74fcae.entry.js.map +0 -1
  637. package/dist/huibo-ui/p-edbda423.entry.js +0 -2
  638. package/dist/huibo-ui/p-edbda423.entry.js.map +0 -1
  639. package/dist/huibo-ui/p-f6889710.entry.js.map +0 -1
  640. package/dist/huibo-ui/p-f9bb5217.entry.js +0 -2
  641. package/dist/huibo-ui/p-f9bb5217.entry.js.map +0 -1
  642. package/dist/huibo-ui/p-fea20295.entry.js +0 -2
  643. package/dist/huibo-ui/p-fea20295.entry.js.map +0 -1
  644. /package/dist/huibo-ui/{p-678b4212.entry.js.map → p-0ddae4e9.entry.js.map} +0 -0
  645. /package/dist/huibo-ui/{p-f4336be9.entry.js.map → p-14c3b47b.entry.js.map} +0 -0
  646. /package/dist/huibo-ui/{p-c50ad398.entry.js.map → p-193efdc0.entry.js.map} +0 -0
  647. /package/dist/huibo-ui/{p-0d4b2997.entry.js.map → p-2bcda1bb.entry.js.map} +0 -0
  648. /package/dist/huibo-ui/{p-7da14d7c.entry.js.map → p-3042f986.entry.js.map} +0 -0
  649. /package/dist/huibo-ui/{p-e039155d.entry.js.map → p-3dacb26b.entry.js.map} +0 -0
  650. /package/dist/huibo-ui/{p-a084b8e5.entry.js.map → p-412ff618.entry.js.map} +0 -0
  651. /package/dist/huibo-ui/{p-ccd09d5a.entry.js.map → p-6518c435.entry.js.map} +0 -0
  652. /package/dist/huibo-ui/{p-cad57c2d.entry.js.map → p-7a682c56.entry.js.map} +0 -0
  653. /package/dist/huibo-ui/{p-a8996d22.entry.js.map → p-815fc943.entry.js.map} +0 -0
  654. /package/dist/huibo-ui/{p-af74667d.entry.js.map → p-89be7973.entry.js.map} +0 -0
  655. /package/dist/huibo-ui/{p-8fdbd17c.entry.js.map → p-950e7465.entry.js.map} +0 -0
  656. /package/dist/huibo-ui/{p-89ea1141.entry.js.map → p-ac45291c.entry.js.map} +0 -0
  657. /package/dist/huibo-ui/{p-41d9c846.entry.js.map → p-b6afe81e.entry.js.map} +0 -0
  658. /package/dist/huibo-ui/{p-f5969181.entry.js.map → p-dd9c6459.entry.js.map} +0 -0
  659. /package/dist/huibo-ui/{p-13010da2.entry.js.map → p-e9e7abca.entry.js.map} +0 -0
  660. /package/dist/huibo-ui/{p-b468858e.entry.js.map → p-f1f2483f.entry.js.map} +0 -0
  661. /package/dist/huibo-ui/{p-fd8301c6.entry.js.map → p-fd6831f9.entry.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"names":["datePickerCss","HbDatePickerStyle0","DatePicker","modelValue","placeholder","disabled","size","clearable","format","valueFormat","type","disabledDate","name","inputId","isOpen","inputValue","selectedDate","panelViewDate","Date","hbChange","clickOutside","createClickOutsideHandler","host","this","onClose","componentDidLoad","el","connect","updateInputValue","disconnectedCallback","disconnect","handleValueChange","date","parseDate","undefined","formatDate","handleInputClick","handleClear","e","stopPropagation","emit","handleDateSelect","handleMonthSelect","monthIndex","next","getFullYear","iso","String","padStart","handleYearSelect","year","changeMonth","delta","addMonths","changePanelView","setFullYear","isDateDisabled","render","days","getCalendarDays","current","panelAnchor","headerLabel","Math","floor","MONTH_NAMES","getMonth","h","key","class","onClick","id","value","readonly","role","viewBox","fill","stroke","d","x","y","width","height","rx","WEEK_DAY_NAMES","map","day","index","dayDisabled","isCurrentMonth","isToday","isSelected","getDate","idx","probe","monthDisabled","startYear","years","i","push","yearDisabled"],"sources":["src/components/DatePicker/date-picker.css?tag=hb-date-picker&encapsulation=shadow","src/components/DatePicker/DatePicker.tsx"],"sourcesContent":[":host {\n display: inline-block;\n position: relative;\n --hb-date-picker-font-size: 14px;\n --hb-date-picker-height: 32px;\n --hb-date-picker-border-color: var(--hb-border-color, #dcdfe6);\n --hb-date-picker-border-color-hover: var(--hb-color-primary);\n --hb-date-picker-bg-color: var(--hb-color-white, #ffffff);\n}\n\n.hb-date-picker {\n display: inline-block;\n position: relative;\n width: 240px;\n}\n\n.hb-date-picker__input-wrapper {\n position: relative;\n display: inline-block;\n width: 100%;\n cursor: pointer;\n}\n\n.hb-date-picker__input {\n display: inline-block;\n width: 100%;\n height: var(--hb-date-picker-height);\n line-height: var(--hb-date-picker-height);\n padding: 0 30px 0 15px;\n font-size: var(--hb-date-picker-font-size);\n color: var(--hb-color-text-regular, #606266);\n background-color: var(--hb-date-picker-bg-color);\n border: 1px solid var(--hb-date-picker-border-color);\n border-radius: 4px;\n box-sizing: border-box;\n cursor: pointer;\n outline: none;\n transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);\n}\n\n.hb-date-picker__input:hover:not(:disabled) {\n border-color: var(--hb-date-picker-border-color-hover);\n}\n\n.hb-date-picker__input:focus {\n border-color: var(--hb-date-picker-border-color-hover);\n}\n\n.hb-date-picker__suffix {\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n}\n\n.hb-date-picker__clear {\n margin-right: 8px;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 14px;\n height: 14px;\n color: var(--hb-color-text-placeholder, #c0c4cc);\n transition: color 0.2s;\n}\n\n.hb-date-picker__clear svg {\n width: 100%;\n height: 100%;\n}\n\n.hb-date-picker__clear:hover {\n color: var(--hb-color-text-regular, #606266);\n}\n\n.hb-date-picker__icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 14px;\n height: 14px;\n color: var(--hb-color-text-placeholder, #c0c4cc);\n}\n\n.hb-date-picker__icon svg {\n width: 100%;\n height: 100%;\n}\n\n.hb-date-picker__dropdown {\n position: absolute;\n top: 100%;\n left: 0;\n margin-top: 4px;\n background-color: var(--hb-date-picker-bg-color);\n border: 1px solid var(--hb-date-picker-border-color);\n border-radius: 4px;\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);\n z-index: 1000;\n min-width: 280px;\n padding: 12px;\n}\n\n.hb-date-picker__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 12px;\n}\n\n.hb-date-picker__header-label {\n font-weight: 600;\n font-size: 14px;\n color: var(--hb-color-text-regular, #606266);\n}\n\n.hb-date-picker__prev-btn,\n.hb-date-picker__next-btn {\n background: none;\n border: none;\n font-size: 18px;\n cursor: pointer;\n color: var(--hb-color-text-regular, #606266);\n padding: 4px 8px;\n transition: color 0.2s;\n}\n\n.hb-date-picker__prev-btn:hover,\n.hb-date-picker__next-btn:hover {\n color: var(--hb-color-primary);\n}\n\n.hb-date-picker__weekdays {\n display: grid;\n grid-template-columns: repeat(7, 1fr);\n gap: 4px;\n margin-bottom: 8px;\n}\n\n.hb-date-picker__weekday {\n text-align: center;\n font-size: 12px;\n color: var(--hb-color-text-placeholder, #c0c4cc);\n font-weight: 500;\n}\n\n.hb-date-picker__days {\n display: grid;\n grid-template-columns: repeat(7, 1fr);\n gap: 4px;\n}\n\n.hb-date-picker__day {\n aspect-ratio: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 13px;\n color: var(--hb-color-text-regular, #606266);\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.2s;\n}\n\n.hb-date-picker__day:hover:not(.hb-date-picker__day--other-month) {\n background-color: var(--hb-fill-color-light, #f5f7fa);\n}\n\n.hb-date-picker__day--other-month {\n color: var(--hb-color-text-placeholder, #c0c4cc);\n cursor: default;\n}\n\n.hb-date-picker__day--today {\n color: var(--hb-color-primary);\n font-weight: 600;\n}\n\n.hb-date-picker__day--selected {\n background-color: var(--hb-color-primary);\n color: var(--hb-color-white, #ffffff);\n}\n\n.hb-date-picker__day--disabled {\n color: var(--hb-color-text-placeholder, #c0c4cc);\n cursor: not-allowed;\n}\n\n.hb-date-picker__day--disabled:hover {\n background-color: transparent;\n}\n\n.hb-date-picker--small {\n width: 200px;\n}\n\n.hb-date-picker--small .hb-date-picker__input {\n height: 24px;\n line-height: 24px;\n font-size: 12px;\n padding: 0 25px 0 12px;\n}\n\n.hb-date-picker--large {\n width: 280px;\n}\n\n.hb-date-picker--large .hb-date-picker__input {\n height: 40px;\n line-height: 40px;\n font-size: 16px;\n padding: 0 35px 0 18px;\n}\n\n.hb-date-picker--disabled {\n cursor: not-allowed;\n}\n\n.hb-date-picker--disabled .hb-date-picker__input {\n background-color: var(--hb-fill-color-light, #f5f7fa);\n border-color: var(--hb-date-picker-border-color);\n color: var(--hb-color-text-disabled, #c0c4cc);\n cursor: not-allowed;\n}\n\n\n/* ---- type=month / type=year 选择网格 ---- */\n.hb-date-picker__month-grid,\n.hb-date-picker__year-grid {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 8px;\n padding: 8px 12px;\n}\n\n.hb-date-picker__month-cell,\n.hb-date-picker__year-cell {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 40px;\n font-size: var(--hb-cascader-font-size, 14px);\n color: var(--hb-color-text-regular, #606266);\n border-radius: 4px;\n cursor: pointer;\n transition: background-color 0.2s, color 0.2s;\n user-select: none;\n}\n\n.hb-date-picker__month-cell:hover:not(.hb-date-picker__month-cell--disabled),\n.hb-date-picker__year-cell:hover:not(.hb-date-picker__year-cell--disabled) {\n background-color: var(--hb-fill-color-light, #f5f7fa);\n}\n\n.hb-date-picker__month-cell--selected,\n.hb-date-picker__year-cell--selected {\n color: var(--hb-color-primary, #1677ff);\n font-weight: 600;\n background-color: var(--hb-color-primary-bg, #e6f4ff);\n}\n\n.hb-date-picker__month-cell--disabled,\n.hb-date-picker__year-cell--disabled {\n color: var(--hb-color-text-disabled, #c0c4cc);\n cursor: not-allowed;\n}\n","import { Component, h, Prop, Event, EventEmitter, State, Element, Watch } from '@stencil/core';\nimport { createClickOutsideHandler } from '../../utils/click-outside';\nimport { getCalendarDays, formatDate, parseDate, addMonths, MONTH_NAMES, WEEK_DAY_NAMES } from '../../utils/date-helpers';\n\n/**\n * DatePicker 日期选择器组件\n * 用于选择或输入日期\n */\n@Component({\n tag: 'hb-date-picker',\n styleUrl: 'date-picker.css',\n shadow: true,\n})\nexport class DatePicker {\n @Element() el: HTMLElement;\n\n /** 绑定值 */\n @Prop({ mutable: true }) modelValue?: string | Date;\n\n /** 输入框占位文本 */\n @Prop() placeholder: string = '请选择日期';\n\n /** 是否禁用 */\n @Prop() disabled: boolean = false;\n\n /** 输入框尺寸 */\n @Prop() size: 'large' | 'default' | 'small' = 'default';\n\n /** 是否可清空 */\n @Prop() clearable: boolean = false;\n\n /** 日期格式 */\n @Prop() format: string = 'YYYY-MM-DD';\n\n /** 显示在输入框中的格式 */\n @Prop() valueFormat?: string;\n\n /**\n * 日期选择器类型:\n * - 'date':日选择(默认)\n * - 'month':月选择(month 视图网格,emit YYYY-MM)\n * - 'year':年选择(year 视图网格,emit YYYY)\n * 注:'datetime'/'week' 请用独立的 DateTimePicker 组件 / 后续补全。\n */\n @Prop() type: 'date' | 'month' | 'year' = 'date';\n\n /**\n * 禁用日期判定函数。返回 true 的日期在日历中不可选(加 disabled 态、不可点击、aria-disabled)。\n * @param date 当前日期格子的 Date 对象\n */\n @Prop() disabledDate?: (date: Date) => boolean;\n\n /** 原生 name 属性 */\n @Prop() name?: string;\n\n /** 原生 id 属性 */\n @Prop() inputId?: string;\n\n @State() isOpen: boolean = false;\n @State() inputValue: string = '';\n @State() selectedDate?: Date;\n /** month/year 模式的面板锚点(不随选择改变,仅导航用) */\n @State() panelViewDate: Date = new Date();\n\n /** 值改变事件 */\n @Event() hbChange: EventEmitter<string | Date>;\n\n private clickOutside = createClickOutsideHandler({\n host: null as any,\n isOpen: () => this.isOpen,\n onClose: () => { this.isOpen = false; },\n });\n\n componentDidLoad() {\n this.clickOutside = createClickOutsideHandler({\n host: this.el,\n isOpen: () => this.isOpen,\n onClose: () => { this.isOpen = false; },\n });\n this.clickOutside.connect();\n this.updateInputValue();\n }\n\n disconnectedCallback() {\n this.clickOutside.disconnect();\n }\n\n @Watch('modelValue')\n handleValueChange() {\n this.updateInputValue();\n }\n\n private updateInputValue() {\n const date = parseDate(this.modelValue);\n if (!date) {\n this.inputValue = '';\n this.selectedDate = undefined;\n return;\n }\n this.selectedDate = date;\n this.inputValue = formatDate(date, this.format);\n }\n\n private handleInputClick = () => {\n if (this.disabled) return;\n this.isOpen = !this.isOpen;\n // month/year 模式打开时,从已选值或今天初始化面板锚点\n if (this.isOpen && (this.type === 'month' || this.type === 'year')) {\n this.panelViewDate = this.selectedDate ? new Date(this.selectedDate) : new Date();\n }\n };\n\n private handleClear = (e: Event) => {\n e.stopPropagation();\n this.modelValue = undefined;\n this.inputValue = '';\n this.selectedDate = undefined;\n this.isOpen = false;\n this.hbChange.emit(undefined);\n };\n\n private handleDateSelect = (date: Date) => {\n // disabledDate 返回 true 的日期不可选\n if (this.disabledDate && this.disabledDate(date)) return;\n this.selectedDate = date;\n this.modelValue = this.valueFormat ? formatDate(date, this.format) : date;\n this.updateInputValue();\n this.isOpen = false;\n this.hbChange.emit(this.modelValue);\n };\n\n /** type='month':选某月 → 锚定到该月 1 号,emit YYYY-MM */\n private handleMonthSelect = (monthIndex: number) => {\n const next = new Date(this.panelViewDate.getFullYear(), monthIndex, 1);\n if (this.disabledDate && this.disabledDate(next)) return;\n this.selectedDate = next;\n this.panelViewDate = new Date(next);\n const iso = `${next.getFullYear()}-${String(monthIndex + 1).padStart(2, '0')}`;\n this.inputValue = iso;\n this.modelValue = iso;\n this.isOpen = false;\n this.hbChange.emit(iso);\n };\n\n /** type='year':选某年 → 锚定到该年 1 月 1 日,emit YYYY */\n private handleYearSelect = (year: number) => {\n const next = new Date(year, 0, 1);\n if (this.disabledDate && this.disabledDate(next)) return;\n this.selectedDate = next;\n this.panelViewDate = new Date(next);\n const iso = String(year);\n this.inputValue = iso;\n this.modelValue = iso;\n this.isOpen = false;\n this.hbChange.emit(iso);\n };\n\n private changeMonth(delta: number) {\n this.selectedDate = addMonths(this.selectedDate || new Date(), delta);\n }\n\n /** month/year 面板导航:month ±1 年、year ±12 年 */\n private changePanelView(delta: number) {\n const next = new Date(this.panelViewDate);\n if (this.type === 'month') next.setFullYear(next.getFullYear() + delta);\n else next.setFullYear(next.getFullYear() + delta * 12);\n this.panelViewDate = next;\n }\n\n /** 判断某日期是否被 disabledDate 禁用 */\n private isDateDisabled = (date: Date): boolean => {\n return !!this.disabledDate && this.disabledDate(date);\n };\n\n render() {\n const days = getCalendarDays(this.selectedDate || new Date(), this.selectedDate);\n const current = this.selectedDate || new Date();\n\n // month/year 面板锚点:默认用 panelViewDate,未打开时回退到 selectedDate/today\n const panelAnchor = this.panelViewDate || current;\n const headerLabel =\n this.type === 'month'\n ? `${panelAnchor.getFullYear()} 年`\n : this.type === 'year'\n ? `${Math.floor(panelAnchor.getFullYear() / 12) * 12} - ${Math.floor(panelAnchor.getFullYear() / 12) * 12 + 11}`\n : `${current.getFullYear()}年 ${MONTH_NAMES[current.getMonth()]}`;\n\n return (\n <div\n class={{\n 'hb-date-picker': true,\n 'hb-date-picker--open': this.isOpen,\n 'hb-date-picker--disabled': this.disabled,\n [`hb-date-picker--${this.size}`]: true,\n [`hb-date-picker--${this.type}`]: true,\n }}\n >\n <div class=\"hb-date-picker__input-wrapper\" onClick={this.handleInputClick}>\n <input\n type=\"text\"\n id={this.inputId}\n name={this.name}\n class=\"hb-date-picker__input\"\n placeholder={this.placeholder}\n value={this.inputValue}\n disabled={this.disabled}\n readonly\n role=\"combobox\"\n aria-haspopup=\"dialog\"\n aria-expanded={this.isOpen ? 'true' : 'false'}\n aria-label={this.placeholder}\n />\n <span class=\"hb-date-picker__suffix\">\n {this.clearable && this.modelValue && (\n <span class=\"hb-date-picker__clear\" role=\"button\" aria-label=\"清空\" onClick={this.handleClear}>\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width={2} stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M6 6l12 12M18 6L6 18\" />\n </svg>\n </span>\n )}\n <span class=\"hb-date-picker__icon\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width={2} stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <rect x=\"3\" y=\"5\" width=\"18\" height=\"16\" rx=\"2\" />\n <path d=\"M3 9h18M8 3v4M16 3v4\" />\n </svg>\n </span>\n </span>\n </div>\n {this.isOpen && (\n <div class=\"hb-date-picker__dropdown\" role=\"dialog\" aria-label={this.type === 'month' ? '选择月份' : this.type === 'year' ? '选择年份' : '选择日期'}>\n <div class=\"hb-date-picker__header\">\n <button\n type=\"button\"\n class=\"hb-date-picker__prev-btn\"\n aria-label={this.type === 'date' ? '上一月' : '上一年'}\n onClick={() => (this.type === 'date' ? this.changeMonth(-1) : this.changePanelView(-1))}\n >\n ‹\n </button>\n <span class=\"hb-date-picker__header-label\" aria-live=\"polite\">{headerLabel}</span>\n <button\n type=\"button\"\n class=\"hb-date-picker__next-btn\"\n aria-label={this.type === 'date' ? '下一月' : '下一年'}\n onClick={() => (this.type === 'date' ? this.changeMonth(1) : this.changePanelView(1))}\n >\n ›\n </button>\n </div>\n {this.type === 'date' && (\n <div class=\"hb-date-picker__body\" role=\"grid\">\n <div class=\"hb-date-picker__weekdays\" role=\"row\">\n {WEEK_DAY_NAMES.map(day => (\n <div class=\"hb-date-picker__weekday\" role=\"columnheader\" aria-disabled=\"true\">{day}</div>\n ))}\n </div>\n <div class=\"hb-date-picker__days\" role=\"row\">\n {days.map((day, index) => {\n const dayDisabled = day.isCurrentMonth && this.isDateDisabled(day.date);\n return (\n <div\n key={index}\n class={{\n 'hb-date-picker__day': true,\n 'hb-date-picker__day--other-month': !day.isCurrentMonth,\n 'hb-date-picker__day--today': day.isToday,\n 'hb-date-picker__day--selected': day.isSelected,\n 'hb-date-picker__day--disabled': dayDisabled,\n }}\n role=\"gridcell\"\n aria-selected={day.isSelected ? 'true' : 'false'}\n aria-disabled={!day.isCurrentMonth || dayDisabled ? 'true' : undefined}\n aria-label={formatDate(day.date, this.format)}\n onClick={() => day.isCurrentMonth && !dayDisabled && this.handleDateSelect(day.date)}\n >\n {day.date.getDate()}\n </div>\n );\n })}\n </div>\n </div>\n )}\n {this.type === 'month' && (\n <div class=\"hb-date-picker__body hb-date-picker__month-grid\" role=\"grid\">\n {MONTH_NAMES.map((name, idx) => {\n const probe = new Date(panelAnchor.getFullYear(), idx, 1);\n const monthDisabled = !!this.disabledDate && this.disabledDate(probe);\n const isSelected =\n !!this.selectedDate &&\n this.selectedDate.getFullYear() === panelAnchor.getFullYear() &&\n this.selectedDate.getMonth() === idx;\n return (\n <div\n class={{\n 'hb-date-picker__month-cell': true,\n 'hb-date-picker__month-cell--selected': isSelected,\n 'hb-date-picker__month-cell--disabled': monthDisabled,\n }}\n role=\"gridcell\"\n aria-selected={isSelected ? 'true' : 'false'}\n aria-disabled={monthDisabled ? 'true' : undefined}\n onClick={() => !monthDisabled && this.handleMonthSelect(idx)}\n >\n {name}\n </div>\n );\n })}\n </div>\n )}\n {this.type === 'year' && (\n <div class=\"hb-date-picker__body hb-date-picker__year-grid\" role=\"grid\">\n {(() => {\n const startYear = Math.floor(panelAnchor.getFullYear() / 12) * 12;\n const years: number[] = [];\n for (let i = 0; i < 12; i++) years.push(startYear + i);\n return years.map(y => {\n const probe = new Date(y, 0, 1);\n const yearDisabled = !!this.disabledDate && this.disabledDate(probe);\n const isSelected = !!this.selectedDate && this.selectedDate.getFullYear() === y;\n return (\n <div\n class={{\n 'hb-date-picker__year-cell': true,\n 'hb-date-picker__year-cell--selected': isSelected,\n 'hb-date-picker__year-cell--disabled': yearDisabled,\n }}\n role=\"gridcell\"\n aria-selected={isSelected ? 'true' : 'false'}\n aria-disabled={yearDisabled ? 'true' : undefined}\n onClick={() => !yearDisabled && this.handleYearSelect(y)}\n >\n {y}\n </div>\n );\n });\n })()}\n </div>\n )}\n </div>\n )}\n </div>\n );\n }\n}\n\n"],"mappings":"oKAAA,MAAMA,EAAgB,i/UACtB,MAAAC,EAAeD,E,MCYFE,EAAU,M,oFAIIC,WAGjBC,YAAsB,QAGtBC,SAAoB,MAGpBC,KAAsC,UAGtCC,UAAqB,MAGrBC,OAAiB,aAGjBC,YASAC,KAAkC,OAMlCC,aAGAC,KAGAC,QAECC,OAAkB,MAClBC,WAAqB,GACrBC,aAEAC,cAAsB,IAAIC,KAG1BC,SAEDC,aAAeC,EAA0B,CAC/CC,KAAM,KACNR,OAAQ,IAAMS,KAAKT,OACnBU,QAAS,KAAQD,KAAKT,OAAS,KAAK,IAGtC,gBAAAW,GACEF,KAAKH,aAAeC,EAA0B,CAC5CC,KAAMC,KAAKG,GACXZ,OAAQ,IAAMS,KAAKT,OACnBU,QAAS,KAAQD,KAAKT,OAAS,KAAK,IAEtCS,KAAKH,aAAaO,UAClBJ,KAAKK,kB,CAGP,oBAAAC,GACEN,KAAKH,aAAaU,Y,CAIpB,iBAAAC,GACER,KAAKK,kB,CAGC,gBAAAA,GACN,MAAMI,EAAOC,EAAUV,KAAKpB,YAC5B,IAAK6B,EAAM,CACTT,KAAKR,WAAa,GAClBQ,KAAKP,aAAekB,UACpB,M,CAEFX,KAAKP,aAAegB,EACpBT,KAAKR,WAAaoB,EAAWH,EAAMT,KAAKf,O,CAGlC4B,iBAAmB,KACzB,GAAIb,KAAKlB,SAAU,OACnBkB,KAAKT,QAAUS,KAAKT,OAEpB,GAAIS,KAAKT,SAAWS,KAAKb,OAAS,SAAWa,KAAKb,OAAS,QAAS,CAClEa,KAAKN,cAAgBM,KAAKP,aAAe,IAAIE,KAAKK,KAAKP,cAAgB,IAAIE,I,GAIvEmB,YAAeC,IACrBA,EAAEC,kBACFhB,KAAKpB,WAAa+B,UAClBX,KAAKR,WAAa,GAClBQ,KAAKP,aAAekB,UACpBX,KAAKT,OAAS,MACdS,KAAKJ,SAASqB,KAAKN,UAAU,EAGvBO,iBAAoBT,IAE1B,GAAIT,KAAKZ,cAAgBY,KAAKZ,aAAaqB,GAAO,OAClDT,KAAKP,aAAegB,EACpBT,KAAKpB,WAAaoB,KAAKd,YAAc0B,EAAWH,EAAMT,KAAKf,QAAUwB,EACrET,KAAKK,mBACLL,KAAKT,OAAS,MACdS,KAAKJ,SAASqB,KAAKjB,KAAKpB,WAAW,EAI7BuC,kBAAqBC,IAC3B,MAAMC,EAAO,IAAI1B,KAAKK,KAAKN,cAAc4B,cAAeF,EAAY,GACpE,GAAIpB,KAAKZ,cAAgBY,KAAKZ,aAAaiC,GAAO,OAClDrB,KAAKP,aAAe4B,EACpBrB,KAAKN,cAAgB,IAAIC,KAAK0B,GAC9B,MAAME,EAAM,GAAGF,EAAKC,iBAAiBE,OAAOJ,EAAa,GAAGK,SAAS,EAAG,OACxEzB,KAAKR,WAAa+B,EAClBvB,KAAKpB,WAAa2C,EAClBvB,KAAKT,OAAS,MACdS,KAAKJ,SAASqB,KAAKM,EAAI,EAIjBG,iBAAoBC,IAC1B,MAAMN,EAAO,IAAI1B,KAAKgC,EAAM,EAAG,GAC/B,GAAI3B,KAAKZ,cAAgBY,KAAKZ,aAAaiC,GAAO,OAClDrB,KAAKP,aAAe4B,EACpBrB,KAAKN,cAAgB,IAAIC,KAAK0B,GAC9B,MAAME,EAAMC,OAAOG,GACnB3B,KAAKR,WAAa+B,EAClBvB,KAAKpB,WAAa2C,EAClBvB,KAAKT,OAAS,MACdS,KAAKJ,SAASqB,KAAKM,EAAI,EAGjB,WAAAK,CAAYC,GAClB7B,KAAKP,aAAeqC,EAAU9B,KAAKP,cAAgB,IAAIE,KAAQkC,E,CAIzD,eAAAE,CAAgBF,GACtB,MAAMR,EAAO,IAAI1B,KAAKK,KAAKN,eAC3B,GAAIM,KAAKb,OAAS,QAASkC,EAAKW,YAAYX,EAAKC,cAAgBO,QAC5DR,EAAKW,YAAYX,EAAKC,cAAgBO,EAAQ,IACnD7B,KAAKN,cAAgB2B,C,CAIfY,eAAkBxB,KACfT,KAAKZ,cAAgBY,KAAKZ,aAAaqB,GAGlD,MAAAyB,GACE,MAAMC,EAAOC,EAAgBpC,KAAKP,cAAgB,IAAIE,KAAQK,KAAKP,cACnE,MAAM4C,EAAUrC,KAAKP,cAAgB,IAAIE,KAGzC,MAAM2C,EAActC,KAAKN,eAAiB2C,EAC1C,MAAME,EACJvC,KAAKb,OAAS,QACV,GAAGmD,EAAYhB,kBACftB,KAAKb,OAAS,OACd,GAAGqD,KAAKC,MAAMH,EAAYhB,cAAgB,IAAM,QAAQkB,KAAKC,MAAMH,EAAYhB,cAAgB,IAAM,GAAK,KAC1G,GAAGe,EAAQf,kBAAkBoB,EAAYL,EAAQM,cAEvD,OACEC,EAAA,OAAAC,IAAA,2CACEC,MAAO,CACL,iBAAkB,KAClB,uBAAwB9C,KAAKT,OAC7B,2BAA4BS,KAAKlB,SACjC,CAAC,mBAAmBkB,KAAKjB,QAAS,KAClC,CAAC,mBAAmBiB,KAAKb,QAAS,OAGpCyD,EAAA,OAAAC,IAAA,2CAAKC,MAAM,gCAAgCC,QAAS/C,KAAKa,kBACvD+B,EAAA,SAAAC,IAAA,2CACE1D,KAAK,OACL6D,GAAIhD,KAAKV,QACTD,KAAMW,KAAKX,KACXyD,MAAM,wBACNjE,YAAamB,KAAKnB,YAClBoE,MAAOjD,KAAKR,WACZV,SAAUkB,KAAKlB,SACfoE,SAAQ,KACRC,KAAK,WAAU,gBACD,SAAQ,gBACPnD,KAAKT,OAAS,OAAS,QAAO,aACjCS,KAAKnB,cAEnB+D,EAAA,QAAAC,IAAA,2CAAMC,MAAM,0BACT9C,KAAKhB,WAAagB,KAAKpB,YACtBgE,EAAA,QAAAC,IAAA,2CAAMC,MAAM,wBAAwBK,KAAK,SAAQ,aAAY,KAAKJ,QAAS/C,KAAKc,aAC9E8B,EAAA,OAAAC,IAAA,2CAAKO,QAAQ,YAAYC,KAAK,OAAOC,OAAO,eAAc,eAAe,EAAC,iBAAiB,QAAO,kBAAiB,QAAO,cAAa,QACrIV,EAAA,QAAAC,IAAA,2CAAMU,EAAE,2BAIdX,EAAA,QAAAC,IAAA,2CAAMC,MAAM,uBAAsB,cAAa,QAC7CF,EAAA,OAAAC,IAAA,2CAAKO,QAAQ,YAAYC,KAAK,OAAOC,OAAO,eAAc,eAAe,EAAC,iBAAiB,QAAO,kBAAiB,SACjHV,EAAA,QAAAC,IAAA,2CAAMW,EAAE,IAAIC,EAAE,IAAIC,MAAM,KAAKC,OAAO,KAAKC,GAAG,MAC5ChB,EAAA,QAAAC,IAAA,2CAAMU,EAAE,6BAKfvD,KAAKT,QACJqD,EAAA,OAAAC,IAAA,2CAAKC,MAAM,2BAA2BK,KAAK,SAAQ,aAAanD,KAAKb,OAAS,QAAU,OAASa,KAAKb,OAAS,OAAS,OAAS,QAC/HyD,EAAA,OAAAC,IAAA,2CAAKC,MAAM,0BACTF,EAAA,UAAAC,IAAA,2CACE1D,KAAK,SACL2D,MAAM,2BAA0B,aACpB9C,KAAKb,OAAS,OAAS,MAAQ,MAC3C4D,QAAS,IAAO/C,KAAKb,OAAS,OAASa,KAAK4B,aAAa,GAAK5B,KAAK+B,iBAAiB,IAAG,KAIzFa,EAAA,QAAAC,IAAA,2CAAMC,MAAM,+BAA8B,YAAW,UAAUP,GAC/DK,EAAA,UAAAC,IAAA,2CACE1D,KAAK,SACL2D,MAAM,2BAA0B,aACpB9C,KAAKb,OAAS,OAAS,MAAQ,MAC3C4D,QAAS,IAAO/C,KAAKb,OAAS,OAASa,KAAK4B,YAAY,GAAK5B,KAAK+B,gBAAgB,IAAG,MAKxF/B,KAAKb,OAAS,QACbyD,EAAA,OAAAC,IAAA,2CAAKC,MAAM,uBAAuBK,KAAK,QACrCP,EAAA,OAAAC,IAAA,2CAAKC,MAAM,2BAA2BK,KAAK,OACxCU,EAAeC,KAAIC,GAClBnB,EAAA,OAAKE,MAAM,0BAA0BK,KAAK,eAAc,gBAAe,QAAQY,MAGnFnB,EAAA,OAAAC,IAAA,2CAAKC,MAAM,uBAAuBK,KAAK,OACpChB,EAAK2B,KAAI,CAACC,EAAKC,KACd,MAAMC,EAAcF,EAAIG,gBAAkBlE,KAAKiC,eAAe8B,EAAItD,MAClE,OACEmC,EAAA,OACEC,IAAKmB,EACLlB,MAAO,CACL,sBAAuB,KACvB,oCAAqCiB,EAAIG,eACzC,6BAA8BH,EAAII,QAClC,gCAAiCJ,EAAIK,WACrC,gCAAiCH,GAEnCd,KAAK,WAAU,gBACAY,EAAIK,WAAa,OAAS,QAAO,iBAChCL,EAAIG,gBAAkBD,EAAc,OAAStD,UAAS,aAC1DC,EAAWmD,EAAItD,KAAMT,KAAKf,QACtC8D,QAAS,IAAMgB,EAAIG,iBAAmBD,GAAejE,KAAKkB,iBAAiB6C,EAAItD,OAE9EsD,EAAItD,KAAK4D,UACN,MAMfrE,KAAKb,OAAS,SACbyD,EAAA,OAAAC,IAAA,2CAAKC,MAAM,kDAAkDK,KAAK,QAC/DT,EAAYoB,KAAI,CAACzE,EAAMiF,KACtB,MAAMC,EAAQ,IAAI5E,KAAK2C,EAAYhB,cAAegD,EAAK,GACvD,MAAME,IAAkBxE,KAAKZ,cAAgBY,KAAKZ,aAAamF,GAC/D,MAAMH,IACFpE,KAAKP,cACPO,KAAKP,aAAa6B,gBAAkBgB,EAAYhB,eAChDtB,KAAKP,aAAakD,aAAe2B,EACnC,OACE1B,EAAA,OACEE,MAAO,CACL,6BAA8B,KAC9B,uCAAwCsB,EACxC,uCAAwCI,GAE1CrB,KAAK,WAAU,gBACAiB,EAAa,OAAS,QAAO,gBAC7BI,EAAgB,OAAS7D,UACxCoC,QAAS,KAAOyB,GAAiBxE,KAAKmB,kBAAkBmD,IAEvDjF,EACG,KAKbW,KAAKb,OAAS,QACbyD,EAAA,OAAAC,IAAA,2CAAKC,MAAM,iDAAiDK,KAAK,QAC9D,MACC,MAAMsB,EAAYjC,KAAKC,MAAMH,EAAYhB,cAAgB,IAAM,GAC/D,MAAMoD,EAAkB,GACxB,IAAK,IAAIC,EAAI,EAAGA,EAAI,GAAIA,IAAKD,EAAME,KAAKH,EAAYE,GACpD,OAAOD,EAAMZ,KAAIL,IACf,MAAMc,EAAQ,IAAI5E,KAAK8D,EAAG,EAAG,GAC7B,MAAMoB,IAAiB7E,KAAKZ,cAAgBY,KAAKZ,aAAamF,GAC9D,MAAMH,IAAepE,KAAKP,cAAgBO,KAAKP,aAAa6B,gBAAkBmC,EAC9E,OACEb,EAAA,OACEE,MAAO,CACL,4BAA6B,KAC7B,sCAAuCsB,EACvC,sCAAuCS,GAEzC1B,KAAK,WAAU,gBACAiB,EAAa,OAAS,QAAO,gBAC7BS,EAAe,OAASlE,UACvCoC,QAAS,KAAO8B,GAAgB7E,KAAK0B,iBAAiB+B,IAErDA,EACG,GAGX,EAxBA,K","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["checkboxCss","HbCheckboxStyle0","Checkbox","modelValue","value","disabled","checked","indeterminate","name","checkboxId","label","border","size","hbChange","isChecked","handleValueChange","this","updateChecked","componentDidLoad","undefined","Array","isArray","includes","handleChange","e","target","preventDefault","newValue","filter","v","emit","render","inputId","Math","random","toString","substr","h","key","class","type","id","onChange"],"sources":["src/components/Checkbox/checkbox.css?tag=hb-checkbox&encapsulation=shadow","src/components/Checkbox/Checkbox.tsx"],"sourcesContent":[":host {\n display: inline-block;\n --hb-checkbox-font-size: 14px;\n --hb-checkbox-font-size-large: 16px;\n --hb-checkbox-font-size-small: 12px;\n --hb-checkbox-color: var(--hb-color-primary);\n --hb-checkbox-border-color: var(--hb-border-color, #dcdfe6);\n --hb-checkbox-border-color-checked: var(--hb-color-primary);\n --hb-checkbox-bg-color: var(--hb-color-white, #ffffff);\n --hb-checkbox-text-color: var(--hb-color-text-regular, #606266);\n --hb-checkbox-disabled-color: var(--hb-color-text-placeholder, #c0c4cc);\n --hb-checkbox-disabled-bg-color: var(--hb-fill-color-light, #f5f7fa);\n}\n\n.hb-checkbox {\n color: var(--hb-checkbox-text-color);\n font-weight: 500;\n font-size: var(--hb-checkbox-font-size);\n position: relative;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n white-space: nowrap;\n user-select: none;\n margin-right: 30px;\n}\n\n.hb-checkbox:last-child {\n margin-right: 0;\n}\n\n.hb-checkbox__input {\n white-space: nowrap;\n cursor: pointer;\n outline: none;\n display: inline-flex;\n position: relative;\n vertical-align: middle;\n}\n\n.hb-checkbox__original {\n opacity: 0;\n outline: none;\n position: absolute;\n margin: 0;\n width: 0;\n height: 0;\n z-index: -1;\n}\n\n.hb-checkbox__inner {\n display: inline-block;\n position: relative;\n border: var(--hb-border, 1px solid var(--hb-checkbox-border-color));\n border-radius: 2px;\n box-sizing: border-box;\n width: 14px;\n height: 14px;\n background-color: var(--hb-checkbox-bg-color);\n z-index: 1;\n transition: border-color 0.25s cubic-bezier(0.71, -0.46, 0.29, 1.46),\n background-color 0.25s cubic-bezier(0.71, -0.46, 0.29, 1.46);\n}\n\n.hb-checkbox__inner::after {\n box-sizing: content-box;\n content: '';\n border: 2px solid var(--hb-color-white, #ffffff);\n border-left: 0;\n border-top: 0;\n height: 7px;\n left: 4px;\n position: absolute;\n top: 1px;\n transform: rotate(45deg) scaleY(0);\n width: 3px;\n transition: transform 0.15s ease-in 0.05s;\n transform-origin: center;\n}\n\n.hb-checkbox--checked .hb-checkbox__inner {\n background-color: var(--hb-checkbox-color);\n border-color: var(--hb-checkbox-border-color-checked);\n}\n\n.hb-checkbox--checked .hb-checkbox__inner::after {\n transform: rotate(45deg) scaleY(1);\n}\n\n.hb-checkbox__inner--indeterminate {\n background-color: var(--hb-checkbox-color);\n border-color: var(--hb-checkbox-border-color-checked);\n}\n\n.hb-checkbox__inner--indeterminate::after {\n content: '';\n position: absolute;\n display: block;\n background-color: var(--hb-color-white, #ffffff);\n height: 2px;\n transform: scaleX(0.5);\n left: 0;\n right: 0;\n top: 5px;\n}\n\n.hb-checkbox__label {\n padding-left: 8px;\n line-height: 1;\n font-size: var(--hb-checkbox-font-size);\n}\n\n.hb-checkbox--disabled {\n cursor: not-allowed;\n}\n\n.hb-checkbox--disabled .hb-checkbox__inner {\n background-color: var(--hb-checkbox-disabled-bg-color);\n border-color: var(--hb-checkbox-border-color);\n cursor: not-allowed;\n}\n\n.hb-checkbox--disabled .hb-checkbox__inner::after {\n cursor: not-allowed;\n border-color: var(--hb-checkbox-disabled-color);\n}\n\n.hb-checkbox--disabled .hb-checkbox__label {\n color: var(--hb-checkbox-disabled-color);\n cursor: not-allowed;\n}\n\n.hb-checkbox--border {\n padding: 9px 15px 9px 9px;\n border-radius: 4px;\n border: 1px solid var(--hb-checkbox-border-color);\n box-sizing: border-box;\n white-space: nowrap;\n}\n\n.hb-checkbox--border.hb-checkbox--checked {\n border-color: var(--hb-checkbox-border-color-checked);\n}\n\n.hb-checkbox--border.hb-checkbox--disabled {\n border-color: var(--hb-checkbox-border-color);\n cursor: not-allowed;\n}\n\n.hb-checkbox--small {\n font-size: var(--hb-checkbox-font-size-small);\n}\n\n.hb-checkbox--small .hb-checkbox__inner {\n width: 12px;\n height: 12px;\n}\n\n.hb-checkbox--small .hb-checkbox__label {\n padding-left: 6px;\n}\n\n.hb-checkbox--large {\n font-size: var(--hb-checkbox-font-size-large);\n}\n\n.hb-checkbox--large .hb-checkbox__inner {\n width: 16px;\n height: 16px;\n}\n\n.hb-checkbox--large .hb-checkbox__label {\n padding-left: 10px;\n}\n\n.hb-checkbox:hover:not(.hb-checkbox--disabled) .hb-checkbox__inner {\n border-color: var(--hb-checkbox-border-color-checked);\n}\n\n","import { Component, h, Prop, Event, EventEmitter, State, Watch } from '@stencil/core';\n\nexport interface CheckboxOption {\n label: string;\n value: string | number;\n disabled?: boolean;\n}\n\n/**\n * Checkbox 多选框组件\n * 一组备选项中进行多选\n */\n@Component({\n tag: 'hb-checkbox',\n styleUrl: 'checkbox.css',\n shadow: true,\n})\nexport class Checkbox {\n /**\n * 绑定值\n */\n @Prop({ mutable: true }) modelValue: boolean | (string | number)[] = false;\n\n /**\n * 当前值(用于单个 checkbox)\n */\n @Prop() value?: string | number;\n\n /**\n * 是否禁用\n * @default false\n */\n @Prop() disabled: boolean = false;\n\n /**\n * 是否选中\n * @default false\n */\n @Prop() checked: boolean = false;\n\n /**\n * 是否不确定状态\n * @default false\n */\n @Prop() indeterminate: boolean = false;\n\n /**\n * 原生 name 属性\n */\n @Prop() name?: string;\n\n /**\n * 原生 id 属性\n */\n @Prop() checkboxId?: string;\n\n /**\n * 文本标签\n */\n @Prop() label?: string;\n\n /**\n * 是否显示边框\n * @default false\n */\n @Prop() border: boolean = false;\n\n /**\n * 尺寸\n */\n @Prop() size: 'large' | 'default' | 'small' = 'default';\n\n /**\n * 值改变事件\n */\n @Event() hbChange: EventEmitter<boolean | (string | number)[]>;\n\n @State() isChecked: boolean = false;\n\n @Watch('modelValue')\n @Watch('checked')\n @Watch('value')\n handleValueChange() {\n this.updateChecked();\n }\n\n componentDidLoad() {\n this.updateChecked();\n }\n\n private updateChecked() {\n if (this.value !== undefined) {\n // 在 checkbox group 中\n const modelValue = this.modelValue as (string | number)[];\n this.isChecked = Array.isArray(modelValue) && modelValue.includes(this.value);\n } else {\n // 单个 checkbox\n this.isChecked = this.checked || (this.modelValue as boolean);\n }\n }\n\n private handleChange = (e: Event) => {\n const target = e.target as HTMLInputElement;\n \n if (this.disabled) {\n e.preventDefault();\n return;\n }\n\n if (this.value !== undefined) {\n // 在 checkbox group 中\n const modelValue = (this.modelValue as (string | number)[]) || [];\n let newValue: (string | number)[];\n \n if (target.checked) {\n newValue = [...modelValue, this.value];\n } else {\n newValue = modelValue.filter(v => v !== this.value);\n }\n \n this.modelValue = newValue;\n this.hbChange.emit(newValue);\n } else {\n // 单个 checkbox\n this.modelValue = target.checked;\n this.isChecked = target.checked;\n this.hbChange.emit(target.checked);\n }\n };\n\n render() {\n const inputId = this.checkboxId || `hb-checkbox-${Math.random().toString(36).substr(2, 9)}`;\n \n return (\n <label\n class={{\n 'hb-checkbox': true,\n 'hb-checkbox--checked': this.isChecked,\n 'hb-checkbox--disabled': this.disabled,\n 'hb-checkbox--border': this.border,\n [`hb-checkbox--${this.size}`]: true,\n }}\n >\n <span class=\"hb-checkbox__input\">\n <input\n type=\"checkbox\"\n id={inputId}\n name={this.name}\n checked={this.isChecked}\n disabled={this.disabled}\n indeterminate={this.indeterminate}\n onChange={this.handleChange}\n class=\"hb-checkbox__original\"\n />\n <span\n class={{\n 'hb-checkbox__inner': true,\n 'hb-checkbox__inner--indeterminate': this.indeterminate,\n }}\n ></span>\n </span>\n {(this.label || this.value !== undefined) && (\n <span class=\"hb-checkbox__label\">\n <slot>{this.label || this.value}</slot>\n </span>\n )}\n </label>\n );\n }\n}\n\n"],"mappings":"kDAAA,MAAMA,EAAc,ytSACpB,MAAAC,EAAeD,E,MCgBFE,EAAQ,M,4DAIMC,WAA4C,MAK7DC,MAMAC,SAAoB,MAMpBC,QAAmB,MAMnBC,cAAyB,MAKzBC,KAKAC,WAKAC,MAMAC,OAAkB,MAKlBC,KAAsC,UAKrCC,SAEAC,UAAqB,MAK9B,iBAAAC,GACEC,KAAKC,e,CAGP,gBAAAC,GACEF,KAAKC,e,CAGC,aAAAA,GACN,GAAID,KAAKZ,QAAUe,UAAW,CAE5B,MAAMhB,EAAaa,KAAKb,WACxBa,KAAKF,UAAYM,MAAMC,QAAQlB,IAAeA,EAAWmB,SAASN,KAAKZ,M,KAClE,CAELY,KAAKF,UAAYE,KAAKV,SAAYU,KAAKb,U,EAInCoB,aAAgBC,IACtB,MAAMC,EAASD,EAAEC,OAEjB,GAAIT,KAAKX,SAAU,CACjBmB,EAAEE,iBACF,M,CAGF,GAAIV,KAAKZ,QAAUe,UAAW,CAE5B,MAAMhB,EAAca,KAAKb,YAAsC,GAC/D,IAAIwB,EAEJ,GAAIF,EAAOnB,QAAS,CAClBqB,EAAW,IAAIxB,EAAYa,KAAKZ,M,KAC3B,CACLuB,EAAWxB,EAAWyB,QAAOC,GAAKA,IAAMb,KAAKZ,O,CAG/CY,KAAKb,WAAawB,EAClBX,KAAKH,SAASiB,KAAKH,E,KACd,CAELX,KAAKb,WAAasB,EAAOnB,QACzBU,KAAKF,UAAYW,EAAOnB,QACxBU,KAAKH,SAASiB,KAAKL,EAAOnB,Q,GAI9B,MAAAyB,GACE,MAAMC,EAAUhB,KAAKP,YAAc,eAAewB,KAAKC,SAASC,SAAS,IAAIC,OAAO,EAAG,KAEvF,OACEC,EAAA,SAAAC,IAAA,2CACEC,MAAO,CACL,cAAe,KACf,uBAAwBvB,KAAKF,UAC7B,wBAAyBE,KAAKX,SAC9B,sBAAuBW,KAAKL,OAC5B,CAAC,gBAAgBK,KAAKJ,QAAS,OAGjCyB,EAAA,QAAAC,IAAA,2CAAMC,MAAM,sBACVF,EAAA,SAAAC,IAAA,2CACEE,KAAK,WACLC,GAAIT,EACJxB,KAAMQ,KAAKR,KACXF,QAASU,KAAKF,UACdT,SAAUW,KAAKX,SACfE,cAAeS,KAAKT,cACpBmC,SAAU1B,KAAKO,aACfgB,MAAM,0BAERF,EAAA,QAAAC,IAAA,2CACEC,MAAO,CACL,qBAAsB,KACtB,oCAAqCvB,KAAKT,mBAI9CS,KAAKN,OAASM,KAAKZ,QAAUe,YAC7BkB,EAAA,QAAAC,IAAA,2CAAMC,MAAM,sBACVF,EAAA,QAAAC,IAAA,4CAAOtB,KAAKN,OAASM,KAAKZ,Q","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["paginationCss","HbPaginationStyle0","Pagination","total","pageSize","currentPage","pageSizes","pagerCount","disabled","showTotal","showPageSize","internalCurrent","internalPageSize","hbCurrentChange","hbSizeChange","handleCurrentPageChange","this","handlePageSizeChange","componentDidLoad","totalPages","Math","max","ceil","handlePageClick","page","emit","handleSizeChange","e","target","size","parseInt","value","newTotal","safePage","min","getPages","pages","current","pager","i","push","half","floor","start","end","render","h","key","class","role","onChange","map","selected","type","onClick","undefined"],"sources":["src/components/Pagination/pagination.css?tag=hb-pagination&encapsulation=shadow","src/components/Pagination/Pagination.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.hb-pagination {\n display: flex;\n align-items: center;\n gap: var(--hb-spacing-xxs);\n font-size: var(--hb-font-size-sm);\n color: var(--hb-color-text);\n user-select: none;\n}\n\n.hb-pagination--disabled {\n opacity: 0.5;\n pointer-events: none;\n}\n\n.hb-pagination__total {\n margin-right: var(--hb-spacing-xs);\n color: var(--hb-color-text-secondary);\n}\n\n.hb-pagination__sizes {\n height: 28px;\n padding: 0 var(--hb-spacing-xs);\n border: 1px solid var(--hb-color-border);\n border-radius: var(--hb-border-radius-sm);\n background: var(--hb-color-bg);\n color: var(--hb-color-text);\n font-size: var(--hb-font-size-sm);\n cursor: pointer;\n outline: none;\n margin-right: var(--hb-spacing-xs);\n}\n\n.hb-pagination__sizes:focus {\n border-color: var(--hb-color-primary);\n}\n\n.hb-pagination__btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 28px;\n height: 28px;\n padding: 0 4px;\n border: 1px solid var(--hb-color-border);\n border-radius: var(--hb-border-radius-sm);\n background: var(--hb-color-bg);\n color: var(--hb-color-text);\n font-size: var(--hb-font-size-sm);\n cursor: pointer;\n outline: none;\n transition: all var(--hb-transition-duration) var(--hb-transition-function);\n}\n\n.hb-pagination__btn:hover:not(:disabled):not(.hb-pagination__btn--active) {\n color: var(--hb-color-primary);\n border-color: var(--hb-color-primary);\n}\n\n.hb-pagination__btn:disabled {\n color: var(--hb-color-text-disabled);\n cursor: not-allowed;\n background: var(--hb-color-fill-quaternary);\n}\n\n.hb-pagination__btn--active {\n background-color: var(--hb-color-primary);\n border-color: var(--hb-color-primary);\n color: #fff;\n}\n\n.hb-pagination__ellipsis {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 28px;\n height: 28px;\n color: var(--hb-color-text-secondary);\n letter-spacing: 2px;\n}\n\n/* ============================================================\n * 响应式(移动端):小屏简化分页,\n * 隐藏非相邻页码与省略号,仅保留 首页/上一页/当前页/下一页/末页。\n * 通过 aria-hidden 而非 display:none,保持键盘可达性由 active 决定。\n * ============================================================ */\n@media (max-width: 575.98px) {\n /* 隐藏中间页码(保留 active 与首末按钮) */\n .hb-pagination__btn:not(.hb-pagination__btn--active):not(.hb-pagination__prev):not(.hb-pagination__next) {\n display: none;\n }\n\n /* 隐藏省略号 */\n .hb-pagination__ellipsis {\n display: none;\n }\n\n /* 隐藏\"共 N 条\"和\"每页 N 条\"选择器以节省空间(信息保留在 aria-label) */\n .hb-pagination__total,\n .hb-pagination__sizes {\n display: none;\n }\n}\n","import { Component, h, Prop, Event, EventEmitter, State, Watch } from '@stencil/core';\n\n/**\n * Pagination 分页组件\n * 当数据量过多时,使用分页分解数据\n */\n@Component({\n tag: 'hb-pagination',\n styleUrl: 'pagination.css',\n shadow: true,\n})\nexport class Pagination {\n /** 总条目数 */\n @Prop() total: number = 0;\n\n /** 每页显示条目数 */\n @Prop() pageSize: number = 10;\n\n /** 当前页数 */\n @Prop({ mutable: true }) currentPage: number = 1;\n\n /** 每页显示个数选择器的选项设置 */\n @Prop() pageSizes: number[] = [10, 20, 50, 100];\n\n /** 最大页码按钮数 */\n @Prop() pagerCount: number = 7;\n\n /** 是否禁用 */\n @Prop() disabled: boolean = false;\n\n /** 是否显示总条数 */\n @Prop() showTotal: boolean = false;\n\n /** 是否显示每页条数选择器 */\n @Prop() showPageSize: boolean = false;\n\n @State() internalCurrent: number = 1;\n /** 内部每页条数:pageSize 变更时同步;size 切换后立即生效重算 totalPages */\n @State() internalPageSize: number = 10;\n\n /** 当前页改变事件 */\n @Event() hbCurrentChange: EventEmitter<number>;\n\n /** 每页条数改变事件 */\n @Event() hbSizeChange: EventEmitter<number>;\n\n @Watch('currentPage')\n handleCurrentPageChange() {\n this.internalCurrent = this.currentPage;\n }\n\n @Watch('pageSize')\n handlePageSizeChange() {\n this.internalPageSize = this.pageSize;\n }\n\n componentDidLoad() {\n this.internalCurrent = this.currentPage;\n this.internalPageSize = this.pageSize;\n }\n\n private get totalPages(): number {\n return Math.max(1, Math.ceil(this.total / this.internalPageSize));\n }\n\n private handlePageClick(page: number) {\n if (this.disabled || page === this.internalCurrent || page < 1 || page > this.totalPages) return;\n this.internalCurrent = page;\n this.currentPage = page;\n this.hbCurrentChange.emit(page);\n }\n\n private handleSizeChange(e: Event) {\n const target = e.target as HTMLSelectElement;\n const size = parseInt(target.value, 10);\n // 切 pageSize 后立即重算 totalPages,并防止 currentPage 越界\n this.internalPageSize = size;\n const newTotal = Math.max(1, Math.ceil(this.total / size));\n const safePage = Math.min(this.internalCurrent, newTotal);\n this.hbSizeChange.emit(size);\n this.internalCurrent = safePage;\n this.currentPage = safePage;\n if (safePage !== this.internalCurrent) {\n this.hbCurrentChange.emit(safePage);\n }\n }\n\n private getPages(): (number | '...')[] {\n const pages: (number | '...')[] = [];\n const total = this.totalPages;\n const current = this.internalCurrent;\n const pager = this.pagerCount;\n\n if (total <= pager) {\n for (let i = 1; i <= total; i++) pages.push(i);\n return pages;\n }\n\n const half = Math.floor((pager - 2) / 2);\n let start = current - half;\n let end = current + half;\n\n if (start < 2) {\n start = 2;\n end = Math.min(pager - 1, total - 1);\n }\n if (end > total - 1) {\n end = total - 1;\n start = Math.max(2, total - pager + 2);\n }\n\n pages.push(1);\n if (start > 2) pages.push('...');\n for (let i = start; i <= end; i++) pages.push(i);\n if (end < total - 1) pages.push('...');\n pages.push(total);\n\n return pages;\n }\n\n render() {\n const pages = this.getPages();\n\n return (\n <nav\n class={{ 'hb-pagination': true, 'hb-pagination--disabled': this.disabled }}\n role=\"navigation\"\n aria-label=\"分页\"\n >\n {this.showTotal && (\n <span class=\"hb-pagination__total\" aria-live=\"polite\">共 {this.total} 条</span>\n )}\n\n {this.showPageSize && (\n <select\n class=\"hb-pagination__sizes\"\n onChange={this.handleSizeChange}\n disabled={this.disabled}\n aria-label=\"每页条数\"\n >\n {this.pageSizes.map(size => (\n <option value={size} selected={size === this.internalPageSize}>{size} 条/页</option>\n ))}\n </select>\n )}\n\n <button\n type=\"button\"\n class=\"hb-pagination__btn hb-pagination__prev\"\n disabled={this.disabled || this.internalCurrent <= 1}\n onClick={() => this.handlePageClick(this.internalCurrent - 1)}\n aria-label=\"上一页\"\n >\n ‹\n </button>\n\n {pages.map(page =>\n page === '...' ? (\n <span class=\"hb-pagination__ellipsis\" aria-hidden=\"true\">...</span>\n ) : (\n <button\n type=\"button\"\n class={{\n 'hb-pagination__btn': true,\n 'hb-pagination__btn--active': page === this.internalCurrent,\n }}\n disabled={this.disabled}\n onClick={() => this.handlePageClick(page as number)}\n aria-label={`第 ${page} 页`}\n aria-current={page === this.internalCurrent ? 'page' : undefined}\n >\n {page}\n </button>\n )\n )}\n\n <button\n type=\"button\"\n class=\"hb-pagination__btn hb-pagination__next\"\n disabled={this.disabled || this.internalCurrent >= this.totalPages}\n onClick={() => this.handlePageClick(this.internalCurrent + 1)}\n aria-label=\"下一页\"\n >\n ›\n </button>\n </nav>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["scrollbarCss","HbScrollbarStyle0","Scrollbar","height","maxHeight","always","native","minSize","hbScroll","scrollbarVisible","thumbHeight","thumbTop","wrapRef","thumbRef","resizeObserver","isDragging","startY","startScrollTop","componentDidLoad","this","initScrollbar","disconnectedCallback","disconnect","removeEventListeners","handleSizeChange","updateScrollbar","setScrollTop","top","scrollTop","setScrollLeft","left","scrollLeft","getScrollTop","getScrollLeft","ResizeObserver","observe","addEventListeners","addEventListener","handleScroll","handleThumbMouseDown","document","handleMouseMove","handleMouseUp","removeEventListener","wrapHeight","clientHeight","scrollHeight","hasScroll","Math","max","maxThumbTop","min","emit","e","preventDefault","stopPropagation","clientY","deltaY","maxScrollTop","scrollDelta","newScrollTop","render","style","h","class","ref","el","onScroll","transform"],"sources":["src/components/Scrollbar/scrollbar.css?tag=hb-scrollbar&encapsulation=shadow","src/components/Scrollbar/Scrollbar.tsx"],"sourcesContent":[":host {\n display: block;\n --hb-scrollbar-bg-color: var(--hb-fill-color-light, #f5f7fa);\n --hb-scrollbar-thumb-color: var(--hb-fill-color, #c0c4cc);\n --hb-scrollbar-thumb-hover-color: var(--hb-fill-color-dark, #a0a4ac);\n}\n\n.hb-scrollbar {\n position: relative;\n height: 100%;\n overflow: hidden;\n}\n\n.hb-scrollbar__wrap {\n overflow: auto;\n height: 100%;\n scrollbar-width: thin;\n scrollbar-color: var(--hb-scrollbar-thumb-color) var(--hb-scrollbar-bg-color);\n}\n\n.hb-scrollbar__wrap::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n}\n\n.hb-scrollbar__wrap::-webkit-scrollbar-track {\n background: var(--hb-scrollbar-bg-color);\n border-radius: 3px;\n}\n\n.hb-scrollbar__wrap::-webkit-scrollbar-thumb {\n background: var(--hb-scrollbar-thumb-color);\n border-radius: 3px;\n}\n\n.hb-scrollbar__wrap::-webkit-scrollbar-thumb:hover {\n background: var(--hb-scrollbar-thumb-hover-color);\n}\n\n.hb-scrollbar--native .hb-scrollbar__wrap {\n overflow-y: auto;\n}\n\n.hb-scrollbar__view {\n width: 100%;\n}\n\n.hb-scrollbar__bar {\n position: absolute;\n right: 2px;\n bottom: 2px;\n z-index: 1;\n border-radius: 4px;\n opacity: 0;\n transition: opacity 0.12s ease-out;\n}\n\n.hb-scrollbar:hover .hb-scrollbar__bar {\n opacity: 1;\n}\n\n.hb-scrollbar__bar--vertical {\n width: 6px;\n top: 2px;\n}\n\n.hb-scrollbar__bar--vertical > div {\n width: 100%;\n}\n\n.hb-scrollbar__thumb {\n position: relative;\n display: block;\n width: 100%;\n height: 0;\n cursor: pointer;\n border-radius: inherit;\n background-color: var(--hb-scrollbar-thumb-color);\n transition: background-color 0.3s;\n}\n\n.hb-scrollbar__thumb:hover {\n background-color: var(--hb-scrollbar-thumb-hover-color);\n}\n\n","import { Component, h, Prop, Element, State, Watch, Event, EventEmitter, Method } from '@stencil/core';\n\n/**\n * Scrollbar 滚动条组件\n * 用于替换浏览器原生滚动条\n */\n@Component({\n tag: 'hb-scrollbar',\n styleUrl: 'scrollbar.css',\n shadow: true,\n})\nexport class Scrollbar {\n @Element() el: HTMLElement;\n\n /**\n * 滚动条高度\n */\n @Prop() height?: string;\n\n /**\n * 滚动条最大高度\n */\n @Prop() maxHeight?: string;\n\n /**\n * 是否总是显示滚动条\n * @default false\n */\n @Prop() always: boolean = false;\n\n /**\n * 是否显示原生滚动条\n * @default false\n */\n @Prop() native: boolean = false;\n\n /**\n * 滚动条的最小尺寸\n * @default 20\n */\n @Prop() minSize: number = 20;\n\n /**\n * 滚动事件\n */\n @Event() hbScroll: EventEmitter<{ scrollTop: number; scrollLeft: number }>;\n\n @State() scrollbarVisible: boolean = false;\n @State() thumbHeight: number = 0;\n @State() thumbTop: number = 0;\n\n private wrapRef?: HTMLDivElement;\n private thumbRef?: HTMLDivElement;\n private resizeObserver?: ResizeObserver;\n private isDragging: boolean = false;\n private startY: number = 0;\n private startScrollTop: number = 0;\n\n componentDidLoad() {\n if (!this.native) {\n this.initScrollbar();\n }\n }\n\n disconnectedCallback() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n this.removeEventListeners();\n }\n\n @Watch('height')\n @Watch('maxHeight')\n handleSizeChange() {\n this.updateScrollbar();\n }\n\n /**\n * 设置滚动条位置\n */\n @Method()\n async setScrollTop(top: number) {\n if (this.wrapRef) {\n this.wrapRef.scrollTop = top;\n this.updateScrollbar();\n }\n }\n\n /**\n * 设置滚动条位置\n */\n @Method()\n async setScrollLeft(left: number) {\n if (this.wrapRef) {\n this.wrapRef.scrollLeft = left;\n this.updateScrollbar();\n }\n }\n\n /**\n * 获取滚动条位置\n */\n @Method()\n async getScrollTop(): Promise<number> {\n return this.wrapRef?.scrollTop || 0;\n }\n\n /**\n * 获取滚动条位置\n */\n @Method()\n async getScrollLeft(): Promise<number> {\n return this.wrapRef?.scrollLeft || 0;\n }\n\n private initScrollbar() {\n if (!this.wrapRef) return;\n\n this.resizeObserver = new ResizeObserver(() => {\n this.updateScrollbar();\n });\n\n this.resizeObserver.observe(this.wrapRef);\n this.addEventListeners();\n this.updateScrollbar();\n }\n\n private addEventListeners() {\n if (this.wrapRef) {\n this.wrapRef.addEventListener('scroll', this.handleScroll);\n }\n if (this.thumbRef) {\n this.thumbRef.addEventListener('mousedown', this.handleThumbMouseDown);\n }\n document.addEventListener('mousemove', this.handleMouseMove);\n document.addEventListener('mouseup', this.handleMouseUp);\n }\n\n private removeEventListeners() {\n if (this.wrapRef) {\n this.wrapRef.removeEventListener('scroll', this.handleScroll);\n }\n if (this.thumbRef) {\n this.thumbRef.removeEventListener('mousedown', this.handleThumbMouseDown);\n }\n document.removeEventListener('mousemove', this.handleMouseMove);\n document.removeEventListener('mouseup', this.handleMouseUp);\n }\n\n private updateScrollbar() {\n if (!this.wrapRef) return;\n\n const wrapHeight = this.wrapRef.clientHeight;\n const scrollHeight = this.wrapRef.scrollHeight;\n const scrollTop = this.wrapRef.scrollTop;\n\n const hasScroll = scrollHeight > wrapHeight;\n this.scrollbarVisible = hasScroll || this.always;\n\n if (hasScroll && this.thumbRef) {\n const thumbHeight = Math.max(\n this.minSize,\n (wrapHeight / scrollHeight) * wrapHeight\n );\n const maxThumbTop = wrapHeight - thumbHeight;\n const thumbTop = (scrollTop / (scrollHeight - wrapHeight)) * maxThumbTop;\n\n this.thumbHeight = thumbHeight;\n this.thumbTop = Math.max(0, Math.min(maxThumbTop, thumbTop));\n }\n }\n\n private handleScroll = () => {\n this.updateScrollbar();\n if (this.wrapRef) {\n this.hbScroll.emit({\n scrollTop: this.wrapRef.scrollTop,\n scrollLeft: this.wrapRef.scrollLeft,\n });\n }\n };\n\n private handleThumbMouseDown = (e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n this.isDragging = true;\n this.startY = e.clientY;\n this.startScrollTop = this.wrapRef?.scrollTop || 0;\n };\n\n private handleMouseMove = (e: MouseEvent) => {\n if (!this.isDragging || !this.wrapRef) return;\n\n const deltaY = e.clientY - this.startY;\n const wrapHeight = this.wrapRef.clientHeight;\n const scrollHeight = this.wrapRef.scrollHeight;\n const maxScrollTop = scrollHeight - wrapHeight;\n const thumbHeight = this.thumbHeight;\n const maxThumbTop = wrapHeight - thumbHeight;\n\n const scrollDelta = (deltaY / maxThumbTop) * maxScrollTop;\n const newScrollTop = Math.max(0, Math.min(maxScrollTop, this.startScrollTop + scrollDelta));\n\n this.wrapRef.scrollTop = newScrollTop;\n };\n\n private handleMouseUp = () => {\n this.isDragging = false;\n };\n\n render() {\n const style: any = {};\n if (this.height) {\n style.height = this.height;\n }\n if (this.maxHeight) {\n style.maxHeight = this.maxHeight;\n }\n\n if (this.native) {\n return (\n <div\n class=\"hb-scrollbar hb-scrollbar--native\"\n style={style}\n >\n <div class=\"hb-scrollbar__wrap\">\n <div class=\"hb-scrollbar__view\">\n <slot></slot>\n </div>\n </div>\n </div>\n );\n }\n\n return (\n <div class=\"hb-scrollbar\" style={style}>\n <div\n class=\"hb-scrollbar__wrap\"\n ref={(el) => (this.wrapRef = el)}\n onScroll={this.handleScroll}\n >\n <div class=\"hb-scrollbar__view\">\n <slot></slot>\n </div>\n </div>\n {this.scrollbarVisible && !this.native && (\n <div class=\"hb-scrollbar__bar hb-scrollbar__bar--vertical\">\n <div\n class=\"hb-scrollbar__thumb\"\n ref={(el) => {\n this.thumbRef = el;\n if (el && !this.native) {\n el.addEventListener('mousedown', this.handleThumbMouseDown);\n }\n }}\n style={{\n height: `${this.thumbHeight}px`,\n transform: `translateY(${this.thumbTop}px)`,\n }}\n ></div>\n </div>\n )}\n </div>\n );\n }\n}\n\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{r as e,c as t,g as r,h as i}from"./p-e42dfa95.js";import{c as o}from"./p-4ef5a884.js";const s='/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}::file-selector-button{appearance:button;background-color:#0000;border:0 solid;border-radius:0;box-sizing:border-box;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;margin:0;margin-inline-end:4px;opacity:1;padding:0}:host,html{-webkit-text-size-adjust:100%;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);line-height:1.5;tab-size:4;-webkit-tap-highlight-color:transparent}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-size:1em;font-variation-settings:var(--default-mono-font-variation-settings,normal)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}button,input,optgroup,select,textarea{background-color:#0000;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex;padding-block:0}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}} /*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer components;:host{display:block}.hb-tree-select{box-sizing:border-box;color:var(--hb-color-text);font-size:var(--hb-font-size-base);position:relative;width:100%}.hb-tree-select__input-wrapper{align-items:center;background-color:var(--hb-color-bg-container);border:1px solid var(--hb-input-border-color,var(--hb-color-border));border-radius:var(--hb-input-radius,var(--hb-border-radius-sm));box-sizing:border-box;cursor:pointer;display:flex;height:var(--hb-size-default,32px);padding:0 var(--hb-spacing-sm);transition:border-color var(--hb-transition-duration,.2s)}.hb-tree-select__input-wrapper:hover{border-color:var(--hb-input-hover-border-color,var(--hb-color-primary))}.hb-tree-select--open .hb-tree-select__input-wrapper{border-color:var(--hb-input-focus-border-color,var(--hb-color-primary))}.hb-tree-select--disabled .hb-tree-select__input-wrapper{background-color:var(--hb-color-fill-tertiary);cursor:not-allowed;opacity:.6}.hb-tree-select__display{flex:1;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;user-select:none;white-space:nowrap}.hb-tree-select__display--placeholder{color:var(--hb-input-placeholder-color,var(--hb-color-text-placeholder))}.hb-tree-select__suffix{gap:var(--hb-spacing-xxs)}.hb-tree-select__clear,.hb-tree-select__suffix{align-items:center;color:var(--hb-color-text-tertiary);display:inline-flex}.hb-tree-select__clear{background-color:var(--hb-color-fill);border-radius:50%;cursor:pointer;height:16px;justify-content:center;width:16px}.hb-tree-select__clear svg{height:10px;width:10px}.hb-tree-select__clear:hover{color:var(--hb-color-text-secondary)}.hb-tree-select__arrow-icon{align-items:center;color:var(--hb-color-text-tertiary);display:inline-flex;height:12px;transition:transform var(--hb-transition-duration,.2s);width:12px}.hb-tree-select__arrow-icon svg{height:100%;width:100%}.hb-tree-select__arrow-icon--open{transform:rotate(180deg)}.hb-tree-select__dropdown{background-color:var(--hb-color-bg-elevated);border:1px solid var(--hb-color-border-secondary);border-radius:var(--hb-border-radius-sm);box-shadow:0 6px 16px #00000014;box-sizing:border-box;left:0;max-height:280px;overflow-y:auto;padding:var(--hb-spacing-xxs);position:absolute;top:calc(100% + 4px);width:100%;z-index:1050}.hb-tree-select__empty{color:var(--hb-color-text-tertiary);font-size:var(--hb-font-size-sm);padding:var(--hb-spacing-md);text-align:center}.hb-tree-select__children,.hb-tree-select__tree{list-style:none;margin:0;padding:0}.hb-tree-select__node{list-style:none;white-space:nowrap}.hb-tree-select__node-content{align-items:center;border-radius:var(--hb-border-radius-sm);box-sizing:border-box;cursor:pointer;display:flex;gap:var(--hb-spacing-xxs);height:28px;padding-right:var(--hb-spacing-xs);transition:background-color var(--hb-transition-duration,.2s)}.hb-tree-select__node-content:hover{background-color:var(--hb-color-fill-tertiary)}.hb-tree-select__node-content--selected{color:var(--hb-color-primary);font-weight:500}.hb-tree-select__node-content--checked,.hb-tree-select__node-content--selected{background-color:var(--hb-color-primary-bg)}.hb-tree-select__node--disabled>.hb-tree-select__node-content{cursor:not-allowed;opacity:.5}.hb-tree-select__node--disabled>.hb-tree-select__node-content:hover{background-color:#0000}.hb-tree-select__switcher{flex-shrink:0;height:18px;width:18px}.hb-tree-select__arrow,.hb-tree-select__switcher{align-items:center;color:var(--hb-color-text-tertiary);display:inline-flex;justify-content:center}.hb-tree-select__arrow{height:12px;transition:transform var(--hb-transition-duration,.2s);width:12px}.hb-tree-select__arrow svg{height:100%;width:100%}.hb-tree-select__arrow--expanded{transform:rotate(90deg)}.hb-tree-select__checkbox{align-items:center;background-color:var(--hb-color-bg-container);border:1px solid var(--hb-color-border);border-radius:var(--hb-border-radius-xs,2px);color:#fff;display:inline-flex;flex-shrink:0;height:16px;justify-content:center;transition:all var(--hb-transition-duration,.2s);width:16px}.hb-tree-select__checkbox svg{height:12px;width:12px}.hb-tree-select__checkbox-dash{background-color:#fff;border-radius:1px;display:block;height:2px;width:10px}.hb-tree-select__checkbox:hover:not(.hb-tree-select__checkbox--disabled){border-color:var(--hb-color-primary)}.hb-tree-select__checkbox--checked,.hb-tree-select__checkbox--indeterminate{background-color:var(--hb-color-primary);border-color:var(--hb-color-primary)}.hb-tree-select__checkbox--disabled{cursor:not-allowed}.hb-tree-select__title{flex:1;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;user-select:none}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}';const n=s;const a=class{constructor(r){e(this,r);this.hbChange=t(this,"hbChange",7);this.hbVisibleChange=t(this,"hbVisibleChange",7)}get el(){return r(this)}data=[];modelValue="";multiple=false;placeholder="请选择";disabled=false;checkable=false;defaultExpandAll=false;isOpen=false;internalExpanded=[];internalSelected=[];internalChecked=[];hbChange;hbVisibleChange;clickOutside=o({host:null,isOpen:()=>this.isOpen,onClose:()=>this.closeDropdown()});componentWillLoad(){this.syncFromModelValue();if(this.defaultExpandAll){const e=[];this.collectExpandableKeys(this.data,e);this.internalExpanded=e}}componentDidLoad(){this.clickOutside=o({host:this.el,isOpen:()=>this.isOpen,onClose:()=>this.closeDropdown()});this.clickOutside.connect()}disconnectedCallback(){this.clickOutside.disconnect()}syncFromModelValue(){if(this.multiple){const e=Array.isArray(this.modelValue)?this.modelValue:[];this.internalSelected=[...e];this.internalChecked=[...e]}else{const e=typeof this.modelValue==="string"?this.modelValue:"";this.internalSelected=e?[e]:[];this.internalChecked=e?[e]:[]}}collectExpandableKeys(e,t){for(const r of e){if(r.children&&r.children.length>0){t.push(r.key);this.collectExpandableKeys(r.children,t)}}}findTitle(e,t){for(const r of e){if(r.key===t)return r.title;if(r.children){const e=this.findTitle(r.children,t);if(e)return e}}return null}getDisplayText(){if(this.multiple){const e=Array.isArray(this.modelValue)?this.modelValue:[];if(e.length===0)return"";const t=e.map((e=>this.findTitle(this.data,e)||e));return t.join(" / ")}const e=typeof this.modelValue==="string"?this.modelValue:"";return e?this.findTitle(this.data,e)||e:""}openDropdown=()=>{if(this.disabled||this.isOpen)return;this.isOpen=true;this.hbVisibleChange.emit(true)};closeDropdown=()=>{if(!this.isOpen)return;this.isOpen=false;this.hbVisibleChange.emit(false)};toggleDropdown=()=>{if(this.disabled)return;if(this.isOpen)this.closeDropdown();else this.openDropdown()};handleNodeSelect=e=>{if(this.multiple){const t=[...this.internalSelected];const r=t.indexOf(e);if(r>=0)t.splice(r,1);else t.push(e);this.internalSelected=t;this.modelValue=t;this.hbChange.emit(t)}else{this.internalSelected=[e];this.modelValue=e;this.hbChange.emit(e);this.closeDropdown()}};handleNodeCheck=e=>{const t=new Set(this.internalChecked);const r=t.has(e.key);if(r){this.removeDescendantKeys(e,t);t.delete(e.key)}else{t.add(e.key);this.collectCheckableDescendantKeys(e,t)}this.reconcileAncestors(e,t);const i=Array.from(t);this.internalChecked=i;this.modelValue=i;this.hbChange.emit(i)};removeDescendantKeys(e,t){if(!e.children)return;for(const r of e.children){t.delete(r.key);this.removeDescendantKeys(r,t)}}collectCheckableDescendantKeys(e,t){if(!e.children)return;for(const r of e.children){if(!r.disabled)t.add(r.key);this.collectCheckableDescendantKeys(r,t)}}reconcileAncestors(e,t){const r=this.findAncestors(this.data,e.key,[]);for(const e of r){if(e.disabled||!e.children||e.children.length===0)continue;const r=e.children.filter((e=>!e.disabled));if(r.length===0)continue;if(r.every((e=>t.has(e.key))))t.add(e.key);else t.delete(e.key)}}findAncestors(e,t,r){for(const i of e){if(i.key===t)return r;if(i.children&&i.children.length>0){const e=this.findAncestors(i.children,t,[i,...r]);if(e)return e}}return null}computeIndeterminateKeys(){const e=new Set;const t=new Set(this.internalChecked);const r=i=>{if(!i.children||i.children.length===0)return false;let o=false;for(const e of i.children){if(r(e))o=true;if(t.has(e.key))o=true}if(o&&!t.has(i.key))e.add(i.key);return o};for(const e of this.data)r(e);return e}handleToggleExpand=(e,t)=>{t.stopPropagation();const r=[...this.internalExpanded];const i=r.indexOf(e.key);if(i>=0)r.splice(i,1);else r.push(e.key);this.internalExpanded=r};handleClear=e=>{e.stopPropagation();if(this.disabled)return;this.internalSelected=[];this.internalChecked=[];this.modelValue=this.multiple?[]:"";this.hbChange.emit(this.modelValue)};renderNode=(e,t,r)=>{const o=!!(e.children&&e.children.length>0);const s=this.internalExpanded.includes(e.key);const n=this.internalSelected.includes(e.key);const a=this.internalChecked.includes(e.key);const l=r.has(e.key);const c=!!e.disabled;return i("li",{class:{"hb-tree-select__node":true,"hb-tree-select__node--disabled":c},role:"treeitem"},i("div",{class:{"hb-tree-select__node-content":true,"hb-tree-select__node-content--selected":n,"hb-tree-select__node-content--checked":a},style:{paddingLeft:`${t*18+8}px`}},i("span",{class:"hb-tree-select__switcher",onClick:t=>o&&this.handleToggleExpand(e,t)},o?i("span",{class:{"hb-tree-select__arrow":true,"hb-tree-select__arrow--expanded":s},"aria-hidden":"true"},i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"},i("path",{d:"M9 6l6 6-6 6"}))):null),this.checkable&&i("span",{class:{"hb-tree-select__checkbox":true,"hb-tree-select__checkbox--checked":a,"hb-tree-select__checkbox--indeterminate":l,"hb-tree-select__checkbox--disabled":c},role:"checkbox","aria-checked":l?"mixed":a?"true":"false",onClick:()=>!c&&this.handleNodeCheck(e)},a?i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":3,"stroke-linecap":"round","stroke-linejoin":"round"},i("path",{d:"M5 12l5 5L20 7"})):l?i("span",{class:"hb-tree-select__checkbox-dash"}):null),i("span",{class:"hb-tree-select__title",onClick:()=>!c&&this.handleNodeSelect(e.key)},e.title)),o&&s&&i("ul",{class:"hb-tree-select__children",role:"group"},e.children.map((e=>this.renderNode(e,t+1,r)))))};render(){const e=this.getDisplayText();const t=this.multiple?Array.isArray(this.modelValue)&&this.modelValue.length>0:typeof this.modelValue==="string"&&this.modelValue!=="";const r=this.checkable?this.computeIndeterminateKeys():new Set;return i("div",{key:"f79d67b1bb02e0d51a9fe2b35a36a156801e9584",class:{"hb-tree-select":true,"hb-tree-select--open":this.isOpen,"hb-tree-select--disabled":this.disabled,"hb-tree-select--multiple":this.multiple}},i("div",{key:"59355a67c4316c98a682df3c27cd19387a8d4742",class:"hb-tree-select__input-wrapper",onClick:this.toggleDropdown},i("span",{key:"7b4fd7b9a4c15193f687f1f579eb2e8268b975df",class:{"hb-tree-select__display":true,"hb-tree-select__display--placeholder":!t}},t?e:this.placeholder),i("span",{key:"1640eacb50af399e02785b14d72c547afe8fcfcf",class:"hb-tree-select__suffix"},t&&i("span",{key:"c16d5a458d3738bccb3c70cc985df43dcacb4220",class:"hb-tree-select__clear",onClick:this.handleClear,role:"button","aria-label":"清空"},i("svg",{key:"757db41a4651d25df357d2c975810bbfdddcca22",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"},i("path",{key:"a72adce81b2900cdf11faa663f92dbaa7053921e",d:"M6 6l12 12M18 6L6 18"}))),i("span",{key:"0b40c484fe2f7e23b04cfb26cb0018f050522fec",class:{"hb-tree-select__arrow-icon":true,"hb-tree-select__arrow-icon--open":this.isOpen},"aria-hidden":"true"},i("svg",{key:"30523c9183feaab984ff557e8c735b7a04423f0c",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"},i("path",{key:"15eae62246639d6e05071123e89ad31c82ea576a",d:"M6 9l6 6 6-6"}))))),this.isOpen&&i("div",{key:"e6eb7b145fe8b71b09511e8e0c3a3a9073508397",class:"hb-tree-select__dropdown"},this.data.length===0?i("div",{class:"hb-tree-select__empty"},"暂无数据"):i("ul",{class:"hb-tree-select__tree",role:"tree"},this.data.map((e=>this.renderNode(e,0,r))))))}};a.style=n;export{a as hb_tree_select};
2
- //# sourceMappingURL=p-edbda423.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["treeSelectCss","HbTreeSelectStyle0","TreeSelect","data","modelValue","multiple","placeholder","disabled","checkable","defaultExpandAll","isOpen","internalExpanded","internalSelected","internalChecked","hbChange","hbVisibleChange","clickOutside","createClickOutsideHandler","host","this","onClose","closeDropdown","componentWillLoad","syncFromModelValue","all","collectExpandableKeys","componentDidLoad","el","connect","disconnectedCallback","disconnect","arr","Array","isArray","single","nodes","out","node","children","length","push","key","findTitle","title","found","getDisplayText","titles","map","k","join","openDropdown","emit","toggleDropdown","handleNodeSelect","current","idx","indexOf","splice","handleNodeCheck","next","Set","wasChecked","has","removeDescendantKeys","delete","add","collectCheckableDescendantKeys","reconcileAncestors","result","from","child","parents","findAncestors","parent","filter","c","every","acc","computeIndeterminateKeys","checked","walk","hasChecked","root","handleToggleExpand","e","stopPropagation","handleClear","renderNode","level","indeterminateKeys","hasChildren","expanded","includes","selected","indeterminate","h","class","role","style","paddingLeft","onClick","viewBox","fill","stroke","d","render","displayText","hasValue"],"sources":["src/components/TreeSelect/tree-select.css?tag=hb-tree-select&encapsulation=shadow","src/components/TreeSelect/TreeSelect.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.hb-tree-select {\n position: relative;\n width: 100%;\n font-size: var(--hb-font-size-base);\n color: var(--hb-color-text);\n box-sizing: border-box;\n}\n\n.hb-tree-select__input-wrapper {\n display: flex;\n align-items: center;\n height: var(--hb-size-default, 32px);\n padding: 0 var(--hb-spacing-sm);\n border: 1px solid var(--hb-input-border-color, var(--hb-color-border));\n border-radius: var(--hb-input-radius, var(--hb-border-radius-sm));\n background-color: var(--hb-color-bg-container);\n cursor: pointer;\n transition: border-color var(--hb-transition-duration, 0.2s);\n box-sizing: border-box;\n}\n\n.hb-tree-select__input-wrapper:hover {\n border-color: var(--hb-input-hover-border-color, var(--hb-color-primary));\n}\n\n.hb-tree-select--open .hb-tree-select__input-wrapper {\n border-color: var(--hb-input-focus-border-color, var(--hb-color-primary));\n}\n\n.hb-tree-select--disabled .hb-tree-select__input-wrapper {\n background-color: var(--hb-color-fill-tertiary);\n cursor: not-allowed;\n opacity: 0.6;\n}\n\n.hb-tree-select__display {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n user-select: none;\n}\n\n.hb-tree-select__display--placeholder {\n color: var(--hb-input-placeholder-color, var(--hb-color-text-placeholder));\n}\n\n.hb-tree-select__suffix {\n display: inline-flex;\n align-items: center;\n gap: var(--hb-spacing-xxs);\n color: var(--hb-color-text-tertiary);\n}\n\n.hb-tree-select__clear {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n color: var(--hb-color-text-tertiary);\n background-color: var(--hb-color-fill);\n cursor: pointer;\n}\n\n.hb-tree-select__clear svg {\n width: 10px;\n height: 10px;\n}\n\n.hb-tree-select__clear:hover {\n color: var(--hb-color-text-secondary);\n}\n\n.hb-tree-select__arrow-icon {\n display: inline-flex;\n align-items: center;\n width: 12px;\n height: 12px;\n color: var(--hb-color-text-tertiary);\n transition: transform var(--hb-transition-duration, 0.2s);\n}\n\n.hb-tree-select__arrow-icon svg {\n width: 100%;\n height: 100%;\n}\n\n.hb-tree-select__arrow-icon--open {\n transform: rotate(180deg);\n}\n\n.hb-tree-select__dropdown {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n width: 100%;\n max-height: 280px;\n overflow-y: auto;\n padding: var(--hb-spacing-xxs);\n background-color: var(--hb-color-bg-elevated);\n border: 1px solid var(--hb-color-border-secondary);\n border-radius: var(--hb-border-radius-sm);\n box-shadow: 0 6px 16px rgba(0, 0, 0, 0.08);\n box-sizing: border-box;\n z-index: 1050;\n}\n\n.hb-tree-select__empty {\n padding: var(--hb-spacing-md);\n text-align: center;\n color: var(--hb-color-text-tertiary);\n font-size: var(--hb-font-size-sm);\n}\n\n.hb-tree-select__tree,\n.hb-tree-select__children {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.hb-tree-select__node {\n list-style: none;\n white-space: nowrap;\n}\n\n.hb-tree-select__node-content {\n display: flex;\n align-items: center;\n gap: var(--hb-spacing-xxs);\n height: 28px;\n padding-right: var(--hb-spacing-xs);\n border-radius: var(--hb-border-radius-sm);\n cursor: pointer;\n transition: background-color var(--hb-transition-duration, 0.2s);\n box-sizing: border-box;\n}\n\n.hb-tree-select__node-content:hover {\n background-color: var(--hb-color-fill-tertiary);\n}\n\n.hb-tree-select__node-content--selected {\n background-color: var(--hb-color-primary-bg);\n color: var(--hb-color-primary);\n font-weight: 500;\n}\n\n.hb-tree-select__node-content--checked {\n background-color: var(--hb-color-primary-bg);\n}\n\n.hb-tree-select__node--disabled > .hb-tree-select__node-content {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n.hb-tree-select__node--disabled > .hb-tree-select__node-content:hover {\n background-color: transparent;\n}\n\n.hb-tree-select__switcher {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 18px;\n flex-shrink: 0;\n color: var(--hb-color-text-tertiary);\n}\n\n.hb-tree-select__arrow {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 12px;\n height: 12px;\n color: var(--hb-color-text-tertiary);\n transition: transform var(--hb-transition-duration, 0.2s);\n}\n\n.hb-tree-select__arrow svg {\n width: 100%;\n height: 100%;\n}\n\n.hb-tree-select__arrow--expanded {\n transform: rotate(90deg);\n}\n\n.hb-tree-select__checkbox {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n border: 1px solid var(--hb-color-border);\n border-radius: var(--hb-border-radius-xs, 2px);\n background-color: var(--hb-color-bg-container);\n color: #fff;\n flex-shrink: 0;\n transition: all var(--hb-transition-duration, 0.2s);\n}\n\n.hb-tree-select__checkbox svg {\n width: 12px;\n height: 12px;\n}\n\n.hb-tree-select__checkbox-dash {\n display: block;\n width: 10px;\n height: 2px;\n background-color: #fff;\n border-radius: 1px;\n}\n\n.hb-tree-select__checkbox:hover:not(.hb-tree-select__checkbox--disabled) {\n border-color: var(--hb-color-primary);\n}\n\n.hb-tree-select__checkbox--checked,\n.hb-tree-select__checkbox--indeterminate {\n background-color: var(--hb-color-primary);\n border-color: var(--hb-color-primary);\n}\n\n.hb-tree-select__checkbox--disabled {\n cursor: not-allowed;\n}\n\n.hb-tree-select__title {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n user-select: none;\n}\n","import { Component, h, Prop, Event, EventEmitter, State, Element } from '@stencil/core';\nimport { createClickOutsideHandler } from '../../utils/click-outside';\nimport type { TreeNode } from '../Tree/Tree';\n\n/**\n * TreeSelect 树形选择器\n * 类似 Select,但下拉选项以树形结构展示,支持单选与多选\n */\n@Component({\n tag: 'hb-tree-select',\n styleUrl: 'tree-select.css',\n shadow: true,\n})\nexport class TreeSelect {\n @Element() el: HTMLElement;\n\n /**\n * 可选项数据源(与 Tree 相同的递归树结构)\n */\n @Prop() data: TreeNode[] = [];\n\n /**\n * (受控)绑定值,单选为 string,多选为 string[]\n */\n @Prop({ mutable: true }) modelValue: string | string[] = '';\n\n /**\n * 是否多选\n * @default false\n */\n @Prop() multiple: boolean = false;\n\n /**\n * 占位文本\n * @default '请选择'\n */\n @Prop() placeholder: string = '请选择';\n\n /**\n * 是否禁用\n * @default false\n */\n @Prop() disabled: boolean = false;\n\n /**\n * 是否显示 checkbox(多选模式下推荐开启)\n * @default false\n */\n @Prop() checkable: boolean = false;\n\n /**\n * 是否默认展开全部节点\n * @default false\n */\n @Prop() defaultExpandAll: boolean = false;\n\n @State() isOpen: boolean = false;\n @State() internalExpanded: string[] = [];\n @State() internalSelected: string[] = [];\n @State() internalChecked: string[] = [];\n\n /**\n * 值变化事件(单选为 string,多选为 string[])\n */\n @Event() hbChange: EventEmitter<string | string[]>;\n\n /**\n * 下拉浮层显隐变化事件\n */\n @Event() hbVisibleChange: EventEmitter<boolean>;\n\n private clickOutside = createClickOutsideHandler({\n host: null as any,\n isOpen: () => this.isOpen,\n onClose: () => this.closeDropdown(),\n });\n\n componentWillLoad() {\n this.syncFromModelValue();\n if (this.defaultExpandAll) {\n const all: string[] = [];\n this.collectExpandableKeys(this.data, all);\n this.internalExpanded = all;\n }\n }\n\n componentDidLoad() {\n this.clickOutside = createClickOutsideHandler({\n host: this.el,\n isOpen: () => this.isOpen,\n onClose: () => this.closeDropdown(),\n });\n this.clickOutside.connect();\n }\n\n disconnectedCallback() {\n this.clickOutside.disconnect();\n }\n\n private syncFromModelValue() {\n if (this.multiple) {\n const arr = Array.isArray(this.modelValue) ? this.modelValue : [];\n this.internalSelected = [...arr];\n this.internalChecked = [...arr];\n } else {\n const single = typeof this.modelValue === 'string' ? this.modelValue : '';\n this.internalSelected = single ? [single] : [];\n this.internalChecked = single ? [single] : [];\n }\n }\n\n private collectExpandableKeys(nodes: TreeNode[], out: string[]) {\n for (const node of nodes) {\n if (node.children && node.children.length > 0) {\n out.push(node.key);\n this.collectExpandableKeys(node.children, out);\n }\n }\n }\n\n private findTitle(nodes: TreeNode[], key: string): string | null {\n for (const node of nodes) {\n if (node.key === key) return node.title;\n if (node.children) {\n const found = this.findTitle(node.children, key);\n if (found) return found;\n }\n }\n return null;\n }\n\n private getDisplayText(): string {\n if (this.multiple) {\n const arr = Array.isArray(this.modelValue) ? this.modelValue : [];\n if (arr.length === 0) return '';\n const titles = arr.map((k) => this.findTitle(this.data, k) || k);\n return titles.join(' / ');\n }\n const single = typeof this.modelValue === 'string' ? this.modelValue : '';\n return single ? this.findTitle(this.data, single) || single : '';\n }\n\n private openDropdown = () => {\n if (this.disabled || this.isOpen) return;\n this.isOpen = true;\n this.hbVisibleChange.emit(true);\n };\n\n private closeDropdown = () => {\n if (!this.isOpen) return;\n this.isOpen = false;\n this.hbVisibleChange.emit(false);\n };\n\n private toggleDropdown = () => {\n if (this.disabled) return;\n if (this.isOpen) this.closeDropdown();\n else this.openDropdown();\n };\n\n private handleNodeSelect = (key: string) => {\n if (this.multiple) {\n const current = [...this.internalSelected];\n const idx = current.indexOf(key);\n if (idx >= 0) current.splice(idx, 1);\n else current.push(key);\n this.internalSelected = current;\n this.modelValue = current;\n this.hbChange.emit(current);\n } else {\n this.internalSelected = [key];\n this.modelValue = key;\n this.hbChange.emit(key);\n this.closeDropdown();\n }\n };\n\n private handleNodeCheck = (node: TreeNode) => {\n // 父子联动(对齐 Tree 组件算法):勾选/取消自身 + 级联后代 + 自底向上修正祖先\n const next = new Set(this.internalChecked);\n const wasChecked = next.has(node.key);\n if (wasChecked) {\n this.removeDescendantKeys(node, next);\n next.delete(node.key);\n } else {\n next.add(node.key);\n this.collectCheckableDescendantKeys(node, next);\n }\n this.reconcileAncestors(node, next);\n const result = Array.from(next);\n this.internalChecked = result;\n this.modelValue = result;\n this.hbChange.emit(result);\n };\n\n /** 取消父级时级联取消所有后代(含禁用项,因为它们是被父带选的) */\n private removeDescendantKeys(node: TreeNode, out: Set<string>) {\n if (!node.children) return;\n for (const child of node.children) {\n out.delete(child.key);\n this.removeDescendantKeys(child, out);\n }\n }\n\n /** 勾选父级时级联勾选所有非禁用后代 */\n private collectCheckableDescendantKeys(node: TreeNode, out: Set<string>) {\n if (!node.children) return;\n for (const child of node.children) {\n if (!child.disabled) out.add(child.key);\n this.collectCheckableDescendantKeys(child, out);\n }\n }\n\n /** 自底向上修正祖先:所有非禁用子节点全选 → 父勾选;否则移出(部分选体现为 indeterminate) */\n private reconcileAncestors(node: TreeNode, next: Set<string>) {\n const parents = this.findAncestors(this.data, node.key, []);\n for (const parent of parents) {\n if (parent.disabled || !parent.children || parent.children.length === 0) continue;\n const checkable = parent.children.filter(c => !c.disabled);\n if (checkable.length === 0) continue;\n if (checkable.every(c => next.has(c.key))) next.add(parent.key);\n else next.delete(parent.key);\n }\n }\n\n private findAncestors(nodes: TreeNode[], key: string, acc: TreeNode[]): TreeNode[] | null {\n for (const node of nodes) {\n if (node.key === key) return acc;\n if (node.children && node.children.length > 0) {\n const found = this.findAncestors(node.children, key, [node, ...acc]);\n if (found) return found;\n }\n }\n return null;\n }\n\n /** 计算当前 checked 集合下处于「部分选中」的节点(用于三方态渲染) */\n private computeIndeterminateKeys(): Set<string> {\n const result = new Set<string>();\n const checked = new Set(this.internalChecked);\n const walk = (node: TreeNode): boolean => {\n if (!node.children || node.children.length === 0) return false;\n let hasChecked = false;\n for (const child of node.children) {\n if (walk(child)) hasChecked = true;\n if (checked.has(child.key)) hasChecked = true;\n }\n if (hasChecked && !checked.has(node.key)) result.add(node.key);\n return hasChecked;\n };\n for (const root of this.data) walk(root);\n return result;\n }\n\n private handleToggleExpand = (node: TreeNode, e: Event) => {\n e.stopPropagation();\n const current = [...this.internalExpanded];\n const idx = current.indexOf(node.key);\n if (idx >= 0) current.splice(idx, 1);\n else current.push(node.key);\n this.internalExpanded = current;\n };\n\n private handleClear = (e: Event) => {\n e.stopPropagation();\n if (this.disabled) return;\n this.internalSelected = [];\n this.internalChecked = [];\n this.modelValue = this.multiple ? [] : '';\n this.hbChange.emit(this.modelValue);\n };\n\n private renderNode = (node: TreeNode, level: number, indeterminateKeys: Set<string>): any => {\n const hasChildren = !!(node.children && node.children.length > 0);\n const expanded = this.internalExpanded.includes(node.key);\n const selected = this.internalSelected.includes(node.key);\n const checked = this.internalChecked.includes(node.key);\n const indeterminate = indeterminateKeys.has(node.key);\n const disabled = !!node.disabled;\n\n return (\n <li class={{ 'hb-tree-select__node': true, 'hb-tree-select__node--disabled': disabled }} role=\"treeitem\">\n <div\n class={{\n 'hb-tree-select__node-content': true,\n 'hb-tree-select__node-content--selected': selected,\n 'hb-tree-select__node-content--checked': checked,\n }}\n style={{ paddingLeft: `${level * 18 + 8}px` }}\n >\n <span class=\"hb-tree-select__switcher\" onClick={(e) => hasChildren && this.handleToggleExpand(node, e)}>\n {hasChildren ? (\n <span class={{ 'hb-tree-select__arrow': true, 'hb-tree-select__arrow--expanded': expanded }} aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width={2} stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M9 6l6 6-6 6\" />\n </svg>\n </span>\n ) : null}\n </span>\n\n {this.checkable && (\n <span\n class={{\n 'hb-tree-select__checkbox': true,\n 'hb-tree-select__checkbox--checked': checked,\n 'hb-tree-select__checkbox--indeterminate': indeterminate,\n 'hb-tree-select__checkbox--disabled': disabled,\n }}\n role=\"checkbox\"\n aria-checked={indeterminate ? 'mixed' : checked ? 'true' : 'false'}\n onClick={() => !disabled && this.handleNodeCheck(node)}\n >\n {checked ? (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width={3} stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M5 12l5 5L20 7\" />\n </svg>\n ) : indeterminate ? (\n <span class=\"hb-tree-select__checkbox-dash\" />\n ) : null}\n </span>\n )}\n\n <span class=\"hb-tree-select__title\" onClick={() => !disabled && this.handleNodeSelect(node.key)}>\n {node.title}\n </span>\n </div>\n\n {hasChildren && expanded && (\n <ul class=\"hb-tree-select__children\" role=\"group\">\n {node.children!.map((child) => this.renderNode(child, level + 1, indeterminateKeys))}\n </ul>\n )}\n </li>\n );\n };\n\n render() {\n const displayText = this.getDisplayText();\n const hasValue = this.multiple\n ? Array.isArray(this.modelValue) && this.modelValue.length > 0\n : typeof this.modelValue === 'string' && this.modelValue !== '';\n const indeterminateKeys = this.checkable ? this.computeIndeterminateKeys() : new Set<string>();\n\n return (\n <div\n class={{\n 'hb-tree-select': true,\n 'hb-tree-select--open': this.isOpen,\n 'hb-tree-select--disabled': this.disabled,\n 'hb-tree-select--multiple': this.multiple,\n }}\n >\n <div class=\"hb-tree-select__input-wrapper\" onClick={this.toggleDropdown}>\n <span\n class={{\n 'hb-tree-select__display': true,\n 'hb-tree-select__display--placeholder': !hasValue,\n }}\n >\n {hasValue ? displayText : this.placeholder}\n </span>\n <span class=\"hb-tree-select__suffix\">\n {hasValue && (\n <span class=\"hb-tree-select__clear\" onClick={this.handleClear} role=\"button\" aria-label=\"清空\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width={2} stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M6 6l12 12M18 6L6 18\" />\n </svg>\n </span>\n )}\n <span class={{ 'hb-tree-select__arrow-icon': true, 'hb-tree-select__arrow-icon--open': this.isOpen }} aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width={2} stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M6 9l6 6 6-6\" />\n </svg>\n </span>\n </span>\n </div>\n\n {this.isOpen && (\n <div class=\"hb-tree-select__dropdown\">\n {this.data.length === 0 ? (\n <div class=\"hb-tree-select__empty\">暂无数据</div>\n ) : (\n <ul class=\"hb-tree-select__tree\" role=\"tree\">\n {this.data.map((node) => this.renderNode(node, 0, indeterminateKeys))}\n </ul>\n )}\n </div>\n )}\n </div>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["imageCss","HbImageStyle0","Image","src","alt","width","height","fit","lazy","preview","radius","loaded","error","previewVisible","handleLoad","this","handleError","render","h","key","class","style","borderRadius","objectFit","loading","undefined","onLoad","onError","onClick"],"sources":["src/components/Image/image.css?tag=hb-image&encapsulation=shadow","src/components/Image/Image.tsx"],"sourcesContent":[":host { display: inline-block; }\n.hb-image { position: relative; display: inline-flex; overflow: hidden; background: var(--hb-color-fill-quaternary); }\n.hb-image__inner { width: 100%; height: 100%; opacity: 0; transition: opacity 0.3s; }\n.hb-image__inner--loaded { opacity: 1; }\n.hb-image__error { display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; font-size: var(--hb-font-size-sm); color: var(--hb-color-text-secondary); }\n.hb-image__preview { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0,0,0,0.8); display: flex; align-items: center; justify-content: center; z-index: 2000; cursor: zoom-out; }\n.hb-image__preview-img { max-width: 90%; max-height: 90%; object-fit: contain; }\n","import { Component, h, Prop, State } from '@stencil/core';\n\n@Component({ tag: 'hb-image', styleUrl: 'image.css', shadow: true })\nexport class Image {\n @Prop() src: string = '';\n @Prop() alt: string = '';\n @Prop() width?: string;\n @Prop() height?: string;\n @Prop() fit: 'fill' | 'contain' | 'cover' | 'none' | 'scale-down' = 'fill';\n @Prop() lazy: boolean = false;\n @Prop() preview: boolean = false;\n @Prop() radius?: string;\n\n @State() loaded: boolean = false;\n @State() error: boolean = false;\n @State() previewVisible: boolean = false;\n\n private handleLoad = () => { this.loaded = true; };\n private handleError = () => { this.error = true; };\n\n render() {\n return (\n <div class=\"hb-image\" style={{ width: this.width, height: this.height, borderRadius: this.radius }}>\n {!this.error ? (\n <img\n src={this.src} alt={this.alt}\n class={{ 'hb-image__inner': true, 'hb-image__inner--loaded': this.loaded }}\n style={{ objectFit: this.fit }}\n loading={this.lazy ? 'lazy' : undefined}\n onLoad={this.handleLoad}\n onError={this.handleError}\n onClick={() => this.preview && (this.previewVisible = true)}\n />\n ) : (\n <div class=\"hb-image__error\">图片加载失败</div>\n )}\n {this.previewVisible && (\n <div class=\"hb-image__preview\" onClick={() => { this.previewVisible = false; }}>\n <img src={this.src} alt={this.alt} class=\"hb-image__preview-img\" />\n </div>\n )}\n </div>\n );\n }\n}\n"],"mappings":"2CAAA,MAAMA,EAAW,opMACjB,MAAAC,EAAeD,E,MCEFE,EAAK,M,yBACRC,IAAc,GACdC,IAAc,GACdC,MACAC,OACAC,IAA4D,OAC5DC,KAAgB,MAChBC,QAAmB,MACnBC,OAECC,OAAkB,MAClBC,MAAiB,MACjBC,eAA0B,MAE3BC,WAAa,KAAQC,KAAKJ,OAAS,IAAI,EACvCK,YAAc,KAAQD,KAAKH,MAAQ,IAAI,EAE/C,MAAAK,GACE,OACEC,EAAA,OAAAC,IAAA,2CAAKC,MAAM,WAAWC,MAAO,CAAEhB,MAAOU,KAAKV,MAAOC,OAAQS,KAAKT,OAAQgB,aAAcP,KAAKL,UACtFK,KAAKH,MACLM,EAAA,OACEf,IAAKY,KAAKZ,IAAKC,IAAKW,KAAKX,IACzBgB,MAAO,CAAE,kBAAmB,KAAM,0BAA2BL,KAAKJ,QAClEU,MAAO,CAAEE,UAAWR,KAAKR,KACzBiB,QAAST,KAAKP,KAAO,OAASiB,UAC9BC,OAAQX,KAAKD,WACba,QAASZ,KAAKC,YACdY,QAAS,IAAMb,KAAKN,UAAYM,KAAKF,eAAiB,QAGxDK,EAAA,OAAKE,MAAM,mBAAiB,UAE7BL,KAAKF,gBACJK,EAAA,OAAAC,IAAA,2CAAKC,MAAM,oBAAoBQ,QAAS,KAAQb,KAAKF,eAAiB,KAAK,GACzEK,EAAA,OAAAC,IAAA,2CAAKhB,IAAKY,KAAKZ,IAAKC,IAAKW,KAAKX,IAAKgB,MAAM,2B","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{r as e,c as t,h as i}from"./p-e42dfa95.js";const n='/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}::file-selector-button{appearance:button;background-color:#0000;border:0 solid;border-radius:0;box-sizing:border-box;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;margin:0;margin-inline-end:4px;opacity:1;padding:0}:host,html{-webkit-text-size-adjust:100%;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);line-height:1.5;tab-size:4;-webkit-tap-highlight-color:transparent}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-size:1em;font-variation-settings:var(--default-mono-font-variation-settings,normal)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}button,input,optgroup,select,textarea{background-color:#0000;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex;padding-block:0}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}} /*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer components;:host{--hb-input-number-font-size:14px;--hb-input-number-height:32px;--hb-input-number-border-color:var(--hb-border-color,#dcdfe6);--hb-input-number-border-color-hover:var(--hb-color-primary);--hb-input-number-bg-color:var(--hb-color-white,#fff);display:inline-block;position:relative}.hb-input-number{display:inline-block;position:relative;width:180px}.hb-input-number,.hb-input-number__inner{line-height:var(--hb-input-number-height)}.hb-input-number__inner{-webkit-appearance:none;background-color:var(--hb-input-number-bg-color);border:1px solid var(--hb-input-number-border-color);border-radius:4px;box-sizing:border-box;color:var(--hb-color-text-regular,#606266);display:block;font-size:inherit;height:var(--hb-input-number-height);outline:none;padding:0 50px 0 15px;text-align:left;transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.hb-input-number--without-controls .hb-input-number__inner{padding:0 15px}.hb-input-number--controls-right .hb-input-number__inner{padding:0 15px 0 50px}.hb-input-number__inner:focus,.hb-input-number__inner:hover:not(:disabled){border-color:var(--hb-input-number-border-color-hover)}.hb-input-number__inner:disabled{background-color:var(--hb-fill-color-light,#f5f7fa);border-color:var(--hb-input-number-border-color);color:var(--hb-color-text-disabled,#c0c4cc);cursor:not-allowed}.hb-input-number__decrease,.hb-input-number__increase{align-items:center;background:var(--hb-fill-color-light,#f5f7fa);color:var(--hb-color-text-regular,#606266);cursor:pointer;display:flex;font-size:13px;height:calc(100% - 2px);justify-content:center;position:absolute;text-align:center;top:1px;transition:all .2s;-webkit-user-select:none;user-select:none;width:35px;z-index:1}.hb-input-number__decrease:hover:not(.hb-input-number__decrease--disabled),.hb-input-number__increase:hover:not(.hb-input-number__increase--disabled){color:var(--hb-color-primary)}.hb-input-number__decrease--disabled,.hb-input-number__increase--disabled{color:var(--hb-color-text-disabled,#c0c4cc);cursor:not-allowed}.hb-input-number__increase{border-radius:0 4px 4px 0;right:1px}.hb-input-number__decrease,.hb-input-number__increase{border-left:1px solid var(--hb-input-number-border-color)}.hb-input-number__decrease{border-radius:0;right:36px}.hb-input-number--controls-right .hb-input-number__increase{border-radius:0 4px 4px 0;right:1px}.hb-input-number--controls-right .hb-input-number__decrease{border-radius:0;right:36px}.hb-input-number__controls{background:var(--hb-fill-color-light,#f5f7fa);border-left:1px solid var(--hb-input-number-border-color);border-radius:0 4px 4px 0;height:calc(100% - 2px);position:absolute;right:1px;top:1px;width:35px}.hb-input-number--controls-right .hb-input-number__controls{border-left:none;border-radius:4px 0 0 4px;border-right:1px solid var(--hb-input-number-border-color);left:1px;right:auto}.hb-input-number--controls-right .hb-input-number__controls .hb-input-number__increase{border:none;border-bottom:1px solid var(--hb-input-number-border-color);border-radius:0;position:static}.hb-input-number--controls-right .hb-input-number__controls .hb-input-number__decrease{border:none;border-radius:0 0 0 4px;position:static}.hb-input-number--small{width:150px}.hb-input-number--small .hb-input-number__inner{font-size:12px;height:24px;line-height:24px;padding:0 40px 0 12px}.hb-input-number--large{width:200px}.hb-input-number--large .hb-input-number__inner{font-size:16px;height:40px;line-height:40px;padding:0 55px 0 18px}.hb-input-number--disabled{cursor:not-allowed}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}';const r=n;const o=class{constructor(i){e(this,i);this.hbChange=t(this,"hbChange",7);this.hbInput=t(this,"hbInput",7)}modelValue=0;size="default";disabled=false;readonly=false;min=-Infinity;max=Infinity;step=1;precision;stepStrictly=false;controls=true;controlsPosition="";name;inputId;placeholder;currentValue=0;hbChange;hbInput;componentDidLoad(){this.currentValue=this.modelValue}handleModelValueChange(){this.currentValue=this.modelValue}formatValue(e){if(this.precision!==undefined){return Number(e.toFixed(this.precision))}return e}clampValue(e){let t=Math.max(this.min,Math.min(this.max,e));if(this.stepStrictly){const e=this.step;t=Math.round(t/e)*e}return this.formatValue(t)}handleInput=e=>{const t=e.target;const i=parseFloat(t.value);if(isNaN(i)){this.currentValue=this.min}else{this.currentValue=this.clampValue(i)}this.modelValue=this.currentValue;this.hbInput.emit(this.currentValue)};handleChange=()=>{this.hbChange.emit(this.currentValue)};increase=()=>{if(this.disabled||this.readonly)return;const e=this.clampValue(this.currentValue+this.step);this.currentValue=e;this.modelValue=e;this.hbChange.emit(e)};decrease=()=>{if(this.disabled||this.readonly)return;const e=this.clampValue(this.currentValue-this.step);this.currentValue=e;this.modelValue=e;this.hbChange.emit(e)};render(){return i("div",{key:"b77486654ddd70a4661c1278ddc41e1a1c23078a",class:{"hb-input-number":true,[`hb-input-number--${this.size}`]:true,"hb-input-number--disabled":this.disabled,"hb-input-number--controls-right":this.controlsPosition==="right","hb-input-number--without-controls":!this.controls}},this.controls&&this.controlsPosition!=="right"&&i("span",{key:"c60ff723277ffd25f3515b406cd56ae5e062474b",class:{"hb-input-number__decrease":true,"hb-input-number__decrease--disabled":this.currentValue<=this.min},onClick:this.decrease},"−"),i("input",{key:"66828157b6c91818b2d93e98935eac0d0e9237f0",type:"number",id:this.inputId,name:this.name,class:"hb-input-number__inner",value:this.currentValue,disabled:this.disabled,readonly:this.readonly,placeholder:this.placeholder,min:this.min,max:this.max,step:this.step,onInput:this.handleInput,onChange:this.handleChange}),this.controls&&this.controlsPosition==="right"&&i("span",{key:"58e9f86173a4a3e7808a1ca4c22f0a2a4ba2f070",class:"hb-input-number__controls"},i("span",{key:"ff63589ce88775289c820a6cf02bab140993206a",class:{"hb-input-number__increase":true,"hb-input-number__increase--disabled":this.currentValue>=this.max},onClick:this.increase},"+"),i("span",{key:"9bf2c4305bc0bef3fbe3431960a79eac7e4cdbec",class:{"hb-input-number__decrease":true,"hb-input-number__decrease--disabled":this.currentValue<=this.min},onClick:this.decrease},"−")),this.controls&&this.controlsPosition!=="right"&&i("span",{key:"6bec03b900b7b62692fa0b9a6510ecb8cdb90fbb",class:{"hb-input-number__increase":true,"hb-input-number__increase--disabled":this.currentValue>=this.max},onClick:this.increase},"+"))}static get watchers(){return{modelValue:["handleModelValueChange"]}}};o.style=r;export{o as hb_input_number};
2
- //# sourceMappingURL=p-f9bb5217.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["inputNumberCss","HbInputNumberStyle0","InputNumber","modelValue","size","disabled","readonly","min","Infinity","max","step","precision","stepStrictly","controls","controlsPosition","name","inputId","placeholder","currentValue","hbChange","hbInput","componentDidLoad","this","handleModelValueChange","formatValue","value","undefined","Number","toFixed","clampValue","clamped","Math","round","handleInput","e","target","parseFloat","isNaN","emit","handleChange","increase","newValue","decrease","render","h","key","class","onClick","type","id","onInput","onChange"],"sources":["src/components/InputNumber/input-number.css?tag=hb-input-number&encapsulation=shadow","src/components/InputNumber/InputNumber.tsx"],"sourcesContent":[":host {\n display: inline-block;\n position: relative;\n --hb-input-number-font-size: 14px;\n --hb-input-number-height: 32px;\n --hb-input-number-border-color: var(--hb-border-color, #dcdfe6);\n --hb-input-number-border-color-hover: var(--hb-color-primary);\n --hb-input-number-bg-color: var(--hb-color-white, #ffffff);\n}\n\n.hb-input-number {\n position: relative;\n display: inline-block;\n width: 180px;\n line-height: var(--hb-input-number-height);\n}\n\n.hb-input-number__inner {\n -webkit-appearance: none;\n background-color: var(--hb-input-number-bg-color);\n border: 1px solid var(--hb-input-number-border-color);\n border-radius: 4px;\n box-sizing: border-box;\n color: var(--hb-color-text-regular, #606266);\n display: block;\n font-size: inherit;\n height: var(--hb-input-number-height);\n line-height: var(--hb-input-number-height);\n outline: none;\n padding: 0 50px 0 15px;\n text-align: left;\n transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);\n width: 100%;\n}\n\n.hb-input-number--without-controls .hb-input-number__inner {\n padding: 0 15px;\n}\n\n.hb-input-number--controls-right .hb-input-number__inner {\n padding: 0 15px 0 50px;\n}\n\n.hb-input-number__inner:hover:not(:disabled) {\n border-color: var(--hb-input-number-border-color-hover);\n}\n\n.hb-input-number__inner:focus {\n border-color: var(--hb-input-number-border-color-hover);\n}\n\n.hb-input-number__inner:disabled {\n background-color: var(--hb-fill-color-light, #f5f7fa);\n border-color: var(--hb-input-number-border-color);\n color: var(--hb-color-text-disabled, #c0c4cc);\n cursor: not-allowed;\n}\n\n.hb-input-number__increase,\n.hb-input-number__decrease {\n position: absolute;\n z-index: 1;\n top: 1px;\n width: 35px;\n height: calc(100% - 2px);\n text-align: center;\n background: var(--hb-fill-color-light, #f5f7fa);\n color: var(--hb-color-text-regular, #606266);\n cursor: pointer;\n font-size: 13px;\n user-select: none;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s;\n}\n\n.hb-input-number__increase:hover:not(.hb-input-number__increase--disabled),\n.hb-input-number__decrease:hover:not(.hb-input-number__decrease--disabled) {\n color: var(--hb-color-primary);\n}\n\n.hb-input-number__increase--disabled,\n.hb-input-number__decrease--disabled {\n color: var(--hb-color-text-disabled, #c0c4cc);\n cursor: not-allowed;\n}\n\n.hb-input-number__increase {\n right: 1px;\n border-radius: 0 4px 4px 0;\n border-left: 1px solid var(--hb-input-number-border-color);\n}\n\n.hb-input-number__decrease {\n right: 36px;\n border-radius: 0;\n border-left: 1px solid var(--hb-input-number-border-color);\n}\n\n.hb-input-number--controls-right .hb-input-number__increase {\n right: 1px;\n border-radius: 0 4px 4px 0;\n}\n\n.hb-input-number--controls-right .hb-input-number__decrease {\n right: 36px;\n border-radius: 0;\n}\n\n.hb-input-number__controls {\n position: absolute;\n right: 1px;\n top: 1px;\n width: 35px;\n height: calc(100% - 2px);\n border-left: 1px solid var(--hb-input-number-border-color);\n border-radius: 0 4px 4px 0;\n background: var(--hb-fill-color-light, #f5f7fa);\n}\n\n.hb-input-number--controls-right .hb-input-number__controls {\n left: 1px;\n right: auto;\n border-left: none;\n border-right: 1px solid var(--hb-input-number-border-color);\n border-radius: 4px 0 0 4px;\n}\n\n.hb-input-number--controls-right .hb-input-number__controls .hb-input-number__increase {\n position: static;\n border: none;\n border-bottom: 1px solid var(--hb-input-number-border-color);\n border-radius: 0;\n}\n\n.hb-input-number--controls-right .hb-input-number__controls .hb-input-number__decrease {\n position: static;\n border: none;\n border-radius: 0 0 0 4px;\n}\n\n.hb-input-number--small {\n width: 150px;\n}\n\n.hb-input-number--small .hb-input-number__inner {\n height: 24px;\n line-height: 24px;\n font-size: 12px;\n padding: 0 40px 0 12px;\n}\n\n.hb-input-number--large {\n width: 200px;\n}\n\n.hb-input-number--large .hb-input-number__inner {\n height: 40px;\n line-height: 40px;\n font-size: 16px;\n padding: 0 55px 0 18px;\n}\n\n.hb-input-number--disabled {\n cursor: not-allowed;\n}\n\n","import { Component, h, Prop, Event, EventEmitter, State, Watch } from '@stencil/core';\n\n/**\n * InputNumber 数字输入框组件\n * 仅允许输入标准的数字值,可定义范围\n */\n@Component({\n tag: 'hb-input-number',\n styleUrl: 'input-number.css',\n shadow: true,\n})\nexport class InputNumber {\n /**\n * 绑定值\n */\n @Prop({ mutable: true }) modelValue: number = 0;\n\n /**\n * 计数器尺寸\n */\n @Prop() size: 'large' | 'default' | 'small' = 'default';\n\n /**\n * 是否禁用\n * @default false\n */\n @Prop() disabled: boolean = false;\n\n /**\n * 是否只读\n * @default false\n */\n @Prop() readonly: boolean = false;\n\n /**\n * 最小值\n * @default -Infinity\n */\n @Prop() min: number = -Infinity;\n\n /**\n * 最大值\n * @default Infinity\n */\n @Prop() max: number = Infinity;\n\n /**\n * 计数器步长\n * @default 1\n */\n @Prop() step: number = 1;\n\n /**\n * 精度\n */\n @Prop() precision?: number;\n\n /**\n * 是否只能输入 step 的倍数\n * @default false\n */\n @Prop() stepStrictly: boolean = false;\n\n /**\n * 是否使用控制按钮\n * @default true\n */\n @Prop() controls: boolean = true;\n\n /**\n * 控制按钮位置\n */\n @Prop() controlsPosition: '' | 'right' = '';\n\n /**\n * 原生 name 属性\n */\n @Prop() name?: string;\n\n /**\n * 原生 id 属性\n */\n @Prop() inputId?: string;\n\n /**\n * 原生 placeholder 属性\n */\n @Prop() placeholder?: string;\n\n @State() currentValue: number = 0;\n\n /**\n * 值改变事件\n */\n @Event() hbChange: EventEmitter<number>;\n\n /**\n * 输入事件\n */\n @Event() hbInput: EventEmitter<number>;\n\n componentDidLoad() {\n this.currentValue = this.modelValue;\n }\n\n /** 受控模式:外部修改 modelValue 时同步内部 currentValue,保证 UI 与值一致 */\n @Watch('modelValue')\n handleModelValueChange() {\n this.currentValue = this.modelValue;\n }\n\n private formatValue(value: number): number {\n if (this.precision !== undefined) {\n return Number(value.toFixed(this.precision));\n }\n return value;\n }\n\n private clampValue(value: number): number {\n let clamped = Math.max(this.min, Math.min(this.max, value));\n \n if (this.stepStrictly) {\n const step = this.step;\n clamped = Math.round(clamped / step) * step;\n }\n \n return this.formatValue(clamped);\n }\n\n private handleInput = (e: Event) => {\n const target = e.target as HTMLInputElement;\n const value = parseFloat(target.value);\n \n if (isNaN(value)) {\n this.currentValue = this.min;\n } else {\n this.currentValue = this.clampValue(value);\n }\n \n this.modelValue = this.currentValue;\n this.hbInput.emit(this.currentValue);\n };\n\n private handleChange = () => {\n this.hbChange.emit(this.currentValue);\n };\n\n private increase = () => {\n if (this.disabled || this.readonly) return;\n const newValue = this.clampValue(this.currentValue + this.step);\n this.currentValue = newValue;\n this.modelValue = newValue;\n this.hbChange.emit(newValue);\n };\n\n private decrease = () => {\n if (this.disabled || this.readonly) return;\n const newValue = this.clampValue(this.currentValue - this.step);\n this.currentValue = newValue;\n this.modelValue = newValue;\n this.hbChange.emit(newValue);\n };\n\n render() {\n return (\n <div\n class={{\n 'hb-input-number': true,\n [`hb-input-number--${this.size}`]: true,\n 'hb-input-number--disabled': this.disabled,\n 'hb-input-number--controls-right': this.controlsPosition === 'right',\n 'hb-input-number--without-controls': !this.controls,\n }}\n >\n {this.controls && this.controlsPosition !== 'right' && (\n <span\n class={{\n 'hb-input-number__decrease': true,\n 'hb-input-number__decrease--disabled': this.currentValue <= this.min,\n }}\n onClick={this.decrease}\n >\n −\n </span>\n )}\n <input\n type=\"number\"\n id={this.inputId}\n name={this.name}\n class=\"hb-input-number__inner\"\n value={this.currentValue}\n disabled={this.disabled}\n readonly={this.readonly}\n placeholder={this.placeholder}\n min={this.min}\n max={this.max}\n step={this.step}\n onInput={this.handleInput}\n onChange={this.handleChange}\n />\n {this.controls && this.controlsPosition === 'right' && (\n <span class=\"hb-input-number__controls\">\n <span\n class={{\n 'hb-input-number__increase': true,\n 'hb-input-number__increase--disabled': this.currentValue >= this.max,\n }}\n onClick={this.increase}\n >\n +\n </span>\n <span\n class={{\n 'hb-input-number__decrease': true,\n 'hb-input-number__decrease--disabled': this.currentValue <= this.min,\n }}\n onClick={this.decrease}\n >\n −\n </span>\n </span>\n )}\n {this.controls && this.controlsPosition !== 'right' && (\n <span\n class={{\n 'hb-input-number__increase': true,\n 'hb-input-number__increase--disabled': this.currentValue >= this.max,\n }}\n onClick={this.increase}\n >\n +\n </span>\n )}\n </div>\n );\n }\n}\n\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{r as t,c as e,h as o}from"./p-e42dfa95.js";const a='/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}::file-selector-button{appearance:button;background-color:#0000;border:0 solid;border-radius:0;box-sizing:border-box;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;margin:0;margin-inline-end:4px;opacity:1;padding:0}:host,html{-webkit-text-size-adjust:100%;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);line-height:1.5;tab-size:4;-webkit-tap-highlight-color:transparent}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-size:1em;font-variation-settings:var(--default-mono-font-variation-settings,normal)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}button,input,optgroup,select,textarea{background-color:#0000;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex;padding-block:0}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}} /*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer components;:host{display:inline-block}.hb-tag{border:1px solid #0000;border-radius:var(--hb-tag-radius);box-sizing:border-box;font-size:var(--hb-font-size-xs);gap:var(--hb-spacing-xxs);height:22px;line-height:1;padding:0 var(--hb-spacing-xs);vertical-align:middle;white-space:nowrap}.hb-tag,.hb-tag__close,.hb-tag__content{align-items:center;display:inline-flex}.hb-tag__close{border-radius:50%;cursor:pointer;font-size:12px;height:14px;justify-content:center;line-height:1;transition:background-color var(--hb-transition-duration);width:14px}.hb-tag__close:hover{background-color:#0000001a}.hb-tag--small{font-size:11px;height:18px;padding:0 6px}.hb-tag--large{font-size:var(--hb-font-size-sm);height:28px;padding:0 var(--hb-spacing-sm)}.hb-tag--round{border-radius:999px}.hb-tag--default.hb-tag--light{background:var(--hb-tag-default-bg);color:var(--hb-tag-default-color)}.hb-tag--primary.hb-tag--light{background:var(--hb-tag-primary-bg);color:var(--hb-tag-primary-color)}.hb-tag--success.hb-tag--light{background:var(--hb-tag-success-bg);color:var(--hb-tag-success-color)}.hb-tag--warning.hb-tag--light{background:var(--hb-tag-warning-bg);color:var(--hb-tag-warning-color)}.hb-tag--danger.hb-tag--light{background:var(--hb-tag-danger-bg);color:var(--hb-tag-danger-color)}.hb-tag--info.hb-tag--light{background:var(--hb-tag-primary-bg);color:var(--hb-tag-primary-color)}.hb-tag--default.hb-tag--dark{background:var(--hb-color-text-quaternary);color:#fff}.hb-tag--primary.hb-tag--dark{background:var(--hb-color-primary);color:#fff}.hb-tag--success.hb-tag--dark{background:var(--hb-color-success);color:#fff}.hb-tag--warning.hb-tag--dark{background:var(--hb-color-warning);color:#fff}.hb-tag--danger.hb-tag--dark{background:var(--hb-color-danger);color:#fff}.hb-tag--info.hb-tag--dark{background:var(--hb-color-info);color:#fff}.hb-tag--default.hb-tag--plain{background:#fff;border-color:var(--hb-color-border);color:var(--hb-color-text)}.hb-tag--primary.hb-tag--plain{background:#fff;border-color:var(--hb-color-primary-border);color:var(--hb-color-primary)}.hb-tag--success.hb-tag--plain{background:#fff;border-color:var(--hb-color-success-border);color:var(--hb-color-success)}.hb-tag--warning.hb-tag--plain{background:#fff;border-color:var(--hb-color-warning-border);color:var(--hb-color-warning)}.hb-tag--danger.hb-tag--plain{background:#fff;border-color:var(--hb-color-danger-border);color:var(--hb-color-danger)}.hb-tag--info.hb-tag--plain{background:#fff;border-color:var(--hb-color-primary-border);color:var(--hb-color-primary)}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}';const r=a;const i=class{constructor(o){t(this,o);this.hbClose=e(this,"hbClose",7)}type="default";closable=false;effect="light";round=false;size="default";hbClose;handleClose=t=>{t.stopPropagation();this.hbClose.emit()};render(){return o("span",{key:"949732a389ac350303fa84521948b04000a86304",class:{"hb-tag":true,[`hb-tag--${this.type}`]:true,[`hb-tag--${this.effect}`]:true,"hb-tag--round":this.round,[`hb-tag--${this.size}`]:true}},o("span",{key:"cefc4e3866faf0ae716db4e694ce01fcfae6c5f4",class:"hb-tag__content"},o("slot",{key:"c15bef363b1a665eba672b3b0040d4723e4399b7"})),this.closable&&o("span",{key:"8d9f90a4d359418f4d3b43970fcea25f17ed9587",class:"hb-tag__close",role:"button","aria-label":"移除标签",tabIndex:0,onClick:this.handleClose},"×"))}};i.style=r;export{i as hb_tag};
2
- //# sourceMappingURL=p-fea20295.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["tagCss","HbTagStyle0","Tag","type","closable","effect","round","size","hbClose","handleClose","e","stopPropagation","this","emit","render","h","key","class","role","tabIndex","onClick"],"sources":["src/components/Tag/tag.css?tag=hb-tag&encapsulation=shadow","src/components/Tag/Tag.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n.hb-tag {\n display: inline-flex;\n align-items: center;\n gap: var(--hb-spacing-xxs);\n padding: 0 var(--hb-spacing-xs);\n height: 22px;\n font-size: var(--hb-font-size-xs);\n line-height: 1;\n border-radius: var(--hb-tag-radius);\n border: 1px solid transparent;\n box-sizing: border-box;\n white-space: nowrap;\n vertical-align: middle;\n}\n\n.hb-tag__content {\n display: inline-flex;\n align-items: center;\n}\n\n.hb-tag__close {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 14px;\n height: 14px;\n border-radius: 50%;\n cursor: pointer;\n font-size: 12px;\n line-height: 1;\n transition: background-color var(--hb-transition-duration);\n}\n\n.hb-tag__close:hover {\n background-color: rgba(0, 0, 0, 0.1);\n}\n\n/* ---- 尺寸 ---- */\n.hb-tag--small { height: 18px; font-size: 11px; padding: 0 6px; }\n.hb-tag--large { height: 28px; font-size: var(--hb-font-size-sm); padding: 0 var(--hb-spacing-sm); }\n\n/* ---- 圆角 ---- */\n.hb-tag--round { border-radius: 999px; }\n\n/* ---- 类型:light(默认) ---- */\n.hb-tag--default.hb-tag--light { background: var(--hb-tag-default-bg); color: var(--hb-tag-default-color); }\n.hb-tag--primary.hb-tag--light { background: var(--hb-tag-primary-bg); color: var(--hb-tag-primary-color); }\n.hb-tag--success.hb-tag--light { background: var(--hb-tag-success-bg); color: var(--hb-tag-success-color); }\n.hb-tag--warning.hb-tag--light { background: var(--hb-tag-warning-bg); color: var(--hb-tag-warning-color); }\n.hb-tag--danger.hb-tag--light { background: var(--hb-tag-danger-bg); color: var(--hb-tag-danger-color); }\n.hb-tag--info.hb-tag--light { background: var(--hb-tag-primary-bg); color: var(--hb-tag-primary-color); }\n\n/* ---- 类型:dark ---- */\n.hb-tag--default.hb-tag--dark { background: var(--hb-color-text-quaternary); color: #fff; }\n.hb-tag--primary.hb-tag--dark { background: var(--hb-color-primary); color: #fff; }\n.hb-tag--success.hb-tag--dark { background: var(--hb-color-success); color: #fff; }\n.hb-tag--warning.hb-tag--dark { background: var(--hb-color-warning); color: #fff; }\n.hb-tag--danger.hb-tag--dark { background: var(--hb-color-danger); color: #fff; }\n.hb-tag--info.hb-tag--dark { background: var(--hb-color-info); color: #fff; }\n\n/* ---- 类型:plain ---- */\n.hb-tag--default.hb-tag--plain { background: #fff; color: var(--hb-color-text); border-color: var(--hb-color-border); }\n.hb-tag--primary.hb-tag--plain { background: #fff; color: var(--hb-color-primary); border-color: var(--hb-color-primary-border); }\n.hb-tag--success.hb-tag--plain { background: #fff; color: var(--hb-color-success); border-color: var(--hb-color-success-border); }\n.hb-tag--warning.hb-tag--plain { background: #fff; color: var(--hb-color-warning); border-color: var(--hb-color-warning-border); }\n.hb-tag--danger.hb-tag--plain { background: #fff; color: var(--hb-color-danger); border-color: var(--hb-color-danger-border); }\n.hb-tag--info.hb-tag--plain { background: #fff; color: var(--hb-color-primary); border-color: var(--hb-color-primary-border); }\n","import { Component, h, Prop, Event, EventEmitter } from '@stencil/core';\n\n/**\n * Tag 标签组件\n * 用于标记和选择\n */\n@Component({\n tag: 'hb-tag',\n styleUrl: 'tag.css',\n shadow: true,\n})\nexport class Tag {\n /** 标签类型 */\n @Prop() type: 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'default' = 'default';\n\n /** 是否可关闭 */\n @Prop() closable: boolean = false;\n\n /** 主题效果 */\n @Prop() effect: 'dark' | 'light' | 'plain' = 'light';\n\n /** 是否圆角 */\n @Prop() round: boolean = false;\n\n /** 标签尺寸 */\n @Prop() size: 'small' | 'default' | 'large' = 'default';\n\n /** 关闭事件 */\n @Event() hbClose: EventEmitter<void>;\n\n private handleClose = (e: Event) => {\n e.stopPropagation();\n this.hbClose.emit();\n };\n\n render() {\n return (\n <span\n class={{\n 'hb-tag': true,\n [`hb-tag--${this.type}`]: true,\n [`hb-tag--${this.effect}`]: true,\n 'hb-tag--round': this.round,\n [`hb-tag--${this.size}`]: true,\n }}\n >\n <span class=\"hb-tag__content\">\n <slot />\n </span>\n {this.closable && (\n <span class=\"hb-tag__close\" role=\"button\" aria-label=\"移除标签\" tabIndex={0} onClick={this.handleClose}>\n ×\n </span>\n )}\n </span>\n );\n }\n}\n"],"mappings":"kDAAA,MAAMA,EAAS,yhQACf,MAAAC,EAAeD,E,MCUFE,EAAG,M,0DAENC,KAA0E,UAG1EC,SAAoB,MAGpBC,OAAqC,QAGrCC,MAAiB,MAGjBC,KAAsC,UAGrCC,QAEDC,YAAeC,IACrBA,EAAEC,kBACFC,KAAKJ,QAAQK,MAAM,EAGrB,MAAAC,GACE,OACEC,EAAA,QAAAC,IAAA,2CACEC,MAAO,CACL,SAAU,KACV,CAAC,WAAWL,KAAKT,QAAS,KAC1B,CAAC,WAAWS,KAAKP,UAAW,KAC5B,gBAAiBO,KAAKN,MACtB,CAAC,WAAWM,KAAKL,QAAS,OAG5BQ,EAAA,QAAAC,IAAA,2CAAMC,MAAM,mBACVF,EAAA,QAAAC,IAAA,8CAEDJ,KAAKR,UACJW,EAAA,QAAAC,IAAA,2CAAMC,MAAM,gBAAgBC,KAAK,SAAQ,aAAY,OAAOC,SAAU,EAAGC,QAASR,KAAKH,aAAW,K","ignoreList":[]}