huibo-ui 0.3.0 → 0.5.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-904747ff.js → date-helpers-c05ef385.js} +10 -17
- package/dist/cjs/date-helpers-c05ef385.js.map +1 -0
- package/dist/cjs/hb-affix.cjs.entry.js +1 -1
- 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-aside.cjs.entry.js +1 -1
- package/dist/cjs/hb-avatar.cjs.entry.js +1 -1
- package/dist/cjs/hb-backtop.cjs.entry.js +2 -2
- package/dist/cjs/hb-badge.cjs.entry.js +1 -1
- package/dist/cjs/hb-breadcrumb-item.cjs.entry.js +1 -1
- package/dist/cjs/hb-breadcrumb.cjs.entry.js +1 -1
- package/dist/cjs/hb-button.cjs.entry.js +2 -2
- package/dist/cjs/hb-calendar.cjs.entry.js +78 -10
- package/dist/cjs/hb-calendar.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-card.cjs.entry.js +1 -1
- package/dist/cjs/hb-cascader.cjs.entry.js +306 -146
- 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-panel.cjs.entry.js +2 -2
- package/dist/cjs/hb-color-picker.cjs.entry.js +108 -28
- package/dist/cjs/hb-color-picker.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-config-provider.cjs.entry.js +1 -1
- package/dist/cjs/hb-container.cjs.entry.js +2 -2
- package/dist/cjs/hb-date-picker-pane.cjs.entry.js +2 -2
- package/dist/cjs/hb-date-picker.cjs.entry.js +90 -9
- package/dist/cjs/hb-date-picker.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-date-range-picker.cjs.entry.js +3 -3
- package/dist/cjs/hb-date-time-picker.cjs.entry.js +3 -3
- package/dist/cjs/hb-descriptions.cjs.entry.js +2 -2
- 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-divider.cjs.entry.js +2 -2
- 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 +91 -11
- 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-footer.cjs.entry.js +1 -1
- package/dist/cjs/hb-form-item.cjs.entry.js +61 -9
- package/dist/cjs/hb-form-item.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-form.cjs.entry.js +13 -8
- package/dist/cjs/hb-form.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-header.cjs.entry.js +1 -1
- package/dist/cjs/hb-image-preview.cjs.entry.js +13 -9
- 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 +40 -3
- package/dist/cjs/hb-input.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-layout.cjs.entry.js +36 -14
- 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-main.cjs.entry.js +1 -1
- 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 +3 -3
- package/dist/cjs/hb-menu.cjs.entry.js.map +1 -1
- 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-notification.cjs.entry.js +2 -2
- package/dist/cjs/hb-page-header.cjs.entry.js +1 -1
- package/dist/cjs/hb-pagination.cjs.entry.js +24 -8
- package/dist/cjs/hb-pagination.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-popconfirm.cjs.entry.js +57 -8
- package/dist/cjs/hb-popconfirm.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-popover.cjs.entry.js +37 -5
- 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 +46 -4
- package/dist/cjs/hb-rate.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-result.cjs.entry.js +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 +50 -5
- package/dist/cjs/hb-segmented.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-select.cjs.entry.js +64 -16
- package/dist/cjs/hb-select.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-slider.cjs.entry.js +186 -23
- 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 +30 -9
- 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 +9 -4
- 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 +26 -17
- 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-timeline.cjs.entry.js +1 -1
- package/dist/cjs/hb-tooltip.cjs.entry.js +43 -6
- package/dist/cjs/hb-tooltip.cjs.entry.js.map +1 -1
- package/dist/cjs/hb-transfer.cjs.entry.js +2 -2
- package/dist/cjs/hb-tree-select.cjs.entry.js +215 -23
- 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-upload.cjs.entry.js +3 -3
- 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/collection-manifest.json +3 -3
- package/dist/collection/components/Affix/Affix.js +1 -1
- package/dist/collection/components/Alert/Alert.js +2 -1
- package/dist/collection/components/Alert/Alert.js.map +1 -1
- package/dist/collection/components/Avatar/Avatar.js +1 -1
- package/dist/collection/components/Backtop/Backtop.js +2 -2
- package/dist/collection/components/Badge/Badge.js +1 -1
- package/dist/collection/components/Breadcrumb/Breadcrumb.js +1 -1
- package/dist/collection/components/Breadcrumb/BreadcrumbItem.js +1 -1
- package/dist/collection/components/Button/Button.js +2 -2
- package/dist/collection/components/Calendar/Calendar.js +84 -10
- package/dist/collection/components/Calendar/Calendar.js.map +1 -1
- package/dist/collection/components/Calendar/calendar.css +16 -0
- package/dist/collection/components/Card/Card.js +1 -1
- package/dist/collection/components/Cascader/Cascader.js +410 -194
- package/dist/collection/components/Cascader/Cascader.js.map +1 -1
- package/dist/collection/components/Cascader/cascader.css +170 -16
- 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 +109 -28
- package/dist/collection/components/ColorPicker/ColorPicker.js.map +1 -1
- package/dist/collection/components/ColorPicker/color-picker.css +21 -3
- package/dist/collection/components/ColorPickerPanel/ColorPickerPanel.js +2 -2
- package/dist/collection/components/ConfigProvider/ConfigProvider.js +1 -1
- package/dist/collection/components/Container/Aside.js +1 -1
- package/dist/collection/components/Container/Container.js +2 -2
- package/dist/collection/components/Container/Footer.js +1 -1
- package/dist/collection/components/Container/Header.js +1 -1
- package/dist/collection/components/Container/Main.js +1 -1
- package/dist/collection/components/DatePicker/DatePicker.js +94 -12
- package/dist/collection/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/collection/components/DatePicker/date-picker.css +63 -2
- package/dist/collection/components/DatePickerPane/DatePickerPane.js +1 -1
- package/dist/collection/components/DateRangePicker/DateRangePicker.js +2 -2
- package/dist/collection/components/DateTimePicker/DateTimePicker.js +2 -2
- package/dist/collection/components/Descriptions/Descriptions.js +1 -1
- package/dist/collection/components/Descriptions/descriptions.css +52 -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/Divider/Divider.js +2 -2
- 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 +103 -12
- package/dist/collection/components/Dropdown/Dropdown.js.map +1 -1
- package/dist/collection/components/Dropdown/dropdown.css +26 -3
- 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 +14 -9
- package/dist/collection/components/Form/Form.js.map +1 -1
- package/dist/collection/components/Form/FormItem.js +62 -10
- package/dist/collection/components/Form/FormItem.js.map +1 -1
- package/dist/collection/components/Form/form-item.css +57 -6
- package/dist/collection/components/Form/form.css +1 -0
- 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 +13 -9
- package/dist/collection/components/ImagePreview/ImagePreview.js.map +1 -1
- package/dist/collection/components/Input/Input.js +39 -2
- package/dist/collection/components/Input/Input.js.map +1 -1
- package/dist/collection/components/Input/input.css +22 -4
- 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 +87 -34
- 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 +1732 -71
- 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/Menu/menu.css +25 -0
- package/dist/collection/components/Message/Message.js +13 -4
- package/dist/collection/components/Message/Message.js.map +1 -1
- package/dist/collection/components/Notification/Notification.js +2 -2
- package/dist/collection/components/PageHeader/PageHeader.js +1 -1
- package/dist/collection/components/Pagination/Pagination.js +26 -7
- package/dist/collection/components/Pagination/Pagination.js.map +1 -1
- package/dist/collection/components/Pagination/pagination.css +23 -0
- package/dist/collection/components/Popconfirm/Popconfirm.js +66 -7
- 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 +46 -4
- 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 +46 -4
- package/dist/collection/components/Rate/Rate.js.map +1 -1
- package/dist/collection/components/Result/Result.js +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 +65 -6
- package/dist/collection/components/Segmented/Segmented.js.map +1 -1
- package/dist/collection/components/Select/Select.js +63 -15
- package/dist/collection/components/Select/Select.js.map +1 -1
- package/dist/collection/components/Select/select.css +50 -5
- package/dist/collection/components/Slider/Slider.js +218 -24
- package/dist/collection/components/Slider/Slider.js.map +1 -1
- package/dist/collection/components/Slider/slider.css +57 -7
- 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 +35 -8
- package/dist/collection/components/Steps/Steps.js.map +1 -1
- package/dist/collection/components/Switch/Switch.js +8 -3
- package/dist/collection/components/Switch/Switch.js.map +1 -1
- package/dist/collection/components/Switch/switch.css +47 -1
- package/dist/collection/components/Table/Table.js +25 -16
- package/dist/collection/components/Table/Table.js.map +1 -1
- package/dist/collection/components/Table/table.css +26 -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/Timeline/Timeline.js +1 -1
- package/dist/collection/components/Tooltip/Tooltip.js +52 -6
- package/dist/collection/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/collection/components/Tooltip/tooltip.css +24 -2
- package/dist/collection/components/Transfer/Transfer.js +2 -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 +219 -23
- package/dist/collection/components/TreeSelect/TreeSelect.js.map +1 -1
- package/dist/collection/components/TreeSelect/tree-select.css +41 -7
- package/dist/collection/components/Upload/Upload.js +3 -3
- 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 +9 -16
- 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/components/hb-affix.js +1 -1
- package/dist/components/hb-alert.js +2 -1
- package/dist/components/hb-alert.js.map +1 -1
- package/dist/components/hb-aside.js +1 -1
- package/dist/components/hb-avatar.js +1 -1
- package/dist/components/hb-backtop.js +2 -2
- package/dist/components/hb-badge.js +1 -1
- package/dist/components/hb-breadcrumb-item.js +1 -1
- package/dist/components/hb-breadcrumb.js +1 -1
- package/dist/components/hb-button.js +2 -2
- package/dist/components/hb-calendar.js +80 -11
- package/dist/components/hb-calendar.js.map +1 -1
- package/dist/components/hb-card.js +1 -1
- package/dist/components/hb-cascader.js +309 -146
- 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-panel.js +2 -2
- package/dist/components/hb-color-picker.js +110 -29
- package/dist/components/hb-color-picker.js.map +1 -1
- package/dist/components/hb-config-provider.js +1 -1
- package/dist/components/hb-container.js +2 -2
- package/dist/components/hb-date-picker-pane.js +2 -2
- package/dist/components/hb-date-picker.js +92 -10
- package/dist/components/hb-date-picker.js.map +1 -1
- package/dist/components/hb-date-range-picker.js +3 -3
- package/dist/components/hb-date-time-picker.js +3 -3
- package/dist/components/hb-descriptions.js +2 -2
- 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-divider.js +2 -2
- package/dist/components/hb-drawer.js +36 -5
- package/dist/components/hb-drawer.js.map +1 -1
- package/dist/components/hb-dropdown.js +94 -12
- 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-footer.js +1 -1
- package/dist/components/hb-form-item.js +61 -9
- package/dist/components/hb-form-item.js.map +1 -1
- package/dist/components/hb-form.js +13 -8
- package/dist/components/hb-form.js.map +1 -1
- package/dist/components/hb-header.js +1 -1
- package/dist/components/hb-icon.js +1 -89
- package/dist/components/hb-icon.js.map +1 -1
- package/dist/components/hb-image-preview.js +13 -9
- 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 +40 -3
- package/dist/components/hb-input.js.map +1 -1
- package/dist/components/hb-layout.js +36 -14
- 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-main.js +1 -1
- 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 +3 -3
- package/dist/components/hb-menu.js.map +1 -1
- package/dist/components/hb-message.js +13 -4
- package/dist/components/hb-message.js.map +1 -1
- package/dist/components/hb-notification.js +2 -2
- package/dist/components/hb-page-header.js +1 -1
- package/dist/components/hb-pagination.js +28 -10
- package/dist/components/hb-pagination.js.map +1 -1
- package/dist/components/hb-popconfirm.js +58 -8
- package/dist/components/hb-popconfirm.js.map +1 -1
- package/dist/components/hb-popover.js +38 -5
- 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 +46 -4
- package/dist/components/hb-rate.js.map +1 -1
- package/dist/components/hb-result.js +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 +54 -6
- package/dist/components/hb-segmented.js.map +1 -1
- package/dist/components/hb-select.js +64 -16
- package/dist/components/hb-select.js.map +1 -1
- package/dist/components/hb-slider.js +191 -24
- 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 +35 -8
- package/dist/components/hb-steps.js.map +1 -1
- package/dist/components/hb-sub-menu.js +5 -5
- package/dist/components/hb-switch.js +9 -4
- package/dist/components/hb-switch.js.map +1 -1
- package/dist/components/hb-tab-pane.js +1 -1
- package/dist/components/hb-table.js +26 -17
- 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-timeline.js +1 -1
- package/dist/components/hb-tooltip.js +44 -6
- package/dist/components/hb-tooltip.js.map +1 -1
- package/dist/components/hb-transfer.js +2 -2
- package/dist/components/hb-tree-select.js +219 -24
- 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-upload.js +3 -3
- package/dist/components/hb-watermark.js +19 -11
- package/dist/components/hb-watermark.js.map +1 -1
- package/dist/components/{p-cc0aeb50.js → p-00aa34c8.js} +17 -3
- package/dist/components/p-00aa34c8.js.map +1 -0
- package/dist/components/p-86d92faf.js +93 -0
- package/dist/components/p-86d92faf.js.map +1 -0
- package/dist/{esm/date-helpers-e4d85a67.js → components/p-e0876aca.js} +10 -17
- 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/esm/{a11y-f9ab2964.js → a11y-e4cde5b0.js} +17 -3
- package/dist/esm/a11y-e4cde5b0.js.map +1 -0
- package/dist/{components/p-cf94cbf6.js → esm/date-helpers-259ed2f1.js} +10 -17
- package/dist/esm/date-helpers-259ed2f1.js.map +1 -0
- package/dist/esm/hb-affix.entry.js +1 -1
- package/dist/esm/hb-alert.entry.js +2 -1
- package/dist/esm/hb-alert.entry.js.map +1 -1
- package/dist/esm/hb-aside.entry.js +1 -1
- package/dist/esm/hb-avatar.entry.js +1 -1
- package/dist/esm/hb-backtop.entry.js +2 -2
- package/dist/esm/hb-badge.entry.js +1 -1
- package/dist/esm/hb-breadcrumb-item.entry.js +1 -1
- package/dist/esm/hb-breadcrumb.entry.js +1 -1
- package/dist/esm/hb-button.entry.js +2 -2
- package/dist/esm/hb-calendar.entry.js +78 -10
- package/dist/esm/hb-calendar.entry.js.map +1 -1
- package/dist/esm/hb-card.entry.js +1 -1
- package/dist/esm/hb-cascader.entry.js +306 -146
- 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-panel.entry.js +2 -2
- package/dist/esm/hb-color-picker.entry.js +108 -28
- package/dist/esm/hb-color-picker.entry.js.map +1 -1
- package/dist/esm/hb-config-provider.entry.js +1 -1
- package/dist/esm/hb-container.entry.js +2 -2
- package/dist/esm/hb-date-picker-pane.entry.js +2 -2
- package/dist/esm/hb-date-picker.entry.js +90 -9
- package/dist/esm/hb-date-picker.entry.js.map +1 -1
- package/dist/esm/hb-date-range-picker.entry.js +3 -3
- package/dist/esm/hb-date-time-picker.entry.js +3 -3
- package/dist/esm/hb-descriptions.entry.js +2 -2
- 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-divider.entry.js +2 -2
- 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 +91 -11
- 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-footer.entry.js +1 -1
- package/dist/esm/hb-form-item.entry.js +61 -9
- package/dist/esm/hb-form-item.entry.js.map +1 -1
- package/dist/esm/hb-form.entry.js +13 -8
- package/dist/esm/hb-form.entry.js.map +1 -1
- package/dist/esm/hb-header.entry.js +1 -1
- package/dist/esm/hb-image-preview.entry.js +13 -9
- 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 +40 -3
- package/dist/esm/hb-input.entry.js.map +1 -1
- package/dist/esm/hb-layout.entry.js +36 -14
- 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-main.entry.js +1 -1
- 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 +3 -3
- package/dist/esm/hb-menu.entry.js.map +1 -1
- package/dist/esm/hb-message.entry.js +13 -4
- package/dist/esm/hb-message.entry.js.map +1 -1
- package/dist/esm/hb-notification.entry.js +2 -2
- package/dist/esm/hb-page-header.entry.js +1 -1
- package/dist/esm/hb-pagination.entry.js +24 -8
- package/dist/esm/hb-pagination.entry.js.map +1 -1
- package/dist/esm/hb-popconfirm.entry.js +57 -8
- package/dist/esm/hb-popconfirm.entry.js.map +1 -1
- package/dist/esm/hb-popover.entry.js +37 -5
- 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 +46 -4
- package/dist/esm/hb-rate.entry.js.map +1 -1
- package/dist/esm/hb-result.entry.js +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 +51 -6
- package/dist/esm/hb-segmented.entry.js.map +1 -1
- package/dist/esm/hb-select.entry.js +64 -16
- package/dist/esm/hb-select.entry.js.map +1 -1
- package/dist/esm/hb-slider.entry.js +186 -23
- 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 +28 -7
- 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 +9 -4
- 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 +26 -17
- 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-timeline.entry.js +1 -1
- package/dist/esm/hb-tooltip.entry.js +43 -6
- package/dist/esm/hb-tooltip.entry.js.map +1 -1
- package/dist/esm/hb-transfer.entry.js +2 -2
- package/dist/esm/hb-tree-select.entry.js +215 -23
- 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-upload.entry.js +3 -3
- 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.css +1 -1
- 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-02f15843.entry.js +2 -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-f1c084c5.entry.js → p-0ddae4e9.entry.js} +2 -2
- package/dist/huibo-ui/{p-672076c3.entry.js → p-10f6c184.entry.js} +2 -2
- package/dist/huibo-ui/p-10f6c184.entry.js.map +1 -0
- package/dist/huibo-ui/{p-6ac242fe.entry.js → p-14c3b47b.entry.js} +2 -2
- package/dist/huibo-ui/{p-8c80a765.entry.js → p-15db24e9.entry.js} +2 -2
- package/dist/huibo-ui/{p-8b027491.entry.js → p-193efdc0.entry.js} +2 -2
- package/dist/huibo-ui/{p-8d925e3d.entry.js → p-1b0fbe69.entry.js} +2 -2
- package/dist/huibo-ui/{p-85f68526.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-f374d5a3.entry.js → p-20632186.entry.js} +2 -2
- package/dist/huibo-ui/{p-e6f2d71d.entry.js → p-20fc554b.entry.js} +2 -2
- package/dist/huibo-ui/{p-64ca0980.entry.js → p-29092b85.entry.js} +2 -2
- package/dist/huibo-ui/p-29092b85.entry.js.map +1 -0
- package/dist/huibo-ui/p-2bc30b1b.entry.js +2 -0
- package/dist/huibo-ui/p-2bc30b1b.entry.js.map +1 -0
- package/dist/huibo-ui/{p-fd19813c.entry.js → p-2bcda1bb.entry.js} +2 -2
- package/dist/huibo-ui/{p-231a7335.entry.js → p-2ca9796a.entry.js} +2 -2
- package/dist/huibo-ui/p-2ca9796a.entry.js.map +1 -0
- package/dist/huibo-ui/{p-e0768565.entry.js → p-3042f986.entry.js} +2 -2
- package/dist/huibo-ui/{p-be48d2aa.entry.js → p-3dacb26b.entry.js} +2 -2
- package/dist/huibo-ui/{p-6a1ec3ff.entry.js → p-3deff48c.entry.js} +2 -2
- package/dist/huibo-ui/{p-c321c4aa.entry.js → p-412ff618.entry.js} +2 -2
- package/dist/huibo-ui/p-415295f3.entry.js +2 -0
- 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-54a28052.entry.js +2 -0
- package/dist/huibo-ui/p-54a28052.entry.js.map +1 -0
- package/dist/huibo-ui/{p-88127de1.entry.js → p-55cd13eb.entry.js} +2 -2
- package/dist/huibo-ui/{p-58ebb9b3.entry.js → p-5c839288.entry.js} +2 -2
- 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-a042e3d0.entry.js → p-6518c435.entry.js} +2 -2
- package/dist/huibo-ui/p-687d8dff.entry.js +2 -0
- 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-a0015341.entry.js → p-6bfeab80.entry.js} +2 -2
- package/dist/huibo-ui/{p-4001c08d.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 +2 -0
- package/dist/huibo-ui/p-6c8cf248.entry.js.map +1 -0
- 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-8b1ae77e.entry.js → p-746a11a3.entry.js} +2 -2
- package/dist/huibo-ui/{p-c3e8893d.entry.js → p-79b24b83.entry.js} +2 -2
- package/dist/huibo-ui/p-79b24b83.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-c922d672.entry.js → p-7a682c56.entry.js} +2 -2
- package/dist/huibo-ui/{p-8c987d57.entry.js → p-7f65dc36.entry.js} +2 -2
- package/dist/huibo-ui/{p-463de26d.entry.js → p-815fc943.entry.js} +2 -2
- package/dist/huibo-ui/{p-d87fc21a.entry.js → p-88a6c905.entry.js} +2 -2
- package/dist/huibo-ui/{p-77017274.entry.js → p-89be7973.entry.js} +2 -2
- package/dist/huibo-ui/p-8a202bc5.entry.js +2 -0
- package/dist/huibo-ui/p-8a202bc5.entry.js.map +1 -0
- package/dist/huibo-ui/{p-315feadf.entry.js → p-8c4415ed.entry.js} +2 -2
- package/dist/huibo-ui/p-8c4415ed.entry.js.map +1 -0
- package/dist/huibo-ui/{p-9319c650.entry.js → p-950e7465.entry.js} +2 -2
- package/dist/huibo-ui/{p-6b381d0e.entry.js → p-96cecd21.entry.js} +2 -2
- package/dist/huibo-ui/p-96cecd21.entry.js.map +1 -0
- package/dist/huibo-ui/{p-710f38de.entry.js → p-98b513cd.entry.js} +2 -2
- package/dist/huibo-ui/p-98b513cd.entry.js.map +1 -0
- package/dist/huibo-ui/{p-5df47135.entry.js → p-a190ca89.entry.js} +2 -2
- package/dist/huibo-ui/{p-0e65e1bd.entry.js → p-ac18c68b.entry.js} +2 -2
- package/dist/huibo-ui/p-ac18c68b.entry.js.map +1 -0
- package/dist/huibo-ui/{p-d64b91ef.entry.js → p-ac45291c.entry.js} +2 -2
- package/dist/huibo-ui/p-ac45291c.entry.js.map +1 -0
- package/dist/huibo-ui/{p-477d8568.entry.js → p-aeae83af.entry.js} +2 -2
- package/dist/huibo-ui/{p-b489a526.entry.js → p-b06c8020.entry.js} +2 -2
- package/dist/huibo-ui/{p-dfaf7e37.entry.js → p-b105cf76.entry.js} +2 -2
- package/dist/huibo-ui/p-b105cf76.entry.js.map +1 -0
- package/dist/huibo-ui/{p-c3e665f6.entry.js → p-b38802b0.entry.js} +2 -2
- package/dist/huibo-ui/p-b38802b0.entry.js.map +1 -0
- 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-e2a8a396.entry.js → p-b6afe81e.entry.js} +2 -2
- package/dist/huibo-ui/{p-2b286698.entry.js → p-b7885d4a.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-e0ab9010.entry.js → p-c869842c.entry.js} +2 -2
- package/dist/huibo-ui/p-c869842c.entry.js.map +1 -0
- package/dist/huibo-ui/{p-476527c1.entry.js → p-c8e917db.entry.js} +2 -2
- package/dist/huibo-ui/p-c8e917db.entry.js.map +1 -0
- 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-10c088f3.entry.js → p-d9c7c378.entry.js} +2 -2
- package/dist/huibo-ui/{p-332c8877.entry.js → p-dd9c6459.entry.js} +2 -2
- package/dist/huibo-ui/{p-80aca641.entry.js → p-dfccc7aa.entry.js} +2 -2
- package/dist/huibo-ui/{p-21682e92.entry.js → p-dfd144d8.entry.js} +2 -2
- package/dist/huibo-ui/p-e0876aca.js +2 -0
- package/dist/huibo-ui/p-e0876aca.js.map +1 -0
- package/dist/huibo-ui/p-e1773c93.entry.js +2 -0
- package/dist/huibo-ui/p-e1773c93.entry.js.map +1 -0
- package/dist/huibo-ui/{p-079a4130.entry.js → p-e3155cd7.entry.js} +2 -2
- package/dist/huibo-ui/{p-59b2e61c.entry.js → p-e73c357f.entry.js} +2 -2
- package/dist/huibo-ui/p-e73c357f.entry.js.map +1 -0
- package/dist/huibo-ui/{p-c1b4eacb.entry.js → p-e7c73624.entry.js} +2 -2
- package/dist/huibo-ui/p-e7c73624.entry.js.map +1 -0
- package/dist/huibo-ui/{p-d7815b4f.entry.js → p-e9e7abca.entry.js} +2 -2
- package/dist/huibo-ui/{p-f81ec512.entry.js → p-ea0823f3.entry.js} +2 -2
- package/dist/huibo-ui/p-ea0823f3.entry.js.map +1 -0
- package/dist/huibo-ui/{p-2e6584ea.entry.js → p-f1f2483f.entry.js} +2 -2
- package/dist/huibo-ui/{p-465dcb4c.entry.js → p-f2c78699.entry.js} +2 -2
- package/dist/huibo-ui/p-fad66d69.js +2 -0
- package/dist/huibo-ui/p-fad66d69.js.map +1 -0
- package/dist/huibo-ui/{p-4d8b1404.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/Calendar/Calendar.d.ts +13 -1
- package/dist/types/components/Cascader/Cascader.d.ts +80 -90
- 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/ColorPicker/ColorPicker.d.ts +11 -0
- package/dist/types/components/DatePicker/DatePicker.d.ts +14 -3
- 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 +18 -1
- package/dist/types/components/Form/Form.d.ts +2 -0
- package/dist/types/components/Form/FormItem.d.ts +10 -0
- package/dist/types/components/Image/Image.d.ts +6 -0
- package/dist/types/components/ImagePreview/ImagePreview.d.ts +5 -1
- package/dist/types/components/Input/Input.d.ts +9 -0
- package/dist/types/components/Layout/Layout.d.ts +20 -10
- package/dist/types/components/Menu/MenuItem.d.ts +8 -1
- package/dist/types/components/Message/Message.d.ts +3 -0
- package/dist/types/components/Pagination/Pagination.d.ts +3 -0
- package/dist/types/components/Popconfirm/Popconfirm.d.ts +16 -0
- package/dist/types/components/Popover/Popover.d.ts +14 -0
- package/dist/types/components/Radio/Radio.d.ts +5 -0
- package/dist/types/components/Rate/Rate.d.ts +7 -0
- package/dist/types/components/Segmented/Segmented.d.ts +18 -1
- package/dist/types/components/Select/Select.d.ts +11 -0
- package/dist/types/components/Slider/Slider.d.ts +27 -1
- package/dist/types/components/Steps/Steps.d.ts +14 -6
- package/dist/types/components/Table/Table.d.ts +8 -2
- package/dist/types/components/Tabs/Tabs.d.ts +6 -0
- package/dist/types/components/Tooltip/Tooltip.d.ts +15 -1
- package/dist/types/components/Tree/Tree.d.ts +24 -0
- package/dist/types/components/TreeSelect/TreeSelect.d.ts +26 -0
- package/dist/types/components/Watermark/Watermark.d.ts +7 -1
- package/dist/types/components.d.ts +290 -98
- package/dist/types/utils/a11y.d.ts +9 -0
- package/dist/types/utils/date-helpers.d.ts +1 -1
- package/dist/types/utils/transition.d.ts +27 -0
- package/package.json +8 -2
- package/readme.md +88 -73
- package/dist/cjs/a11y-802de67a.js.map +0 -1
- package/dist/cjs/date-helpers-904747ff.js.map +0 -1
- package/dist/components/p-cc0aeb50.js.map +0 -1
- package/dist/components/p-cf94cbf6.js.map +0 -1
- package/dist/esm/a11y-f9ab2964.js.map +0 -1
- package/dist/esm/date-helpers-e4d85a67.js.map +0 -1
- package/dist/huibo-ui/p-003cee87.entry.js +0 -2
- package/dist/huibo-ui/p-003cee87.entry.js.map +0 -1
- package/dist/huibo-ui/p-0a033738.entry.js +0 -2
- package/dist/huibo-ui/p-0a033738.entry.js.map +0 -1
- package/dist/huibo-ui/p-0bef78ac.entry.js +0 -2
- package/dist/huibo-ui/p-0bef78ac.entry.js.map +0 -1
- package/dist/huibo-ui/p-0e65e1bd.entry.js.map +0 -1
- package/dist/huibo-ui/p-0f189251.entry.js +0 -2
- package/dist/huibo-ui/p-0f189251.entry.js.map +0 -1
- package/dist/huibo-ui/p-1b5acd6d.entry.js +0 -2
- package/dist/huibo-ui/p-1b5acd6d.entry.js.map +0 -1
- package/dist/huibo-ui/p-231a7335.entry.js.map +0 -1
- package/dist/huibo-ui/p-24ad7eec.entry.js +0 -2
- package/dist/huibo-ui/p-24ad7eec.entry.js.map +0 -1
- package/dist/huibo-ui/p-315feadf.entry.js.map +0 -1
- package/dist/huibo-ui/p-3c7f73c8.entry.js +0 -2
- package/dist/huibo-ui/p-3c7f73c8.entry.js.map +0 -1
- package/dist/huibo-ui/p-4001c08d.entry.js.map +0 -1
- package/dist/huibo-ui/p-44c48246.entry.js +0 -2
- package/dist/huibo-ui/p-44c48246.entry.js.map +0 -1
- package/dist/huibo-ui/p-476527c1.entry.js.map +0 -1
- package/dist/huibo-ui/p-4d0dff15.entry.js +0 -2
- package/dist/huibo-ui/p-58d20809.entry.js +0 -2
- package/dist/huibo-ui/p-58d20809.entry.js.map +0 -1
- package/dist/huibo-ui/p-59b2e61c.entry.js.map +0 -1
- package/dist/huibo-ui/p-64ca0980.entry.js.map +0 -1
- package/dist/huibo-ui/p-672076c3.entry.js.map +0 -1
- package/dist/huibo-ui/p-6b381d0e.entry.js.map +0 -1
- package/dist/huibo-ui/p-710f38de.entry.js.map +0 -1
- package/dist/huibo-ui/p-756acbdb.entry.js +0 -2
- package/dist/huibo-ui/p-756acbdb.entry.js.map +0 -1
- package/dist/huibo-ui/p-75a93de3.entry.js +0 -2
- package/dist/huibo-ui/p-75a93de3.entry.js.map +0 -1
- package/dist/huibo-ui/p-769960f4.entry.js +0 -2
- package/dist/huibo-ui/p-769960f4.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-85f68526.entry.js.map +0 -1
- package/dist/huibo-ui/p-8d615521.entry.js +0 -2
- package/dist/huibo-ui/p-8d615521.entry.js.map +0 -1
- package/dist/huibo-ui/p-953b9514.entry.js +0 -2
- package/dist/huibo-ui/p-953b9514.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-ad6b0c6e.entry.js +0 -2
- package/dist/huibo-ui/p-ad6b0c6e.entry.js.map +0 -1
- package/dist/huibo-ui/p-c1a059d9.entry.js +0 -2
- package/dist/huibo-ui/p-c1a059d9.entry.js.map +0 -1
- package/dist/huibo-ui/p-c1b4eacb.entry.js.map +0 -1
- package/dist/huibo-ui/p-c3e665f6.entry.js.map +0 -1
- package/dist/huibo-ui/p-c3e8893d.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-cf94cbf6.js +0 -2
- package/dist/huibo-ui/p-cf94cbf6.js.map +0 -1
- package/dist/huibo-ui/p-d3939d44.entry.js +0 -2
- package/dist/huibo-ui/p-d3939d44.entry.js.map +0 -1
- package/dist/huibo-ui/p-d64b91ef.entry.js.map +0 -1
- package/dist/huibo-ui/p-dd05cb2c.entry.js +0 -2
- package/dist/huibo-ui/p-dd05cb2c.entry.js.map +0 -1
- package/dist/huibo-ui/p-dfaf7e37.entry.js.map +0 -1
- package/dist/huibo-ui/p-e0ab9010.entry.js.map +0 -1
- package/dist/huibo-ui/p-e9490259.entry.js +0 -2
- package/dist/huibo-ui/p-e9490259.entry.js.map +0 -1
- package/dist/huibo-ui/p-ea74fcae.entry.js.map +0 -1
- package/dist/huibo-ui/p-ebd04656.entry.js +0 -2
- package/dist/huibo-ui/p-ebd04656.entry.js.map +0 -1
- package/dist/huibo-ui/p-ed0ff857.entry.js +0 -2
- package/dist/huibo-ui/p-ed0ff857.entry.js.map +0 -1
- package/dist/huibo-ui/p-f0ac7db5.entry.js +0 -2
- package/dist/huibo-ui/p-f0ac7db5.entry.js.map +0 -1
- package/dist/huibo-ui/p-f81ec512.entry.js.map +0 -1
- /package/dist/huibo-ui/{p-4d0dff15.entry.js.map → p-02f15843.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-f1c084c5.entry.js.map → p-0ddae4e9.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-6ac242fe.entry.js.map → p-14c3b47b.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-8c80a765.entry.js.map → p-15db24e9.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-8b027491.entry.js.map → p-193efdc0.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-8d925e3d.entry.js.map → p-1b0fbe69.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-f374d5a3.entry.js.map → p-20632186.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-e6f2d71d.entry.js.map → p-20fc554b.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-fd19813c.entry.js.map → p-2bcda1bb.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-e0768565.entry.js.map → p-3042f986.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-be48d2aa.entry.js.map → p-3dacb26b.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-6a1ec3ff.entry.js.map → p-3deff48c.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-c321c4aa.entry.js.map → p-412ff618.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-88127de1.entry.js.map → p-55cd13eb.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-58ebb9b3.entry.js.map → p-5c839288.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-a042e3d0.entry.js.map → p-6518c435.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-a0015341.entry.js.map → p-6bfeab80.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-8b1ae77e.entry.js.map → p-746a11a3.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-c922d672.entry.js.map → p-7a682c56.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-8c987d57.entry.js.map → p-7f65dc36.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-463de26d.entry.js.map → p-815fc943.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-d87fc21a.entry.js.map → p-88a6c905.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-77017274.entry.js.map → p-89be7973.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-9319c650.entry.js.map → p-950e7465.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-5df47135.entry.js.map → p-a190ca89.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-477d8568.entry.js.map → p-aeae83af.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-b489a526.entry.js.map → p-b06c8020.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-e2a8a396.entry.js.map → p-b6afe81e.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-2b286698.entry.js.map → p-b7885d4a.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-10c088f3.entry.js.map → p-d9c7c378.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-332c8877.entry.js.map → p-dd9c6459.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-80aca641.entry.js.map → p-dfccc7aa.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-21682e92.entry.js.map → p-dfd144d8.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-079a4130.entry.js.map → p-e3155cd7.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-d7815b4f.entry.js.map → p-e9e7abca.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-2e6584ea.entry.js.map → p-f1f2483f.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-465dcb4c.entry.js.map → p-f2c78699.entry.js.map} +0 -0
- /package/dist/huibo-ui/{p-4d8b1404.entry.js.map → p-fd6831f9.entry.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["cascaderCss","HbCascaderStyle0","Cascader","modelValue","options","placeholder","disabled","size","clearable","showAllLevels","name","inputId","separator","emitPath","filterable","lazy","load","multiple","checkStrictly","maxTagCount","isOpen","inputValue","searchValue","loadingKeys","Set","filteredPaths","activePath","hbChange","hbExpandChange","clickOutside","createClickOutsideHandler","host","this","onClose","closeAndClearSearch","static","componentDidLoad","el","connect","updateInputValue","disconnectedCallback","disconnect","handleValueChange","length","mv","lastValue","option","findOptionByValue","label","labels","currentOptions","value","find","opt","push","children","join","found","getMultiModel","Array","isArray","_modelKeySet","_modelKeySetRef","getModelKeySet","set","p","add","pathInModel","path","has","pathEquals","a","b","every","v","i","collectLeafValuePaths","basePath","currentPath","hasChildren","leaf","result","child","getCheckState","valuePath","leafPaths","lp","some","handleCheck","model","map","idx","findIndex","splice","allIn","filter","emit","getDisplayTags","String","handleTagRemove","e","stopPropagation","hasValue","handleInputClick","handleKeyDown","key","preventDefault","parentPath","slice","handleSelect","handleSearchInput","target","collectFilteredPaths","keyword","trimmed","trim","toLowerCase","results","max","MAX_FILTER_RESULTS","walk","opts","ancestors","includes","handleSearchSelect","last","isLeaf","handleClear","undefined","handleItemClick","newPath","selectedOption","pathValue","loadChildren","node","replaceOptionChildren","err","console","error","indexOf","next","delete","targetValue","newChildren","render","displayTags","visibleTags","overflowCount","Math","h","class","onClick","tag","role","tabindex","onKeyDown","viewBox","fill","stroke","d","type","id","readonly","onInput","renderSearchResults","renderCascaderMenus","menus","renderMenu","renderLoadingMenu","labelPath","selected","checkState","isSelected","val","showArrow"],"sources":["src/components/Cascader/cascader.css?tag=hb-cascader&encapsulation=shadow","src/components/Cascader/Cascader.tsx"],"sourcesContent":[":host {\n display: inline-block;\n position: relative;\n --hb-cascader-font-size: 14px;\n --hb-cascader-font-size-large: 16px;\n --hb-cascader-font-size-small: 12px;\n --hb-cascader-border-color: var(--hb-border-color, #dcdfe6);\n --hb-cascader-border-color-hover: var(--hb-color-primary);\n --hb-cascader-bg-color: var(--hb-color-white, #ffffff);\n --hb-cascader-text-color: var(--hb-color-text-regular, #606266);\n --hb-cascader-placeholder-color: var(--hb-color-text-placeholder, #c0c4cc);\n --hb-cascader-disabled-color: var(--hb-color-text-disabled, #c0c4cc);\n --hb-cascader-disabled-bg-color: var(--hb-fill-color-light, #f5f7fa);\n}\n\n.hb-cascader {\n display: inline-block;\n position: relative;\n font-size: var(--hb-cascader-font-size);\n line-height: 32px;\n}\n\n.hb-cascader__input-wrapper {\n position: relative;\n display: inline-block;\n width: 100%;\n cursor: pointer;\n}\n\n.hb-cascader__input {\n display: inline-block;\n width: 100%;\n height: 32px;\n line-height: 32px;\n padding: 0 30px 0 15px;\n font-size: var(--hb-cascader-font-size);\n color: var(--hb-cascader-text-color);\n background-color: var(--hb-cascader-bg-color);\n border: 1px solid var(--hb-cascader-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-cascader__input::placeholder {\n color: var(--hb-cascader-placeholder-color);\n}\n\n.hb-cascader__input:hover:not(:disabled) {\n border-color: var(--hb-cascader-border-color-hover);\n}\n\n.hb-cascader__input:focus {\n border-color: var(--hb-cascader-border-color-hover);\n}\n\n.hb-cascader__input:disabled {\n background-color: var(--hb-cascader-disabled-bg-color);\n border-color: var(--hb-cascader-border-color);\n color: var(--hb-cascader-disabled-color);\n cursor: not-allowed;\n}\n\n.hb-cascader__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-cascader-text-color);\n}\n\n.hb-cascader__clear {\n margin-right: 8px;\n cursor: pointer;\n width: 14px;\n height: 14px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: var(--hb-cascader-placeholder-color);\n transition: color 0.2s;\n}\n\n.hb-cascader__clear svg {\n width: 100%;\n height: 100%;\n}\n\n.hb-cascader__clear:hover {\n color: var(--hb-cascader-text-color);\n}\n\n.hb-cascader__arrow {\n display: inline-flex;\n align-items: center;\n width: 12px;\n height: 12px;\n color: var(--hb-cascader-placeholder-color);\n transition: transform 0.3s;\n}\n\n.hb-cascader__arrow svg {\n width: 100%;\n height: 100%;\n}\n\n.hb-cascader--open .hb-cascader__arrow {\n transform: rotate(180deg);\n}\n\n.hb-cascader__dropdown {\n position: absolute;\n top: 100%;\n left: 0;\n margin-top: 4px;\n background-color: var(--hb-cascader-bg-color);\n border: 1px solid var(--hb-cascader-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: 180px;\n max-height: 300px;\n overflow-y: auto;\n width: max-content;\n}\n\n.hb-cascader__menus {\n display: flex;\n padding: 6px 0;\n}\n\n.hb-cascader__menu-list {\n margin: 0;\n padding: 0;\n list-style: none;\n min-width: 180px;\n max-height: 300px;\n overflow-y: auto;\n}\n\n/* 多列时,除最后一列外右侧加分隔线(对齐 antd 多面板视觉) */\n.hb-cascader__menus .hb-cascader__menu-list:not(:last-child) {\n border-right: 1px solid var(--hb-border-color-secondary, var(--hb-cascader-border-color));\n}\n\n.hb-cascader__menu-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 20px;\n font-size: var(--hb-cascader-font-size);\n color: var(--hb-cascader-text-color);\n cursor: pointer;\n transition: background-color 0.2s;\n}\n\n.hb-cascader__menu-item:hover:not(.hb-cascader__menu-item--disabled) {\n background-color: var(--hb-fill-color-light, #f5f7fa);\n}\n\n.hb-cascader__menu-item--selected {\n color: var(--hb-color-primary);\n font-weight: 600;\n}\n\n.hb-cascader__menu-item--disabled {\n color: var(--hb-cascader-disabled-color);\n cursor: not-allowed;\n}\n\n.hb-cascader__menu-item-label {\n flex: 1;\n}\n\n.hb-cascader__menu-item-arrow {\n margin-left: 8px;\n width: 12px;\n height: 12px;\n display: inline-flex;\n align-items: center;\n color: var(--hb-cascader-placeholder-color);\n}\n\n.hb-cascader__menu-item-arrow svg {\n width: 100%;\n height: 100%;\n}\n\n.hb-cascader__menu-item-loading {\n margin-left: 8px;\n width: 12px;\n height: 12px;\n display: inline-flex;\n align-items: center;\n color: var(--hb-color-primary, #1677ff);\n}\n\n.hb-cascader__menu-item-loading-svg {\n width: 100%;\n height: 100%;\n animation: hb-cascader-spin 0.8s linear infinite;\n}\n\n.hb-cascader__menu-list--loading .hb-cascader__menu-item--loading {\n color: var(--hb-color-text-placeholder, #c0c4cc);\n justify-content: center;\n}\n\n@keyframes hb-cascader-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n.hb-cascader--large {\n font-size: var(--hb-cascader-font-size-large);\n line-height: 40px;\n}\n\n.hb-cascader--large .hb-cascader__input {\n height: 40px;\n line-height: 40px;\n font-size: var(--hb-cascader-font-size-large);\n}\n\n.hb-cascader--small {\n font-size: var(--hb-cascader-font-size-small);\n line-height: 24px;\n}\n\n.hb-cascader--small .hb-cascader__input {\n height: 24px;\n line-height: 24px;\n font-size: var(--hb-cascader-font-size-small);\n padding: 0 25px 0 12px;\n}\n\n.hb-cascader--disabled {\n cursor: not-allowed;\n}\n\n/* ---- 可搜索(filterable)---- */\n.hb-cascader__search {\n padding: 8px;\n border-bottom: 1px solid var(--hb-cascader-border-color);\n}\n\n.hb-cascader__search-input {\n width: 100%;\n height: 28px;\n line-height: 28px;\n padding: 0 8px;\n font-size: var(--hb-cascader-font-size);\n color: var(--hb-cascader-text-color);\n background-color: var(--hb-cascader-bg-color);\n border: 1px solid var(--hb-cascader-border-color);\n border-radius: 4px;\n box-sizing: border-box;\n outline: none;\n transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);\n cursor: text;\n}\n\n.hb-cascader__search-input:focus {\n border-color: var(--hb-cascader-border-color-hover);\n}\n\n.hb-cascader__search-results {\n padding: 6px 0;\n max-height: 264px;\n overflow-y: auto;\n min-width: 180px;\n}\n\n.hb-cascader__search-item {\n padding: 8px 20px;\n font-size: var(--hb-cascader-font-size);\n color: var(--hb-cascader-text-color);\n cursor: pointer;\n white-space: nowrap;\n transition: background-color 0.2s;\n}\n\n.hb-cascader__search-item:hover:not(.hb-cascader__search-item--disabled) {\n background-color: var(--hb-fill-color-light, #f5f7fa);\n}\n\n.hb-cascader__search-item--selected {\n color: var(--hb-color-primary);\n font-weight: 600;\n}\n\n.hb-cascader__search-item--disabled {\n color: var(--hb-cascader-disabled-color);\n cursor: not-allowed;\n}\n\n.hb-cascader__search-empty {\n padding: 16px 0;\n text-align: center;\n color: var(--hb-cascader-placeholder-color);\n font-size: var(--hb-cascader-font-size);\n}\n\n/* ---- 多选(multiple):tag 输入框 ---- */\n.hb-cascader--multiple .hb-cascader__input-wrapper {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n min-height: 32px;\n padding: 3px 30px 3px 4px;\n border: 1px solid var(--hb-cascader-border-color);\n border-radius: 4px;\n background-color: var(--hb-cascader-bg-color);\n box-sizing: border-box;\n transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);\n}\n\n.hb-cascader--multiple .hb-cascader__input-wrapper:hover {\n border-color: var(--hb-cascader-border-color-hover);\n}\n\n.hb-cascader--multiple .hb-cascader__input {\n flex: 1;\n min-width: 40px;\n width: auto;\n height: 24px;\n line-height: 24px;\n padding: 0 4px;\n border: none;\n background-color: transparent;\n}\n\n.hb-cascader__tag {\n display: inline-flex;\n align-items: center;\n max-width: 100%;\n height: 22px;\n padding: 0 6px;\n margin: 2px;\n font-size: var(--hb-cascader-font-size-small);\n color: var(--hb-color-text-primary, #303133);\n background-color: var(--hb-fill-color, #f0f2f5);\n border-radius: 3px;\n}\n\n.hb-cascader__tag-label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.hb-cascader__tag-close {\n margin-left: 4px;\n width: 12px;\n height: 12px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n line-height: 1;\n color: var(--hb-cascader-placeholder-color);\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.hb-cascader__tag-close svg {\n width: 100%;\n height: 100%;\n}\n\n.hb-cascader__tag-close:hover {\n color: var(--hb-color-text-primary, #606266);\n}\n\n.hb-cascader__tag-overflow {\n display: inline-flex;\n align-items: center;\n height: 22px;\n padding: 0 6px;\n margin: 2px;\n font-size: var(--hb-cascader-font-size-small);\n color: var(--hb-cascader-text-color);\n}\n\n/* ---- 多选:菜单项 checkbox(三态,纯 CSS)---- */\n.hb-cascader__menu-item-checkbox {\n width: 14px;\n height: 14px;\n margin-right: 8px;\n border: 1px solid var(--hb-cascader-border-color);\n border-radius: 2px;\n background-color: var(--hb-cascader-bg-color);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n transition:\n background-color 0.2s,\n border-color 0.2s;\n}\n\n.hb-cascader__menu-item-checkbox--checked,\n.hb-cascader__menu-item-checkbox--indeterminate {\n background-color: var(--hb-color-primary);\n border-color: var(--hb-color-primary);\n}\n\n.hb-cascader__menu-item-checkbox--checked::after {\n content: '';\n width: 4px;\n height: 8px;\n border: 2px solid #fff;\n border-top: 0;\n border-left: 0;\n transform: rotate(45deg) translate(-1px, -1px);\n}\n\n.hb-cascader__menu-item-checkbox--indeterminate::after {\n content: '';\n width: 8px;\n height: 2px;\n background-color: #fff;\n}\n","import { Component, h, Prop, Event, EventEmitter, State, Element, Watch } from '@stencil/core';\nimport { createClickOutsideHandler } from '../../utils/click-outside';\n\nexport interface CascaderOption {\n value: string | number;\n label: string;\n children?: CascaderOption[];\n disabled?: boolean;\n leaf?: boolean;\n}\n\nexport type ValuePath = (string | number)[];\n\n/**\n * Cascader 级联选择器组件\n * 当一个数据集合有清晰的层级结构时,可通过级联选择器逐级查看并选择。\n * 支持单选 / 多选(multiple)、可选任意层级(checkStrictly)、搜索(filterable)、动态加载(lazy)。\n */\n@Component({\n tag: 'hb-cascader',\n styleUrl: 'cascader.css',\n shadow: true,\n})\nexport class Cascader {\n @Element() el: HTMLElement;\n\n /**\n * 选中项绑定值。单选为一维路径数组(如 ['zhejiang','hangzhou']),\n * 多选(multiple)为二维数组(如 [['zhejiang','ningbo'], ['jiangsu']])。\n */\n @Prop({ mutable: true }) modelValue?: ValuePath | ValuePath[];\n\n /** 可选项数据源 */\n @Prop() options: CascaderOption[] = [];\n\n /** 输入框占位文本 */\n @Prop() placeholder: string = '请选择';\n\n /** 是否禁用 */\n @Prop() disabled: boolean = false;\n\n /** 输入框尺寸 */\n @Prop() size: 'large' | 'default' | 'small' = 'default';\n\n /** 是否可清空 */\n @Prop() clearable: boolean = false;\n\n /** 是否显示完整路径(单选输入框 / 多选 tag 文本) */\n @Prop() showAllLevels: boolean = true;\n\n /** 输入框原生属性 */\n @Prop() name?: string;\n\n /** 输入框原生属性 */\n @Prop() inputId?: string;\n\n /** 路径分隔符 */\n @Prop() separator: string = ' / ';\n\n /** modelValue 是否输出完整路径(保留 AntD 兼容位) */\n @Prop() emitPath: boolean = true;\n\n /**\n * 是否可搜索(filterable)。下拉顶部渲染搜索框,输入时按 label 扁平化过滤,\n * 匹配项以完整路径展示,点击即选中(单选)或 toggle 勾选(多选)。\n */\n @Prop() filterable: boolean = false;\n\n /**\n * 是否开启动态加载(lazy)。展开 children=undefined 的节点时调用 load(node) 填充子级。\n */\n @Prop() lazy: boolean = false;\n\n /** 动态加载函数(仅 lazy=true 生效) */\n @Prop() load?: (node: CascaderOption) => Promise<CascaderOption[]>;\n\n /**\n * 是否开启多选。开启后 modelValue 为二维数组,每条为一个选中路径;\n * 菜单项前渲染 checkbox,输入框以 tag 列表展示选中项。\n */\n @Prop() multiple: boolean = false;\n\n /**\n * 是否严格的选中行为(父子不关联)。\n * 单选:点击任意层级(含非叶子)即选中该路径;\n * 多选:勾选独立,不向下联动选中叶子、取消也不联动。\n */\n @Prop() checkStrictly: boolean = false;\n\n /**\n * 多选时输入框最多展示的 tag 数量,超出折叠为 +N(可选)。\n */\n @Prop() maxTagCount?: number;\n\n @State() isOpen: boolean = false;\n @State() inputValue: string = '';\n @State() searchValue: string = '';\n /** 正在动态加载子级的节点 value 集合 */\n @State() loadingKeys: Set<string | number> = new Set();\n /** 扁平化搜索结果:每项为根到匹配节点的完整路径 */\n @State() filteredPaths: CascaderOption[][] = [];\n @State() activePath: ValuePath = [];\n\n /** 值改变事件:单选 emit 一维路径或 undefined;多选 emit 二维数组(可能为 []) */\n @Event() hbChange: EventEmitter<ValuePath | ValuePath[] | undefined>;\n\n /** 展开节点变化时触发 */\n @Event() hbExpandChange: EventEmitter<ValuePath>;\n\n private clickOutside = createClickOutsideHandler({\n host: null as any,\n isOpen: () => this.isOpen,\n onClose: () => {\n this.closeAndClearSearch();\n },\n });\n\n /** P4:搜索结果上限,防止超大树一次返回上万条结果拖垮渲染(封顶替代防抖,避免定时器/测试复杂性) */\n private static readonly MAX_FILTER_RESULTS = 200;\n\n componentDidLoad() {\n this.clickOutside = createClickOutsideHandler({\n host: this.el,\n isOpen: () => this.isOpen,\n onClose: () => {\n this.closeAndClearSearch();\n },\n });\n this.clickOutside.connect();\n this.updateInputValue();\n }\n\n private closeAndClearSearch() {\n this.isOpen = false;\n this.searchValue = '';\n this.filteredPaths = [];\n }\n\n disconnectedCallback() {\n this.clickOutside.disconnect();\n }\n\n @Watch('modelValue')\n handleValueChange() {\n this.updateInputValue();\n }\n\n private updateInputValue() {\n if (this.multiple) {\n this.inputValue = '';\n return;\n }\n if (!this.modelValue || (this.modelValue as ValuePath).length === 0) {\n this.inputValue = '';\n return;\n }\n const mv = this.modelValue as ValuePath;\n if (!this.showAllLevels) {\n const lastValue = mv[mv.length - 1];\n const option = this.findOptionByValue(this.options, lastValue);\n this.inputValue = option ? option.label : '';\n return;\n }\n const labels: string[] = [];\n let currentOptions = this.options;\n for (const value of mv) {\n const option = currentOptions.find(opt => opt.value === value);\n if (option) {\n labels.push(option.label);\n currentOptions = option.children || [];\n } else {\n break;\n }\n }\n this.inputValue = labels.join(this.separator);\n }\n\n private findOptionByValue(options: CascaderOption[], value: string | number): CascaderOption | null {\n for (const option of options) {\n if (option.value === value) return option;\n if (option.children) {\n const found = this.findOptionByValue(option.children, value);\n if (found) return found;\n }\n }\n return null;\n }\n\n // ===== 多选(multiple)核心算法 =====\n\n /** 取多选 modelValue 为二维数组(非多选模式或形状不符时返回 []) */\n private getMultiModel(): ValuePath[] {\n if (!this.multiple) return [];\n const mv = this.modelValue as ValuePath[] | undefined;\n if (Array.isArray(mv) && mv.length > 0 && Array.isArray(mv[0])) return mv;\n return [];\n }\n\n /**\n * 多选 modelValue 的字符串键集合(P2 优化)。\n * 缓存:仅当 modelValue 引用变化时重算。check-state 查询从 O(model×pathLen)\n * 降为 O(1) Set.has。key 用 \\u0000 连接 path 各段,避免与合法分隔符冲突。\n */\n private _modelKeySet: Set<string> | null = null;\n private _modelKeySetRef: unknown = null;\n private getModelKeySet(): Set<string> {\n if (this._modelKeySet && this._modelKeySetRef === this.modelValue) {\n return this._modelKeySet;\n }\n const set = new Set<string>();\n for (const p of this.getMultiModel()) {\n set.add(p.join('\\u0000'));\n }\n this._modelKeySet = set;\n this._modelKeySetRef = this.modelValue;\n return set;\n }\n\n /** path 是否在当前 model 集合中(O(1)) */\n private pathInModel(path: ValuePath): boolean {\n return this.getModelKeySet().has(path.join('\\u0000'));\n }\n\n /** 两条 value 路径是否完全相等 */\n private pathEquals(a: ValuePath | undefined, b: ValuePath): boolean {\n if (!a || a.length !== b.length) return false;\n return a.every((v, i) => v === b[i]);\n }\n\n /** 收集某节点子树下的全部叶子 value 路径(用于父子联动计算) */\n private collectLeafValuePaths(option: CascaderOption, basePath: ValuePath): ValuePath[] {\n const currentPath = [...basePath, option.value];\n const hasChildren = option.children && option.children.length > 0;\n if (!hasChildren || option.leaf) return [currentPath];\n const result: ValuePath[] = [];\n for (const child of option.children!) {\n result.push(...this.collectLeafValuePaths(child, currentPath));\n }\n return result;\n }\n\n /**\n * 多选模式下某节点的勾选三态。\n * checkStrictly:该节点路径是否在 modelValue(checked / unchecked)。\n * 默认:按叶子计算 —— 全部叶子入选=checked,部分=indeterminate,无=unchecked。\n */\n private getCheckState(option: CascaderOption, path: ValuePath): 'checked' | 'indeterminate' | 'unchecked' {\n const valuePath = [...path, option.value];\n if (this.checkStrictly) {\n // P2:O(1) Set 查询替代 O(model) 的 some(pathEquals)\n return this.pathInModel(valuePath) ? 'checked' : 'unchecked';\n }\n const leafPaths = this.collectLeafValuePaths(option, path);\n // P2:用 pathInModel(Set.has)替代 model.some(pathEquals),整段从 O(leaves×model) 降为 O(leaves)\n if (leafPaths.every(lp => this.pathInModel(lp))) return 'checked';\n if (leafPaths.some(lp => this.pathInModel(lp))) return 'indeterminate';\n return 'unchecked';\n }\n\n /** 多选:toggle 某节点勾选(按 checkStrictly 决定是否联动叶子) */\n private handleCheck(option: CascaderOption, path: ValuePath) {\n let model = this.getMultiModel().map(p => [...p]);\n const valuePath = [...path, option.value];\n if (this.checkStrictly) {\n const idx = model.findIndex(p => this.pathEquals(p, valuePath));\n if (idx >= 0) model.splice(idx, 1);\n else model.push(valuePath);\n } else {\n const leafPaths = this.collectLeafValuePaths(option, path);\n const allIn = leafPaths.every(lp => model.some(p => this.pathEquals(p, lp)));\n if (allIn) {\n model = model.filter(p => !leafPaths.some(lp => this.pathEquals(lp, p)));\n } else {\n for (const lp of leafPaths) {\n if (!model.some(p => this.pathEquals(p, lp))) model.push([...lp]);\n }\n }\n }\n this.modelValue = model;\n this.hbChange.emit(model);\n }\n\n /** 多选输入框 tag 数据:每条选中路径 → 展示文本 + 路径 */\n private getDisplayTags(): { label: string; path: ValuePath }[] {\n return this.getMultiModel().map(path => {\n const labels = path.map(v => {\n const opt = this.findOptionByValue(this.options, v);\n return opt ? opt.label : String(v);\n });\n const label = this.showAllLevels ? labels.join(this.separator) : labels[labels.length - 1];\n return { label, path };\n });\n }\n\n /** 多选:删除单个 tag(移除对应路径) */\n private handleTagRemove = (path: ValuePath, e: Event) => {\n e.stopPropagation();\n const model = this.getMultiModel().filter(p => !this.pathEquals(p, path));\n this.modelValue = model;\n this.hbChange.emit(model);\n };\n\n private hasValue(): boolean {\n return this.multiple ? this.getMultiModel().length > 0 : !!this.modelValue && (this.modelValue as ValuePath).length > 0;\n }\n\n // ===== 交互 =====\n\n private handleInputClick = () => {\n if (this.disabled) return;\n if (this.isOpen) {\n this.closeAndClearSearch();\n } else {\n this.isOpen = true;\n }\n };\n\n /**\n * 键盘交互(对齐 antd / WAI-ARIA combobox):\n * Enter/Space/ArrowDown 在关闭时打开;Escape 关闭;ArrowRight/ArrowLeft 跨级导航。\n */\n private handleKeyDown = (e: KeyboardEvent) => {\n if (this.disabled) return;\n const key = e.key;\n if (!this.isOpen) {\n if (key === 'Enter' || key === ' ' || key === 'ArrowDown') {\n e.preventDefault();\n this.isOpen = true;\n }\n return;\n }\n if (key === 'Escape') {\n e.preventDefault();\n this.closeAndClearSearch();\n } else if (key === 'Enter' && this.activePath.length > 0 && !this.multiple) {\n // 选中当前路径末端叶子(若已是叶子)\n e.preventDefault();\n const lastValue = this.activePath[this.activePath.length - 1];\n const parentPath = this.activePath.slice(0, -1);\n this.handleSelect(lastValue, parentPath);\n }\n };\n\n private handleSearchInput = (e: Event) => {\n const target = e.target as HTMLInputElement;\n this.searchValue = target.value;\n // P4:清空时立即返回空;非空时同步过滤但结果数封顶(MAX_FILTER_RESULTS),\n // 避免超大树返回上万条结果拖垮渲染。封顶比防抖更稳妥(不引入定时器与测试复杂性)。\n this.filteredPaths = this.collectFilteredPaths(this.searchValue);\n };\n\n private collectFilteredPaths(keyword: string): CascaderOption[][] {\n const trimmed = keyword.trim().toLowerCase();\n if (!trimmed) return [];\n const results: CascaderOption[][] = [];\n const max = Cascader.MAX_FILTER_RESULTS;\n const walk = (opts: CascaderOption[], ancestors: CascaderOption[]) => {\n // P4:达到上限即停止递归,避免超大树返回过多结果\n if (results.length >= max) return;\n for (const opt of opts) {\n if (results.length >= max) return;\n const currentPath = [...ancestors, opt];\n if (opt.label.toLowerCase().includes(trimmed)) results.push(currentPath);\n if (opt.children && opt.children.length > 0) walk(opt.children, currentPath);\n }\n };\n walk(this.options, []);\n return results;\n }\n\n /** 搜索结果点击:单选选中(叶子或 checkStrictly 任意层),多选 toggle 该路径 */\n private handleSearchSelect = (path: CascaderOption[]) => {\n const valuePath = path.map(opt => opt.value);\n if (this.multiple) {\n let model = this.getMultiModel().map(p => [...p]);\n const idx = model.findIndex(p => this.pathEquals(p, valuePath));\n if (idx >= 0) model.splice(idx, 1);\n else model.push(valuePath);\n this.modelValue = model;\n this.hbChange.emit(model);\n this.searchValue = '';\n this.filteredPaths = [];\n return;\n }\n const last = path[path.length - 1];\n const isLeaf = !last.children || last.children.length === 0 || last.leaf;\n this.searchValue = '';\n this.filteredPaths = [];\n if (isLeaf || this.checkStrictly) {\n this.modelValue = valuePath;\n this.updateInputValue();\n this.hbChange.emit(valuePath);\n this.isOpen = false;\n this.activePath = [];\n } else {\n this.activePath = valuePath;\n this.hbExpandChange.emit(valuePath);\n }\n };\n\n private handleClear = (e: Event) => {\n e.stopPropagation();\n if (this.multiple) {\n this.modelValue = [];\n this.hbChange.emit([]);\n } else {\n this.modelValue = undefined;\n this.inputValue = '';\n this.hbChange.emit(undefined);\n }\n this.isOpen = false;\n };\n\n /** 菜单项点击(label 区):多选→叶子 toggle/非叶子展开;单选→handleSelect */\n private handleItemClick = (option: CascaderOption, path: ValuePath) => {\n if (this.multiple) {\n const isLeaf = !option.children || option.children.length === 0 || option.leaf;\n if (isLeaf) {\n this.handleCheck(option, path);\n } else {\n const newPath = [...path, option.value];\n this.activePath = newPath;\n this.hbExpandChange.emit(newPath);\n }\n return;\n }\n this.handleSelect(option.value, path);\n };\n\n /** 单选:选中(叶子或 checkStrictly 任意层)或展开 / lazy 加载 */\n private handleSelect(value: string | number, path: ValuePath) {\n const newPath = [...path, value];\n let currentOptions = this.options;\n let selectedOption: CascaderOption | null = null;\n for (const pathValue of newPath) {\n selectedOption = currentOptions.find(opt => opt.value === pathValue) || null;\n if (!selectedOption) break;\n currentOptions = selectedOption.children || [];\n }\n\n // lazy + load:children 未加载 → 触发加载\n if (this.lazy && this.load && selectedOption && selectedOption.children === undefined && !selectedOption.leaf) {\n this.activePath = newPath;\n this.hbExpandChange.emit(newPath);\n void this.loadChildren(selectedOption, newPath);\n return;\n }\n\n const isLeaf = !selectedOption || !selectedOption.children || selectedOption.children.length === 0 || selectedOption.leaf;\n\n // checkStrictly 或叶子 → 选中并关闭\n if (this.checkStrictly || isLeaf) {\n this.modelValue = newPath;\n this.updateInputValue();\n this.hbChange.emit(newPath);\n this.isOpen = false;\n this.activePath = [];\n } else {\n // 非叶子 → 展开\n this.activePath = newPath;\n this.hbExpandChange.emit(newPath);\n }\n }\n\n private async loadChildren(node: CascaderOption, path: ValuePath) {\n if (!this.load) return;\n this.loadingKeys = new Set([...this.loadingKeys, node.value]);\n try {\n const children = await this.load(node);\n this.options = this.replaceOptionChildren(this.options, node.value, children);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('[hb-cascader] lazy load failed:', err);\n this.activePath = this.activePath.slice(0, this.activePath.indexOf(node.value) + 1);\n } finally {\n const next = new Set(this.loadingKeys);\n next.delete(node.value);\n this.loadingKeys = next;\n }\n void path;\n void node;\n }\n\n private replaceOptionChildren(options: CascaderOption[], targetValue: string | number, newChildren: CascaderOption[]): CascaderOption[] {\n return options.map(opt => {\n if (opt.value === targetValue) return { ...opt, children: newChildren };\n if (opt.children && opt.children.length > 0) {\n return { ...opt, children: this.replaceOptionChildren(opt.children, targetValue, newChildren) };\n }\n return opt;\n });\n }\n\n // ===== render =====\n\n render() {\n // P3:getDisplayTags() 涉及全树递归,单次 render 仅算一次,避免 3 次重复递归。\n const displayTags = this.multiple ? this.getDisplayTags() : [];\n const visibleTags = this.maxTagCount === undefined ? displayTags : displayTags.slice(0, this.maxTagCount);\n const overflowCount = this.maxTagCount !== undefined ? Math.max(0, displayTags.length - this.maxTagCount) : 0;\n return (\n <div\n class={{\n 'hb-cascader': true,\n 'hb-cascader--open': this.isOpen,\n 'hb-cascader--disabled': this.disabled,\n 'hb-cascader--multiple': this.multiple,\n [`hb-cascader--${this.size}`]: true,\n }}\n >\n <div class=\"hb-cascader__input-wrapper\" onClick={this.handleInputClick}>\n {this.multiple &&\n visibleTags.map(tag => (\n <span class=\"hb-cascader__tag\">\n <span class=\"hb-cascader__tag-label\">{tag.label}</span>\n {!this.disabled && (\n <span\n class=\"hb-cascader__tag-close\"\n role=\"button\"\n aria-label=\"删除\"\n tabindex={0}\n onClick={e => this.handleTagRemove(tag.path, e)}\n onKeyDown={e => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n this.handleTagRemove(tag.path, e);\n }\n }}\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 )}\n </span>\n ))}\n {this.multiple && overflowCount > 0 && <span class=\"hb-cascader__tag-overflow\">+{overflowCount}</span>}\n <input\n type=\"text\"\n id={this.inputId}\n name={this.name}\n class=\"hb-cascader__input\"\n placeholder={this.hasValue() ? '' : this.placeholder}\n value={this.multiple ? '' : this.inputValue}\n disabled={this.disabled}\n readonly\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={this.isOpen ? 'true' : 'false'}\n onKeyDown={this.handleKeyDown}\n />\n <span class=\"hb-cascader__suffix\">\n {this.clearable && this.hasValue() && (\n <span\n class=\"hb-cascader__clear\"\n role=\"button\"\n aria-label=\"清空\"\n tabindex={0}\n onClick={this.handleClear}\n onKeyDown={e => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n this.handleClear(e);\n }\n }}\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 )}\n <span class=\"hb-cascader__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-cascader__dropdown\">\n {this.filterable && (\n <div class=\"hb-cascader__search\">\n <input type=\"text\" class=\"hb-cascader__search-input\" placeholder=\"搜索\" value={this.searchValue} onInput={this.handleSearchInput} aria-label=\"搜索选项\" />\n </div>\n )}\n {this.filterable && this.searchValue.trim() !== '' ? (\n this.renderSearchResults()\n ) : (\n <div class=\"hb-cascader__menus\" role=\"listbox\" aria-multiselectable={this.multiple ? 'true' : 'false'}>\n {this.renderCascaderMenus()}\n </div>\n )}\n </div>\n )}\n </div>\n );\n }\n\n private renderCascaderMenus() {\n const menus: any[] = [];\n let currentOptions = this.options;\n let currentPath: ValuePath = [];\n\n menus.push(this.renderMenu(currentOptions, currentPath));\n\n for (let i = 0; i < this.activePath.length; i++) {\n const pathValue = this.activePath[i];\n const option = currentOptions.find(opt => opt.value === pathValue);\n if (!option) break;\n\n if (option.children === undefined && this.loadingKeys.has(option.value)) {\n menus.push(this.renderLoadingMenu());\n break;\n }\n\n if (option.children && option.children.length > 0) {\n currentPath = [...currentPath, pathValue];\n currentOptions = option.children;\n menus.push(this.renderMenu(currentOptions, currentPath));\n } else {\n break;\n }\n }\n return menus;\n }\n\n private renderLoadingMenu() {\n return (\n <ul class=\"hb-cascader__menu-list hb-cascader__menu-list--loading\" role=\"status\" aria-live=\"polite\">\n <li class=\"hb-cascader__menu-item hb-cascader__menu-item--loading\">\n <span class=\"hb-cascader__menu-item-label\">加载中…</span>\n </li>\n </ul>\n );\n }\n\n private renderSearchResults() {\n if (this.filteredPaths.length === 0) {\n return (\n <div class=\"hb-cascader__search-empty\" role=\"status\">\n 无匹配数据\n </div>\n );\n }\n return (\n <div class=\"hb-cascader__search-results\" role=\"listbox\" aria-label=\"搜索结果\">\n {this.filteredPaths.map(path => {\n const labelPath = path.map(opt => opt.label).join(this.separator);\n const valuePath = path.map(opt => opt.value);\n const last = path[path.length - 1];\n const disabled = !!last.disabled;\n const selected = this.multiple\n ? this.getMultiModel().some(p => this.pathEquals(p, valuePath))\n : !!this.modelValue && this.pathEquals(this.modelValue as ValuePath, valuePath);\n\n return (\n <div\n class={{\n 'hb-cascader__search-item': true,\n 'hb-cascader__search-item--selected': selected,\n 'hb-cascader__search-item--disabled': disabled,\n }}\n role=\"option\"\n aria-selected={selected ? 'true' : 'false'}\n aria-disabled={disabled ? 'true' : undefined}\n onClick={() => !disabled && this.handleSearchSelect(path)}\n >\n {this.multiple && (\n <span class=\"hb-cascader__menu-item-checkbox\" data-state={selected ? 'checked' : 'unchecked'} role=\"checkbox\" aria-checked={selected ? 'true' : 'false'} />\n )}\n {labelPath}\n </div>\n );\n })}\n </div>\n );\n }\n\n private renderMenu(options: CascaderOption[], path: ValuePath) {\n if (!options || options.length === 0) return null;\n return (\n <ul class=\"hb-cascader__menu-list\" role=\"group\">\n {options.map(option => {\n const checkState = this.getCheckState(option, path);\n // 单选高亮:路径在当前 modelValue 上\n const isSelected =\n !this.multiple &&\n path.length > 0 &&\n !!this.modelValue &&\n path.every((val, idx) => (this.modelValue as ValuePath)[idx] === val) &&\n (this.modelValue as ValuePath).length === path.length + 1 &&\n (this.modelValue as ValuePath)[path.length] === option.value;\n const showArrow = this.loadingKeys.has(option.value)\n ? false\n : (option.children && option.children.length > 0) || (this.lazy && option.children === undefined && !option.leaf);\n\n return (\n <li\n class={{\n 'hb-cascader__menu-item': true,\n 'hb-cascader__menu-item--selected': isSelected,\n 'hb-cascader__menu-item--disabled': option.disabled,\n }}\n role=\"option\"\n aria-selected={isSelected ? 'true' : 'false'}\n aria-disabled={option.disabled ? 'true' : undefined}\n onClick={() => !option.disabled && this.handleItemClick(option, path)}\n >\n {this.multiple && (\n <span\n class={{\n 'hb-cascader__menu-item-checkbox': true,\n 'hb-cascader__menu-item-checkbox--checked': checkState === 'checked',\n 'hb-cascader__menu-item-checkbox--indeterminate': checkState === 'indeterminate',\n }}\n data-state={checkState}\n role=\"checkbox\"\n aria-checked={checkState === 'indeterminate' ? 'mixed' : checkState === 'checked' ? 'true' : 'false'}\n onClick={e => {\n e.stopPropagation();\n if (!option.disabled) this.handleCheck(option, path);\n }}\n />\n )}\n <span class=\"hb-cascader__menu-item-label\">{option.label}</span>\n {this.loadingKeys.has(option.value) ? (\n <span class=\"hb-cascader__menu-item-loading\" aria-hidden=\"true\">\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width={2}\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"hb-cascader__menu-item-loading-svg\"\n >\n <path d=\"M12 5V2L8 6l4 4V7a5 5 0 1 1-5 5H5a7 7 0 1 0 7-7z\" />\n </svg>\n </span>\n ) : showArrow ? (\n <span class=\"hb-cascader__menu-item-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=\"M9 6l6 6-6 6\" />\n </svg>\n </span>\n ) : null}\n </li>\n );\n })}\n </ul>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as e,c as t,g as r,h as i}from"./p-e42dfa95.js";import{c as o}from"./p-4ef5a884.js";import{a as s}from"./p-00aa34c8.js";const n='/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}::file-selector-button{appearance:button;background-color:#0000;border:0 solid;border-radius:0;box-sizing:border-box;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;margin:0;margin-inline-end:4px;opacity:1;padding:0}:host,html{-webkit-text-size-adjust:100%;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);line-height:1.5;tab-size:4;-webkit-tap-highlight-color:transparent}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-size:1em;font-variation-settings:var(--default-mono-font-variation-settings,normal)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}button,input,optgroup,select,textarea{background-color:#0000;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex;padding-block:0}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}} /*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer components;:host{display:block}.hb-tree-select{box-sizing:border-box;color:var(--hb-color-text);font-size:var(--hb-font-size-base);position:relative;width:100%}.hb-tree-select__input-wrapper{align-items:center;background-color:var(--hb-color-bg-container);border:1px solid var(--hb-input-border-color,var(--hb-color-border));border-radius:var(--hb-input-radius,var(--hb-border-radius-sm));box-sizing:border-box;cursor:pointer;display:flex;height:var(--hb-size-default,32px);padding:0 var(--hb-spacing-sm);transition:border-color var(--hb-transition-duration,.2s)}.hb-tree-select__input-wrapper:hover{border-color:var(--hb-input-hover-border-color,var(--hb-color-primary))}.hb-tree-select--open .hb-tree-select__input-wrapper{border-color:var(--hb-input-focus-border-color,var(--hb-color-primary))}.hb-tree-select--disabled .hb-tree-select__input-wrapper{background-color:var(--hb-color-fill-tertiary);cursor:not-allowed;opacity:.6}.hb-tree-select__display{flex:1;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;user-select:none;white-space:nowrap}.hb-tree-select__display--placeholder{color:var(--hb-input-placeholder-color,var(--hb-color-text-placeholder))}.hb-tree-select__suffix{gap:var(--hb-spacing-xxs)}.hb-tree-select__clear,.hb-tree-select__suffix{align-items:center;color:var(--hb-color-text-tertiary);display:inline-flex}.hb-tree-select__clear{background-color:var(--hb-color-fill);border-radius:50%;cursor:pointer;height:16px;justify-content:center;width:16px}.hb-tree-select__clear svg{height:10px;width:10px}.hb-tree-select__clear:hover{color:var(--hb-color-text-secondary)}.hb-tree-select__arrow-icon{align-items:center;color:var(--hb-color-text-tertiary);display:inline-flex;height:12px;transition:transform var(--hb-transition-duration,.2s);width:12px}.hb-tree-select__arrow-icon svg{height:100%;width:100%}.hb-tree-select__arrow-icon--open{transform:rotate(180deg)}.hb-tree-select__dropdown{background-color:var(--hb-color-bg-elevated);border:1px solid var(--hb-color-border-secondary);border-radius:var(--hb-border-radius-sm);box-shadow:0 6px 16px #00000014;box-sizing:border-box;left:0;max-height:280px;overflow-y:auto;padding:var(--hb-spacing-xxs);position:absolute;top:calc(100% + 4px);width:100%;z-index:1050}.hb-tree-select__empty{color:var(--hb-color-text-tertiary);font-size:var(--hb-font-size-sm);padding:var(--hb-spacing-md);text-align:center}.hb-tree-select__children,.hb-tree-select__tree{list-style:none;margin:0;padding:0}.hb-tree-select__node{list-style:none;white-space:nowrap}.hb-tree-select__node-content{align-items:center;border-radius:var(--hb-border-radius-sm);box-sizing:border-box;cursor:pointer;display:flex;gap:var(--hb-spacing-xxs);height:28px;padding-right:var(--hb-spacing-xs);transition:background-color var(--hb-transition-duration,.2s)}.hb-tree-select__node-content:hover{background-color:var(--hb-color-fill-tertiary)}.hb-tree-select__node-content--selected{color:var(--hb-color-primary);font-weight:500}.hb-tree-select__node-content--checked,.hb-tree-select__node-content--selected{background-color:var(--hb-color-primary-bg)}.hb-tree-select__node--disabled>.hb-tree-select__node-content{cursor:not-allowed;opacity:.5}.hb-tree-select__node--disabled>.hb-tree-select__node-content:hover{background-color:#0000}.hb-tree-select__switcher{flex-shrink:0;height:18px;width:18px}.hb-tree-select__arrow,.hb-tree-select__switcher{align-items:center;color:var(--hb-color-text-tertiary);display:inline-flex;justify-content:center}.hb-tree-select__arrow{height:12px;transition:transform var(--hb-transition-duration,.2s);width:12px}.hb-tree-select__arrow svg{height:100%;width:100%}.hb-tree-select__arrow--expanded{transform:rotate(90deg)}.hb-tree-select__checkbox{align-items:center;background-color:var(--hb-color-bg-container);border:1px solid var(--hb-color-border);border-radius:var(--hb-border-radius-xs,2px);color:#fff;display:inline-flex;flex-shrink:0;height:16px;justify-content:center;transition:all var(--hb-transition-duration,.2s);width:16px}.hb-tree-select__checkbox svg{height:12px;width:12px}.hb-tree-select__checkbox-dash{background-color:#fff;border-radius:1px;display:block;height:2px;width:10px}.hb-tree-select__checkbox:hover:not(.hb-tree-select__checkbox--disabled){border-color:var(--hb-color-primary)}.hb-tree-select__checkbox--checked,.hb-tree-select__checkbox--indeterminate{background-color:var(--hb-color-primary);border-color:var(--hb-color-primary)}.hb-tree-select__checkbox--disabled{cursor:not-allowed}.hb-tree-select__title{flex:1;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;user-select:none}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}';const a=n;const l=class{constructor(r){e(this,r);this.hbChange=t(this,"hbChange",7);this.hbVisibleChange=t(this,"hbVisibleChange",7)}get el(){return r(this)}data=[];modelValue="";multiple=false;placeholder="请选择";disabled=false;checkable=false;defaultExpandAll=false;isOpen=false;internalExpanded=[];internalSelected=[];internalChecked=[];focusKey=null;hbChange;hbVisibleChange;clickOutside=o({host:null,isOpen:()=>this.isOpen,onClose:()=>this.closeDropdown()});componentWillLoad(){this.syncFromModelValue();if(this.defaultExpandAll){const e=[];this.collectExpandableKeys(this.data,e);this.internalExpanded=e}}handleModelValueChange(){this.syncFromModelValue()}componentDidLoad(){this.clickOutside=o({host:this.el,isOpen:()=>this.isOpen,onClose:()=>this.closeDropdown()});this.clickOutside.connect()}disconnectedCallback(){this.clickOutside.disconnect()}syncFromModelValue(){if(this.multiple){const e=Array.isArray(this.modelValue)?this.modelValue:[];this.internalSelected=[...e];this.internalChecked=[...e]}else{const e=typeof this.modelValue==="string"?this.modelValue:"";this.internalSelected=e?[e]:[];this.internalChecked=e?[e]:[]}}getFlattenedVisibleNodes(){const e=[];const t=(r,i,o)=>{for(const s of r){e.push({node:s,level:i,parentKey:o});if(s.children&&s.children.length>0&&this.internalExpanded.includes(s.key)){t(s.children,i+1,s.key)}}};t(this.data,0,null);return e}handleTreeKeydown=e=>{const t=this.getFlattenedVisibleNodes();if(t.length===0)return;let r=this.focusKey;if(!r&&this.internalSelected.length>0)r=this.internalSelected[this.internalSelected.length-1];let i=r?t.findIndex((e=>e.node.key===r)):-1;if(i<0||t[i].node.disabled){i=t.findIndex((e=>!e.node.disabled));if(i<0)return}const o=t.map(((e,t)=>({x:e,i:t}))).filter((e=>!e.x.node.disabled)).map((e=>e.i));const s=o.indexOf(i);const n=t[i];const a=!(n.node.children&&n.node.children.length>0);const l=!a&&this.internalExpanded.includes(n.node.key);switch(e.key){case"ArrowDown":{e.preventDefault();this.focusKey=t[o[(s+1)%o.length]].node.key;break}case"ArrowUp":{e.preventDefault();const r=o.length;this.focusKey=t[o[(s-1+r)%r]].node.key;break}case"ArrowRight":{e.preventDefault();if(a)return;if(!l){this.handleToggleExpand(n.node,{stopPropagation:()=>{}})}else{const e=t.findIndex(((e,t)=>t>i&&e.parentKey===n.node.key&&!e.node.disabled));if(e>=0)this.focusKey=t[e].node.key}break}case"ArrowLeft":{e.preventDefault();if(!a&&l){this.handleToggleExpand(n.node,{stopPropagation:()=>{}})}else if(n.parentKey&&!t.find((e=>e.node.key===n.parentKey)).node.disabled){this.focusKey=n.parentKey}break}case"Home":e.preventDefault();this.focusKey=t[o[0]].node.key;break;case"End":e.preventDefault();this.focusKey=t[o[o.length-1]].node.key;break;case"Enter":case" ":case"Spacebar":{e.preventDefault();if(this.checkable)this.handleNodeCheck(n.node);else this.handleNodeSelect(n.node.key);break}default:return}};collectExpandableKeys(e,t){for(const r of e){if(r.children&&r.children.length>0){t.push(r.key);this.collectExpandableKeys(r.children,t)}}}findTitle(e,t){for(const r of e){if(r.key===t)return r.title;if(r.children){const e=this.findTitle(r.children,t);if(e)return e}}return null}getDisplayText(){if(this.multiple){const e=Array.isArray(this.modelValue)?this.modelValue:[];if(e.length===0)return"";const t=e.map((e=>this.findTitle(this.data,e)||e));return t.join(" / ")}const e=typeof this.modelValue==="string"?this.modelValue:"";return e?this.findTitle(this.data,e)||e:""}openDropdown=()=>{if(this.disabled||this.isOpen)return;this.isOpen=true;this.hbVisibleChange.emit(true)};closeDropdown=()=>{if(!this.isOpen)return;this.isOpen=false;this.hbVisibleChange.emit(false)};toggleDropdown=()=>{if(this.disabled)return;if(this.isOpen)this.closeDropdown();else this.openDropdown()};handleNodeSelect=e=>{if(this.multiple){const t=[...this.internalSelected];const r=t.indexOf(e);if(r>=0)t.splice(r,1);else t.push(e);this.internalSelected=t;this.modelValue=t;this.hbChange.emit(t)}else{this.internalSelected=[e];this.modelValue=e;this.hbChange.emit(e);this.closeDropdown()}};handleNodeCheck=e=>{const t=new Set(this.internalChecked);const r=t.has(e.key);if(r){this.removeDescendantKeys(e,t);t.delete(e.key)}else{t.add(e.key);this.collectCheckableDescendantKeys(e,t)}this.reconcileAncestors(e,t);const i=Array.from(t);this.internalChecked=i;this.modelValue=i;this.hbChange.emit(i)};removeDescendantKeys(e,t){if(!e.children)return;for(const r of e.children){t.delete(r.key);this.removeDescendantKeys(r,t)}}collectCheckableDescendantKeys(e,t){if(!e.children)return;for(const r of e.children){if(!r.disabled)t.add(r.key);this.collectCheckableDescendantKeys(r,t)}}reconcileAncestors(e,t){const r=this.findAncestors(this.data,e.key,[]);for(const e of r){if(e.disabled||!e.children||e.children.length===0)continue;const r=e.children.filter((e=>!e.disabled));if(r.length===0)continue;if(r.every((e=>t.has(e.key))))t.add(e.key);else t.delete(e.key)}}findAncestors(e,t,r){for(const i of e){if(i.key===t)return r;if(i.children&&i.children.length>0){const e=this.findAncestors(i.children,t,[i,...r]);if(e)return e}}return null}computeIndeterminateKeys(){const e=new Set;const t=new Set(this.internalChecked);const r=i=>{if(!i.children||i.children.length===0)return false;let o=false;for(const e of i.children){if(r(e))o=true;if(t.has(e.key))o=true}if(o&&!t.has(i.key))e.add(i.key);return o};for(const e of this.data)r(e);return e}handleToggleExpand=(e,t)=>{t.stopPropagation();const r=[...this.internalExpanded];const i=r.indexOf(e.key);if(i>=0)r.splice(i,1);else r.push(e.key);this.internalExpanded=r};handleClear=e=>{e.stopPropagation();if(this.disabled)return;this.internalSelected=[];this.internalChecked=[];this.modelValue=this.multiple?[]:"";this.hbChange.emit(this.modelValue)};renderNode=(e,t,r)=>{const o=!!(e.children&&e.children.length>0);const s=this.internalExpanded.includes(e.key);const n=this.internalSelected.includes(e.key);const a=this.internalChecked.includes(e.key);const l=r.has(e.key);const c=!!e.disabled;const h=this.internalSelected.length>0?this.internalSelected[this.internalSelected.length-1]:null;const d=this.focusKey??h;const b=d===e.key;return i("li",{class:{"hb-tree-select__node":true,"hb-tree-select__node--disabled":c},"data-tree-key":e.key,role:"treeitem","aria-level":t+1,"aria-expanded":o?String(s):undefined,"aria-selected":n?"true":"false","aria-disabled":c?"true":undefined,tabindex:b?0:-1},i("div",{class:{"hb-tree-select__node-content":true,"hb-tree-select__node-content--selected":n,"hb-tree-select__node-content--checked":a},style:{paddingLeft:`${t*18+8}px`}},i("span",{class:"hb-tree-select__switcher",onClick:t=>o&&this.handleToggleExpand(e,t)},o?i("span",{class:{"hb-tree-select__arrow":true,"hb-tree-select__arrow--expanded":s},"aria-hidden":"true"},i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"},i("path",{d:"M9 6l6 6-6 6"}))):null),this.checkable&&i("span",{class:{"hb-tree-select__checkbox":true,"hb-tree-select__checkbox--checked":a,"hb-tree-select__checkbox--indeterminate":l,"hb-tree-select__checkbox--disabled":c},role:"checkbox","aria-checked":l?"mixed":a?"true":"false",onClick:()=>!c&&this.handleNodeCheck(e)},a?i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":3,"stroke-linecap":"round","stroke-linejoin":"round"},i("path",{d:"M5 12l5 5L20 7"})):l?i("span",{class:"hb-tree-select__checkbox-dash"}):null),i("span",{class:"hb-tree-select__title",onClick:()=>!c&&this.handleNodeSelect(e.key)},e.title)),o&&s&&i("ul",{class:"hb-tree-select__children",role:"group"},e.children.map((e=>this.renderNode(e,t+1,r)))))};render(){const e=this.getDisplayText();const t=this.multiple?Array.isArray(this.modelValue)&&this.modelValue.length>0:typeof this.modelValue==="string"&&this.modelValue!=="";const r=this.checkable?this.computeIndeterminateKeys():new Set;return i("div",{key:"46d75f2c1014766b178e35a6f1684ea311f080df",class:{"hb-tree-select":true,"hb-tree-select--open":this.isOpen,"hb-tree-select--disabled":this.disabled,"hb-tree-select--multiple":this.multiple}},i("div",{key:"9921be6e6ce72570f8b3b9fcd5921219ec8c77e7",class:"hb-tree-select__input-wrapper",onClick:this.toggleDropdown},i("span",{key:"503b5691f216ae8bba1bff142ad0c0d62a28c19c",class:{"hb-tree-select__display":true,"hb-tree-select__display--placeholder":!t}},t?e:this.placeholder),i("span",{key:"dd879d7ab4bc3cdff8fda6e5555e445fd2353b08",class:"hb-tree-select__suffix"},t&&i("span",{key:"7891ba744427d27eebdf077eca94555e6252b79d",class:"hb-tree-select__clear",onClick:this.handleClear,role:"button","aria-label":"清空",tabIndex:0,onKeyDown:s},i("svg",{key:"39de157416b682136d7fd17f034af52467812086",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"},i("path",{key:"06556664f1fdd4f2e497abb4ffd3fe4b478ee2db",d:"M6 6l12 12M18 6L6 18"}))),i("span",{key:"2f3ad915c327519223f73fed8e4fe51b291a2647",class:{"hb-tree-select__arrow-icon":true,"hb-tree-select__arrow-icon--open":this.isOpen},"aria-hidden":"true"},i("svg",{key:"bed9693364d571477d6540250e3c93a4bfcea2cd",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"},i("path",{key:"830a03a1f977a0a577e03728c471dd8d2cd85c6d",d:"M6 9l6 6 6-6"}))))),this.isOpen&&i("div",{key:"25754f9eeaea710c0f7facc4d57213db0e0755d3",class:"hb-tree-select__dropdown"},this.data.length===0?i("div",{class:"hb-tree-select__empty"},"暂无数据"):i("ul",{class:"hb-tree-select__tree",role:"tree",tabindex:-1,onKeyDown:this.handleTreeKeydown},this.data.map((e=>this.renderNode(e,0,r))))))}static get watchers(){return{modelValue:["handleModelValueChange"]}}};l.style=a;export{l as hb_tree_select};
|
|
2
|
+
//# sourceMappingURL=p-b8c83751.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["treeSelectCss","HbTreeSelectStyle0","TreeSelect","data","modelValue","multiple","placeholder","disabled","checkable","defaultExpandAll","isOpen","internalExpanded","internalSelected","internalChecked","focusKey","hbChange","hbVisibleChange","clickOutside","createClickOutsideHandler","host","this","onClose","closeDropdown","componentWillLoad","syncFromModelValue","all","collectExpandableKeys","handleModelValueChange","componentDidLoad","el","connect","disconnectedCallback","disconnect","arr","Array","isArray","single","getFlattenedVisibleNodes","out","walk","nodes","level","parentKey","node","push","children","length","includes","key","handleTreeKeydown","e","flat","focusIdx","findIndex","x","enabledFlatIndices","map","i","filter","o","posInEnabled","indexOf","current","isLeaf","expanded","preventDefault","n","handleToggleExpand","stopPropagation","firstChildIdx","find","handleNodeCheck","handleNodeSelect","findTitle","title","found","getDisplayText","titles","k","join","openDropdown","emit","toggleDropdown","idx","splice","next","Set","wasChecked","has","removeDescendantKeys","delete","add","collectCheckableDescendantKeys","reconcileAncestors","result","from","child","parents","findAncestors","parent","c","every","acc","computeIndeterminateKeys","checked","hasChecked","root","handleClear","renderNode","indeterminateKeys","hasChildren","selected","indeterminate","fallbackFocus","effectiveFocus","isFocused","h","class","role","String","undefined","tabindex","style","paddingLeft","onClick","viewBox","fill","stroke","d","render","displayText","hasValue","tabIndex","onKeyDown","activationClickHandler"],"sources":["src/components/TreeSelect/tree-select.css?tag=hb-tree-select&encapsulation=shadow","src/components/TreeSelect/TreeSelect.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.hb-tree-select {\n position: relative;\n width: 100%;\n font-size: var(--hb-font-size-base);\n color: var(--hb-color-text);\n box-sizing: border-box;\n}\n\n.hb-tree-select__input-wrapper {\n display: flex;\n align-items: center;\n height: var(--hb-size-default, 32px);\n padding: 0 var(--hb-spacing-sm);\n border: 1px solid var(--hb-input-border-color, var(--hb-color-border));\n border-radius: var(--hb-input-radius, var(--hb-border-radius-sm));\n background-color: var(--hb-color-bg-container);\n cursor: pointer;\n transition: border-color var(--hb-transition-duration, 0.2s);\n box-sizing: border-box;\n}\n\n.hb-tree-select__input-wrapper:hover {\n border-color: var(--hb-input-hover-border-color, var(--hb-color-primary));\n}\n\n.hb-tree-select--open .hb-tree-select__input-wrapper {\n border-color: var(--hb-input-focus-border-color, var(--hb-color-primary));\n}\n\n.hb-tree-select--disabled .hb-tree-select__input-wrapper {\n background-color: var(--hb-color-fill-tertiary);\n cursor: not-allowed;\n opacity: 0.6;\n}\n\n.hb-tree-select__display {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n user-select: none;\n}\n\n.hb-tree-select__display--placeholder {\n color: var(--hb-input-placeholder-color, var(--hb-color-text-placeholder));\n}\n\n.hb-tree-select__suffix {\n display: inline-flex;\n align-items: center;\n gap: var(--hb-spacing-xxs);\n color: var(--hb-color-text-tertiary);\n}\n\n.hb-tree-select__clear {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n color: var(--hb-color-text-tertiary);\n background-color: var(--hb-color-fill);\n cursor: pointer;\n}\n\n.hb-tree-select__clear svg {\n width: 10px;\n height: 10px;\n}\n\n.hb-tree-select__clear:hover {\n color: var(--hb-color-text-secondary);\n}\n\n.hb-tree-select__arrow-icon {\n display: inline-flex;\n align-items: center;\n width: 12px;\n height: 12px;\n color: var(--hb-color-text-tertiary);\n transition: transform var(--hb-transition-duration, 0.2s);\n}\n\n.hb-tree-select__arrow-icon svg {\n width: 100%;\n height: 100%;\n}\n\n.hb-tree-select__arrow-icon--open {\n transform: rotate(180deg);\n}\n\n.hb-tree-select__dropdown {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n width: 100%;\n max-height: 280px;\n overflow-y: auto;\n padding: var(--hb-spacing-xxs);\n background-color: var(--hb-color-bg-elevated);\n border: 1px solid var(--hb-color-border-secondary);\n border-radius: var(--hb-border-radius-sm);\n box-shadow: 0 6px 16px rgba(0, 0, 0, 0.08);\n box-sizing: border-box;\n z-index: 1050;\n}\n\n.hb-tree-select__empty {\n padding: var(--hb-spacing-md);\n text-align: center;\n color: var(--hb-color-text-tertiary);\n font-size: var(--hb-font-size-sm);\n}\n\n.hb-tree-select__tree,\n.hb-tree-select__children {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.hb-tree-select__node {\n list-style: none;\n white-space: nowrap;\n}\n\n.hb-tree-select__node-content {\n display: flex;\n align-items: center;\n gap: var(--hb-spacing-xxs);\n height: 28px;\n padding-right: var(--hb-spacing-xs);\n border-radius: var(--hb-border-radius-sm);\n cursor: pointer;\n transition: background-color var(--hb-transition-duration, 0.2s);\n box-sizing: border-box;\n}\n\n.hb-tree-select__node-content:hover {\n background-color: var(--hb-color-fill-tertiary);\n}\n\n.hb-tree-select__node-content--selected {\n background-color: var(--hb-color-primary-bg);\n color: var(--hb-color-primary);\n font-weight: 500;\n}\n\n.hb-tree-select__node-content--checked {\n background-color: var(--hb-color-primary-bg);\n}\n\n.hb-tree-select__node--disabled > .hb-tree-select__node-content {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n.hb-tree-select__node--disabled > .hb-tree-select__node-content:hover {\n background-color: transparent;\n}\n\n.hb-tree-select__switcher {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 18px;\n flex-shrink: 0;\n color: var(--hb-color-text-tertiary);\n}\n\n.hb-tree-select__arrow {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 12px;\n height: 12px;\n color: var(--hb-color-text-tertiary);\n transition: transform var(--hb-transition-duration, 0.2s);\n}\n\n.hb-tree-select__arrow svg {\n width: 100%;\n height: 100%;\n}\n\n.hb-tree-select__arrow--expanded {\n transform: rotate(90deg);\n}\n\n.hb-tree-select__checkbox {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n border: 1px solid var(--hb-color-border);\n border-radius: var(--hb-border-radius-xs, 2px);\n background-color: var(--hb-color-bg-container);\n color: #fff;\n flex-shrink: 0;\n transition: all var(--hb-transition-duration, 0.2s);\n}\n\n.hb-tree-select__checkbox svg {\n width: 12px;\n height: 12px;\n}\n\n.hb-tree-select__checkbox-dash {\n display: block;\n width: 10px;\n height: 2px;\n background-color: #fff;\n border-radius: 1px;\n}\n\n.hb-tree-select__checkbox:hover:not(.hb-tree-select__checkbox--disabled) {\n border-color: var(--hb-color-primary);\n}\n\n.hb-tree-select__checkbox--checked,\n.hb-tree-select__checkbox--indeterminate {\n background-color: var(--hb-color-primary);\n border-color: var(--hb-color-primary);\n}\n\n.hb-tree-select__checkbox--disabled {\n cursor: not-allowed;\n}\n\n.hb-tree-select__title {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n user-select: none;\n}\n","import { Component, h, Prop, Event, EventEmitter, State, Element, Watch } from '@stencil/core';\nimport { createClickOutsideHandler } from '../../utils/click-outside';\nimport { activationClickHandler } from '../../utils/a11y';\nimport type { TreeNode } from '../Tree/Tree';\n\n/**\n * TreeSelect 树形选择器\n * 类似 Select,但下拉选项以树形结构展示,支持单选与多选\n */\n@Component({\n tag: 'hb-tree-select',\n styleUrl: 'tree-select.css',\n shadow: true,\n})\nexport class TreeSelect {\n @Element() el: HTMLElement;\n\n /**\n * 可选项数据源(与 Tree 相同的递归树结构)\n */\n @Prop() data: TreeNode[] = [];\n\n /**\n * (受控)绑定值,单选为 string,多选为 string[]\n */\n @Prop({ mutable: true }) modelValue: string | string[] = '';\n\n /**\n * 是否多选\n * @default false\n */\n @Prop() multiple: boolean = false;\n\n /**\n * 占位文本\n * @default '请选择'\n */\n @Prop() placeholder: string = '请选择';\n\n /**\n * 是否禁用\n * @default false\n */\n @Prop() disabled: boolean = false;\n\n /**\n * 是否显示 checkbox(多选模式下推荐开启)\n * @default false\n */\n @Prop() checkable: boolean = false;\n\n /**\n * 是否默认展开全部节点\n * @default false\n */\n @Prop() defaultExpandAll: boolean = false;\n\n @State() isOpen: boolean = false;\n @State() internalExpanded: string[] = [];\n @State() internalSelected: string[] = [];\n @State() internalChecked: string[] = [];\n /** 键盘焦点节点 key(A2:roving tabindex,与选中态解耦) */\n @State() focusKey: string | null = null;\n\n /**\n * 值变化事件(单选为 string,多选为 string[])\n */\n @Event() hbChange: EventEmitter<string | string[]>;\n\n /**\n * 下拉浮层显隐变化事件\n */\n @Event() hbVisibleChange: EventEmitter<boolean>;\n\n private clickOutside = createClickOutsideHandler({\n host: null as any,\n isOpen: () => this.isOpen,\n onClose: () => this.closeDropdown(),\n });\n\n componentWillLoad() {\n this.syncFromModelValue();\n if (this.defaultExpandAll) {\n const all: string[] = [];\n this.collectExpandableKeys(this.data, all);\n this.internalExpanded = all;\n }\n }\n\n /**\n * 受控同步:父组件后续修改 modelValue 时,重算 internalSelected/internalChecked。\n * 修复 B4——修复前仅 componentWillLoad 同步一次,受控改值后选中/勾选状态不更新。\n */\n @Watch('modelValue')\n handleModelValueChange() {\n this.syncFromModelValue();\n }\n\n componentDidLoad() {\n this.clickOutside = createClickOutsideHandler({\n host: this.el,\n isOpen: () => this.isOpen,\n onClose: () => this.closeDropdown(),\n });\n this.clickOutside.connect();\n }\n\n disconnectedCallback() {\n this.clickOutside.disconnect();\n }\n\n private syncFromModelValue() {\n if (this.multiple) {\n const arr = Array.isArray(this.modelValue) ? this.modelValue : [];\n this.internalSelected = [...arr];\n this.internalChecked = [...arr];\n } else {\n const single = typeof this.modelValue === 'string' ? this.modelValue : '';\n this.internalSelected = single ? [single] : [];\n this.internalChecked = single ? [single] : [];\n }\n }\n\n /**\n * 构建当前可见节点的扁平列表(仅含已展开父节点的后代),用于键盘线性导航(A2)。\n */\n private getFlattenedVisibleNodes(): { node: TreeNode; level: number; parentKey: string | null }[] {\n const out: { node: TreeNode; level: number; parentKey: string | null }[] = [];\n const walk = (nodes: TreeNode[], level: number, parentKey: string | null) => {\n for (const node of nodes) {\n out.push({ node, level, parentKey });\n if (node.children && node.children.length > 0 && this.internalExpanded.includes(node.key)) {\n walk(node.children, level + 1, node.key);\n }\n }\n };\n walk(this.data, 0, null);\n return out;\n }\n\n /**\n * Tree 键盘导航(WAI-ARIA Tree View 模式,A2 修复):\n * ↑↓ 线性移动、→ 展开/进子、← 折叠/回父、Enter/Space 选中、Home/End 跳首尾。\n * 焦点(focusKey)与选中态(internalSelected/internalChecked)解耦。\n */\n private handleTreeKeydown = (e: KeyboardEvent) => {\n const flat = this.getFlattenedVisibleNodes();\n if (flat.length === 0) return;\n\n let focusKey: string | null = this.focusKey;\n if (!focusKey && this.internalSelected.length > 0) focusKey = this.internalSelected[this.internalSelected.length - 1];\n let focusIdx = focusKey ? flat.findIndex(x => x.node.key === focusKey) : -1;\n if (focusIdx < 0 || flat[focusIdx].node.disabled) {\n focusIdx = flat.findIndex(x => !x.node.disabled);\n if (focusIdx < 0) return;\n }\n const enabledFlatIndices = flat\n .map((x, i) => ({ x, i }))\n .filter(o => !o.x.node.disabled)\n .map(o => o.i);\n const posInEnabled = enabledFlatIndices.indexOf(focusIdx);\n const current = flat[focusIdx];\n const isLeaf = !(current.node.children && current.node.children.length > 0);\n const expanded = !isLeaf && this.internalExpanded.includes(current.node.key);\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault();\n this.focusKey = flat[enabledFlatIndices[(posInEnabled + 1) % enabledFlatIndices.length]].node.key;\n break;\n }\n case 'ArrowUp': {\n e.preventDefault();\n const n = enabledFlatIndices.length;\n this.focusKey = flat[enabledFlatIndices[(posInEnabled - 1 + n) % n]].node.key;\n break;\n }\n case 'ArrowRight': {\n e.preventDefault();\n if (isLeaf) return;\n if (!expanded) {\n this.handleToggleExpand(current.node, { stopPropagation: () => {} } as unknown as Event);\n } else {\n const firstChildIdx = flat.findIndex((x, i) => i > focusIdx && x.parentKey === current.node.key && !x.node.disabled);\n if (firstChildIdx >= 0) this.focusKey = flat[firstChildIdx].node.key;\n }\n break;\n }\n case 'ArrowLeft': {\n e.preventDefault();\n if (!isLeaf && expanded) {\n this.handleToggleExpand(current.node, { stopPropagation: () => {} } as unknown as Event);\n } else if (current.parentKey && !flat.find(x => x.node.key === current.parentKey)!.node.disabled) {\n this.focusKey = current.parentKey;\n }\n break;\n }\n case 'Home':\n e.preventDefault();\n this.focusKey = flat[enabledFlatIndices[0]].node.key;\n break;\n case 'End':\n e.preventDefault();\n this.focusKey = flat[enabledFlatIndices[enabledFlatIndices.length - 1]].node.key;\n break;\n case 'Enter':\n case ' ':\n case 'Spacebar': {\n e.preventDefault();\n if (this.checkable) this.handleNodeCheck(current.node);\n else this.handleNodeSelect(current.node.key);\n break;\n }\n default:\n return;\n }\n };\n\n private collectExpandableKeys(nodes: TreeNode[], out: string[]) {\n for (const node of nodes) {\n if (node.children && node.children.length > 0) {\n out.push(node.key);\n this.collectExpandableKeys(node.children, out);\n }\n }\n }\n\n private findTitle(nodes: TreeNode[], key: string): string | null {\n for (const node of nodes) {\n if (node.key === key) return node.title;\n if (node.children) {\n const found = this.findTitle(node.children, key);\n if (found) return found;\n }\n }\n return null;\n }\n\n private getDisplayText(): string {\n if (this.multiple) {\n const arr = Array.isArray(this.modelValue) ? this.modelValue : [];\n if (arr.length === 0) return '';\n const titles = arr.map(k => this.findTitle(this.data, k) || k);\n return titles.join(' / ');\n }\n const single = typeof this.modelValue === 'string' ? this.modelValue : '';\n return single ? this.findTitle(this.data, single) || single : '';\n }\n\n private openDropdown = () => {\n if (this.disabled || this.isOpen) return;\n this.isOpen = true;\n this.hbVisibleChange.emit(true);\n };\n\n private closeDropdown = () => {\n if (!this.isOpen) return;\n this.isOpen = false;\n this.hbVisibleChange.emit(false);\n };\n\n private toggleDropdown = () => {\n if (this.disabled) return;\n if (this.isOpen) this.closeDropdown();\n else this.openDropdown();\n };\n\n private handleNodeSelect = (key: string) => {\n if (this.multiple) {\n const current = [...this.internalSelected];\n const idx = current.indexOf(key);\n if (idx >= 0) current.splice(idx, 1);\n else current.push(key);\n this.internalSelected = current;\n this.modelValue = current;\n this.hbChange.emit(current);\n } else {\n this.internalSelected = [key];\n this.modelValue = key;\n this.hbChange.emit(key);\n this.closeDropdown();\n }\n };\n\n private handleNodeCheck = (node: TreeNode) => {\n // 父子联动(对齐 Tree 组件算法):勾选/取消自身 + 级联后代 + 自底向上修正祖先\n const next = new Set(this.internalChecked);\n const wasChecked = next.has(node.key);\n if (wasChecked) {\n this.removeDescendantKeys(node, next);\n next.delete(node.key);\n } else {\n next.add(node.key);\n this.collectCheckableDescendantKeys(node, next);\n }\n this.reconcileAncestors(node, next);\n const result = Array.from(next);\n this.internalChecked = result;\n this.modelValue = result;\n this.hbChange.emit(result);\n };\n\n /** 取消父级时级联取消所有后代(含禁用项,因为它们是被父带选的) */\n private removeDescendantKeys(node: TreeNode, out: Set<string>) {\n if (!node.children) return;\n for (const child of node.children) {\n out.delete(child.key);\n this.removeDescendantKeys(child, out);\n }\n }\n\n /** 勾选父级时级联勾选所有非禁用后代 */\n private collectCheckableDescendantKeys(node: TreeNode, out: Set<string>) {\n if (!node.children) return;\n for (const child of node.children) {\n if (!child.disabled) out.add(child.key);\n this.collectCheckableDescendantKeys(child, out);\n }\n }\n\n /** 自底向上修正祖先:所有非禁用子节点全选 → 父勾选;否则移出(部分选体现为 indeterminate) */\n private reconcileAncestors(node: TreeNode, next: Set<string>) {\n const parents = this.findAncestors(this.data, node.key, []);\n for (const parent of parents) {\n if (parent.disabled || !parent.children || parent.children.length === 0) continue;\n const checkable = parent.children.filter(c => !c.disabled);\n if (checkable.length === 0) continue;\n if (checkable.every(c => next.has(c.key))) next.add(parent.key);\n else next.delete(parent.key);\n }\n }\n\n private findAncestors(nodes: TreeNode[], key: string, acc: TreeNode[]): TreeNode[] | null {\n for (const node of nodes) {\n if (node.key === key) return acc;\n if (node.children && node.children.length > 0) {\n const found = this.findAncestors(node.children, key, [node, ...acc]);\n if (found) return found;\n }\n }\n return null;\n }\n\n /** 计算当前 checked 集合下处于「部分选中」的节点(用于三方态渲染) */\n private computeIndeterminateKeys(): Set<string> {\n const result = new Set<string>();\n const checked = new Set(this.internalChecked);\n const walk = (node: TreeNode): boolean => {\n if (!node.children || node.children.length === 0) return false;\n let hasChecked = false;\n for (const child of node.children) {\n if (walk(child)) hasChecked = true;\n if (checked.has(child.key)) hasChecked = true;\n }\n if (hasChecked && !checked.has(node.key)) result.add(node.key);\n return hasChecked;\n };\n for (const root of this.data) walk(root);\n return result;\n }\n\n private handleToggleExpand = (node: TreeNode, e: Event) => {\n e.stopPropagation();\n const current = [...this.internalExpanded];\n const idx = current.indexOf(node.key);\n if (idx >= 0) current.splice(idx, 1);\n else current.push(node.key);\n this.internalExpanded = current;\n };\n\n private handleClear = (e: Event) => {\n e.stopPropagation();\n if (this.disabled) return;\n this.internalSelected = [];\n this.internalChecked = [];\n this.modelValue = this.multiple ? [] : '';\n this.hbChange.emit(this.modelValue);\n };\n\n private renderNode = (node: TreeNode, level: number, indeterminateKeys: Set<string>): any => {\n const hasChildren = !!(node.children && node.children.length > 0);\n const expanded = this.internalExpanded.includes(node.key);\n const selected = this.internalSelected.includes(node.key);\n const checked = this.internalChecked.includes(node.key);\n const indeterminate = indeterminateKeys.has(node.key);\n const disabled = !!node.disabled;\n // A2:roving tabindex 跟随 focusKey;无键盘焦点时回退到选中项\n const fallbackFocus = this.internalSelected.length > 0 ? this.internalSelected[this.internalSelected.length - 1] : null;\n const effectiveFocus = this.focusKey ?? fallbackFocus;\n const isFocused = effectiveFocus === node.key;\n\n return (\n <li\n class={{ 'hb-tree-select__node': true, 'hb-tree-select__node--disabled': disabled }}\n data-tree-key={node.key}\n role=\"treeitem\"\n aria-level={level + 1}\n aria-expanded={hasChildren ? String(expanded) : undefined}\n aria-selected={selected ? 'true' : 'false'}\n aria-disabled={disabled ? 'true' : undefined}\n tabindex={isFocused ? 0 : -1}\n >\n <div\n class={{\n 'hb-tree-select__node-content': true,\n 'hb-tree-select__node-content--selected': selected,\n 'hb-tree-select__node-content--checked': checked,\n }}\n style={{ paddingLeft: `${level * 18 + 8}px` }}\n >\n <span class=\"hb-tree-select__switcher\" onClick={e => hasChildren && this.handleToggleExpand(node, e)}>\n {hasChildren ? (\n <span class={{ 'hb-tree-select__arrow': true, 'hb-tree-select__arrow--expanded': expanded }} aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width={2} stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M9 6l6 6-6 6\" />\n </svg>\n </span>\n ) : null}\n </span>\n\n {this.checkable && (\n <span\n class={{\n 'hb-tree-select__checkbox': true,\n 'hb-tree-select__checkbox--checked': checked,\n 'hb-tree-select__checkbox--indeterminate': indeterminate,\n 'hb-tree-select__checkbox--disabled': disabled,\n }}\n role=\"checkbox\"\n aria-checked={indeterminate ? 'mixed' : checked ? 'true' : 'false'}\n onClick={() => !disabled && this.handleNodeCheck(node)}\n >\n {checked ? (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width={3} stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M5 12l5 5L20 7\" />\n </svg>\n ) : indeterminate ? (\n <span class=\"hb-tree-select__checkbox-dash\" />\n ) : null}\n </span>\n )}\n\n <span class=\"hb-tree-select__title\" onClick={() => !disabled && this.handleNodeSelect(node.key)}>\n {node.title}\n </span>\n </div>\n\n {hasChildren && expanded && (\n <ul class=\"hb-tree-select__children\" role=\"group\">\n {node.children!.map(child => this.renderNode(child, level + 1, indeterminateKeys))}\n </ul>\n )}\n </li>\n );\n };\n\n render() {\n const displayText = this.getDisplayText();\n const hasValue = this.multiple ? Array.isArray(this.modelValue) && this.modelValue.length > 0 : typeof this.modelValue === 'string' && this.modelValue !== '';\n const indeterminateKeys = this.checkable ? this.computeIndeterminateKeys() : new Set<string>();\n\n return (\n <div\n class={{\n 'hb-tree-select': true,\n 'hb-tree-select--open': this.isOpen,\n 'hb-tree-select--disabled': this.disabled,\n 'hb-tree-select--multiple': this.multiple,\n }}\n >\n <div class=\"hb-tree-select__input-wrapper\" onClick={this.toggleDropdown}>\n <span\n class={{\n 'hb-tree-select__display': true,\n 'hb-tree-select__display--placeholder': !hasValue,\n }}\n >\n {hasValue ? displayText : this.placeholder}\n </span>\n <span class=\"hb-tree-select__suffix\">\n {hasValue && (\n <span class=\"hb-tree-select__clear\" onClick={this.handleClear} role=\"button\" aria-label=\"清空\" tabIndex={0} onKeyDown={activationClickHandler}>\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width={2} stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M6 6l12 12M18 6L6 18\" />\n </svg>\n </span>\n )}\n <span class={{ 'hb-tree-select__arrow-icon': true, 'hb-tree-select__arrow-icon--open': this.isOpen }} aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width={2} stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M6 9l6 6 6-6\" />\n </svg>\n </span>\n </span>\n </div>\n\n {this.isOpen && (\n <div class=\"hb-tree-select__dropdown\">\n {this.data.length === 0 ? (\n <div class=\"hb-tree-select__empty\">暂无数据</div>\n ) : (\n <ul class=\"hb-tree-select__tree\" role=\"tree\" tabindex={-1} onKeyDown={this.handleTreeKeydown}>\n {this.data.map(node => this.renderNode(node, 0, indeterminateKeys))}\n </ul>\n )}\n </div>\n )}\n </div>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as i,c as e,g as t,h as o}from"./p-e42dfa95.js";import{g as a,l as r,u as n}from"./p-ecce2b5e.js";import{c as s}from"./p-00aa34c8.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{.visible{visibility:visible}.container{width:100%}.hidden{display:none}.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:contents}.hb-dialog-wrapper{inset:0;pointer-events:none;position:fixed}.hb-dialog-wrapper--hidden{display:none}.hb-dialog__overlay{animation:hb-dialog-overlay-in .3s both;background-color:var(--hb-color-bg-mask);inset:0;pointer-events:auto;position:fixed}.hb-dialog__overlay--leaving{animation:hb-dialog-overlay-out .3s both}@keyframes hb-dialog-overlay-in{0%{opacity:0}to{opacity:1}}@keyframes hb-dialog-overlay-out{0%{opacity:1}to{opacity:0}}.hb-dialog{animation:hb-dialog-in .3s cubic-bezier(.16,1,.3,1) both;background-color:var(--hb-dialog-bg);border-radius:var(--hb-dialog-radius);box-shadow:var(--hb-dialog-shadow);display:flex;flex-direction:column;left:50%;max-height:90vh;overflow:hidden;pointer-events:auto;position:fixed;top:50%}.hb-dialog--leaving{animation:hb-dialog-out .3s cubic-bezier(.5,0,.75,0) both}@keyframes hb-dialog-in{0%{opacity:0;transform:translate(-50%,-50%)scale(.9)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}@keyframes hb-dialog-out{0%{opacity:1;transform:translate(-50%,-50%)scale(1)}to{opacity:0;transform:translate(-50%,-50%)scale(.95)}}.hb-dialog--fullscreen{border-radius:0;height:100vh;left:0;max-height:100vh;top:0;width:100%!important}.hb-dialog--fullscreen,.hb-dialog--fullscreen.hb-dialog--leaving{animation:none}.hb-dialog__header{align-items:center;border-bottom:1px solid var(--hb-color-border-secondary);display:flex;justify-content:space-between;padding:var(--hb-spacing-md)var(--hb-spacing-lg)}.hb-dialog__title{color:var(--hb-color-text-primary);font-size:var(--hb-font-size-lg);font-weight:600}.hb-dialog__close{align-items:center;background:0 0;border:none;border-radius:var(--hb-border-radius-sm);color:var(--hb-color-text-secondary);cursor:pointer;display:inline-flex;height:28px;justify-content:center;padding:0;transition:all var(--hb-transition-duration);width:28px}.hb-dialog__close svg{height:16px;width:16px}.hb-dialog__close:hover{background-color:var(--hb-color-fill-tertiary);color:var(--hb-color-text-primary)}.hb-dialog__body{color:var(--hb-color-text);flex:1;font-size:var(--hb-font-size-base);overflow-y:auto;padding:var(--hb-spacing-lg)}.hb-dialog__footer{align-items:center;border-top:1px solid var(--hb-color-border-secondary);display:flex;gap:var(--hb-spacing-xs);justify-content:flex-end;padding:var(--hb-spacing-sm)var(--hb-spacing-lg)}@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}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}';const d=l;const h=class{constructor(t){i(this,t);this.hbOpen=e(this,"hbOpen",7);this.hbClose=e(this,"hbClose",7);this.hbClosed=e(this,"hbClosed",7)}get el(){return t(this)}modelValue=false;title="";width="50%";fullscreen=false;modal=true;closeOnClickModal=true;closeOnPressEscape=true;showClose=true;destroyOnClose=false;hbOpen;hbClose;hbClosed;zIndex=0;panelRef;trap;leaving=false;leaveTimer;handleVisibleChange(i,e){if(i){if(this.leaveTimer){clearTimeout(this.leaveTimer);this.leaveTimer=undefined}this.leaving=false;this.zIndex=a();if(this.modal)r();this.hbOpen.emit();document.addEventListener("keydown",this.handleKeyDown)}else if(e){this.startLeave()}}disconnectedCallback(){if(this.modelValue&&this.modal)n();document.removeEventListener("keydown",this.handleKeyDown);this.trap?.disconnect();if(this.leaveTimer)clearTimeout(this.leaveTimer)}componentDidRender(){if(!this.panelRef)return;if(this.modelValue){if(!this.trap){this.trap=s({container:this.panelRef})}this.trap.connect()}else{this.trap?.disconnect()}}handleKeyDown=i=>{if(this.closeOnPressEscape&&i.key==="Escape"){this.close()}};close=()=>{this.modelValue=false;this.startLeave()};startLeave(){if(this.modal)n();document.removeEventListener("keydown",this.handleKeyDown);this.hbClose.emit();this.leaving=true;if(this.leaveTimer)clearTimeout(this.leaveTimer);this.leaveTimer=setTimeout((()=>{this.leaving=false;this.hbClosed.emit()}),300)}handleOverlayClick=()=>{if(this.closeOnClickModal)this.close()};get shouldRender(){return this.modelValue||this.leaving}render(){if(this.destroyOnClose&&!this.shouldRender)return null;return o("div",{class:{"hb-dialog-wrapper":true,"hb-dialog-wrapper--hidden":!this.shouldRender}},this.modal&&o("div",{class:{"hb-dialog__overlay":true,"hb-dialog__overlay--visible":this.modelValue,"hb-dialog__overlay--leaving":this.leaving},style:{zIndex:String(this.zIndex)},onClick:this.handleOverlayClick}),o("div",{ref:i=>this.panelRef=i,class:{"hb-dialog":true,"hb-dialog--fullscreen":this.fullscreen,"hb-dialog--visible":this.modelValue,"hb-dialog--leaving":this.leaving},style:{zIndex:String(this.zIndex+1),width:this.fullscreen?"100%":this.width},role:"dialog","aria-modal":"true","aria-hidden":this.modelValue?"false":"true"},o("div",{class:"hb-dialog__header"},o("span",{class:"hb-dialog__title"},this.title),this.showClose&&o("button",{type:"button",class:"hb-dialog__close","aria-label":"关闭",onClick:this.close},o("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},o("path",{d:"M6 6l12 12M18 6L6 18"})))),o("div",{class:"hb-dialog__body"},o("slot",null)),o("div",{class:"hb-dialog__footer"},o("slot",{name:"footer"}))))}static get watchers(){return{modelValue:["handleVisibleChange"]}}};h.style=d;export{h as hb_dialog};
|
|
2
|
+
//# sourceMappingURL=p-c7713947.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["dialogCss","HbDialogStyle0","Dialog","modelValue","title","width","fullscreen","modal","closeOnClickModal","closeOnPressEscape","showClose","destroyOnClose","hbOpen","hbClose","hbClosed","zIndex","panelRef","trap","leaving","leaveTimer","handleVisibleChange","newVal","oldVal","this","clearTimeout","undefined","getNextZIndex","lockScroll","emit","document","addEventListener","handleKeyDown","startLeave","disconnectedCallback","unlockScroll","removeEventListener","disconnect","componentDidRender","createFocusTrap","container","connect","e","key","close","setTimeout","handleOverlayClick","shouldRender","render","h","class","style","String","onClick","ref","el","role","type","viewBox","fill","stroke","d","name"],"sources":["src/components/Dialog/dialog.css?tag=hb-dialog&encapsulation=shadow","src/components/Dialog/Dialog.tsx"],"sourcesContent":[":host {\n display: contents;\n}\n\n.hb-dialog-wrapper {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n pointer-events: none;\n}\n\n.hb-dialog-wrapper--hidden {\n display: none;\n}\n\n.hb-dialog__overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: var(--hb-color-bg-mask);\n pointer-events: auto;\n /* 进场:opacity 0 → 1;离场由 --leaving class 反向播放 */\n animation: hb-dialog-overlay-in 0.3s ease both;\n}\n\n.hb-dialog__overlay--leaving {\n animation: hb-dialog-overlay-out 0.3s ease both;\n}\n\n@keyframes hb-dialog-overlay-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes hb-dialog-overlay-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n\n.hb-dialog {\n position: fixed;\n top: 50%;\n left: 50%;\n background-color: var(--hb-dialog-bg);\n border-radius: var(--hb-dialog-radius);\n box-shadow: var(--hb-dialog-shadow);\n pointer-events: auto;\n display: flex;\n flex-direction: column;\n max-height: 90vh;\n overflow: hidden;\n /* 进场:opacity + scale(对齐 antd Modal 的 fade+zoom) */\n animation: hb-dialog-in 0.3s cubic-bezier(0.16, 1, 0.3, 1) both;\n}\n\n.hb-dialog--leaving {\n animation: hb-dialog-out 0.3s cubic-bezier(0.5, 0, 0.75, 0) both;\n}\n\n@keyframes hb-dialog-in {\n from {\n opacity: 0;\n transform: translate(-50%, -50%) scale(0.9);\n }\n to {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n }\n}\n@keyframes hb-dialog-out {\n from {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n }\n to {\n opacity: 0;\n transform: translate(-50%, -50%) scale(0.95);\n }\n}\n\n.hb-dialog--fullscreen {\n width: 100% !important;\n height: 100vh;\n top: 0;\n left: 0;\n border-radius: 0;\n max-height: 100vh;\n}\n.hb-dialog--fullscreen,\n.hb-dialog--fullscreen.hb-dialog--leaving {\n animation: none;\n}\n\n.hb-dialog__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--hb-spacing-md) var(--hb-spacing-lg);\n border-bottom: 1px solid var(--hb-color-border-secondary);\n}\n\n.hb-dialog__title {\n font-size: var(--hb-font-size-lg);\n font-weight: 600;\n color: var(--hb-color-text-primary);\n}\n\n.hb-dialog__close {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n background: none;\n color: var(--hb-color-text-secondary);\n cursor: pointer;\n border-radius: var(--hb-border-radius-sm);\n transition: all var(--hb-transition-duration);\n padding: 0;\n}\n\n.hb-dialog__close svg {\n width: 16px;\n height: 16px;\n}\n\n.hb-dialog__close:hover {\n background-color: var(--hb-color-fill-tertiary);\n color: var(--hb-color-text-primary);\n}\n\n.hb-dialog__body {\n flex: 1;\n padding: var(--hb-spacing-lg);\n overflow-y: auto;\n color: var(--hb-color-text);\n font-size: var(--hb-font-size-base);\n}\n\n.hb-dialog__footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--hb-spacing-xs);\n padding: var(--hb-spacing-sm) var(--hb-spacing-lg);\n border-top: 1px solid var(--hb-color-border-secondary);\n}\n","import { Component, h, Prop, Event, EventEmitter, Watch, Element, State } from '@stencil/core';\nimport { lockScroll, unlockScroll, getNextZIndex } from '../../utils/popup-manager';\nimport { createFocusTrap, FocusTrap } from '../../utils/a11y';\n\n/**\n * Dialog 对话框组件\n * 在保留当前页面状态的情况下,告知用户并承载相关操作\n */\n@Component({\n tag: 'hb-dialog',\n styleUrl: 'dialog.css',\n shadow: true,\n})\nexport class Dialog {\n @Element() el: HTMLElement;\n\n /** 是否显示 */\n @Prop({ mutable: true }) modelValue: boolean = false;\n\n /** 标题 */\n @Prop() title: string = '';\n\n /** 宽度 */\n @Prop() width: string = '50%';\n\n /** 是否全屏 */\n @Prop() fullscreen: boolean = false;\n\n /** 是否显示遮罩 */\n @Prop() modal: boolean = true;\n\n /** 是否点击遮罩关闭 */\n @Prop() closeOnClickModal: boolean = true;\n\n /** 是否按 ESC 关闭 */\n @Prop() closeOnPressEscape: boolean = true;\n\n /** 是否显示关闭按钮 */\n @Prop() showClose: boolean = true;\n\n /** 关闭时销毁 */\n @Prop() destroyOnClose: boolean = false;\n\n /** 打开事件 */\n @Event() hbOpen: EventEmitter<void>;\n\n /** 关闭事件 */\n @Event() hbClose: EventEmitter<void>;\n\n /** 已关闭动画结束事件 */\n @Event() hbClosed: EventEmitter<void>;\n\n private zIndex: number = 0;\n private panelRef?: HTMLElement;\n private trap?: FocusTrap;\n /** 离场动画期间保留渲染(避免 display:none 打断 transition) */\n @State() leaving: boolean = false;\n private leaveTimer?: ReturnType<typeof setTimeout>;\n\n @Watch('modelValue')\n handleVisibleChange(newVal: boolean, oldVal: boolean) {\n if (newVal) {\n // 打开:清掉可能残留的离场定时器,重置 leaving\n if (this.leaveTimer) {\n clearTimeout(this.leaveTimer);\n this.leaveTimer = undefined;\n }\n this.leaving = false;\n this.zIndex = getNextZIndex();\n if (this.modal) lockScroll();\n this.hbOpen.emit();\n document.addEventListener('keydown', this.handleKeyDown);\n } else if (oldVal) {\n // 关闭(受控或内部触发统一走这里):进入离场动画期,\n // 动画结束(300ms)后才 emit closed + 真正卸载。\n // 仅在「从打开→关闭」时执行,避免已关闭时重复 emit。\n this.startLeave();\n }\n }\n\n disconnectedCallback() {\n if (this.modelValue && this.modal) unlockScroll();\n document.removeEventListener('keydown', this.handleKeyDown);\n this.trap?.disconnect();\n if (this.leaveTimer) clearTimeout(this.leaveTimer);\n }\n\n componentDidRender() {\n if (!this.panelRef) return;\n if (this.modelValue) {\n if (!this.trap) {\n this.trap = createFocusTrap({ container: this.panelRef });\n }\n this.trap.connect();\n } else {\n this.trap?.disconnect();\n }\n }\n\n private handleKeyDown = (e: KeyboardEvent) => {\n if (this.closeOnPressEscape && e.key === 'Escape') {\n this.close();\n }\n };\n\n private close = () => {\n this.modelValue = false;\n this.startLeave();\n };\n\n /**\n * 进入离场动画期:解锁滚动、移除监听、保留 DOM 播放动画,\n * 结束(300ms)后重置 leaving 并 emit hbClosed。\n * 受控关闭(父组件直接设 modelValue=false 经 @Watch)与内部关闭(ESC/遮罩/关闭按钮)\n * 统一走这里,保证两者行为一致(都有动画 + 都 emit hbClose/hbClosed)。\n */\n private startLeave() {\n if (this.modal) unlockScroll();\n document.removeEventListener('keydown', this.handleKeyDown);\n this.hbClose.emit();\n this.leaving = true;\n if (this.leaveTimer) clearTimeout(this.leaveTimer);\n this.leaveTimer = setTimeout(() => {\n this.leaving = false;\n this.hbClosed.emit();\n }, 300);\n }\n\n private handleOverlayClick = () => {\n if (this.closeOnClickModal) this.close();\n };\n\n /** 是否应渲染弹层 DOM:打开中 或 离场动画期内 */\n private get shouldRender(): boolean {\n return this.modelValue || this.leaving;\n }\n\n render() {\n if (this.destroyOnClose && !this.shouldRender) return null;\n\n return (\n <div class={{ 'hb-dialog-wrapper': true, 'hb-dialog-wrapper--hidden': !this.shouldRender }}>\n {this.modal && (\n <div\n class={{\n 'hb-dialog__overlay': true,\n 'hb-dialog__overlay--visible': this.modelValue,\n 'hb-dialog__overlay--leaving': this.leaving,\n }}\n style={{ zIndex: String(this.zIndex) }}\n onClick={this.handleOverlayClick}\n />\n )}\n <div\n ref={el => (this.panelRef = el as HTMLElement)}\n class={{\n 'hb-dialog': true,\n 'hb-dialog--fullscreen': this.fullscreen,\n 'hb-dialog--visible': this.modelValue,\n 'hb-dialog--leaving': this.leaving,\n }}\n style={{\n zIndex: String(this.zIndex + 1),\n width: this.fullscreen ? '100%' : this.width,\n }}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-hidden={this.modelValue ? 'false' : 'true'}\n >\n <div class=\"hb-dialog__header\">\n <span class=\"hb-dialog__title\">{this.title}</span>\n {this.showClose && (\n <button type=\"button\" class=\"hb-dialog__close\" aria-label=\"关闭\" onClick={this.close}>\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 </button>\n )}\n </div>\n <div class=\"hb-dialog__body\">\n <slot />\n </div>\n <div class=\"hb-dialog__footer\">\n <slot name=\"footer\" />\n </div>\n </div>\n </div>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as e,c as t,g as i,h as o}from"./p-e42dfa95.js";const n='/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-border-style:solid;--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{.border{border-style:var(--tw-border-style);border-width:1px}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}} /*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer components;:host{display:inline-block}.hb-checkbox-group{display:inline-block;font-size:0}::slotted(hb-checkbox){margin-right:30px}::slotted(hb-checkbox:last-child){margin-right:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@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 a=n;const r=class{constructor(i){e(this,i);this.hbChange=t(this,"hbChange",7)}get el(){return i(this)}modelValue=[];disabled=false;size="default";border=false;min;max;hbChange;checkboxes=[];componentDidLoad(){this.updateCheckboxes()}handleValueChange(){this.updateCheckboxesState()}handlePropsChange(){this.updateCheckboxes()}updateCheckboxes(){const e=Array.from(this.el.querySelectorAll("hb-checkbox"));this.checkboxes=e;e.forEach((e=>{e.disabled=this.disabled||e.disabled;e.size=this.size;e.border=this.border;e.addEventListener("hbChange",this.handleCheckboxChange)}));this.updateCheckboxesState()}updateCheckboxesState(){this.checkboxes.forEach((e=>{if(e.value!==undefined){const t=this.modelValue.includes(e.value);e.modelValue=t?[...this.modelValue]:this.modelValue.filter((t=>t!==e.value))}}))}handleCheckboxChange=e=>{const t=e.target;const i=t.value;if(i===undefined)return;let o;if(this.modelValue.includes(i)){o=this.modelValue.filter((e=>e!==i));if(this.min!==undefined&&o.length<this.min){return}}else{if(this.max!==undefined&&this.modelValue.length>=this.max){return}o=[...this.modelValue,i]}this.modelValue=o;this.hbChange.emit(o)};render(){return o("div",{key:"
|
|
2
|
-
//# sourceMappingURL=p-
|
|
1
|
+
import{r as e,c as t,g as i,h as o}from"./p-e42dfa95.js";const n='/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-border-style:solid;--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{.border{border-style:var(--tw-border-style);border-width:1px}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}} /*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer components;:host{display:inline-block}.hb-checkbox-group{display:inline-block;font-size:0}::slotted(hb-checkbox){margin-right:30px}::slotted(hb-checkbox:last-child){margin-right:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@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 a=n;const r=class{constructor(i){e(this,i);this.hbChange=t(this,"hbChange",7)}get el(){return i(this)}modelValue=[];disabled=false;size="default";border=false;min;max;hbChange;checkboxes=[];componentDidLoad(){this.updateCheckboxes()}disconnectedCallback(){this.checkboxes.forEach((e=>{e.removeEventListener("hbChange",this.handleCheckboxChange)}))}handleValueChange(){this.updateCheckboxesState()}handlePropsChange(){this.updateCheckboxes()}updateCheckboxes(){const e=Array.from(this.el.querySelectorAll("hb-checkbox"));this.checkboxes=e;e.forEach((e=>{e.disabled=this.disabled||e.disabled;e.size=this.size;e.border=this.border;e.addEventListener("hbChange",this.handleCheckboxChange)}));this.updateCheckboxesState()}updateCheckboxesState(){this.checkboxes.forEach((e=>{if(e.value!==undefined){const t=this.modelValue.includes(e.value);e.modelValue=t?[...this.modelValue]:this.modelValue.filter((t=>t!==e.value))}}))}handleCheckboxChange=e=>{const t=e.target;const i=t.value;if(i===undefined)return;let o;if(this.modelValue.includes(i)){o=this.modelValue.filter((e=>e!==i));if(this.min!==undefined&&o.length<this.min){return}}else{if(this.max!==undefined&&this.modelValue.length>=this.max){return}o=[...this.modelValue,i]}this.modelValue=o;this.hbChange.emit(o)};render(){return o("div",{key:"907e537d44bf915f154c862468e91ea195df7159",class:{"hb-checkbox-group":true}},o("slot",{key:"823370e5e00a566c375d10bf51ec62f01d77c2f0"}))}static get watchers(){return{modelValue:["handleValueChange"],disabled:["handlePropsChange"],size:["handlePropsChange"],border:["handlePropsChange"]}}};r.style=a;export{r as hb_checkbox_group};
|
|
2
|
+
//# sourceMappingURL=p-c869842c.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["checkboxGroupCss","HbCheckboxGroupStyle0","CheckboxGroup","modelValue","disabled","size","border","min","max","hbChange","checkboxes","componentDidLoad","this","updateCheckboxes","disconnectedCallback","forEach","checkbox","removeEventListener","handleCheckboxChange","handleValueChange","updateCheckboxesState","handlePropsChange","Array","from","el","querySelectorAll","addEventListener","value","undefined","isChecked","includes","filter","v","e","target","newValue","length","emit","render","h","key","class"],"sources":["src/components/Checkbox/checkbox-group.css?tag=hb-checkbox-group&encapsulation=shadow","src/components/Checkbox/CheckboxGroup.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n.hb-checkbox-group {\n display: inline-block;\n font-size: 0;\n}\n\n::slotted(hb-checkbox) {\n margin-right: 30px;\n}\n\n::slotted(hb-checkbox:last-child) {\n margin-right: 0;\n}\n\n","import { Component, h, Prop, Event, EventEmitter, State, Watch, Element } from '@stencil/core';\n\n/**\n * CheckboxGroup 多选框组组件\n * 用于管理多个 checkbox\n */\n@Component({\n tag: 'hb-checkbox-group',\n styleUrl: 'checkbox-group.css',\n shadow: true,\n})\nexport class CheckboxGroup {\n @Element() el: HTMLElement;\n\n /**\n * 绑定值\n */\n @Prop({ mutable: true }) modelValue: (string | number)[] = [];\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() border: boolean = false;\n\n /**\n * 最小选中数量\n */\n @Prop() min?: number;\n\n /**\n * 最大选中数量\n */\n @Prop() max?: number;\n\n /**\n * 值改变事件\n */\n @Event() hbChange: EventEmitter<(string | number)[]>;\n\n @State() checkboxes: HTMLHbCheckboxElement[] = [];\n\n componentDidLoad() {\n this.updateCheckboxes();\n }\n\n // L4:卸载时移除子 checkbox 的 hbChange 监听,规范化 teardown。\n disconnectedCallback() {\n this.checkboxes.forEach(checkbox => {\n checkbox.removeEventListener('hbChange', this.handleCheckboxChange);\n });\n }\n\n @Watch('modelValue')\n handleValueChange() {\n this.updateCheckboxesState();\n }\n\n @Watch('disabled')\n @Watch('size')\n @Watch('border')\n handlePropsChange() {\n this.updateCheckboxes();\n }\n\n private updateCheckboxes() {\n const checkboxes = Array.from(this.el.querySelectorAll('hb-checkbox')) as HTMLHbCheckboxElement[];\n\n this.checkboxes = checkboxes;\n\n checkboxes.forEach(checkbox => {\n checkbox.disabled = this.disabled || checkbox.disabled;\n checkbox.size = this.size;\n checkbox.border = this.border;\n\n // 监听checkbox变化\n checkbox.addEventListener('hbChange', this.handleCheckboxChange);\n });\n\n this.updateCheckboxesState();\n }\n\n private updateCheckboxesState() {\n this.checkboxes.forEach(checkbox => {\n if (checkbox.value !== undefined) {\n const isChecked = this.modelValue.includes(checkbox.value);\n checkbox.modelValue = isChecked ? [...this.modelValue] : this.modelValue.filter(v => v !== checkbox.value);\n }\n });\n }\n\n private handleCheckboxChange = (e: CustomEvent) => {\n const checkbox = e.target as HTMLHbCheckboxElement;\n const value = checkbox.value;\n\n if (value === undefined) return;\n\n let newValue: (string | number)[];\n\n if (this.modelValue.includes(value)) {\n newValue = this.modelValue.filter(v => v !== value);\n // 取消选中后不能低于最小数量\n if (this.min !== undefined && newValue.length < this.min) {\n return;\n }\n } else {\n // 选中后不能超过最大数量\n if (this.max !== undefined && this.modelValue.length >= this.max) {\n return;\n }\n newValue = [...this.modelValue, value];\n }\n\n this.modelValue = newValue;\n this.hbChange.emit(newValue);\n };\n\n render() {\n return (\n <div\n class={{\n 'hb-checkbox-group': true,\n }}\n >\n <slot></slot>\n </div>\n );\n }\n}\n"],"mappings":"yDAAA,MAAMA,EAAmB,k4LACzB,MAAAC,EAAeD,E,MCUFE,EAAa,M,oFAMCC,WAAkC,GAMnDC,SAAoB,MAKpBC,KAAsC,UAMtCC,OAAkB,MAKlBC,IAKAC,IAKCC,SAEAC,WAAsC,GAE/C,gBAAAC,GACEC,KAAKC,kB,CAIP,oBAAAC,GACEF,KAAKF,WAAWK,SAAQC,IACtBA,EAASC,oBAAoB,WAAYL,KAAKM,qBAAqB,G,CAKvE,iBAAAC,GACEP,KAAKQ,uB,CAMP,iBAAAC,GACET,KAAKC,kB,CAGC,gBAAAA,GACN,MAAMH,EAAaY,MAAMC,KAAKX,KAAKY,GAAGC,iBAAiB,gBAEvDb,KAAKF,WAAaA,EAElBA,EAAWK,SAAQC,IACjBA,EAASZ,SAAWQ,KAAKR,UAAYY,EAASZ,SAC9CY,EAASX,KAAOO,KAAKP,KACrBW,EAASV,OAASM,KAAKN,OAGvBU,EAASU,iBAAiB,WAAYd,KAAKM,qBAAqB,IAGlEN,KAAKQ,uB,CAGC,qBAAAA,GACNR,KAAKF,WAAWK,SAAQC,IACtB,GAAIA,EAASW,QAAUC,UAAW,CAChC,MAAMC,EAAYjB,KAAKT,WAAW2B,SAASd,EAASW,OACpDX,EAASb,WAAa0B,EAAY,IAAIjB,KAAKT,YAAcS,KAAKT,WAAW4B,QAAOC,GAAKA,IAAMhB,EAASW,O,KAKlGT,qBAAwBe,IAC9B,MAAMjB,EAAWiB,EAAEC,OACnB,MAAMP,EAAQX,EAASW,MAEvB,GAAIA,IAAUC,UAAW,OAEzB,IAAIO,EAEJ,GAAIvB,KAAKT,WAAW2B,SAASH,GAAQ,CACnCQ,EAAWvB,KAAKT,WAAW4B,QAAOC,GAAKA,IAAML,IAE7C,GAAIf,KAAKL,MAAQqB,WAAaO,EAASC,OAASxB,KAAKL,IAAK,CACxD,M,MAEG,CAEL,GAAIK,KAAKJ,MAAQoB,WAAahB,KAAKT,WAAWiC,QAAUxB,KAAKJ,IAAK,CAChE,M,CAEF2B,EAAW,IAAIvB,KAAKT,WAAYwB,E,CAGlCf,KAAKT,WAAagC,EAClBvB,KAAKH,SAAS4B,KAAKF,EAAS,EAG9B,MAAAG,GACE,OACEC,EAAA,OAAAC,IAAA,2CACEC,MAAO,CACL,oBAAqB,OAGvBF,EAAA,QAAAC,IAAA,6C","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as e,h as
|
|
2
|
-
//# sourceMappingURL=p-
|
|
1
|
+
import{r as e,h as i}from"./p-e42dfa95.js";const t='/*! 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-border-style:solid;--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{.grid{display:grid}.border{border-style:var(--tw-border-style);border-width:1px}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}} /*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer components;:host{display:block}.hb-descriptions{background:var(--hb-color-bg-container);border-radius:var(--hb-border-radius-sm);color:var(--hb-color-text);font-size:var(--hb-font-size-sm)}.hb-descriptions__title{color:var(--hb-color-text-primary);font-size:var(--hb-font-size-lg);font-weight:600;margin-bottom:var(--hb-spacing-sm)}.hb-descriptions__view{width:100%}.hb-descriptions__row{display:grid;gap:0;width:100%}.hb-descriptions__item{border-bottom:1px solid var(--hb-color-border-secondary);display:flex;padding:var(--hb-spacing-sm)var(--hb-spacing-md)}.hb-descriptions__row .hb-descriptions__item:last-child{border-bottom:none}.hb-descriptions__label{color:var(--hb-color-text-secondary);flex-shrink:0;margin-right:var(--hb-spacing-sm);white-space:nowrap}.hb-descriptions__colon{margin-left:0}.hb-descriptions__value{color:var(--hb-color-text);word-break:break-all}.hb-descriptions--bordered{border:1px solid var(--hb-color-border-secondary);overflow:hidden}.hb-descriptions--bordered .hb-descriptions__title{border-bottom:1px solid var(--hb-color-border-secondary);margin-bottom:0;padding:var(--hb-spacing-sm)var(--hb-spacing-md)}.hb-descriptions--bordered .hb-descriptions__item{border-right:1px solid var(--hb-color-border-secondary);padding:var(--hb-spacing-sm)var(--hb-spacing-md)}.hb-descriptions--bordered .hb-descriptions__item:nth-child(3n){border-right:none}.hb-descriptions--bordered .hb-descriptions__item:last-child{border-bottom:none}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@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}@media (max-width:575.98px){.hb-descriptions__row{grid-template-columns:1fr!important}.hb-descriptions__item{align-items:flex-start;flex-direction:column;gap:var(--hb-spacing-xxs,2px)}.hb-descriptions__label{font-weight:500;margin-bottom:var(--hb-spacing-xxs,2px);margin-right:0}}';const o=t;const r=class{constructor(i){e(this,i)}title="";border=false;column=3;colon=true;items=[];render(){return i("div",{key:"8eca1aa5621202c1e88d866e1eeab1246dce7294",class:{"hb-descriptions":true,"hb-descriptions--bordered":this.border}},this.title&&i("div",{key:"b928e6f3e2cd9bc24fa5c84dd3c57b4f198c6514",class:"hb-descriptions__title"},this.title),i("div",{key:"56ac04c6f168efdf5c67b71eaa959205d52bafdc",class:"hb-descriptions__view"},i("div",{key:"3b2b1d157ee5220e27dab7460fa61447bec29c08",class:"hb-descriptions__row",style:{gridTemplateColumns:`repeat(${this.column}, minmax(0, 1fr))`}},this.items.map((e=>i("div",{class:"hb-descriptions__item",style:e.span?{gridColumn:`span ${e.span}`}:undefined},i("span",{class:"hb-descriptions__label"},e.label,this.colon&&i("span",{class:"hb-descriptions__colon"},":")),i("span",{class:"hb-descriptions__value"},e.value)))))))}};r.style=o;export{r as hb_descriptions};
|
|
2
|
+
//# sourceMappingURL=p-c8e917db.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["descriptionsCss","HbDescriptionsStyle0","Descriptions","title","border","column","colon","items","render","h","key","class","this","style","gridTemplateColumns","map","item","span","gridColumn","undefined","label","value"],"sources":["src/components/Descriptions/descriptions.css?tag=hb-descriptions&encapsulation=shadow","src/components/Descriptions/Descriptions.tsx"],"sourcesContent":[":host {\n display: block;\n}\n.hb-descriptions {\n font-size: var(--hb-font-size-sm);\n color: var(--hb-color-text);\n background: var(--hb-color-bg-container);\n border-radius: var(--hb-border-radius-sm);\n}\n.hb-descriptions__title {\n font-size: var(--hb-font-size-lg);\n font-weight: 600;\n color: var(--hb-color-text-primary);\n margin-bottom: var(--hb-spacing-sm);\n}\n.hb-descriptions__view {\n width: 100%;\n}\n.hb-descriptions__row {\n display: grid;\n gap: 0;\n width: 100%;\n}\n.hb-descriptions__item {\n display: flex;\n padding: var(--hb-spacing-sm) var(--hb-spacing-md);\n border-bottom: 1px solid var(--hb-color-border-secondary);\n}\n.hb-descriptions__row .hb-descriptions__item:nth-last-child(-n + 3):not(:nth-last-child(1)) {\n /* 保留默认下边框,最后一项由下方规则移除 */\n}\n/* 简化:最后一个 item 无下边框 */\n.hb-descriptions__row .hb-descriptions__item:last-child {\n border-bottom: none;\n}\n\n.hb-descriptions__label {\n color: var(--hb-color-text-secondary);\n white-space: nowrap;\n margin-right: var(--hb-spacing-sm);\n flex-shrink: 0;\n}\n.hb-descriptions__colon {\n margin-left: 0;\n}\n.hb-descriptions__value {\n color: var(--hb-color-text);\n word-break: break-all;\n}\n\n/* 带边框样式 */\n.hb-descriptions--bordered {\n border: 1px solid var(--hb-color-border-secondary);\n overflow: hidden;\n}\n.hb-descriptions--bordered .hb-descriptions__title {\n padding: var(--hb-spacing-sm) var(--hb-spacing-md);\n margin-bottom: 0;\n border-bottom: 1px solid var(--hb-color-border-secondary);\n}\n.hb-descriptions--bordered .hb-descriptions__item {\n border-right: 1px solid var(--hb-color-border-secondary);\n}\n.hb-descriptions--bordered .hb-descriptions__item:nth-child(3n) {\n border-right: none;\n}\n.hb-descriptions--bordered .hb-descriptions__item {\n padding: var(--hb-spacing-sm) var(--hb-spacing-md);\n}\n.hb-descriptions--bordered .hb-descriptions__item:last-child {\n border-bottom: none;\n}\n\n/* ============================================================\n * 响应式(移动端):小屏 descriptions 改为单列纵向堆叠,\n * label 与 value 上下排列,避免横向挤压。\n * ============================================================ */\n@media (max-width: 575.98px) {\n .hb-descriptions__row {\n grid-template-columns: 1fr !important;\n }\n\n .hb-descriptions__item {\n flex-direction: column;\n align-items: flex-start;\n gap: var(--hb-spacing-xxs, 2px);\n }\n\n .hb-descriptions__label {\n margin-right: 0;\n margin-bottom: var(--hb-spacing-xxs, 2px);\n font-weight: 500;\n }\n}\n","import { Component, h, Prop } from '@stencil/core';\n\n/**\n * Descriptions 描述列表组件\n * 成组展示多个描述字段,支持列数、边框、冒号、跨列 span\n */\n@Component({ tag: 'hb-descriptions', styleUrl: 'descriptions.css', shadow: true })\nexport class Descriptions {\n /** 标题 */\n @Prop() title: string = '';\n\n /** 是否带边框 */\n @Prop() border: boolean = false;\n\n /** 每行列数 */\n @Prop() column: number = 3;\n\n /** 是否显示冒号 */\n @Prop() colon: boolean = true;\n\n /** 描述项数组 */\n @Prop() items: DescriptionItem[] = [];\n\n render() {\n return (\n <div class={{ 'hb-descriptions': true, 'hb-descriptions--bordered': this.border }}>\n {this.title && <div class=\"hb-descriptions__title\">{this.title}</div>}\n <div class=\"hb-descriptions__view\">\n <div class=\"hb-descriptions__row\" style={{ gridTemplateColumns: `repeat(${this.column}, minmax(0, 1fr))` }}>\n {this.items.map((item) => (\n <div\n class=\"hb-descriptions__item\"\n style={item.span ? { gridColumn: `span ${item.span}` } : undefined}\n >\n <span class=\"hb-descriptions__label\">\n {item.label}\n {this.colon && <span class=\"hb-descriptions__colon\">:</span>}\n </span>\n <span class=\"hb-descriptions__value\">{item.value}</span>\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport interface DescriptionItem {\n label: string;\n value: string;\n span?: number;\n}\n"],"mappings":"2CAAA,MAAMA,EAAkB,y6OACxB,MAAAC,EAAeD,E,MCMFE,EAAY,M,yBAEfC,MAAgB,GAGhBC,OAAkB,MAGlBC,OAAiB,EAGjBC,MAAiB,KAGjBC,MAA2B,GAEnC,MAAAC,GACE,OACEC,EAAA,OAAAC,IAAA,2CAAKC,MAAO,CAAE,kBAAmB,KAAM,4BAA6BC,KAAKR,SACtEQ,KAAKT,OAASM,EAAA,OAAAC,IAAA,2CAAKC,MAAM,0BAA0BC,KAAKT,OACzDM,EAAA,OAAAC,IAAA,2CAAKC,MAAM,yBACTF,EAAA,OAAAC,IAAA,2CAAKC,MAAM,uBAAuBE,MAAO,CAAEC,oBAAqB,UAAUF,KAAKP,4BAC5EO,KAAKL,MAAMQ,KAAKC,GACfP,EAAA,OACEE,MAAM,wBACNE,MAAOG,EAAKC,KAAO,CAAEC,WAAY,QAAQF,EAAKC,QAAWE,WAEzDV,EAAA,QAAME,MAAM,0BACTK,EAAKI,MACLR,KAAKN,OAASG,EAAA,QAAME,MAAM,0BAAwB,MAErDF,EAAA,QAAME,MAAM,0BAA0BK,EAAKK,Y","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as e,g as s,h as t}from"./p-e42dfa95.js";const i={success:"✓",warning:"⚠",info:"ℹ",error:"✕",loading:"⏳"};const a=class{constructor(s){e(this,s)}get el(){return s(this)}message="";type="info";closable=false;duration=3e3;visible=true;autoCloseTimer;removeTimer;componentDidLoad(){if(this.duration>0){this.autoCloseTimer=setTimeout((()=>this.close()),this.duration)}}close=()=>{this.visible=false;this.removeTimer=setTimeout((()=>this.el.remove()),300)};disconnectedCallback(){if(this.autoCloseTimer)clearTimeout(this.autoCloseTimer);if(this.removeTimer)clearTimeout(this.removeTimer)}render(){return t("div",{key:"8502f9c4c0877fb5cebe6db6fcc838ce9de92c97",class:{"hb-message":true,[`hb-message--${this.type}`]:true,"hb-message--visible":this.visible},role:"alert"},t("span",{key:"fa00c1a8f6fbc9c4be3cb3809a739eb1f08035b2",class:"hb-message__icon"},i[this.type]),t("span",{key:"870991d67ff662ba9c15d3df820394258d5eef3e",class:"hb-message__text"},this.message),this.closable&&t("span",{key:"5f10b7332a0125841384238b2048572e7ee8558b",class:"hb-message__close",onClick:this.close},"×"))}};export{a as hb_message};
|
|
2
|
+
//# sourceMappingURL=p-cb66dbef.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ICON_MAP","success","warning","info","error","loading","Message","message","type","closable","duration","visible","autoCloseTimer","removeTimer","componentDidLoad","this","setTimeout","close","el","remove","disconnectedCallback","clearTimeout","render","h","key","class","role","onClick"],"sources":["src/components/Message/Message.tsx"],"sourcesContent":["import { Component, h, Prop, State, Element } from '@stencil/core';\n\nexport type MessageType = 'success' | 'warning' | 'info' | 'error' | 'loading';\n\nconst ICON_MAP: Record<MessageType, string> = {\n success: '✓',\n warning: '⚠',\n info: 'ℹ',\n error: '✕',\n loading: '⏳',\n};\n\n/**\n * Message 消息提示组件\n * 常用于主动操作后的反馈提示\n */\n@Component({\n tag: 'hb-message',\n shadow: true,\n})\nexport class Message {\n @Element() el: HTMLElement;\n\n /** 消息文字 */\n @Prop() message: string = '';\n\n /** 消息类型 */\n @Prop() type: MessageType = 'info';\n\n /** 是否显示关闭按钮 */\n @Prop() closable: boolean = false;\n\n /** 显示时间(毫秒),0 为不自动关闭 */\n @Prop() duration: number = 3000;\n\n @State() visible: boolean = true;\n\n // L3:存储 timer id 以便 disconnectedCallback 清理(修复前未存、卸载后仍触发 detached 实例)\n private autoCloseTimer?: ReturnType<typeof setTimeout>;\n private removeTimer?: ReturnType<typeof setTimeout>;\n\n componentDidLoad() {\n if (this.duration > 0) {\n this.autoCloseTimer = setTimeout(() => this.close(), this.duration);\n }\n }\n\n private close = () => {\n this.visible = false;\n this.removeTimer = setTimeout(() => this.el.remove(), 300);\n };\n\n disconnectedCallback() {\n if (this.autoCloseTimer) clearTimeout(this.autoCloseTimer);\n if (this.removeTimer) clearTimeout(this.removeTimer);\n }\n\n render() {\n return (\n <div\n class={{\n 'hb-message': true,\n [`hb-message--${this.type}`]: true,\n 'hb-message--visible': this.visible,\n }}\n role=\"alert\"\n >\n <span class=\"hb-message__icon\">{ICON_MAP[this.type]}</span>\n <span class=\"hb-message__text\">{this.message}</span>\n {this.closable && (\n <span class=\"hb-message__close\" onClick={this.close}>\n ×\n </span>\n )}\n </div>\n );\n }\n}\n"],"mappings":"kDAIA,MAAMA,EAAwC,CAC5CC,QAAS,IACTC,QAAS,IACTC,KAAM,IACNC,MAAO,IACPC,QAAS,K,MAWEC,EAAO,M,iDAIVC,QAAkB,GAGlBC,KAAoB,OAGpBC,SAAoB,MAGpBC,SAAmB,IAElBC,QAAmB,KAGpBC,eACAC,YAER,gBAAAC,GACE,GAAIC,KAAKL,SAAW,EAAG,CACrBK,KAAKH,eAAiBI,YAAW,IAAMD,KAAKE,SAASF,KAAKL,S,EAItDO,MAAQ,KACdF,KAAKJ,QAAU,MACfI,KAAKF,YAAcG,YAAW,IAAMD,KAAKG,GAAGC,UAAU,IAAI,EAG5D,oBAAAC,GACE,GAAIL,KAAKH,eAAgBS,aAAaN,KAAKH,gBAC3C,GAAIG,KAAKF,YAAaQ,aAAaN,KAAKF,Y,CAG1C,MAAAS,GACE,OACEC,EAAA,OAAAC,IAAA,2CACEC,MAAO,CACL,aAAc,KACd,CAAC,eAAeV,KAAKP,QAAS,KAC9B,sBAAuBO,KAAKJ,SAE9Be,KAAK,SAELH,EAAA,QAAAC,IAAA,2CAAMC,MAAM,oBAAoBzB,EAASe,KAAKP,OAC9Ce,EAAA,QAAAC,IAAA,2CAAMC,MAAM,oBAAoBV,KAAKR,SACpCQ,KAAKN,UACJc,EAAA,QAAAC,IAAA,2CAAMC,MAAM,oBAAoBE,QAASZ,KAAKE,OAAK,K","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as e,c as t,h as i}from"./p-e42dfa95.js";import{a as o}from"./p-00aa34c8.js";const r='/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}::file-selector-button{appearance:button;background-color:#0000;border:0 solid;border-radius:0;box-sizing:border-box;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;margin:0;margin-inline-end:4px;opacity:1;padding:0}:host,html{-webkit-text-size-adjust:100%;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);line-height:1.5;tab-size:4;-webkit-tap-highlight-color:transparent}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-size:1em;font-variation-settings:var(--default-mono-font-variation-settings,normal)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}button,input,optgroup,select,textarea{background-color:#0000;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex;padding-block:0}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}} /*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer components;:host{display:block}.hb-alert{align-items:flex-start;border-radius:var(--hb-border-radius-base);display:flex;font-size:var(--hb-font-size-sm);gap:var(--hb-spacing-xs);line-height:1.5;padding:var(--hb-spacing-sm)var(--hb-spacing-md)}.hb-alert--center{justify-content:center;text-align:center}.hb-alert__icon{flex-shrink:0;font-size:16px;margin-top:2px}.hb-alert__body{flex:1}.hb-alert__title{font-weight:600}.hb-alert__description{font-size:var(--hb-font-size-xs);margin-top:4px;opacity:.85}.hb-alert__close{cursor:pointer;flex-shrink:0;font-size:16px;opacity:.6}.hb-alert__close:hover{opacity:1}.hb-alert--success{background:var(--hb-color-success-bg);border:1px solid var(--hb-color-success-border);color:var(--hb-color-success)}.hb-alert--warning{background:var(--hb-color-warning-bg);border:1px solid var(--hb-color-warning-border);color:var(--hb-color-warning)}.hb-alert--error{background:var(--hb-color-danger-bg);border:1px solid var(--hb-color-danger-border);color:var(--hb-color-danger)}.hb-alert--info{background:var(--hb-color-primary-bg);border:1px solid var(--hb-color-primary-border);color:var(--hb-color-primary)}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}';const a=r;const n=class{constructor(i){e(this,i);this.hbClose=t(this,"hbClose",7)}title="";description;type="info";closable=false;showIcon=true;center=false;closed=false;hbClose;handleClose=()=>{this.closed=true;this.hbClose.emit()};render(){if(this.closed)return null;const e={success:"✓",warning:"⚠",info:"ℹ",error:"✕"};const t=this.type==="error"||this.type==="warning"?"alert":"status";return i("div",{class:{"hb-alert":true,[`hb-alert--${this.type}`]:true,"hb-alert--center":this.center,"hb-alert--with-description":!!this.description},role:t},this.showIcon&&i("span",{class:"hb-alert__icon","aria-hidden":"true"},e[this.type]),i("div",{class:"hb-alert__body"},i("div",{class:"hb-alert__title"},this.title),this.description&&i("div",{class:"hb-alert__description"},this.description)),this.closable&&i("span",{class:"hb-alert__close",role:"button","aria-label":"关闭",tabIndex:0,onClick:this.handleClose,onKeyDown:o},"×"))}};n.style=a;export{n as hb_alert};
|
|
2
|
+
//# sourceMappingURL=p-cde83f76.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["alertCss","HbAlertStyle0","Alert","title","description","type","closable","showIcon","center","closed","hbClose","handleClose","this","emit","render","icons","success","warning","info","error","liveRole","h","class","role","tabIndex","onClick","onKeyDown","activationClickHandler"],"sources":["src/components/Alert/alert.css?tag=hb-alert&encapsulation=shadow","src/components/Alert/Alert.tsx"],"sourcesContent":[":host { display: block; }\n.hb-alert {\n display: flex; align-items: flex-start; gap: var(--hb-spacing-xs);\n padding: var(--hb-spacing-sm) var(--hb-spacing-md);\n border-radius: var(--hb-border-radius-base);\n font-size: var(--hb-font-size-sm);\n line-height: 1.5;\n}\n.hb-alert--center { justify-content: center; text-align: center; }\n.hb-alert__icon { font-size: 16px; margin-top: 2px; flex-shrink: 0; }\n.hb-alert__body { flex: 1; }\n.hb-alert__title { font-weight: 600; }\n.hb-alert__description { margin-top: 4px; font-size: var(--hb-font-size-xs); opacity: 0.85; }\n.hb-alert__close { cursor: pointer; font-size: 16px; opacity: 0.6; flex-shrink: 0; }\n.hb-alert__close:hover { opacity: 1; }\n\n.hb-alert--success { background: var(--hb-color-success-bg); color: var(--hb-color-success); border: 1px solid var(--hb-color-success-border); }\n.hb-alert--warning { background: var(--hb-color-warning-bg); color: var(--hb-color-warning); border: 1px solid var(--hb-color-warning-border); }\n.hb-alert--error { background: var(--hb-color-danger-bg); color: var(--hb-color-danger); border: 1px solid var(--hb-color-danger-border); }\n.hb-alert--info { background: var(--hb-color-primary-bg); color: var(--hb-color-primary); border: 1px solid var(--hb-color-primary-border); }\n","import { Component, h, Prop, Event, EventEmitter, State } from '@stencil/core';\nimport { activationClickHandler } from '../../utils/a11y';\n\n/**\n * Alert 警告提示组件\n * 展示需要关注的信息\n */\n@Component({\n tag: 'hb-alert',\n styleUrl: 'alert.css',\n shadow: true,\n})\nexport class Alert {\n /** 标题 */\n @Prop() title: string = '';\n\n /** 描述文字 */\n @Prop() description?: string;\n\n /** 类型 */\n @Prop() type: 'success' | 'warning' | 'info' | 'error' = 'info';\n\n /** 是否可关闭 */\n @Prop() closable: boolean = false;\n\n /** 是否显示图标 */\n @Prop() showIcon: boolean = true;\n\n /** 是否居中 */\n @Prop() center: boolean = false;\n\n @State() closed: boolean = false;\n\n @Event() hbClose: EventEmitter<void>;\n\n private handleClose = () => {\n this.closed = true;\n this.hbClose.emit();\n };\n\n render() {\n if (this.closed) return null;\n const icons: Record<string, string> = { success: '✓', warning: '⚠', info: 'ℹ', error: '✕' };\n // error/warning 是紧急通告 → role=alert(断言式,屏幕阅读器即时朗读);\n // info/success 是状态信息 → role=status(礼貌式,不打断)。\n const liveRole = this.type === 'error' || this.type === 'warning' ? 'alert' : 'status';\n return (\n <div class={{ 'hb-alert': true, [`hb-alert--${this.type}`]: true, 'hb-alert--center': this.center, 'hb-alert--with-description': !!this.description }} role={liveRole}>\n {this.showIcon && (\n <span class=\"hb-alert__icon\" aria-hidden=\"true\">\n {icons[this.type]}\n </span>\n )}\n <div class=\"hb-alert__body\">\n <div class=\"hb-alert__title\">{this.title}</div>\n {this.description && <div class=\"hb-alert__description\">{this.description}</div>}\n </div>\n {this.closable && (\n <span class=\"hb-alert__close\" role=\"button\" aria-label=\"关闭\" tabIndex={0} onClick={this.handleClose} onKeyDown={activationClickHandler}>\n ×\n </span>\n )}\n </div>\n );\n }\n}\n"],"mappings":"sFAAA,MAAMA,EAAW,iqNACjB,MAAAC,EAAeD,E,MCWFE,EAAK,M,0DAERC,MAAgB,GAGhBC,YAGAC,KAAiD,OAGjDC,SAAoB,MAGpBC,SAAoB,KAGpBC,OAAkB,MAEjBC,OAAkB,MAElBC,QAEDC,YAAc,KACpBC,KAAKH,OAAS,KACdG,KAAKF,QAAQG,MAAM,EAGrB,MAAAC,GACE,GAAIF,KAAKH,OAAQ,OAAO,KACxB,MAAMM,EAAgC,CAAEC,QAAS,IAAKC,QAAS,IAAKC,KAAM,IAAKC,MAAO,KAGtF,MAAMC,EAAWR,KAAKP,OAAS,SAAWO,KAAKP,OAAS,UAAY,QAAU,SAC9E,OACEgB,EAAA,OAAKC,MAAO,CAAE,WAAY,KAAM,CAAC,aAAaV,KAAKP,QAAS,KAAM,mBAAoBO,KAAKJ,OAAQ,+BAAgCI,KAAKR,aAAemB,KAAMH,GAC1JR,KAAKL,UACJc,EAAA,QAAMC,MAAM,iBAAgB,cAAa,QACtCP,EAAMH,KAAKP,OAGhBgB,EAAA,OAAKC,MAAM,kBACTD,EAAA,OAAKC,MAAM,mBAAmBV,KAAKT,OAClCS,KAAKR,aAAeiB,EAAA,OAAKC,MAAM,yBAAyBV,KAAKR,cAE/DQ,KAAKN,UACJe,EAAA,QAAMC,MAAM,kBAAkBC,KAAK,SAAQ,aAAY,KAAKC,SAAU,EAAGC,QAASb,KAAKD,YAAae,UAAWC,GAAsB,K","ignoreList":[]}
|