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.
- package/dist/cjs/{a11y-802de67a.js → a11y-4385c871.js} +17 -2
- package/dist/cjs/a11y-4385c871.js.map +1 -0
- package/dist/cjs/{date-helpers-1ffddc59.js → date-helpers-c05ef385.js} +5 -16
- package/dist/cjs/date-helpers-c05ef385.js.map +1 -0
- package/dist/cjs/hb-alert.cjs.entry.js +2 -1
- package/dist/cjs/hb-alert.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-calendar.cjs.entry.js +2 -2
- package/dist/cjs/hb-calendar.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-cascader.cjs.entry.js +48 -12
- package/dist/cjs/hb-cascader.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-checkbox-group.cjs.entry.js +12 -8
- package/dist/cjs/hb-checkbox-group.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-checkbox.cjs.entry.js +9 -4
- package/dist/cjs/hb-checkbox.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-collapse-item.cjs.entry.js +13 -4
- package/dist/cjs/hb-collapse-item.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-collapse.cjs.entry.js +20 -15
- package/dist/cjs/hb-collapse.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-color-picker.cjs.entry.js +22 -19
- package/dist/cjs/hb-color-picker.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-date-picker-pane.cjs.entry.js +1 -1
- package/dist/cjs/hb-date-picker.cjs.entry.js +13 -10
- package/dist/cjs/hb-date-picker.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-date-range-picker.cjs.entry.js +1 -1
- package/dist/cjs/hb-date-time-picker.cjs.entry.js +1 -1
- package/dist/cjs/hb-descriptions.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-dialog.cjs.entry.js +51 -12
- package/dist/cjs/hb-dialog.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-drawer.cjs.entry.js +34 -4
- package/dist/cjs/hb-drawer.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-dropdown.cjs.entry.js +27 -15
- package/dist/cjs/hb-dropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-empty.cjs.entry.js +1 -1
- package/dist/cjs/hb-float-button.cjs.entry.js +2 -2
- package/dist/cjs/hb-form-item.cjs.entry.js +67 -16
- package/dist/cjs/hb-form-item.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-form.cjs.entry.js +115 -7
- package/dist/cjs/hb-form.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-image-preview.cjs.entry.js +1 -1
- package/dist/cjs/hb-image-preview.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-image.cjs.entry.js +21 -3
- package/dist/cjs/hb-image.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-input-number.cjs.entry.js +7 -7
- package/dist/cjs/hb-input-number.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-input-tag.cjs.entry.js +2 -2
- package/dist/cjs/hb-input.cjs.entry.js +3 -2
- package/dist/cjs/hb-input.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-layout.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-link.cjs.entry.js +2 -2
- package/dist/cjs/hb-loading.cjs.entry.js +2 -2
- package/dist/cjs/hb-menu-item.cjs.entry.js +14 -5
- package/dist/cjs/hb-menu-item.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-menu.cjs.entry.js +2 -2
- package/dist/cjs/hb-message.cjs.entry.js +13 -4
- package/dist/cjs/hb-message.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-page-header.cjs.entry.js +1 -1
- package/dist/cjs/hb-pagination.cjs.entry.js +8 -5
- package/dist/cjs/hb-pagination.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-popconfirm.cjs.entry.js +27 -8
- package/dist/cjs/hb-popconfirm.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-popover.cjs.entry.js +26 -14
- package/dist/cjs/hb-popover.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-progress.cjs.entry.js +1 -1
- package/dist/cjs/hb-radio.cjs.entry.js +8 -3
- package/dist/cjs/hb-radio.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-rate.cjs.entry.js +3 -3
- package/dist/cjs/hb-rate.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-row.cjs.entry.js +2 -2
- package/dist/cjs/hb-scrollbar.cjs.entry.js +5 -5
- package/dist/cjs/hb-scrollbar.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-segmented.cjs.entry.js +13 -2
- package/dist/cjs/hb-segmented.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-select.cjs.entry.js +100 -19
- package/dist/cjs/hb-select.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-slider.cjs.entry.js +6 -12
- package/dist/cjs/hb-slider.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-space.cjs.entry.js +2 -2
- package/dist/cjs/hb-statistic.cjs.entry.js +1 -1
- package/dist/cjs/hb-step.cjs.entry.js +1 -1
- package/dist/cjs/hb-steps.cjs.entry.js +3 -3
- package/dist/cjs/hb-steps.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-sub-menu.cjs.entry.js +5 -5
- package/dist/cjs/hb-switch.cjs.entry.js +3 -3
- package/dist/cjs/hb-switch.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-tab-pane.cjs.entry.js +1 -1
- package/dist/cjs/hb-table.cjs.entry.js +218 -41
- package/dist/cjs/hb-table.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-tabs.cjs.entry.js +31 -10
- package/dist/cjs/hb-tabs.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-tag.cjs.entry.js +3 -2
- package/dist/cjs/hb-tag.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-text.cjs.entry.js +2 -2
- package/dist/cjs/hb-time-picker.cjs.entry.js +14 -9
- package/dist/cjs/hb-time-picker.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-time-select.cjs.entry.js +13 -4
- package/dist/cjs/hb-time-select.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-tooltip.cjs.entry.js +30 -10
- package/dist/cjs/hb-tooltip.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-tree-select.cjs.entry.js +125 -10
- package/dist/cjs/hb-tree-select.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-tree.cjs.entry.js +145 -12
- package/dist/cjs/hb-tree.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-watermark.cjs.entry.js +19 -11
- package/dist/cjs/hb-watermark.cjs.entry.js.map +1 -1
- package/dist/cjs/huibo-ui.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/transition-59f1da0f.js +34 -0
- package/dist/cjs/transition-59f1da0f.js.map +1 -0
- package/dist/collection/components/Alert/Alert.js +2 -1
- package/dist/collection/components/Alert/Alert.js.map +1 -1
- package/dist/collection/components/Calendar/Calendar.js +2 -2
- package/dist/collection/components/Calendar/Calendar.js.map +1 -1
- package/dist/collection/components/Cascader/Cascader.js +47 -11
- package/dist/collection/components/Cascader/Cascader.js.map +1 -1
- package/dist/collection/components/Checkbox/Checkbox.js +9 -4
- package/dist/collection/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/collection/components/Checkbox/CheckboxGroup.js +12 -8
- package/dist/collection/components/Checkbox/CheckboxGroup.js.map +1 -1
- package/dist/collection/components/Collapse/Collapse.js +20 -15
- package/dist/collection/components/Collapse/Collapse.js.map +1 -1
- package/dist/collection/components/Collapse/CollapseItem.js +33 -4
- package/dist/collection/components/Collapse/CollapseItem.js.map +1 -1
- package/dist/collection/components/ColorPicker/ColorPicker.js +22 -19
- package/dist/collection/components/ColorPicker/ColorPicker.js.map +1 -1
- package/dist/collection/components/ColorPicker/color-picker.css +8 -3
- package/dist/collection/components/DatePicker/DatePicker.js +12 -9
- package/dist/collection/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/collection/components/DatePicker/date-picker.css +3 -2
- package/dist/collection/components/Descriptions/descriptions.css +30 -10
- package/dist/collection/components/Dialog/Dialog.js +54 -10
- package/dist/collection/components/Dialog/Dialog.js.map +1 -1
- package/dist/collection/components/Dialog/dialog.css +57 -11
- package/dist/collection/components/Drawer/Drawer.js +34 -3
- package/dist/collection/components/Drawer/Drawer.js.map +1 -1
- package/dist/collection/components/Drawer/drawer.css +207 -17
- package/dist/collection/components/Dropdown/Dropdown.js +28 -13
- package/dist/collection/components/Dropdown/Dropdown.js.map +1 -1
- package/dist/collection/components/Dropdown/dropdown.css +24 -2
- package/dist/collection/components/Empty/Empty.js +1 -1
- package/dist/collection/components/FloatButton/FloatButton.js +2 -2
- package/dist/collection/components/Form/Form.js +217 -9
- package/dist/collection/components/Form/Form.js.map +1 -1
- package/dist/collection/components/Form/FormItem.js +126 -18
- package/dist/collection/components/Form/FormItem.js.map +1 -1
- package/dist/collection/components/Form/form-item.css +8 -2
- package/dist/collection/components/Image/Image.js +24 -3
- package/dist/collection/components/Image/Image.js.map +1 -1
- package/dist/collection/components/ImagePreview/ImagePreview.js +1 -1
- package/dist/collection/components/ImagePreview/ImagePreview.js.map +1 -1
- package/dist/collection/components/Input/Input.js +3 -2
- package/dist/collection/components/Input/Input.js.map +1 -1
- package/dist/collection/components/Input/input.css +1 -2
- package/dist/collection/components/InputNumber/InputNumber.js +6 -6
- package/dist/collection/components/InputNumber/InputNumber.js.map +1 -1
- package/dist/collection/components/InputNumber/input-number.css +11 -1
- package/dist/collection/components/InputTag/InputTag.js +2 -2
- package/dist/collection/components/Layout/Layout.js.map +1 -1
- package/dist/collection/components/Layout/Row.js +2 -2
- package/dist/collection/components/Layout/layout.css +1713 -576
- package/dist/collection/components/Link/Link.js +2 -2
- package/dist/collection/components/Loading/Loading.js +2 -2
- package/dist/collection/components/Menu/Menu.js +2 -2
- package/dist/collection/components/Menu/MenuItem.js +34 -5
- package/dist/collection/components/Menu/MenuItem.js.map +1 -1
- package/dist/collection/components/Menu/SubMenu.js +4 -4
- package/dist/collection/components/Message/Message.js +13 -4
- package/dist/collection/components/Message/Message.js.map +1 -1
- package/dist/collection/components/PageHeader/PageHeader.js +1 -1
- package/dist/collection/components/Pagination/Pagination.js +8 -5
- package/dist/collection/components/Pagination/Pagination.js.map +1 -1
- package/dist/collection/components/Popconfirm/Popconfirm.js +28 -6
- package/dist/collection/components/Popconfirm/Popconfirm.js.map +1 -1
- package/dist/collection/components/Popconfirm/popconfirm.css +80 -16
- package/dist/collection/components/Popover/Popover.js +27 -12
- package/dist/collection/components/Popover/Popover.js.map +1 -1
- package/dist/collection/components/Popover/popover.css +49 -8
- package/dist/collection/components/Progress/Progress.js +1 -1
- package/dist/collection/components/Radio/Radio.js +8 -3
- package/dist/collection/components/Radio/Radio.js.map +1 -1
- package/dist/collection/components/Rate/Rate.js +3 -3
- package/dist/collection/components/Rate/Rate.js.map +1 -1
- package/dist/collection/components/Scrollbar/Scrollbar.js +5 -5
- package/dist/collection/components/Scrollbar/Scrollbar.js.map +1 -1
- package/dist/collection/components/Segmented/Segmented.js +15 -1
- package/dist/collection/components/Segmented/Segmented.js.map +1 -1
- package/dist/collection/components/Select/Select.js +123 -19
- package/dist/collection/components/Select/Select.js.map +1 -1
- package/dist/collection/components/Select/select.css +0 -1
- package/dist/collection/components/Slider/Slider.js +6 -12
- package/dist/collection/components/Slider/Slider.js.map +1 -1
- package/dist/collection/components/Slider/slider.css +0 -1
- package/dist/collection/components/Space/Space.js +2 -2
- package/dist/collection/components/Statistic/Statistic.js +1 -1
- package/dist/collection/components/Steps/Step.js +1 -1
- package/dist/collection/components/Steps/Steps.js +2 -2
- package/dist/collection/components/Steps/Steps.js.map +1 -1
- package/dist/collection/components/Switch/Switch.js +3 -3
- package/dist/collection/components/Switch/Switch.js.map +1 -1
- package/dist/collection/components/Switch/switch.css +3 -2
- package/dist/collection/components/Table/Table.js +296 -41
- package/dist/collection/components/Table/Table.js.map +1 -1
- package/dist/collection/components/Table/table.css +6 -2
- package/dist/collection/components/Tabs/TabPane.js +1 -1
- package/dist/collection/components/Tabs/Tabs.js +31 -10
- package/dist/collection/components/Tabs/Tabs.js.map +1 -1
- package/dist/collection/components/Tag/Tag.js +3 -2
- package/dist/collection/components/Tag/Tag.js.map +1 -1
- package/dist/collection/components/Text/Text.js +2 -2
- package/dist/collection/components/TimePicker/TimePicker.js +14 -9
- package/dist/collection/components/TimePicker/TimePicker.js.map +1 -1
- package/dist/collection/components/TimeSelect/TimeSelect.js +13 -4
- package/dist/collection/components/TimeSelect/TimeSelect.js.map +1 -1
- package/dist/collection/components/Tooltip/Tooltip.js +31 -8
- package/dist/collection/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/collection/components/Tooltip/tooltip.css +24 -2
- package/dist/collection/components/Tree/Tree.js +147 -13
- package/dist/collection/components/Tree/Tree.js.map +1 -1
- package/dist/collection/components/TreeSelect/TreeSelect.js +130 -11
- package/dist/collection/components/TreeSelect/TreeSelect.js.map +1 -1
- package/dist/collection/components/Watermark/Watermark.js +19 -11
- package/dist/collection/components/Watermark/Watermark.js.map +1 -1
- package/dist/collection/utils/a11y.js +15 -1
- package/dist/collection/utils/a11y.js.map +1 -1
- package/dist/collection/utils/date-helpers.js +4 -15
- package/dist/collection/utils/date-helpers.js.map +1 -1
- package/dist/collection/utils/transition.js +29 -0
- package/dist/collection/utils/transition.js.map +1 -0
- package/dist/collection/utils/virtual-scroll.js +39 -0
- package/dist/collection/utils/virtual-scroll.js.map +1 -0
- package/dist/components/hb-alert.js +2 -1
- package/dist/components/hb-alert.js.map +1 -1
- package/dist/components/hb-calendar.js +2 -2
- package/dist/components/hb-calendar.js.map +1 -1
- package/dist/components/hb-cascader.js +48 -12
- package/dist/components/hb-cascader.js.map +1 -1
- package/dist/components/hb-checkbox-group.js +12 -8
- package/dist/components/hb-checkbox-group.js.map +1 -1
- package/dist/components/hb-checkbox.js +9 -4
- package/dist/components/hb-checkbox.js.map +1 -1
- package/dist/components/hb-collapse-item.js +14 -4
- package/dist/components/hb-collapse-item.js.map +1 -1
- package/dist/components/hb-collapse.js +20 -15
- package/dist/components/hb-collapse.js.map +1 -1
- package/dist/components/hb-color-picker.js +22 -19
- package/dist/components/hb-color-picker.js.map +1 -1
- package/dist/components/hb-date-picker-pane.js +1 -1
- package/dist/components/hb-date-picker.js +13 -10
- package/dist/components/hb-date-picker.js.map +1 -1
- package/dist/components/hb-date-range-picker.js +1 -1
- package/dist/components/hb-date-time-picker.js +1 -1
- package/dist/components/hb-descriptions.js.map +1 -1
- package/dist/components/hb-dialog.js +53 -13
- package/dist/components/hb-dialog.js.map +1 -1
- package/dist/components/hb-drawer.js +36 -5
- package/dist/components/hb-drawer.js.map +1 -1
- package/dist/components/hb-dropdown.js +28 -15
- package/dist/components/hb-dropdown.js.map +1 -1
- package/dist/components/hb-empty.js +1 -1
- package/dist/components/hb-float-button.js +2 -2
- package/dist/components/hb-form-item.js +70 -16
- package/dist/components/hb-form-item.js.map +1 -1
- package/dist/components/hb-form.js +120 -7
- package/dist/components/hb-form.js.map +1 -1
- package/dist/components/hb-image-preview.js +1 -1
- package/dist/components/hb-image-preview.js.map +1 -1
- package/dist/components/hb-image.js +23 -3
- package/dist/components/hb-image.js.map +1 -1
- package/dist/components/hb-input-number.js +7 -7
- package/dist/components/hb-input-number.js.map +1 -1
- package/dist/components/hb-input-tag.js +2 -2
- package/dist/components/hb-input.js +3 -2
- package/dist/components/hb-input.js.map +1 -1
- package/dist/components/hb-layout.js.map +1 -1
- package/dist/components/hb-link.js +2 -2
- package/dist/components/hb-loading.js +2 -2
- package/dist/components/hb-menu-item.js +15 -5
- package/dist/components/hb-menu-item.js.map +1 -1
- package/dist/components/hb-menu.js +2 -2
- package/dist/components/hb-message.js +13 -4
- package/dist/components/hb-message.js.map +1 -1
- package/dist/components/hb-page-header.js +1 -1
- package/dist/components/hb-pagination.js +8 -5
- package/dist/components/hb-pagination.js.map +1 -1
- package/dist/components/hb-popconfirm.js +28 -8
- package/dist/components/hb-popconfirm.js.map +1 -1
- package/dist/components/hb-popover.js +27 -14
- package/dist/components/hb-popover.js.map +1 -1
- package/dist/components/hb-progress.js +1 -1
- package/dist/components/hb-radio.js +8 -3
- package/dist/components/hb-radio.js.map +1 -1
- package/dist/components/hb-rate.js +3 -3
- package/dist/components/hb-rate.js.map +1 -1
- package/dist/components/hb-row.js +2 -2
- package/dist/components/hb-scrollbar.js +5 -5
- package/dist/components/hb-scrollbar.js.map +1 -1
- package/dist/components/hb-segmented.js +15 -2
- package/dist/components/hb-segmented.js.map +1 -1
- package/dist/components/hb-select.js +105 -20
- package/dist/components/hb-select.js.map +1 -1
- package/dist/components/hb-slider.js +6 -12
- package/dist/components/hb-slider.js.map +1 -1
- package/dist/components/hb-space.js +2 -2
- package/dist/components/hb-statistic.js +1 -1
- package/dist/components/hb-step.js +1 -1
- package/dist/components/hb-steps.js +3 -3
- package/dist/components/hb-steps.js.map +1 -1
- package/dist/components/hb-sub-menu.js +5 -5
- package/dist/components/hb-switch.js +3 -3
- package/dist/components/hb-switch.js.map +1 -1
- package/dist/components/hb-tab-pane.js +1 -1
- package/dist/components/hb-table.js +226 -43
- package/dist/components/hb-table.js.map +1 -1
- package/dist/components/hb-tabs.js +31 -10
- package/dist/components/hb-tabs.js.map +1 -1
- package/dist/components/hb-tag.js +3 -2
- package/dist/components/hb-tag.js.map +1 -1
- package/dist/components/hb-text.js +2 -2
- package/dist/components/hb-time-picker.js +14 -9
- package/dist/components/hb-time-picker.js.map +1 -1
- package/dist/components/hb-time-select.js +13 -4
- package/dist/components/hb-time-select.js.map +1 -1
- package/dist/components/hb-tooltip.js +31 -10
- package/dist/components/hb-tooltip.js.map +1 -1
- package/dist/components/hb-tree-select.js +129 -11
- package/dist/components/hb-tree-select.js.map +1 -1
- package/dist/components/hb-tree.js +147 -13
- package/dist/components/hb-tree.js.map +1 -1
- package/dist/components/hb-watermark.js +19 -11
- package/dist/components/hb-watermark.js.map +1 -1
- package/dist/{esm/a11y-f9ab2964.js → components/p-00aa34c8.js} +17 -3
- package/dist/components/p-00aa34c8.js.map +1 -0
- package/dist/components/{p-08b4005c.js → p-e0876aca.js} +5 -16
- package/dist/components/p-e0876aca.js.map +1 -0
- package/dist/components/p-fad66d69.js +32 -0
- package/dist/components/p-fad66d69.js.map +1 -0
- package/dist/{components/p-cc0aeb50.js → esm/a11y-e4cde5b0.js} +17 -3
- package/dist/esm/a11y-e4cde5b0.js.map +1 -0
- package/dist/esm/{date-helpers-44507189.js → date-helpers-259ed2f1.js} +5 -16
- package/dist/esm/date-helpers-259ed2f1.js.map +1 -0
- package/dist/esm/hb-alert.entry.js +2 -1
- package/dist/esm/hb-alert.entry.js.map +1 -1
- package/dist/esm/hb-calendar.entry.js +2 -2
- package/dist/esm/hb-calendar.entry.js.map +1 -1
- package/dist/esm/hb-cascader.entry.js +48 -12
- package/dist/esm/hb-cascader.entry.js.map +1 -1
- package/dist/esm/hb-checkbox-group.entry.js +12 -8
- package/dist/esm/hb-checkbox-group.entry.js.map +1 -1
- package/dist/esm/hb-checkbox.entry.js +9 -4
- package/dist/esm/hb-checkbox.entry.js.map +1 -1
- package/dist/esm/hb-collapse-item.entry.js +13 -4
- package/dist/esm/hb-collapse-item.entry.js.map +1 -1
- package/dist/esm/hb-collapse.entry.js +20 -15
- package/dist/esm/hb-collapse.entry.js.map +1 -1
- package/dist/esm/hb-color-picker.entry.js +22 -19
- package/dist/esm/hb-color-picker.entry.js.map +1 -1
- package/dist/esm/hb-date-picker-pane.entry.js +1 -1
- package/dist/esm/hb-date-picker.entry.js +13 -10
- package/dist/esm/hb-date-picker.entry.js.map +1 -1
- package/dist/esm/hb-date-range-picker.entry.js +1 -1
- package/dist/esm/hb-date-time-picker.entry.js +1 -1
- package/dist/esm/hb-descriptions.entry.js.map +1 -1
- package/dist/esm/hb-dialog.entry.js +51 -12
- package/dist/esm/hb-dialog.entry.js.map +1 -1
- package/dist/esm/hb-drawer.entry.js +34 -4
- package/dist/esm/hb-drawer.entry.js.map +1 -1
- package/dist/esm/hb-dropdown.entry.js +27 -15
- package/dist/esm/hb-dropdown.entry.js.map +1 -1
- package/dist/esm/hb-empty.entry.js +1 -1
- package/dist/esm/hb-float-button.entry.js +2 -2
- package/dist/esm/hb-form-item.entry.js +67 -16
- package/dist/esm/hb-form-item.entry.js.map +1 -1
- package/dist/esm/hb-form.entry.js +115 -7
- package/dist/esm/hb-form.entry.js.map +1 -1
- package/dist/esm/hb-image-preview.entry.js +1 -1
- package/dist/esm/hb-image-preview.entry.js.map +1 -1
- package/dist/esm/hb-image.entry.js +21 -3
- package/dist/esm/hb-image.entry.js.map +1 -1
- package/dist/esm/hb-input-number.entry.js +7 -7
- package/dist/esm/hb-input-number.entry.js.map +1 -1
- package/dist/esm/hb-input-tag.entry.js +2 -2
- package/dist/esm/hb-input.entry.js +3 -2
- package/dist/esm/hb-input.entry.js.map +1 -1
- package/dist/esm/hb-layout.entry.js.map +1 -1
- package/dist/esm/hb-link.entry.js +2 -2
- package/dist/esm/hb-loading.entry.js +2 -2
- package/dist/esm/hb-menu-item.entry.js +14 -5
- package/dist/esm/hb-menu-item.entry.js.map +1 -1
- package/dist/esm/hb-menu.entry.js +2 -2
- package/dist/esm/hb-message.entry.js +13 -4
- package/dist/esm/hb-message.entry.js.map +1 -1
- package/dist/esm/hb-page-header.entry.js +1 -1
- package/dist/esm/hb-pagination.entry.js +8 -5
- package/dist/esm/hb-pagination.entry.js.map +1 -1
- package/dist/esm/hb-popconfirm.entry.js +27 -8
- package/dist/esm/hb-popconfirm.entry.js.map +1 -1
- package/dist/esm/hb-popover.entry.js +26 -14
- package/dist/esm/hb-popover.entry.js.map +1 -1
- package/dist/esm/hb-progress.entry.js +1 -1
- package/dist/esm/hb-radio.entry.js +8 -3
- package/dist/esm/hb-radio.entry.js.map +1 -1
- package/dist/esm/hb-rate.entry.js +3 -3
- package/dist/esm/hb-rate.entry.js.map +1 -1
- package/dist/esm/hb-row.entry.js +2 -2
- package/dist/esm/hb-scrollbar.entry.js +5 -5
- package/dist/esm/hb-scrollbar.entry.js.map +1 -1
- package/dist/esm/hb-segmented.entry.js +13 -2
- package/dist/esm/hb-segmented.entry.js.map +1 -1
- package/dist/esm/hb-select.entry.js +100 -19
- package/dist/esm/hb-select.entry.js.map +1 -1
- package/dist/esm/hb-slider.entry.js +6 -12
- package/dist/esm/hb-slider.entry.js.map +1 -1
- package/dist/esm/hb-space.entry.js +2 -2
- package/dist/esm/hb-statistic.entry.js +1 -1
- package/dist/esm/hb-step.entry.js +1 -1
- package/dist/esm/hb-steps.entry.js +3 -3
- package/dist/esm/hb-steps.entry.js.map +1 -1
- package/dist/esm/hb-sub-menu.entry.js +5 -5
- package/dist/esm/hb-switch.entry.js +3 -3
- package/dist/esm/hb-switch.entry.js.map +1 -1
- package/dist/esm/hb-tab-pane.entry.js +1 -1
- package/dist/esm/hb-table.entry.js +218 -41
- package/dist/esm/hb-table.entry.js.map +1 -1
- package/dist/esm/hb-tabs.entry.js +31 -10
- package/dist/esm/hb-tabs.entry.js.map +1 -1
- package/dist/esm/hb-tag.entry.js +3 -2
- package/dist/esm/hb-tag.entry.js.map +1 -1
- package/dist/esm/hb-text.entry.js +2 -2
- package/dist/esm/hb-time-picker.entry.js +14 -9
- package/dist/esm/hb-time-picker.entry.js.map +1 -1
- package/dist/esm/hb-time-select.entry.js +13 -4
- package/dist/esm/hb-time-select.entry.js.map +1 -1
- package/dist/esm/hb-tooltip.entry.js +30 -10
- package/dist/esm/hb-tooltip.entry.js.map +1 -1
- package/dist/esm/hb-tree-select.entry.js +125 -10
- package/dist/esm/hb-tree-select.entry.js.map +1 -1
- package/dist/esm/hb-tree.entry.js +145 -12
- package/dist/esm/hb-tree.entry.js.map +1 -1
- package/dist/esm/hb-watermark.entry.js +19 -11
- package/dist/esm/hb-watermark.entry.js.map +1 -1
- package/dist/esm/huibo-ui.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/transition-4295d789.js +32 -0
- package/dist/esm/transition-4295d789.js.map +1 -0
- package/dist/huibo-ui/huibo-ui.esm.js +1 -1
- package/dist/huibo-ui/huibo-ui.esm.js.map +1 -1
- package/dist/huibo-ui/p-00aa34c8.js +2 -0
- package/dist/huibo-ui/p-00aa34c8.js.map +1 -0
- package/dist/huibo-ui/p-0cc1e3f3.entry.js +2 -0
- package/dist/huibo-ui/p-0cc1e3f3.entry.js.map +1 -0
- package/dist/huibo-ui/{p-678b4212.entry.js → p-0ddae4e9.entry.js} +2 -2
- package/dist/huibo-ui/p-10f6c184.entry.js.map +1 -1
- package/dist/huibo-ui/{p-f4336be9.entry.js → p-14c3b47b.entry.js} +2 -2
- package/dist/huibo-ui/{p-c50ad398.entry.js → p-193efdc0.entry.js} +2 -2
- package/dist/huibo-ui/{p-735bceef.entry.js → p-1b98152b.entry.js} +2 -2
- package/dist/huibo-ui/p-1b98152b.entry.js.map +1 -0
- package/dist/huibo-ui/p-1f6d0adb.entry.js +2 -0
- package/dist/huibo-ui/p-1f6d0adb.entry.js.map +1 -0
- package/dist/huibo-ui/{p-0d4b2997.entry.js → p-2bcda1bb.entry.js} +2 -2
- package/dist/huibo-ui/{p-b8d87f7e.entry.js → p-2ca9796a.entry.js} +2 -2
- package/dist/huibo-ui/p-2ca9796a.entry.js.map +1 -0
- package/dist/huibo-ui/{p-c80f8ace.entry.js → p-2cf5bf20.entry.js} +2 -2
- package/dist/huibo-ui/p-2cf5bf20.entry.js.map +1 -0
- package/dist/huibo-ui/{p-7da14d7c.entry.js → p-3042f986.entry.js} +2 -2
- package/dist/huibo-ui/{p-e039155d.entry.js → p-3dacb26b.entry.js} +2 -2
- package/dist/huibo-ui/{p-a084b8e5.entry.js → p-412ff618.entry.js} +2 -2
- package/dist/huibo-ui/p-4148d875.entry.js +2 -0
- package/dist/huibo-ui/p-4148d875.entry.js.map +1 -0
- package/dist/huibo-ui/{p-6beb5b81.entry.js → p-415295f3.entry.js} +2 -2
- package/dist/huibo-ui/p-415295f3.entry.js.map +1 -0
- package/dist/huibo-ui/p-494e6c25.entry.js +2 -0
- package/dist/huibo-ui/p-494e6c25.entry.js.map +1 -0
- package/dist/huibo-ui/p-4d87d7f4.entry.js +2 -0
- package/dist/huibo-ui/p-4d87d7f4.entry.js.map +1 -0
- package/dist/huibo-ui/p-5e253c15.entry.js +2 -0
- package/dist/huibo-ui/p-5e253c15.entry.js.map +1 -0
- package/dist/huibo-ui/p-63d68c61.entry.js +2 -0
- package/dist/huibo-ui/p-63d68c61.entry.js.map +1 -0
- package/dist/huibo-ui/{p-ccd09d5a.entry.js → p-6518c435.entry.js} +2 -2
- package/dist/huibo-ui/{p-1f8db37a.entry.js → p-687d8dff.entry.js} +2 -2
- package/dist/huibo-ui/p-687d8dff.entry.js.map +1 -0
- package/dist/huibo-ui/p-688460ce.entry.js +2 -0
- package/dist/huibo-ui/p-688460ce.entry.js.map +1 -0
- package/dist/huibo-ui/p-69bb1dd9.entry.js +2 -0
- package/dist/huibo-ui/p-69bb1dd9.entry.js.map +1 -0
- package/dist/huibo-ui/{p-2811e603.entry.js → p-6bfe1954.entry.js} +2 -2
- package/dist/huibo-ui/p-6bfe1954.entry.js.map +1 -0
- package/dist/huibo-ui/{p-e5cbfa9e.entry.js → p-6c23fbd1.entry.js} +2 -2
- package/dist/huibo-ui/p-6c23fbd1.entry.js.map +1 -0
- package/dist/huibo-ui/p-6c8cf248.entry.js.map +1 -1
- package/dist/huibo-ui/p-6efed295.entry.js +2 -0
- package/dist/huibo-ui/p-6efed295.entry.js.map +1 -0
- package/dist/huibo-ui/p-7a38b3e2.entry.js +2 -0
- package/dist/huibo-ui/p-7a38b3e2.entry.js.map +1 -0
- package/dist/huibo-ui/{p-cad57c2d.entry.js → p-7a682c56.entry.js} +2 -2
- package/dist/huibo-ui/{p-a8996d22.entry.js → p-815fc943.entry.js} +2 -2
- package/dist/huibo-ui/{p-af74667d.entry.js → p-89be7973.entry.js} +2 -2
- package/dist/huibo-ui/p-8a202bc5.entry.js.map +1 -1
- package/dist/huibo-ui/{p-213b9de7.entry.js → p-8c4415ed.entry.js} +2 -2
- package/dist/huibo-ui/p-8c4415ed.entry.js.map +1 -0
- package/dist/huibo-ui/{p-8fdbd17c.entry.js → p-950e7465.entry.js} +2 -2
- package/dist/huibo-ui/{p-ab9cf0e4.entry.js → p-96cecd21.entry.js} +2 -2
- package/dist/huibo-ui/p-96cecd21.entry.js.map +1 -0
- package/dist/huibo-ui/{p-2b4556ff.entry.js → p-98b513cd.entry.js} +2 -2
- package/dist/huibo-ui/p-98b513cd.entry.js.map +1 -0
- package/dist/huibo-ui/{p-89ea1141.entry.js → p-ac45291c.entry.js} +2 -2
- package/dist/huibo-ui/{p-e10fcfbe.entry.js → p-b105cf76.entry.js} +2 -2
- package/dist/huibo-ui/p-b105cf76.entry.js.map +1 -0
- package/dist/huibo-ui/{p-9a5406f0.entry.js → p-b38802b0.entry.js} +2 -2
- package/dist/huibo-ui/{p-9a5406f0.entry.js.map → p-b38802b0.entry.js.map} +1 -1
- package/dist/huibo-ui/{p-ea74fcae.entry.js → p-b3fd12c7.entry.js} +2 -2
- package/dist/huibo-ui/p-b3fd12c7.entry.js.map +1 -0
- package/dist/huibo-ui/p-b5ea18ba.entry.js +2 -0
- package/dist/huibo-ui/p-b5ea18ba.entry.js.map +1 -0
- package/dist/huibo-ui/{p-41d9c846.entry.js → p-b6afe81e.entry.js} +2 -2
- package/dist/huibo-ui/p-b7900dee.entry.js +2 -0
- package/dist/huibo-ui/p-b7900dee.entry.js.map +1 -0
- package/dist/huibo-ui/p-b8c83751.entry.js +2 -0
- package/dist/huibo-ui/p-b8c83751.entry.js.map +1 -0
- package/dist/huibo-ui/p-c7713947.entry.js +2 -0
- package/dist/huibo-ui/p-c7713947.entry.js.map +1 -0
- package/dist/huibo-ui/{p-33de6878.entry.js → p-c869842c.entry.js} +2 -2
- package/dist/huibo-ui/p-c869842c.entry.js.map +1 -0
- package/dist/huibo-ui/p-c8e917db.entry.js.map +1 -1
- package/dist/huibo-ui/p-cb66dbef.entry.js +2 -0
- package/dist/huibo-ui/p-cb66dbef.entry.js.map +1 -0
- package/dist/huibo-ui/p-cde83f76.entry.js +2 -0
- package/dist/huibo-ui/p-cde83f76.entry.js.map +1 -0
- package/dist/huibo-ui/{p-f5969181.entry.js → p-dd9c6459.entry.js} +2 -2
- package/dist/huibo-ui/{p-08b4005c.js → p-e0876aca.js} +1 -1
- package/dist/huibo-ui/p-e0876aca.js.map +1 -0
- package/dist/huibo-ui/{p-aa5e5e02.entry.js → p-e1773c93.entry.js} +2 -2
- package/dist/huibo-ui/p-e1773c93.entry.js.map +1 -0
- package/dist/huibo-ui/{p-626b48f1.entry.js → p-e73c357f.entry.js} +2 -2
- package/dist/huibo-ui/p-e73c357f.entry.js.map +1 -0
- package/dist/huibo-ui/{p-60532a1f.entry.js → p-e7c73624.entry.js} +2 -2
- package/dist/huibo-ui/p-e7c73624.entry.js.map +1 -0
- package/dist/huibo-ui/{p-86bdc48a.entry.js → p-e8824b2c.entry.js} +2 -2
- package/dist/huibo-ui/p-e8824b2c.entry.js.map +1 -0
- package/dist/huibo-ui/{p-13010da2.entry.js → p-e9e7abca.entry.js} +2 -2
- package/dist/huibo-ui/{p-f6889710.entry.js → p-ea0823f3.entry.js} +2 -2
- package/dist/huibo-ui/p-ea0823f3.entry.js.map +1 -0
- package/dist/huibo-ui/{p-b468858e.entry.js → p-f1f2483f.entry.js} +2 -2
- package/dist/huibo-ui/p-f69599fa.entry.js +2 -0
- package/dist/huibo-ui/p-f69599fa.entry.js.map +1 -0
- package/dist/huibo-ui/p-fad66d69.js +2 -0
- package/dist/huibo-ui/p-fad66d69.js.map +1 -0
- package/dist/huibo-ui/{p-fd8301c6.entry.js → p-fd6831f9.entry.js} +2 -2
- package/dist/huibo-ui/p-ff6bc5cc.entry.js +2 -0
- package/dist/huibo-ui/p-ff6bc5cc.entry.js.map +1 -0
- package/dist/types/components/Cascader/Cascader.d.ts +12 -0
- package/dist/types/components/Checkbox/Checkbox.d.ts +5 -0
- package/dist/types/components/Checkbox/CheckboxGroup.d.ts +1 -0
- package/dist/types/components/Collapse/Collapse.d.ts +2 -0
- package/dist/types/components/Collapse/CollapseItem.d.ts +8 -1
- package/dist/types/components/Dialog/Dialog.d.ts +13 -1
- package/dist/types/components/Drawer/Drawer.d.ts +4 -0
- package/dist/types/components/Dropdown/Dropdown.d.ts +6 -2
- package/dist/types/components/Form/Form.d.ts +59 -0
- package/dist/types/components/Form/FormItem.d.ts +23 -0
- package/dist/types/components/Image/Image.d.ts +6 -0
- package/dist/types/components/Menu/MenuItem.d.ts +8 -1
- package/dist/types/components/Message/Message.d.ts +3 -0
- package/dist/types/components/Popconfirm/Popconfirm.d.ts +6 -2
- package/dist/types/components/Popover/Popover.d.ts +6 -1
- package/dist/types/components/Radio/Radio.d.ts +5 -0
- package/dist/types/components/Segmented/Segmented.d.ts +6 -0
- package/dist/types/components/Select/Select.d.ts +24 -0
- package/dist/types/components/Table/Table.d.ts +110 -9
- package/dist/types/components/Tabs/Tabs.d.ts +6 -0
- package/dist/types/components/Tooltip/Tooltip.d.ts +6 -0
- package/dist/types/components/Tree/Tree.d.ts +24 -0
- package/dist/types/components/TreeSelect/TreeSelect.d.ts +17 -0
- package/dist/types/components/Watermark/Watermark.d.ts +7 -1
- package/dist/types/components.d.ts +188 -6
- package/dist/types/utils/a11y.d.ts +9 -0
- package/dist/types/utils/transition.d.ts +27 -0
- package/dist/types/utils/virtual-scroll.d.ts +38 -0
- package/package.json +1 -1
- package/dist/cjs/a11y-802de67a.js.map +0 -1
- package/dist/cjs/date-helpers-1ffddc59.js.map +0 -1
- package/dist/components/p-08b4005c.js.map +0 -1
- package/dist/components/p-cc0aeb50.js.map +0 -1
- package/dist/esm/a11y-f9ab2964.js.map +0 -1
- package/dist/esm/date-helpers-44507189.js.map +0 -1
- package/dist/huibo-ui/p-08b4005c.js.map +0 -1
- package/dist/huibo-ui/p-1f8db37a.entry.js.map +0 -1
- package/dist/huibo-ui/p-213b9de7.entry.js.map +0 -1
- package/dist/huibo-ui/p-25fd7d5c.entry.js +0 -2
- package/dist/huibo-ui/p-25fd7d5c.entry.js.map +0 -1
- package/dist/huibo-ui/p-2811e603.entry.js.map +0 -1
- package/dist/huibo-ui/p-2943f5d0.entry.js +0 -2
- package/dist/huibo-ui/p-2943f5d0.entry.js.map +0 -1
- package/dist/huibo-ui/p-2b4556ff.entry.js.map +0 -1
- package/dist/huibo-ui/p-33de6878.entry.js.map +0 -1
- package/dist/huibo-ui/p-3807da71.entry.js +0 -2
- package/dist/huibo-ui/p-3807da71.entry.js.map +0 -1
- package/dist/huibo-ui/p-47ef7a86.entry.js +0 -2
- package/dist/huibo-ui/p-47ef7a86.entry.js.map +0 -1
- package/dist/huibo-ui/p-4d34e43e.entry.js +0 -2
- package/dist/huibo-ui/p-4d34e43e.entry.js.map +0 -1
- package/dist/huibo-ui/p-54aa2fd8.entry.js +0 -2
- package/dist/huibo-ui/p-54aa2fd8.entry.js.map +0 -1
- package/dist/huibo-ui/p-60532a1f.entry.js.map +0 -1
- package/dist/huibo-ui/p-626b48f1.entry.js.map +0 -1
- package/dist/huibo-ui/p-639f167d.entry.js +0 -2
- package/dist/huibo-ui/p-639f167d.entry.js.map +0 -1
- package/dist/huibo-ui/p-6beb5b81.entry.js.map +0 -1
- package/dist/huibo-ui/p-735bceef.entry.js.map +0 -1
- package/dist/huibo-ui/p-76519752.entry.js +0 -2
- package/dist/huibo-ui/p-76519752.entry.js.map +0 -1
- package/dist/huibo-ui/p-79af2efa.entry.js +0 -2
- package/dist/huibo-ui/p-79af2efa.entry.js.map +0 -1
- package/dist/huibo-ui/p-7f6975ad.entry.js +0 -2
- package/dist/huibo-ui/p-7f6975ad.entry.js.map +0 -1
- package/dist/huibo-ui/p-86bdc48a.entry.js.map +0 -1
- package/dist/huibo-ui/p-8a8443b8.entry.js +0 -2
- package/dist/huibo-ui/p-8a8443b8.entry.js.map +0 -1
- package/dist/huibo-ui/p-8fd788c9.entry.js +0 -2
- package/dist/huibo-ui/p-8fd788c9.entry.js.map +0 -1
- package/dist/huibo-ui/p-92521c31.entry.js +0 -2
- package/dist/huibo-ui/p-92521c31.entry.js.map +0 -1
- package/dist/huibo-ui/p-965d4d02.entry.js +0 -2
- package/dist/huibo-ui/p-965d4d02.entry.js.map +0 -1
- package/dist/huibo-ui/p-aa5e5e02.entry.js.map +0 -1
- package/dist/huibo-ui/p-ab9cf0e4.entry.js.map +0 -1
- package/dist/huibo-ui/p-b8d87f7e.entry.js.map +0 -1
- package/dist/huibo-ui/p-c6c91664.entry.js +0 -2
- package/dist/huibo-ui/p-c6c91664.entry.js.map +0 -1
- package/dist/huibo-ui/p-c80f8ace.entry.js.map +0 -1
- package/dist/huibo-ui/p-cc0aeb50.js +0 -2
- package/dist/huibo-ui/p-cc0aeb50.js.map +0 -1
- package/dist/huibo-ui/p-d79a15b1.entry.js +0 -2
- package/dist/huibo-ui/p-d79a15b1.entry.js.map +0 -1
- package/dist/huibo-ui/p-e10fcfbe.entry.js.map +0 -1
- package/dist/huibo-ui/p-e5cbfa9e.entry.js.map +0 -1
- package/dist/huibo-ui/p-ea74fcae.entry.js.map +0 -1
- package/dist/huibo-ui/p-edbda423.entry.js +0 -2
- package/dist/huibo-ui/p-edbda423.entry.js.map +0 -1
- package/dist/huibo-ui/p-f6889710.entry.js.map +0 -1
- package/dist/huibo-ui/p-f9bb5217.entry.js +0 -2
- package/dist/huibo-ui/p-f9bb5217.entry.js.map +0 -1
- package/dist/huibo-ui/p-fea20295.entry.js +0 -2
- package/dist/huibo-ui/p-fea20295.entry.js.map +0 -1
- /package/dist/huibo-ui/{p-678b4212.entry.js.map → p-0ddae4e9.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-f4336be9.entry.js.map → p-14c3b47b.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-c50ad398.entry.js.map → p-193efdc0.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-0d4b2997.entry.js.map → p-2bcda1bb.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-7da14d7c.entry.js.map → p-3042f986.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-e039155d.entry.js.map → p-3dacb26b.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-a084b8e5.entry.js.map → p-412ff618.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-ccd09d5a.entry.js.map → p-6518c435.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-cad57c2d.entry.js.map → p-7a682c56.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-a8996d22.entry.js.map → p-815fc943.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-af74667d.entry.js.map → p-89be7973.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-8fdbd17c.entry.js.map → p-950e7465.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-89ea1141.entry.js.map → p-ac45291c.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-41d9c846.entry.js.map → p-b6afe81e.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-f5969181.entry.js.map → p-dd9c6459.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-13010da2.entry.js.map → p-e9e7abca.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-b468858e.entry.js.map → p-f1f2483f.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-fd8301c6.entry.js.map → p-fd6831f9.entry.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["imageCss","HbImageStyle0","Image","src","alt","width","height","fit","lazy","preview","radius","loaded","error","previewVisible","handleSrcChange","this","handleLoad","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, Watch } 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 /**\n * 换 src 时重置 loaded/error。\n * 修复 B5——修复前换 src 不清状态:坏图换好图卡在错误占位(error 不清零),\n * 好图换坏图 loaded 仍 true 造成短暂状态错乱。\n */\n @Watch('src')\n handleSrcChange() {\n this.loaded = false;\n this.error = false;\n }\n\n private handleLoad = () => {\n this.loaded = true;\n };\n private handleError = () => {\n this.error = true;\n };\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}\n 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\n class=\"hb-image__preview\"\n onClick={() => {\n this.previewVisible = false;\n }}\n >\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,MAQnC,eAAAC,GACEC,KAAKJ,OAAS,MACdI,KAAKH,MAAQ,K,CAGPI,WAAa,KACnBD,KAAKJ,OAAS,IAAI,EAEZM,YAAc,KACpBF,KAAKH,MAAQ,IAAI,EAGnB,MAAAM,GACE,OACEC,EAAA,OAAAC,IAAA,2CAAKC,MAAM,WAAWC,MAAO,CAAEjB,MAAOU,KAAKV,MAAOC,OAAQS,KAAKT,OAAQiB,aAAcR,KAAKL,UACtFK,KAAKH,MACLO,EAAA,OACEhB,IAAKY,KAAKZ,IACVC,IAAKW,KAAKX,IACViB,MAAO,CAAE,kBAAmB,KAAM,0BAA2BN,KAAKJ,QAClEW,MAAO,CAAEE,UAAWT,KAAKR,KACzBkB,QAASV,KAAKP,KAAO,OAASkB,UAC9BC,OAAQZ,KAAKC,WACbY,QAASb,KAAKE,YACdY,QAAS,IAAMd,KAAKN,UAAYM,KAAKF,eAAiB,QAGxDM,EAAA,OAAKE,MAAM,mBAAiB,UAE7BN,KAAKF,gBACJM,EAAA,OAAAC,IAAA,2CACEC,MAAM,oBACNQ,QAAS,KACPd,KAAKF,eAAiB,KAAK,GAG7BM,EAAA,OAAAC,IAAA,2CAAKjB,IAAKY,KAAKZ,IAAKC,IAAKW,KAAKX,IAAKiB,MAAM,2B","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as i,c as e,h as t}from"./p-e42dfa95.js";const o='/*! 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{.underline{text-decoration-line:underline}.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-link-font-size:14px;--hb-link-font-weight:400;--hb-link-color:var(--hb-color-primary);--hb-link-hover-color:var(--hb-color-primary-light-3);--hb-link-disabled-color:var(--hb-color-text-disabled);display:inline-block}.hb-link{align-items:center;color:var(--hb-link-color);cursor:pointer;display:inline-flex;font-size:var(--hb-link-font-size);font-weight:var(--hb-link-font-weight);justify-content:center;outline:none;padding:0;position:relative;text-decoration:none;transition:color .2s cubic-bezier(.645,.045,.355,1);vertical-align:middle}.hb-link:hover{color:var(--hb-link-hover-color)}.hb-link--underline:hover:after{border-bottom:1px solid var(--hb-link-hover-color);bottom:0;content:"";height:0;left:0;position:absolute;right:0}.hb-link--disabled{cursor:not-allowed}.hb-link--disabled,.hb-link--disabled:hover{color:var(--hb-link-disabled-color)}.hb-link--disabled:hover:after{border-bottom-color:var(--hb-link-disabled-color)}.hb-link--primary{--hb-link-color:var(--hb-color-primary);--hb-link-hover-color:var(--hb-color-primary-light-3)}.hb-link--success{--hb-link-color:var(--hb-color-success);--hb-link-hover-color:var(--hb-color-success-light-3)}.hb-link--warning{--hb-link-color:var(--hb-color-warning);--hb-link-hover-color:var(--hb-color-warning-light-3)}.hb-link--danger{--hb-link-color:var(--hb-color-danger);--hb-link-hover-color:var(--hb-color-danger-light-3)}.hb-link--info{--hb-link-color:var(--hb-color-info);--hb-link-hover-color:var(--hb-color-info-light-3)}.hb-link--default{--hb-link-color:var(--hb-color-text-regular);--hb-link-hover-color:var(--hb-color-primary)}.hb-link i{margin-right:4px}@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=o;const n=class{constructor(t){i(this,t);this.hbClick=e(this,"hbClick",7)}type="default";underline=false;disabled=false;href;target;icon;hbClick;handleClick=i=>{if(this.disabled){i.preventDefault();return}this.hbClick.emit(i)};render(){const i=this.href?"a":"span";return t(i,{key:"
|
|
2
|
-
//# sourceMappingURL=p-
|
|
1
|
+
import{r as i,c as e,h as t}from"./p-e42dfa95.js";const o='/*! 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{.underline{text-decoration-line:underline}.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-link-font-size:14px;--hb-link-font-weight:400;--hb-link-color:var(--hb-color-primary);--hb-link-hover-color:var(--hb-color-primary-light-3);--hb-link-disabled-color:var(--hb-color-text-disabled);display:inline-block}.hb-link{align-items:center;color:var(--hb-link-color);cursor:pointer;display:inline-flex;font-size:var(--hb-link-font-size);font-weight:var(--hb-link-font-weight);justify-content:center;outline:none;padding:0;position:relative;text-decoration:none;transition:color .2s cubic-bezier(.645,.045,.355,1);vertical-align:middle}.hb-link:hover{color:var(--hb-link-hover-color)}.hb-link--underline:hover:after{border-bottom:1px solid var(--hb-link-hover-color);bottom:0;content:"";height:0;left:0;position:absolute;right:0}.hb-link--disabled{cursor:not-allowed}.hb-link--disabled,.hb-link--disabled:hover{color:var(--hb-link-disabled-color)}.hb-link--disabled:hover:after{border-bottom-color:var(--hb-link-disabled-color)}.hb-link--primary{--hb-link-color:var(--hb-color-primary);--hb-link-hover-color:var(--hb-color-primary-light-3)}.hb-link--success{--hb-link-color:var(--hb-color-success);--hb-link-hover-color:var(--hb-color-success-light-3)}.hb-link--warning{--hb-link-color:var(--hb-color-warning);--hb-link-hover-color:var(--hb-color-warning-light-3)}.hb-link--danger{--hb-link-color:var(--hb-color-danger);--hb-link-hover-color:var(--hb-color-danger-light-3)}.hb-link--info{--hb-link-color:var(--hb-color-info);--hb-link-hover-color:var(--hb-color-info-light-3)}.hb-link--default{--hb-link-color:var(--hb-color-text-regular);--hb-link-hover-color:var(--hb-color-primary)}.hb-link i{margin-right:4px}@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=o;const n=class{constructor(t){i(this,t);this.hbClick=e(this,"hbClick",7)}type="default";underline=false;disabled=false;href;target;icon;hbClick;handleClick=i=>{if(this.disabled){i.preventDefault();return}this.hbClick.emit(i)};render(){const i=this.href?"a":"span";return t(i,{key:"adc292c63a29c892aad0a7fbc8731daab5cb274f",class:{"hb-link":true,[`hb-link--${this.type}`]:true,"hb-link--underline":this.underline,"hb-link--disabled":this.disabled},href:this.disabled?undefined:this.href,target:this.target,onClick:this.handleClick},this.icon&&t("i",{key:"8647d19079e91743aa0cb73e170f1a017caed895",class:this.icon}),t("slot",{key:"852517194c30de3092746039dfa1d294dc5fd243"}))}};n.style=r;export{n as hb_link};
|
|
2
|
+
//# sourceMappingURL=p-f1f2483f.entry.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as e,c as t,g as i,h as s}from"./p-e42dfa95.js";import{c as o}from"./p-4ef5a884.js";import{a as r,h as a}from"./p-00aa34c8.js";function l(e){const{total:t,viewportHeight:i,scrollTop:s,buffer:o=5}=e;if(t<=0)return{startIndex:0,endIndex:0};const r=e.itemHeight>0?e.itemHeight:1;let a=Math.floor(s/r)-o;if(a<0)a=0;let l=Math.ceil((s+i)/r)+o;if(l>t)l=t;return{startIndex:a,endIndex:l}}function n(e,t){const i=t>0?t:1;return e*i}function h(e,t){const i=t>0?t:1;return e*i}const c='/*! 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-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--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{.relative{position:relative}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.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-select-font-size:14px;--hb-select-height:32px;--hb-select-border-color:var(--hb-border-color,#dcdfe6);--hb-select-border-color-hover:var(--hb-color-primary);--hb-select-bg-color:var(--hb-color-white,#fff);--hb-select-text-color:var(--hb-color-text-regular,#606266);--hb-select-placeholder-color:var(--hb-color-text-placeholder,#c0c4cc);display:inline-block;position:relative}.hb-select{display:inline-block;position:relative;width:240px}.hb-select__input-wrapper{position:relative}.hb-select__input,.hb-select__input-wrapper{cursor:pointer;display:inline-block;width:100%}.hb-select__input{background-color:var(--hb-select-bg-color);border:1px solid var(--hb-select-border-color);border-radius:4px;box-sizing:border-box;color:var(--hb-select-text-color);font-size:var(--hb-select-font-size);height:var(--hb-select-height);line-height:var(--hb-select-height);outline:none;padding:0 30px 0 15px;transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.hb-select__input::placeholder{color:var(--hb-select-placeholder-color)}.hb-select__input:focus,.hb-select__input:hover:not(:disabled){border-color:var(--hb-select-border-color-hover)}.hb-select__tags{align-items:center;background-color:var(--hb-select-bg-color);border:1px solid var(--hb-select-border-color);border-radius:4px;display:flex;flex-wrap:wrap;min-height:var(--hb-select-height);padding:0 30px 0 5px}.hb-select__tag{align-items:center;background-color:var(--hb-fill-color-light,#f0f2f5);border:1px solid var(--hb-border-color-lighter,#e4e7ed);border-radius:4px;color:var(--hb-color-text-regular,#606266);display:inline-flex;font-size:12px;height:24px;margin:2px 0 2px 6px;padding:0 8px}.hb-select__tag-text{margin-right:4px}.hb-select__tag-close{align-items:center;color:var(--hb-color-text-placeholder,#c0c4cc);cursor:pointer;display:inline-flex;height:12px;justify-content:center;transition:color .2s;width:12px}.hb-select__tag-close svg{height:100%;width:100%}.hb-select__tag-close:hover{color:var(--hb-color-text-regular,#606266)}.hb-select__suffix{align-items:center;color:var(--hb-select-text-color);display:flex;position:absolute;right:8px;top:50%;transform:translateY(-50%)}.hb-select__clear{align-items:center;color:var(--hb-select-placeholder-color);cursor:pointer;display:inline-flex;height:14px;justify-content:center;margin-right:8px;transition:color .2s;width:14px}.hb-select__clear svg{height:100%;width:100%}.hb-select__clear:hover{color:var(--hb-select-text-color)}.hb-select__arrow{align-items:center;color:var(--hb-select-placeholder-color);display:inline-flex;height:12px;justify-content:center;transition:transform .3s;width:12px}.hb-select__arrow svg{height:100%;width:100%}.hb-select--open .hb-select__arrow{transform:rotate(180deg)}.hb-select__dropdown{background-color:var(--hb-select-bg-color);border:1px solid var(--hb-select-border-color);border-radius:4px;box-shadow:0 2px 12px #0000001a;left:0;margin-top:4px;max-height:300px;min-width:100%;overflow-y:auto;position:absolute;top:100%;z-index:1000}.hb-select__menu{list-style:none;margin:0;padding:6px 0}.hb-select__menu-item{align-items:center;color:var(--hb-select-text-color);cursor:pointer;display:flex;font-size:var(--hb-select-font-size);padding:8px 20px;transition:background-color .2s}.hb-select__menu-item:hover:not(.hb-select__menu-item--disabled):not(.hb-select__menu-item--divided){background-color:var(--hb-fill-color-light,#f5f7fa)}.hb-select__menu-item--selected{color:var(--hb-color-primary);font-weight:600}.hb-select__menu-item--disabled{color:var(--hb-color-text-disabled,#c0c4cc);cursor:not-allowed}.hb-select__menu-item--divided{border-top:1px solid var(--hb-border-color-lighter,#e4e7ed);margin-top:6px;padding-top:6px}.hb-select__menu-item--empty{color:var(--hb-select-placeholder-color);cursor:default}.hb-select__menu-item-checkbox{align-items:center;color:var(--hb-color-primary,#1677ff);display:inline-flex;height:14px;justify-content:center;margin-right:8px;width:14px}.hb-select__menu-item-checkbox svg{height:100%;width:100%}.hb-select__menu-item--create{color:var(--hb-color-primary,#1677ff);font-weight:500}.hb-select__menu-item--create:hover{background-color:var(--hb-color-primary-bg,#e6f4ff)}.hb-select__menu-item-label{flex:1}.hb-select--small{font-size:12px}.hb-select--small .hb-select__input{font-size:12px;height:24px;line-height:24px;padding:0 25px 0 12px}.hb-select--large{font-size:16px}.hb-select--large .hb-select__input{font-size:16px;height:40px;line-height:40px;padding:0 35px 0 18px}.hb-select--disabled{cursor:not-allowed}.hb-select--disabled .hb-select__input{background-color:var(--hb-fill-color-light,#f5f7fa);border-color:var(--hb-select-border-color);color:var(--hb-color-text-disabled,#c0c4cc);cursor:not-allowed}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@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 d=c;const p=class{constructor(i){e(this,i);this.hbChange=t(this,"hbChange",7);this.hbVisibleChange=t(this,"hbVisibleChange",7)}get el(){return i(this)}modelValue;options=[];placeholder="请选择";disabled=false;size="default";clearable=false;multiple=false;filterable=false;filterMethod;defaultFirstOption=false;allowCreate=false;collapseTags=false;maxCollapseTags;virtual=false;dropdownMaxHeight=256;virtualItemHeight=34;isOpen=false;inputValue="";searchValue="";filteredOptions=[];activeOptionIndex=-1;dropdownScrollTop=0;handleDropdownScroll=e=>{const t=e.target;this.dropdownScrollTop=t.scrollTop};listboxId=`hb-select-listbox-${Math.random().toString(36).slice(2,11)}`;hbChange;hbVisibleChange;clickOutside=o({host:null,isOpen:()=>this.isOpen,onClose:()=>{this.isOpen=false;this.hbVisibleChange.emit(false)}});componentDidLoad(){this.clickOutside=o({host:this.el,isOpen:()=>this.isOpen,onClose:()=>{this.isOpen=false;this.hbVisibleChange.emit(false)}});this.clickOutside.connect();this.updateInputValue();if(this.filterable){this.filteredOptions=this.options}}disconnectedCallback(){this.clickOutside.disconnect()}handleValueChange(){this.updateInputValue()}handleOptionsChange(){if(this.filterable){this.filteredOptions=this.options}}updateInputValue(){if(!this.modelValue){this.inputValue="";return}if(this.multiple&&Array.isArray(this.modelValue)){const e=this.modelValue.map((e=>{const t=this.options.find((t=>t.value===e));return t?t.label:String(e)}));this.inputValue=e.join(", ")}else{const e=this.options.find((e=>e.value===this.modelValue));this.inputValue=e?e.label:String(this.modelValue)}}handleInputClick=()=>{if(this.disabled)return;this.isOpen=!this.isOpen;if(this.isOpen){this.activeOptionIndex=this.defaultFirstOption?Math.max(-1,this.options.findIndex((e=>!e.disabled))):-1}this.hbVisibleChange.emit(this.isOpen)};handleWrapperKeydown=e=>{if(this.disabled)return;const t=this.filterable?this.filteredOptions:this.options;if(!this.isOpen){if(e.key==="Enter"||e.key===" "||e.key==="Spacebar"||e.key==="ArrowDown"||e.key==="ArrowUp"){e.preventDefault();this.isOpen=true;this.activeOptionIndex=-1;this.hbVisibleChange.emit(true)}return}const i=a(e,{activeIndex:this.activeOptionIndex,itemCount:t.length,loop:true});switch(i.type){case"navigate":e.preventDefault();this.activeOptionIndex=i.index;break;case"select":{e.preventDefault();const s=t[i.index];if(s&&!s.disabled)this.handleSelect(s);break}case"close":e.preventDefault();this.isOpen=false;this.hbVisibleChange.emit(false);break}};handleSelect=e=>{if(e.disabled)return;if(this.multiple){const t=this.modelValue||[];const i=t.indexOf(e.value);if(i>-1){t.splice(i,1)}else{t.push(e.value)}this.modelValue=[...t]}else{this.modelValue=e.value;this.isOpen=false;this.hbVisibleChange.emit(false)}this.updateInputValue();this.hbChange.emit(this.modelValue)};handleClear=e=>{e.stopPropagation();this.modelValue=this.multiple?[]:undefined;this.inputValue="";this.isOpen=false;this.hbChange.emit(this.modelValue);this.hbVisibleChange.emit(false)};handleSearch=e=>{const t=e.target;this.searchValue=t.value;if(this.filterMethod){this.filterMethod(t.value)}else{this.filteredOptions=this.options.filter((e=>e.label.toLowerCase().includes(t.value.toLowerCase())))}};isSelected(e){if(this.multiple&&Array.isArray(this.modelValue)){return this.modelValue.includes(e.value)}return this.modelValue===e.value}get createOption(){if(!this.allowCreate||!this.filterable||!this.isOpen)return null;const e=this.searchValue.trim();if(!e)return null;const t=this.options.some((t=>String(t.label).toLowerCase()===e.toLowerCase()||String(t.value).toLowerCase()===e.toLowerCase()));if(t)return null;return{value:e,label:e}}handleCreate=()=>{const e=this.createOption;if(!e)return;if(this.multiple){const t=(this.modelValue||[]).slice();if(!t.includes(e.value))t.push(e.value);this.modelValue=t}else{this.modelValue=e.value;this.isOpen=false;this.hbVisibleChange.emit(false)}this.searchValue="";this.filteredOptions=this.options;this.updateInputValue();this.hbChange.emit(this.modelValue)};renderOption(e,t){return s("li",{id:`${this.listboxId}-opt-${t}`,class:{"hb-select__menu-item":true,"hb-select__menu-item--selected":this.isSelected(e),"hb-select__menu-item--disabled":e.disabled,"hb-select__menu-item--divided":e.divided,"hb-select__menu-item--active":t===this.activeOptionIndex},style:this.virtual?{height:`${this.virtualItemHeight}px`}:undefined,role:"option","aria-selected":this.isSelected(e)?"true":"false","aria-disabled":e.disabled?"true":undefined,onClick:()=>this.handleSelect(e)},this.multiple&&s("span",{class:"hb-select__menu-item-checkbox","aria-hidden":"true"},this.isSelected(e)?s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":3,"stroke-linecap":"round","stroke-linejoin":"round"},s("path",{d:"M5 12l5 5L20 7"})):null),s("span",{class:"hb-select__menu-item-label"},e.label))}render(){const e=this.filterable?this.filteredOptions:this.options;const t=this.clearable&&this.modelValue!==undefined&&(this.multiple?this.modelValue.length>0:true);return s("div",{key:"711a2660ec0ff788a027b7097a64f74ee535ae58",class:{"hb-select":true,"hb-select--open":this.isOpen,"hb-select--disabled":this.disabled,[`hb-select--${this.size}`]:true},role:"combobox","aria-haspopup":"listbox","aria-expanded":this.isOpen?"true":"false","aria-controls":this.isOpen?this.listboxId:undefined,"aria-activedescendant":this.isOpen&&this.activeOptionIndex>=0?`${this.listboxId}-opt-${this.activeOptionIndex}`:undefined},s("div",{key:"7719c10931fd36306a7bc302b167c43a782158bd",class:"hb-select__input-wrapper",onClick:this.handleInputClick,onKeyDown:this.handleWrapperKeydown},this.multiple&&Array.isArray(this.modelValue)&&this.modelValue.length>0?s("div",{class:"hb-select__tags"},this.modelValue.slice(0,this.collapseTags&&this.maxCollapseTags?this.maxCollapseTags:undefined).map((e=>{const t=this.options.find((t=>t.value===e));return s("span",{class:"hb-select__tag"},s("span",{class:"hb-select__tag-text"},t?t.label:e),s("span",{class:"hb-select__tag-close",role:"button","aria-label":"移除标签",tabIndex:0,onClick:i=>{i.stopPropagation();this.handleSelect(t||{value:e,label:String(e)})},onKeyDown:r},s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},s("path",{d:"M6 6l12 12M18 6L6 18"}))))})),this.collapseTags&&this.maxCollapseTags&&this.modelValue.length>this.maxCollapseTags&&s("span",{class:"hb-select__tag"},s("span",{class:"hb-select__tag-text"},"+",this.modelValue.length-this.maxCollapseTags))):s("input",{type:"text",class:"hb-select__input",placeholder:this.placeholder,value:this.filterable&&this.isOpen?this.searchValue:this.inputValue,disabled:this.disabled,readonly:!this.filterable||!this.isOpen,onInput:this.handleSearch,"aria-haspopup":"listbox","aria-expanded":this.isOpen?"true":"false",role:"combobox"}),s("span",{key:"a9dc4ecd508bb6828296cf2a9465ab5c24595573",class:"hb-select__suffix"},t&&s("span",{key:"cde7a95063f12c03844303681a3a95da1f5aaa66",class:"hb-select__clear",role:"button","aria-label":"清空",tabIndex:0,onClick:this.handleClear,onKeyDown:r},s("svg",{key:"a9abef626a4a3da495afffe7e562fb557a26f8e7",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},s("path",{key:"a95c9113f3c7ef741dc9a8111576827571668ecf",d:"M6 6l12 12M18 6L6 18"}))),s("span",{key:"184023640706c01ed18854cb5b1975f9def18dc4",class:"hb-select__arrow","aria-hidden":"true"},s("svg",{key:"14fec9c7d46ad1d22ddf07de502aedabe8b19b18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"},s("path",{key:"d280de7e1545be150238126b65f6c37e499bb83a",d:"M6 9l6 6 6-6"}))))),this.isOpen&&s("div",{key:"e9a10e24e49095535c232ec39be458780789fde4",class:"hb-select__dropdown"},s("ul",{key:"874854750698dcb2346cbd3a965ba0e500b5bafc",class:"hb-select__menu",role:"listbox",id:this.listboxId,style:this.virtual?{maxHeight:`${this.dropdownMaxHeight}px`,overflowY:"auto"}:undefined,onScroll:this.virtual?this.handleDropdownScroll:undefined},this.createOption&&s("li",{key:"5ca5a633a0d69ddb1ba065bb08d947d663b774ac",class:{"hb-select__menu-item":true,"hb-select__menu-item--create":true},role:"option","aria-selected":"false",onClick:this.handleCreate},s("span",{key:"f986194f0456c910bba2447603505edce6cb6e60",class:"hb-select__menu-item-label"},"创建「",this.createOption.label,"」")),e.length===0&&!this.createOption?s("li",{class:"hb-select__menu-item hb-select__menu-item--empty","aria-disabled":"true"},"无数据"):this.virtual?s("div",{style:{height:`${h(e.length,this.virtualItemHeight)}px`,position:"relative"}},s("div",{style:{transform:`translateY(${n(l({total:e.length,itemHeight:this.virtualItemHeight,viewportHeight:this.dropdownMaxHeight,scrollTop:this.dropdownScrollTop}).startIndex,this.virtualItemHeight)}px)`}},e.slice(l({total:e.length,itemHeight:this.virtualItemHeight,viewportHeight:this.dropdownMaxHeight,scrollTop:this.dropdownScrollTop}).startIndex,l({total:e.length,itemHeight:this.virtualItemHeight,viewportHeight:this.dropdownMaxHeight,scrollTop:this.dropdownScrollTop}).endIndex).map(((t,i)=>{const s=l({total:e.length,itemHeight:this.virtualItemHeight,viewportHeight:this.dropdownMaxHeight,scrollTop:this.dropdownScrollTop}).startIndex+i;return this.renderOption(t,s)})))):e.map(((e,t)=>this.renderOption(e,t))))))}static get watchers(){return{modelValue:["handleValueChange"],options:["handleOptionsChange"]}}};p.style=d;export{p as hb_select};
|
|
2
|
+
//# sourceMappingURL=p-f69599fa.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getVirtualRange","opts","total","viewportHeight","scrollTop","buffer","startIndex","endIndex","itemHeight","Math","floor","ceil","getOffsetTop","h","getTotalHeight","selectCss","HbSelectStyle0","Select","modelValue","options","placeholder","disabled","size","clearable","multiple","filterable","filterMethod","defaultFirstOption","allowCreate","collapseTags","maxCollapseTags","virtual","dropdownMaxHeight","virtualItemHeight","isOpen","inputValue","searchValue","filteredOptions","activeOptionIndex","dropdownScrollTop","handleDropdownScroll","e","target","this","listboxId","random","toString","slice","hbChange","hbVisibleChange","clickOutside","createClickOutsideHandler","host","onClose","emit","componentDidLoad","el","connect","updateInputValue","disconnectedCallback","disconnect","handleValueChange","handleOptionsChange","Array","isArray","labels","map","val","option","find","opt","value","label","String","join","handleInputClick","max","findIndex","o","handleWrapperKeydown","displayOptions","key","preventDefault","action","handleListKeyboard","activeIndex","itemCount","length","loop","type","index","handleSelect","currentValue","indexOf","splice","push","handleClear","stopPropagation","undefined","handleSearch","filter","toLowerCase","includes","isSelected","createOption","q","trim","exists","some","handleCreate","arr","renderOption","id","class","divided","style","height","role","onClick","viewBox","fill","stroke","d","render","showClear","onKeyDown","tabIndex","activationClickHandler","readonly","onInput","maxHeight","overflowY","onScroll","position","transform","i","absIndex"],"sources":["src/utils/virtual-scroll.ts","src/components/Select/select.css?tag=hb-select&encapsulation=shadow","src/components/Select/Select.tsx"],"sourcesContent":["/**\n * 通用虚拟滚动工具(V1,包2)。\n *\n * 从 Table 的虚拟滚动逻辑提取,供 Select/Cascader/Tree/TreeSelect/Menu 复用。\n * 仅渲染「可见窗口 + 上下缓冲」范围的项,而非全量列表——1000+ 选项时 DOM 节点数恒定。\n *\n * 用法(组件内):\n * 1. 维护 scrollTop state(onScroll 回调更新)\n * 2. 调 getVirtualRange({ total, itemHeight, viewportHeight, scrollTop, buffer }) 得 [start, end)\n * 3. 仅渲染 list.slice(start, end),用 getOffsetTop(start, itemHeight) 撑出顶部空白\n */\n\nexport interface VirtualRangeOptions {\n /** 列表总项数 */\n total: number;\n /** 每项高度(px),>0 */\n itemHeight: number;\n /** 视口高度(px) */\n viewportHeight: number;\n /** 当前滚动位置(px) */\n scrollTop: number;\n /** 上下缓冲行数(默认 5) */\n buffer?: number;\n}\n\nexport interface VirtualRange {\n /** 起始索引(含) */\n startIndex: number;\n /** 结束索引(不含) */\n endIndex: number;\n}\n\n/**\n * 计算可见窗口 [startIndex, endIndex)。\n * startIndex 夹到 [0, total),endIndex 夹到 [0, total]。\n */\nexport function getVirtualRange(opts: VirtualRangeOptions): VirtualRange {\n const { total, viewportHeight, scrollTop, buffer = 5 } = opts;\n if (total <= 0) return { startIndex: 0, endIndex: 0 };\n const itemHeight = opts.itemHeight > 0 ? opts.itemHeight : 1;\n\n let startIndex = Math.floor(scrollTop / itemHeight) - buffer;\n if (startIndex < 0) startIndex = 0;\n\n let endIndex = Math.ceil((scrollTop + viewportHeight) / itemHeight) + buffer;\n if (endIndex > total) endIndex = total;\n\n return { startIndex, endIndex };\n}\n\n/** 撑出顶部空白高度(px),用于偏移可见窗口到正确滚动位置。 */\nexport function getOffsetTop(startIndex: number, itemHeight: number): number {\n const h = itemHeight > 0 ? itemHeight : 1;\n return startIndex * h;\n}\n\n/** 容器总高度(px),用于撑出滚动条。 */\nexport function getTotalHeight(total: number, itemHeight: number): number {\n const h = itemHeight > 0 ? itemHeight : 1;\n return total * h;\n}\n",":host {\n display: inline-block;\n position: relative;\n --hb-select-font-size: 14px;\n --hb-select-height: 32px;\n --hb-select-border-color: var(--hb-border-color, #dcdfe6);\n --hb-select-border-color-hover: var(--hb-color-primary);\n --hb-select-bg-color: var(--hb-color-white, #ffffff);\n --hb-select-text-color: var(--hb-color-text-regular, #606266);\n --hb-select-placeholder-color: var(--hb-color-text-placeholder, #c0c4cc);\n}\n\n.hb-select {\n display: inline-block;\n position: relative;\n width: 240px;\n}\n\n.hb-select__input-wrapper {\n position: relative;\n display: inline-block;\n width: 100%;\n cursor: pointer;\n}\n\n.hb-select__input {\n display: inline-block;\n width: 100%;\n height: var(--hb-select-height);\n line-height: var(--hb-select-height);\n padding: 0 30px 0 15px;\n font-size: var(--hb-select-font-size);\n color: var(--hb-select-text-color);\n background-color: var(--hb-select-bg-color);\n border: 1px solid var(--hb-select-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-select__input::placeholder {\n color: var(--hb-select-placeholder-color);\n}\n\n.hb-select__input:hover:not(:disabled) {\n border-color: var(--hb-select-border-color-hover);\n}\n\n.hb-select__input:focus {\n border-color: var(--hb-select-border-color-hover);\n}\n\n.hb-select__tags {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n padding: 0 30px 0 5px;\n min-height: var(--hb-select-height);\n border: 1px solid var(--hb-select-border-color);\n border-radius: 4px;\n background-color: var(--hb-select-bg-color);\n}\n\n.hb-select__tag {\n display: inline-flex;\n align-items: center;\n height: 24px;\n padding: 0 8px;\n margin: 2px 0 2px 6px;\n background-color: var(--hb-fill-color-light, #f0f2f5);\n border: 1px solid var(--hb-border-color-lighter, #e4e7ed);\n border-radius: 4px;\n font-size: 12px;\n color: var(--hb-color-text-regular, #606266);\n}\n\n.hb-select__tag-text {\n margin-right: 4px;\n}\n\n.hb-select__tag-close {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 12px;\n height: 12px;\n cursor: pointer;\n color: var(--hb-color-text-placeholder, #c0c4cc);\n transition: color 0.2s;\n}\n\n.hb-select__tag-close svg {\n width: 100%;\n height: 100%;\n}\n\n.hb-select__tag-close:hover {\n color: var(--hb-color-text-regular, #606266);\n}\n\n.hb-select__suffix {\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n color: var(--hb-select-text-color);\n}\n\n.hb-select__clear {\n margin-right: 8px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 14px;\n height: 14px;\n cursor: pointer;\n color: var(--hb-select-placeholder-color);\n transition: color 0.2s;\n}\n\n.hb-select__clear svg {\n width: 100%;\n height: 100%;\n}\n\n.hb-select__clear:hover {\n color: var(--hb-select-text-color);\n}\n\n.hb-select__arrow {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 12px;\n height: 12px;\n color: var(--hb-select-placeholder-color);\n transition: transform 0.3s;\n}\n\n.hb-select__arrow svg {\n width: 100%;\n height: 100%;\n}\n\n.hb-select--open .hb-select__arrow {\n transform: rotate(180deg);\n}\n\n.hb-select__dropdown {\n position: absolute;\n top: 100%;\n left: 0;\n margin-top: 4px;\n background-color: var(--hb-select-bg-color);\n border: 1px solid var(--hb-select-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: 100%;\n max-height: 300px;\n overflow-y: auto;\n}\n\n.hb-select__menu {\n margin: 0;\n padding: 6px 0;\n list-style: none;\n}\n\n.hb-select__menu-item {\n display: flex;\n align-items: center;\n padding: 8px 20px;\n font-size: var(--hb-select-font-size);\n color: var(--hb-select-text-color);\n cursor: pointer;\n transition: background-color 0.2s;\n}\n\n.hb-select__menu-item:hover:not(.hb-select__menu-item--disabled):not(.hb-select__menu-item--divided) {\n background-color: var(--hb-fill-color-light, #f5f7fa);\n}\n\n.hb-select__menu-item--selected {\n color: var(--hb-color-primary);\n font-weight: 600;\n}\n\n.hb-select__menu-item--disabled {\n color: var(--hb-color-text-disabled, #c0c4cc);\n cursor: not-allowed;\n}\n\n.hb-select__menu-item--divided {\n border-top: 1px solid var(--hb-border-color-lighter, #e4e7ed);\n margin-top: 6px;\n padding-top: 6px;\n}\n\n.hb-select__menu-item--empty {\n color: var(--hb-select-placeholder-color);\n cursor: default;\n}\n\n.hb-select__menu-item-checkbox {\n margin-right: 8px;\n width: 14px;\n height: 14px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: var(--hb-color-primary, #1677ff);\n}\n\n.hb-select__menu-item-checkbox svg {\n width: 100%;\n height: 100%;\n}\n\n.hb-select__menu-item--create {\n color: var(--hb-color-primary, #1677ff);\n font-weight: 500;\n}\n\n.hb-select__menu-item--create:hover {\n background-color: var(--hb-color-primary-bg, #e6f4ff);\n}\n\n.hb-select__menu-item-label {\n flex: 1;\n}\n\n.hb-select--small {\n font-size: 12px;\n}\n\n.hb-select--small .hb-select__input {\n height: 24px;\n line-height: 24px;\n font-size: 12px;\n padding: 0 25px 0 12px;\n}\n\n.hb-select--large {\n font-size: 16px;\n}\n\n.hb-select--large .hb-select__input {\n height: 40px;\n line-height: 40px;\n font-size: 16px;\n padding: 0 35px 0 18px;\n}\n\n.hb-select--disabled {\n cursor: not-allowed;\n}\n\n.hb-select--disabled .hb-select__input {\n background-color: var(--hb-fill-color-light, #f5f7fa);\n border-color: var(--hb-select-border-color);\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 { handleListKeyboard, activationClickHandler } from '../../utils/a11y';\nimport { getVirtualRange, getOffsetTop, getTotalHeight } from '../../utils/virtual-scroll';\n\nexport interface SelectOption {\n value: string | number;\n label: string;\n disabled?: boolean;\n divided?: boolean;\n}\n\n/**\n * Select 选择器组件\n * 当选项过多时,使用下拉菜单展示并选择内容\n */\n@Component({\n tag: 'hb-select',\n styleUrl: 'select.css',\n shadow: true,\n})\nexport class Select {\n @Element() el: HTMLElement;\n\n /**\n * 绑定值\n */\n @Prop({ mutable: true }) modelValue?: string | number | (string | number)[];\n\n /**\n * 可选项数据源\n */\n @Prop() options: SelectOption[] = [];\n\n /**\n * 输入框占位文本\n */\n @Prop() placeholder: string = '请选择';\n\n /**\n * 是否禁用\n * @default false\n */\n @Prop() disabled: boolean = false;\n\n /**\n * 输入框尺寸\n */\n @Prop() size: 'large' | 'default' | 'small' = 'default';\n\n /**\n * 是否可清空\n * @default false\n */\n @Prop() clearable: boolean = false;\n\n /**\n * 是否多选\n * @default false\n */\n @Prop() multiple: boolean = false;\n\n /**\n * 是否可搜索\n * @default false\n */\n @Prop() filterable: boolean = false;\n\n /**\n * 自定义过滤方法\n */\n @Prop() filterMethod?: (query: string) => void;\n\n /**\n * 是否默认展开\n * @default false\n */\n @Prop() defaultFirstOption: boolean = false;\n\n /**\n * 是否允许创建新条目\n * @default false\n */\n @Prop() allowCreate: boolean = false;\n\n /**\n * 多选时是否将选中值按文字的形式展示\n * @default false\n */\n @Prop() collapseTags: boolean = false;\n\n /**\n * 多选时最多显示多少个tag\n */\n @Prop() maxCollapseTags?: number;\n\n /**\n * V1:是否开启虚拟滚动(1000+ 选项时推荐)。默认 false。\n * 开启后下拉仅渲染可见窗口内的选项,DOM 节点数恒定。\n */\n @Prop() virtual: boolean = false;\n\n /**\n * V1:下拉最大高度(px)。virtual=true 时必填(定义视口高度)。默认 256。\n */\n @Prop() dropdownMaxHeight: number = 256;\n\n /**\n * V1:虚拟滚动每项预估高度(px)。默认 34。\n */\n @Prop() virtualItemHeight: number = 34;\n\n @State() isOpen: boolean = false;\n @State() inputValue: string = '';\n @State() searchValue: string = '';\n @State() filteredOptions: SelectOption[] = [];\n /** 键盘高亮的选项索引(-1 表示无) */\n @State() activeOptionIndex: number = -1;\n /** V1:下拉滚动位置(px),驱动虚拟滚动可见窗口重算 */\n @State() dropdownScrollTop: number = 0;\n\n /** V1:下拉滚动回调 */\n private handleDropdownScroll = (e: Event) => {\n const target = e.target as HTMLElement;\n this.dropdownScrollTop = target.scrollTop;\n };\n\n /**\n * O4:实例级稳定 id,用于 combobox 的 aria-controls / aria-activedescendant 关联,\n * 让读屏在键盘导航时播报当前高亮项。\n */\n private listboxId = `hb-select-listbox-${Math.random().toString(36).slice(2, 11)}`;\n\n /**\n * 值改变事件\n */\n @Event() hbChange: EventEmitter<string | number | (string | number)[]>;\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: () => {\n this.isOpen = false;\n this.hbVisibleChange.emit(false);\n },\n });\n\n componentDidLoad() {\n this.clickOutside = createClickOutsideHandler({\n host: this.el,\n isOpen: () => this.isOpen,\n onClose: () => {\n this.isOpen = false;\n this.hbVisibleChange.emit(false);\n },\n });\n this.clickOutside.connect();\n this.updateInputValue();\n if (this.filterable) {\n this.filteredOptions = this.options;\n }\n }\n\n disconnectedCallback() {\n this.clickOutside.disconnect();\n }\n\n @Watch('modelValue')\n handleValueChange() {\n this.updateInputValue();\n }\n\n @Watch('options')\n handleOptionsChange() {\n if (this.filterable) {\n this.filteredOptions = this.options;\n }\n }\n\n private updateInputValue() {\n if (!this.modelValue) {\n this.inputValue = '';\n return;\n }\n\n if (this.multiple && Array.isArray(this.modelValue)) {\n const labels = this.modelValue.map(val => {\n const option = this.options.find(opt => opt.value === val);\n return option ? option.label : String(val);\n });\n this.inputValue = labels.join(', ');\n } else {\n const option = this.options.find(opt => opt.value === this.modelValue);\n this.inputValue = option ? option.label : String(this.modelValue);\n }\n }\n\n private handleInputClick = () => {\n if (this.disabled) return;\n this.isOpen = !this.isOpen;\n if (this.isOpen) {\n // defaultFirstOption=true:打开时自动高亮第一个可选(非禁用)项\n this.activeOptionIndex = this.defaultFirstOption\n ? Math.max(\n -1,\n this.options.findIndex(o => !o.disabled),\n )\n : -1;\n }\n this.hbVisibleChange.emit(this.isOpen);\n };\n\n private handleWrapperKeydown = (e: KeyboardEvent) => {\n if (this.disabled) return;\n const displayOptions = this.filterable ? this.filteredOptions : this.options;\n\n if (!this.isOpen) {\n // 关闭态:Enter / Space / 方向键 展开\n if (e.key === 'Enter' || e.key === ' ' || e.key === 'Spacebar' || e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n e.preventDefault();\n this.isOpen = true;\n this.activeOptionIndex = -1;\n this.hbVisibleChange.emit(true);\n }\n return;\n }\n\n const action = handleListKeyboard(e, {\n activeIndex: this.activeOptionIndex,\n itemCount: displayOptions.length,\n loop: true,\n });\n switch (action.type) {\n case 'navigate':\n e.preventDefault();\n this.activeOptionIndex = action.index;\n break;\n case 'select': {\n e.preventDefault();\n const opt = displayOptions[action.index];\n if (opt && !opt.disabled) this.handleSelect(opt);\n break;\n }\n case 'close':\n e.preventDefault();\n this.isOpen = false;\n this.hbVisibleChange.emit(false);\n break;\n default:\n break;\n }\n };\n\n private handleSelect = (option: SelectOption) => {\n if (option.disabled) return;\n\n if (this.multiple) {\n const currentValue = (this.modelValue as (string | number)[]) || [];\n const index = currentValue.indexOf(option.value);\n\n if (index > -1) {\n currentValue.splice(index, 1);\n } else {\n currentValue.push(option.value);\n }\n\n this.modelValue = [...currentValue];\n } else {\n this.modelValue = option.value;\n this.isOpen = false;\n this.hbVisibleChange.emit(false);\n }\n\n this.updateInputValue();\n this.hbChange.emit(this.modelValue);\n };\n\n private handleClear = (e: Event) => {\n e.stopPropagation();\n this.modelValue = this.multiple ? [] : undefined;\n this.inputValue = '';\n this.isOpen = false;\n this.hbChange.emit(this.modelValue);\n this.hbVisibleChange.emit(false);\n };\n\n private handleSearch = (e: Event) => {\n const target = e.target as HTMLInputElement;\n this.searchValue = target.value;\n\n if (this.filterMethod) {\n this.filterMethod(target.value);\n } else {\n this.filteredOptions = this.options.filter(opt => opt.label.toLowerCase().includes(target.value.toLowerCase()));\n }\n };\n\n private isSelected(option: SelectOption): boolean {\n if (this.multiple && Array.isArray(this.modelValue)) {\n return this.modelValue.includes(option.value);\n }\n return this.modelValue === option.value;\n }\n\n /**\n * allowCreate + filterable:当用户输入的文本在已有选项中不存在时,\n * 渲染一个\"创建 xxx\"项。返回待创建的文本(已 trim);无需创建返回 null。\n */\n private get createOption(): SelectOption | null {\n if (!this.allowCreate || !this.filterable || !this.isOpen) return null;\n const q = this.searchValue.trim();\n if (!q) return null;\n const exists = this.options.some(o => String(o.label).toLowerCase() === q.toLowerCase() || String(o.value).toLowerCase() === q.toLowerCase());\n if (exists) return null;\n return { value: q, label: q };\n }\n\n private handleCreate = () => {\n const opt = this.createOption;\n if (!opt) return;\n if (this.multiple) {\n const arr = ((this.modelValue as (string | number)[]) || []).slice();\n if (!arr.includes(opt.value)) arr.push(opt.value);\n this.modelValue = arr;\n } else {\n this.modelValue = opt.value;\n this.isOpen = false;\n this.hbVisibleChange.emit(false);\n }\n this.searchValue = '';\n this.filteredOptions = this.options;\n this.updateInputValue();\n this.hbChange.emit(this.modelValue);\n };\n\n /** 渲染单个选项 <li>(普通 + 虚拟滚动共用,V1 提取) */\n private renderOption(option: SelectOption, index: number) {\n return (\n <li\n id={`${this.listboxId}-opt-${index}`}\n class={{\n 'hb-select__menu-item': true,\n 'hb-select__menu-item--selected': this.isSelected(option),\n 'hb-select__menu-item--disabled': option.disabled,\n 'hb-select__menu-item--divided': option.divided,\n 'hb-select__menu-item--active': index === this.activeOptionIndex,\n }}\n style={this.virtual ? { height: `${this.virtualItemHeight}px` } : undefined}\n role=\"option\"\n aria-selected={this.isSelected(option) ? 'true' : 'false'}\n aria-disabled={option.disabled ? 'true' : undefined}\n onClick={() => this.handleSelect(option)}\n >\n {this.multiple && (\n <span class=\"hb-select__menu-item-checkbox\" aria-hidden=\"true\">\n {this.isSelected(option) ? (\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 ) : null}\n </span>\n )}\n <span class=\"hb-select__menu-item-label\">{option.label}</span>\n </li>\n );\n }\n\n render() {\n const displayOptions = this.filterable ? this.filteredOptions : this.options;\n const showClear = this.clearable && this.modelValue !== undefined && (this.multiple ? (this.modelValue as any[]).length > 0 : true);\n\n return (\n <div\n class={{\n 'hb-select': true,\n 'hb-select--open': this.isOpen,\n 'hb-select--disabled': this.disabled,\n [`hb-select--${this.size}`]: true,\n }}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={this.isOpen ? 'true' : 'false'}\n aria-controls={this.isOpen ? this.listboxId : undefined}\n aria-activedescendant={this.isOpen && this.activeOptionIndex >= 0 ? `${this.listboxId}-opt-${this.activeOptionIndex}` : undefined}\n >\n <div class=\"hb-select__input-wrapper\" onClick={this.handleInputClick} onKeyDown={this.handleWrapperKeydown}>\n {this.multiple && Array.isArray(this.modelValue) && this.modelValue.length > 0 ? (\n <div class=\"hb-select__tags\">\n {this.modelValue.slice(0, this.collapseTags && this.maxCollapseTags ? this.maxCollapseTags : undefined).map(val => {\n const option = this.options.find(opt => opt.value === val);\n return (\n <span class=\"hb-select__tag\">\n <span class=\"hb-select__tag-text\">{option ? option.label : val}</span>\n <span\n class=\"hb-select__tag-close\"\n role=\"button\"\n aria-label=\"移除标签\"\n tabIndex={0}\n onClick={e => {\n e.stopPropagation();\n this.handleSelect(option || { value: val, label: String(val) });\n }}\n onKeyDown={activationClickHandler}\n >\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 </span>\n );\n })}\n {this.collapseTags && this.maxCollapseTags && this.modelValue.length > this.maxCollapseTags && (\n <span class=\"hb-select__tag\">\n <span class=\"hb-select__tag-text\">+{this.modelValue.length - this.maxCollapseTags}</span>\n </span>\n )}\n </div>\n ) : (\n <input\n type=\"text\"\n class=\"hb-select__input\"\n placeholder={this.placeholder}\n value={this.filterable && this.isOpen ? this.searchValue : this.inputValue}\n disabled={this.disabled}\n readonly={!this.filterable || !this.isOpen}\n onInput={this.handleSearch}\n aria-haspopup=\"listbox\"\n aria-expanded={this.isOpen ? 'true' : 'false'}\n role=\"combobox\"\n />\n )}\n <span class=\"hb-select__suffix\">\n {showClear && (\n <span class=\"hb-select__clear\" role=\"button\" aria-label=\"清空\" tabIndex={0} onClick={this.handleClear} onKeyDown={activationClickHandler}>\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-select__arrow\" 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 {this.isOpen && (\n <div class=\"hb-select__dropdown\">\n <ul\n class=\"hb-select__menu\"\n role=\"listbox\"\n id={this.listboxId}\n // V1:虚拟滚动时滚动容器限高 + onScroll 更新可见窗口\n style={this.virtual ? { maxHeight: `${this.dropdownMaxHeight}px`, overflowY: 'auto' } : undefined}\n onScroll={this.virtual ? this.handleDropdownScroll : undefined}\n >\n {/* allowCreate:用户输入文本不存在时,渲染创建项(置顶) */}\n {this.createOption && (\n <li class={{ 'hb-select__menu-item': true, 'hb-select__menu-item--create': true }} role=\"option\" aria-selected=\"false\" onClick={this.handleCreate}>\n <span class=\"hb-select__menu-item-label\">创建「{this.createOption.label}」</span>\n </li>\n )}\n {displayOptions.length === 0 && !this.createOption ? (\n <li class=\"hb-select__menu-item hb-select__menu-item--empty\" aria-disabled=\"true\">\n 无数据\n </li>\n ) : this.virtual ? (\n // V1:虚拟滚动——仅渲染可见窗口 + 顶部撑高 spacer\n <div style={{ height: `${getTotalHeight(displayOptions.length, this.virtualItemHeight)}px`, position: 'relative' }}>\n <div style={{ transform: `translateY(${getOffsetTop(getVirtualRange({ total: displayOptions.length, itemHeight: this.virtualItemHeight, viewportHeight: this.dropdownMaxHeight, scrollTop: this.dropdownScrollTop }).startIndex, this.virtualItemHeight)}px)` }}>\n {displayOptions\n .slice(\n getVirtualRange({ total: displayOptions.length, itemHeight: this.virtualItemHeight, viewportHeight: this.dropdownMaxHeight, scrollTop: this.dropdownScrollTop }).startIndex,\n getVirtualRange({ total: displayOptions.length, itemHeight: this.virtualItemHeight, viewportHeight: this.dropdownMaxHeight, scrollTop: this.dropdownScrollTop }).endIndex,\n )\n .map((option, i) => {\n const absIndex = getVirtualRange({ total: displayOptions.length, itemHeight: this.virtualItemHeight, viewportHeight: this.dropdownMaxHeight, scrollTop: this.dropdownScrollTop }).startIndex + i;\n return this.renderOption(option, absIndex);\n })}\n </div>\n </div>\n ) : (\n displayOptions.map((option, index) => this.renderOption(option, index))\n )}\n </ul>\n </div>\n )}\n </div>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function e(e,t,i=200){let n;const c=e=>{if(n)clearTimeout(n);t(true);n=setTimeout((()=>{n=undefined;t(false);e?.()}),i)};const f=()=>{if(n){clearTimeout(n);n=undefined}if(e())t(false)};const o=()=>{if(n){clearTimeout(n);n=undefined}};return{start:c,cancel:f,dispose:o}}export{e as c};
|
|
2
|
+
//# sourceMappingURL=p-fad66d69.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createLeaveScheduler","getLeaving","setLeaving","duration","timer","start","onDone","clearTimeout","setTimeout","undefined","cancel","dispose"],"sources":["src/utils/transition.ts"],"sourcesContent":["/**\n * 弹层进出场动画编排工具\n *\n * 问题背景:Stencil 声明式渲染里 `{visible && <El/>}` 会在关闭瞬间卸载 DOM,\n * CSS 离场动画没机会播放——出现\"打开有动画、关闭瞬间消失\"的体验缺陷。\n *\n * 方案:组件维护一个 `leaving` state,关闭时先设 leaving=true 播放离场动画,\n * 动画时长(默认 200ms)后再 leaving=false 真正卸载。`shouldRender = visible || leaving`。\n *\n * 用法(在组件里):\n * ```ts\n * private leave = createLeaveScheduler(() => this.leaving, (v) => this.leaving = v, 200);\n * // visible 变 false 时:this.leave.start(() => 真正关闭的清理);\n * // render 里:{this.shouldRender && <El class={{ '--leaving': this.leaving }}/>}\n * ```\n */\nexport type LeavingSetter = (leaving: boolean) => void;\nexport type LeavingGetter = () => boolean;\n\nexport interface LeaveScheduler {\n /** 开始离场:设 leaving=true,duration 后回调 onDone 并 leaving=false */\n start(onDone?: () => void): void;\n /** 取消挂起的离场(用于关闭中途又打开的场景) */\n cancel(): void;\n /** disconnectedCallback 时调用,避免组件卸载后还在 setState */\n dispose(): void;\n}\n\nexport function createLeaveScheduler(getLeaving: LeavingGetter, setLeaving: LeavingSetter, duration: number = 200): LeaveScheduler {\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n const start = (onDone?: () => void) => {\n if (timer) clearTimeout(timer);\n setLeaving(true);\n timer = setTimeout(() => {\n timer = undefined;\n setLeaving(false);\n onDone?.();\n }, duration);\n };\n\n const cancel = () => {\n if (timer) {\n clearTimeout(timer);\n timer = undefined;\n }\n if (getLeaving()) setLeaving(false);\n };\n\n const dispose = () => {\n if (timer) {\n clearTimeout(timer);\n timer = undefined;\n }\n };\n\n return { start, cancel, dispose };\n}\n"],"mappings":"SA4BgBA,EAAqBC,EAA2BC,EAA2BC,EAAmB,KAC5G,IAAIC,EAEJ,MAAMC,EAASC,IACb,GAAIF,EAAOG,aAAaH,GACxBF,EAAW,MACXE,EAAQI,YAAW,KACjBJ,EAAQK,UACRP,EAAW,OACXI,KAAU,GACTH,EAAS,EAGd,MAAMO,EAAS,KACb,GAAIN,EAAO,CACTG,aAAaH,GACbA,EAAQK,S,CAEV,GAAIR,IAAcC,EAAW,MAAM,EAGrC,MAAMS,EAAU,KACd,GAAIP,EAAO,CACTG,aAAaH,GACbA,EAAQK,S,GAIZ,MAAO,CAAEJ,QAAOK,SAAQC,UAC1B,Q","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as t,h as e}from"./p-e42dfa95.js";const i=class{constructor(e){t(this,e)}key="";label="";active=false;render(){return e("div",{key:"
|
|
2
|
-
//# sourceMappingURL=p-
|
|
1
|
+
import{r as t,h as e}from"./p-e42dfa95.js";const i=class{constructor(e){t(this,e)}key="";label="";active=false;render(){return e("div",{key:"5d830209274e2c780f4e0dfd233427feb96458ff",class:{"hb-tab-pane":true,"hb-tab-pane--hidden":!this.active},role:"tabpanel",id:`hb-tabs__panel-${this.key}`,"aria-labelledby":this.key?`hb-tabs__tab-${this.key}`:undefined,tabindex:this.active?0:undefined},e("slot",{key:"b330d024cc02d1011b41f1b586bba9f91be91d90"}))}};i.style='/*! 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)))){*,:before,:after,::backdrop{--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{:root,:host{--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{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;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);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}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;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{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-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::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}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-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}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-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)}}@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} ';export{i as hb_tab_pane};
|
|
2
|
+
//# sourceMappingURL=p-fd6831f9.entry.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as e,c as t,g as i,h as o}from"./p-e42dfa95.js";import{c as r}from"./p-4ef5a884.js";import{g as n}from"./p-ecce2b5e.js";import{i as a,h as s}from"./p-00aa34c8.js";import{c as d}from"./p-fad66d69.js";const l='/*! 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;position:relative}.hb-dropdown__trigger{cursor:pointer;display:inline-block}.hb-dropdown__menu{animation:hb-dropdown-fade-in .15s ease-out;background-color:var(--hb-color-bg-elevated);border-radius:var(--hb-border-radius-base);box-shadow:var(--hb-box-shadow);left:0;margin-top:4px;min-width:120px;padding:4px 0;position:absolute;top:100%}.hb-dropdown__item{align-items:center;color:var(--hb-color-text);cursor:pointer;display:flex;font-size:var(--hb-font-size-sm);padding:6px 16px;transition:background-color var(--hb-transition-duration);white-space:nowrap}.hb-dropdown__item--active:not(.hb-dropdown__item--disabled),.hb-dropdown__item:hover:not(.hb-dropdown__item--disabled){background-color:var(--hb-color-fill-tertiary);color:var(--hb-color-primary)}.hb-dropdown__item--disabled{color:var(--hb-color-text-disabled);cursor:not-allowed}.hb-dropdown__item--divided{border-top:1px solid var(--hb-color-border-secondary);margin-top:4px;padding-top:8px}.hb-dropdown__item--danger{color:var(--hb-color-danger)}.hb-dropdown__item--danger:hover:not(.hb-dropdown__item--disabled){background-color:var(--hb-color-danger-bg);color:var(--hb-color-danger)}@keyframes hb-dropdown-fade-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.hb-dropdown__menu--leaving{animation:hb-dropdown-fade-out .15s ease-in forwards}@keyframes hb-dropdown-fade-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-4px)}}@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 h=l;const p=class{constructor(i){e(this,i);this.hbCommand=t(this,"hbCommand",7)}get el(){return i(this)}items=[];trigger="hover";disabled=false;isOpen=false;leaving=false;activeIndex=-1;hbCommand;leave=d((()=>this.leaving),(e=>this.leaving=e),150);clickOutside=r({host:null,isOpen:()=>this.isOpen,onClose:()=>{this.close()}});componentDidLoad(){this.clickOutside=r({host:this.el,isOpen:()=>this.isOpen,onClose:()=>{this.close()}});if(this.trigger==="click"){this.clickOutside.connect()}}disconnectedCallback(){this.clickOutside.disconnect();this.leave.dispose()}open=()=>{if(this.disabled)return;this.leave.cancel();this.isOpen=true;this.activeIndex=this.items.findIndex((e=>!e.disabled))};close=()=>{if(!this.isOpen&&!this.leaving)return;this.isOpen=false;this.activeIndex=-1;this.leave.start()};show=()=>{if(this.disabled)return;this.open()};hide=()=>{this.close()};toggle=()=>{if(this.disabled)return;if(this.isOpen)this.close();else this.open()};handleSelect=e=>{if(e.disabled)return;this.close();this.hbCommand.emit(e.key)};handleTriggerKeydown=e=>{if(this.disabled)return;if(this.trigger==="hover")return;if(a(e.key)||e.key==="ArrowDown"){e.preventDefault();this.open()}};handleMenuKeydown=e=>{const t=this.items.length;const i=s(e,{activeIndex:this.activeIndex,itemCount:t,loop:true});switch(i.type){case"navigate":e.preventDefault();{let e=i.index;for(let i=0;i<t;i++){if(!this.items[e]?.disabled)break;e=(e+1)%t}this.activeIndex=e}break;case"select":{e.preventDefault();const t=this.items[i.index];if(t&&!t.disabled)this.handleSelect(t);break}case"close":e.preventDefault();this.close();break}};get shouldRender(){return this.isOpen||this.leaving}render(){const e=this.trigger==="hover"?{onMouseEnter:this.show,onMouseLeave:this.hide}:{onClick:this.toggle};return o("div",{key:"8855aa67978f0180ee22fa57d47d8a8530fcff59",class:"hb-dropdown",...e,onKeyDown:this.handleTriggerKeydown},o("div",{key:"f07514869b6c2fed33be57a882afbe3aad221f79",class:"hb-dropdown__trigger",role:"button",tabindex:this.disabled?-1:0,"aria-haspopup":"menu","aria-expanded":this.isOpen?"true":"false","aria-disabled":this.disabled?"true":"false"},o("slot",{key:"077a8fdd63295eaeadda3124764dd51090a7019d"})),this.shouldRender&&o("div",{key:"f17eba6ead1c841fdc97db4fc88c62937e6b7344",class:{"hb-dropdown__menu":true,"hb-dropdown__menu--leaving":this.leaving},style:{zIndex:String(n())},role:"menu",onKeyDown:this.handleMenuKeydown},this.items.map(((e,t)=>o("div",{class:{"hb-dropdown__item":true,"hb-dropdown__item--disabled":e.disabled,"hb-dropdown__item--divided":e.divided,"hb-dropdown__item--danger":e.danger,"hb-dropdown__item--active":t===this.activeIndex},role:"menuitem",tabindex:-1,"aria-disabled":e.disabled?"true":undefined,onMouseEnter:()=>{if(!e.disabled)this.activeIndex=t},onClick:()=>this.handleSelect(e)},e.label)))))}};p.style=h;export{p as hb_dropdown};
|
|
2
|
+
//# sourceMappingURL=p-ff6bc5cc.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["dropdownCss","HbDropdownStyle0","Dropdown","items","trigger","disabled","isOpen","leaving","activeIndex","hbCommand","leave","createLeaveScheduler","this","v","clickOutside","createClickOutsideHandler","host","onClose","close","componentDidLoad","el","connect","disconnectedCallback","disconnect","dispose","open","cancel","findIndex","i","start","show","hide","toggle","handleSelect","item","emit","key","handleTriggerKeydown","e","isActivationKey","preventDefault","handleMenuKeydown","enabledCount","length","action","handleListKeyboard","itemCount","loop","type","idx","index","shouldRender","render","triggerEvents","onMouseEnter","onMouseLeave","onClick","h","class","onKeyDown","role","tabindex","style","zIndex","String","getNextZIndex","map","divided","danger","undefined","label"],"sources":["src/components/Dropdown/dropdown.css?tag=hb-dropdown&encapsulation=shadow","src/components/Dropdown/Dropdown.tsx"],"sourcesContent":[":host {\n display: inline-block;\n position: relative;\n}\n\n.hb-dropdown__trigger {\n display: inline-block;\n cursor: pointer;\n}\n\n.hb-dropdown__menu {\n position: absolute;\n top: 100%;\n left: 0;\n min-width: 120px;\n margin-top: 4px;\n padding: 4px 0;\n background-color: var(--hb-color-bg-elevated);\n border-radius: var(--hb-border-radius-base);\n box-shadow: var(--hb-box-shadow);\n animation: hb-dropdown-fade-in 0.15s ease-out;\n}\n\n.hb-dropdown__item {\n display: flex;\n align-items: center;\n padding: 6px 16px;\n font-size: var(--hb-font-size-sm);\n color: var(--hb-color-text);\n cursor: pointer;\n white-space: nowrap;\n transition: background-color var(--hb-transition-duration);\n}\n\n.hb-dropdown__item:hover:not(.hb-dropdown__item--disabled),\n.hb-dropdown__item--active:not(.hb-dropdown__item--disabled) {\n background-color: var(--hb-color-fill-tertiary);\n color: var(--hb-color-primary);\n}\n\n.hb-dropdown__item--disabled {\n color: var(--hb-color-text-disabled);\n cursor: not-allowed;\n}\n\n.hb-dropdown__item--divided {\n margin-top: 4px;\n padding-top: 8px;\n border-top: 1px solid var(--hb-color-border-secondary);\n}\n\n.hb-dropdown__item--danger {\n color: var(--hb-color-danger);\n}\n.hb-dropdown__item--danger:hover:not(.hb-dropdown__item--disabled) {\n background-color: var(--hb-color-danger-bg);\n color: var(--hb-color-danger);\n}\n\n@keyframes hb-dropdown-fade-in {\n from {\n opacity: 0;\n transform: translateY(-4px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n/* 离场动画 */\n.hb-dropdown__menu--leaving {\n animation: hb-dropdown-fade-out 0.15s ease-in forwards;\n}\n\n@keyframes hb-dropdown-fade-out {\n from {\n opacity: 1;\n transform: translateY(0);\n }\n to {\n opacity: 0;\n transform: translateY(-4px);\n }\n}\n","import { Component, h, Prop, State, Element, Event, EventEmitter } from '@stencil/core';\nimport { createClickOutsideHandler } from '../../utils/click-outside';\nimport { getNextZIndex } from '../../utils/popup-manager';\nimport { handleListKeyboard, isActivationKey } from '../../utils/a11y';\nimport { createLeaveScheduler } from '../../utils/transition';\n\nexport interface DropdownItem {\n key: string;\n label: string;\n disabled?: boolean;\n divided?: boolean;\n danger?: boolean;\n}\n\n/**\n * Dropdown 下拉菜单组件\n * 将动作或菜单折叠到下拉菜单中。\n *\n * 无障碍(对齐 WAI-ARIA menu / antd):\n * - 触发器 role=button + aria-haspopup=menu + aria-expanded\n * - 菜单 role=menu,菜单项 role=menuitem + aria-disabled\n * - 键盘:trigger 上 Enter/Space/↓ 打开;菜单内 ↑↓ 导航、Enter/Space 选中、Esc 关闭\n *\n * 进出场动画:用 leaving state 延迟卸载,让 fade-out 有机会播放。\n */\n@Component({\n tag: 'hb-dropdown',\n styleUrl: 'dropdown.css',\n shadow: true,\n})\nexport class Dropdown {\n @Element() el: HTMLElement;\n\n /** 菜单项 */\n @Prop() items: DropdownItem[] = [];\n\n /** 触发方式 */\n @Prop() trigger: 'hover' | 'click' = 'hover';\n\n /** 是否禁用 */\n @Prop() disabled: boolean = false;\n\n @State() isOpen: boolean = false;\n /** 离场动画期(保留 DOM 让 fade-out 播完) */\n @State() leaving: boolean = false;\n /** 键盘高亮项索引(-1 表示无) */\n @State() activeIndex: number = -1;\n\n /** 命令事件 */\n @Event() hbCommand: EventEmitter<string>;\n\n private leave = createLeaveScheduler(\n () => this.leaving,\n v => (this.leaving = v),\n 150,\n );\n\n private clickOutside = createClickOutsideHandler({\n host: null as any,\n isOpen: () => this.isOpen,\n onClose: () => {\n this.close();\n },\n });\n\n componentDidLoad() {\n this.clickOutside = createClickOutsideHandler({\n host: this.el,\n isOpen: () => this.isOpen,\n onClose: () => {\n this.close();\n },\n });\n if (this.trigger === 'click') {\n this.clickOutside.connect();\n }\n }\n\n disconnectedCallback() {\n this.clickOutside.disconnect();\n this.leave.dispose();\n }\n\n private open = () => {\n if (this.disabled) return;\n this.leave.cancel(); // 中途又打开:取消挂起的离场\n this.isOpen = true;\n this.activeIndex = this.items.findIndex(i => !i.disabled);\n };\n\n private close = () => {\n if (!this.isOpen && !this.leaving) return;\n this.isOpen = false;\n this.activeIndex = -1;\n this.leave.start();\n };\n\n private show = () => {\n if (this.disabled) return;\n this.open();\n };\n\n private hide = () => {\n this.close();\n };\n\n private toggle = () => {\n if (this.disabled) return;\n if (this.isOpen) this.close();\n else this.open();\n };\n\n private handleSelect = (item: DropdownItem) => {\n if (item.disabled) return;\n this.close();\n this.hbCommand.emit(item.key);\n };\n\n private handleTriggerKeydown = (e: KeyboardEvent) => {\n if (this.disabled) return;\n if (this.trigger === 'hover') return;\n if (isActivationKey(e.key) || e.key === 'ArrowDown') {\n e.preventDefault();\n this.open();\n }\n };\n\n private handleMenuKeydown = (e: KeyboardEvent) => {\n const enabledCount = this.items.length;\n const action = handleListKeyboard(e, {\n activeIndex: this.activeIndex,\n itemCount: enabledCount,\n loop: true,\n });\n switch (action.type) {\n case 'navigate':\n e.preventDefault();\n {\n let idx = action.index;\n for (let i = 0; i < enabledCount; i++) {\n if (!this.items[idx]?.disabled) break;\n idx = (idx + 1) % enabledCount;\n }\n this.activeIndex = idx;\n }\n break;\n case 'select': {\n e.preventDefault();\n const item = this.items[action.index];\n if (item && !item.disabled) this.handleSelect(item);\n break;\n }\n case 'close':\n e.preventDefault();\n this.close();\n break;\n default:\n break;\n }\n };\n\n private get shouldRender(): boolean {\n return this.isOpen || this.leaving;\n }\n\n render() {\n const triggerEvents = this.trigger === 'hover' ? { onMouseEnter: this.show, onMouseLeave: this.hide } : { onClick: this.toggle };\n\n return (\n <div class=\"hb-dropdown\" {...triggerEvents} onKeyDown={this.handleTriggerKeydown}>\n <div\n class=\"hb-dropdown__trigger\"\n role=\"button\"\n tabindex={this.disabled ? -1 : 0}\n aria-haspopup=\"menu\"\n aria-expanded={this.isOpen ? 'true' : 'false'}\n aria-disabled={this.disabled ? 'true' : 'false'}\n >\n <slot />\n </div>\n {this.shouldRender && (\n <div\n class={{\n 'hb-dropdown__menu': true,\n 'hb-dropdown__menu--leaving': this.leaving,\n }}\n style={{ zIndex: String(getNextZIndex()) }}\n role=\"menu\"\n onKeyDown={this.handleMenuKeydown}\n >\n {this.items.map((item, index) => (\n <div\n class={{\n 'hb-dropdown__item': true,\n 'hb-dropdown__item--disabled': item.disabled,\n 'hb-dropdown__item--divided': item.divided,\n 'hb-dropdown__item--danger': item.danger,\n 'hb-dropdown__item--active': index === this.activeIndex,\n }}\n role=\"menuitem\"\n tabindex={-1}\n aria-disabled={item.disabled ? 'true' : undefined}\n onMouseEnter={() => {\n if (!item.disabled) this.activeIndex = index;\n }}\n onClick={() => this.handleSelect(item)}\n >\n {item.label}\n </div>\n ))}\n </div>\n )}\n </div>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -78,6 +78,8 @@ export declare class Cascader {
|
|
|
78
78
|
/** 展开节点变化时触发 */
|
|
79
79
|
hbExpandChange: EventEmitter<ValuePath>;
|
|
80
80
|
private clickOutside;
|
|
81
|
+
/** P4:搜索结果上限,防止超大树一次返回上万条结果拖垮渲染(封顶替代防抖,避免定时器/测试复杂性) */
|
|
82
|
+
private static readonly MAX_FILTER_RESULTS;
|
|
81
83
|
componentDidLoad(): void;
|
|
82
84
|
private closeAndClearSearch;
|
|
83
85
|
disconnectedCallback(): void;
|
|
@@ -86,6 +88,16 @@ export declare class Cascader {
|
|
|
86
88
|
private findOptionByValue;
|
|
87
89
|
/** 取多选 modelValue 为二维数组(非多选模式或形状不符时返回 []) */
|
|
88
90
|
private getMultiModel;
|
|
91
|
+
/**
|
|
92
|
+
* 多选 modelValue 的字符串键集合(P2 优化)。
|
|
93
|
+
* 缓存:仅当 modelValue 引用变化时重算。check-state 查询从 O(model×pathLen)
|
|
94
|
+
* 降为 O(1) Set.has。key 用 \u0000 连接 path 各段,避免与合法分隔符冲突。
|
|
95
|
+
*/
|
|
96
|
+
private _modelKeySet;
|
|
97
|
+
private _modelKeySetRef;
|
|
98
|
+
private getModelKeySet;
|
|
99
|
+
/** path 是否在当前 model 集合中(O(1)) */
|
|
100
|
+
private pathInModel;
|
|
89
101
|
/** 两条 value 路径是否完全相等 */
|
|
90
102
|
private pathEquals;
|
|
91
103
|
/** 收集某节点子树下的全部叶子 value 路径(用于父子联动计算) */
|
|
@@ -58,6 +58,11 @@ export declare class Checkbox {
|
|
|
58
58
|
*/
|
|
59
59
|
hbChange: EventEmitter<boolean | (string | number)[]>;
|
|
60
60
|
isChecked: boolean;
|
|
61
|
+
/**
|
|
62
|
+
* P7:实例级稳定 inputId,在 componentWillLoad 生成一次。
|
|
63
|
+
* 修复前每次 render 用 Math.random() 生成新 id,破坏 SSR 水合与外部 getElementById 缓存。
|
|
64
|
+
*/
|
|
65
|
+
private stableInputId;
|
|
61
66
|
handleValueChange(): void;
|
|
62
67
|
componentDidLoad(): void;
|
|
63
68
|
private updateChecked;
|
|
@@ -37,6 +37,7 @@ export declare class CheckboxGroup {
|
|
|
37
37
|
hbChange: EventEmitter<(string | number)[]>;
|
|
38
38
|
checkboxes: HTMLHbCheckboxElement[];
|
|
39
39
|
componentDidLoad(): void;
|
|
40
|
+
disconnectedCallback(): void;
|
|
40
41
|
handleValueChange(): void;
|
|
41
42
|
handlePropsChange(): void;
|
|
42
43
|
private updateCheckboxes;
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
export declare class CollapseItem {
|
|
2
2
|
el: HTMLElement;
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* 唯一标识(手风琴模式协调用)。
|
|
5
|
+
* O3:推荐用 itemKey。保留 key 作为向后兼容别名(key 是 Stencil/React 保留 prop,
|
|
6
|
+
* 通过 JSX 设置时可能被 vdom 拦截;HTML 属性 key="..." 仍可工作)。
|
|
7
|
+
*/
|
|
8
|
+
itemKey: string;
|
|
4
9
|
key: string;
|
|
10
|
+
/** 解析出的有效 key:itemKey 优先,回退到 key */
|
|
11
|
+
private get effectiveKey();
|
|
5
12
|
/** 标题 */
|
|
6
13
|
title: string;
|
|
7
14
|
/** 是否禁用 */
|
|
@@ -32,11 +32,23 @@ export declare class Dialog {
|
|
|
32
32
|
private zIndex;
|
|
33
33
|
private panelRef?;
|
|
34
34
|
private trap?;
|
|
35
|
-
|
|
35
|
+
/** 离场动画期间保留渲染(避免 display:none 打断 transition) */
|
|
36
|
+
leaving: boolean;
|
|
37
|
+
private leaveTimer?;
|
|
38
|
+
handleVisibleChange(newVal: boolean, oldVal: boolean): void;
|
|
36
39
|
disconnectedCallback(): void;
|
|
37
40
|
componentDidRender(): void;
|
|
38
41
|
private handleKeyDown;
|
|
39
42
|
private close;
|
|
43
|
+
/**
|
|
44
|
+
* 进入离场动画期:解锁滚动、移除监听、保留 DOM 播放动画,
|
|
45
|
+
* 结束(300ms)后重置 leaving 并 emit hbClosed。
|
|
46
|
+
* 受控关闭(父组件直接设 modelValue=false 经 @Watch)与内部关闭(ESC/遮罩/关闭按钮)
|
|
47
|
+
* 统一走这里,保证两者行为一致(都有动画 + 都 emit hbClose/hbClosed)。
|
|
48
|
+
*/
|
|
49
|
+
private startLeave;
|
|
40
50
|
private handleOverlayClick;
|
|
51
|
+
/** 是否应渲染弹层 DOM:打开中 或 离场动画期内 */
|
|
52
|
+
private get shouldRender();
|
|
41
53
|
render(): any;
|
|
42
54
|
}
|
|
@@ -13,6 +13,9 @@ export declare class Drawer {
|
|
|
13
13
|
private zIndex;
|
|
14
14
|
private panelRef?;
|
|
15
15
|
private trap?;
|
|
16
|
+
/** 离场动画期内保留渲染 */
|
|
17
|
+
private leaving;
|
|
18
|
+
private leaveTimer?;
|
|
16
19
|
hbOpen: EventEmitter<void>;
|
|
17
20
|
hbClose: EventEmitter<void>;
|
|
18
21
|
handleVisible(val: boolean): void;
|
|
@@ -20,5 +23,6 @@ export declare class Drawer {
|
|
|
20
23
|
disconnectedCallback(): void;
|
|
21
24
|
private handleKeyDown;
|
|
22
25
|
private close;
|
|
26
|
+
private get shouldRender();
|
|
23
27
|
render(): any;
|
|
24
28
|
}
|
|
@@ -14,6 +14,8 @@ export interface DropdownItem {
|
|
|
14
14
|
* - 触发器 role=button + aria-haspopup=menu + aria-expanded
|
|
15
15
|
* - 菜单 role=menu,菜单项 role=menuitem + aria-disabled
|
|
16
16
|
* - 键盘:trigger 上 Enter/Space/↓ 打开;菜单内 ↑↓ 导航、Enter/Space 选中、Esc 关闭
|
|
17
|
+
*
|
|
18
|
+
* 进出场动画:用 leaving state 延迟卸载,让 fade-out 有机会播放。
|
|
17
19
|
*/
|
|
18
20
|
export declare class Dropdown {
|
|
19
21
|
el: HTMLElement;
|
|
@@ -24,10 +26,13 @@ export declare class Dropdown {
|
|
|
24
26
|
/** 是否禁用 */
|
|
25
27
|
disabled: boolean;
|
|
26
28
|
isOpen: boolean;
|
|
29
|
+
/** 离场动画期(保留 DOM 让 fade-out 播完) */
|
|
30
|
+
leaving: boolean;
|
|
27
31
|
/** 键盘高亮项索引(-1 表示无) */
|
|
28
32
|
activeIndex: number;
|
|
29
33
|
/** 命令事件 */
|
|
30
34
|
hbCommand: EventEmitter<string>;
|
|
35
|
+
private leave;
|
|
31
36
|
private clickOutside;
|
|
32
37
|
componentDidLoad(): void;
|
|
33
38
|
disconnectedCallback(): void;
|
|
@@ -37,9 +42,8 @@ export declare class Dropdown {
|
|
|
37
42
|
private hide;
|
|
38
43
|
private toggle;
|
|
39
44
|
private handleSelect;
|
|
40
|
-
/** 触发器键盘:Enter/Space/↓ 打开 */
|
|
41
45
|
private handleTriggerKeydown;
|
|
42
|
-
/** 菜单键盘:↑↓ 导航、Enter/Space 选中、Esc 关闭、Home/End 跳首尾 */
|
|
43
46
|
private handleMenuKeydown;
|
|
47
|
+
private get shouldRender();
|
|
44
48
|
render(): any;
|
|
45
49
|
}
|
|
@@ -24,14 +24,73 @@ export declare class Form {
|
|
|
24
24
|
size: 'large' | 'default' | 'small';
|
|
25
25
|
/** 是否禁用 */
|
|
26
26
|
disabled: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* F1:初始值(非受控)。挂载后把这些值写到对应字段的子控件 modelValue。
|
|
29
|
+
* key = FormItem 的 prop。
|
|
30
|
+
*/
|
|
31
|
+
initialValues?: Record<string, any>;
|
|
32
|
+
/**
|
|
33
|
+
* F4:校验提示模板。覆盖默认的「{label}不能为空」「{label}格式不正确」等文案。
|
|
34
|
+
* 支持 {label} 占位符。仅对未在 rule.message 显式指定消息的规则生效。
|
|
35
|
+
*/
|
|
36
|
+
validateMessages?: {
|
|
37
|
+
required?: string;
|
|
38
|
+
pattern?: string;
|
|
39
|
+
email?: string;
|
|
40
|
+
min?: string;
|
|
41
|
+
max?: string;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* F2:提交且校验通过后的回调。参数为各字段当前值组成的对象。
|
|
45
|
+
* 由表单 submit(form onSubmit)触发——表单内放 type="submit" 的按钮即可。
|
|
46
|
+
*/
|
|
47
|
+
onFinish?: (values: Record<string, any>) => void;
|
|
48
|
+
/**
|
|
49
|
+
* F2:提交且校验失败后的回调。
|
|
50
|
+
*/
|
|
51
|
+
onFinishFailed?: (errors: {
|
|
52
|
+
prop: string;
|
|
53
|
+
errors: string[];
|
|
54
|
+
}[]) => void;
|
|
55
|
+
/**
|
|
56
|
+
* F3:任意字段值变化时的回调。参数为 { prop, value, values }。
|
|
57
|
+
* 由子控件冒泡的 hbChange 触发。
|
|
58
|
+
*/
|
|
59
|
+
onValuesChange?: (info: {
|
|
60
|
+
prop: string;
|
|
61
|
+
value: any;
|
|
62
|
+
values: Record<string, any>;
|
|
63
|
+
}) => void;
|
|
27
64
|
fields: FormFieldRegistration[];
|
|
28
65
|
private fieldRegistry;
|
|
66
|
+
private handleFieldRegister;
|
|
67
|
+
/**
|
|
68
|
+
* F3:监听子控件冒泡的 hbChange,识别来源 FormItem 并触发 onValuesChange。
|
|
69
|
+
* 注:hbChange 由 hb-input/hb-select 等控件发出(composed 冒泡穿过 shadow),
|
|
70
|
+
* 这里在 host 上捕获,通过 closest('hb-form-item') 定位字段 prop。
|
|
71
|
+
*/
|
|
72
|
+
private handleFieldChange;
|
|
29
73
|
componentWillLoad(): void;
|
|
74
|
+
componentDidLoad(): void;
|
|
75
|
+
disconnectedCallback(): void;
|
|
76
|
+
/**
|
|
77
|
+
* 收集所有字段的当前值(getFieldsValue)。
|
|
78
|
+
*/
|
|
79
|
+
private getFieldsValue;
|
|
80
|
+
/**
|
|
81
|
+
* 设置某字段子控件的值(setFieldValue)。
|
|
82
|
+
* 子控件统一用 modelValue 受控。
|
|
83
|
+
*/
|
|
84
|
+
private setFieldValue;
|
|
30
85
|
/**
|
|
31
86
|
* 验证整个表单
|
|
32
87
|
* @returns 是否验证通过
|
|
33
88
|
*/
|
|
34
89
|
validate: () => Promise<boolean>;
|
|
90
|
+
/**
|
|
91
|
+
* F2:提交表单——校验全部字段,通过则 onFinish(values),失败则 onFinishFailed(errors)。
|
|
92
|
+
*/
|
|
93
|
+
private handleSubmit;
|
|
35
94
|
/**
|
|
36
95
|
* 重置表单
|
|
37
96
|
*/
|
|
@@ -16,6 +16,18 @@ export declare class FormItem {
|
|
|
16
16
|
rules: any[];
|
|
17
17
|
/** 表单尺寸 */
|
|
18
18
|
size: 'large' | 'default' | 'small';
|
|
19
|
+
/**
|
|
20
|
+
* F6:手动校验态('success' | 'warning' | 'error' | 'validating' | '')。
|
|
21
|
+
* 设置后覆盖内部校验结果驱动的错误显示(对齐 antd validateStatus)。
|
|
22
|
+
*/
|
|
23
|
+
validateStatus?: '' | 'success' | 'warning' | 'error' | 'validating';
|
|
24
|
+
/** F6:手动错误/帮助文案(配合 validateStatus='error' 显示自定义提示) */
|
|
25
|
+
help?: string;
|
|
26
|
+
/**
|
|
27
|
+
* F7:标签栅格占比(1-24)。未设置时用 labelWidth。
|
|
28
|
+
* 对齐 antd labelCol(简化为纯数字栅格,labelCol.span)。
|
|
29
|
+
*/
|
|
30
|
+
labelCol?: number;
|
|
19
31
|
errors: string[];
|
|
20
32
|
isvalidating: boolean;
|
|
21
33
|
/** hb-form 在 componentWillLoad 注册的事件监听;FormItem 在 componentDidLoad 派发,
|
|
@@ -30,11 +42,22 @@ export declare class FormItem {
|
|
|
30
42
|
private get isRequired();
|
|
31
43
|
/** 继承父 hb-form 的 labelPosition(FormItem 自身无此 prop,避免与 Form 冲突时以 Form 为准) */
|
|
32
44
|
private get resolvedLabelPosition();
|
|
45
|
+
/**
|
|
46
|
+
* F4:继承父 hb-form 的 validateMessages(校验提示模板)。
|
|
47
|
+
* 支持占位符 {label}。仅对 rule 未显式指定 message 的规则生效。
|
|
48
|
+
*/
|
|
49
|
+
private get resolvedValidateMessages();
|
|
50
|
+
/** 用模板生成错误文案({label} 替换为字段标签),优先级:rule.message > 模板 > 内置默认 */
|
|
51
|
+
private msg;
|
|
33
52
|
/**
|
|
34
53
|
* 验证此字段
|
|
35
54
|
*/
|
|
36
55
|
validate: () => Promise<string[]>;
|
|
37
56
|
resetValue: () => void;
|
|
38
57
|
getValue: () => any;
|
|
58
|
+
/** F6:实际显示的错误文案。手动 help 优先;否则取内部 errors[0] */
|
|
59
|
+
private get displayError();
|
|
60
|
+
/** F6:实际是否显示错误(手动 validateStatus='error' 或内部有错) */
|
|
61
|
+
private get showError();
|
|
39
62
|
render(): any;
|
|
40
63
|
}
|
|
@@ -10,6 +10,12 @@ export declare class Image {
|
|
|
10
10
|
loaded: boolean;
|
|
11
11
|
error: boolean;
|
|
12
12
|
previewVisible: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* 换 src 时重置 loaded/error。
|
|
15
|
+
* 修复 B5——修复前换 src 不清状态:坏图换好图卡在错误占位(error 不清零),
|
|
16
|
+
* 好图换坏图 loaded 仍 true 造成短暂状态错乱。
|
|
17
|
+
*/
|
|
18
|
+
handleSrcChange(): void;
|
|
13
19
|
private handleLoad;
|
|
14
20
|
private handleError;
|
|
15
21
|
render(): any;
|
|
@@ -3,8 +3,15 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export declare class MenuItem {
|
|
5
5
|
el: HTMLElement;
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* 唯一标识。
|
|
8
|
+
* O3:推荐用 itemKey。保留 key 作为向后兼容别名(key 是 Stencil/React 保留 prop,
|
|
9
|
+
* 通过 JSX 设置时可能被 vdom 拦截;HTML 属性 key="..." 仍可工作)。
|
|
10
|
+
*/
|
|
11
|
+
itemKey: string;
|
|
7
12
|
key: string;
|
|
13
|
+
/** 解析出的有效 key:itemKey 优先,回退到 key */
|
|
14
|
+
private get effectiveKey();
|
|
8
15
|
/** 是否禁用 */
|
|
9
16
|
disabled: boolean;
|
|
10
17
|
/** 图标 */
|