@pisell/materials 6.11.5 → 6.11.6

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 (137) 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 +7 -7
  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 +16 -16
  9. package/build/lowcode/view.css +1 -1
  10. package/build/lowcode/view.js +15 -15
  11. package/es/components/PisellTabbar/PisellTabbar.js +47 -44
  12. package/es/components/PisellTabbar/template/Template1/PisellTabbar.d.ts +3 -18
  13. package/es/components/PisellTabbar/template/Template1/PisellTabbar.js +124 -28
  14. package/es/components/PisellTabbar/template/Template1/constants.js +1 -1
  15. package/es/components/dataSourceComponents/dataSourceTable/hooks/useDataSourceKey.d.ts +2 -2
  16. package/es/components/dataSourceComponents/dataSourceTable/hooks/useTableProps.d.ts +2 -2
  17. package/es/components/pisellDataSourceContainer/hooks/useDataSourceKey.d.ts +2 -2
  18. package/es/components/pisellDateTimeDisplay/PisellDateTimeDisplay.js +47 -34
  19. package/es/components/pisellDateTimeDisplay/PisellDateTimeDisplay.stories.d.ts +19 -0
  20. package/es/components/pisellDateTimeDisplay/PisellDateTimeDisplay.stories.js +74 -0
  21. package/es/components/pisellDateTimeDisplay/components/DateDisplay.d.ts +6 -1
  22. package/es/components/pisellDateTimeDisplay/components/DateDisplay.js +10 -3
  23. package/es/components/pisellDateTimeDisplay/formats/dateTimeDisplayFormats.d.ts +7 -0
  24. package/es/components/pisellDateTimeDisplay/formats/dateTimeDisplayFormats.js +81 -0
  25. package/es/components/pisellDateTimeDisplay/formats/index.d.ts +1 -0
  26. package/es/components/pisellDateTimeDisplay/formats/index.js +1 -0
  27. package/es/components/pisellDateTimeDisplay/hooks/useCurrentTime.d.ts +2 -2
  28. package/es/components/pisellDateTimeDisplay/hooks/useCurrentTime.js +2 -2
  29. package/es/components/pisellDateTimeDisplay/types.d.ts +48 -2
  30. package/es/components/pisellDateTimeDisplay/utils/formatDate.js +25 -6
  31. package/es/components/pisellDateTimeDisplay/utils/formatDateOrRelative.d.ts +17 -0
  32. package/es/components/pisellDateTimeDisplay/utils/formatDateOrRelative.js +38 -0
  33. package/es/components/pisellDateTimeDisplay/utils/formatWeekday.js +11 -12
  34. package/es/components/pisellDateTimeDisplay/utils/index.d.ts +3 -1
  35. package/es/components/pisellDateTimeDisplay/utils/index.js +3 -1
  36. package/es/components/pisellDateTimeDisplay/utils/localeUtils.d.ts +2 -7
  37. package/es/components/pisellDateTimeDisplay/utils/localeUtils.js +4 -17
  38. package/es/components/pisellDateTimeDisplay/utils/relativeDay.d.ts +23 -0
  39. package/es/components/pisellDateTimeDisplay/utils/relativeDay.js +45 -0
  40. package/es/components/pisellLookup/components/LookupTrigger.js +66 -6
  41. package/es/components/pisellTimeRangeDisplay/PisellTimeRangeDisplay.d.ts +32 -0
  42. package/es/components/pisellTimeRangeDisplay/PisellTimeRangeDisplay.js +197 -0
  43. package/es/components/pisellTimeRangeDisplay/PisellTimeRangeDisplay.less +49 -0
  44. package/es/components/pisellTimeRangeDisplay/PisellTimeRangeDisplay.stories.d.ts +61 -0
  45. package/es/components/pisellTimeRangeDisplay/PisellTimeRangeDisplay.stories.js +209 -0
  46. package/es/components/pisellTimeRangeDisplay/components/DateBlock.d.ts +20 -0
  47. package/es/components/pisellTimeRangeDisplay/components/DateBlock.js +30 -0
  48. package/es/components/pisellTimeRangeDisplay/components/DurationBlock.d.ts +19 -0
  49. package/es/components/pisellTimeRangeDisplay/components/DurationBlock.js +25 -0
  50. package/es/components/pisellTimeRangeDisplay/components/TimeRangeBlock.d.ts +30 -0
  51. package/es/components/pisellTimeRangeDisplay/components/TimeRangeBlock.js +86 -0
  52. package/es/components/pisellTimeRangeDisplay/components/WeekdayBlock.d.ts +18 -0
  53. package/es/components/pisellTimeRangeDisplay/components/WeekdayBlock.js +23 -0
  54. package/es/components/pisellTimeRangeDisplay/components/index.d.ts +8 -0
  55. package/es/components/pisellTimeRangeDisplay/components/index.js +4 -0
  56. package/es/components/pisellTimeRangeDisplay/index.d.ts +3 -0
  57. package/es/components/pisellTimeRangeDisplay/index.js +1 -0
  58. package/es/components/pisellTimeRangeDisplay/types.d.ts +137 -0
  59. package/es/components/pisellTimeRangeDisplay/types.js +1 -0
  60. package/es/components/pisellTimeRangeDisplay/utils/formatDuration.d.ts +14 -0
  61. package/es/components/pisellTimeRangeDisplay/utils/formatDuration.js +53 -0
  62. package/es/components/pisellTimeRangeDisplay/utils/index.d.ts +4 -0
  63. package/es/components/pisellTimeRangeDisplay/utils/index.js +5 -0
  64. package/es/components/pisellTimeRangeDisplay/utils/parseTimeRange.d.ts +23 -0
  65. package/es/components/pisellTimeRangeDisplay/utils/parseTimeRange.js +27 -0
  66. package/es/components/table/Gallery/components/VirtualGrid/useGapSize.d.ts +2 -2
  67. package/es/components/table/Table/fields/select/filterUtil/index.d.ts +1 -1
  68. package/es/components/table/Table/fields/treeSelect/filterUtil/index.d.ts +1 -1
  69. package/es/index.d.ts +2 -0
  70. package/es/index.js +7 -0
  71. package/es/utils/index.d.ts +1 -1
  72. package/es/utils/platform.d.ts +1 -1
  73. package/lib/components/PisellTabbar/PisellTabbar.js +64 -57
  74. package/lib/components/PisellTabbar/template/Template1/PisellTabbar.d.ts +3 -18
  75. package/lib/components/PisellTabbar/template/Template1/PisellTabbar.js +171 -55
  76. package/lib/components/PisellTabbar/template/Template1/constants.js +1 -1
  77. package/lib/components/dataSourceComponents/dataSourceTable/hooks/useDataSourceKey.d.ts +2 -2
  78. package/lib/components/dataSourceComponents/dataSourceTable/hooks/useTableProps.d.ts +2 -2
  79. package/lib/components/pisellDataSourceContainer/hooks/useDataSourceKey.d.ts +2 -2
  80. package/lib/components/pisellDateTimeDisplay/PisellDateTimeDisplay.js +27 -17
  81. package/lib/components/pisellDateTimeDisplay/PisellDateTimeDisplay.stories.d.ts +19 -0
  82. package/lib/components/pisellDateTimeDisplay/PisellDateTimeDisplay.stories.js +63 -0
  83. package/lib/components/pisellDateTimeDisplay/components/DateDisplay.d.ts +6 -1
  84. package/lib/components/pisellDateTimeDisplay/components/DateDisplay.js +5 -1
  85. package/lib/components/pisellDateTimeDisplay/formats/dateTimeDisplayFormats.d.ts +7 -0
  86. package/lib/components/pisellDateTimeDisplay/formats/dateTimeDisplayFormats.js +98 -0
  87. package/lib/components/pisellDateTimeDisplay/formats/index.d.ts +1 -0
  88. package/lib/components/pisellDateTimeDisplay/formats/index.js +29 -0
  89. package/lib/components/pisellDateTimeDisplay/hooks/useCurrentTime.d.ts +2 -2
  90. package/lib/components/pisellDateTimeDisplay/types.d.ts +48 -2
  91. package/lib/components/pisellDateTimeDisplay/utils/formatDate.js +14 -1
  92. package/lib/components/pisellDateTimeDisplay/utils/formatDateOrRelative.d.ts +17 -0
  93. package/lib/components/pisellDateTimeDisplay/utils/formatDateOrRelative.js +54 -0
  94. package/lib/components/pisellDateTimeDisplay/utils/formatWeekday.js +6 -6
  95. package/lib/components/pisellDateTimeDisplay/utils/index.d.ts +3 -1
  96. package/lib/components/pisellDateTimeDisplay/utils/index.js +8 -2
  97. package/lib/components/pisellDateTimeDisplay/utils/localeUtils.d.ts +2 -7
  98. package/lib/components/pisellDateTimeDisplay/utils/localeUtils.js +2 -11
  99. package/lib/components/pisellDateTimeDisplay/utils/relativeDay.d.ts +23 -0
  100. package/lib/components/pisellDateTimeDisplay/utils/relativeDay.js +54 -0
  101. package/lib/components/pisellLookup/components/LookupTrigger.js +45 -7
  102. package/lib/components/pisellTimeRangeDisplay/PisellTimeRangeDisplay.d.ts +32 -0
  103. package/lib/components/pisellTimeRangeDisplay/PisellTimeRangeDisplay.js +193 -0
  104. package/lib/components/pisellTimeRangeDisplay/PisellTimeRangeDisplay.less +49 -0
  105. package/lib/components/pisellTimeRangeDisplay/PisellTimeRangeDisplay.stories.d.ts +61 -0
  106. package/lib/components/pisellTimeRangeDisplay/PisellTimeRangeDisplay.stories.js +187 -0
  107. package/lib/components/pisellTimeRangeDisplay/components/DateBlock.d.ts +20 -0
  108. package/lib/components/pisellTimeRangeDisplay/components/DateBlock.js +69 -0
  109. package/lib/components/pisellTimeRangeDisplay/components/DurationBlock.d.ts +19 -0
  110. package/lib/components/pisellTimeRangeDisplay/components/DurationBlock.js +65 -0
  111. package/lib/components/pisellTimeRangeDisplay/components/TimeRangeBlock.d.ts +30 -0
  112. package/lib/components/pisellTimeRangeDisplay/components/TimeRangeBlock.js +120 -0
  113. package/lib/components/pisellTimeRangeDisplay/components/WeekdayBlock.d.ts +18 -0
  114. package/lib/components/pisellTimeRangeDisplay/components/WeekdayBlock.js +64 -0
  115. package/lib/components/pisellTimeRangeDisplay/components/index.d.ts +8 -0
  116. package/lib/components/pisellTimeRangeDisplay/components/index.js +38 -0
  117. package/lib/components/pisellTimeRangeDisplay/index.d.ts +3 -0
  118. package/lib/components/pisellTimeRangeDisplay/index.js +40 -0
  119. package/lib/components/pisellTimeRangeDisplay/types.d.ts +137 -0
  120. package/lib/components/pisellTimeRangeDisplay/types.js +17 -0
  121. package/lib/components/pisellTimeRangeDisplay/utils/formatDuration.d.ts +14 -0
  122. package/lib/components/pisellTimeRangeDisplay/utils/formatDuration.js +52 -0
  123. package/lib/components/pisellTimeRangeDisplay/utils/index.d.ts +4 -0
  124. package/lib/components/pisellTimeRangeDisplay/utils/index.js +47 -0
  125. package/lib/components/pisellTimeRangeDisplay/utils/parseTimeRange.d.ts +23 -0
  126. package/lib/components/pisellTimeRangeDisplay/utils/parseTimeRange.js +49 -0
  127. package/lib/components/table/Gallery/components/VirtualGrid/useGapSize.d.ts +2 -2
  128. package/lib/components/table/Table/fields/select/filterUtil/index.d.ts +1 -1
  129. package/lib/components/table/Table/fields/treeSelect/filterUtil/index.d.ts +1 -1
  130. package/lib/index.d.ts +2 -0
  131. package/lib/index.js +3 -0
  132. package/lib/utils/index.d.ts +1 -1
  133. package/lib/utils/platform.d.ts +1 -1
  134. package/lowcode/pisell-time-range-display/index.ts +3 -0
  135. package/lowcode/pisell-time-range-display/meta.ts +375 -0
  136. package/lowcode/pisell-time-range-display/snippets.ts +1 -0
  137. package/package.json +3 -3
@@ -57,7 +57,8 @@ var PisellTabbar = /*#__PURE__*/forwardRef(function (props, ref) {
57
57
  getActiveKey = _useActiveKey.getActiveKey,
58
58
  _setActiveKey = _useActiveKey._setActiveKey,
59
59
  setCacheActiveKey = _useActiveKey.setCacheActiveKey,
60
- resetActiveKey = _useActiveKey.resetActiveKey;
60
+ resetActiveKey = _useActiveKey.resetActiveKey,
61
+ getCacheActiveKey = _useActiveKey.getCacheActiveKey;
61
62
  var level1Value = useMemo(function () {
62
63
  return getActiveKey(0);
63
64
  }, [activeKey]);
@@ -402,7 +403,50 @@ var PisellTabbar = /*#__PURE__*/forwardRef(function (props, ref) {
402
403
  }
403
404
  }));
404
405
  }, [expand]);
405
-
406
+ var renderSearch = useCallback(function (itemProps, level) {
407
+ return /*#__PURE__*/React.createElement(PisellFind, {
408
+ showHistory: false,
409
+ modalWidth: '100%',
410
+ ref: searchRef,
411
+ onSearch: function onSearch(e) {
412
+ _onSearch === null || _onSearch === void 0 || _onSearch(e);
413
+ },
414
+ getContainer: function getContainer() {
415
+ return document.querySelector('#sku-list-tabbar') || document.body;
416
+ },
417
+ modalStyle: {
418
+ width: '100%'
419
+ },
420
+ onOpen: openSearchMode,
421
+ onClose: closeSearchMode,
422
+ trigger: /*#__PURE__*/React.createElement(PisellCards.MultilevelCard, _extends({}, itemProps, {
423
+ card: function card(cardProps) {
424
+ var _cardProps = _objectSpread(_objectSpread({}, cardProps), {}, {
425
+ text: /*#__PURE__*/React.createElement("div", {
426
+ style: {
427
+ display: 'flex',
428
+ alignItems: 'center',
429
+ gap: 4
430
+ }
431
+ }, /*#__PURE__*/React.createElement(Iconfont, {
432
+ type: "pisell2-search-lg",
433
+ style: {
434
+ color: '#fff',
435
+ fontSize: 20
436
+ }
437
+ }), /*#__PURE__*/React.createElement(Iconfont, {
438
+ type: "pisell2-scan",
439
+ style: {
440
+ color: '#fff',
441
+ fontSize: 20
442
+ }
443
+ }), /*#__PURE__*/React.createElement("span", null, getText('table-filter-find')))
444
+ });
445
+ return renderLevelNCard(_cardProps, level);
446
+ }
447
+ }))
448
+ });
449
+ }, [activeKey]);
406
450
  /**
407
451
  * 渲染一级 Tab 项
408
452
  */
@@ -411,48 +455,7 @@ var PisellTabbar = /*#__PURE__*/forwardRef(function (props, ref) {
411
455
  // 处理自定义点击事件的项(如展开按钮)
412
456
  if (itemData !== null && itemData !== void 0 && itemData.customClick) {
413
457
  if (itemProps.dataSource.key === 'search') {
414
- return /*#__PURE__*/React.createElement(PisellFind, {
415
- showHistory: false,
416
- modalWidth: '100%',
417
- ref: searchRef,
418
- onSearch: function onSearch(e) {
419
- _onSearch === null || _onSearch === void 0 || _onSearch(e);
420
- },
421
- getContainer: function getContainer() {
422
- return document.querySelector('#sku-list-tabbar') || document.body;
423
- },
424
- modalStyle: {
425
- width: '100%'
426
- },
427
- onOpen: openSearchMode,
428
- onClose: closeSearchMode,
429
- trigger: /*#__PURE__*/React.createElement(PisellCards.MultilevelCard, _extends({}, itemProps, {
430
- card: function card(cardProps) {
431
- var _cardProps = _objectSpread(_objectSpread({}, cardProps), {}, {
432
- text: /*#__PURE__*/React.createElement("div", {
433
- style: {
434
- display: 'flex',
435
- alignItems: 'center',
436
- gap: 4
437
- }
438
- }, /*#__PURE__*/React.createElement(Iconfont, {
439
- type: "pisell2-search-lg",
440
- style: {
441
- color: '#fff',
442
- fontSize: 20
443
- }
444
- }), /*#__PURE__*/React.createElement(Iconfont, {
445
- type: "pisell2-scan",
446
- style: {
447
- color: '#fff',
448
- fontSize: 20
449
- }
450
- }), /*#__PURE__*/React.createElement("span", null, getText('table-filter-find')))
451
- });
452
- return renderLevelNCard(_cardProps, 'level1');
453
- }
454
- }))
455
- });
458
+ return renderSearch(itemProps, 'level1');
456
459
  }
457
460
  if (itemProps.dataSource.key === 'expand') {
458
461
  return renderExpand(itemProps, 'level1');
@@ -1,20 +1,5 @@
1
1
  import React from 'react';
2
- import { PisellTabbarProps } from '../../types';
3
2
  import '../../PisellTabbar.less';
4
- /**
5
- * PisellTabbar - 多层级 Tabbar 组件
6
- *
7
- * 支持最多 3 层级的 Tab 导航,每层级可独立展开/收起
8
- *
9
- * @component
10
- * @example
11
- * ```tsx
12
- * <PisellTabbar
13
- * dataSource={categoryData}
14
- * value={[1, 10, 100]}
15
- * onChange={(value) => console.log('当前选中:', value)}
16
- * />
17
- * ```
18
- */
19
- declare const PisellTabbar: React.FC<PisellTabbarProps>;
20
- export default PisellTabbar;
3
+ import { PisellTabbarProps } from '../../types';
4
+ declare const _default: React.ForwardRefExoticComponent<PisellTabbarProps & React.RefAttributes<unknown>>;
5
+ export default _default;
@@ -5,16 +5,18 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
5
5
  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; }
6
6
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
7
7
  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); }
8
- import React, { useCallback, useEffect, useMemo } from 'react';
9
8
  import classNames from 'classnames';
10
- import SuperTabs from "../../../PisellSuperTabs";
9
+ import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef } from 'react';
10
+ import { getText } from "../../../../locales";
11
11
  import PisellCards from "../../../PisellCards";
12
+ import SuperTabs from "../../../PisellSuperTabs";
12
13
  import Iconfont from "../../../iconfont";
14
+ import { PisellFind } from "../../../pisellFind";
15
+ import "../../PisellTabbar.less";
13
16
  import { useActiveKey, useExpand } from "../../hooks";
14
- import { addDataSourceItemsByKey, getDefaultActiveKey } from "./utils";
15
- import { DEFAULT_LEVEL_CONFIG, LEVEL_ADD_ITEMS, getExpandConfig } from "./constants";
16
17
  import mock from "../../mock";
17
- import "../../PisellTabbar.less";
18
+ import { DEFAULT_LEVEL_CONFIG, LEVEL_ADD_ITEMS, getExpandConfig } from "./constants";
19
+ import { addDataSourceItemsByKey, getDefaultActiveKey } from "./utils";
18
20
  var tabbarId = 'sku-list-tabbar-temp1';
19
21
 
20
22
  /**
@@ -32,7 +34,7 @@ var tabbarId = 'sku-list-tabbar-temp1';
32
34
  * />
33
35
  * ```
34
36
  */
35
- var PisellTabbar = function PisellTabbar(props) {
37
+ var PisellTabbar = function PisellTabbar(props, ref) {
36
38
  var _props$dataSource = props.dataSource,
37
39
  dataSource = _props$dataSource === void 0 ? props !== null && props !== void 0 && props.__designMode ? mock : mock : _props$dataSource,
38
40
  value = props.value,
@@ -42,7 +44,10 @@ var PisellTabbar = function PisellTabbar(props) {
42
44
  customLevelConfig = props.levelConfig,
43
45
  customExpandConfig = props.expandConfig,
44
46
  _props$maxLevel = props.maxLevel,
45
- maxLevel = _props$maxLevel === void 0 ? 3 : _props$maxLevel;
47
+ maxLevel = _props$maxLevel === void 0 ? 3 : _props$maxLevel,
48
+ _onSearch = props.onSearch;
49
+ var containerRef = useRef(null);
50
+ var searchRef = useRef(null);
46
51
 
47
52
  // 激活的 key 管理
48
53
  var _useActiveKey = useActiveKey({
@@ -52,7 +57,9 @@ var PisellTabbar = function PisellTabbar(props) {
52
57
  setActiveKey = _useActiveKey.setActiveKey,
53
58
  getActiveKey = _useActiveKey.getActiveKey,
54
59
  _setActiveKey = _useActiveKey._setActiveKey,
55
- activeKey = _useActiveKey.activeKey;
60
+ activeKey = _useActiveKey.activeKey,
61
+ setCacheActiveKey = _useActiveKey.setCacheActiveKey,
62
+ resetActiveKey = _useActiveKey.resetActiveKey;
56
63
  console.log('getActiveKey', activeKey);
57
64
 
58
65
  // 展开状态管理
@@ -63,6 +70,43 @@ var PisellTabbar = function PisellTabbar(props) {
63
70
 
64
71
  // 展开配置
65
72
  var expandConfig = customExpandConfig || getExpandConfig();
73
+ var level1Value = useMemo(function () {
74
+ return getActiveKey(0);
75
+ }, [activeKey]);
76
+ var level2Value = useMemo(function () {
77
+ return getActiveKey(1);
78
+ }, [activeKey]);
79
+ var level3Value = useMemo(function () {
80
+ return getActiveKey(2);
81
+ }, [activeKey]);
82
+
83
+ /**
84
+ * 打开搜索模式
85
+ */
86
+ var openSearchMode = function openSearchMode() {
87
+ setCacheActiveKey(activeKey);
88
+ _setActiveKey([]);
89
+ onChange === null || onChange === void 0 || onChange([]);
90
+ };
91
+
92
+ /**
93
+ * 关闭搜索模式
94
+ */
95
+ var closeSearchMode = function closeSearchMode() {
96
+ _onSearch === null || _onSearch === void 0 || _onSearch('');
97
+ resetActiveKey();
98
+ };
99
+
100
+ //@ts-ignore
101
+ useImperativeHandle(ref, function () {
102
+ var _searchRef$current;
103
+ if (props !== null && props !== void 0 && props.__designMode) {
104
+ return containerRef.current;
105
+ }
106
+ return {
107
+ closeSearchMode: searchRef === null || searchRef === void 0 || (_searchRef$current = searchRef.current) === null || _searchRef$current === void 0 ? void 0 : _searchRef$current.close
108
+ };
109
+ });
66
110
 
67
111
  /**
68
112
  * 同步外部 value 到内部状态
@@ -144,6 +188,50 @@ var PisellTabbar = function PisellTabbar(props) {
144
188
  })
145
189
  }));
146
190
  }, [expandConfig, activeKey, getLevelConfig]);
191
+ var renderSearch = useCallback(function (itemProps, level) {
192
+ return /*#__PURE__*/React.createElement(PisellFind, {
193
+ showHistory: false,
194
+ modalWidth: '100%',
195
+ ref: searchRef,
196
+ onSearch: function onSearch(e) {
197
+ _onSearch === null || _onSearch === void 0 || _onSearch(e);
198
+ },
199
+ getContainer: function getContainer() {
200
+ return document.querySelector("#".concat(tabbarId)) || document.body;
201
+ },
202
+ modalStyle: {
203
+ width: '100%'
204
+ },
205
+ onOpen: openSearchMode,
206
+ onClose: closeSearchMode,
207
+ trigger: /*#__PURE__*/React.createElement(PisellCards.MultilevelCard, _extends({}, itemProps, {
208
+ card: function card(cardProps) {
209
+ var _cardProps = _objectSpread(_objectSpread({}, cardProps), {}, {
210
+ text: /*#__PURE__*/React.createElement("div", {
211
+ style: {
212
+ display: 'flex',
213
+ alignItems: 'center',
214
+ gap: 4
215
+ }
216
+ }, /*#__PURE__*/React.createElement(Iconfont, {
217
+ type: "pisell2-search-lg",
218
+ style: {
219
+ color: '#000',
220
+ fontSize: 20
221
+ }
222
+ }), /*#__PURE__*/React.createElement(Iconfont, {
223
+ type: "pisell2-scan",
224
+ style: {
225
+ color: '#000',
226
+ fontSize: 20
227
+ }
228
+ }), /*#__PURE__*/React.createElement("span", null, getText('table-filter-find')))
229
+ });
230
+ return renderNormalCard(_cardProps, level);
231
+ }
232
+ }))
233
+ });
234
+ }, [activeKey]);
147
235
 
148
236
  /**
149
237
  * 渲染 level2/level3 普通卡片
@@ -152,8 +240,9 @@ var PisellTabbar = function PisellTabbar(props) {
152
240
  var _cardProps$active2;
153
241
  var itemData = cardProps.dataSource;
154
242
  var levelCfg = getLevelConfig(level);
155
- return /*#__PURE__*/React.createElement(PisellCards.TextCard, _extends({}, cardProps, {
156
- text: itemData.name,
243
+ return /*#__PURE__*/React.createElement(PisellCards.TextCard, _extends({
244
+ text: itemData.name
245
+ }, cardProps, {
157
246
  variant: "outlined",
158
247
  widthMode: "auto",
159
248
  textConfig: {
@@ -190,19 +279,22 @@ var PisellTabbar = function PisellTabbar(props) {
190
279
  */
191
280
  var renderLevel1Item = useCallback(function (itemProps) {
192
281
  var itemData = itemProps.dataSource;
193
- var level1Config = getLevelConfig('level1');
194
282
  var isExpanded = getExpand('level1');
195
-
196
- // 处理展开按钮
197
283
  if (itemData !== null && itemData !== void 0 && itemData.customClick) {
198
- return /*#__PURE__*/React.createElement(PisellCards.MultilevelCard, _extends({}, itemProps, {
199
- card: function card(cardProps) {
200
- return renderExpandCard(cardProps, 'level1', isExpanded);
201
- },
202
- onClick: function onClick() {
203
- return toggleExpand('level1');
204
- }
205
- }));
284
+ if (itemProps.dataSource.key === 'search') {
285
+ return renderSearch(itemProps, 'level1');
286
+ }
287
+ if (itemProps.dataSource.key === 'expand') {
288
+ return /*#__PURE__*/React.createElement(PisellCards.MultilevelCard, _extends({}, itemProps, {
289
+ card: function card(cardProps) {
290
+ return renderExpandCard(cardProps, 'level1', isExpanded);
291
+ },
292
+ onClick: function onClick() {
293
+ return toggleExpand('level1');
294
+ }
295
+ }));
296
+ }
297
+ return null;
206
298
  }
207
299
 
208
300
  // 普通项
@@ -237,9 +329,10 @@ var PisellTabbar = function PisellTabbar(props) {
237
329
  var skuId = "sku-list-tabbar-".concat(panelProps.dataSource.id);
238
330
  return /*#__PURE__*/React.createElement(SuperTabs, {
239
331
  id: skuId,
332
+ isControlled: true,
240
333
  tabItemStyle: {},
241
334
  dataSource: _dataSource,
242
- value: String(getActiveKey(1)),
335
+ value: level2Value,
243
336
  onChange: handleLevel2Change,
244
337
  rowKey: "id",
245
338
  style: {
@@ -307,7 +400,7 @@ var PisellTabbar = function PisellTabbar(props) {
307
400
  }));
308
401
  }
309
402
  });
310
- }, [maxLevel, activeKey, getActiveKey, handleLevel2Change, getExpand, toggleExpand, getLevelConfig, renderExpandCard, renderNormalCard]);
403
+ }, [level2Value, maxLevel, activeKey, getActiveKey, handleLevel2Change, getExpand, toggleExpand, getLevelConfig, renderExpandCard, renderNormalCard]);
311
404
 
312
405
  /**
313
406
  * 渲染三级 Tabbar 面板
@@ -323,9 +416,10 @@ var PisellTabbar = function PisellTabbar(props) {
323
416
  var skuId = "sku-list-tabbar-".concat(panelProps2.dataSource.id);
324
417
  return /*#__PURE__*/React.createElement(SuperTabs, {
325
418
  id: skuId,
419
+ isControlled: true,
326
420
  tabItemStyle: {},
327
421
  dataSource: _dataSource2,
328
- value: String(getActiveKey(2)),
422
+ value: level3Value,
329
423
  onChange: handleLevel3Change,
330
424
  rowKey: "id",
331
425
  style: {
@@ -383,7 +477,7 @@ var PisellTabbar = function PisellTabbar(props) {
383
477
  }));
384
478
  }
385
479
  });
386
- }, [maxLevel, activeKey, getActiveKey, handleLevel3Change, getExpand, toggleExpand, getLevelConfig, renderExpandCard, renderNormalCard]);
480
+ }, [level3Value, maxLevel, activeKey, getActiveKey, handleLevel3Change, getExpand, toggleExpand, getLevelConfig, renderExpandCard, renderNormalCard]);
387
481
 
388
482
  /**
389
483
  * 渲染一级 Tabbar
@@ -392,12 +486,14 @@ var PisellTabbar = function PisellTabbar(props) {
392
486
  var isExpanded1 = getExpand('level1');
393
487
  return dataSource.length ? /*#__PURE__*/React.createElement("div", {
394
488
  className: classNames('pisell-tabbar', className),
395
- style: style
489
+ style: style,
490
+ ref: containerRef
396
491
  }, /*#__PURE__*/React.createElement(SuperTabs, {
492
+ isControlled: true,
397
493
  id: tabbarId,
398
494
  tabItemStyle: {},
399
495
  dataSource: level1DataSource,
400
- value: String(getActiveKey(0)),
496
+ value: level1Value,
401
497
  onChange: handleLevel1Change,
402
498
  rowKey: "id",
403
499
  style: {
@@ -424,4 +520,4 @@ var PisellTabbar = function PisellTabbar(props) {
424
520
  })) : null;
425
521
  };
426
522
  PisellTabbar.displayName = 'PisellTabbar';
427
- export default PisellTabbar;
523
+ export default /*#__PURE__*/forwardRef(PisellTabbar);
@@ -27,7 +27,7 @@ export var DEFAULT_LEVEL_CONFIG = {
27
27
  * 获取层级对应的添加项配置
28
28
  */
29
29
  export var LEVEL_ADD_ITEMS = {
30
- level1: ['all'],
30
+ level1: ['search', 'all'],
31
31
  level2: ['expand', 'all'],
32
32
  level3: ['expand', 'all']
33
33
  };
@@ -1,5 +1,5 @@
1
1
  declare const useDataSourceKey: () => {
2
- dataSourceKey: string | undefined;
3
- 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>;
4
4
  };
5
5
  export default useDataSourceKey;
@@ -19,7 +19,7 @@ interface UseTablePropsProps {
19
19
  */
20
20
  declare const useTableProps: (props: UseTablePropsProps) => {
21
21
  currentComponentId: any;
22
- title: number | boolean | Iterable<React.ReactNode> | React.JSX.Element | (() => React.ReactNode) | null | undefined;
22
+ title: string | number | boolean | Iterable<React.ReactNode> | React.JSX.Element | (() => React.ReactNode) | null | undefined;
23
23
  pagination: {
24
24
  total: number;
25
25
  current: number;
@@ -28,7 +28,7 @@ declare const useTableProps: (props: UseTablePropsProps) => {
28
28
  showSizeChanger: boolean;
29
29
  };
30
30
  columns: import("./useColumns").Column[];
31
- subTitle: number | boolean | Iterable<React.ReactNode> | React.JSX.Element | (() => React.ReactNode) | null | undefined;
31
+ subTitle: string | number | boolean | Iterable<React.ReactNode> | React.JSX.Element | (() => React.ReactNode) | null | undefined;
32
32
  buttons: any[] | null;
33
33
  filter: {
34
34
  dom: any;
@@ -1,5 +1,5 @@
1
1
  declare const useDataSourceKey: () => {
2
- dataSourceKey: string | undefined;
3
- dataSourceKeyRef: import("react").MutableRefObject<string | undefined>;
2
+ dataSourceKey: string | import("../../dataSourceComponents/provider/dataSource/DataSourceContext").DataSourceType | undefined;
3
+ dataSourceKeyRef: import("react").MutableRefObject<string | import("../../dataSourceComponents/provider/dataSource/DataSourceContext").DataSourceType | undefined>;
4
4
  };
5
5
  export default useDataSourceKey;
@@ -5,11 +5,13 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
5
5
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
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
7
  import React from 'react';
8
+ import dayjs from 'dayjs';
8
9
  import 'dayjs/locale/zh-cn';
9
10
  import 'dayjs/locale/en';
10
11
  import { useCurrentTime } from "./hooks";
11
- import { getRefreshInterval, isChinese as checkIsChinese } from "./utils";
12
+ import { getRefreshInterval, isChinese as checkIsChinese, getRelativeDay, getRelativeDayLabel, getDayjsLocale } from "./utils";
12
13
  import { TimeDisplay, DateDisplay, WeekdayDisplay } from "./components";
14
+ import { DATETIME_DISPLAY_FORMATS } from "./formats/dateTimeDisplayFormats";
13
15
  import "./PisellDateTimeDisplay.less";
14
16
 
15
17
  /**
@@ -40,11 +42,13 @@ import "./PisellDateTimeDisplay.less";
40
42
  * />
41
43
  */
42
44
  export var PisellDateTimeDisplay = function PisellDateTimeDisplay(props) {
45
+ var _ref, _presetSource$localeK;
43
46
  var _props$layout = props.layout,
44
47
  layout = _props$layout === void 0 ? 'horizontal' : _props$layout,
45
48
  _props$textAlign = props.textAlign,
46
49
  textAlign = _props$textAlign === void 0 ? 'center' : _props$textAlign,
47
50
  fields = props.fields,
51
+ formatByLocale = props.formatByLocale,
48
52
  timeFormat = props.timeFormat,
49
53
  dateFormat = props.dateFormat,
50
54
  weekdayFormat = props.weekdayFormat,
@@ -64,8 +68,18 @@ export var PisellDateTimeDisplay = function PisellDateTimeDisplay(props) {
64
68
  className = props.className,
65
69
  style = props.style;
66
70
 
71
+ // 多语言格式:formatByLocale 优先,否则用内置 DATETIME_DISPLAY_FORMATS;再与单项 props 合并(单项优先)
72
+ var localeKey = getDayjsLocale(locale);
73
+ var baseLocale = localeKey.split('-')[0];
74
+ var presetSource = formatByLocale !== null && formatByLocale !== void 0 ? formatByLocale : DATETIME_DISPLAY_FORMATS;
75
+ var preset = (_ref = (_presetSource$localeK = presetSource[localeKey]) !== null && _presetSource$localeK !== void 0 ? _presetSource$localeK : presetSource[baseLocale]) !== null && _ref !== void 0 ? _ref : {};
76
+ var effectiveFields = _objectSpread(_objectSpread({}, preset.fields), fields);
77
+ var effectiveDateFormat = _objectSpread(_objectSpread({}, preset.dateFormat), dateFormat);
78
+ var effectiveTimeFormat = _objectSpread(_objectSpread({}, preset.timeFormat), timeFormat);
79
+ var effectiveWeekdayFormat = _objectSpread(_objectSpread({}, preset.weekdayFormat), weekdayFormat);
80
+
67
81
  // 计算刷新间隔
68
- var computedRefreshInterval = refreshInterval !== null && refreshInterval !== void 0 ? refreshInterval : getRefreshInterval(timeFormat);
82
+ var computedRefreshInterval = refreshInterval !== null && refreshInterval !== void 0 ? refreshInterval : getRefreshInterval(effectiveTimeFormat);
69
83
 
70
84
  // 使用自定义 hook 管理当前时间
71
85
  var currentTime = useCurrentTime({
@@ -93,16 +107,21 @@ export var PisellDateTimeDisplay = function PisellDateTimeDisplay(props) {
93
107
  }, /*#__PURE__*/React.createElement("span", null, formattedTime));
94
108
  }
95
109
 
96
- // 获取字段配置
97
- var _ref = fields || {},
98
- _ref$showTime = _ref.showTime,
99
- showTime = _ref$showTime === void 0 ? true : _ref$showTime,
100
- _ref$showDate = _ref.showDate,
101
- showDate = _ref$showDate === void 0 ? true : _ref$showDate,
102
- _ref$showWeekday = _ref.showWeekday,
103
- showWeekday = _ref$showWeekday === void 0 ? true : _ref$showWeekday,
104
- _ref$fieldOrder = _ref.fieldOrder,
105
- fieldOrder = _ref$fieldOrder === void 0 ? ['time', 'date', 'weekday'] : _ref$fieldOrder;
110
+ // 获取字段配置(已含多语言预设合并)
111
+ var _ref2 = effectiveFields || {},
112
+ _ref2$showTime = _ref2.showTime,
113
+ showTime = _ref2$showTime === void 0 ? true : _ref2$showTime,
114
+ _ref2$showDate = _ref2.showDate,
115
+ showDate = _ref2$showDate === void 0 ? true : _ref2$showDate,
116
+ _ref2$showWeekday = _ref2.showWeekday,
117
+ showWeekday = _ref2$showWeekday === void 0 ? true : _ref2$showWeekday,
118
+ _ref2$fieldOrder = _ref2.fieldOrder,
119
+ fieldOrder = _ref2$fieldOrder === void 0 ? ['time', 'date', 'weekday'] : _ref2$fieldOrder;
120
+
121
+ // 日期与星期一体:若日期以相对日(今天/昨天/明天)展示,则不展示星期
122
+ var referenceDate = dayjs();
123
+ var relativeDay = effectiveDateFormat !== null && effectiveDateFormat !== void 0 && effectiveDateFormat.showRelativeDay ? getRelativeDay(currentTime, referenceDate) : null;
124
+ var hideWeekdayWhenDateRelative = showDate && relativeDay !== null;
106
125
 
107
126
  // 构建容器样式
108
127
  var containerInlineStyle = _objectSpread({
@@ -122,21 +141,22 @@ export var PisellDateTimeDisplay = function PisellDateTimeDisplay(props) {
122
141
  return showTime ? /*#__PURE__*/React.createElement(TimeDisplay, {
123
142
  key: "time",
124
143
  time: currentTime,
125
- format: timeFormat,
144
+ format: effectiveTimeFormat,
126
145
  style: timeStyle
127
146
  }) : null;
128
147
  case 'date':
129
148
  return showDate ? /*#__PURE__*/React.createElement(DateDisplay, {
130
149
  key: "date",
131
150
  date: currentTime,
132
- format: dateFormat,
151
+ format: effectiveDateFormat,
152
+ referenceDate: dayjs(),
133
153
  style: dateStyle
134
154
  }) : null;
135
155
  case 'weekday':
136
- return showWeekday ? /*#__PURE__*/React.createElement(WeekdayDisplay, {
156
+ return showWeekday && !hideWeekdayWhenDateRelative ? /*#__PURE__*/React.createElement(WeekdayDisplay, {
137
157
  key: "weekday",
138
158
  weekday: currentTime,
139
- format: weekdayFormat,
159
+ format: effectiveWeekdayFormat,
140
160
  style: weekdayStyle
141
161
  }) : null;
142
162
  default:
@@ -144,14 +164,12 @@ export var PisellDateTimeDisplay = function PisellDateTimeDisplay(props) {
144
164
  }
145
165
  };
146
166
 
147
- // 单行布局:使用分隔符连接
167
+ // 单行布局:使用分隔符连接,支持每段不同分隔符(如 2025-12-31 - 2:00 周四)
148
168
  if (layout === 'inline') {
149
- // 根据 fieldOrder 渲染字段,过滤掉 null
169
+ var inlineSeparators = effectiveFields === null || effectiveFields === void 0 ? void 0 : effectiveFields.inlineSeparators;
150
170
  var _renderedFields = fieldOrder.map(renderField).filter(function (field) {
151
171
  return field !== null;
152
172
  });
153
-
154
- // 如果没有要显示的字段,返回 null
155
173
  if (_renderedFields.length === 0) {
156
174
  return null;
157
175
  }
@@ -160,11 +178,12 @@ export var PisellDateTimeDisplay = function PisellDateTimeDisplay(props) {
160
178
  style: containerInlineStyle,
161
179
  onClick: onClick
162
180
  }, _renderedFields.map(function (field, index) {
181
+ var _inlineSeparators$ind;
163
182
  return /*#__PURE__*/React.createElement(React.Fragment, {
164
183
  key: index
165
184
  }, field, index < _renderedFields.length - 1 && /*#__PURE__*/React.createElement("span", {
166
185
  className: "pisell-datetime-display-separator"
167
- }, inlineSeparator));
186
+ }, (_inlineSeparators$ind = inlineSeparators === null || inlineSeparators === void 0 ? void 0 : inlineSeparators[index]) !== null && _inlineSeparators$ind !== void 0 ? _inlineSeparators$ind : inlineSeparator));
168
187
  }));
169
188
  }
170
189
 
@@ -187,20 +206,14 @@ export var PisellDateTimeDisplay = function PisellDateTimeDisplay(props) {
187
206
  var currentLocale = currentTime.locale();
188
207
  var isChinese = checkIsChinese(currentLocale);
189
208
 
190
- // 当同时显示日期和星期时,使用合并格式
209
+ // 当同时显示日期和星期时,使用合并格式;有相对日时只展示相对日,不展示具体日期与星期
191
210
  if (showDate && showWeekday) {
192
- var combinedStr = '';
193
- if (isChinese) {
194
- // 中文环境:使用格式 "周五 130"
195
- var weekdayStr = currentTime.format('ddd'); // 周五
196
- var dateStr = currentTime.format('M月D日'); // 1月30日
197
- combinedStr = "".concat(weekdayStr, " ").concat(dateStr);
198
- } else {
199
- // 英文环境:使用格式 "Sat, 21 Mar"
200
- var _weekdayStr = currentTime.format('ddd'); // Sat
201
- var _dateStr = currentTime.format('D MMM'); // 21 Mar
202
- combinedStr = "".concat(_weekdayStr, ", ").concat(_dateStr);
203
- }
211
+ var _labels$relativeDay;
212
+ var labels = effectiveDateFormat === null || effectiveDateFormat === void 0 ? void 0 : effectiveDateFormat.relativeDayLabels;
213
+ var dateStr = relativeDay ? (_labels$relativeDay = labels === null || labels === void 0 ? void 0 : labels[relativeDay]) !== null && _labels$relativeDay !== void 0 ? _labels$relativeDay : getRelativeDayLabel(relativeDay, currentTime.locale()) : isChinese ? currentTime.format('MD') : currentTime.format('D MMM');
214
+ var weekdayStr = currentTime.format('ddd');
215
+ // 相对日替换掉原日期展示:有今天/昨天/明天时只显示相对日,不拼接具体日期或星期
216
+ var combinedStr = relativeDay ? dateStr : isChinese ? "".concat(weekdayStr, " ").concat(dateStr) : "".concat(weekdayStr, ", ").concat(dateStr);
204
217
 
205
218
  // 构建日期样式
206
219
  var dateInlineStyle = {
@@ -26,6 +26,11 @@ export declare const InlineLayout: Story;
26
26
  * 单行布局 - 自定义分隔符
27
27
  */
28
28
  export declare const InlineWithCustomSeparator: Story;
29
+ /**
30
+ * 中文完整日期格式:2025-12-31 - 2:00 周四
31
+ * 单行、日期在前、日期与时间之间 " - "、时间与星期之间空格
32
+ */
33
+ export declare const InlineDateTimeWeekdayZh: Story;
29
34
  /**
30
35
  * 12小时制
31
36
  */
@@ -62,6 +67,20 @@ export declare const DateDMY: Story;
62
67
  * 中文日期带单位
63
68
  */
64
69
  export declare const DateChinese: Story;
70
+ /**
71
+ * 相对日:今天/昨天/明天
72
+ * 与「当前日期」同天显示「今天」,前一天「昨天」,后一天「明天」;其他日期仍按原格式。
73
+ * 参考日为 dayjs(),随时间变化:例如 2 月 4 日当天,2 月 4 日显示「今天」,2 月 3 日显示「昨天」。
74
+ */
75
+ export declare const RelativeDay: Story;
76
+ /**
77
+ * 相对日 - 英文
78
+ */
79
+ export declare const RelativeDayEn: Story;
80
+ /**
81
+ * 相对日 - 自定义文案
82
+ */
83
+ export declare const RelativeDayCustomLabels: Story;
65
84
  /**
66
85
  * 英文完整月份
67
86
  */