@pisell/materials 6.8.1 → 6.8.3

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 (123) 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/meta.js +1 -1
  5. package/build/lowcode/render/default/view.css +1 -1
  6. package/build/lowcode/render/default/view.js +2 -2
  7. package/build/lowcode/view.css +1 -1
  8. package/build/lowcode/view.js +2 -2
  9. package/es/components/Pagination/index.d.ts +1 -1
  10. package/es/components/PisellCards/components/MultilevelCard/hooks/useMultilevelCardExpand.d.ts +0 -1
  11. package/es/components/PisellCards/components/PisellImageCard/hooks/useImageLoad.d.ts +0 -1
  12. package/es/components/PisellCards/index.d.ts +0 -1
  13. package/es/components/PisellProcedure/PisellProcedure.js +9 -4
  14. package/es/components/PisellProcedure/PisellProcedure.less +121 -104
  15. package/es/components/PisellProcedure/components/ProcedureBody.js +2 -1
  16. package/es/components/PisellProcedure/components/ProcedureSidebar.d.ts +3 -1
  17. package/es/components/PisellProcedure/components/ProcedureSidebar.js +27 -14
  18. package/es/components/PisellProcedure/hooks/useElementSize.js +3 -2
  19. package/es/components/PisellProcedure/hooks/useSidebarHeight.js +1 -1
  20. package/es/components/PisellSteps/PisellSteps.less +2 -2
  21. package/es/components/PisellTabbar2/PisellTabbar.js +45 -3
  22. package/es/components/PisellTabbar2/PisellTabbar.less +1 -0
  23. package/es/components/PisellTabbar2/components/TabbarLevel.js +1 -0
  24. package/es/components/batch-editor/fields/index.d.ts +0 -1
  25. package/es/components/calendar/index.d.ts +0 -1
  26. package/es/components/checkbox/index.d.ts +0 -1
  27. package/es/components/dataSourceComponents/dataSourceShow/dataSourceQRCode/index.d.ts +0 -1
  28. package/es/components/dataSourceComponents/dataSourceTable/hooks/useDataSourceKey.d.ts +2 -3
  29. package/es/components/dataSourceComponents/dataSourceTable/hooks/useDrawerState.d.ts +0 -1
  30. package/es/components/dataSourceComponents/dataSourceTable/hooks/useTableProps.d.ts +4 -4
  31. package/es/components/dataSourceComponents/dataSourceTable/hooks/useTableQuery.d.ts +0 -1
  32. package/es/components/dataSourceComponents/fields/index.d.ts +0 -1
  33. package/es/components/date-picker/index.d.ts +0 -1
  34. package/es/components/filter/components/items/index.d.ts +0 -1
  35. package/es/components/filter/components/items/text/Editor/index.d.ts +0 -1
  36. package/es/components/filter/components/items/text/Preview/index.d.ts +0 -1
  37. package/es/components/filter/components/items/text/index.d.ts +0 -1
  38. package/es/components/pisellDatePicker/index.d.ts +0 -1
  39. package/es/components/pisellModal/components/index.d.ts +0 -1
  40. package/es/components/productCard/cartSkuCard/components/packages/utils.d.ts +1 -1
  41. package/es/components/productCard/components/Packages/utils.d.ts +1 -1
  42. package/es/components/radio/index.d.ts +0 -1
  43. package/es/components/skeleton/index.d.ts +0 -1
  44. package/es/components/table/Gallery/components/VirtualGrid/useGapSize.d.ts +2 -2
  45. package/es/components/table/Table/fields/date/index.d.ts +0 -1
  46. package/es/components/table/Table/fields/image/index.d.ts +0 -1
  47. package/es/components/table/Table/fields/index.d.ts +0 -1
  48. package/es/components/table/Table/fields/link/index.d.ts +0 -1
  49. package/es/components/table/Table/fields/number/index.d.ts +0 -1
  50. package/es/components/table/Table/fields/numberRange/index.d.ts +0 -1
  51. package/es/components/table/Table/fields/oldRangePicker/index.d.ts +0 -1
  52. package/es/components/table/Table/fields/pSwitch/index.d.ts +0 -1
  53. package/es/components/table/Table/fields/rangePicker/index.d.ts +0 -1
  54. package/es/components/table/Table/fields/search/index.d.ts +0 -1
  55. package/es/components/table/Table/fields/select/filterUtil/index.d.ts +1 -1
  56. package/es/components/table/Table/fields/select/index.d.ts +0 -1
  57. package/es/components/table/Table/fields/text/index.d.ts +0 -1
  58. package/es/components/table/Table/fields/treeSelect/filterUtil/index.d.ts +1 -1
  59. package/es/components/table/Table/fields/treeSelect/index.d.ts +0 -1
  60. package/es/components/table/Table/utils.d.ts +1 -1
  61. package/es/components/time-picker/index.d.ts +0 -1
  62. package/es/components/upload/index.d.ts +0 -1
  63. package/es/components/virtual-keyboard/Time/utils.d.ts +0 -1
  64. package/es/utils/index.d.ts +1 -1
  65. package/es/utils/platform.d.ts +1 -1
  66. package/lib/components/Pagination/index.d.ts +1 -1
  67. package/lib/components/PisellCards/components/MultilevelCard/hooks/useMultilevelCardExpand.d.ts +0 -1
  68. package/lib/components/PisellCards/components/PisellImageCard/hooks/useImageLoad.d.ts +0 -1
  69. package/lib/components/PisellCards/index.d.ts +0 -1
  70. package/lib/components/PisellProcedure/PisellProcedure.js +5 -2
  71. package/lib/components/PisellProcedure/PisellProcedure.less +121 -104
  72. package/lib/components/PisellProcedure/components/ProcedureBody.js +2 -1
  73. package/lib/components/PisellProcedure/components/ProcedureSidebar.d.ts +3 -1
  74. package/lib/components/PisellProcedure/components/ProcedureSidebar.js +21 -8
  75. package/lib/components/PisellProcedure/hooks/useElementSize.js +2 -2
  76. package/lib/components/PisellProcedure/hooks/useSidebarHeight.js +1 -1
  77. package/lib/components/PisellSteps/PisellSteps.less +2 -2
  78. package/lib/components/PisellTabbar2/PisellTabbar.js +14 -6
  79. package/lib/components/PisellTabbar2/PisellTabbar.less +1 -0
  80. package/lib/components/PisellTabbar2/components/TabbarLevel.js +1 -0
  81. package/lib/components/batch-editor/fields/index.d.ts +0 -1
  82. package/lib/components/calendar/index.d.ts +0 -1
  83. package/lib/components/checkbox/index.d.ts +0 -1
  84. package/lib/components/dataSourceComponents/dataSourceShow/dataSourceQRCode/index.d.ts +0 -1
  85. package/lib/components/dataSourceComponents/dataSourceTable/hooks/useDataSourceKey.d.ts +2 -3
  86. package/lib/components/dataSourceComponents/dataSourceTable/hooks/useDrawerState.d.ts +0 -1
  87. package/lib/components/dataSourceComponents/dataSourceTable/hooks/useTableProps.d.ts +4 -4
  88. package/lib/components/dataSourceComponents/dataSourceTable/hooks/useTableQuery.d.ts +0 -1
  89. package/lib/components/dataSourceComponents/fields/index.d.ts +0 -1
  90. package/lib/components/date-picker/index.d.ts +0 -1
  91. package/lib/components/filter/components/items/index.d.ts +0 -1
  92. package/lib/components/filter/components/items/text/Editor/index.d.ts +0 -1
  93. package/lib/components/filter/components/items/text/Preview/index.d.ts +0 -1
  94. package/lib/components/filter/components/items/text/index.d.ts +0 -1
  95. package/lib/components/pisellDatePicker/index.d.ts +0 -1
  96. package/lib/components/pisellModal/components/index.d.ts +0 -1
  97. package/lib/components/productCard/cartSkuCard/components/packages/utils.d.ts +1 -1
  98. package/lib/components/productCard/components/Packages/utils.d.ts +1 -1
  99. package/lib/components/radio/index.d.ts +0 -1
  100. package/lib/components/skeleton/index.d.ts +0 -1
  101. package/lib/components/table/Gallery/components/VirtualGrid/useGapSize.d.ts +2 -2
  102. package/lib/components/table/Table/fields/date/index.d.ts +0 -1
  103. package/lib/components/table/Table/fields/image/index.d.ts +0 -1
  104. package/lib/components/table/Table/fields/index.d.ts +0 -1
  105. package/lib/components/table/Table/fields/link/index.d.ts +0 -1
  106. package/lib/components/table/Table/fields/number/index.d.ts +0 -1
  107. package/lib/components/table/Table/fields/numberRange/index.d.ts +0 -1
  108. package/lib/components/table/Table/fields/oldRangePicker/index.d.ts +0 -1
  109. package/lib/components/table/Table/fields/pSwitch/index.d.ts +0 -1
  110. package/lib/components/table/Table/fields/rangePicker/index.d.ts +0 -1
  111. package/lib/components/table/Table/fields/search/index.d.ts +0 -1
  112. package/lib/components/table/Table/fields/select/filterUtil/index.d.ts +1 -1
  113. package/lib/components/table/Table/fields/select/index.d.ts +0 -1
  114. package/lib/components/table/Table/fields/text/index.d.ts +0 -1
  115. package/lib/components/table/Table/fields/treeSelect/filterUtil/index.d.ts +1 -1
  116. package/lib/components/table/Table/fields/treeSelect/index.d.ts +0 -1
  117. package/lib/components/table/Table/utils.d.ts +1 -1
  118. package/lib/components/time-picker/index.d.ts +0 -1
  119. package/lib/components/upload/index.d.ts +0 -1
  120. package/lib/components/virtual-keyboard/Time/utils.d.ts +0 -1
  121. package/lib/utils/index.d.ts +1 -1
  122. package/lib/utils/platform.d.ts +1 -1
  123. package/package.json +3 -3
@@ -5,7 +5,7 @@ export declare const paginationConfig: {
5
5
  className: string;
6
6
  defaultCurrent: number;
7
7
  showTotal: (total: number, range: [number, number]) => string;
8
- itemRender: (page: number, type: "page" | "next" | "prev" | "jump-prev" | "jump-next", element: React.ReactNode) => React.ReactNode;
8
+ itemRender: (page: number, type: "next" | "page" | "prev" | "jump-prev" | "jump-next", element: React.ReactNode) => React.ReactNode;
9
9
  responsive: boolean;
10
10
  size: string;
11
11
  };
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { MultilevelCardTrigger } from '../types';
3
2
  /**
4
3
  * 管理 MultilevelCard 的展开/收起状态
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  /**
3
2
  * 图片加载状态管理 Hook
4
3
  * @param src - 图片地址
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  declare const PisellCards: {
3
2
  TabCard: (props: any) => import("react").JSX.Element;
4
3
  TextCard: (props: any) => import("react").JSX.Element;
@@ -50,8 +50,11 @@ var PisellProcedure = function PisellProcedure(props) {
50
50
  __id = props.__id,
51
51
  other = _objectWithoutProperties(props, _excluded);
52
52
 
53
- // 检测是否是移动端(< 744px)- 弹窗模式下不应用移动端检测
54
- var isMobile = mode === 'modal' ? false : useMobile(744);
53
+ // 检测是否是移动端(< 744px
54
+ // 注意:Hook 必须无条件调用,不能放在条件语句中
55
+ var isMobileDetected = useMobile(744);
56
+ // 弹窗模式下不应用移动端检测
57
+ var isMobile = mode === 'modal' ? false : isMobileDetected;
55
58
 
56
59
  // 使用步骤管理 Hook
57
60
  var _useStepManager = useStepManager({
@@ -86,8 +89,10 @@ var PisellProcedure = function PisellProcedure(props) {
86
89
 
87
90
  // 容器类名
88
91
  var containerCls = useMemo(function () {
89
- return mergeClassNames('pisell-procedure', className, modifierClassName('pisell-procedure', "footer-".concat(footerPosition)));
90
- }, [className, footerPosition]);
92
+ return mergeClassNames('pisell-procedure', className,
93
+ // 弹窗模式添加 --modal 修饰类,用于禁用媒体查询
94
+ mode === 'modal' && 'pisell-procedure--modal', modifierClassName('pisell-procedure', "footer-".concat(footerPosition)));
95
+ }, [className, mode, footerPosition]);
91
96
 
92
97
  // 判断底部是否全局显示
93
98
  var footerIsGlobal = isFooterGlobal(footerPosition);
@@ -105,17 +105,19 @@
105
105
 
106
106
  // ========== 布局模式:比例布局 ==========
107
107
  &--ratio {
108
- // 移动端:比例模式下也隐藏信息区
109
- @media (max-width: calc(@breakpoint-sm - 1px)) {
110
- > .pisell-lowcode-layout,
111
- > .ant-layout {
112
- .@{procedure-prefix}-sidebar {
113
- display: none !important;
114
- }
115
-
116
- .@{procedure-prefix}-content {
117
- flex: 1 !important;
118
- max-width: 100% !important;
108
+ // 移动端:比例模式下也隐藏信息区(弹窗模式下不执行)
109
+ .@{procedure-prefix}:not(.@{procedure-prefix}--modal) & {
110
+ @media (max-width: calc(@breakpoint-sm - 1px)) {
111
+ > .pisell-lowcode-layout,
112
+ > .ant-layout {
113
+ .@{procedure-prefix}-sidebar {
114
+ display: none !important;
115
+ }
116
+
117
+ .@{procedure-prefix}-content {
118
+ flex: 1 !important;
119
+ max-width: 100% !important;
120
+ }
119
121
  }
120
122
  }
121
123
  }
@@ -132,21 +134,19 @@
132
134
 
133
135
  // 纵向排列时的样式
134
136
  .@{procedure-prefix}-body--vertical & {
135
- width: 100%;
137
+ width: 100% !important;
136
138
  flex: 1 1 auto;
137
139
  }
138
140
  }
139
141
 
140
142
  // 信息区 - 高度自适应内容,sticky 定位
141
143
  &-sidebar {
142
- width: @sidebar-width-xl;
143
- max-width: @sidebar-width-xl;
144
- min-width: @sidebar-width-xl;
145
- flex: 0 0 @sidebar-width-xl;
144
+ width: initial !important;
145
+ max-width: initial !important;
146
+ min-width: initial !important;
146
147
  background-color: @color-bg-sidebar;
147
148
  border-radius: 4px;
148
149
  position: sticky!important;
149
- top: calc(64px + @gap-default * 2); // header 高度 + body padding + 额外间距
150
150
  overflow-y: auto;
151
151
  align-self: flex-start; // 不拉伸高度
152
152
  background: transparent !important;
@@ -177,6 +177,10 @@
177
177
  flex: 0 0 auto !important;
178
178
  position: relative;
179
179
  top: auto;
180
+
181
+ .@{procedure-prefix}-sider-content-top{
182
+ height: 100%;
183
+ }
180
184
  }
181
185
 
182
186
  // 响应式宽度调整 - 基于容器宽度的类名控制(适用于弹窗场景)
@@ -212,37 +216,46 @@
212
216
  display: initial !important;
213
217
  }
214
218
 
215
- // 保留媒体查询作为降级方案(当没有提供 containerSelector 时,即页面模式)
216
- // 弹窗模式下会添加 responsive-xs 类名,所以媒体查询不会生效
217
- // 960px < viewportWidth < 1133px: 376px ~ 405px 线性插值
218
- @media (max-width: calc(@breakpoint-lg - 1px)) and (min-width: @breakpoint-md) {
219
- // 如果没有响应式类名,则应用媒体查询样式
220
- &:not(.pisell-procedure-sidebar--responsive-md):not(.pisell-procedure-sidebar--responsive-sm):not(.pisell-procedure-sidebar--responsive-xs) {
221
- @sidebar-width-dynamic: calc(@sidebar-width-md + (100vw - @breakpoint-md) * (405 - 376) / (1133 - 960));
222
- width: @sidebar-width-dynamic !important;
219
+ // 大于1133px: 405px(仅页面模式,弹窗模式下不执行媒体查询)
220
+ .@{procedure-prefix}:not(.@{procedure-prefix}--modal) & {
221
+ @media (min-width: @breakpoint-lg) {
222
+ width: @sidebar-width-xl !important;
223
223
  max-width: @sidebar-width-xl !important;
224
- min-width: @sidebar-width-md !important;
225
- flex: 0 0 @sidebar-width-dynamic !important;
224
+ min-width: @sidebar-width-xl !important;
225
+ flex: 0 0 @sidebar-width-xl !important;
226
+ }
227
+
228
+ // 保留媒体查询作为降级方案(当没有提供 containerSelector 时,即页面模式)
229
+ // 960px < viewportWidth < 1133px: 376px ~ 405px 线性插值
230
+ @media (max-width: calc(@breakpoint-lg - 1px)) and (min-width: @breakpoint-md) {
231
+ // 如果没有响应式类名,则应用媒体查询样式
232
+ &:not(.pisell-procedure-sidebar--responsive-md):not(.pisell-procedure-sidebar--responsive-sm):not(.pisell-procedure-sidebar--responsive-xs) {
233
+ @sidebar-width-dynamic: calc(@sidebar-width-md + (100vw - @breakpoint-md) * (405 - 376) / (1133 - 960));
234
+ width: @sidebar-width-dynamic !important;
235
+ max-width: @sidebar-width-xl !important;
236
+ min-width: @sidebar-width-md !important;
237
+ flex: 0 0 @sidebar-width-dynamic !important;
238
+ }
226
239
  }
227
- }
228
240
 
229
- // 744px < viewportWidth < 960px: 290px ~ 376px 线性插值
230
- @media (max-width: calc(@breakpoint-md)) and (min-width: @breakpoint-sm) {
231
- // 如果没有响应式类名,则应用媒体查询样式
232
- &:not(.pisell-procedure-sidebar--responsive-md):not(.pisell-procedure-sidebar--responsive-sm):not(.pisell-procedure-sidebar--responsive-xs) {
233
- @sidebar-width-dynamic: calc(@sidebar-width-sm + (100vw - @breakpoint-sm) * (376 - 290) / (960 - 744));
234
- width: @sidebar-width-dynamic !important;
235
- max-width: @sidebar-width-md !important;
236
- min-width: @sidebar-width-sm !important;
237
- flex: 0 0 @sidebar-width-dynamic !important;
241
+ // 744px < viewportWidth < 960px: 290px ~ 376px 线性插值
242
+ @media (max-width: calc(@breakpoint-md)) and (min-width: @breakpoint-sm) {
243
+ // 如果没有响应式类名,则应用媒体查询样式
244
+ &:not(.pisell-procedure-sidebar--responsive-md):not(.pisell-procedure-sidebar--responsive-sm):not(.pisell-procedure-sidebar--responsive-xs) {
245
+ @sidebar-width-dynamic: calc(@sidebar-width-sm + (100vw - @breakpoint-sm) * (376 - 290) / (960 - 744));
246
+ width: @sidebar-width-dynamic !important;
247
+ max-width: @sidebar-width-md !important;
248
+ min-width: @sidebar-width-sm !important;
249
+ flex: 0 0 @sidebar-width-dynamic !important;
250
+ }
238
251
  }
239
- }
240
252
 
241
- // viewportWidth < 744px: 隐藏(仅页面模式,弹窗模式有 responsive-xs 类名不会隐藏)
242
- @media (max-width: calc(@breakpoint-sm - 1px)) {
243
- // 如果没有响应式类名,则应用媒体查询样式
244
- &:not(.pisell-procedure-sidebar--responsive-md):not(.pisell-procedure-sidebar--responsive-sm):not(.pisell-procedure-sidebar--responsive-xs) {
245
- display: none !important;
253
+ // viewportWidth < 744px: 隐藏(仅页面模式)
254
+ @media (max-width: calc(@breakpoint-sm - 1px)) {
255
+ // 如果没有响应式类名,则应用媒体查询样式
256
+ &:not(.pisell-procedure-sidebar--responsive-md):not(.pisell-procedure-sidebar--responsive-sm):not(.pisell-procedure-sidebar--responsive-xs) {
257
+ display: none !important;
258
+ }
246
259
  }
247
260
  }
248
261
 
@@ -270,7 +283,7 @@
270
283
  z-index: 100;
271
284
  overflow: hidden; // 防止内容溢出
272
285
 
273
- // 总结按钮插槽 - 仅移动端显示(< 744px
286
+ // 总结按钮插槽 - 仅移动端显示(< 744px),弹窗模式下不执行媒体查询
274
287
  &__summary {
275
288
  flex-shrink: 0;
276
289
  margin-right: auto;
@@ -278,9 +291,11 @@
278
291
  display: none;
279
292
  cursor: pointer;
280
293
 
281
- // 移动端显示
282
- @media (max-width: calc(@breakpoint-sm - 1px)) {
283
- display: block;
294
+ // 移动端显示(仅页面模式)
295
+ .@{procedure-prefix}:not(.@{procedure-prefix}--modal) & {
296
+ @media (max-width: calc(@breakpoint-sm - 1px)) {
297
+ display: block;
298
+ }
284
299
  }
285
300
  }
286
301
 
@@ -464,80 +479,82 @@
464
479
  flex-shrink: 0;
465
480
  position: sticky;
466
481
  bottom: 0;
467
- margin:auto 0;
482
+ margin: 0;
468
483
  }
469
484
  }
470
485
  }
471
486
  }
472
487
 
473
- // ========== 小屏适配(744px-960px):头部两行显示 ==========
474
- @media (min-width: @breakpoint-sm) and (max-width: calc(@breakpoint-md - 1px)) {
475
- &-header {
476
- flex-wrap: wrap;
477
- min-height: auto;
478
- padding: 12px @padding-default;
479
-
480
- // 第一行:返回按钮
481
- &__left {
482
- order: 1;
483
- flex: 0 0 auto;
484
- }
488
+ // ========== 小屏适配(744px-960px):头部两行显示(仅页面模式) ==========
489
+ &:not(&--modal) {
490
+ @media (min-width: @breakpoint-sm) and (max-width: calc(@breakpoint-md - 1px)) {
491
+ .@{procedure-prefix}-header {
492
+ flex-wrap: wrap;
493
+ min-height: auto;
494
+ padding: 12px @padding-default;
495
+
496
+ // 第一行:返回按钮
497
+ .@{procedure-prefix}-header__left {
498
+ order: 1;
499
+ flex: 0 0 auto;
500
+ }
485
501
 
486
- // 第一行:关闭按钮,推到右边
487
- &__right {
488
- order: 2;
489
- flex: 0 0 auto;
490
- margin-left: auto;
491
- }
502
+ // 第一行:关闭按钮,推到右边
503
+ .@{procedure-prefix}-header__right {
504
+ order: 2;
505
+ flex: 0 0 auto;
506
+ margin-left: auto;
507
+ }
492
508
 
493
- // 第二行:步骤条独占一行
494
- &__center {
495
- order: 3;
496
- width: 100%;
497
- flex: 0 0 100%;
498
- padding: 0;
499
- justify-content: flex-start;
500
- overflow-x: auto;
509
+ // 第二行:步骤条独占一行
510
+ .@{procedure-prefix}-header__center {
511
+ order: 3;
512
+ width: 100%;
513
+ flex: 0 0 100%;
514
+ padding: 0;
515
+ justify-content: flex-start;
516
+ overflow-x: auto;
517
+ }
501
518
  }
502
519
  }
503
- }
504
520
 
505
- // ========== 移动端适配(<744px):头部一行显示 ==========
506
- @media (max-width: calc(@breakpoint-sm - 1px)) {
507
- &-header {
508
- flex-wrap: nowrap;
509
- min-height: auto;
510
- padding: 12px @padding-default;
521
+ // ========== 移动端适配(<744px):头部一行显示 ==========
522
+ @media (max-width: calc(@breakpoint-sm - 1px)) {
523
+ .@{procedure-prefix}-header {
524
+ flex-wrap: nowrap;
525
+ min-height: auto;
526
+ padding: 12px @padding-default;
527
+
528
+ // 左侧:返回按钮
529
+ .@{procedure-prefix}-header__left {
530
+ flex: 0 0 auto;
531
+ }
511
532
 
512
- // 左侧:返回按钮
513
- &__left {
514
- flex: 0 0 auto;
515
- }
533
+ // 中间:步骤条(简化显示当前步骤)
534
+ .@{procedure-prefix}-header__center {
535
+ flex: 1;
536
+ padding: 0 @gap-default;
537
+ overflow: hidden;
538
+ }
516
539
 
517
- // 中间:步骤条(简化显示当前步骤)
518
- &__center {
519
- flex: 1;
520
- padding: 0 @gap-default;
521
- overflow: hidden;
540
+ // 右侧:关闭按钮
541
+ .@{procedure-prefix}-header__right {
542
+ flex: 0 0 auto;
543
+ }
522
544
  }
523
545
 
524
- // 右侧:关闭按钮
525
- &__right {
526
- flex: 0 0 auto;
546
+ // 主体区域移动端
547
+ .@{procedure-prefix}-body {
548
+ > .pisell-lowcode-layout,
549
+ > .ant-layout {
550
+ padding: @gap-default;
551
+ }
527
552
  }
528
- }
529
553
 
530
- // 主体区域移动端
531
- &-body {
532
- > .pisell-lowcode-layout,
533
- > .ant-layout {
534
- padding: @gap-default;
554
+ // 内容区占满
555
+ .@{procedure-prefix}-content {
556
+ width: 100% !important;
535
557
  }
536
558
  }
537
-
538
- // 内容区占满
539
- &-content {
540
- width: 100% !important;
541
- }
542
559
  }
543
560
  }
@@ -132,7 +132,8 @@ var ProcedureBody = function ProcedureBody(_ref) {
132
132
  extra: sidebarFooter,
133
133
  isRatioMode: layoutMode === 'ratio',
134
134
  containerSelector: bodyProps === null || bodyProps === void 0 ? void 0 : bodyProps.sidebarContainerSelector,
135
- mode: mode
135
+ mode: mode,
136
+ direction: direction
136
137
  }, bodyProps === null || bodyProps === void 0 ? void 0 : bodyProps.sidebarSlot) : null;
137
138
 
138
139
  /** 根据 contentOrder 决定渲染顺序 */
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import type { CSSProperties, ReactNode } from 'react';
3
- import type { ProcedureMode } from '../types';
3
+ import type { ProcedureMode, BodyDirection } from '../types';
4
4
  /**
5
5
  * ProcedureSidebar 子组件 Props
6
6
  */
@@ -23,6 +23,8 @@ export interface ProcedureSidebarProps {
23
23
  containerSelector?: string;
24
24
  /** 组件使用模式 */
25
25
  mode?: ProcedureMode;
26
+ /** 排列方向 */
27
+ direction?: BodyDirection;
26
28
  }
27
29
  /**
28
30
  * ProcedureSidebar 信息区组件
@@ -28,28 +28,32 @@ var ProcedureSidebar = function ProcedureSidebar(_ref) {
28
28
  isRatioMode = _ref$isRatioMode === void 0 ? false : _ref$isRatioMode,
29
29
  containerSelector = _ref.containerSelector,
30
30
  _ref$mode = _ref.mode,
31
- mode = _ref$mode === void 0 ? 'page' : _ref$mode;
32
- // 获取 header 高度
31
+ mode = _ref$mode === void 0 ? 'page' : _ref$mode,
32
+ _ref$direction = _ref.direction,
33
+ direction = _ref$direction === void 0 ? 'horizontal' : _ref$direction;
34
+ // 垂直布局下不需要计算高度
35
+ var isVertical = direction === 'vertical';
36
+ // 获取 header 高度(垂直布局下不需要)
33
37
  var headerSize = useElementSize({
34
38
  selector: '.pisell-procedure-header',
35
- enabled: true
39
+ enabled: !isVertical
36
40
  });
37
41
 
38
- // 计算全局 footer 的高度
42
+ // 计算全局 footer 的高度(垂直布局下不需要)
39
43
  var floatAllFooterSize = useElementSize({
40
44
  selector: '.pisell-procedure-footer--float-all',
41
- enabled: true
45
+ enabled: !isVertical
42
46
  });
43
47
  var fixedBottomFooterSize = useElementSize({
44
48
  selector: '.pisell-procedure-footer--fixed-bottom',
45
- enabled: true
49
+ enabled: !isVertical
46
50
  });
47
51
  var footerHeight = Math.max((floatAllFooterSize === null || floatAllFooterSize === void 0 ? void 0 : floatAllFooterSize.height) || 0, (fixedBottomFooterSize === null || fixedBottomFooterSize === void 0 ? void 0 : fixedBottomFooterSize.height) || 0);
48
52
 
49
- // 获取容器宽度和高度
53
+ // 获取容器宽度和高度(垂直布局下不需要)
50
54
  var containerSize = useElementSize({
51
55
  selector: containerSelector || '',
52
- enabled: !!containerSelector,
56
+ enabled: !isVertical && !!containerSelector,
53
57
  threshold: 5,
54
58
  debounceMs: 200
55
59
  });
@@ -67,8 +71,12 @@ var ProcedureSidebar = function ProcedureSidebar(_ref) {
67
71
  };
68
72
  }, [containerWidth]);
69
73
 
70
- // 检查所有尺寸是否已稳定
74
+ // 检查所有尺寸是否已稳定(垂直布局下始终返回 false,不计算高度)
71
75
  var isSizeStable = useMemo(function () {
76
+ // 垂直布局下不需要计算高度
77
+ if (isVertical) {
78
+ return false;
79
+ }
72
80
  if (!(headerSize !== null && headerSize !== void 0 && headerSize.height) || headerSize.height === 0) {
73
81
  return false;
74
82
  }
@@ -76,9 +84,9 @@ var ProcedureSidebar = function ProcedureSidebar(_ref) {
76
84
  return (containerSize === null || containerSize === void 0 ? void 0 : containerSize.width) > 0 && (containerSize === null || containerSize === void 0 ? void 0 : containerSize.height) > 0;
77
85
  }
78
86
  return true;
79
- }, [containerSelector, containerSize === null || containerSize === void 0 ? void 0 : containerSize.width, containerSize === null || containerSize === void 0 ? void 0 : containerSize.height, headerSize === null || headerSize === void 0 ? void 0 : headerSize.height]);
87
+ }, [isVertical, containerSelector, containerSize === null || containerSize === void 0 ? void 0 : containerSize.width, containerSize === null || containerSize === void 0 ? void 0 : containerSize.height, headerSize === null || headerSize === void 0 ? void 0 : headerSize.height]);
80
88
 
81
- // 使用自定义 Hook 计算高度
89
+ // 使用自定义 Hook 计算高度(垂直布局下不需要)
82
90
  var siderHeight = useSidebarHeight(isSizeStable, {
83
91
  containerSelector: containerSelector,
84
92
  containerHeight: containerSize === null || containerSize === void 0 ? void 0 : containerSize.height,
@@ -87,7 +95,10 @@ var ProcedureSidebar = function ProcedureSidebar(_ref) {
87
95
  });
88
96
 
89
97
  // 使用自定义 Hook 计算响应式类名(延迟应用,避免宽度抖动)
90
- var responsiveCls = mode === 'modal' ? useResponsiveClass(containerWidth) : '';
98
+ // 注意:Hook 必须无条件调用,不能放在条件语句中
99
+ var responsiveClsComputed = useResponsiveClass(containerWidth);
100
+ // 仅在 modal 模式下应用响应式类名
101
+ var responsiveCls = mode === 'modal' ? responsiveClsComputed : '';
91
102
 
92
103
  // 信息区类名
93
104
  var sidebarCls = useMemo(function () {
@@ -95,11 +106,13 @@ var ProcedureSidebar = function ProcedureSidebar(_ref) {
95
106
  }, [className, isRatioMode, responsiveCls]);
96
107
  return /*#__PURE__*/React.createElement(PisellSider, {
97
108
  className: sidebarCls,
98
- style: _objectSpread(_objectSpread({}, style), {}, {
109
+ style: _objectSpread(_objectSpread(_objectSpread({}, style), {}, {
99
110
  overflow: 'hidden'
100
111
  }, siderHeight && siderHeight > 0 ? {
101
112
  height: "".concat(siderHeight, "px")
102
- } : {})
113
+ } : {}), {}, {
114
+ top: mode === 'modal' ? 0 : "".concat((headerSize === null || headerSize === void 0 ? void 0 : headerSize.height) + 32, "px")
115
+ })
103
116
  }, /*#__PURE__*/React.createElement("div", {
104
117
  className: "pisell-procedure-sider-content-top"
105
118
  }, children), extra);
@@ -78,8 +78,9 @@ export var useElementSize = function useElementSize(_ref) {
78
78
  var element = document.querySelector(selector);
79
79
  if (element) {
80
80
  var rect = element.getBoundingClientRect();
81
- var newWidth = rect.width;
82
- var newHeight = rect.height;
81
+ // 保留两位小数,避免浮点数精度问题导致频繁更新
82
+ var newWidth = Math.round(rect.width * 100) / 100;
83
+ var newHeight = Math.round(rect.height * 100) / 100;
83
84
  var previousSize = previousSizeRef.current;
84
85
 
85
86
  // 只有尺寸变化超过阈值时才更新
@@ -52,7 +52,7 @@ export var useSidebarHeight = function useSidebarHeight(isSizeStable, sizeValues
52
52
  var headerHeightValue = headerHeight || 0;
53
53
  var calculatedHeight = baseHeight - headerHeightValue - footerHeight - bodyPadding;
54
54
  return calculatedHeight;
55
- }, []);
55
+ }, [sizeValuesRef.current]);
56
56
 
57
57
  // 使用 requestAnimationFrame 确保在浏览器重绘后计算,更稳定
58
58
  useEffect(function () {
@@ -242,13 +242,13 @@
242
242
  // 水平布局时(labelPlacement='horizontal'),控制图标右侧的间距
243
243
  .ant-steps-item {
244
244
  .ant-steps-item-icon {
245
- margin-right: var(--pisell-steps-item-gap);
245
+ margin-right: var(--pisell-steps-item-gap) !important;
246
246
  }
247
247
  }
248
248
 
249
249
  // 低代码平台中的样式支持 - 水平布局
250
250
  .pisell-lowcode-steps-item-icon {
251
- margin-right: var(--pisell-steps-item-gap);
251
+ margin-right: var(--pisell-steps-item-gap) !important;
252
252
  }
253
253
 
254
254
  // 低代码平台垂直布局 - 设置内容区域的上边距
@@ -76,8 +76,12 @@ var PisellTabbar = function PisellTabbar(props) {
76
76
  * 处理一级 Tab 切换
77
77
  */
78
78
  var handleLevel1Change = useCallback(function (key, item) {
79
- var _item$children, _item$children$;
80
- setActiveKey(0, key, item !== null && item !== void 0 && (_item$children = item.children) !== null && _item$children !== void 0 && _item$children.length ? item === null || item === void 0 || (_item$children$ = item.children[0]) === null || _item$children$ === void 0 ? void 0 : _item$children$.id : undefined);
79
+ if (item.childrenMaxLevel !== undefined && item.childrenMaxLevel < 2) {
80
+ setActiveKey(0, key, 0);
81
+ } else {
82
+ var _item$children, _item$children$;
83
+ setActiveKey(0, key, item !== null && item !== void 0 && (_item$children = item.children) !== null && _item$children !== void 0 && _item$children.length ? item === null || item === void 0 || (_item$children$ = item.children[0]) === null || _item$children$ === void 0 ? void 0 : _item$children$.id : undefined);
84
+ }
81
85
  }, [setActiveKey]);
82
86
 
83
87
  /**
@@ -213,7 +217,11 @@ var PisellTabbar = function PisellTabbar(props) {
213
217
  gap: 12
214
218
  },
215
219
  panelStyle: {
216
- height: '100%',
220
+ position: 'absolute',
221
+ top: 40,
222
+ right: 0,
223
+ // zIndex: 99,
224
+ height: 'calc(100% - 40px)',
217
225
  transition: '0.3s ease-in-out'
218
226
  },
219
227
  startSlot: null,
@@ -237,4 +245,38 @@ var PisellTabbar = function PisellTabbar(props) {
237
245
  };
238
246
  PisellTabbar.displayName = 'PisellTabbar';
239
247
  PisellTabbar.getDefaultActiveKey = getDefaultActiveKey;
248
+
249
+ // const Demo = () => {
250
+ // return (
251
+ // <div style={{ height: '100vh', width: '100%', display: 'flex' }}>
252
+ // <div className="" style={{ height: '100%', width: 'calc(100% - 100px)' }}>
253
+ // <div className="tabbar-level-3-wrap" style={{ width: '100%' }}></div>
254
+ // <div className="" style={{ height: '400px' }}>
255
+ // content
256
+ // </div>
257
+ // </div>
258
+ // <div
259
+ // className=""
260
+ // style={{
261
+ // height: '100%',
262
+ // width: '100px',
263
+ // display: 'flex',
264
+ // alignItems: 'flex-start',
265
+ // }}
266
+ // >
267
+ // <div
268
+ // className="tabbar-level-2-wrap"
269
+ // style={{
270
+ // height: '100%',
271
+ // position: 'relative',
272
+ // }}
273
+ // ></div>
274
+ // <div className="" style={{ height: '100%' }}>
275
+ // <PisellTabbar __designMode />
276
+ // </div>
277
+ // </div>
278
+ // </div>
279
+ // );
280
+ // };
281
+
240
282
  export default PisellTabbar;
@@ -4,6 +4,7 @@
4
4
  .pisell-tabbar2 {
5
5
  // height: 100vh;
6
6
  width: 96px;
7
+ height: 100%;
7
8
  // position: fixed;
8
9
  // top: 0;
9
10
  // right: 0;
@@ -256,6 +256,7 @@ var TabbarLevel = /*#__PURE__*/memo(function (props) {
256
256
 
257
257
  // 普通项
258
258
  return /*#__PURE__*/React.createElement(PisellCards.MultilevelCard, _extends({}, itemProps, {
259
+ panelWidthMode: "auto",
259
260
  card: function card(cardProps) {
260
261
  if (level === 'level1') {
261
262
  return renderLevel1NormalCard(cardProps);
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  declare const _default: {
3
2
  price: import("react").FC<import("./Price").PriceProps>;
4
3
  image: (props: import("./Image").ImageProps) => import("react").JSX.Element | null;
@@ -1,3 +1,2 @@
1
- /// <reference types="react" />
2
1
  declare const Calendar: (props: any) => import("react").JSX.Element;
3
2
  export default Calendar;
@@ -1,3 +1,2 @@
1
- /// <reference types="react" />
2
1
  declare const Checkbox: (props: any) => import("react").JSX.Element;
3
2
  export default Checkbox;
@@ -1,3 +1,2 @@
1
- /// <reference types="react" />
2
1
  declare const DataSourceQRCode: (props: any) => import("react").JSX.Element;
3
2
  export default DataSourceQRCode;
@@ -1,6 +1,5 @@
1
- /// <reference types="react" />
2
1
  declare const useDataSourceKey: () => {
3
- dataSourceKey: string | undefined;
4
- dataSourceKeyRef: import("react").MutableRefObject<string | undefined>;
2
+ dataSourceKey: string | import("../../provider/dataSource/DataSourceContext").DataSourceType | undefined;
3
+ dataSourceKeyRef: import("react").MutableRefObject<string | import("../../provider/dataSource/DataSourceContext").DataSourceType | undefined>;
5
4
  };
6
5
  export default useDataSourceKey;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  declare const useDrawerState: (operationContent?: {
3
2
  [key: string]: import("react").ReactNode;
4
3
  } | undefined) => any;