@pisell/materials 1.0.977 → 1.0.979

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/build/lowcode/assets-daily.json +11 -11
  2. package/build/lowcode/assets-dev.json +2 -2
  3. package/build/lowcode/assets-prod.json +11 -11
  4. package/build/lowcode/index.js +1 -1
  5. package/build/lowcode/meta.js +6 -6
  6. package/build/lowcode/preview.js +9 -9
  7. package/build/lowcode/render/default/view.css +1 -1
  8. package/build/lowcode/render/default/view.js +15 -15
  9. package/build/lowcode/view.css +1 -1
  10. package/build/lowcode/view.js +23 -23
  11. package/es/components/PisellProcedure/PisellProcedure.d.ts +27 -0
  12. package/es/components/PisellProcedure/components/ProcedureAction.d.ts +8 -0
  13. package/es/components/PisellProcedure/components/ProcedureContent.d.ts +8 -0
  14. package/es/components/PisellProcedure/components/ProcedureHeader.d.ts +8 -0
  15. package/es/components/PisellProcedure/components/ProcedureSummary.d.ts +8 -0
  16. package/es/components/PisellProcedure/hooks/useResponsive.d.ts +6 -0
  17. package/es/components/PisellProcedure/index.d.ts +4 -0
  18. package/es/components/PisellProcedure/types.d.ts +303 -0
  19. package/es/components/PisellSteps/PisellSteps.d.ts +14 -0
  20. package/es/components/PisellSteps/PisellSteps.js +170 -148
  21. package/es/components/PisellSteps/PisellSteps.less +248 -383
  22. package/es/components/PisellSteps/hooks/index.d.ts +4 -0
  23. package/es/components/PisellSteps/hooks/index.js +4 -0
  24. package/es/components/PisellSteps/hooks/useAnchor.d.ts +9 -0
  25. package/es/components/PisellSteps/hooks/useAnchor.js +55 -0
  26. package/es/components/PisellSteps/hooks/useResponsive.d.ts +8 -0
  27. package/es/components/PisellSteps/hooks/useResponsive.js +43 -0
  28. package/es/components/PisellSteps/hooks/useStepClick.d.ts +11 -0
  29. package/es/components/PisellSteps/hooks/useStepClick.js +35 -0
  30. package/es/components/PisellSteps/hooks/useStepsState.d.ts +9 -0
  31. package/es/components/PisellSteps/hooks/useStepsState.js +60 -0
  32. package/es/components/PisellSteps/index.d.ts +3 -0
  33. package/es/components/PisellSteps/index.js +2 -5
  34. package/es/components/PisellSteps/types.d.ts +271 -0
  35. package/es/components/PisellSteps/utils/index.d.ts +54 -0
  36. package/es/components/PisellSteps/utils/index.js +118 -0
  37. package/es/components/Template/PisellSteps.d.ts +0 -0
  38. package/es/components/Template/PisellSteps.js +1 -0
  39. package/es/components/Template/PisellSteps.less +1 -0
  40. package/es/components/Template/components/index.d.ts +0 -0
  41. package/es/components/Template/components/index.js +1 -0
  42. package/es/components/Template/hooks/index.d.ts +0 -0
  43. package/es/components/Template/hooks/index.js +1 -0
  44. package/es/components/Template/utils/index.d.ts +0 -0
  45. package/es/components/Template/utils/index.js +1 -0
  46. package/es/components/dataSourceComponents/dataSourceForm/submitButton/index.js +5 -5
  47. package/es/components/dataSourceComponents/dataSourceForm/urlUtils.d.ts +0 -10
  48. package/es/components/dataSourceComponents/dataSourceForm/urlUtils.js +13 -64
  49. package/es/components/dataSourceComponents/dataSourceForm/utils.d.ts +56 -0
  50. package/es/components/dataSourceComponents/dataSourceForm/utils.js +3 -4
  51. package/es/components/dataSourceComponents/dataSourceTable/filter/index.d.ts +1 -0
  52. package/es/components/dataSourceComponents/dataSourceTable/hooks/useTableProps.d.ts +101 -0
  53. package/es/components/dataSourceComponents/fields/Input.Mobile/WithMode.d.ts +17 -0
  54. package/es/components/dataSourceComponents/fields/Input.Phone/WithMode.d.ts +16 -0
  55. package/es/components/dataSourceComponents/fields/Select/index.d.ts +1 -1
  56. package/es/components/dataSourceComponents/fields/Switch/ReadPretty.d.ts +5 -0
  57. package/es/components/dataSourceComponents/fields/Switch/ReadPretty.js +16 -0
  58. package/es/components/dataSourceComponents/fields/Switch/ReadPretty.less +2 -0
  59. package/es/components/dataSourceComponents/fields/Switch/WithMode.d.ts +3 -0
  60. package/es/components/dataSourceComponents/fields/Switch/WithMode.js +5 -0
  61. package/es/components/dataSourceComponents/fields/Switch/index.d.ts +3 -0
  62. package/es/components/dataSourceComponents/fields/Switch/index.js +8 -0
  63. package/es/components/dataSourceComponents/fields/Switch/type.d.ts +16 -0
  64. package/es/components/dataSourceComponents/fields/Switch/type.js +1 -0
  65. package/es/components/dataSourceComponents/fields/index.d.ts +12 -12
  66. package/es/components/dataSourceComponents/provider/variables/VariablesProvider.d.ts +4 -0
  67. package/es/components/pisellCardList/index.d.ts +107 -0
  68. package/es/components/pisellGoodPassCard/index.d.ts +50 -0
  69. package/es/components/pisellWalletPassCard/index.d.ts +146 -0
  70. package/es/components/productCard/index.d.ts +7 -0
  71. package/es/index.d.ts +149 -0
  72. package/es/index.js +1 -1
  73. package/lib/components/PisellProcedure/PisellProcedure.d.ts +27 -0
  74. package/lib/components/PisellProcedure/components/ProcedureAction.d.ts +8 -0
  75. package/lib/components/PisellProcedure/components/ProcedureContent.d.ts +8 -0
  76. package/lib/components/PisellProcedure/components/ProcedureHeader.d.ts +8 -0
  77. package/lib/components/PisellProcedure/components/ProcedureSummary.d.ts +8 -0
  78. package/lib/components/PisellProcedure/hooks/useResponsive.d.ts +6 -0
  79. package/lib/components/PisellProcedure/index.d.ts +4 -0
  80. package/lib/components/PisellProcedure/types.d.ts +303 -0
  81. package/lib/components/PisellSteps/PisellSteps.d.ts +14 -0
  82. package/lib/components/PisellSteps/PisellSteps.js +155 -102
  83. package/lib/components/PisellSteps/PisellSteps.less +248 -383
  84. package/lib/components/PisellSteps/hooks/index.d.ts +4 -0
  85. package/lib/components/PisellSteps/hooks/index.js +38 -0
  86. package/lib/components/PisellSteps/hooks/useAnchor.d.ts +9 -0
  87. package/lib/components/PisellSteps/hooks/useAnchor.js +63 -0
  88. package/lib/components/PisellSteps/hooks/useResponsive.d.ts +8 -0
  89. package/lib/components/PisellSteps/hooks/useResponsive.js +48 -0
  90. package/lib/components/PisellSteps/hooks/useStepClick.d.ts +11 -0
  91. package/lib/components/PisellSteps/hooks/useStepClick.js +55 -0
  92. package/lib/components/PisellSteps/hooks/useStepsState.d.ts +9 -0
  93. package/lib/components/PisellSteps/hooks/useStepsState.js +54 -0
  94. package/lib/components/PisellSteps/index.d.ts +3 -0
  95. package/lib/components/PisellSteps/index.js +2 -7
  96. package/lib/components/PisellSteps/types.d.ts +271 -0
  97. package/lib/components/PisellSteps/utils/index.d.ts +54 -0
  98. package/lib/components/PisellSteps/utils/index.js +88 -0
  99. package/lib/components/Template/PisellSteps.d.ts +0 -0
  100. package/lib/components/Template/PisellSteps.js +0 -0
  101. package/lib/components/Template/PisellSteps.less +1 -0
  102. package/lib/components/Template/components/index.d.ts +0 -0
  103. package/lib/components/Template/components/index.js +0 -0
  104. package/lib/components/Template/hooks/index.d.ts +0 -0
  105. package/lib/components/Template/hooks/index.js +0 -0
  106. package/lib/components/Template/utils/index.d.ts +0 -0
  107. package/lib/components/Template/utils/index.js +0 -0
  108. package/lib/components/dataSourceComponents/dataSourceForm/submitButton/index.js +4 -4
  109. package/lib/components/dataSourceComponents/dataSourceForm/urlUtils.d.ts +0 -10
  110. package/lib/components/dataSourceComponents/dataSourceForm/urlUtils.js +3 -25
  111. package/lib/components/dataSourceComponents/dataSourceForm/utils.d.ts +56 -0
  112. package/lib/components/dataSourceComponents/dataSourceForm/utils.js +3 -3
  113. package/lib/components/dataSourceComponents/dataSourceTable/filter/index.d.ts +1 -0
  114. package/lib/components/dataSourceComponents/dataSourceTable/hooks/useTableProps.d.ts +101 -0
  115. package/lib/components/dataSourceComponents/fields/Input.Mobile/WithMode.d.ts +17 -0
  116. package/lib/components/dataSourceComponents/fields/Input.Phone/WithMode.d.ts +16 -0
  117. package/lib/components/dataSourceComponents/fields/Select/index.d.ts +1 -1
  118. package/lib/components/dataSourceComponents/fields/Switch/ReadPretty.d.ts +5 -0
  119. package/lib/components/dataSourceComponents/fields/Switch/ReadPretty.js +52 -0
  120. package/lib/components/dataSourceComponents/fields/Switch/ReadPretty.less +2 -0
  121. package/lib/components/dataSourceComponents/fields/Switch/WithMode.d.ts +3 -0
  122. package/lib/components/dataSourceComponents/fields/Switch/WithMode.js +39 -0
  123. package/lib/components/dataSourceComponents/fields/Switch/index.d.ts +3 -0
  124. package/lib/components/dataSourceComponents/fields/Switch/index.js +42 -0
  125. package/lib/components/dataSourceComponents/fields/Switch/type.d.ts +16 -0
  126. package/lib/components/dataSourceComponents/fields/Switch/type.js +17 -0
  127. package/lib/components/dataSourceComponents/fields/index.d.ts +12 -12
  128. package/lib/components/dataSourceComponents/provider/variables/VariablesProvider.d.ts +4 -0
  129. package/lib/components/pisellCardList/index.d.ts +107 -0
  130. package/lib/components/pisellGoodPassCard/index.d.ts +50 -0
  131. package/lib/components/pisellWalletPassCard/index.d.ts +146 -0
  132. package/lib/components/productCard/index.d.ts +7 -0
  133. package/lib/index.d.ts +149 -0
  134. package/lib/index.js +3 -3
  135. package/lowcode/data-source-form/constants.ts +3 -0
  136. package/lowcode/data-source-form/utils.ts +36 -7
  137. package/lowcode/form-item-switch/meta.ts +145 -0
  138. package/lowcode/form-item-switch/snippets.ts +15 -0
  139. package/lowcode/pisell-steps/meta.ts +621 -271
  140. package/lowcode/pisell-steps/snippets.ts +27 -69
  141. package/package.json +3 -3
@@ -0,0 +1,4 @@
1
+ export { useStepsState } from './useStepsState';
2
+ export { useStepClick } from './useStepClick';
3
+ export { useAnchor } from './useAnchor';
4
+ export { useResponsive } from './useResponsive';
@@ -0,0 +1,4 @@
1
+ export { useStepsState } from "./useStepsState";
2
+ export { useStepClick } from "./useStepClick";
3
+ export { useAnchor } from "./useAnchor";
4
+ export { useResponsive } from "./useResponsive";
@@ -0,0 +1,9 @@
1
+ /**
2
+ * 锚链接功能 Hook
3
+ * 当开启锚链接时,自动滚动到当前步骤对应的锚点
4
+ *
5
+ * @param currentStep - 当前步骤索引
6
+ * @param enableAnchor - 是否启用锚链接
7
+ * @param anchorContainer - 锚链接容器选择器或元素
8
+ */
9
+ export declare function useAnchor(currentStep: number, enableAnchor: boolean, anchorContainer?: string | HTMLElement): void;
@@ -0,0 +1,55 @@
1
+ import { useEffect, useRef } from 'react';
2
+
3
+ /**
4
+ * 锚链接功能 Hook
5
+ * 当开启锚链接时,自动滚动到当前步骤对应的锚点
6
+ *
7
+ * @param currentStep - 当前步骤索引
8
+ * @param enableAnchor - 是否启用锚链接
9
+ * @param anchorContainer - 锚链接容器选择器或元素
10
+ */
11
+ export function useAnchor(currentStep, enableAnchor, anchorContainer) {
12
+ var previousStepRef = useRef(currentStep);
13
+ useEffect(function () {
14
+ // 未启用锚链接,直接返回
15
+ if (!enableAnchor) {
16
+ return;
17
+ }
18
+
19
+ // 步骤未发生变化,直接返回
20
+ if (previousStepRef.current === currentStep) {
21
+ return;
22
+ }
23
+
24
+ // 更新上一步记录
25
+ previousStepRef.current = currentStep;
26
+
27
+ // 查找锚点元素
28
+ var anchorId = "pisell-steps-anchor-".concat(currentStep);
29
+ var anchorElement = document.getElementById(anchorId);
30
+ if (!anchorElement) {
31
+ return;
32
+ }
33
+
34
+ // 获取滚动容器
35
+ var scrollContainer = window;
36
+ if (anchorContainer) {
37
+ if (typeof anchorContainer === 'string') {
38
+ var container = document.querySelector(anchorContainer);
39
+ if (container instanceof HTMLElement) {
40
+ scrollContainer = container;
41
+ }
42
+ } else if (anchorContainer instanceof HTMLElement) {
43
+ scrollContainer = anchorContainer;
44
+ }
45
+ }
46
+
47
+ // 滚动到锚点
48
+ var scrollOptions = {
49
+ behavior: 'smooth',
50
+ block: 'start',
51
+ inline: 'nearest'
52
+ };
53
+ anchorElement.scrollIntoView(scrollOptions);
54
+ }, [currentStep, enableAnchor, anchorContainer]);
55
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * 响应式监听 Hook
3
+ * 监听窗口大小变化,返回当前是否为移动端
4
+ *
5
+ * @param breakpoint - 断点宽度(默认 768px)
6
+ * @returns 是否为移动端
7
+ */
8
+ export declare function useResponsive(breakpoint?: number): boolean;
@@ -0,0 +1,43 @@
1
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
+ 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."); }
3
+ 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); }
4
+ 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; }
5
+ 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; } }
6
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
+ import { useEffect, useState } from 'react';
8
+
9
+ /**
10
+ * 响应式监听 Hook
11
+ * 监听窗口大小变化,返回当前是否为移动端
12
+ *
13
+ * @param breakpoint - 断点宽度(默认 768px)
14
+ * @returns 是否为移动端
15
+ */
16
+ export function useResponsive() {
17
+ var breakpoint = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 768;
18
+ var _useState = useState(typeof window !== 'undefined' ? window.innerWidth < breakpoint : false),
19
+ _useState2 = _slicedToArray(_useState, 2),
20
+ isMobile = _useState2[0],
21
+ setIsMobile = _useState2[1];
22
+ useEffect(function () {
23
+ // 服务端渲染时不执行
24
+ if (typeof window === 'undefined') {
25
+ return;
26
+ }
27
+ var handleResize = function handleResize() {
28
+ setIsMobile(window.innerWidth < breakpoint);
29
+ };
30
+
31
+ // 添加监听器
32
+ window.addEventListener('resize', handleResize);
33
+
34
+ // 初始化检查
35
+ handleResize();
36
+
37
+ // 清理监听器
38
+ return function () {
39
+ window.removeEventListener('resize', handleResize);
40
+ };
41
+ }, [breakpoint]);
42
+ return isMobile;
43
+ }
@@ -0,0 +1,11 @@
1
+ import type { PisellStepItem } from '../types';
2
+ /**
3
+ * 处理步骤点击逻辑的 Hook
4
+ *
5
+ * @param currentStep - 当前步骤索引
6
+ * @param clickable - 是否允许点击步骤切换
7
+ * @param allowClickFinished - 是否允许点击已完成的步骤
8
+ * @param onStepChange - 步骤变更回调函数
9
+ * @returns 步骤点击处理函数
10
+ */
11
+ export declare function useStepClick(currentStep: number, clickable: boolean, allowClickFinished: boolean, onStepChange: (step: number) => void): (index: number, item: PisellStepItem) => void;
@@ -0,0 +1,35 @@
1
+ import { useCallback } from 'react';
2
+ import { isStepClickable } from "../utils";
3
+
4
+ /**
5
+ * 处理步骤点击逻辑的 Hook
6
+ *
7
+ * @param currentStep - 当前步骤索引
8
+ * @param clickable - 是否允许点击步骤切换
9
+ * @param allowClickFinished - 是否允许点击已完成的步骤
10
+ * @param onStepChange - 步骤变更回调函数
11
+ * @returns 步骤点击处理函数
12
+ */
13
+ export function useStepClick(currentStep, clickable, allowClickFinished, onStepChange) {
14
+ var handleStepClick = useCallback(function (index, item) {
15
+ // 检查是否禁用
16
+ if (item.disabled) {
17
+ return;
18
+ }
19
+
20
+ // 检查是否可点击
21
+ if (!clickable) {
22
+ return;
23
+ }
24
+
25
+ // 检查步骤状态是否允许点击
26
+ var canClick = isStepClickable(index, currentStep, item.status || 'wait', clickable, allowClickFinished);
27
+ if (!canClick) {
28
+ return;
29
+ }
30
+
31
+ // 触发步骤变更
32
+ onStepChange(index);
33
+ }, [currentStep, clickable, allowClickFinished, onStepChange]);
34
+ return handleStepClick;
35
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * 管理步骤条状态的 Hook(支持受控和非受控模式)
3
+ *
4
+ * @param current - 受控模式下的当前步骤
5
+ * @param defaultCurrent - 非受控模式下的默认当前步骤
6
+ * @param onChange - 步骤变更回调函数
7
+ * @returns [currentStep, setCurrentStep] - 当前步骤和设置步骤的函数
8
+ */
9
+ export declare function useStepsState(current?: number, defaultCurrent?: number, onChange?: (current: number) => void): [number, (value: number) => void];
@@ -0,0 +1,60 @@
1
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
+ 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."); }
3
+ 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); }
4
+ 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; }
5
+ 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; } }
6
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
+ import { useState, useCallback, useEffect, useRef } from 'react';
8
+
9
+ /**
10
+ * 管理步骤条状态的 Hook(支持受控和非受控模式)
11
+ *
12
+ * @param current - 受控模式下的当前步骤
13
+ * @param defaultCurrent - 非受控模式下的默认当前步骤
14
+ * @param onChange - 步骤变更回调函数
15
+ * @returns [currentStep, setCurrentStep] - 当前步骤和设置步骤的函数
16
+ */
17
+ export function useStepsState(current) {
18
+ var defaultCurrent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
19
+ var onChange = arguments.length > 2 ? arguments[2] : undefined;
20
+ // 内部状态(非受控模式使用)
21
+ var _useState = useState(defaultCurrent),
22
+ _useState2 = _slicedToArray(_useState, 2),
23
+ innerCurrent = _useState2[0],
24
+ setInnerCurrent = _useState2[1];
25
+
26
+ // 记录上一次的步骤,用于判断变更方向
27
+ var previousCurrentRef = useRef(defaultCurrent);
28
+
29
+ // 判断是否为受控模式
30
+ var isControlled = current !== undefined;
31
+
32
+ // 当前步骤值
33
+ var currentStep = isControlled ? current : innerCurrent;
34
+
35
+ // 设置步骤的函数
36
+ var setCurrentStep = useCallback(function (value) {
37
+ var previousCurrent = previousCurrentRef.current;
38
+
39
+ // 非受控模式下更新内部状态
40
+ if (!isControlled) {
41
+ setInnerCurrent(value);
42
+ }
43
+
44
+ // 触发 onChange 回调
45
+ if (onChange && value !== previousCurrent) {
46
+ onChange(value);
47
+ }
48
+
49
+ // 更新上一次步骤记录
50
+ previousCurrentRef.current = value;
51
+ }, [isControlled, onChange]);
52
+
53
+ // 受控模式下,同步更新 previousCurrentRef
54
+ useEffect(function () {
55
+ if (isControlled && current !== undefined) {
56
+ previousCurrentRef.current = current;
57
+ }
58
+ }, [current, isControlled]);
59
+ return [currentStep, setCurrentStep];
60
+ }
@@ -0,0 +1,3 @@
1
+ import PisellSteps from './PisellSteps';
2
+ export type { PisellStepsProps, PisellStepItem, StepStatus, StepType, StepDirection, StepSize } from './types';
3
+ export default PisellSteps;
@@ -1,5 +1,2 @@
1
- // 导出组件
2
- export { default } from "./PisellSteps";
3
- export { default as PisellSteps } from "./PisellSteps";
4
-
5
- // 导出类型
1
+ import PisellSteps from "./PisellSteps";
2
+ export default PisellSteps;
@@ -0,0 +1,271 @@
1
+ import type { StepsProps, StepProps } from 'antd';
2
+ import type { CSSProperties, ReactNode } from 'react';
3
+ /**
4
+ * 步骤状态类型
5
+ */
6
+ export declare type StepStatus = 'wait' | 'process' | 'finish' | 'error';
7
+ /**
8
+ * 步骤条展示类型
9
+ */
10
+ export declare type StepType = 'default' | 'dot' | 'navigation';
11
+ /**
12
+ * 步骤条方向
13
+ */
14
+ export declare type StepDirection = 'horizontal' | 'vertical';
15
+ /**
16
+ * 步骤条尺寸
17
+ */
18
+ export declare type StepSize = 'small' | 'default' | 'large';
19
+ /**
20
+ * 标签放置位置
21
+ */
22
+ export declare type StepLabelPlacement = 'horizontal' | 'vertical';
23
+ /**
24
+ * 连接器位置
25
+ */
26
+ export declare type ConnectorPosition = 'center' | 'top' | 'bottom';
27
+ /**
28
+ * 单个步骤项配置
29
+ */
30
+ export interface PisellStepItem extends Omit<StepProps, 'status' | 'onClick'> {
31
+ /**
32
+ * 步骤标题
33
+ */
34
+ title?: ReactNode;
35
+ /**
36
+ * 步骤副标题
37
+ */
38
+ subTitle?: ReactNode;
39
+ /**
40
+ * 步骤描述
41
+ */
42
+ description?: ReactNode;
43
+ /**
44
+ * 步骤状态
45
+ * @default 'wait'
46
+ */
47
+ status?: StepStatus;
48
+ /**
49
+ * 步骤图标
50
+ */
51
+ icon?: ReactNode;
52
+ /**
53
+ * 是否禁用点击
54
+ * @default false
55
+ */
56
+ disabled?: boolean;
57
+ /**
58
+ * 是否隐藏该步骤(用于动态步骤)
59
+ * @default false
60
+ */
61
+ hidden?: boolean;
62
+ /**
63
+ * 步骤点击回调
64
+ */
65
+ onClick?: () => void;
66
+ /**
67
+ * 自定义类名
68
+ */
69
+ className?: string;
70
+ /**
71
+ * 自定义样式
72
+ */
73
+ style?: CSSProperties;
74
+ /**
75
+ * 额外的数据(可用于业务扩展)
76
+ */
77
+ extra?: Record<string, any>;
78
+ }
79
+ /**
80
+ * PisellSteps 组件 Props
81
+ */
82
+ export interface PisellStepsProps extends Omit<StepsProps, 'type' | 'items' | 'onChange' | 'current' | 'status' | 'size' | 'direction'> {
83
+ /**
84
+ * 步骤条类型
85
+ * @default 'default'
86
+ */
87
+ type?: StepType;
88
+ /**
89
+ * 当前步骤(受控模式)
90
+ */
91
+ current?: number;
92
+ /**
93
+ * 默认当前步骤(非受控模式)
94
+ * @default 0
95
+ */
96
+ defaultCurrent?: number;
97
+ /**
98
+ * 步骤条方向
99
+ * @default 'horizontal'
100
+ */
101
+ direction?: StepDirection;
102
+ /**
103
+ * 步骤条尺寸
104
+ * @default 'default'
105
+ */
106
+ size?: StepSize;
107
+ /**
108
+ * 当前步骤的状态
109
+ * @default 'process'
110
+ */
111
+ status?: StepStatus;
112
+ /**
113
+ * 起始步骤索引
114
+ * @default 0
115
+ */
116
+ initial?: number;
117
+ /**
118
+ * 步骤数据配置
119
+ */
120
+ items?: PisellStepItem[];
121
+ /**
122
+ * 当前步骤的进度百分比(0-100)
123
+ */
124
+ percent?: number;
125
+ /**
126
+ * 标签文本位置
127
+ * @default 'horizontal'
128
+ */
129
+ labelPlacement?: StepLabelPlacement;
130
+ /**
131
+ * 是否开启响应式
132
+ * @default true
133
+ */
134
+ responsive?: boolean;
135
+ /**
136
+ * 步骤变更回调
137
+ */
138
+ onChange?: (current: number) => void;
139
+ /**
140
+ * 自定义类名
141
+ */
142
+ className?: string;
143
+ /**
144
+ * 自定义样式
145
+ */
146
+ style?: CSSProperties;
147
+ /**
148
+ * 点状步骤条是否显示点(也可以传入自定义渲染函数)
149
+ * @default false
150
+ */
151
+ progressDot?: boolean | ((dot: ReactNode, info: {
152
+ index: number;
153
+ status: StepStatus;
154
+ title?: ReactNode;
155
+ description?: ReactNode;
156
+ }) => ReactNode);
157
+ /**
158
+ * 是否允许点击步骤切换
159
+ * @default false
160
+ */
161
+ clickable?: boolean;
162
+ /**
163
+ * 是否允许点击已完成的步骤
164
+ * @default true
165
+ */
166
+ allowClickFinished?: boolean;
167
+ /**
168
+ * 是否显示进度百分比(在连接器上)
169
+ * @default false
170
+ */
171
+ showProgressPercent?: boolean;
172
+ /**
173
+ * 图标尺寸(单位:px)
174
+ */
175
+ iconSize?: number;
176
+ /**
177
+ * 图标颜色
178
+ */
179
+ iconColor?: string;
180
+ /**
181
+ * 连接器自定义样式
182
+ */
183
+ connectorStyle?: CSSProperties;
184
+ /**
185
+ * 连接器位置
186
+ * @default 'center'
187
+ */
188
+ connectorPosition?: ConnectorPosition;
189
+ /**
190
+ * 是否开启动画
191
+ * @default true
192
+ */
193
+ animated?: boolean;
194
+ /**
195
+ * 是否开启栅格布局
196
+ * @default false
197
+ */
198
+ gridLayout?: boolean;
199
+ /**
200
+ * 栅格列数(仅在 gridLayout=true 时有效)
201
+ */
202
+ gridColumns?: number;
203
+ /**
204
+ * 标识区和文本区的布局方式
205
+ * @default 'horizontal'
206
+ */
207
+ itemLayout?: 'horizontal' | 'vertical';
208
+ /**
209
+ * 标识区和文本区的间距(单位:px)
210
+ */
211
+ itemGap?: number;
212
+ /**
213
+ * 是否开启锚链接
214
+ * @default false
215
+ */
216
+ enableAnchor?: boolean;
217
+ /**
218
+ * 锚链接容器选择器(仅在 enableAnchor=true 时有效)
219
+ */
220
+ anchorContainer?: string | HTMLElement;
221
+ /**
222
+ * 设计模式标识(低代码引擎使用)
223
+ */
224
+ __designMode?: 'design' | 'preview';
225
+ /**
226
+ * 组件唯一标识(低代码引擎使用)
227
+ */
228
+ __id?: string;
229
+ /**
230
+ * 其他扩展配置
231
+ */
232
+ other?: Record<string, any>;
233
+ }
234
+ /**
235
+ * 步骤点击事件参数
236
+ */
237
+ export interface StepClickInfo {
238
+ /**
239
+ * 步骤索引
240
+ */
241
+ index: number;
242
+ /**
243
+ * 步骤配置
244
+ */
245
+ item: PisellStepItem;
246
+ /**
247
+ * 步骤状态
248
+ */
249
+ status: StepStatus;
250
+ /**
251
+ * 是否可点击
252
+ */
253
+ clickable: boolean;
254
+ }
255
+ /**
256
+ * 步骤变更事件参数
257
+ */
258
+ export interface StepChangeInfo {
259
+ /**
260
+ * 当前步骤索引
261
+ */
262
+ current: number;
263
+ /**
264
+ * 上一个步骤索引
265
+ */
266
+ previous: number;
267
+ /**
268
+ * 步骤变更方向
269
+ */
270
+ direction: 'forward' | 'backward';
271
+ }
@@ -0,0 +1,54 @@
1
+ import type { StepStatus } from '../types';
2
+ /**
3
+ * 计算当前步骤的进度百分比
4
+ *
5
+ * @param current - 当前步骤索引
6
+ * @param total - 总步骤数
7
+ * @returns 进度百分比(0-100)
8
+ */
9
+ export declare function calculateProgress(current: number, total: number): number;
10
+ /**
11
+ * 判断步骤是否可点击
12
+ *
13
+ * @param index - 步骤索引
14
+ * @param current - 当前步骤索引
15
+ * @param status - 步骤状态
16
+ * @param clickable - 全局是否可点击
17
+ * @param allowClickFinished - 是否允许点击已完成步骤
18
+ * @returns 是否可点击
19
+ */
20
+ export declare function isStepClickable(index: number, current: number, status: StepStatus, clickable: boolean, allowClickFinished: boolean): boolean;
21
+ /**
22
+ * 获取步骤状态
23
+ *
24
+ * @param index - 步骤索引
25
+ * @param current - 当前步骤索引
26
+ * @param customStatus - 自定义状态(优先级最高)
27
+ * @returns 步骤状态
28
+ */
29
+ export declare function getStepStatus(index: number, current: number, customStatus?: StepStatus): StepStatus;
30
+ /**
31
+ * 合并步骤类名
32
+ *
33
+ * @param baseClass - 基础类名
34
+ * @param status - 步骤状态
35
+ * @param customClass - 自定义类名
36
+ * @returns 合并后的类名
37
+ */
38
+ export declare function mergeStepClassName(baseClass: string, status: StepStatus, customClass?: string): string;
39
+ /**
40
+ * 判断步骤变更方向
41
+ *
42
+ * @param from - 原步骤索引
43
+ * @param to - 目标步骤索引
44
+ * @returns 变更方向
45
+ */
46
+ export declare function getChangeDirection(from: number, to: number): 'forward' | 'backward';
47
+ /**
48
+ * 验证步骤索引是否有效
49
+ *
50
+ * @param index - 步骤索引
51
+ * @param total - 总步骤数
52
+ * @returns 是否有效
53
+ */
54
+ export declare function isValidStepIndex(index: number, total: number): boolean;