@pisell/materials 1.8.31 → 1.8.33

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 (70) 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 +6 -6
  7. package/build/lowcode/view.css +1 -1
  8. package/build/lowcode/view.js +5 -5
  9. package/es/components/Pagination/index.d.ts +2 -1
  10. package/es/components/Pagination/index.js +58 -24
  11. package/es/components/dataSourceComponents/dataSourceForm/serve.d.ts +201 -0
  12. package/es/components/dataSourceComponents/dataSourceForm/serve.js +4 -2
  13. package/es/components/dataSourceComponents/fields/index.d.ts +13 -12
  14. package/es/components/dataSourceComponents/hooks/useActions.d.ts +18 -0
  15. package/es/components/pisellFloorMapLayout/PisellFloorMapLayout.js +3 -1
  16. package/es/components/pisellFloorMapLayout/components/ItemLayer.d.ts +4 -0
  17. package/es/components/pisellFloorMapLayout/components/ItemLayer.js +9 -4
  18. package/es/components/pisellFloorMapLayout/components/ItemLayer.less +9 -2
  19. package/es/components/pisellFloorMapLayout/hooks/useFloorMapTransformMetrics.js +74 -23
  20. package/es/components/pisellFloorMapLayout/types.d.ts +5 -0
  21. package/es/components/pisellRecordBoard/PisellRecordBoard.js +14 -6
  22. package/es/components/pisellRecordBoard/layouts/GridLayout/Grid.js +193 -9
  23. package/es/components/pisellRecordBoard/layouts/GridLayout/Grid.less +31 -0
  24. package/es/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarMonthView.js +6 -3
  25. package/es/components/pisellRecordBoard/shellFrame/index.js +4 -1
  26. package/es/components/pisellRecordBoard/types.d.ts +9 -0
  27. package/es/components/pisellTimeNavigator/PisellTimeNavigator.js +13 -1
  28. package/es/locales/en-US.d.ts +4 -1
  29. package/es/locales/en-US.js +5 -2
  30. package/es/locales/ja.d.ts +3 -0
  31. package/es/locales/ja.js +3 -0
  32. package/es/locales/pt.d.ts +3 -0
  33. package/es/locales/pt.js +3 -0
  34. package/es/locales/zh-CN.d.ts +4 -1
  35. package/es/locales/zh-CN.js +5 -2
  36. package/es/locales/zh-TW.d.ts +4 -1
  37. package/es/locales/zh-TW.js +5 -2
  38. package/es/pisell-materials.tw.css +1 -1
  39. package/lib/components/Pagination/index.d.ts +2 -1
  40. package/lib/components/Pagination/index.js +50 -7
  41. package/lib/components/dataSourceComponents/dataSourceForm/serve.d.ts +201 -0
  42. package/lib/components/dataSourceComponents/dataSourceForm/serve.js +4 -2
  43. package/lib/components/dataSourceComponents/fields/index.d.ts +13 -12
  44. package/lib/components/dataSourceComponents/hooks/useActions.d.ts +18 -0
  45. package/lib/components/pisellFloorMapLayout/PisellFloorMapLayout.js +3 -1
  46. package/lib/components/pisellFloorMapLayout/components/ItemLayer.d.ts +4 -0
  47. package/lib/components/pisellFloorMapLayout/components/ItemLayer.js +8 -3
  48. package/lib/components/pisellFloorMapLayout/components/ItemLayer.less +9 -2
  49. package/lib/components/pisellFloorMapLayout/hooks/useFloorMapTransformMetrics.js +53 -18
  50. package/lib/components/pisellFloorMapLayout/types.d.ts +5 -0
  51. package/lib/components/pisellRecordBoard/PisellRecordBoard.js +16 -6
  52. package/lib/components/pisellRecordBoard/layouts/GridLayout/Grid.js +189 -32
  53. package/lib/components/pisellRecordBoard/layouts/GridLayout/Grid.less +31 -0
  54. package/lib/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarMonthView.js +99 -96
  55. package/lib/components/pisellRecordBoard/shellFrame/index.js +2 -1
  56. package/lib/components/pisellRecordBoard/types.d.ts +9 -0
  57. package/lib/components/pisellTimeNavigator/PisellTimeNavigator.js +9 -1
  58. package/lib/locales/en-US.d.ts +4 -1
  59. package/lib/locales/en-US.js +4 -1
  60. package/lib/locales/ja.d.ts +3 -0
  61. package/lib/locales/ja.js +3 -0
  62. package/lib/locales/pt.d.ts +3 -0
  63. package/lib/locales/pt.js +3 -0
  64. package/lib/locales/zh-CN.d.ts +4 -1
  65. package/lib/locales/zh-CN.js +4 -1
  66. package/lib/locales/zh-TW.d.ts +4 -1
  67. package/lib/locales/zh-TW.js +4 -1
  68. package/lib/pisell-materials.tw.css +1 -1
  69. package/lowcode/pisell-record-board-calendar-view/meta.ts +1 -1
  70. package/package.json +1 -1
@@ -5,7 +5,8 @@ declare const Pagination: (props: PaginationProps) => React.JSX.Element | null;
5
5
  export declare const paginationConfig: {
6
6
  className: string;
7
7
  defaultCurrent: number;
8
- showTotal: (total: number, range: [number, number]) => string;
8
+ /** 无 props 上下文时仅能根据 total + range 近似推算(见 resolveCurrentPage) */
9
+ showTotal: (totalRecords: number, range: [number, number]) => any;
9
10
  responsive: boolean;
10
11
  size: string;
11
12
  };
@@ -8,7 +8,7 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
8
8
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
9
9
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
10
10
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
11
- import React, { useEffect, useMemo, useState } from 'react';
11
+ import React, { useCallback, useEffect, useMemo, useState } from 'react';
12
12
  // import { ArrowLeft, ArrowRight } from "@pisell/icon/es";
13
13
  import ArrowRight from '@pisell/icon/es/ArrowRight';
14
14
  import ArrowLeft from '@pisell/icon/es/ArrowLeft';
@@ -26,16 +26,32 @@ function getPaginationText(key) {
26
26
  if (fromUtils !== fullKey) return fromUtils;
27
27
  return (_getText = getText(fullKey)) !== null && _getText !== void 0 ? _getText : getText("table-pagination-".concat(key));
28
28
  }
29
+
30
+ /**
31
+ * antd Pagination 的 showTotal(total, range) 中 range 为本页条目序号区间 [start, end],
32
+ * 不是页码。未受控时用 range 与 pageSize 推算当前页。
33
+ */
34
+ function resolveCurrentPage(props, range, pageSize) {
35
+ var _props$current;
36
+ var fromProps = (_props$current = props.current) !== null && _props$current !== void 0 ? _props$current : props.defaultCurrent;
37
+ if (typeof fromProps === 'number' && fromProps >= 1) {
38
+ return fromProps;
39
+ }
40
+ var start = range[0];
41
+ if (start == null || start < 1 || pageSize < 1) {
42
+ return 1;
43
+ }
44
+ return Math.floor((start - 1) / pageSize) + 1;
45
+ }
29
46
  var Pagination = function Pagination(props) {
30
47
  var show = useMemo(function () {
31
48
  return Object.keys(props).length;
32
49
  }, [props]);
33
50
  var isMiniPagination = useIsMobileTable();
34
- var effectiveConfig = useMemo(function () {
51
+ var itemRenderFn = useMemo(function () {
35
52
  var prevText = getPaginationText('previous');
36
53
  var nextText = getPaginationText('next');
37
- var showTotalFn = getPaginationText('showTotal');
38
- var itemRenderFn = function itemRenderFn(_, type, originalElement) {
54
+ return function (_, type, originalElement) {
39
55
  if (type === 'prev') {
40
56
  return /*#__PURE__*/React.createElement("div", {
41
57
  className: classNames('paginator-page-btn', 'left')
@@ -56,20 +72,28 @@ var Pagination = function Pagination(props) {
56
72
  }
57
73
  return originalElement;
58
74
  };
59
- var showTotal = typeof showTotalFn === 'function' ? function (total, range) {
60
- return showTotalFn(range[0], range[1]);
61
- } : function (total, range) {
62
- return "Page ".concat(range[0], " of ").concat(range[1]);
63
- };
75
+ }, []);
76
+ var showTotalDefault = useCallback(function (totalRecords, range) {
77
+ var _ref, _props$pageSize;
78
+ var pageSize = (_ref = (_props$pageSize = props.pageSize) !== null && _props$pageSize !== void 0 ? _props$pageSize : props.defaultPageSize) !== null && _ref !== void 0 ? _ref : 10;
79
+ var currentPage = resolveCurrentPage(props, range, pageSize);
80
+ var totalPages = totalRecords <= 0 ? 1 : Math.max(1, Math.ceil(totalRecords / pageSize));
81
+ var showTotalFn = getPaginationText('showTotal');
82
+ if (typeof showTotalFn === 'function') {
83
+ return showTotalFn(currentPage, totalPages);
84
+ }
85
+ return "Page ".concat(currentPage, " of ").concat(totalPages);
86
+ }, [props.current, props.defaultCurrent, props.pageSize, props.defaultPageSize]);
87
+ var effectiveConfig = useMemo(function () {
64
88
  return {
65
89
  className: 'materials-grid-paginator',
66
90
  defaultCurrent: 1,
67
- showTotal: showTotal,
91
+ showTotal: showTotalDefault,
68
92
  itemRender: itemRenderFn,
69
93
  responsive: true,
70
94
  size: 'small'
71
95
  };
72
- }, []);
96
+ }, [itemRenderFn, showTotalDefault]);
73
97
  var content = useMemo(function () {
74
98
  if (!show) {
75
99
  return null;
@@ -85,18 +109,28 @@ var Pagination = function Pagination(props) {
85
109
  export var paginationConfig = {
86
110
  className: 'materials-grid-paginator',
87
111
  defaultCurrent: 1,
88
- showTotal: function showTotal(total, range) {
89
- return "Page ".concat(range[0], " of ").concat(range[1]);
112
+ /** props 上下文时仅能根据 total + range 近似推算(见 resolveCurrentPage) */
113
+ showTotal: function showTotal(totalRecords, range) {
114
+ var pageSize = 10;
115
+ var currentPage = resolveCurrentPage({
116
+ pageSize: pageSize
117
+ }, range, pageSize);
118
+ var totalPages = totalRecords <= 0 ? 1 : Math.max(1, Math.ceil(totalRecords / pageSize));
119
+ var fn = getPaginationText('showTotal');
120
+ if (typeof fn === 'function') {
121
+ return fn(currentPage, totalPages);
122
+ }
123
+ return "Page ".concat(currentPage, " of ").concat(totalPages);
90
124
  },
91
125
  responsive: true,
92
126
  size: 'small'
93
127
  };
94
128
  export default Pagination;
95
129
  var MiniPagination = function MiniPagination(props) {
96
- var _props$current = props.current,
97
- current = _props$current === void 0 ? 1 : _props$current,
98
- _props$pageSize = props.pageSize,
99
- pageSize = _props$pageSize === void 0 ? 10 : _props$pageSize,
130
+ var _props$current2 = props.current,
131
+ current = _props$current2 === void 0 ? 1 : _props$current2,
132
+ _props$pageSize2 = props.pageSize,
133
+ pageSize = _props$pageSize2 === void 0 ? 10 : _props$pageSize2,
100
134
  _props$total = props.total,
101
135
  total = _props$total === void 0 ? 0 : _props$total;
102
136
 
@@ -163,13 +197,13 @@ var MiniPagination = function MiniPagination(props) {
163
197
  className: 'paginator-page-btn-right-icon'
164
198
  }))));
165
199
  };
166
- export var FormPagination = function FormPagination(_ref) {
167
- var _ref$value = _ref.value,
168
- value = _ref$value === void 0 ? {} : _ref$value,
169
- onChange = _ref.onChange,
170
- page = _ref.page,
171
- pageSize = _ref.pageSize,
172
- other = _objectWithoutProperties(_ref, _excluded);
200
+ export var FormPagination = function FormPagination(_ref2) {
201
+ var _ref2$value = _ref2.value,
202
+ value = _ref2$value === void 0 ? {} : _ref2$value,
203
+ onChange = _ref2.onChange,
204
+ page = _ref2.page,
205
+ pageSize = _ref2.pageSize,
206
+ other = _objectWithoutProperties(_ref2, _excluded);
173
207
  var _useState = useState(page || 1),
174
208
  _useState2 = _slicedToArray(_useState, 2),
175
209
  _p = _useState2[0],
@@ -0,0 +1,201 @@
1
+ export interface DataSourceType {
2
+ key: string;
3
+ displayName: string;
4
+ status: string;
5
+ type: string;
6
+ isDBInstance: boolean;
7
+ collections: Collection[];
8
+ }
9
+ export declare type ActionsItem = {
10
+ method: string;
11
+ path: string;
12
+ params: {
13
+ name: string;
14
+ value: string;
15
+ }[];
16
+ headers: {
17
+ name: string;
18
+ value: string;
19
+ }[];
20
+ body: Record<string, any>;
21
+ };
22
+ export interface Collection {
23
+ name: string;
24
+ title: string;
25
+ tableName: string;
26
+ timestamps: boolean;
27
+ autoGenId: boolean;
28
+ filterTargetKey: string;
29
+ fields: Field[];
30
+ introspected: boolean;
31
+ unavailableActions: any[];
32
+ actions: {
33
+ get: ActionsItem;
34
+ update: ActionsItem;
35
+ create: ActionsItem;
36
+ delete: ActionsItem;
37
+ list: ActionsItem;
38
+ };
39
+ }
40
+ interface Field {
41
+ name: string;
42
+ type: string;
43
+ allowNull: boolean;
44
+ primaryKey: boolean;
45
+ unique: boolean;
46
+ autoIncrement: boolean;
47
+ description?: (null | string)[];
48
+ possibleTypes?: string[];
49
+ rawType: string;
50
+ interface: string;
51
+ uiSchema: UiSchema;
52
+ key?: string;
53
+ collectionName?: string;
54
+ collectionKey?: any;
55
+ dataSourceKey?: string;
56
+ defaultValue?: any;
57
+ }
58
+ interface UiSchema {
59
+ type?: string;
60
+ 'x-component': string;
61
+ 'x-component-props'?: Xcomponentprops;
62
+ 'x-validator'?: string;
63
+ title: string;
64
+ default?: any;
65
+ enum?: any[];
66
+ }
67
+ interface Xcomponentprops {
68
+ style?: Style;
69
+ autoSize?: AutoSize;
70
+ stringMode?: boolean;
71
+ step?: string;
72
+ dateFormat?: string;
73
+ showTime?: boolean;
74
+ }
75
+ interface AutoSize {
76
+ minRows: number;
77
+ }
78
+ interface Style {
79
+ width: string;
80
+ }
81
+ /**
82
+ * 获取nocobase自定义数据源
83
+ */
84
+ export declare const getNocobaseDataSource: () => Promise<DataSourceType[]>;
85
+ /**
86
+ * 获取nocobase主数据源
87
+ */
88
+ export declare const getNocobaseMainDataSource: () => Promise<any>;
89
+ /**
90
+ * 获取nocobase数据源设置
91
+ */
92
+ export declare const getNocobaseDataSourceOptions: () => Promise<any>;
93
+ /**
94
+ * 创建nocobase数据
95
+ */
96
+ export declare const createNocobaseData: (params: {
97
+ key: string;
98
+ data: any;
99
+ headers?: any;
100
+ }) => Promise<any>;
101
+ /**
102
+ * nocobase get数据
103
+ */
104
+ export declare const getNocobaseData: (params: {
105
+ key: string;
106
+ query: Record<string, any>;
107
+ headers?: any;
108
+ }) => Promise<any>;
109
+ /**
110
+ * 自定义api接口
111
+ */
112
+ export declare const customApi: (url: string, data: Record<string, any>, options: {
113
+ method: 'GET' | 'POST' | 'PUT' | 'DELETE';
114
+ baseUrl?: string | undefined;
115
+ headers?: {
116
+ name: string;
117
+ value: any;
118
+ }[] | undefined;
119
+ params?: {
120
+ name: string;
121
+ value: any;
122
+ }[] | undefined;
123
+ body?: Record<string, any> | undefined;
124
+ dataSourceKey?: string | undefined;
125
+ }) => Promise<any>;
126
+ /**
127
+ * 更新nocobase数据
128
+ */
129
+ export declare const updateNocobaseData: (params: {
130
+ key: string;
131
+ data: any;
132
+ headers?: any;
133
+ query?: Record<string, any> | undefined;
134
+ }) => Promise<any>;
135
+ /**
136
+ * 获取nocobase数据列表
137
+ */
138
+ export declare const getNocobaseDataList: (allParams: {
139
+ key: string;
140
+ params: {
141
+ page: number;
142
+ pageSize: number;
143
+ };
144
+ headers?: any;
145
+ }) => Promise<any>;
146
+ /**
147
+ * 删除nocobase数据
148
+ */
149
+ export declare const deleteNocobaseData: (key: string, id: string, headers?: any) => Promise<any>;
150
+ /**
151
+ * 获取formSettingMeta数据
152
+ * @param params 请求参数
153
+ * @param params.sectionCodes 配置段代码数组,如 ['payment']
154
+ * @param params.businessCode 业务代码
155
+ * @param params.channelCode 渠道代码
156
+ * @param params.isBoard 是否包含board_code参数
157
+ * @returns Promise<any> 返回设置元数据
158
+ */
159
+ export declare const getFormSettingMetaData: (params: {
160
+ sectionCodes: string[];
161
+ scope: string;
162
+ target?: string | undefined;
163
+ }) => Promise<any>;
164
+ /**
165
+ * 更新租户设置数据
166
+ * @param params 请求参数
167
+ * @param params.businessCode 业务代码
168
+ * @param params.channelCode 渠道代码
169
+ * @param params.boardCode 板块代码
170
+ * @param params.data 要更新的数据对象,如 {"order.prefix":"","order.suffix":"","payment.number":""}
171
+ * @returns Promise<any> 返回更新结果
172
+ */
173
+ export declare const updateTenantSetting: (params: {
174
+ scope: string;
175
+ target?: string | undefined;
176
+ data: Record<string, any>;
177
+ }) => Promise<any>;
178
+ export declare type DeviceSettingScene = 'template' | 'profile' | 'instance';
179
+ /**
180
+ * 获取设备设置元数据(POST 类型 GET)
181
+ * @param params.scene 场景,默认 template
182
+ * @param params.sceneRequestId URL 中 {id} 占位符的实际取值
183
+ * @param params.items 需要获取的字段列表,例如 ['order.name', 'order.id']
184
+ */
185
+ export declare const getDeviceSettingMetaData: (params: {
186
+ scene?: DeviceSettingScene | undefined;
187
+ sceneRequestId: string;
188
+ items: string[];
189
+ }) => Promise<any>;
190
+ /**
191
+ * 更新设备设置数据
192
+ * @param params.scene 场景,默认 template
193
+ * @param params.sceneRequestId URL 中 {id} 占位符的实际取值
194
+ * @param params.data 需要更新的字段值对象
195
+ */
196
+ export declare const updateDeviceSetting: (params: {
197
+ scene?: DeviceSettingScene | undefined;
198
+ sceneRequestId: string;
199
+ data: Record<string, any>;
200
+ }) => Promise<any>;
201
+ export {};
@@ -410,7 +410,8 @@ export var getDeviceSettingMetaData = /*#__PURE__*/function () {
410
410
  }, {
411
411
  headers: {
412
412
  'Content-Type': 'application/json'
413
- }
413
+ },
414
+ isPisell2: true
414
415
  }));
415
416
  case 7:
416
417
  case "end":
@@ -452,7 +453,8 @@ export var updateDeviceSetting = /*#__PURE__*/function () {
452
453
  }, {
453
454
  headers: {
454
455
  'Content-Type': 'application/json'
455
- }
456
+ },
457
+ isPisell2: true
456
458
  }));
457
459
  case 7:
458
460
  case "end":
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  declare const formFieldMap: {
2
3
  FormItemCheckbox: import("react").FC<{}> & {
3
4
  Group: import("react").FC<import("./Checkbox/type").CheckboxGroupProps & import("../dataSourceForm/utils").WithModeProps>;
@@ -19,7 +20,7 @@ declare const formFieldMap: {
19
20
  Subdomain: import("react").FC<import("antd").InputProps & {
20
21
  onChange: (value: string) => void;
21
22
  onBlur?: ((e: import("react").FocusEvent<HTMLInputElement, Element>) => void) | undefined;
22
- rootDomain: "custom" | "saas" | "xzero";
23
+ rootDomain: "custom" | "xzero" | "saas";
23
24
  customDomain?: string | undefined;
24
25
  value?: string | undefined;
25
26
  tenantId: string;
@@ -34,7 +35,7 @@ declare const formFieldMap: {
34
35
  };
35
36
  FormItemSelect: (props: import("antd").SelectProps<any, import("antd/es/select").DefaultOptionType> & import("../dataSourceForm/utils").WithModeProps & import("../dataSourceForm/utils").WithFormItemProps & {
36
37
  options?: any;
37
- optionSourceType?: "default" | "custom" | "api" | undefined;
38
+ optionSourceType?: "custom" | "default" | "api" | undefined;
38
39
  labelField: string;
39
40
  valueField: string;
40
41
  extraParams?: Record<string, any> | undefined;
@@ -61,7 +62,7 @@ declare const formFieldMap: {
61
62
  FormItemIconSelect: import("react").FC<import("./IconSelect/type").IconSelectProps & import("../dataSourceForm/utils").WithModeProps & import("../dataSourceForm/utils").WithFormItemProps>;
62
63
  FormItemRecordListWrapper: (props: import("./RecordListWrapper/type").RecordListWrapperProps & import("../dataSourceForm/utils").WithModeProps & import("../dataSourceForm/utils").WithFormItemProps & {
63
64
  options?: any;
64
- optionSourceType?: "default" | "custom" | "api" | undefined;
65
+ optionSourceType?: "custom" | "default" | "api" | undefined;
65
66
  labelField: string;
66
67
  valueField: string;
67
68
  extraParams?: Record<string, any> | undefined;
@@ -71,7 +72,7 @@ declare const formFieldMap: {
71
72
  }) => import("react").JSX.Element;
72
73
  FormItemTabs: (props: import("./Tabs/type").TabsProps & import("../dataSourceForm/utils").WithModeProps & import("../dataSourceForm/utils").WithFormItemProps & {
73
74
  options?: any;
74
- optionSourceType?: "default" | "custom" | "api" | undefined;
75
+ optionSourceType?: "custom" | "default" | "api" | undefined;
75
76
  labelField: string;
76
77
  valueField: string;
77
78
  extraParams?: Record<string, any> | undefined;
@@ -80,7 +81,7 @@ declare const formFieldMap: {
80
81
  extraParams?: Record<string, any> | undefined;
81
82
  }) => import("react").JSX.Element;
82
83
  };
83
- declare const getFieldComponent: (fieldComponent: string) => (import("react").FC<import("./Input/type").InputProps> & {
84
+ declare const getFieldComponent: (fieldComponent: string) => import("react").FC<any> | import("react").FC<import("./DatePicker").DataSourceDatePickerProps> | (import("react").FC<import("./Input/type").InputProps> & {
84
85
  JSON: import("react").FC<any>;
85
86
  Password: import("react").FC<import("antd/es/input").PasswordProps & import("react").RefAttributes<import("antd").InputRef> & import("../dataSourceForm/utils").WithModeProps & import("../dataSourceForm/utils").WithFormItemProps>;
86
87
  TextArea: import("react").FC<import("antd/es/input").TextAreaProps & import("react").RefAttributes<import("antd/es/input/TextArea").TextAreaRef> & import("../dataSourceForm/utils").WithModeProps & import("../dataSourceForm/utils").WithFormItemProps>;
@@ -93,24 +94,24 @@ declare const getFieldComponent: (fieldComponent: string) => (import("react").FC
93
94
  Subdomain: import("react").FC<import("antd").InputProps & {
94
95
  onChange: (value: string) => void;
95
96
  onBlur?: ((e: import("react").FocusEvent<HTMLInputElement, Element>) => void) | undefined;
96
- rootDomain: "custom" | "saas" | "xzero";
97
+ rootDomain: "custom" | "xzero" | "saas";
97
98
  customDomain?: string | undefined;
98
99
  value?: string | undefined;
99
100
  tenantId: string;
100
101
  name?: string | undefined;
101
102
  fieldKey?: string | undefined;
102
103
  } & import("../dataSourceForm/utils").WithModeProps & import("../dataSourceForm/utils").WithFormItemProps>;
103
- }) | import("react").FC<any> | import("react").FC<import("./Upload/type").UploadProps & import("../dataSourceForm/utils").WithModeProps & import("../dataSourceForm/utils").WithFormItemProps> | (import("react").FC<{}> & {
104
+ }) | (import("react").FC<{}> & {
104
105
  Group: import("react").FC<import("./Checkbox/type").CheckboxGroupProps & import("../dataSourceForm/utils").WithModeProps>;
105
106
  } & {
106
107
  Group: import("react").FC<import("./Checkbox/type").CheckboxGroupProps & import("../dataSourceForm/utils").WithModeProps>;
107
- }) | import("react").FC<import("./ColorPicker/type").ColorPickerProps & import("../dataSourceForm/utils").WithModeProps & import("../dataSourceForm/utils").WithFormItemProps> | import("react").FC<import("./DatePicker").DataSourceDatePickerProps> | (import("react").FC<{}> & {
108
+ }) | import("react").FC<import("./ColorPicker/type").ColorPickerProps & import("../dataSourceForm/utils").WithModeProps & import("../dataSourceForm/utils").WithFormItemProps> | (import("react").FC<{}> & {
108
109
  Group: import("react").FC<import("./Radio/type").RadioGroupProps & import("../dataSourceForm/utils").WithModeProps>;
109
110
  } & {
110
111
  Group: import("react").FC<import("./Radio/type").RadioGroupProps & import("../dataSourceForm/utils").WithModeProps>;
111
112
  }) | ((props: import("antd").SelectProps<any, import("antd/es/select").DefaultOptionType> & import("../dataSourceForm/utils").WithModeProps & import("../dataSourceForm/utils").WithFormItemProps & {
112
113
  options?: any;
113
- optionSourceType?: "default" | "custom" | "api" | undefined;
114
+ optionSourceType?: "custom" | "default" | "api" | undefined;
114
115
  labelField: string;
115
116
  valueField: string;
116
117
  extraParams?: Record<string, any> | undefined;
@@ -119,9 +120,9 @@ declare const getFieldComponent: (fieldComponent: string) => (import("react").FC
119
120
  extraParams?: Record<string, any> | undefined;
120
121
  }) => import("react").JSX.Element) | import("react").FC<import("./TimePicker/type").TimePickerProps & import("../dataSourceForm/utils").WithModeProps & import("../dataSourceForm/utils").WithFormItemProps> | import("react").FC<import("./Input.Phone/WithMode").PhoneInputProps & import("../dataSourceForm/utils").WithModeProps & import("../dataSourceForm/utils").WithFormItemProps> | import("react").FC<import("./Input.Mobile/WithMode").PhoneInputProps & import("../dataSourceForm/utils").WithModeProps & import("../dataSourceForm/utils").WithFormItemProps> | import("react").FC<import("antd").InputProps & {
121
122
  onChange: (value: string) => void;
122
- } & import("../dataSourceForm/utils").WithModeProps & import("../dataSourceForm/utils").WithFormItemProps> | import("react").FC<import("antd").InputProps & import("react").RefAttributes<import("antd").InputRef> & import("../dataSourceForm/utils").WithModeProps & import("../dataSourceForm/utils").WithFormItemProps> | import("react").FC<import("antd/es/input").PasswordProps & import("react").RefAttributes<import("antd").InputRef> & import("../dataSourceForm/utils").WithModeProps & import("../dataSourceForm/utils").WithFormItemProps> | import("react").FC<import("./Radio/type").RadioGroupProps & import("../dataSourceForm/utils").WithModeProps> | import("react").FC<import("./Checkbox/type").CheckboxGroupProps & import("../dataSourceForm/utils").WithModeProps> | import("react").FC<import("./DateRangePicker/type").DateRangePickerProps & import("../dataSourceForm/utils").WithModeProps & import("../dataSourceForm/utils").WithFormItemProps> | import("react").FC<import("./Translation/type").TranslationProps & import("../dataSourceForm/utils").WithModeProps & import("../dataSourceForm/utils").WithFormItemProps> | import("react").FC<import("./IconSelect/type").IconSelectProps & import("../dataSourceForm/utils").WithModeProps & import("../dataSourceForm/utils").WithFormItemProps> | ((props: import("./RecordListWrapper/type").RecordListWrapperProps & import("../dataSourceForm/utils").WithModeProps & import("../dataSourceForm/utils").WithFormItemProps & {
123
+ } & import("../dataSourceForm/utils").WithModeProps & import("../dataSourceForm/utils").WithFormItemProps> | import("react").FC<import("antd").InputProps & import("react").RefAttributes<import("antd").InputRef> & import("../dataSourceForm/utils").WithModeProps & import("../dataSourceForm/utils").WithFormItemProps> | import("react").FC<import("antd/es/input").PasswordProps & import("react").RefAttributes<import("antd").InputRef> & import("../dataSourceForm/utils").WithModeProps & import("../dataSourceForm/utils").WithFormItemProps> | import("react").FC<import("./Radio/type").RadioGroupProps & import("../dataSourceForm/utils").WithModeProps> | import("react").FC<import("./Checkbox/type").CheckboxGroupProps & import("../dataSourceForm/utils").WithModeProps> | import("react").FC<import("./DateRangePicker/type").DateRangePickerProps & import("../dataSourceForm/utils").WithModeProps & import("../dataSourceForm/utils").WithFormItemProps> | import("react").FC<import("./Upload/type").UploadProps & import("../dataSourceForm/utils").WithModeProps & import("../dataSourceForm/utils").WithFormItemProps> | import("react").FC<import("./Translation/type").TranslationProps & import("../dataSourceForm/utils").WithModeProps & import("../dataSourceForm/utils").WithFormItemProps> | import("react").FC<import("./IconSelect/type").IconSelectProps & import("../dataSourceForm/utils").WithModeProps & import("../dataSourceForm/utils").WithFormItemProps> | ((props: import("./RecordListWrapper/type").RecordListWrapperProps & import("../dataSourceForm/utils").WithModeProps & import("../dataSourceForm/utils").WithFormItemProps & {
123
124
  options?: any;
124
- optionSourceType?: "default" | "custom" | "api" | undefined;
125
+ optionSourceType?: "custom" | "default" | "api" | undefined;
125
126
  labelField: string;
126
127
  valueField: string;
127
128
  extraParams?: Record<string, any> | undefined;
@@ -130,7 +131,7 @@ declare const getFieldComponent: (fieldComponent: string) => (import("react").FC
130
131
  extraParams?: Record<string, any> | undefined;
131
132
  }) => import("react").JSX.Element) | ((props: import("./Tabs/type").TabsProps & import("../dataSourceForm/utils").WithModeProps & import("../dataSourceForm/utils").WithFormItemProps & {
132
133
  options?: any;
133
- optionSourceType?: "default" | "custom" | "api" | undefined;
134
+ optionSourceType?: "custom" | "default" | "api" | undefined;
134
135
  labelField: string;
135
136
  valueField: string;
136
137
  extraParams?: Record<string, any> | undefined;
@@ -0,0 +1,18 @@
1
+ import { DataSourceType } from '../provider/dataSource/DataSourceContext';
2
+ export interface UseActionsParams {
3
+ dataSource?: DataSourceType;
4
+ currentValue?: 'server' | 'local';
5
+ __designMode?: string;
6
+ extraParams?: Record<string, any>;
7
+ }
8
+ declare const useActions: ({ dataSource: propsDataSource, currentValue: propsCurrentValue, __designMode, extraParams: propsExtraParams, }?: UseActionsParams) => {
9
+ create: (this: unknown, values: Record<string, any>) => Promise<any>;
10
+ get: (this: unknown) => Promise<any>;
11
+ update: (this: unknown, values: Record<string, any>) => Promise<any>;
12
+ list: (this: unknown, params: {
13
+ page: number;
14
+ pageSize: number;
15
+ }) => Promise<any>;
16
+ destroy: (this: unknown, id: string) => Promise<any>;
17
+ };
18
+ export default useActions;
@@ -70,6 +70,7 @@ function PisellFloorMapLayoutInner(props, ref) {
70
70
  controls = _p$controls === void 0 ? {} : _p$controls,
71
71
  _p$enableHover = p.enableHover,
72
72
  enableHover = _p$enableHover === void 0 ? true : _p$enableHover,
73
+ readModeSelectedItemId = p.readModeSelectedItemId,
73
74
  onItemClick = p.onItemClick,
74
75
  onItemHover = p.onItemHover,
75
76
  onItemLeave = p.onItemLeave,
@@ -797,7 +798,8 @@ function PisellFloorMapLayoutInner(props, ref) {
797
798
  onItemHover: onItemHover,
798
799
  onItemLeave: onItemLeave,
799
800
  getMergedItemWrapperStyle: getMergedItemWrapperStyle,
800
- onInteractionChange: setIsInteractingWithElement
801
+ onInteractionChange: setIsInteractingWithElement,
802
+ readModeSelectedItemId: readModeSelectedItemId
801
803
  }), isFloorMapView && mode === 'edit' && (placeMode === null || placeMode === void 0 ? void 0 : placeMode.type) === 'scene' && /*#__PURE__*/React.createElement("div", {
802
804
  className: placeOverlayClass,
803
805
  style: {
@@ -42,6 +42,10 @@ export interface ItemLayerProps<T extends FloorMapItemBase> {
42
42
  onItemLeave?: (item: T, index: number, e: React.MouseEvent<HTMLElement>) => void;
43
43
  /** 每项外层容器额外样式(与定位样式合并) */
44
44
  getMergedItemWrapperStyle?: (item: T, index: number) => CSSProperties | undefined;
45
+ /**
46
+ * 阅读态:与 {@link rowKey} 解析 id 相等的图元加选中外圈(如详情 Modal 打开时)。
47
+ */
48
+ readModeSelectedItemId?: string | null;
45
49
  /**
46
50
  * 与编辑态一致:在含 `data-pisell-floor-room-scroll-surface` 的区域内按下时置 true,
47
51
  * 用于禁用 Transform 画布平移,避免图元内纵向滑动拖动画布。
@@ -21,6 +21,9 @@ var PREFIX = 'pisell-floor-map-layout';
21
21
 
22
22
  /** 图元内可滚动区标记(如预约房间卡 body / multi-list),与 private-materials 约定一致 */
23
23
  var ROOM_SCROLL_SURFACE_SELECTOR = '[data-pisell-floor-room-scroll-surface]';
24
+
25
+ /** 与 EditableItemLayer `SELECTED_ITEM_STACK_Z` 一致:阅读态选中时抬升,避免邻桌图形盖住描边 */
26
+ var READ_MODE_SELECTED_STACK_Z = 1000000;
24
27
  function getItemKey(item, index, rowKey) {
25
28
  var _rowKey;
26
29
  if (!rowKey) return item.id;
@@ -73,6 +76,7 @@ export function ItemLayer(props) {
73
76
  onItemLeave = props.onItemLeave,
74
77
  getMergedItemWrapperStyle = props.getMergedItemWrapperStyle,
75
78
  onInteractionChange = props.onInteractionChange,
79
+ readModeSelectedItemId = props.readModeSelectedItemId,
76
80
  className = props.className;
77
81
 
78
82
  /** 触控/指针在房间卡滚动区内按下时禁用画布 pan,松手恢复 */
@@ -137,7 +141,7 @@ export function ItemLayer(props) {
137
141
  return ((_a$zIndex = a.zIndex) !== null && _a$zIndex !== void 0 ? _a$zIndex : 0) - ((_b$zIndex = b.zIndex) !== null && _b$zIndex !== void 0 ? _b$zIndex : 0);
138
142
  });
139
143
  return sorted.map(function (item, index) {
140
- var _item$zIndex;
144
+ var _item$zIndex, _item$zIndex2;
141
145
  var left;
142
146
  var top;
143
147
  var width;
@@ -159,9 +163,10 @@ export function ItemLayer(props) {
159
163
  }
160
164
  var key = getItemKey(item, index, rowKey);
161
165
  var shapeStyle = getShapeStyle(item.shape);
166
+ var selectedRead = readModeSelectedItemId != null && String(readModeSelectedItemId).trim() !== '' && key === String(readModeSelectedItemId);
162
167
  return /*#__PURE__*/React.createElement("div", {
163
168
  key: key,
164
- className: classNames("".concat(PREFIX, "-item"), _defineProperty(_defineProperty({}, "".concat(PREFIX, "-item-hoverable"), enableHover), "".concat(PREFIX, "-item-hover-outline"), enableHover && itemHoverOutline)),
169
+ className: classNames("".concat(PREFIX, "-item"), _defineProperty(_defineProperty(_defineProperty({}, "".concat(PREFIX, "-item-hoverable"), enableHover), "".concat(PREFIX, "-item-hover-outline"), enableHover && itemHoverOutline), "".concat(PREFIX, "-item-read-selected"), selectedRead)),
165
170
  style: _objectSpread(_objectSpread({
166
171
  position: 'absolute',
167
172
  left: left,
@@ -169,7 +174,7 @@ export function ItemLayer(props) {
169
174
  width: width,
170
175
  height: height,
171
176
  boxSizing: 'border-box',
172
- zIndex: (_item$zIndex = item.zIndex) !== null && _item$zIndex !== void 0 ? _item$zIndex : 0
177
+ zIndex: selectedRead ? READ_MODE_SELECTED_STACK_Z + ((_item$zIndex = item.zIndex) !== null && _item$zIndex !== void 0 ? _item$zIndex : 0) : (_item$zIndex2 = item.zIndex) !== null && _item$zIndex2 !== void 0 ? _item$zIndex2 : 0
173
178
  }, shapeStyle), getMergedItemWrapperStyle === null || getMergedItemWrapperStyle === void 0 ? void 0 : getMergedItemWrapperStyle(item, index)),
174
179
  onClick: function onClick(e) {
175
180
  return onItemClick === null || onItemClick === void 0 ? void 0 : onItemClick(item, index, e);
@@ -184,7 +189,7 @@ export function ItemLayer(props) {
184
189
  onTouchStartCapture: handleItemTouchStartCapture
185
190
  }, renderItem(item, index));
186
191
  });
187
- }, [items, renderItem, rowKey, cellSize, itemUnit, itemGap, enableHover, itemHoverOutline, onItemClick, onItemHover, onItemLeave, getMergedItemWrapperStyle, handleItemPointerDownCapture, handleItemTouchStartCapture]);
192
+ }, [items, renderItem, rowKey, cellSize, itemUnit, itemGap, enableHover, itemHoverOutline, onItemClick, onItemHover, onItemLeave, getMergedItemWrapperStyle, handleItemPointerDownCapture, handleItemTouchStartCapture, readModeSelectedItemId]);
188
193
  return /*#__PURE__*/React.createElement("div", {
189
194
  className: classNames("".concat(PREFIX, "-item-layer"), className),
190
195
  style: {
@@ -13,10 +13,17 @@
13
13
 
14
14
  /** hover 描边与编辑态选中一致(见 EditableItemLayer:`pisell-floor-map-layout-editable-item-selected`) */
15
15
 
16
- &-hoverable&-hover-outline:hover {
16
+ // &-hoverable&-hover-outline:hover {
17
+ // outline: 3px solid var(--fmap-primary, #1677ff);
18
+ // outline-offset: 0;
19
+ // box-shadow: 0 0 0 1px rgba(22, 119, 255, 0.25);
20
+ // z-index: 1;
21
+ // }
22
+
23
+ /** 阅读态:详情弹层等打开时由业务传入 `readModeSelectedItemId`,与编辑态选中描边一致 */
24
+ &-read-selected {
17
25
  outline: 3px solid var(--fmap-primary, #1677ff);
18
26
  outline-offset: 0;
19
27
  box-shadow: 0 0 0 1px rgba(22, 119, 255, 0.25);
20
- z-index: 1;
21
28
  }
22
29
  }