wssf-kage-ui 0.1.0 → 0.1.2
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/README.md +4 -4
- package/dist/cjs/Anchor/index.d.ts +56 -0
- package/dist/cjs/Anchor/index.js +307 -0
- package/dist/cjs/Anchor/style.less +183 -0
- package/dist/cjs/AutoComplete/index.d.ts +54 -0
- package/dist/cjs/AutoComplete/index.js +273 -0
- package/dist/cjs/AutoComplete/style.less +325 -0
- package/dist/cjs/Avatar/index.d.ts +47 -0
- package/dist/cjs/Avatar/index.js +147 -0
- package/dist/cjs/Avatar/style.less +193 -0
- package/dist/cjs/Badge/index.d.ts +48 -0
- package/dist/cjs/Badge/index.js +141 -0
- package/dist/cjs/Badge/style.less +237 -0
- package/dist/cjs/Breadcrumb/index.d.ts +51 -0
- package/dist/cjs/Breadcrumb/index.js +129 -0
- package/dist/cjs/Breadcrumb/style.less +96 -0
- package/dist/cjs/Calendar/index.d.ts +33 -0
- package/dist/cjs/Calendar/index.js +296 -0
- package/dist/cjs/Calendar/style.less +384 -0
- package/dist/cjs/Card/index.d.ts +68 -0
- package/dist/cjs/Card/index.js +155 -0
- package/dist/cjs/Card/style.less +356 -0
- package/dist/cjs/Carousel/index.d.ts +33 -0
- package/dist/cjs/Carousel/index.js +169 -0
- package/dist/cjs/Carousel/style.less +232 -0
- package/dist/cjs/Cascader/index.d.ts +53 -0
- package/dist/cjs/Cascader/index.js +338 -0
- package/dist/cjs/Cascader/style.less +457 -0
- package/dist/cjs/Checkbox/index.d.ts +52 -0
- package/dist/cjs/Checkbox/index.js +158 -0
- package/dist/cjs/Checkbox/style.less +211 -0
- package/dist/cjs/Collapse/index.d.ts +55 -0
- package/dist/cjs/Collapse/index.js +191 -0
- package/dist/cjs/Collapse/style.less +217 -0
- package/dist/cjs/ColorPicker/index.d.ts +28 -0
- package/dist/cjs/ColorPicker/index.js +381 -0
- package/dist/cjs/ColorPicker/style.less +276 -0
- package/dist/cjs/DatePicker/index.d.ts +32 -0
- package/dist/cjs/DatePicker/index.js +377 -0
- package/dist/cjs/DatePicker/style.less +498 -0
- package/dist/cjs/Descriptions/index.d.ts +54 -0
- package/dist/cjs/Descriptions/index.js +181 -0
- package/dist/cjs/Descriptions/style.less +259 -0
- package/dist/cjs/Divider/index.d.ts +24 -0
- package/dist/cjs/Divider/index.js +75 -0
- package/dist/cjs/Divider/style.less +144 -0
- package/dist/cjs/Dropdown/index.d.ts +88 -0
- package/dist/cjs/Dropdown/index.js +253 -0
- package/dist/cjs/Dropdown/style.less +430 -0
- package/dist/cjs/Empty/index.d.ts +21 -0
- package/dist/cjs/Empty/index.js +115 -0
- package/dist/cjs/Empty/style.less +103 -0
- package/dist/cjs/Flex/index.d.ts +37 -0
- package/dist/cjs/Flex/index.js +76 -0
- package/dist/cjs/Flex/style.less +13 -0
- package/dist/cjs/Form/index.d.ts +89 -0
- package/dist/cjs/Form/index.js +421 -0
- package/dist/cjs/Form/style.less +203 -0
- package/dist/cjs/Grid/index.d.ts +69 -0
- package/dist/cjs/Grid/index.js +171 -0
- package/dist/cjs/Grid/style.less +273 -0
- package/dist/cjs/Image/index.d.ts +30 -0
- package/dist/cjs/Image/index.js +153 -0
- package/dist/cjs/Image/style.less +156 -0
- package/dist/cjs/Input/index.d.ts +24 -0
- package/dist/cjs/Input/index.js +158 -0
- package/dist/cjs/Input/style.less +276 -0
- package/dist/cjs/InputNumber/index.d.ts +47 -0
- package/dist/cjs/InputNumber/index.js +323 -0
- package/dist/cjs/InputNumber/style.less +392 -0
- package/dist/cjs/Layout/index.d.ts +74 -0
- package/dist/cjs/Layout/index.js +166 -0
- package/dist/cjs/Layout/style.less +145 -0
- package/dist/cjs/Masonry/index.d.ts +18 -0
- package/dist/cjs/Masonry/index.js +146 -0
- package/dist/cjs/Masonry/style.less +15 -0
- package/dist/cjs/Mentions/index.d.ts +57 -0
- package/dist/cjs/Mentions/index.js +378 -0
- package/dist/cjs/Mentions/style.less +297 -0
- package/dist/cjs/Menu/index.d.ts +87 -0
- package/dist/cjs/Menu/index.js +306 -0
- package/dist/cjs/Menu/style.less +363 -0
- package/dist/cjs/Pagination/index.d.ts +38 -0
- package/dist/cjs/Pagination/index.js +255 -0
- package/dist/cjs/Pagination/style.less +353 -0
- package/dist/cjs/Popover/index.d.ts +30 -0
- package/dist/cjs/Popover/index.js +131 -0
- package/dist/cjs/Popover/style.less +279 -0
- package/dist/cjs/QRCode/index.d.ts +30 -0
- package/dist/cjs/QRCode/index.js +167 -0
- package/dist/cjs/QRCode/style.less +201 -0
- package/dist/cjs/Radio/index.d.ts +70 -0
- package/dist/cjs/Radio/index.js +199 -0
- package/dist/cjs/Radio/style.less +326 -0
- package/dist/cjs/Rate/index.d.ts +37 -0
- package/dist/cjs/Rate/index.js +151 -0
- package/dist/cjs/Rate/style.less +170 -0
- package/dist/cjs/Segmented/index.d.ts +31 -0
- package/dist/cjs/Segmented/index.js +121 -0
- package/dist/cjs/Segmented/style.less +167 -0
- package/dist/cjs/Select/index.d.ts +67 -0
- package/dist/cjs/Select/index.js +403 -0
- package/dist/cjs/Select/style.less +523 -0
- package/dist/cjs/Slider/index.d.ts +41 -0
- package/dist/cjs/Slider/index.js +325 -0
- package/dist/cjs/Slider/style.less +287 -0
- package/dist/cjs/Space/index.d.ts +41 -0
- package/dist/cjs/Space/index.js +137 -0
- package/dist/cjs/Space/style.less +116 -0
- package/dist/cjs/Splitter/index.d.ts +43 -0
- package/dist/cjs/Splitter/index.js +219 -0
- package/dist/cjs/Splitter/style.less +99 -0
- package/dist/cjs/Statistic/index.d.ts +26 -0
- package/dist/cjs/Statistic/index.js +71 -0
- package/dist/cjs/Statistic/style.less +94 -0
- package/dist/cjs/Steps/index.d.ts +58 -0
- package/dist/cjs/Steps/index.js +180 -0
- package/dist/cjs/Steps/style.less +507 -0
- package/dist/cjs/Switch/index.d.ts +28 -0
- package/dist/cjs/Switch/index.js +71 -0
- package/dist/cjs/Switch/style.less +212 -0
- package/dist/cjs/Table/index.d.ts +188 -0
- package/dist/cjs/Table/index.js +787 -0
- package/dist/cjs/Table/style.less +663 -0
- package/dist/cjs/Tabs/index.d.ts +58 -0
- package/dist/cjs/Tabs/index.js +196 -0
- package/dist/cjs/Tabs/style.less +423 -0
- package/dist/cjs/Tag/index.d.ts +51 -0
- package/dist/cjs/Tag/index.js +142 -0
- package/dist/cjs/Tag/style.less +356 -0
- package/dist/cjs/TimePicker/index.d.ts +51 -0
- package/dist/cjs/TimePicker/index.js +332 -0
- package/dist/cjs/TimePicker/style.less +384 -0
- package/dist/cjs/Timeline/index.d.ts +47 -0
- package/dist/cjs/Timeline/index.js +127 -0
- package/dist/cjs/Timeline/style.less +265 -0
- package/dist/cjs/Tooltip/index.d.ts +53 -0
- package/dist/cjs/Tooltip/index.js +468 -0
- package/dist/cjs/Tooltip/style.less +237 -0
- package/dist/cjs/Transfer/index.d.ts +52 -0
- package/dist/cjs/Transfer/index.js +344 -0
- package/dist/cjs/Transfer/style.less +331 -0
- package/dist/cjs/TreeSelect/index.d.ts +54 -0
- package/dist/cjs/TreeSelect/index.js +373 -0
- package/dist/cjs/TreeSelect/style.less +471 -0
- package/dist/cjs/Typography/index.d.ts +102 -0
- package/dist/cjs/Typography/index.js +168 -0
- package/dist/cjs/Typography/style.less +246 -0
- package/dist/cjs/Upload/index.d.ts +65 -0
- package/dist/cjs/Upload/index.js +517 -0
- package/dist/cjs/Upload/style.less +424 -0
- package/dist/cjs/index.d.ts +100 -0
- package/dist/cjs/index.js +487 -1
- package/dist/esm/Anchor/index.d.ts +56 -0
- package/dist/esm/Anchor/index.js +302 -0
- package/dist/esm/Anchor/style.less +183 -0
- package/dist/esm/AutoComplete/index.d.ts +54 -0
- package/dist/esm/AutoComplete/index.js +268 -0
- package/dist/esm/AutoComplete/style.less +325 -0
- package/dist/esm/Avatar/index.d.ts +47 -0
- package/dist/esm/Avatar/index.js +142 -0
- package/dist/esm/Avatar/style.less +193 -0
- package/dist/esm/Badge/index.d.ts +48 -0
- package/dist/esm/Badge/index.js +137 -0
- package/dist/esm/Badge/style.less +237 -0
- package/dist/esm/Breadcrumb/index.d.ts +51 -0
- package/dist/esm/Breadcrumb/index.js +124 -0
- package/dist/esm/Breadcrumb/style.less +96 -0
- package/dist/esm/Calendar/index.d.ts +33 -0
- package/dist/esm/Calendar/index.js +291 -0
- package/dist/esm/Calendar/style.less +384 -0
- package/dist/esm/Card/index.d.ts +68 -0
- package/dist/esm/Card/index.js +149 -0
- package/dist/esm/Card/style.less +356 -0
- package/dist/esm/Carousel/index.d.ts +33 -0
- package/dist/esm/Carousel/index.js +163 -0
- package/dist/esm/Carousel/style.less +232 -0
- package/dist/esm/Cascader/index.d.ts +53 -0
- package/dist/esm/Cascader/index.js +333 -0
- package/dist/esm/Cascader/style.less +457 -0
- package/dist/esm/Checkbox/index.d.ts +52 -0
- package/dist/esm/Checkbox/index.js +152 -0
- package/dist/esm/Checkbox/style.less +211 -0
- package/dist/esm/Collapse/index.d.ts +55 -0
- package/dist/esm/Collapse/index.js +187 -0
- package/dist/esm/Collapse/style.less +217 -0
- package/dist/esm/ColorPicker/index.d.ts +28 -0
- package/dist/esm/ColorPicker/index.js +375 -0
- package/dist/esm/ColorPicker/style.less +276 -0
- package/dist/esm/DatePicker/index.d.ts +32 -0
- package/dist/esm/DatePicker/index.js +371 -0
- package/dist/esm/DatePicker/style.less +498 -0
- package/dist/esm/Descriptions/index.d.ts +54 -0
- package/dist/esm/Descriptions/index.js +179 -0
- package/dist/esm/Descriptions/style.less +259 -0
- package/dist/esm/Divider/index.d.ts +24 -0
- package/dist/esm/Divider/index.js +68 -0
- package/dist/esm/Divider/style.less +144 -0
- package/dist/esm/Dropdown/index.d.ts +88 -0
- package/dist/esm/Dropdown/index.js +249 -0
- package/dist/esm/Dropdown/style.less +430 -0
- package/dist/esm/Empty/index.d.ts +21 -0
- package/dist/esm/Empty/index.js +109 -0
- package/dist/esm/Empty/style.less +103 -0
- package/dist/esm/Flex/index.d.ts +37 -0
- package/dist/esm/Flex/index.js +69 -0
- package/dist/esm/Flex/style.less +13 -0
- package/dist/esm/Form/index.d.ts +89 -0
- package/dist/esm/Form/index.js +416 -0
- package/dist/esm/Form/style.less +203 -0
- package/dist/esm/Grid/index.d.ts +69 -0
- package/dist/esm/Grid/index.js +165 -0
- package/dist/esm/Grid/style.less +273 -0
- package/dist/esm/Image/index.d.ts +30 -0
- package/dist/esm/Image/index.js +149 -0
- package/dist/esm/Image/style.less +156 -0
- package/dist/esm/Input/index.d.ts +24 -0
- package/dist/esm/Input/index.js +151 -0
- package/dist/esm/Input/style.less +276 -0
- package/dist/esm/InputNumber/index.d.ts +47 -0
- package/dist/esm/InputNumber/index.js +316 -0
- package/dist/esm/InputNumber/style.less +392 -0
- package/dist/esm/Layout/index.d.ts +74 -0
- package/dist/esm/Layout/index.js +161 -0
- package/dist/esm/Layout/style.less +145 -0
- package/dist/esm/Masonry/index.d.ts +18 -0
- package/dist/esm/Masonry/index.js +138 -0
- package/dist/esm/Masonry/style.less +15 -0
- package/dist/esm/Mentions/index.d.ts +57 -0
- package/dist/esm/Mentions/index.js +374 -0
- package/dist/esm/Mentions/style.less +297 -0
- package/dist/esm/Menu/index.d.ts +87 -0
- package/dist/esm/Menu/index.js +301 -0
- package/dist/esm/Menu/style.less +363 -0
- package/dist/esm/Pagination/index.d.ts +38 -0
- package/dist/esm/Pagination/index.js +247 -0
- package/dist/esm/Pagination/style.less +353 -0
- package/dist/esm/Popover/index.d.ts +30 -0
- package/dist/esm/Popover/index.js +126 -0
- package/dist/esm/Popover/style.less +279 -0
- package/dist/esm/QRCode/index.d.ts +30 -0
- package/dist/esm/QRCode/index.js +158 -0
- package/dist/esm/QRCode/style.less +201 -0
- package/dist/esm/Radio/index.d.ts +70 -0
- package/dist/esm/Radio/index.js +193 -0
- package/dist/esm/Radio/style.less +326 -0
- package/dist/esm/Rate/index.d.ts +37 -0
- package/dist/esm/Rate/index.js +143 -0
- package/dist/esm/Rate/style.less +170 -0
- package/dist/esm/Segmented/index.d.ts +31 -0
- package/dist/esm/Segmented/index.js +113 -0
- package/dist/esm/Segmented/style.less +167 -0
- package/dist/esm/Select/index.d.ts +67 -0
- package/dist/esm/Select/index.js +398 -0
- package/dist/esm/Select/style.less +523 -0
- package/dist/esm/Slider/index.d.ts +41 -0
- package/dist/esm/Slider/index.js +318 -0
- package/dist/esm/Slider/style.less +287 -0
- package/dist/esm/Space/index.d.ts +41 -0
- package/dist/esm/Space/index.js +131 -0
- package/dist/esm/Space/style.less +116 -0
- package/dist/esm/Splitter/index.d.ts +43 -0
- package/dist/esm/Splitter/index.js +214 -0
- package/dist/esm/Splitter/style.less +99 -0
- package/dist/esm/Statistic/index.d.ts +26 -0
- package/dist/esm/Statistic/index.js +65 -0
- package/dist/esm/Statistic/style.less +94 -0
- package/dist/esm/Steps/index.d.ts +58 -0
- package/dist/esm/Steps/index.js +174 -0
- package/dist/esm/Steps/style.less +507 -0
- package/dist/esm/Switch/index.d.ts +28 -0
- package/dist/esm/Switch/index.js +63 -0
- package/dist/esm/Switch/style.less +212 -0
- package/dist/esm/Table/index.d.ts +188 -0
- package/dist/esm/Table/index.js +797 -0
- package/dist/esm/Table/style.less +663 -0
- package/dist/esm/Tabs/index.d.ts +58 -0
- package/dist/esm/Tabs/index.js +193 -0
- package/dist/esm/Tabs/style.less +423 -0
- package/dist/esm/Tag/index.d.ts +51 -0
- package/dist/esm/Tag/index.js +144 -0
- package/dist/esm/Tag/style.less +356 -0
- package/dist/esm/TimePicker/index.d.ts +51 -0
- package/dist/esm/TimePicker/index.js +327 -0
- package/dist/esm/TimePicker/style.less +384 -0
- package/dist/esm/Timeline/index.d.ts +47 -0
- package/dist/esm/Timeline/index.js +130 -0
- package/dist/esm/Timeline/style.less +265 -0
- package/dist/esm/Tooltip/index.d.ts +53 -0
- package/dist/esm/Tooltip/index.js +471 -0
- package/dist/esm/Tooltip/style.less +237 -0
- package/dist/esm/Transfer/index.d.ts +52 -0
- package/dist/esm/Transfer/index.js +340 -0
- package/dist/esm/Transfer/style.less +331 -0
- package/dist/esm/TreeSelect/index.d.ts +54 -0
- package/dist/esm/TreeSelect/index.js +369 -0
- package/dist/esm/TreeSelect/style.less +471 -0
- package/dist/esm/Typography/index.d.ts +102 -0
- package/dist/esm/Typography/index.js +161 -0
- package/dist/esm/Typography/style.less +246 -0
- package/dist/esm/Upload/index.d.ts +65 -0
- package/dist/esm/Upload/index.js +513 -0
- package/dist/esm/Upload/style.less +424 -0
- package/dist/esm/index.d.ts +100 -0
- package/dist/esm/index.js +51 -1
- package/package.json +14 -8
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './style.less';
|
|
3
|
+
export interface LayoutProps {
|
|
4
|
+
/** 是否有侧边栏(自动检测子组件) */
|
|
5
|
+
hasSider?: boolean;
|
|
6
|
+
/** 子元素 */
|
|
7
|
+
children?: React.ReactNode;
|
|
8
|
+
/** 自定义类名 */
|
|
9
|
+
className?: string;
|
|
10
|
+
/** 自定义样式 */
|
|
11
|
+
style?: React.CSSProperties;
|
|
12
|
+
}
|
|
13
|
+
interface LayoutComponent extends React.FC<LayoutProps> {
|
|
14
|
+
Header: typeof Header;
|
|
15
|
+
Sider: typeof Sider;
|
|
16
|
+
Content: typeof Content;
|
|
17
|
+
Footer: typeof Footer;
|
|
18
|
+
}
|
|
19
|
+
export interface HeaderProps {
|
|
20
|
+
/** 子元素 */
|
|
21
|
+
children?: React.ReactNode;
|
|
22
|
+
/** 自定义类名 */
|
|
23
|
+
className?: string;
|
|
24
|
+
/** 自定义样式 */
|
|
25
|
+
style?: React.CSSProperties;
|
|
26
|
+
}
|
|
27
|
+
export declare const Header: React.FC<HeaderProps>;
|
|
28
|
+
export interface SiderProps {
|
|
29
|
+
/** 宽度 */
|
|
30
|
+
width?: number | string;
|
|
31
|
+
/** 收缩后的宽度 */
|
|
32
|
+
collapsedWidth?: number | string;
|
|
33
|
+
/** 是否可收起 */
|
|
34
|
+
collapsible?: boolean;
|
|
35
|
+
/** 是否收起状态 */
|
|
36
|
+
collapsed?: boolean;
|
|
37
|
+
/** 默认收起状态 */
|
|
38
|
+
defaultCollapsed?: boolean;
|
|
39
|
+
/** 收起时触发 */
|
|
40
|
+
onCollapse?: (collapsed: boolean) => void;
|
|
41
|
+
/** 触发器位置 */
|
|
42
|
+
trigger?: React.ReactNode | null;
|
|
43
|
+
/** 主题颜色 */
|
|
44
|
+
theme?: 'light' | 'dark';
|
|
45
|
+
/** 断点,触发响应式布局 */
|
|
46
|
+
breakpoint?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl';
|
|
47
|
+
/** 子元素 */
|
|
48
|
+
children?: React.ReactNode;
|
|
49
|
+
/** 自定义类名 */
|
|
50
|
+
className?: string;
|
|
51
|
+
/** 自定义样式 */
|
|
52
|
+
style?: React.CSSProperties;
|
|
53
|
+
}
|
|
54
|
+
export declare const Sider: React.FC<SiderProps>;
|
|
55
|
+
export interface ContentProps {
|
|
56
|
+
/** 子元素 */
|
|
57
|
+
children?: React.ReactNode;
|
|
58
|
+
/** 自定义类名 */
|
|
59
|
+
className?: string;
|
|
60
|
+
/** 自定义样式 */
|
|
61
|
+
style?: React.CSSProperties;
|
|
62
|
+
}
|
|
63
|
+
export declare const Content: React.FC<ContentProps>;
|
|
64
|
+
export interface FooterProps {
|
|
65
|
+
/** 子元素 */
|
|
66
|
+
children?: React.ReactNode;
|
|
67
|
+
/** 自定义类名 */
|
|
68
|
+
className?: string;
|
|
69
|
+
/** 自定义样式 */
|
|
70
|
+
style?: React.CSSProperties;
|
|
71
|
+
}
|
|
72
|
+
export declare const Footer: React.FC<FooterProps>;
|
|
73
|
+
declare const Layout: LayoutComponent;
|
|
74
|
+
export default Layout;
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
5
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
6
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
7
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
8
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
9
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
10
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
11
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
12
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
13
|
+
import React, { createContext, useState } from 'react';
|
|
14
|
+
import "./style.less";
|
|
15
|
+
|
|
16
|
+
// ============ Layout Context ============
|
|
17
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
18
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
19
|
+
var LayoutContext = /*#__PURE__*/createContext({});
|
|
20
|
+
|
|
21
|
+
// ============ Layout 布局容器 ============
|
|
22
|
+
|
|
23
|
+
var InternalLayout = function InternalLayout(_ref) {
|
|
24
|
+
var hasSider = _ref.hasSider,
|
|
25
|
+
children = _ref.children,
|
|
26
|
+
_ref$className = _ref.className,
|
|
27
|
+
className = _ref$className === void 0 ? '' : _ref$className,
|
|
28
|
+
style = _ref.style;
|
|
29
|
+
// 自动检测是否有 Sider
|
|
30
|
+
var detectSider = React.Children.toArray(children).some(function (child) {
|
|
31
|
+
var _child$type;
|
|
32
|
+
return /*#__PURE__*/React.isValidElement(child) && ((_child$type = child.type) === null || _child$type === void 0 ? void 0 : _child$type.displayName) === 'Sider';
|
|
33
|
+
});
|
|
34
|
+
var classNames = ['kage-layout', (hasSider || detectSider) && 'kage-layout-has-sider', className].filter(Boolean).join(' ');
|
|
35
|
+
return /*#__PURE__*/_jsx("section", {
|
|
36
|
+
className: classNames,
|
|
37
|
+
style: style,
|
|
38
|
+
children: children
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
// ============ Header 顶部布局 ============
|
|
43
|
+
|
|
44
|
+
export var Header = function Header(_ref2) {
|
|
45
|
+
var children = _ref2.children,
|
|
46
|
+
_ref2$className = _ref2.className,
|
|
47
|
+
className = _ref2$className === void 0 ? '' : _ref2$className,
|
|
48
|
+
style = _ref2.style;
|
|
49
|
+
var classNames = ['kage-layout-header', className].filter(Boolean).join(' ');
|
|
50
|
+
return /*#__PURE__*/_jsx("header", {
|
|
51
|
+
className: classNames,
|
|
52
|
+
style: style,
|
|
53
|
+
children: children
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
Header.displayName = 'Header';
|
|
57
|
+
|
|
58
|
+
// ============ Sider 侧边栏 ============
|
|
59
|
+
|
|
60
|
+
export var Sider = function Sider(_ref3) {
|
|
61
|
+
var _ref3$width = _ref3.width,
|
|
62
|
+
width = _ref3$width === void 0 ? 200 : _ref3$width,
|
|
63
|
+
_ref3$collapsedWidth = _ref3.collapsedWidth,
|
|
64
|
+
collapsedWidth = _ref3$collapsedWidth === void 0 ? 80 : _ref3$collapsedWidth,
|
|
65
|
+
_ref3$collapsible = _ref3.collapsible,
|
|
66
|
+
collapsible = _ref3$collapsible === void 0 ? false : _ref3$collapsible,
|
|
67
|
+
controlledCollapsed = _ref3.collapsed,
|
|
68
|
+
_ref3$defaultCollapse = _ref3.defaultCollapsed,
|
|
69
|
+
defaultCollapsed = _ref3$defaultCollapse === void 0 ? false : _ref3$defaultCollapse,
|
|
70
|
+
onCollapse = _ref3.onCollapse,
|
|
71
|
+
trigger = _ref3.trigger,
|
|
72
|
+
_ref3$theme = _ref3.theme,
|
|
73
|
+
theme = _ref3$theme === void 0 ? 'dark' : _ref3$theme,
|
|
74
|
+
children = _ref3.children,
|
|
75
|
+
_ref3$className = _ref3.className,
|
|
76
|
+
className = _ref3$className === void 0 ? '' : _ref3$className,
|
|
77
|
+
style = _ref3.style;
|
|
78
|
+
var _useState = useState(defaultCollapsed),
|
|
79
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
80
|
+
internalCollapsed = _useState2[0],
|
|
81
|
+
setInternalCollapsed = _useState2[1];
|
|
82
|
+
var isCollapsed = controlledCollapsed !== undefined ? controlledCollapsed : internalCollapsed;
|
|
83
|
+
var currentWidth = isCollapsed ? collapsedWidth : width;
|
|
84
|
+
var handleCollapse = function handleCollapse() {
|
|
85
|
+
var newCollapsed = !isCollapsed;
|
|
86
|
+
if (controlledCollapsed === undefined) {
|
|
87
|
+
setInternalCollapsed(newCollapsed);
|
|
88
|
+
}
|
|
89
|
+
onCollapse === null || onCollapse === void 0 || onCollapse(newCollapsed);
|
|
90
|
+
};
|
|
91
|
+
var classNames = ['kage-layout-sider', "kage-layout-sider-".concat(theme), isCollapsed && 'kage-layout-sider-collapsed', className].filter(Boolean).join(' ');
|
|
92
|
+
var siderStyle = _objectSpread({
|
|
93
|
+
flex: "0 0 ".concat(typeof currentWidth === 'number' ? "".concat(currentWidth, "px") : currentWidth),
|
|
94
|
+
maxWidth: typeof currentWidth === 'number' ? "".concat(currentWidth, "px") : currentWidth,
|
|
95
|
+
minWidth: typeof currentWidth === 'number' ? "".concat(currentWidth, "px") : currentWidth,
|
|
96
|
+
width: typeof currentWidth === 'number' ? "".concat(currentWidth, "px") : currentWidth
|
|
97
|
+
}, style);
|
|
98
|
+
var defaultTrigger = /*#__PURE__*/_jsx("div", {
|
|
99
|
+
className: "kage-layout-sider-trigger",
|
|
100
|
+
onClick: handleCollapse,
|
|
101
|
+
children: /*#__PURE__*/_jsx("span", {
|
|
102
|
+
className: "kage-layout-sider-trigger-icon",
|
|
103
|
+
children: isCollapsed ? '▶' : '◀'
|
|
104
|
+
})
|
|
105
|
+
});
|
|
106
|
+
return /*#__PURE__*/_jsx(LayoutContext.Provider, {
|
|
107
|
+
value: {
|
|
108
|
+
siderCollapsed: isCollapsed,
|
|
109
|
+
siderWidth: currentWidth
|
|
110
|
+
},
|
|
111
|
+
children: /*#__PURE__*/_jsxs("aside", {
|
|
112
|
+
className: classNames,
|
|
113
|
+
style: siderStyle,
|
|
114
|
+
children: [/*#__PURE__*/_jsx("div", {
|
|
115
|
+
className: "kage-layout-sider-children",
|
|
116
|
+
children: children
|
|
117
|
+
}), collapsible && (trigger !== null ? trigger || defaultTrigger : null)]
|
|
118
|
+
})
|
|
119
|
+
});
|
|
120
|
+
};
|
|
121
|
+
Sider.displayName = 'Sider';
|
|
122
|
+
|
|
123
|
+
// ============ Content 内容区 ============
|
|
124
|
+
|
|
125
|
+
export var Content = function Content(_ref4) {
|
|
126
|
+
var children = _ref4.children,
|
|
127
|
+
_ref4$className = _ref4.className,
|
|
128
|
+
className = _ref4$className === void 0 ? '' : _ref4$className,
|
|
129
|
+
style = _ref4.style;
|
|
130
|
+
var classNames = ['kage-layout-content', className].filter(Boolean).join(' ');
|
|
131
|
+
return /*#__PURE__*/_jsx("main", {
|
|
132
|
+
className: classNames,
|
|
133
|
+
style: style,
|
|
134
|
+
children: children
|
|
135
|
+
});
|
|
136
|
+
};
|
|
137
|
+
Content.displayName = 'Content';
|
|
138
|
+
|
|
139
|
+
// ============ Footer 底部布局 ============
|
|
140
|
+
|
|
141
|
+
export var Footer = function Footer(_ref5) {
|
|
142
|
+
var children = _ref5.children,
|
|
143
|
+
_ref5$className = _ref5.className,
|
|
144
|
+
className = _ref5$className === void 0 ? '' : _ref5$className,
|
|
145
|
+
style = _ref5.style;
|
|
146
|
+
var classNames = ['kage-layout-footer', className].filter(Boolean).join(' ');
|
|
147
|
+
return /*#__PURE__*/_jsx("footer", {
|
|
148
|
+
className: classNames,
|
|
149
|
+
style: style,
|
|
150
|
+
children: children
|
|
151
|
+
});
|
|
152
|
+
};
|
|
153
|
+
Footer.displayName = 'Footer';
|
|
154
|
+
|
|
155
|
+
// ============ 导出 ============
|
|
156
|
+
var Layout = InternalLayout;
|
|
157
|
+
Layout.Header = Header;
|
|
158
|
+
Layout.Sider = Sider;
|
|
159
|
+
Layout.Content = Content;
|
|
160
|
+
Layout.Footer = Footer;
|
|
161
|
+
export default Layout;
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
// Layout 布局组件样式
|
|
2
|
+
|
|
3
|
+
@prefix: kage-layout;
|
|
4
|
+
|
|
5
|
+
// 颜色变量
|
|
6
|
+
@layout-body-bg: #f5f5f5;
|
|
7
|
+
@layout-header-bg: #001529;
|
|
8
|
+
@layout-header-color: #fff;
|
|
9
|
+
@layout-header-height: 64px;
|
|
10
|
+
@layout-header-padding: 0 50px;
|
|
11
|
+
@layout-footer-bg: #f5f5f5;
|
|
12
|
+
@layout-footer-padding: 24px 50px;
|
|
13
|
+
@layout-sider-bg-dark: #001529;
|
|
14
|
+
@layout-sider-bg-light: #fff;
|
|
15
|
+
@layout-trigger-height: 48px;
|
|
16
|
+
@layout-trigger-bg: #002140;
|
|
17
|
+
@layout-trigger-color: #fff;
|
|
18
|
+
|
|
19
|
+
// ============ Layout 容器 ============
|
|
20
|
+
.@{prefix} {
|
|
21
|
+
display: flex;
|
|
22
|
+
flex: auto;
|
|
23
|
+
flex-direction: column;
|
|
24
|
+
min-height: 0;
|
|
25
|
+
background: @layout-body-bg;
|
|
26
|
+
box-sizing: border-box;
|
|
27
|
+
|
|
28
|
+
&,
|
|
29
|
+
* {
|
|
30
|
+
box-sizing: border-box;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// 包含侧边栏时水平布局
|
|
34
|
+
&-has-sider {
|
|
35
|
+
flex-direction: row;
|
|
36
|
+
|
|
37
|
+
> .@{prefix},
|
|
38
|
+
> .@{prefix}-content {
|
|
39
|
+
width: 0;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// 嵌套 Layout
|
|
45
|
+
.@{prefix} .@{prefix} {
|
|
46
|
+
background: transparent;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// ============ Header 头部 ============
|
|
50
|
+
.@{prefix}-header {
|
|
51
|
+
flex: 0 0 auto;
|
|
52
|
+
height: @layout-header-height;
|
|
53
|
+
padding: @layout-header-padding;
|
|
54
|
+
color: @layout-header-color;
|
|
55
|
+
line-height: @layout-header-height;
|
|
56
|
+
background: @layout-header-bg;
|
|
57
|
+
display: flex;
|
|
58
|
+
align-items: center;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// ============ Sider 侧边栏 ============
|
|
62
|
+
.@{prefix}-sider {
|
|
63
|
+
position: relative;
|
|
64
|
+
min-width: 0;
|
|
65
|
+
background: @layout-sider-bg-dark;
|
|
66
|
+
transition: all 0.2s ease;
|
|
67
|
+
|
|
68
|
+
&-dark {
|
|
69
|
+
background: @layout-sider-bg-dark;
|
|
70
|
+
color: rgba(255, 255, 255, 0.65);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
&-light {
|
|
74
|
+
background: @layout-sider-bg-light;
|
|
75
|
+
color: rgba(0, 0, 0, 0.88);
|
|
76
|
+
border-inline-end: 1px solid rgba(5, 5, 5, 0.06);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
&-children {
|
|
80
|
+
height: 100%;
|
|
81
|
+
padding-top: 0.1px;
|
|
82
|
+
margin-top: -0.1px;
|
|
83
|
+
overflow: auto;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
&-collapsed {
|
|
87
|
+
.@{prefix}-sider-children {
|
|
88
|
+
overflow: visible;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// 触发器
|
|
93
|
+
&-trigger {
|
|
94
|
+
position: fixed;
|
|
95
|
+
bottom: 0;
|
|
96
|
+
z-index: 1;
|
|
97
|
+
height: @layout-trigger-height;
|
|
98
|
+
color: @layout-trigger-color;
|
|
99
|
+
line-height: @layout-trigger-height;
|
|
100
|
+
text-align: center;
|
|
101
|
+
background: @layout-trigger-bg;
|
|
102
|
+
cursor: pointer;
|
|
103
|
+
transition: all 0.2s;
|
|
104
|
+
|
|
105
|
+
&:hover {
|
|
106
|
+
background: lighten(@layout-trigger-bg, 5%);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
&-icon {
|
|
110
|
+
font-size: 12px;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
&-dark &-trigger {
|
|
115
|
+
width: inherit;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
&-light &-trigger {
|
|
119
|
+
width: inherit;
|
|
120
|
+
color: rgba(0, 0, 0, 0.88);
|
|
121
|
+
background: #fff;
|
|
122
|
+
border-top: 1px solid rgba(5, 5, 5, 0.06);
|
|
123
|
+
border-inline-end: 1px solid rgba(5, 5, 5, 0.06);
|
|
124
|
+
|
|
125
|
+
&:hover {
|
|
126
|
+
background: rgba(0, 0, 0, 0.04);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// ============ Content 内容区 ============
|
|
132
|
+
.@{prefix}-content {
|
|
133
|
+
flex: auto;
|
|
134
|
+
min-height: 0;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// ============ Footer 底部 ============
|
|
138
|
+
.@{prefix}-footer {
|
|
139
|
+
flex: 0 0 auto;
|
|
140
|
+
padding: @layout-footer-padding;
|
|
141
|
+
color: rgba(0, 0, 0, 0.88);
|
|
142
|
+
font-size: 14px;
|
|
143
|
+
background: @layout-footer-bg;
|
|
144
|
+
}
|
|
145
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './style.less';
|
|
3
|
+
export interface MasonryProps {
|
|
4
|
+
/** 列数 */
|
|
5
|
+
columns?: number;
|
|
6
|
+
/** 列间距 */
|
|
7
|
+
gutter?: number | [number, number];
|
|
8
|
+
/** 是否顺序排列(从左到右,而不是按最短列) */
|
|
9
|
+
sequential?: boolean;
|
|
10
|
+
/** 子元素 */
|
|
11
|
+
children?: React.ReactNode;
|
|
12
|
+
/** 自定义类名 */
|
|
13
|
+
className?: string;
|
|
14
|
+
/** 自定义样式 */
|
|
15
|
+
style?: React.CSSProperties;
|
|
16
|
+
}
|
|
17
|
+
export declare const Masonry: React.FC<MasonryProps>;
|
|
18
|
+
export default Masonry;
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
5
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
6
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
7
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
8
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
9
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
10
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
11
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
12
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
13
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
14
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
15
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
16
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
17
|
+
import React, { useEffect, useRef, useState, useCallback } from 'react';
|
|
18
|
+
import "./style.less";
|
|
19
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
20
|
+
export var Masonry = function Masonry(_ref) {
|
|
21
|
+
var _ref$columns = _ref.columns,
|
|
22
|
+
columns = _ref$columns === void 0 ? 2 : _ref$columns,
|
|
23
|
+
_ref$gutter = _ref.gutter,
|
|
24
|
+
gutter = _ref$gutter === void 0 ? 16 : _ref$gutter,
|
|
25
|
+
_ref$sequential = _ref.sequential,
|
|
26
|
+
sequential = _ref$sequential === void 0 ? false : _ref$sequential,
|
|
27
|
+
children = _ref.children,
|
|
28
|
+
_ref$className = _ref.className,
|
|
29
|
+
className = _ref$className === void 0 ? '' : _ref$className,
|
|
30
|
+
style = _ref.style;
|
|
31
|
+
var containerRef = useRef(null);
|
|
32
|
+
var _useState = useState([]),
|
|
33
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
34
|
+
columnHeights = _useState2[0],
|
|
35
|
+
setColumnHeights = _useState2[1];
|
|
36
|
+
var _useState3 = useState([]),
|
|
37
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
38
|
+
positions = _useState4[0],
|
|
39
|
+
setPositions = _useState4[1];
|
|
40
|
+
var _useState5 = useState(0),
|
|
41
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
42
|
+
containerHeight = _useState6[0],
|
|
43
|
+
setContainerHeight = _useState6[1];
|
|
44
|
+
var itemRefs = useRef([]);
|
|
45
|
+
|
|
46
|
+
// 解析 gutter
|
|
47
|
+
var _ref2 = Array.isArray(gutter) ? gutter : [gutter, gutter],
|
|
48
|
+
_ref3 = _slicedToArray(_ref2, 2),
|
|
49
|
+
gutterX = _ref3[0],
|
|
50
|
+
gutterY = _ref3[1];
|
|
51
|
+
|
|
52
|
+
// 计算布局
|
|
53
|
+
var calculateLayout = useCallback(function () {
|
|
54
|
+
if (!containerRef.current) return;
|
|
55
|
+
var containerWidth = containerRef.current.offsetWidth;
|
|
56
|
+
var columnWidth = (containerWidth - gutterX * (columns - 1)) / columns;
|
|
57
|
+
var heights = new Array(columns).fill(0);
|
|
58
|
+
var newPositions = [];
|
|
59
|
+
var childArray = React.Children.toArray(children);
|
|
60
|
+
childArray.forEach(function (_, index) {
|
|
61
|
+
var itemEl = itemRefs.current[index];
|
|
62
|
+
if (!itemEl) return;
|
|
63
|
+
var columnIndex;
|
|
64
|
+
if (sequential) {
|
|
65
|
+
// 顺序排列
|
|
66
|
+
columnIndex = index % columns;
|
|
67
|
+
} else {
|
|
68
|
+
// 按最短列排列
|
|
69
|
+
columnIndex = heights.indexOf(Math.min.apply(Math, _toConsumableArray(heights)));
|
|
70
|
+
}
|
|
71
|
+
var left = columnIndex * (columnWidth + gutterX);
|
|
72
|
+
var top = heights[columnIndex];
|
|
73
|
+
newPositions[index] = {
|
|
74
|
+
left: left,
|
|
75
|
+
top: top
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
// 更新列高度
|
|
79
|
+
heights[columnIndex] += itemEl.offsetHeight + gutterY;
|
|
80
|
+
});
|
|
81
|
+
setColumnHeights(heights);
|
|
82
|
+
setPositions(newPositions);
|
|
83
|
+
setContainerHeight(Math.max.apply(Math, _toConsumableArray(heights)) - gutterY);
|
|
84
|
+
}, [children, columns, gutterX, gutterY, sequential]);
|
|
85
|
+
|
|
86
|
+
// 监听尺寸变化
|
|
87
|
+
useEffect(function () {
|
|
88
|
+
calculateLayout();
|
|
89
|
+
var resizeObserver = new ResizeObserver(function () {
|
|
90
|
+
calculateLayout();
|
|
91
|
+
});
|
|
92
|
+
if (containerRef.current) {
|
|
93
|
+
resizeObserver.observe(containerRef.current);
|
|
94
|
+
}
|
|
95
|
+
return function () {
|
|
96
|
+
resizeObserver.disconnect();
|
|
97
|
+
};
|
|
98
|
+
}, [calculateLayout]);
|
|
99
|
+
|
|
100
|
+
// 子元素变化时重新计算
|
|
101
|
+
useEffect(function () {
|
|
102
|
+
// 使用 setTimeout 确保 DOM 已更新
|
|
103
|
+
var timer = setTimeout(function () {
|
|
104
|
+
calculateLayout();
|
|
105
|
+
}, 0);
|
|
106
|
+
return function () {
|
|
107
|
+
return clearTimeout(timer);
|
|
108
|
+
};
|
|
109
|
+
}, [children, calculateLayout]);
|
|
110
|
+
var childArray = React.Children.toArray(children);
|
|
111
|
+
var columnWidth = containerRef.current ? (containerRef.current.offsetWidth - gutterX * (columns - 1)) / columns : 0;
|
|
112
|
+
var classNames = ['kage-masonry', className].filter(Boolean).join(' ');
|
|
113
|
+
return /*#__PURE__*/_jsx("div", {
|
|
114
|
+
ref: containerRef,
|
|
115
|
+
className: classNames,
|
|
116
|
+
style: _objectSpread(_objectSpread({}, style), {}, {
|
|
117
|
+
height: containerHeight || 'auto'
|
|
118
|
+
}),
|
|
119
|
+
children: childArray.map(function (child, index) {
|
|
120
|
+
var _positions$index$left, _positions$index, _positions$index$top, _positions$index2;
|
|
121
|
+
return /*#__PURE__*/_jsx("div", {
|
|
122
|
+
ref: function ref(el) {
|
|
123
|
+
return itemRefs.current[index] = el;
|
|
124
|
+
},
|
|
125
|
+
className: "kage-masonry-item",
|
|
126
|
+
style: {
|
|
127
|
+
width: columnWidth || "calc((100% - ".concat(gutterX * (columns - 1), "px) / ").concat(columns, ")"),
|
|
128
|
+
position: positions[index] ? 'absolute' : 'relative',
|
|
129
|
+
left: (_positions$index$left = (_positions$index = positions[index]) === null || _positions$index === void 0 ? void 0 : _positions$index.left) !== null && _positions$index$left !== void 0 ? _positions$index$left : 0,
|
|
130
|
+
top: (_positions$index$top = (_positions$index2 = positions[index]) === null || _positions$index2 === void 0 ? void 0 : _positions$index2.top) !== null && _positions$index$top !== void 0 ? _positions$index$top : 0,
|
|
131
|
+
opacity: positions[index] ? 1 : 0
|
|
132
|
+
},
|
|
133
|
+
children: child
|
|
134
|
+
}, index);
|
|
135
|
+
})
|
|
136
|
+
});
|
|
137
|
+
};
|
|
138
|
+
export default Masonry;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './style.less';
|
|
3
|
+
export interface MentionOption {
|
|
4
|
+
/** 选项值 */
|
|
5
|
+
value: string;
|
|
6
|
+
/** 显示文本 */
|
|
7
|
+
label?: React.ReactNode;
|
|
8
|
+
/** 是否禁用 */
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface MentionsProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'value' | 'defaultValue' | 'onChange' | 'prefix' | 'onSelect'> {
|
|
12
|
+
/** 当前值 */
|
|
13
|
+
value?: string;
|
|
14
|
+
/** 默认值 */
|
|
15
|
+
defaultValue?: string;
|
|
16
|
+
/** 提及选项 */
|
|
17
|
+
options?: MentionOption[] | string[];
|
|
18
|
+
/** 触发字符 */
|
|
19
|
+
prefix?: string | string[];
|
|
20
|
+
/** 分隔符 */
|
|
21
|
+
split?: string;
|
|
22
|
+
/** 占位符 */
|
|
23
|
+
placeholder?: string;
|
|
24
|
+
/** 是否禁用 */
|
|
25
|
+
disabled?: boolean;
|
|
26
|
+
/** 尺寸 */
|
|
27
|
+
size?: 'large' | 'middle' | 'small';
|
|
28
|
+
/** 状态 */
|
|
29
|
+
status?: 'error' | 'warning';
|
|
30
|
+
/** 自动调整高度 */
|
|
31
|
+
autoSize?: boolean | {
|
|
32
|
+
minRows?: number;
|
|
33
|
+
maxRows?: number;
|
|
34
|
+
};
|
|
35
|
+
/** 过滤选项 */
|
|
36
|
+
filterOption?: boolean | ((input: string, option: MentionOption) => boolean);
|
|
37
|
+
/** 无匹配时的内容 */
|
|
38
|
+
notFoundContent?: React.ReactNode;
|
|
39
|
+
/** 获取选项时的加载状态 */
|
|
40
|
+
loading?: boolean;
|
|
41
|
+
/** 值变化回调 */
|
|
42
|
+
onChange?: (value: string) => void;
|
|
43
|
+
/** 选中回调 */
|
|
44
|
+
onSelect?: (option: MentionOption, prefix: string) => void;
|
|
45
|
+
/** 搜索回调 */
|
|
46
|
+
onSearch?: (text: string, prefix: string) => void;
|
|
47
|
+
/** 失焦回调 */
|
|
48
|
+
onBlur?: (e: React.FocusEvent<HTMLTextAreaElement>) => void;
|
|
49
|
+
/** 聚焦回调 */
|
|
50
|
+
onFocus?: (e: React.FocusEvent<HTMLTextAreaElement>) => void;
|
|
51
|
+
/** 自定义类名 */
|
|
52
|
+
className?: string;
|
|
53
|
+
/** 自定义样式 */
|
|
54
|
+
style?: React.CSSProperties;
|
|
55
|
+
}
|
|
56
|
+
export declare const Mentions: React.ForwardRefExoticComponent<MentionsProps & React.RefAttributes<HTMLTextAreaElement>>;
|
|
57
|
+
export default Mentions;
|