antd-solid 0.0.12 → 0.0.13
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/css/index.css +10 -77
- package/dist/index.esm.js +7819 -2492
- package/dist/index.umd.js +1 -1
- package/es/Alert/index.d.ts +10 -0
- package/es/Alert/index.js +26 -0
- package/es/Button/index.d.ts +16 -4
- package/es/Button/index.js +107 -59
- package/es/Button/index.scss.js +1 -1
- package/es/Checkbox/Group.d.ts +19 -0
- package/es/Checkbox/Group.js +49 -0
- package/es/Checkbox/index.d.ts +15 -0
- package/es/Checkbox/index.js +60 -0
- package/es/CodeInput/index.d.ts +18 -0
- package/es/CodeInput/index.js +72 -0
- package/es/Collapse/Item.d.ts +46 -0
- package/es/Collapse/Item.js +130 -0
- package/es/Collapse/context.d.ts +5 -0
- package/es/Collapse/context.js +8 -0
- package/es/Collapse/index.d.ts +25 -10
- package/es/Collapse/index.js +95 -74
- package/es/Collapse/utils.d.ts +8 -0
- package/es/Collapse/utils.js +35 -0
- package/es/ColorPicker/ColorPickerInput.d.ts +3 -0
- package/es/ColorPicker/ColorPickerInput.js +250 -0
- package/es/ColorPicker/ColorPickerSelect.d.ts +3 -0
- package/es/ColorPicker/ColorPickerSelect.js +71 -0
- package/es/ColorPicker/ColorPickerSlider.d.ts +3 -0
- package/es/ColorPicker/ColorPickerSlider.js +115 -0
- package/es/ColorPicker/color.d.ts +24 -0
- package/es/ColorPicker/color.js +63 -0
- package/es/ColorPicker/context.d.ts +9 -0
- package/es/ColorPicker/context.js +5 -0
- package/es/ColorPicker/index.d.ts +31 -0
- package/es/ColorPicker/index.js +139 -0
- package/es/Command/context.d.ts +9 -0
- package/es/Command/context.js +11 -0
- package/es/Command/createCommand.d.ts +17 -0
- package/es/Command/createCommand.js +112 -0
- package/es/Command/index.d.ts +7 -0
- package/es/Command/index.js +9 -0
- package/es/Command/useCommandProps.d.ts +13 -0
- package/es/Command/useCommandProps.js +28 -0
- package/es/Compact/CompactContextIsolator.d.ts +3 -0
- package/es/Compact/CompactContextIsolator.js +15 -0
- package/es/Compact/context.d.ts +4 -0
- package/es/Compact/context.js +7 -0
- package/es/Compact/index.d.ts +11 -9
- package/es/Compact/index.js +28 -13
- package/es/Compact/index.scss.js +6 -0
- package/es/ConfigProvider/context.d.ts +11 -0
- package/es/ConfigProvider/context.js +15 -0
- package/es/ConfigProvider/dark/colorAlgorithm.d.ts +2 -0
- package/es/ConfigProvider/dark/colorAlgorithm.js +9 -0
- package/es/ConfigProvider/dark/colors.d.ts +3 -0
- package/es/ConfigProvider/dark/colors.js +47 -0
- package/es/ConfigProvider/dark/index.d.ts +2 -0
- package/es/ConfigProvider/dark/index.js +11 -0
- package/es/ConfigProvider/index.d.ts +32 -0
- package/es/ConfigProvider/index.js +44 -0
- package/es/ConfigProvider/light/colorAlgorithm.d.ts +2 -0
- package/es/ConfigProvider/light/colorAlgorithm.js +9 -0
- package/es/ConfigProvider/light/colors.d.ts +3 -0
- package/es/ConfigProvider/light/colors.js +45 -0
- package/es/ConfigProvider/light/index.d.ts +2 -0
- package/es/ConfigProvider/light/index.js +11 -0
- package/es/ConfigProvider/seed.d.ts +3 -0
- package/es/ConfigProvider/seed.js +22 -0
- package/es/ConfigProvider/types/index.d.ts +594 -0
- package/es/ConfigProvider/types/index.js +1 -0
- package/es/ConfigProvider/utils/genColorMapToken.d.ts +7 -0
- package/es/ConfigProvider/utils/genColorMapToken.js +85 -0
- package/es/ConfigProvider/utils/getAlphaColor.d.ts +2 -0
- package/es/ConfigProvider/utils/getAlphaColor.js +44 -0
- package/es/ConfigProvider/utils/index.d.ts +3 -0
- package/es/ConfigProvider/utils/index.js +181 -0
- package/es/ContextMenu/index.d.ts +8 -0
- package/es/ContextMenu/index.js +99 -0
- package/es/Cursor/index.d.ts +6 -0
- package/es/Cursor/index.js +71 -0
- package/es/DelayShow/index.d.ts +16 -0
- package/es/DelayShow/index.js +27 -0
- package/es/Divider/index.d.ts +17 -0
- package/es/Divider/index.js +71 -0
- package/es/Drawer/index.d.ts +20 -16
- package/es/Drawer/index.js +162 -111
- package/es/Drawer/index.scss.js +1 -1
- package/es/Dropdown/index.d.ts +16 -0
- package/es/Dropdown/index.js +47 -0
- package/es/Element/index.d.ts +10 -0
- package/es/Element/index.js +42 -0
- package/es/Empty/PRESENTED_IMAGE_SIMPLE.d.ts +2 -1
- package/es/Empty/PRESENTED_IMAGE_SIMPLE.js +25 -9
- package/es/Empty/assets/EmptySvg.js +1 -1
- package/es/Empty/assets/SimpleEmptySvg.js +1 -1
- package/es/Empty/index.d.ts +4 -2
- package/es/Empty/index.js +23 -13
- package/es/Form/Form.d.ts +8 -5
- package/es/Form/Form.js +50 -34
- package/es/Form/FormItem.d.ts +10 -5
- package/es/Form/FormItem.js +121 -104
- package/es/Form/context.d.ts +9 -9
- package/es/Form/context.js +4 -2
- package/es/Fragment/index.d.ts +4 -0
- package/es/Fragment/index.js +7 -0
- package/es/Image/index.d.ts +10 -0
- package/es/Image/index.js +37 -0
- package/es/Input/TextArea.d.ts +23 -0
- package/es/Input/TextArea.js +84 -0
- package/es/Input/index.d.ts +44 -0
- package/es/Input/index.js +213 -0
- package/es/Input/index.scss.js +6 -0
- package/es/InputNumber/index.d.ts +30 -0
- package/es/InputNumber/index.js +122 -0
- package/es/{InputNumber.test.js → InputNumber/index.test.js} +2 -1
- package/es/Menu/InternalMenu.d.ts +22 -0
- package/es/Menu/InternalMenu.js +196 -0
- package/es/Menu/index.d.ts +75 -0
- package/es/Menu/index.js +64 -0
- package/es/Message/Message.d.ts +9 -0
- package/es/Message/Message.js +34 -0
- package/es/Message/index.d.ts +12 -0
- package/es/Message/index.js +80 -0
- package/es/Message/index.scss.js +6 -0
- package/es/Message/useMessage.d.ts +6 -0
- package/es/Message/useMessage.js +54 -0
- package/es/Modal/index.d.ts +73 -0
- package/es/Modal/index.js +237 -0
- package/es/Modal/index.scss.js +6 -0
- package/es/Modal/useModal.d.ts +5 -0
- package/es/Modal/useModal.js +51 -0
- package/es/Modal/warning.d.ts +5 -0
- package/es/Modal/warning.js +43 -0
- package/es/{Popconfirm.d.ts → Popconfirm/index.d.ts} +2 -2
- package/es/Popconfirm/index.js +62 -0
- package/es/{Popover.d.ts → Popover/index.d.ts} +2 -2
- package/es/{Popover.js → Popover/index.js} +7 -12
- package/es/Progress/Circle.d.ts +16 -0
- package/es/Progress/Circle.js +122 -0
- package/es/Progress/index.d.ts +5 -2
- package/es/Progress/index.js +70 -65
- package/es/Radio/Button.d.ts +7 -0
- package/es/Radio/Button.js +72 -0
- package/es/Radio/Group.d.ts +18 -0
- package/es/Radio/Group.js +57 -0
- package/es/Radio/index.d.ts +14 -0
- package/es/Radio/index.js +68 -0
- package/es/RangeInput/index.d.ts +23 -0
- package/es/RangeInput/index.js +208 -0
- package/es/Result/index.js +49 -0
- package/es/Segmented/index.d.ts +10 -7
- package/es/Segmented/index.js +54 -53
- package/es/Select/index.d.ts +17 -0
- package/es/Select/index.js +75 -0
- package/es/SelectInput/index.d.ts +39 -0
- package/es/SelectInput/index.js +245 -0
- package/es/Slider/index.d.ts +47 -0
- package/es/Slider/index.js +177 -0
- package/es/Space/index.d.ts +13 -0
- package/es/Space/index.js +16 -0
- package/es/Spin/index.d.ts +19 -0
- package/es/Spin/index.js +82 -0
- package/es/{Switch.d.ts → Switch/index.d.ts} +9 -0
- package/es/Switch/index.js +41 -0
- package/es/{Table.d.ts → Table/index.d.ts} +6 -2
- package/es/Table/index.js +71 -0
- package/es/Tabs/index.d.ts +49 -0
- package/es/Tabs/index.js +256 -0
- package/es/Timeline/index.js +31 -0
- package/es/Tooltip/context.d.ts +5 -0
- package/es/Tooltip/context.js +5 -0
- package/es/Tooltip/index.d.ts +64 -0
- package/es/Tooltip/index.js +499 -0
- package/es/Transformer/index.d.ts +88 -0
- package/es/Transformer/index.js +882 -0
- package/es/Tree/SingleLevelTree.d.ts +28 -0
- package/es/Tree/SingleLevelTree.js +299 -0
- package/es/Tree/index.d.ts +83 -0
- package/es/Tree/index.js +197 -0
- package/es/TreeFor/index.d.ts +31 -0
- package/es/TreeFor/index.js +80 -0
- package/es/TreeSelect/index.d.ts +26 -0
- package/es/TreeSelect/index.js +98 -0
- package/es/{Upload.d.ts → Upload/index.d.ts} +8 -1
- package/es/Upload/index.js +112 -0
- package/es/assets/svg/ColorPickUp.d.ts +4 -0
- package/es/assets/svg/ColorPickUp.js +25 -0
- package/es/assets/svg/Crosshair.d.ts +7 -0
- package/es/assets/svg/Crosshair.js +51 -0
- package/es/assets/svg/Resize.d.ts +4 -0
- package/es/assets/svg/Resize.js +25 -0
- package/es/assets/svg/Rotate.d.ts +4 -0
- package/es/assets/svg/Rotate.js +20 -0
- package/es/assets/svg/RotateArrow.d.ts +4 -0
- package/es/assets/svg/RotateArrow.js +21 -0
- package/es/assets/svg/common.d.ts +2 -0
- package/es/assets/svg/common.js +9 -0
- package/es/hooks/createControllableValue.d.ts +1 -1
- package/es/hooks/createControllableValue.js +16 -17
- package/es/hooks/createTransition.d.ts +6 -2
- package/es/hooks/createTransition.js +12 -8
- package/es/hooks/useClickAway.d.ts +1 -1
- package/es/hooks/useClickAway.js +4 -3
- package/es/hooks/useComponentSize.d.ts +3 -0
- package/es/hooks/useComponentSize.js +12 -0
- package/es/hooks/useCounter.d.ts +12 -0
- package/es/hooks/useCounter.js +30 -0
- package/es/hooks/useFocus.d.ts +2 -0
- package/es/hooks/useFocus.js +24 -0
- package/es/hooks/useHover.d.ts +2 -0
- package/es/hooks/useHover.js +33 -0
- package/es/hooks/useLocale.d.ts +1 -0
- package/es/hooks/useLocale.js +11 -0
- package/es/hooks/useMouse.d.ts +1 -0
- package/es/hooks/useMouse.js +18 -0
- package/es/hooks/useScroll.d.ts +2 -0
- package/es/hooks/useScroll.js +29 -0
- package/es/hooks/useSize.d.ts +8 -2
- package/es/hooks/useSize.js +25 -13
- package/es/hooks/useVirtualList.d.ts +14 -0
- package/es/hooks/useVirtualList.js +45 -0
- package/es/index.d.ts +59 -8
- package/es/index.js +51 -21
- package/es/locale/en_US.d.ts +3 -0
- package/es/locale/en_US.js +9 -0
- package/es/locale/index.d.ts +5 -0
- package/es/locale/index.js +1 -0
- package/es/locale/zh_CN.d.ts +3 -0
- package/es/locale/zh_CN.js +9 -0
- package/es/types/index.d.ts +11 -2
- package/es/utils/animation.d.ts +6 -0
- package/es/utils/animation.js +20 -0
- package/es/utils/array.d.ts +2 -1
- package/es/utils/array.js +5 -1
- package/es/utils/domPoint.d.ts +7 -0
- package/es/utils/domPoint.js +11 -0
- package/es/utils/math.d.ts +17 -0
- package/es/utils/math.js +25 -0
- package/es/utils/number.d.ts +1 -0
- package/es/utils/number.js +14 -0
- package/es/utils/setupGlobalDrag.d.ts +10 -0
- package/es/utils/setupGlobalDrag.js +38 -0
- package/es/utils/solid.d.ts +2 -2
- package/es/utils/solid.js +7 -8
- package/package.json +10 -11
- package/es/ColorPicker.d.ts +0 -8
- package/es/ColorPicker.js +0 -6
- package/es/DatePicker.d.ts +0 -19
- package/es/DatePicker.js +0 -9
- package/es/Image.d.ts +0 -9
- package/es/Image.js +0 -22
- package/es/Input.d.ts +0 -29
- package/es/Input.js +0 -144
- package/es/InputNumber.d.ts +0 -11
- package/es/InputNumber.js +0 -92
- package/es/Modal.d.ts +0 -47
- package/es/Modal.js +0 -210
- package/es/Popconfirm.js +0 -64
- package/es/Radio.d.ts +0 -27
- package/es/Radio.js +0 -93
- package/es/Result.js +0 -29
- package/es/Select.d.ts +0 -16
- package/es/Select.js +0 -113
- package/es/Skeleton.d.ts +0 -9
- package/es/Skeleton.js +0 -9
- package/es/Spin.d.ts +0 -10
- package/es/Spin.js +0 -28
- package/es/Switch.js +0 -30
- package/es/Table.js +0 -57
- package/es/Tabs.d.ts +0 -17
- package/es/Tabs.js +0 -117
- package/es/Timeline.js +0 -30
- package/es/Tooltip.d.ts +0 -34
- package/es/Tooltip.js +0 -302
- package/es/Tree.d.ts +0 -28
- package/es/Tree.js +0 -198
- package/es/Upload.js +0 -96
- package/es/hooks/createUpdateEffect.d.ts +0 -5
- package/es/hooks/createUpdateEffect.js +0 -12
- package/es/utils/EventEmitter.d.ts +0 -7
- package/es/utils/EventEmitter.js +0 -13
- package/es/utils/ReactToSolid.d.ts +0 -8
- package/es/utils/ReactToSolid.js +0 -30
- package/es/utils/SolidToReact.d.ts +0 -8
- package/es/utils/SolidToReact.js +0 -23
- package/es/utils/component.d.ts +0 -31
- package/es/utils/component.js +0 -68
- package/es/utils/zh_CN.d.ts +0 -2
- package/es/utils/zh_CN.js +0 -236
- package/src/Button/index.scss +0 -9
- package/src/Button/index.tsx +0 -137
- package/src/Collapse/index.tsx +0 -86
- package/src/ColorPicker.tsx +0 -11
- package/src/Compact/index.tsx +0 -20
- package/src/DatePicker.tsx +0 -30
- package/src/Drawer/index.scss +0 -53
- package/src/Drawer/index.tsx +0 -211
- package/src/Empty/PRESENTED_IMAGE_SIMPLE.tsx +0 -15
- package/src/Empty/assets/EmptySvg.tsx +0 -43
- package/src/Empty/assets/SimpleEmptySvg.tsx +0 -16
- package/src/Empty/index.tsx +0 -25
- package/src/Form/Form.tsx +0 -94
- package/src/Form/FormItem.tsx +0 -141
- package/src/Form/context.ts +0 -16
- package/src/Form/index.ts +0 -13
- package/src/Image.tsx +0 -29
- package/src/Input.tsx +0 -202
- package/src/InputNumber.test.tsx +0 -46
- package/src/InputNumber.tsx +0 -139
- package/src/Modal.tsx +0 -221
- package/src/Popconfirm.tsx +0 -75
- package/src/Popover.tsx +0 -30
- package/src/Progress/index.tsx +0 -81
- package/src/Radio.tsx +0 -142
- package/src/Result.tsx +0 -38
- package/src/Segmented/index.tsx +0 -95
- package/src/Select.tsx +0 -138
- package/src/Skeleton.tsx +0 -14
- package/src/Spin.tsx +0 -34
- package/src/Switch.tsx +0 -34
- package/src/Table.tsx +0 -53
- package/src/Tabs.tsx +0 -131
- package/src/Timeline.tsx +0 -33
- package/src/Tooltip.tsx +0 -340
- package/src/Tree.tsx +0 -247
- package/src/Upload.tsx +0 -143
- package/src/hooks/createControllableValue.ts +0 -68
- package/src/hooks/createTransition.ts +0 -52
- package/src/hooks/createUpdateEffect.ts +0 -16
- package/src/hooks/index.ts +0 -2
- package/src/hooks/useClickAway.ts +0 -18
- package/src/hooks/useSize.ts +0 -26
- package/src/index.ts +0 -47
- package/src/types/index.ts +0 -5
- package/src/utils/EventEmitter.ts +0 -15
- package/src/utils/ReactToSolid.tsx +0 -38
- package/src/utils/SolidToReact.tsx +0 -27
- package/src/utils/array.ts +0 -21
- package/src/utils/component.tsx +0 -85
- package/src/utils/solid.ts +0 -61
- package/src/utils/zh_CN.ts +0 -236
- /package/es/{InputNumber.test.d.ts → InputNumber/index.test.d.ts} +0 -0
- /package/es/{Result.d.ts → Result/index.d.ts} +0 -0
- /package/es/{Timeline.d.ts → Timeline/index.d.ts} +0 -0
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
import { delegateEvents, createComponent, use, insert, effect, style, Dynamic, setAttribute, className, template } from 'solid-js/web';
|
|
2
|
+
import { useContext, mergeProps, createMemo, createSignal, Show, For } from 'solid-js';
|
|
3
|
+
import cs from 'classnames';
|
|
4
|
+
import { compact, pick, isUndefined } from 'lodash-es';
|
|
5
|
+
import Tooltip from '../Tooltip/index.js';
|
|
6
|
+
import createControllableValue from '../hooks/createControllableValue.js';
|
|
7
|
+
import useClickAway from '../hooks/useClickAway.js';
|
|
8
|
+
import Element from '../Element/index.js';
|
|
9
|
+
import useComponentSize from '../hooks/useComponentSize.js';
|
|
10
|
+
import CompactContext from '../Compact/context.js';
|
|
11
|
+
|
|
12
|
+
var _tmpl$ = /*#__PURE__*/template(`<div class=w-full>`),
|
|
13
|
+
_tmpl$2 = /*#__PURE__*/template(`<span class="right-[--ant-select-input-padding-right] i-ant-design:close-circle-filled cursor-pointer text-[var(--ant-color-text-quaternary)] hover:text-[var(--ant-color-text-tertiary)] active:text-[var(--ant-color-text)]">`),
|
|
14
|
+
_tmpl$3 = /*#__PURE__*/template(`<div tabindex=0><div>`),
|
|
15
|
+
_tmpl$4 = /*#__PURE__*/template(`<div class="w-[--ant-select-popup-match-width] max-h-400px overflow-auto [font-size:var(--ant-select-popup-font-size)]">`),
|
|
16
|
+
_tmpl$5 = /*#__PURE__*/template(`<span class="inline-block w-0"> `),
|
|
17
|
+
_tmpl$6 = /*#__PURE__*/template(`<span class="block w-full h-[calc(var(--ant-select-input-height)-2px)] leading-[calc(var(--ant-select-input-height)-2px)] text-[var(--ant-color-text-placeholder)]">`),
|
|
18
|
+
_tmpl$7 = /*#__PURE__*/template(`<div class="w-full h-[calc(var(--ant-select-input-height)-2px)] leading-[calc(var(--ant-select-input-height)-2px)] ellipsis">`),
|
|
19
|
+
_tmpl$8 = /*#__PURE__*/template(`<span class="inline-block my-2px mr-4px bg-[var(--ant-select-multiple-item-bg)] leading-[var(--ant-select-multiple-item-height)] h-[var(--ant-select-multiple-item-height)] pl-8px pr-4px rounded-[var(--ant-border-radius-sm)]"><span class="i-ant-design:close-outlined text-[var(--ant-color-icon)] hover:text-[var(--ant-color-icon-hover)] text-12px cursor-pointer">`),
|
|
20
|
+
_tmpl$9 = /*#__PURE__*/template(`<span class="i-ant-design:down-outlined text-[var(--ant-color-text-quaternary)] text-12px">`);
|
|
21
|
+
function SelectInput(_props) {
|
|
22
|
+
let select;
|
|
23
|
+
let tooltipContent;
|
|
24
|
+
const {
|
|
25
|
+
compact: isCompact
|
|
26
|
+
} = useContext(CompactContext);
|
|
27
|
+
const props = mergeProps({
|
|
28
|
+
variant: 'outlined',
|
|
29
|
+
placement: 'bottomLeft'
|
|
30
|
+
}, _props);
|
|
31
|
+
const size = useComponentSize(() => props.size);
|
|
32
|
+
const [value, setValue] = createControllableValue(props, {
|
|
33
|
+
defaultValue: []
|
|
34
|
+
});
|
|
35
|
+
const valueArr = createMemo(() => value() ?? []);
|
|
36
|
+
const [open, setOpen] = createControllableValue(_props, {
|
|
37
|
+
defaultValue: false,
|
|
38
|
+
defaultValuePropName: 'defaultOpen',
|
|
39
|
+
valuePropName: 'open',
|
|
40
|
+
trigger: 'onOpenChange'
|
|
41
|
+
});
|
|
42
|
+
useClickAway(() => setOpen(false), () => compact([select, tooltipContent]));
|
|
43
|
+
const [popupMatchWidth, setPopupMatchWidth] = createSignal(0);
|
|
44
|
+
const [hover, setHover] = createSignal(false);
|
|
45
|
+
const showClearBtn = createMemo(() => props.allowClear && hover() && valueArr().length > 0);
|
|
46
|
+
const optionLabelRender = v => props.labelRender ? props.labelRender(v) : String(v);
|
|
47
|
+
const style$1 = createMemo(() => ({
|
|
48
|
+
'--ant-select-input-font-size': {
|
|
49
|
+
small: 'var(--ant-font-size)',
|
|
50
|
+
middle: 'var(--ant-font-size)',
|
|
51
|
+
large: 'var(--ant-font-size-lg)'
|
|
52
|
+
}[size()],
|
|
53
|
+
'--ant-select-input-padding-right': {
|
|
54
|
+
small: '7px',
|
|
55
|
+
middle: '11px',
|
|
56
|
+
large: '11px'
|
|
57
|
+
}[size()],
|
|
58
|
+
'--ant-select-input-padding-left': valueArr().length && props.multiple ? '4px' : 'var(--ant-select-input-padding-right)',
|
|
59
|
+
'--ant-select-input-padding': '0 var(--ant-select-input-padding-right) 0 var(--ant-select-input-padding-left)',
|
|
60
|
+
'--ant-select-input-addon-after-padding': '0 0 0 var(--ant-padding-xs)',
|
|
61
|
+
'--ant-select-popup-match-width': `${popupMatchWidth()}px`,
|
|
62
|
+
'--ant-select-popup-font-size': {
|
|
63
|
+
small: 'var(--ant-font-size)',
|
|
64
|
+
middle: 'var(--ant-font-size)',
|
|
65
|
+
large: 'var(--ant-font-size-lg)'
|
|
66
|
+
}[size()],
|
|
67
|
+
...props.style
|
|
68
|
+
}));
|
|
69
|
+
return createComponent(Element, {
|
|
70
|
+
ref(r$) {
|
|
71
|
+
var _ref$ = select;
|
|
72
|
+
typeof _ref$ === "function" ? _ref$(r$) : select = r$;
|
|
73
|
+
},
|
|
74
|
+
get ["class"]() {
|
|
75
|
+
return cs('!p[.ant-input-addon]:my--1px !p[.ant-input-addon]:mx--12px', 'rounded-6px cursor-pointer inline-block text-[var(--ant-color-text)] leading-[var(--ant-line-height)]', isCompact && 'ant-compact-item', props.class, props.disabled && 'cursor-not-allowed');
|
|
76
|
+
},
|
|
77
|
+
get style() {
|
|
78
|
+
return style$1();
|
|
79
|
+
},
|
|
80
|
+
get children() {
|
|
81
|
+
return createComponent(Tooltip, {
|
|
82
|
+
plain: true,
|
|
83
|
+
get open() {
|
|
84
|
+
return open();
|
|
85
|
+
},
|
|
86
|
+
onOpenChange: setOpen,
|
|
87
|
+
trigger: false,
|
|
88
|
+
get placement() {
|
|
89
|
+
return props.placement;
|
|
90
|
+
},
|
|
91
|
+
arrow: false,
|
|
92
|
+
contentStyle: {
|
|
93
|
+
padding: 0
|
|
94
|
+
},
|
|
95
|
+
content: () => (() => {
|
|
96
|
+
var _el$5 = _tmpl$4();
|
|
97
|
+
var _ref$2 = tooltipContent;
|
|
98
|
+
typeof _ref$2 === "function" ? use(_ref$2, _el$5) : tooltipContent = _el$5;
|
|
99
|
+
insert(_el$5, () => props.content(() => setOpen(false)));
|
|
100
|
+
effect(_$p => style(_el$5, {
|
|
101
|
+
...pick(style$1(), ['--ant-select-popup-font-size', '--ant-select-popup-match-width'])
|
|
102
|
+
}, _$p));
|
|
103
|
+
return _el$5;
|
|
104
|
+
})(),
|
|
105
|
+
get getPopupContainer() {
|
|
106
|
+
return props.getPopupContainer;
|
|
107
|
+
},
|
|
108
|
+
get children() {
|
|
109
|
+
var _el$ = _tmpl$3(),
|
|
110
|
+
_el$3 = _el$.firstChild;
|
|
111
|
+
_el$.addEventListener("mouseleave", () => setHover(false));
|
|
112
|
+
_el$.addEventListener("mouseenter", () => setHover(true));
|
|
113
|
+
_el$.$$click = e => {
|
|
114
|
+
setOpen(v => !v);
|
|
115
|
+
setPopupMatchWidth(e.currentTarget.offsetWidth);
|
|
116
|
+
e.currentTarget.focus();
|
|
117
|
+
};
|
|
118
|
+
insert(_el$, createComponent(Show, {
|
|
119
|
+
get when() {
|
|
120
|
+
return valueArr().length;
|
|
121
|
+
},
|
|
122
|
+
get fallback() {
|
|
123
|
+
return (() => {
|
|
124
|
+
var _el$6 = _tmpl$6();
|
|
125
|
+
insert(_el$6, () => props.placeholder, null);
|
|
126
|
+
insert(_el$6, createComponent(Show, {
|
|
127
|
+
get when() {
|
|
128
|
+
return !props.placeholder;
|
|
129
|
+
},
|
|
130
|
+
get children() {
|
|
131
|
+
return _tmpl$5();
|
|
132
|
+
}
|
|
133
|
+
}), null);
|
|
134
|
+
return _el$6;
|
|
135
|
+
})();
|
|
136
|
+
},
|
|
137
|
+
get children() {
|
|
138
|
+
return createComponent(Show, {
|
|
139
|
+
get when() {
|
|
140
|
+
return props.multiple;
|
|
141
|
+
},
|
|
142
|
+
get fallback() {
|
|
143
|
+
return createComponent(Dynamic, {
|
|
144
|
+
component: () => {
|
|
145
|
+
const optionLabel = createMemo(() => optionLabelRender(valueArr()[0]));
|
|
146
|
+
return (() => {
|
|
147
|
+
var _el$8 = _tmpl$7();
|
|
148
|
+
insert(_el$8, optionLabel);
|
|
149
|
+
effect(() => setAttribute(_el$8, "title", typeof optionLabel() === 'string' ? optionLabel() : undefined));
|
|
150
|
+
return _el$8;
|
|
151
|
+
})();
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
},
|
|
155
|
+
get children() {
|
|
156
|
+
var _el$2 = _tmpl$();
|
|
157
|
+
insert(_el$2, createComponent(For, {
|
|
158
|
+
get each() {
|
|
159
|
+
return valueArr();
|
|
160
|
+
},
|
|
161
|
+
children: item => {
|
|
162
|
+
const optionLabel = createMemo(() => optionLabelRender(valueArr()[0]));
|
|
163
|
+
return (() => {
|
|
164
|
+
var _el$9 = _tmpl$8(),
|
|
165
|
+
_el$10 = _el$9.firstChild;
|
|
166
|
+
insert(_el$9, optionLabel, _el$10);
|
|
167
|
+
_el$10.$$click = () => setValue(valueArr().filter(v => v !== item));
|
|
168
|
+
effect(() => setAttribute(_el$9, "title", typeof optionLabel() === 'string' ? optionLabel() : undefined));
|
|
169
|
+
return _el$9;
|
|
170
|
+
})();
|
|
171
|
+
}
|
|
172
|
+
}));
|
|
173
|
+
return _el$2;
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
}), _el$3);
|
|
178
|
+
insert(_el$3, createComponent(Show, {
|
|
179
|
+
get when() {
|
|
180
|
+
return showClearBtn();
|
|
181
|
+
},
|
|
182
|
+
get fallback() {
|
|
183
|
+
return createComponent(Show, {
|
|
184
|
+
get when() {
|
|
185
|
+
return isUndefined(props.suffixIcon);
|
|
186
|
+
},
|
|
187
|
+
get fallback() {
|
|
188
|
+
return props.suffixIcon;
|
|
189
|
+
},
|
|
190
|
+
get children() {
|
|
191
|
+
return _tmpl$9();
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
},
|
|
195
|
+
get children() {
|
|
196
|
+
var _el$4 = _tmpl$2();
|
|
197
|
+
_el$4.$$click = e => {
|
|
198
|
+
e.stopPropagation();
|
|
199
|
+
setValue([]);
|
|
200
|
+
setOpen(false);
|
|
201
|
+
};
|
|
202
|
+
return _el$4;
|
|
203
|
+
}
|
|
204
|
+
}));
|
|
205
|
+
effect(_p$ => {
|
|
206
|
+
var _v$ = cs('p[.ant-input-addon]:border-transparent p[.ant-input-addon]:bg-transparent p[.ant-input-addon]:focus-within:border-transparent p[.ant-input-addon]:hover:border-transparent p[.ant-input-addon]:focus-within:[box-shadow:none]', 'relative h-[--ant-select-input-height] rounded-inherit py-1px flex items-center [font-size:var(--ant-select-input-font-size)] p-[--ant-select-input-padding]', props.disabled && '[pointer-events:none] bg-[var(--ant-color-bg-container-disabled)] color-[var(--ant-color-text-disabled)]', props.variant === 'outlined' && {
|
|
207
|
+
default: cs('border-1px border-solid border-[--ant-color-border] bg-[--ant-color-bg-container]', !props.disabled && 'hover:border-[var(--ant-color-primary)] focus-within:border-[var(--ant-color-primary)] focus-within:[box-shadow:0_0_0_2px_var(--ant-control-outline)]'),
|
|
208
|
+
error: cs('border-1px border-solid border-[--ant-color-error] bg-[--ant-color-bg-container]', !props.disabled && 'hover:border-[var(--ant-color-error-border-hover)] focus-within:[box-shadow:0_0_0_2px_rgba(255,38,5,.06)]'),
|
|
209
|
+
warning: cs('border-1px border-solid border-[--ant-color-warning] bg-[--ant-color-bg-container]', !props.disabled && 'hover:border-[var(--ant-color-warning-border-hover)] focus-within:[box-shadow:0_0_0_2px_rgba(255,215,5,.1)]')
|
|
210
|
+
}[props.status ?? 'default'], props.variant === 'filled' && {
|
|
211
|
+
default: cs('bg-[--ant-color-fill-tertiary]', !props.disabled && 'hover:bg-[--ant-color-fill-secondary]'),
|
|
212
|
+
error: cs('bg-[--ant-color-error-bg]', !props.disabled && 'hover:bg-[--ant-color-error-bg-hover]'),
|
|
213
|
+
warning: cs('bg-[--ant-color-warning-bg]', !props.disabled && 'hover:bg-[--ant-color-warning-bg-hover]')
|
|
214
|
+
}[props.status ?? 'default']),
|
|
215
|
+
_v$2 = {
|
|
216
|
+
small: '24px',
|
|
217
|
+
middle: '32px',
|
|
218
|
+
large: '40px'
|
|
219
|
+
}[size()],
|
|
220
|
+
_v$3 = {
|
|
221
|
+
small: '16px',
|
|
222
|
+
middle: '24px',
|
|
223
|
+
large: '32px'
|
|
224
|
+
}[size()],
|
|
225
|
+
_v$4 = cs('shrink-0 flex justify-end items-center p-[--ant-select-input-addon-after-padding] empty:hidden');
|
|
226
|
+
_v$ !== _p$.e && className(_el$, _p$.e = _v$);
|
|
227
|
+
_v$2 !== _p$.t && ((_p$.t = _v$2) != null ? _el$.style.setProperty("--ant-select-input-height", _v$2) : _el$.style.removeProperty("--ant-select-input-height"));
|
|
228
|
+
_v$3 !== _p$.a && ((_p$.a = _v$3) != null ? _el$.style.setProperty("--ant-select-multiple-item-height", _v$3) : _el$.style.removeProperty("--ant-select-multiple-item-height"));
|
|
229
|
+
_v$4 !== _p$.o && className(_el$3, _p$.o = _v$4);
|
|
230
|
+
return _p$;
|
|
231
|
+
}, {
|
|
232
|
+
e: undefined,
|
|
233
|
+
t: undefined,
|
|
234
|
+
a: undefined,
|
|
235
|
+
o: undefined
|
|
236
|
+
});
|
|
237
|
+
return _el$;
|
|
238
|
+
}
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
delegateEvents(["click"]);
|
|
244
|
+
|
|
245
|
+
export { SelectInput as default };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { type Component, type JSX, type JSXElement } from 'solid-js';
|
|
2
|
+
import { type StringOrJSXElement, type StyleProps } from '../types';
|
|
3
|
+
export interface SliderProps extends StyleProps {
|
|
4
|
+
defaultValue?: number | null;
|
|
5
|
+
value?: number | null;
|
|
6
|
+
/**
|
|
7
|
+
* 当 Slider 的值发生改变时,会触发 onChange 事件,并把改变后的值作为参数传入
|
|
8
|
+
*/
|
|
9
|
+
onChange?: (value: number) => void;
|
|
10
|
+
/**
|
|
11
|
+
* 与 mouseup 和 keyup 触发时机一致,把当前值作为参数传入
|
|
12
|
+
*/
|
|
13
|
+
onChangeComplete?: (value: number) => void;
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* 最大值
|
|
17
|
+
* 默认 100
|
|
18
|
+
*/
|
|
19
|
+
max?: number;
|
|
20
|
+
/**
|
|
21
|
+
* 最大值
|
|
22
|
+
* 默认 0
|
|
23
|
+
*/
|
|
24
|
+
min?: number;
|
|
25
|
+
/**
|
|
26
|
+
* 步长
|
|
27
|
+
* 默认 1
|
|
28
|
+
*/
|
|
29
|
+
step?: number;
|
|
30
|
+
/**
|
|
31
|
+
* 是否展示 tooltip
|
|
32
|
+
* 默认 true
|
|
33
|
+
*/
|
|
34
|
+
tooltip?: boolean | {
|
|
35
|
+
formatter?: (value: number) => JSXElement;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* 抓取点元素
|
|
39
|
+
*/
|
|
40
|
+
handle?: StringOrJSXElement;
|
|
41
|
+
/**
|
|
42
|
+
* 轨道背景色元素的 style
|
|
43
|
+
*/
|
|
44
|
+
railBgStyle?: JSX.CSSProperties;
|
|
45
|
+
}
|
|
46
|
+
declare const Slider: Component<SliderProps>;
|
|
47
|
+
export default Slider;
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { delegateEvents, createComponent, insert, memo, use, effect, className, setAttribute, style, template } from 'solid-js/web';
|
|
2
|
+
import { mergeProps, createMemo, createSignal, children, createEffect, onCleanup, Show } from 'solid-js';
|
|
3
|
+
import cs from 'classnames';
|
|
4
|
+
import { clamp, isNil } from 'lodash-es';
|
|
5
|
+
import NP from 'number-precision';
|
|
6
|
+
import createControllableValue from '../hooks/createControllableValue.js';
|
|
7
|
+
import Tooltip from '../Tooltip/index.js';
|
|
8
|
+
import useHover from '../hooks/useHover.js';
|
|
9
|
+
import useFocus from '../hooks/useFocus.js';
|
|
10
|
+
import Element from '../Element/index.js';
|
|
11
|
+
import { unwrapStringOrJSXElement } from '../utils/solid.js';
|
|
12
|
+
import { setupGlobalDrag } from '../utils/setupGlobalDrag.js';
|
|
13
|
+
|
|
14
|
+
var _tmpl$ = /*#__PURE__*/template(`<div>`),
|
|
15
|
+
_tmpl$2 = /*#__PURE__*/template(`<div class="absolute top-1/2 -translate-1/2 w-[--ant-slider-handle-size] h-[--ant-slider-handle-size]">`),
|
|
16
|
+
_tmpl$3 = /*#__PURE__*/template(`<div><div></div><div></div><div class="absolute left-[calc(var(--ant-slider-handle-size)/2)] right-[calc(var(--ant-slider-handle-size)/2)] top-1/2 -translate-y-1/2">`);
|
|
17
|
+
const Slider = _props => {
|
|
18
|
+
let containerRef;
|
|
19
|
+
let handleRef;
|
|
20
|
+
const props = mergeProps({
|
|
21
|
+
min: 0,
|
|
22
|
+
max: 100,
|
|
23
|
+
step: 1,
|
|
24
|
+
tooltip: true
|
|
25
|
+
}, _props);
|
|
26
|
+
const [_value, _setValue] = createControllableValue(props);
|
|
27
|
+
const value = createMemo(() => clamp(typeof _value() === 'number' ? _value() : 0, props.min, props.max));
|
|
28
|
+
const setValue = v => {
|
|
29
|
+
const _v = clamp(NP.times(Math.round(v / props.step), props.step), props.min, props.max);
|
|
30
|
+
_setValue(_v);
|
|
31
|
+
};
|
|
32
|
+
const gap = createMemo(() => props.max - props.min);
|
|
33
|
+
const progress = createMemo(() => (value() - props.min) / gap());
|
|
34
|
+
const isHover = useHover(() => handleRef);
|
|
35
|
+
const isFocus = useFocus(() => handleRef);
|
|
36
|
+
const [isDragging, setIsDragging] = createSignal(false);
|
|
37
|
+
const resolvedHandle = children(() => unwrapStringOrJSXElement(props.handle));
|
|
38
|
+
// 注册键盘监听
|
|
39
|
+
createEffect(() => {
|
|
40
|
+
if (props.disabled) return;
|
|
41
|
+
const onKeydown = e => {
|
|
42
|
+
if (document.activeElement !== handleRef) return;
|
|
43
|
+
switch (e.code) {
|
|
44
|
+
case 'ArrowLeft':
|
|
45
|
+
case 'ArrowDown':
|
|
46
|
+
e.preventDefault();
|
|
47
|
+
setValue(NP.minus(value(), props.step));
|
|
48
|
+
break;
|
|
49
|
+
case 'ArrowRight':
|
|
50
|
+
case 'ArrowUp':
|
|
51
|
+
e.preventDefault();
|
|
52
|
+
setValue(NP.plus(value(), props.step));
|
|
53
|
+
e.preventDefault();
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
window.addEventListener('keydown', onKeydown);
|
|
58
|
+
onCleanup(() => {
|
|
59
|
+
window.removeEventListener('keydown', onKeydown);
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
return createComponent(Element, {
|
|
63
|
+
ref(r$) {
|
|
64
|
+
var _ref$ = containerRef;
|
|
65
|
+
typeof _ref$ === "function" ? _ref$(r$) : containerRef = r$;
|
|
66
|
+
},
|
|
67
|
+
get ["class"]() {
|
|
68
|
+
return cs(props.class, 'relative cursor-pointer', props.disabled && 'cursor-not-allowed');
|
|
69
|
+
},
|
|
70
|
+
get style() {
|
|
71
|
+
return {
|
|
72
|
+
'--ant-slider-rail-size': '4px',
|
|
73
|
+
// 轨道高度
|
|
74
|
+
'--ant-slider-handle-size': '14px',
|
|
75
|
+
// 抓取点元素大小
|
|
76
|
+
'--ant-slider-rail-bg': 'var(--ant-color-fill-tertiary)',
|
|
77
|
+
'--ant-slider-rail-hover-bg': 'var(--ant-color-fill-secondary)',
|
|
78
|
+
'--ant-slider-track-bg': 'var(--ant-color-primary-border)',
|
|
79
|
+
'--ant-slider-track-hover-bg': 'var(--ant-color-primary-border-hover)',
|
|
80
|
+
padding: 'calc((var(--ant-slider-handle-size) - var(--ant-slider-rail-size)) / 2) 0',
|
|
81
|
+
...props.style
|
|
82
|
+
};
|
|
83
|
+
},
|
|
84
|
+
get children() {
|
|
85
|
+
var _el$ = _tmpl$3(),
|
|
86
|
+
_el$2 = _el$.firstChild,
|
|
87
|
+
_el$3 = _el$2.nextSibling,
|
|
88
|
+
_el$4 = _el$3.nextSibling;
|
|
89
|
+
_el$.$$click = e => {
|
|
90
|
+
const handleWidth = handleRef?.offsetWidth ?? 0;
|
|
91
|
+
const halfHandleWidth = handleWidth / 2;
|
|
92
|
+
const offsetX = clamp(e.offsetX - halfHandleWidth, 0, containerRef.offsetWidth - handleWidth);
|
|
93
|
+
setValue(props.min + offsetX / (containerRef.offsetWidth - handleWidth) * gap());
|
|
94
|
+
};
|
|
95
|
+
insert(_el$4, createComponent(Tooltip, {
|
|
96
|
+
get open() {
|
|
97
|
+
return memo(() => !!props.tooltip)() && (isHover() || isFocus() || isDragging());
|
|
98
|
+
},
|
|
99
|
+
get content() {
|
|
100
|
+
return memo(() => !!(typeof props.tooltip === 'object' && props.tooltip.formatter))() ? props.tooltip.formatter(value()) : value();
|
|
101
|
+
},
|
|
102
|
+
get children() {
|
|
103
|
+
var _el$5 = _tmpl$2();
|
|
104
|
+
_el$5.$$mousedown = e => {
|
|
105
|
+
const startX = e.clientX;
|
|
106
|
+
const startValue = value();
|
|
107
|
+
setIsDragging(true);
|
|
108
|
+
const handleWidth = handleRef.offsetWidth;
|
|
109
|
+
setupGlobalDrag(
|
|
110
|
+
// eslint-disable-next-line solid/reactivity
|
|
111
|
+
_e => {
|
|
112
|
+
const moveX = _e.clientX - startX;
|
|
113
|
+
setValue(startValue + moveX / (containerRef.offsetWidth - handleWidth) * gap());
|
|
114
|
+
},
|
|
115
|
+
// eslint-disable-next-line solid/reactivity
|
|
116
|
+
() => {
|
|
117
|
+
props.onChangeComplete?.(value());
|
|
118
|
+
setIsDragging(false);
|
|
119
|
+
});
|
|
120
|
+
};
|
|
121
|
+
_el$5.$$click = e => {
|
|
122
|
+
e.stopPropagation();
|
|
123
|
+
};
|
|
124
|
+
var _ref$2 = handleRef;
|
|
125
|
+
typeof _ref$2 === "function" ? use(_ref$2, _el$5) : handleRef = _el$5;
|
|
126
|
+
insert(_el$5, createComponent(Show, {
|
|
127
|
+
get when() {
|
|
128
|
+
return isNil(resolvedHandle());
|
|
129
|
+
},
|
|
130
|
+
get fallback() {
|
|
131
|
+
return resolvedHandle();
|
|
132
|
+
},
|
|
133
|
+
get children() {
|
|
134
|
+
var _el$6 = _tmpl$();
|
|
135
|
+
effect(_p$ => {
|
|
136
|
+
var _v$ = cs('box-border w-full h-full bg-[--ant-color-bg-container-secondary] rounded-1/2 border-solid border-2px cursor-pointer', props.disabled ? 'border-[var(--ant-slider-handle-color-disabled)]' : ['border-[var(--ant-slider-handle-color)]', 'hover:border-[var(--ant-slider-handle-active-color)] hover:[outline:4px_solid_var(--ant-control-outline)]', 'focus:border-[var(--ant-slider-handle-active-color)] focus:[outline:4px_solid_var(--ant-control-outline)]']),
|
|
137
|
+
_v$2 = props.disabled ? undefined : '0';
|
|
138
|
+
_v$ !== _p$.e && className(_el$6, _p$.e = _v$);
|
|
139
|
+
_v$2 !== _p$.t && setAttribute(_el$6, "tabindex", _p$.t = _v$2);
|
|
140
|
+
return _p$;
|
|
141
|
+
}, {
|
|
142
|
+
e: undefined,
|
|
143
|
+
t: undefined
|
|
144
|
+
});
|
|
145
|
+
return _el$6;
|
|
146
|
+
}
|
|
147
|
+
}));
|
|
148
|
+
effect(() => `${progress() * 100}%` != null ? _el$5.style.setProperty("left", `${progress() * 100}%`) : _el$5.style.removeProperty("left"));
|
|
149
|
+
return _el$5;
|
|
150
|
+
}
|
|
151
|
+
}));
|
|
152
|
+
effect(_p$ => {
|
|
153
|
+
var _v$3 = cs(props.disabled && 'pointer-events-none'),
|
|
154
|
+
_v$4 = cs('[background:var(--ant-slider-rail-bg)] h-[--ant-slider-rail-size] rounded-[calc(var(--ant-slider-rail-size)/2)]', !props.disabled && 'hover:[background:var(--ant-slider-rail-hover-bg)]'),
|
|
155
|
+
_v$5 = props.railBgStyle,
|
|
156
|
+
_v$6 = cs('absolute left-0 top-1/2 -translate-y-1/2 h-[--ant-slider-rail-size] rounded-[calc(var(--ant-slider-rail-size)/2)]', props.disabled ? 'bg-[var(--ant-slider-track-bg-disabled)]' : ['bg-[var(--ant-slider-track-bg)] hover:bg-[var(--ant-slider-track-hover-bg)]']),
|
|
157
|
+
_v$7 = `${progress() * 100}%`;
|
|
158
|
+
_v$3 !== _p$.e && className(_el$, _p$.e = _v$3);
|
|
159
|
+
_v$4 !== _p$.t && className(_el$2, _p$.t = _v$4);
|
|
160
|
+
_p$.a = style(_el$2, _v$5, _p$.a);
|
|
161
|
+
_v$6 !== _p$.o && className(_el$3, _p$.o = _v$6);
|
|
162
|
+
_v$7 !== _p$.i && ((_p$.i = _v$7) != null ? _el$3.style.setProperty("width", _v$7) : _el$3.style.removeProperty("width"));
|
|
163
|
+
return _p$;
|
|
164
|
+
}, {
|
|
165
|
+
e: undefined,
|
|
166
|
+
t: undefined,
|
|
167
|
+
a: undefined,
|
|
168
|
+
o: undefined,
|
|
169
|
+
i: undefined
|
|
170
|
+
});
|
|
171
|
+
return _el$;
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
};
|
|
175
|
+
delegateEvents(["click", "mousedown"]);
|
|
176
|
+
|
|
177
|
+
export { Slider as default };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type Accessor, type JSX } from 'solid-js';
|
|
2
|
+
import { type StringOrJSXElement } from '../types';
|
|
3
|
+
interface SpaceProps<T extends readonly any[], U extends JSX.Element> {
|
|
4
|
+
each: T | undefined | null | false;
|
|
5
|
+
fallback?: JSX.Element;
|
|
6
|
+
children: (item: T[number], index: Accessor<number>) => U;
|
|
7
|
+
/**
|
|
8
|
+
* 设置拆分
|
|
9
|
+
*/
|
|
10
|
+
split: StringOrJSXElement;
|
|
11
|
+
}
|
|
12
|
+
declare function Space<T extends readonly any[], U extends JSX.Element>(props: SpaceProps<T, U>): JSX.Element;
|
|
13
|
+
export default Space;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { createComponent, mergeProps, memo } from 'solid-js/web';
|
|
2
|
+
import { For } from 'solid-js';
|
|
3
|
+
import Element from '../Element/index.js';
|
|
4
|
+
import { unwrapStringOrJSXElement } from '../utils/solid.js';
|
|
5
|
+
|
|
6
|
+
function Space(props) {
|
|
7
|
+
return createComponent(Element, {
|
|
8
|
+
get children() {
|
|
9
|
+
return createComponent(For, mergeProps(props, {
|
|
10
|
+
children: (item, index) => [memo(() => memo(() => index() !== 0)() && unwrapStringOrJSXElement(props.split)), memo(() => props.children(item, index))]
|
|
11
|
+
}));
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export { Space as default };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type Component, type ParentProps } from 'solid-js';
|
|
2
|
+
import { type StringOrJSXElement, type StyleProps } from '../types';
|
|
3
|
+
interface SpinProps extends ParentProps, StyleProps {
|
|
4
|
+
/**
|
|
5
|
+
* 是否为加载中状态
|
|
6
|
+
* 默认 true
|
|
7
|
+
*/
|
|
8
|
+
spinning?: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* 组件大小,可选值为 small default large
|
|
11
|
+
*/
|
|
12
|
+
size?: number;
|
|
13
|
+
/**
|
|
14
|
+
* 当作为包裹元素时,可以自定义描述文案
|
|
15
|
+
*/
|
|
16
|
+
tip?: StringOrJSXElement;
|
|
17
|
+
}
|
|
18
|
+
declare const Spin: Component<SpinProps>;
|
|
19
|
+
export default Spin;
|
package/es/Spin/index.js
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { insert, createComponent, effect, template } from 'solid-js/web';
|
|
2
|
+
import { mergeProps, children, Show } from 'solid-js';
|
|
3
|
+
import cs from 'classnames';
|
|
4
|
+
import Element from '../Element/index.js';
|
|
5
|
+
import { unwrapStringOrJSXElement, isEmptyJSXElement } from '../utils/solid.js';
|
|
6
|
+
|
|
7
|
+
var _tmpl$ = /*#__PURE__*/template(`<div class="inline-flex flex-col items-center gap-8px text-[var(--ant-color-primary)]"><span class="i-ant-design:loading keyframes-spin [animation:spin_1s_linear_infinite]">`),
|
|
8
|
+
_tmpl$2 = /*#__PURE__*/template(`<div>`),
|
|
9
|
+
_tmpl$3 = /*#__PURE__*/template(`<div class="absolute inset-0 flex items-center justify-center bg-[var(--ant-color-bg-container)] opacity-40">`);
|
|
10
|
+
const Spin = _props => {
|
|
11
|
+
const props = mergeProps({
|
|
12
|
+
spinning: true,
|
|
13
|
+
size: 20
|
|
14
|
+
}, _props);
|
|
15
|
+
const resolvedChildren = children(() => props.children);
|
|
16
|
+
const resolvedTip = children(() => unwrapStringOrJSXElement(props.tip));
|
|
17
|
+
const spin = (() => {
|
|
18
|
+
var _el$ = _tmpl$(),
|
|
19
|
+
_el$2 = _el$.firstChild;
|
|
20
|
+
insert(_el$, createComponent(Show, {
|
|
21
|
+
get when() {
|
|
22
|
+
return !isEmptyJSXElement(resolvedTip());
|
|
23
|
+
},
|
|
24
|
+
get children() {
|
|
25
|
+
return resolvedTip();
|
|
26
|
+
}
|
|
27
|
+
}), null);
|
|
28
|
+
effect(() => `${props.size}px` != null ? _el$2.style.setProperty("font-size", `${props.size}px`) : _el$2.style.removeProperty("font-size"));
|
|
29
|
+
return _el$;
|
|
30
|
+
})();
|
|
31
|
+
return createComponent(Show, {
|
|
32
|
+
get when() {
|
|
33
|
+
return !isEmptyJSXElement(resolvedChildren());
|
|
34
|
+
},
|
|
35
|
+
get fallback() {
|
|
36
|
+
return createComponent(Element, {
|
|
37
|
+
get ["class"]() {
|
|
38
|
+
return cs(props.class, 'inline-block text-center');
|
|
39
|
+
},
|
|
40
|
+
get style() {
|
|
41
|
+
return props.style;
|
|
42
|
+
},
|
|
43
|
+
get children() {
|
|
44
|
+
return createComponent(Show, {
|
|
45
|
+
get when() {
|
|
46
|
+
return props.spinning;
|
|
47
|
+
},
|
|
48
|
+
children: spin
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
},
|
|
53
|
+
get children() {
|
|
54
|
+
return createComponent(Element, {
|
|
55
|
+
get ["class"]() {
|
|
56
|
+
return cs(props.class, 'relative');
|
|
57
|
+
},
|
|
58
|
+
get style() {
|
|
59
|
+
return props.style;
|
|
60
|
+
},
|
|
61
|
+
get children() {
|
|
62
|
+
return [(() => {
|
|
63
|
+
var _el$3 = _tmpl$2();
|
|
64
|
+
insert(_el$3, resolvedChildren);
|
|
65
|
+
return _el$3;
|
|
66
|
+
})(), createComponent(Show, {
|
|
67
|
+
get when() {
|
|
68
|
+
return props.spinning;
|
|
69
|
+
},
|
|
70
|
+
get children() {
|
|
71
|
+
var _el$4 = _tmpl$3();
|
|
72
|
+
insert(_el$4, spin);
|
|
73
|
+
return _el$4;
|
|
74
|
+
}
|
|
75
|
+
})];
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
export { Spin as default };
|
|
@@ -3,6 +3,15 @@ export interface SwitchProps {
|
|
|
3
3
|
defaultChecked?: boolean;
|
|
4
4
|
checked?: boolean;
|
|
5
5
|
onChange?: (checked: boolean) => void;
|
|
6
|
+
/**
|
|
7
|
+
* 开关大小
|
|
8
|
+
* 默认 'middle'
|
|
9
|
+
*/
|
|
10
|
+
size?: 'small' | 'middle' | 'large';
|
|
11
|
+
/**
|
|
12
|
+
* 是否禁用
|
|
13
|
+
*/
|
|
14
|
+
disabled?: boolean;
|
|
6
15
|
}
|
|
7
16
|
declare const Switch: Component<SwitchProps>;
|
|
8
17
|
export default Switch;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { createComponent, effect, className, template } from 'solid-js/web';
|
|
2
|
+
import cs from 'classnames';
|
|
3
|
+
import createControllableValue from '../hooks/createControllableValue.js';
|
|
4
|
+
import Element from '../Element/index.js';
|
|
5
|
+
import useComponentSize from '../hooks/useComponentSize.js';
|
|
6
|
+
|
|
7
|
+
var _tmpl$ = /*#__PURE__*/template(`<div>`);
|
|
8
|
+
const Switch = props => {
|
|
9
|
+
const size = useComponentSize(() => props.size);
|
|
10
|
+
const [checked, setChecked] = createControllableValue(props, {
|
|
11
|
+
defaultValuePropName: 'defaultChecked',
|
|
12
|
+
valuePropName: 'checked'
|
|
13
|
+
});
|
|
14
|
+
return createComponent(Element, {
|
|
15
|
+
tag: "button",
|
|
16
|
+
get ["class"]() {
|
|
17
|
+
return cs('rounded-100px relative vertical-middle', {
|
|
18
|
+
large: 'w-56px h-28px',
|
|
19
|
+
middle: 'w-40px h-22px',
|
|
20
|
+
small: 'w-28px h-16px'
|
|
21
|
+
}[size()], checked() ? 'bg-[var(--ant-color-primary)]' : 'bg-[rgba(0,0,0,0.45)]', props.disabled && 'opacity-[--ant-opacity-loading] cursor-not-allowed');
|
|
22
|
+
},
|
|
23
|
+
get disabled() {
|
|
24
|
+
return props.disabled;
|
|
25
|
+
},
|
|
26
|
+
onClick: () => {
|
|
27
|
+
setChecked(c => !c);
|
|
28
|
+
},
|
|
29
|
+
get children() {
|
|
30
|
+
var _el$ = _tmpl$();
|
|
31
|
+
effect(() => className(_el$, cs('rounded-50% bg-white absolute top-1/2 -translate-y-1/2 transition-left', {
|
|
32
|
+
large: 'w-24px h-24px',
|
|
33
|
+
middle: 'w-18px h-18px',
|
|
34
|
+
small: 'w-12px h-12px'
|
|
35
|
+
}[size()], checked() ? 'right-2px' : 'left-2px')));
|
|
36
|
+
return _el$;
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export { Switch as default };
|
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
import { type JSXElement } from 'solid-js';
|
|
1
|
+
import { type JSXElement, type Accessor } from 'solid-js';
|
|
2
2
|
export interface TableColumn<R extends {}> {
|
|
3
3
|
title: JSXElement;
|
|
4
|
-
render: (row: R) => JSXElement;
|
|
4
|
+
render: (row: R, index: Accessor<number>) => JSXElement;
|
|
5
5
|
}
|
|
6
6
|
export interface TableProps<R extends {}> {
|
|
7
7
|
columns: Array<TableColumn<R>>;
|
|
8
8
|
dataSource: R[];
|
|
9
|
+
/**
|
|
10
|
+
* 默认 'middle'
|
|
11
|
+
*/
|
|
12
|
+
size?: 'small' | 'middle' | 'large';
|
|
9
13
|
}
|
|
10
14
|
declare const Table: <R extends {}>(props: TableProps<R>) => import("solid-js").JSX.Element;
|
|
11
15
|
export default Table;
|