@dtjoy/dt-design 1.0.1 → 1.0.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.
Files changed (141) hide show
  1. package/esm/_util/gapSize.d.ts +3 -0
  2. package/esm/_util/gapSize.js +10 -0
  3. package/esm/_util/hooks/index.d.ts +1 -0
  4. package/esm/_util/hooks/index.js +1 -0
  5. package/esm/_util/hooks/useOrientation.d.ts +2 -0
  6. package/esm/_util/hooks/useOrientation.js +19 -0
  7. package/esm/_util/isNonNullable.d.ts +2 -0
  8. package/esm/_util/isNonNullable.js +4 -0
  9. package/esm/_util/type.d.ts +2 -1
  10. package/esm/blockHeader/index.js +12 -11
  11. package/esm/blockHeader/style/index.d.ts +1 -1
  12. package/esm/blockHeader/style/index.js +1 -1
  13. package/esm/blockHeader/style/index.less +8 -7
  14. package/esm/button/style/index.less +60 -46
  15. package/esm/button/style/mixin.less +47 -0
  16. package/esm/collapsible/index.d.ts +97 -0
  17. package/esm/collapsible/index.js +234 -0
  18. package/esm/collapsible/style/index.d.ts +1 -0
  19. package/esm/collapsible/style/index.js +1 -0
  20. package/esm/collapsible/style/index.less +24 -0
  21. package/esm/collapsibleActionItems/index.d.ts +24 -0
  22. package/esm/collapsibleActionItems/index.js +74 -0
  23. package/esm/collapsibleActionItems/style/index.d.ts +2 -0
  24. package/esm/collapsibleActionItems/style/index.js +2 -0
  25. package/esm/collapsibleActionItems/style/index.less +7 -0
  26. package/esm/flex/index.d.ts +7 -0
  27. package/esm/flex/index.js +62 -0
  28. package/esm/flex/interface.d.ts +16 -0
  29. package/esm/flex/interface.js +1 -0
  30. package/esm/flex/style/index.d.ts +2 -0
  31. package/esm/flex/style/index.js +2 -0
  32. package/esm/flex/style/index.less +77 -0
  33. package/esm/flex/utils.d.ts +7 -0
  34. package/esm/flex/utils.js +33 -0
  35. package/esm/index.d.ts +9 -0
  36. package/esm/index.js +7 -5
  37. package/esm/resize/index.d.ts +8 -0
  38. package/esm/resize/index.js +29 -0
  39. package/esm/splitter/Panel.d.ts +7 -0
  40. package/esm/splitter/Panel.js +38 -0
  41. package/esm/splitter/SplitBar.d.ts +24 -0
  42. package/esm/splitter/SplitBar.js +185 -0
  43. package/esm/splitter/Splitter.d.ts +5 -0
  44. package/esm/splitter/Splitter.js +215 -0
  45. package/esm/splitter/hooks/sizeUtil.d.ts +3 -0
  46. package/esm/splitter/hooks/sizeUtil.js +63 -0
  47. package/esm/splitter/hooks/useItems.d.ts +14 -0
  48. package/esm/splitter/hooks/useItems.js +44 -0
  49. package/esm/splitter/hooks/useResizable.d.ts +10 -0
  50. package/esm/splitter/hooks/useResizable.js +73 -0
  51. package/esm/splitter/hooks/useResize.d.ts +6 -0
  52. package/esm/splitter/hooks/useResize.js +158 -0
  53. package/esm/splitter/hooks/useSizes.d.ts +4 -0
  54. package/esm/splitter/hooks/useSizes.js +80 -0
  55. package/esm/splitter/index.d.ts +8 -0
  56. package/esm/splitter/index.js +5 -0
  57. package/esm/splitter/interface.d.ts +68 -0
  58. package/esm/splitter/interface.js +1 -0
  59. package/esm/splitter/style/index.d.ts +2 -0
  60. package/esm/splitter/style/index.js +2 -0
  61. package/esm/splitter/style/index.less +312 -0
  62. package/esm/statusTag/index.d.ts +28 -0
  63. package/esm/statusTag/index.js +122 -0
  64. package/esm/statusTag/style/index.d.ts +2 -0
  65. package/esm/statusTag/style/index.js +2 -0
  66. package/esm/statusTag/style/index.less +70 -0
  67. package/esm/statusTag/style/mixin.less +39 -0
  68. package/esm/style/mixins/index.less +0 -0
  69. package/esm/style/themes/index.less +2 -1
  70. package/esm/style/themes/variable.less +1 -0
  71. package/lib/_util/gapSize.d.ts +3 -0
  72. package/lib/_util/gapSize.js +17 -0
  73. package/lib/_util/hooks/index.d.ts +1 -0
  74. package/lib/_util/hooks/index.js +16 -0
  75. package/lib/_util/hooks/useOrientation.d.ts +2 -0
  76. package/lib/_util/hooks/useOrientation.js +26 -0
  77. package/lib/_util/isNonNullable.d.ts +2 -0
  78. package/lib/_util/isNonNullable.js +10 -0
  79. package/lib/_util/type.d.ts +2 -1
  80. package/lib/blockHeader/index.js +12 -12
  81. package/lib/blockHeader/style/index.d.ts +1 -1
  82. package/lib/blockHeader/style/index.js +1 -1
  83. package/lib/blockHeader/style/index.less +8 -7
  84. package/lib/button/style/index.less +60 -46
  85. package/lib/button/style/mixin.less +47 -0
  86. package/lib/collapsible/index.d.ts +97 -0
  87. package/lib/collapsible/index.js +199 -0
  88. package/lib/collapsible/style/index.d.ts +1 -0
  89. package/lib/collapsible/style/index.js +3 -0
  90. package/lib/collapsible/style/index.less +24 -0
  91. package/lib/collapsibleActionItems/index.d.ts +24 -0
  92. package/lib/collapsibleActionItems/index.js +68 -0
  93. package/lib/collapsibleActionItems/style/index.d.ts +2 -0
  94. package/lib/collapsibleActionItems/style/index.js +4 -0
  95. package/lib/collapsibleActionItems/style/index.less +7 -0
  96. package/lib/flex/index.d.ts +7 -0
  97. package/lib/flex/index.js +60 -0
  98. package/lib/flex/interface.d.ts +16 -0
  99. package/lib/flex/interface.js +5 -0
  100. package/lib/flex/style/index.d.ts +2 -0
  101. package/lib/flex/style/index.js +4 -0
  102. package/lib/flex/style/index.less +77 -0
  103. package/lib/flex/utils.d.ts +7 -0
  104. package/lib/flex/utils.js +39 -0
  105. package/lib/index.d.ts +9 -0
  106. package/lib/index.js +65 -0
  107. package/lib/resize/index.d.ts +8 -0
  108. package/lib/resize/index.js +38 -0
  109. package/lib/splitter/Panel.d.ts +7 -0
  110. package/lib/splitter/Panel.js +44 -0
  111. package/lib/splitter/SplitBar.d.ts +24 -0
  112. package/lib/splitter/SplitBar.js +179 -0
  113. package/lib/splitter/Splitter.d.ts +5 -0
  114. package/lib/splitter/Splitter.js +202 -0
  115. package/lib/splitter/hooks/sizeUtil.d.ts +3 -0
  116. package/lib/splitter/hooks/sizeUtil.js +56 -0
  117. package/lib/splitter/hooks/useItems.d.ts +14 -0
  118. package/lib/splitter/hooks/useItems.js +46 -0
  119. package/lib/splitter/hooks/useResizable.d.ts +10 -0
  120. package/lib/splitter/hooks/useResizable.js +83 -0
  121. package/lib/splitter/hooks/useResize.d.ts +6 -0
  122. package/lib/splitter/hooks/useResize.js +142 -0
  123. package/lib/splitter/hooks/useSizes.d.ts +4 -0
  124. package/lib/splitter/hooks/useSizes.js +62 -0
  125. package/lib/splitter/index.d.ts +8 -0
  126. package/lib/splitter/index.js +12 -0
  127. package/lib/splitter/interface.d.ts +68 -0
  128. package/lib/splitter/interface.js +5 -0
  129. package/lib/splitter/style/index.d.ts +2 -0
  130. package/lib/splitter/style/index.js +4 -0
  131. package/lib/splitter/style/index.less +312 -0
  132. package/lib/statusTag/index.d.ts +28 -0
  133. package/lib/statusTag/index.js +125 -0
  134. package/lib/statusTag/style/index.d.ts +2 -0
  135. package/lib/statusTag/style/index.js +4 -0
  136. package/lib/statusTag/style/index.less +70 -0
  137. package/lib/statusTag/style/mixin.less +39 -0
  138. package/lib/style/mixins/index.less +0 -0
  139. package/lib/style/themes/index.less +2 -1
  140. package/lib/style/themes/variable.less +1 -0
  141. package/package.json +142 -141
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = useResize;
7
+ var React = _interopRequireWildcard(require("react"));
8
+ var _useSizes = require("./useSizes");
9
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
10
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
11
+ /**
12
+ * Handle user drag resize logic.
13
+ */
14
+ function useResize(items, resizableInfos, percentSizes, containerSize, updateSizes, isRTL) {
15
+ const limitSizes = items.map(item => [item.min, item.max]);
16
+ const mergedContainerSize = containerSize || 0;
17
+ const ptg2px = ptg => ptg * mergedContainerSize;
18
+
19
+ // ======================== Resize ========================
20
+ function getLimitSize(str, defaultLimit) {
21
+ if (typeof str === 'string') {
22
+ return ptg2px((0, _useSizes.getPtg)(str));
23
+ }
24
+ return str ?? defaultLimit;
25
+ }
26
+
27
+ // Real px sizes
28
+ const [cacheSizes, setCacheSizes] = React.useState([]);
29
+ const cacheCollapsedSize = React.useRef([]);
30
+
31
+ /**
32
+ * When start drag, check the direct is `start` or `end`.
33
+ * This will handle when 2 splitter bar are in the same position.
34
+ */
35
+ const [movingIndex, setMovingIndex] = React.useState(null);
36
+ const getPxSizes = () => percentSizes.map(ptg2px);
37
+ const onOffsetStart = index => {
38
+ setCacheSizes(getPxSizes());
39
+ setMovingIndex({
40
+ index,
41
+ confirmed: false
42
+ });
43
+ };
44
+ const onOffsetUpdate = (index, offset) => {
45
+ // First time trigger move index update is not sync in the state
46
+ let confirmedIndex = null;
47
+
48
+ // We need to know what the real index is.
49
+ if ((!movingIndex || !movingIndex.confirmed) && offset !== 0) {
50
+ // Search for the real index
51
+ if (offset > 0) {
52
+ confirmedIndex = index;
53
+ setMovingIndex({
54
+ index,
55
+ confirmed: true
56
+ });
57
+ } else {
58
+ for (let i = index; i >= 0; i -= 1) {
59
+ if (cacheSizes[i] > 0 && resizableInfos[i].resizable) {
60
+ confirmedIndex = i;
61
+ setMovingIndex({
62
+ index: i,
63
+ confirmed: true
64
+ });
65
+ break;
66
+ }
67
+ }
68
+ }
69
+ }
70
+ const mergedIndex = confirmedIndex ?? movingIndex?.index ?? index;
71
+ const numSizes = [...cacheSizes];
72
+ const nextIndex = mergedIndex + 1;
73
+
74
+ // Get boundary
75
+ const startMinSize = getLimitSize(limitSizes[mergedIndex][0], 0);
76
+ const endMinSize = getLimitSize(limitSizes[nextIndex][0], 0);
77
+ const startMaxSize = getLimitSize(limitSizes[mergedIndex][1], mergedContainerSize);
78
+ const endMaxSize = getLimitSize(limitSizes[nextIndex][1], mergedContainerSize);
79
+ let mergedOffset = offset;
80
+
81
+ // Align with the boundary
82
+ if (numSizes[mergedIndex] + mergedOffset < startMinSize) {
83
+ mergedOffset = startMinSize - numSizes[mergedIndex];
84
+ }
85
+ if (numSizes[nextIndex] - mergedOffset < endMinSize) {
86
+ mergedOffset = numSizes[nextIndex] - endMinSize;
87
+ }
88
+ if (numSizes[mergedIndex] + mergedOffset > startMaxSize) {
89
+ mergedOffset = startMaxSize - numSizes[mergedIndex];
90
+ }
91
+ if (numSizes[nextIndex] - mergedOffset > endMaxSize) {
92
+ mergedOffset = numSizes[nextIndex] - endMaxSize;
93
+ }
94
+
95
+ // Do offset
96
+ numSizes[mergedIndex] += mergedOffset;
97
+ numSizes[nextIndex] -= mergedOffset;
98
+ updateSizes(numSizes);
99
+ return numSizes;
100
+ };
101
+ const onOffsetEnd = () => {
102
+ setMovingIndex(null);
103
+ };
104
+
105
+ // ======================= Collapse =======================
106
+ const onCollapse = (index, type) => {
107
+ const currentSizes = getPxSizes();
108
+ const adjustedType = isRTL ? type === 'start' ? 'end' : 'start' : type;
109
+ const currentIndex = adjustedType === 'start' ? index : index + 1;
110
+ const targetIndex = adjustedType === 'start' ? index + 1 : index;
111
+ const currentSize = currentSizes[currentIndex];
112
+ const targetSize = currentSizes[targetIndex];
113
+ if (currentSize !== 0 && targetSize !== 0) {
114
+ // Collapse directly
115
+ currentSizes[currentIndex] = 0;
116
+ currentSizes[targetIndex] += currentSize;
117
+ cacheCollapsedSize.current[index] = currentSize;
118
+ } else {
119
+ const totalSize = currentSize + targetSize;
120
+ const currentSizeMin = getLimitSize(limitSizes[currentIndex][0], 0);
121
+ const currentSizeMax = getLimitSize(limitSizes[currentIndex][1], mergedContainerSize);
122
+ const targetSizeMin = getLimitSize(limitSizes[targetIndex][0], 0);
123
+ const targetSizeMax = getLimitSize(limitSizes[targetIndex][1], mergedContainerSize);
124
+ const limitStart = Math.max(currentSizeMin, totalSize - targetSizeMax);
125
+ const limitEnd = Math.min(currentSizeMax, totalSize - targetSizeMin);
126
+ const halfOffset = targetSizeMin || (limitEnd - limitStart) / 2;
127
+ const targetCacheCollapsedSize = cacheCollapsedSize.current[index];
128
+ const currentCacheCollapsedSize = totalSize - targetCacheCollapsedSize;
129
+ const shouldUseCache = targetCacheCollapsedSize && targetCacheCollapsedSize <= targetSizeMax && targetCacheCollapsedSize >= targetSizeMin && currentCacheCollapsedSize <= currentSizeMax && currentCacheCollapsedSize >= currentSizeMin;
130
+ if (shouldUseCache) {
131
+ currentSizes[targetIndex] = targetCacheCollapsedSize;
132
+ currentSizes[currentIndex] = currentCacheCollapsedSize;
133
+ } else {
134
+ currentSizes[currentIndex] -= halfOffset;
135
+ currentSizes[targetIndex] += halfOffset;
136
+ }
137
+ }
138
+ updateSizes(currentSizes);
139
+ return currentSizes;
140
+ };
141
+ return [onOffsetStart, onOffsetUpdate, onOffsetEnd, onCollapse, movingIndex?.index];
142
+ }
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { PanelProps } from '../interface';
3
+ export declare function getPtg(str: string): number;
4
+ export default function useSizes(items: PanelProps[], containerSize?: number): readonly [(string | number | undefined)[], number[], number[], number[], number[], React.Dispatch<React.SetStateAction<(string | number | undefined)[]>>];
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = useSizes;
7
+ exports.getPtg = getPtg;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _sizeUtil = require("./sizeUtil");
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ function getPtg(str) {
12
+ return Number(str.slice(0, -1)) / 100;
13
+ }
14
+ function isPtg(itemSize) {
15
+ return typeof itemSize === 'string' && itemSize.endsWith('%');
16
+ }
17
+ function useSizes(items, containerSize) {
18
+ const propSizes = items.map(item => item.size);
19
+ const itemsCount = items.length;
20
+ const mergedContainerSize = containerSize || 0;
21
+ const ptg2px = ptg => ptg * mergedContainerSize;
22
+ const [innerSizes, setInnerSizes] = _react.default.useState(() => items.map(item => item.defaultSize));
23
+ const sizes = _react.default.useMemo(() => {
24
+ const mergedSizes = [];
25
+ for (let i = 0; i < itemsCount; i += 1) {
26
+ mergedSizes[i] = propSizes[i] ?? innerSizes[i];
27
+ }
28
+ return mergedSizes;
29
+ }, [itemsCount, innerSizes, propSizes]);
30
+ const postPercentMinSizes = _react.default.useMemo(() => items.map(item => {
31
+ if (isPtg(item.min)) {
32
+ return getPtg(item.min);
33
+ }
34
+ return (item.min || 0) / mergedContainerSize;
35
+ }), [items, mergedContainerSize]);
36
+ const postPercentMaxSizes = _react.default.useMemo(() => items.map(item => {
37
+ if (isPtg(item.max)) {
38
+ return getPtg(item.max);
39
+ }
40
+ return (item.max || mergedContainerSize) / mergedContainerSize;
41
+ }), [items, mergedContainerSize]);
42
+ const postPercentSizes = _react.default.useMemo(() => {
43
+ const ptgList = [];
44
+ for (let i = 0; i < itemsCount; i += 1) {
45
+ const itemSize = sizes[i];
46
+ if (isPtg(itemSize)) {
47
+ ptgList[i] = getPtg(itemSize);
48
+ } else if (itemSize || itemSize === 0) {
49
+ const num = Number(itemSize);
50
+ if (!Number.isNaN(num)) {
51
+ ptgList[i] = num / mergedContainerSize;
52
+ }
53
+ } else {
54
+ ptgList[i] = undefined;
55
+ }
56
+ }
57
+ return (0, _sizeUtil.autoPtgSizes)(ptgList, postPercentMinSizes, postPercentMaxSizes);
58
+ }, [sizes, mergedContainerSize, postPercentMinSizes, postPercentMaxSizes]);
59
+ const postPxSizes = _react.default.useMemo(() => postPercentSizes.map(ptg2px), [postPercentSizes, mergedContainerSize]);
60
+ const panelSizes = _react.default.useMemo(() => containerSize ? postPxSizes : sizes, [postPxSizes, containerSize]);
61
+ return [panelSizes, postPxSizes, postPercentSizes, postPercentMinSizes, postPercentMaxSizes, setInnerSizes];
62
+ }
@@ -0,0 +1,8 @@
1
+ import Panel from './Panel';
2
+ import SplitterComp from './Splitter';
3
+ export type { SplitterProps } from './interface';
4
+ declare type CompoundedComponent = typeof SplitterComp & {
5
+ Panel: typeof Panel;
6
+ };
7
+ declare const Splitter: CompoundedComponent;
8
+ export default Splitter;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _Panel = _interopRequireDefault(require("./Panel"));
8
+ var _Splitter = _interopRequireDefault(require("./Splitter"));
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ const Splitter = _Splitter.default;
11
+ Splitter.Panel = _Panel.default;
12
+ var _default = exports.default = Splitter;
@@ -0,0 +1,68 @@
1
+ /// <reference types="react" />
2
+ import { ShowCollapsibleIconMode } from './SplitBar';
3
+ export interface SplitterProps {
4
+ prefixCls?: string;
5
+ className?: string;
6
+ style?: React.CSSProperties;
7
+ rootClassName?: string;
8
+ layout?: 'horizontal' | 'vertical';
9
+ onResizeStart?: (sizes: number[]) => void;
10
+ onResize?: (sizes: number[]) => void;
11
+ onResizeEnd?: (sizes: number[]) => void;
12
+ lazy?: boolean;
13
+ }
14
+ export interface PanelProps {
15
+ className?: string;
16
+ style?: React.CSSProperties;
17
+ min?: number | string;
18
+ max?: number | string;
19
+ size?: number | string;
20
+ collapsible?: boolean | {
21
+ start?: boolean;
22
+ end?: boolean;
23
+ showCollapsibleIcon?: ShowCollapsibleIconMode;
24
+ };
25
+ resizable?: boolean;
26
+ defaultSize?: number | string;
27
+ }
28
+ export interface InternalPanelProps extends PanelProps {
29
+ className?: string;
30
+ prefixCls?: string;
31
+ }
32
+ export interface UseResizeProps extends Pick<SplitterProps, 'onResize'> {
33
+ basicsState: number[];
34
+ items: PanelProps[];
35
+ panelsRef: React.RefObject<(HTMLDivElement | null)[]>;
36
+ reverse: boolean;
37
+ setBasicsState: React.Dispatch<React.SetStateAction<number[]>>;
38
+ }
39
+ export interface UseResize {
40
+ setSize: (data: {
41
+ size: number;
42
+ index: number;
43
+ }[]) => void;
44
+ setOffset: (offset: number, containerSize: number, index: number) => void;
45
+ }
46
+ export interface UseHandleProps extends Pick<SplitterProps, 'layout' | 'onResizeStart' | 'onResizeEnd'> {
47
+ basicsState: number[];
48
+ containerRef?: React.RefObject<HTMLDivElement | null>;
49
+ setOffset: UseResize['setOffset'];
50
+ setResizing: React.Dispatch<React.SetStateAction<boolean>>;
51
+ }
52
+ export interface UseHandle {
53
+ onStart: (x: number, y: number, index: number) => void;
54
+ }
55
+ export interface UseCollapsibleProps {
56
+ basicsState: number[];
57
+ collapsible?: PanelProps['collapsible'];
58
+ index: number;
59
+ reverse: boolean;
60
+ setSize?: UseResize['setSize'];
61
+ }
62
+ export interface UseCollapsible {
63
+ nextIcon: boolean;
64
+ overlap: boolean;
65
+ previousIcon: boolean;
66
+ onFold: (type: 'previous' | 'next') => void;
67
+ setOldBasics: () => void;
68
+ }
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,2 @@
1
+ import '../../style';
2
+ import './index.less';
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ require("../../style");
4
+ require("./index.less");
@@ -0,0 +1,312 @@
1
+ @import '../../style/themes/index.less';
2
+
3
+ @splitter-prefix-cls: ~'@{ant-prefix}-splitter';
4
+
5
+ @splitter-resize-spinner-size: 20px;
6
+ @splitter-split-bar-draggable-size: @splitter-resize-spinner-size;
7
+ @splitter-split-bar-size: 2px;
8
+ @splitter-split-trigger-size: 6px;
9
+
10
+ @splitterBarPreviewOffsetVar: ~'@{splitter-prefix-cls}-bar-preview-offset';
11
+ @splitter-transform-x: ~'translateX(var(--@{splitterBarPreviewOffsetVar}))';
12
+ @splitter-transform-y: ~'translateY(var(--@{splitterBarPreviewOffsetVar}))';
13
+
14
+ .center-position() {
15
+ position: absolute;
16
+ top: 50%;
17
+ left: 50%;
18
+ transform: translate(-50%, -50%);
19
+ }
20
+
21
+ .@{splitter-prefix-cls} {
22
+ display: flex;
23
+ width: 100%;
24
+ height: 100%;
25
+ align-items: stretch;
26
+
27
+ & > .@{splitter-prefix-cls}-bar {
28
+ flex: none;
29
+ position: relative;
30
+ user-select: none;
31
+
32
+ .@{splitter-prefix-cls}-bar-dragger {
33
+ .center-position();
34
+ z-index: 1;
35
+ pointer-events: auto;
36
+
37
+ &::before {
38
+ content: '';
39
+ background: @item-hover-bg;
40
+ .center-position();
41
+ }
42
+
43
+ &::after {
44
+ content: '';
45
+ background: rgba(0, 0, 0, 0.15);
46
+ .center-position();
47
+ }
48
+
49
+ &:hover:not(.@{splitter-prefix-cls}-bar-dragger-active) {
50
+ &::before {
51
+ background: @item-active-bg;
52
+ }
53
+ }
54
+
55
+ &.@{splitter-prefix-cls}-bar-dragger-active {
56
+ z-index: 2;
57
+
58
+ &::before {
59
+ background: @item-active-bg;
60
+ }
61
+ }
62
+
63
+ &.@{splitter-prefix-cls}-bar-dragger-disabled {
64
+ z-index: 0;
65
+ cursor: default;
66
+
67
+ &,
68
+ &:hover,
69
+ &.@{splitter-prefix-cls}-bar-dragger-active {
70
+ &::before {
71
+ background: @disabled-bg;
72
+ }
73
+ }
74
+
75
+ &::after {
76
+ display: none;
77
+ }
78
+ }
79
+ }
80
+
81
+ .@{splitter-prefix-cls}-bar-collapse-bar {
82
+ .center-position();
83
+ z-index: @zindex-popover;
84
+ background: @item-hover-bg;
85
+ font-size: @font-size-base;
86
+ border-radius: @border-radius-base;
87
+ color: @text-color;
88
+ cursor: pointer;
89
+ opacity: 0;
90
+ display: flex;
91
+ align-items: center;
92
+ justify-content: center;
93
+
94
+ &:hover {
95
+ background: @item-active-bg;
96
+ }
97
+
98
+ &:active {
99
+ background: @item-active-bg;
100
+ }
101
+ }
102
+
103
+ &:hover,
104
+ &:active {
105
+ .@{splitter-prefix-cls}-bar-collapse-bar-hover-only {
106
+ opacity: 1;
107
+ }
108
+ }
109
+
110
+ .@{splitter-prefix-cls}-bar-collapse-bar-hover-only {
111
+ @media (hover: none) {
112
+ opacity: 1;
113
+ }
114
+ }
115
+
116
+ .@{splitter-prefix-cls}-bar-collapse-bar-always-hidden {
117
+ display: none;
118
+ }
119
+
120
+ .@{splitter-prefix-cls}-bar-collapse-bar-always-visible {
121
+ opacity: 1;
122
+ }
123
+ }
124
+
125
+ .@{splitter-prefix-cls}-mask {
126
+ position: fixed;
127
+ z-index: 9999;
128
+ top: 0;
129
+ right: 0;
130
+ bottom: 0;
131
+ left: 0;
132
+ background: transparent;
133
+
134
+ &.@{splitter-prefix-cls}-mask-horizontal {
135
+ cursor: col-resize;
136
+ }
137
+
138
+ &.@{splitter-prefix-cls}-mask-vertical {
139
+ cursor: row-resize;
140
+ }
141
+ }
142
+
143
+ &.@{splitter-prefix-cls}-horizontal {
144
+ flex-direction: row;
145
+
146
+ & > .@{splitter-prefix-cls}-bar {
147
+ width: 0;
148
+
149
+ .@{splitter-prefix-cls}-bar-preview {
150
+ height: 100%;
151
+ width: @splitter-split-bar-size;
152
+ position: absolute;
153
+ background: @primary-color;
154
+ opacity: 0.2;
155
+ pointer-events: none;
156
+ transition: none;
157
+ z-index: 1;
158
+ display: none;
159
+
160
+ &.@{splitter-prefix-cls}-bar-preview-active {
161
+ display: block;
162
+
163
+ transform: @splitter-transform-x;
164
+ }
165
+ }
166
+
167
+ .@{splitter-prefix-cls}-bar-dragger {
168
+ cursor: col-resize;
169
+ height: 100%;
170
+ width: @splitter-split-trigger-size;
171
+
172
+ &::before {
173
+ height: 100%;
174
+ width: @splitter-split-bar-size;
175
+ }
176
+
177
+ &::after {
178
+ height: @splitter-split-bar-draggable-size;
179
+ width: @splitter-split-bar-size;
180
+ }
181
+ }
182
+
183
+ .@{splitter-prefix-cls}-bar-collapse-bar {
184
+ width: @font-size-sm;
185
+ height: @btn-height-sm;
186
+
187
+ &.@{splitter-prefix-cls}-bar-collapse-bar-start {
188
+ left: auto;
189
+ right: (@splitter-split-trigger-size / 2);
190
+ transform: translateY(-50%);
191
+ }
192
+
193
+ &.@{splitter-prefix-cls}-bar-collapse-bar-end {
194
+ left: (@splitter-split-trigger-size / 2);
195
+ right: auto;
196
+ transform: translateY(-50%);
197
+ }
198
+ }
199
+ }
200
+ }
201
+
202
+ &.@{splitter-prefix-cls}-vertical {
203
+ flex-direction: column;
204
+
205
+ & > .@{splitter-prefix-cls}-bar {
206
+ height: 0;
207
+
208
+ .@{splitter-prefix-cls}-bar-preview {
209
+ height: @splitter-split-bar-size;
210
+ width: 100%;
211
+ position: absolute;
212
+ background: @primary-color;
213
+ opacity: 0.2;
214
+ pointer-events: none;
215
+ transition: none;
216
+ z-index: 1;
217
+ display: none;
218
+
219
+ &.@{splitter-prefix-cls}-bar-preview-active {
220
+ display: block;
221
+ transform: @splitter-transform-y;
222
+ }
223
+ }
224
+
225
+ .@{splitter-prefix-cls}-bar-dragger {
226
+ cursor: row-resize;
227
+ width: 100%;
228
+ height: @splitter-split-trigger-size;
229
+
230
+ &::before {
231
+ width: 100%;
232
+ height: @splitter-split-bar-size;
233
+ }
234
+
235
+ &::after {
236
+ width: @splitter-split-bar-draggable-size;
237
+ height: @splitter-split-bar-size;
238
+ }
239
+ }
240
+
241
+ .@{splitter-prefix-cls}-bar-collapse-bar {
242
+ height: @font-size-sm;
243
+ width: @btn-height-sm;
244
+
245
+ &.@{splitter-prefix-cls}-bar-collapse-bar-start {
246
+ top: auto;
247
+ bottom: (@splitter-split-trigger-size / 2);
248
+ transform: translateX(-50%);
249
+ }
250
+
251
+ &.@{splitter-prefix-cls}-bar-collapse-bar-end {
252
+ top: (@splitter-split-trigger-size / 2);
253
+ bottom: auto;
254
+ transform: translateX(-50%);
255
+ }
256
+ }
257
+ }
258
+ }
259
+
260
+ .@{splitter-prefix-cls}-panel {
261
+ overflow: auto;
262
+ padding: 0 1px;
263
+ box-sizing: border-box;
264
+
265
+ &::-webkit-scrollbar {
266
+ width: 8px;
267
+ height: 8px;
268
+ }
269
+
270
+ &::-webkit-scrollbar-thumb {
271
+ background: @table-sticky-scroll-bar-bg;
272
+ border-radius: @table-sticky-scroll-bar-radius;
273
+ }
274
+
275
+ &.@{splitter-prefix-cls}-panel-hidden {
276
+ padding: 0;
277
+ overflow: hidden;
278
+ }
279
+
280
+ &:has(.@{splitter-prefix-cls}:only-child) {
281
+ overflow: hidden;
282
+ }
283
+ }
284
+
285
+ &.@{ant-prefix}-rtl.@{splitter-prefix-cls}-horizontal {
286
+ & > .@{splitter-prefix-cls}-bar {
287
+ .@{splitter-prefix-cls}-bar-collapse-previous {
288
+ right: 0;
289
+ left: unset;
290
+ }
291
+
292
+ .@{splitter-prefix-cls}-bar-collapse-next {
293
+ right: unset;
294
+ left: 0;
295
+ }
296
+ }
297
+ }
298
+
299
+ &.@{ant-prefix}-rtl.@{splitter-prefix-cls}-vertical {
300
+ & > .@{splitter-prefix-cls}-bar {
301
+ .@{splitter-prefix-cls}-bar-collapse-previous {
302
+ right: 50%;
303
+ left: unset;
304
+ }
305
+
306
+ .@{splitter-prefix-cls}-bar-collapse-next {
307
+ right: 50%;
308
+ left: unset;
309
+ }
310
+ }
311
+ }
312
+ }
@@ -0,0 +1,28 @@
1
+ import React, { CSSProperties, HTMLAttributes, ReactNode } from 'react';
2
+ import './style';
3
+ export declare const PRESET_COLOR_TYPES: readonly ["blue", "yellow", "green", "gray", "red", "purple", "cyan", "pink"];
4
+ export declare const STATUS_TAG_TYPES: readonly ["default", "outline", "fill"];
5
+ export declare type PresetColorType = (typeof PRESET_COLOR_TYPES)[number] | (string & {});
6
+ export declare type StatusTagType = (typeof STATUS_TAG_TYPES)[number];
7
+ export interface IStatusTagProps extends HTMLAttributes<HTMLDivElement> {
8
+ /** 状态类型 */
9
+ type?: StatusTagType;
10
+ /** 是否圆角 */
11
+ rounded?: boolean;
12
+ /** 状态颜色(支持预设值/自定义十六进制/RGB) */
13
+ color?: PresetColorType;
14
+ /** 是否加载中 */
15
+ loading?: boolean;
16
+ /** 自定义图标 */
17
+ icon?: ReactNode;
18
+ /** 背景颜色(仅fill类型生效),未设置时使用color的0.15透明度 */
19
+ background?: string;
20
+ /** 类名 */
21
+ className?: string;
22
+ /** 子节点 */
23
+ children?: ReactNode;
24
+ /** 自定义样式 */
25
+ style?: CSSProperties;
26
+ }
27
+ declare const StatusTag: React.FC<IStatusTagProps>;
28
+ export default StatusTag;