@pisell/materials 6.4.7 → 6.4.9
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.
- package/build/lowcode/assets-daily.json +11 -11
- package/build/lowcode/assets-dev.json +2 -2
- package/build/lowcode/assets-prod.json +11 -11
- package/build/lowcode/index.js +1 -1
- package/build/lowcode/meta.js +7 -7
- package/build/lowcode/preview.js +146 -146
- package/build/lowcode/render/default/view.css +1 -1
- package/build/lowcode/render/default/view.js +24 -23
- package/build/lowcode/view.css +1 -1
- package/build/lowcode/view.js +25 -24
- package/es/components/auto-resize-text/auto-text-size-standalone.d.ts +20 -0
- package/es/components/auto-resize-text/auto-text-size-standalone.js +258 -0
- package/es/components/auto-resize-text/index.d.ts +6 -0
- package/es/components/auto-resize-text/index.js +40 -0
- package/es/components/dataSourceComponents/dataSourceTable/BaseTable.js +11 -4
- package/es/components/dataSourceComponents/dataSourceTable/filter/index.d.ts +1 -0
- package/es/components/dataSourceComponents/dataSourceTable/filter/index.js +7 -2
- package/es/components/dataSourceComponents/dataSourceTable/hooks/useTableProps.d.ts +6 -7
- package/es/components/dataSourceComponents/dataSourceTable/hooks/useTableProps.js +11 -4
- package/es/components/dataSourceComponents/dataSourceTable/hooks/useTableQuery.d.ts +2 -1
- package/es/components/dataSourceComponents/dataSourceTable/hooks/useTableQuery.js +92 -6
- package/es/components/dataSourceComponents/dataSourceTable/type.d.ts +5 -0
- package/es/components/filter/types.d.ts +2 -0
- package/es/components/keyboard/index.d.ts +22 -0
- package/es/components/keyboard/index.js +159 -0
- package/es/components/keyboard/index.less +44 -0
- package/es/components/pisellQRScanner/index.d.ts +0 -13
- package/es/components/pisellQRScanner/index.js +0 -8
- package/es/components/pisellWalletPassCard/index.d.ts +1 -1
- package/es/components/pisellWalletPassCard/index.js +2 -1
- package/es/components/productCard/cartSkuCard/components/packages/utils.d.ts +1 -1
- package/es/components/productCard/cartSkuCard/components/swipeAction/index.d.ts +1 -0
- package/es/components/productCard/cartSkuCard/components/swipeAction/index.js +73 -5
- package/es/components/productCard/cartSkuCard/components/swipeAction/index.less +39 -0
- package/es/components/productCard/cartSkuCard/index.js +2 -11
- package/es/components/productCard/components/Packages/utils.d.ts +1 -1
- package/es/components/table/Table/utils.d.ts +1 -1
- package/es/components/table/Table/utils.js +22 -1
- package/es/components/table/hooks/useTableSetting.d.ts +3 -4
- package/es/components/table/hooks/useTableSetting.js +113 -5
- package/es/components/table/index.js +14 -3
- package/es/components/table/types.d.ts +17 -0
- package/es/components/virtual-keyboard/BaseNumberKeyboard/Presets.d.ts +5 -1
- package/es/components/virtual-keyboard/BaseNumberKeyboard/Presets.js +21 -7
- package/es/components/virtual-keyboard/BaseNumberKeyboard/Presets.less +9 -5
- package/es/components/virtual-keyboard/BaseNumberKeyboard/index.d.ts +4 -0
- package/es/components/virtual-keyboard/BaseNumberKeyboard/index.js +44 -25
- package/es/components/virtualInput/BaseVirtualInput/index.d.ts +40 -0
- package/es/components/virtualInput/BaseVirtualInput/index.js +163 -0
- package/es/components/virtualInput/BaseVirtualInput/index.less +78 -0
- package/es/components/virtualInput/index.d.ts +24 -0
- package/es/components/virtualInput/index.js +60 -0
- package/es/components/virtualInput/index.less +42 -0
- package/es/index.d.ts +2 -0
- package/es/index.js +3 -1
- package/es/locales/en-US.d.ts +1 -0
- package/es/locales/en-US.js +1 -0
- package/es/locales/zh-CN.d.ts +1 -0
- package/es/locales/zh-CN.js +1 -0
- package/es/locales/zh-TW.d.ts +1 -0
- package/es/locales/zh-TW.js +1 -0
- package/es/utils/platform.d.ts +1 -1
- package/lib/components/auto-resize-text/auto-text-size-standalone.d.ts +20 -0
- package/lib/components/auto-resize-text/auto-text-size-standalone.js +273 -0
- package/lib/components/auto-resize-text/index.d.ts +6 -0
- package/lib/components/auto-resize-text/index.js +71 -0
- package/lib/components/dataSourceComponents/dataSourceTable/BaseTable.js +8 -2
- package/lib/components/dataSourceComponents/dataSourceTable/filter/index.d.ts +1 -0
- package/lib/components/dataSourceComponents/dataSourceTable/filter/index.js +7 -2
- package/lib/components/dataSourceComponents/dataSourceTable/hooks/useTableProps.d.ts +6 -7
- package/lib/components/dataSourceComponents/dataSourceTable/hooks/useTableProps.js +11 -4
- package/lib/components/dataSourceComponents/dataSourceTable/hooks/useTableQuery.d.ts +2 -1
- package/lib/components/dataSourceComponents/dataSourceTable/hooks/useTableQuery.js +78 -7
- package/lib/components/dataSourceComponents/dataSourceTable/type.d.ts +5 -0
- package/lib/components/filter/types.d.ts +2 -0
- package/lib/components/keyboard/index.d.ts +22 -0
- package/lib/components/keyboard/index.js +223 -0
- package/lib/components/keyboard/index.less +44 -0
- package/lib/components/pisellQRScanner/index.d.ts +0 -13
- package/lib/components/pisellWalletPassCard/index.d.ts +1 -1
- package/lib/components/pisellWalletPassCard/index.js +2 -1
- package/lib/components/productCard/cartSkuCard/components/packages/utils.d.ts +1 -1
- package/lib/components/productCard/cartSkuCard/components/swipeAction/index.d.ts +1 -0
- package/lib/components/productCard/cartSkuCard/components/swipeAction/index.js +45 -11
- package/lib/components/productCard/cartSkuCard/components/swipeAction/index.less +39 -0
- package/lib/components/productCard/cartSkuCard/index.js +2 -13
- package/lib/components/productCard/components/Packages/utils.d.ts +1 -1
- package/lib/components/table/Table/utils.d.ts +1 -1
- package/lib/components/table/Table/utils.js +18 -1
- package/lib/components/table/hooks/useTableSetting.d.ts +3 -4
- package/lib/components/table/hooks/useTableSetting.js +114 -4
- package/lib/components/table/index.js +12 -1
- package/lib/components/table/types.d.ts +17 -0
- package/lib/components/virtual-keyboard/BaseNumberKeyboard/Presets.d.ts +5 -1
- package/lib/components/virtual-keyboard/BaseNumberKeyboard/Presets.js +19 -2
- package/lib/components/virtual-keyboard/BaseNumberKeyboard/Presets.less +9 -5
- package/lib/components/virtual-keyboard/BaseNumberKeyboard/index.d.ts +4 -0
- package/lib/components/virtual-keyboard/BaseNumberKeyboard/index.js +45 -27
- package/lib/components/virtualInput/BaseVirtualInput/index.d.ts +40 -0
- package/lib/components/virtualInput/BaseVirtualInput/index.js +179 -0
- package/lib/components/virtualInput/BaseVirtualInput/index.less +78 -0
- package/lib/components/virtualInput/index.d.ts +24 -0
- package/lib/components/virtualInput/index.js +102 -0
- package/lib/components/virtualInput/index.less +42 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.js +6 -0
- package/lib/locales/en-US.d.ts +1 -0
- package/lib/locales/en-US.js +1 -0
- package/lib/locales/zh-CN.d.ts +1 -0
- package/lib/locales/zh-CN.js +1 -0
- package/lib/locales/zh-TW.d.ts +1 -0
- package/lib/locales/zh-TW.js +1 -0
- package/lib/utils/platform.d.ts +1 -1
- package/lowcode/data-source-table/meta.ts +239 -0
- package/lowcode/table/meta.ts +104 -0
- package/package.json +1 -1
- package/dist/umd/materials.min.css +0 -1
- package/dist/umd/materials.min.js +0 -1
- package/dist/umd/static/DotsSix.57d66266.svg +0 -1
- package/dist/umd/static/arrow-left.e542294f.svg +0 -1
- package/dist/umd/static/arrow-right.763f03e0.svg +0 -1
- package/dist/umd/static/filter-lines.04a54ae9.svg +0 -1
- package/dist/umd/static/help-circle.31c9be40.svg +0 -1
- package/dist/umd/static/switch-vertical-01.7ebe3ba8.svg +0 -1
|
@@ -175,7 +175,7 @@ var CartSkuCard = function CartSkuCard(props) {
|
|
|
175
175
|
}
|
|
176
176
|
return renderA2();
|
|
177
177
|
};
|
|
178
|
-
return /*#__PURE__*/React.createElement(
|
|
178
|
+
return /*#__PURE__*/React.createElement(SwipeAction, {
|
|
179
179
|
closeOnAction: false,
|
|
180
180
|
className: classNames("".concat(PREFIX, "-wrapper")),
|
|
181
181
|
rightActions: _rightActions,
|
|
@@ -187,15 +187,6 @@ var CartSkuCard = function CartSkuCard(props) {
|
|
|
187
187
|
e.stopPropagation();
|
|
188
188
|
onCard === null || onCard === void 0 || onCard(dataSource);
|
|
189
189
|
}
|
|
190
|
-
}, renderContent()))
|
|
191
|
-
className: classNames("".concat(PREFIX, "-wrapper"))
|
|
192
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
193
|
-
className: classNames(PREFIX, "".concat(PREFIX, "-").concat(type)),
|
|
194
|
-
onClick: function onClick(e) {
|
|
195
|
-
e.preventDefault();
|
|
196
|
-
e.stopPropagation();
|
|
197
|
-
onCard === null || onCard === void 0 || onCard(dataSource);
|
|
198
|
-
}
|
|
199
|
-
}, renderContent())));
|
|
190
|
+
}, renderContent()));
|
|
200
191
|
};
|
|
201
192
|
export default CartSkuCard;
|
|
@@ -17,4 +17,4 @@ export declare const minusSign: (item: any, type?: string) => "" | "-";
|
|
|
17
17
|
* @Author: WangHan
|
|
18
18
|
* @Date: 2024-11-22 10:58
|
|
19
19
|
*/
|
|
20
|
-
export declare const _formatAmount: (price?: number, amountSymbol?: string, digit?: number) =>
|
|
20
|
+
export declare const _formatAmount: (price?: number, amountSymbol?: string, digit?: number) => string | number;
|
|
@@ -155,7 +155,7 @@ export declare const getSettingKeyArrByMode: ({ filter, columnSetting, dataSourc
|
|
|
155
155
|
sort?: SortType | undefined;
|
|
156
156
|
mode: "" | "localStorage" | "remote";
|
|
157
157
|
currentViewMode: ModeType;
|
|
158
|
-
}) => ("filter_setting" | "column_setting" | "gallery_setting" | "view_mode" | "group_by" | "order_by")[];
|
|
158
|
+
}) => ("filters" | "filter_setting" | "column_setting" | "gallery_setting" | "view_mode" | "group_by" | "order_by")[];
|
|
159
159
|
export declare const omit: (obj: Record<string, any>, keys: string[]) => Record<string, any>;
|
|
160
160
|
export declare const stringify: (obj: Record<string, any>) => string;
|
|
161
161
|
export {};
|
|
@@ -347,7 +347,28 @@ export var setFormValuesToLocalStorage = function setFormValuesToLocalStorage(_r
|
|
|
347
347
|
* @returns 返回格式化后的表格键值
|
|
348
348
|
*/
|
|
349
349
|
var getTableKey = function getTableKey(tableId) {
|
|
350
|
-
|
|
350
|
+
// 兼容非浏览器环境(如SSR/测试)
|
|
351
|
+
if (typeof window === "undefined" || typeof window.location === "undefined") {
|
|
352
|
+
return "".concat(tableKeyPrefix, "-").concat(tableId);
|
|
353
|
+
}
|
|
354
|
+
var _window$location = window.location,
|
|
355
|
+
pathname = _window$location.pathname,
|
|
356
|
+
search = _window$location.search;
|
|
357
|
+
var appendPath = pathname || "/";
|
|
358
|
+
|
|
359
|
+
// 仅用于读取 memory_key,其余查询参数忽略
|
|
360
|
+
var memoryKey = "";
|
|
361
|
+
try {
|
|
362
|
+
var _params = new URLSearchParams(search || "");
|
|
363
|
+
var mk = _params.get("memory_key");
|
|
364
|
+
if (mk && mk.trim() !== "") {
|
|
365
|
+
memoryKey = mk.trim();
|
|
366
|
+
}
|
|
367
|
+
} catch (e) {
|
|
368
|
+
// 忽略解析异常,降级为仅使用 pathname
|
|
369
|
+
}
|
|
370
|
+
var urlPart = memoryKey ? "".concat(appendPath, "#").concat(memoryKey) : appendPath;
|
|
371
|
+
return "".concat(tableKeyPrefix, "-").concat(tableId, "-").concat(urlPart);
|
|
351
372
|
};
|
|
352
373
|
|
|
353
374
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FilterType } from "../../filter/types";
|
|
2
|
-
import { ColumnSettingType, DataSourceGroupType, GallerySettingType, GridViewType, ModeType, SortType, ExportImportModeType } from "../types";
|
|
2
|
+
import { ColumnSettingType, DataSourceGroupType, GallerySettingType, GridViewType, ModeType, SortType, ExportImportModeType, LocalSettingsType } from "../types";
|
|
3
3
|
declare type UseTableSettingProps = {
|
|
4
4
|
tableId?: string;
|
|
5
5
|
filter: FilterType;
|
|
@@ -12,11 +12,10 @@ declare type UseTableSettingProps = {
|
|
|
12
12
|
gallery?: GallerySettingType;
|
|
13
13
|
currentSettingHash: string;
|
|
14
14
|
exportImport?: ExportImportModeType;
|
|
15
|
+
localSettings?: LocalSettingsType;
|
|
15
16
|
};
|
|
16
17
|
declare const useTableSetting: (params: UseTableSettingProps) => {
|
|
17
18
|
setTableSetting: (values: Record<string, any>) => void;
|
|
18
|
-
tableSetting:
|
|
19
|
-
[x: string]: any;
|
|
20
|
-
};
|
|
19
|
+
tableSetting: any;
|
|
21
20
|
};
|
|
22
21
|
export default useTableSetting;
|
|
@@ -5,8 +5,9 @@ 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 { useMemo } from "react";
|
|
8
|
-
import { getSettingKeyArrByMode, getTableSettingByCurrentViewMode, getTableSettingFromLocalStorage, mergeColumnSetting, mergeFilterSetting, setFormValuesToLocalStorage } from "../Table/utils";
|
|
8
|
+
import { getSettingKeyArrByMode, getTableSettingByCurrentViewMode, getTableSettingFromLocalStorage, mergeColumnSetting, mergeFilterSetting, setTableSettingToLocalStorage, setFormValuesToLocalStorage } from "../Table/utils";
|
|
9
9
|
import { useMemoizedFn } from "ahooks";
|
|
10
|
+
import React from "react";
|
|
10
11
|
var useTableSetting = function useTableSetting(params) {
|
|
11
12
|
var tableId = params.tableId,
|
|
12
13
|
filter = params.filter,
|
|
@@ -18,7 +19,8 @@ var useTableSetting = function useTableSetting(params) {
|
|
|
18
19
|
propsColumns = params.columns,
|
|
19
20
|
gallery = params.gallery,
|
|
20
21
|
currentSettingHash = params.currentSettingHash,
|
|
21
|
-
exportImport = params.exportImport
|
|
22
|
+
exportImport = params.exportImport,
|
|
23
|
+
localSettings = params.localSettings;
|
|
22
24
|
var columnsMap = useMemo(function () {
|
|
23
25
|
return new Map(propsColumns.map(function (item) {
|
|
24
26
|
return [item.key, item];
|
|
@@ -60,7 +62,8 @@ var useTableSetting = function useTableSetting(params) {
|
|
|
60
62
|
* 获取需要本地存储的 keyArr
|
|
61
63
|
*/
|
|
62
64
|
var localStorageSettingKeyArr = useMemo(function () {
|
|
63
|
-
|
|
65
|
+
var _localSettings$scope;
|
|
66
|
+
var keys = getSettingKeyArrByMode({
|
|
64
67
|
filter: filter,
|
|
65
68
|
columnSetting: columnSetting,
|
|
66
69
|
dataSourceGroup: dataSourceGroup,
|
|
@@ -68,6 +71,13 @@ var useTableSetting = function useTableSetting(params) {
|
|
|
68
71
|
mode: "localStorage",
|
|
69
72
|
currentViewMode: currentViewMode
|
|
70
73
|
});
|
|
74
|
+
// 本地记忆:filters 范围 -> 存储到 filter 字段
|
|
75
|
+
if (localSettings !== null && localSettings !== void 0 && localSettings.enable && (_localSettings$scope = localSettings.scope) !== null && _localSettings$scope !== void 0 && _localSettings$scope.includes("filters")) {
|
|
76
|
+
if (!keys.includes("filters")) {
|
|
77
|
+
keys.push("filters");
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return keys;
|
|
71
81
|
}, [tableId, filter, columnSetting, dataSourceGroup, sort, currentViewMode]);
|
|
72
82
|
var defaultKeyArr = useMemo(function () {
|
|
73
83
|
return getSettingKeyArrByMode({
|
|
@@ -117,6 +127,8 @@ var useTableSetting = function useTableSetting(params) {
|
|
|
117
127
|
compactMode: (mergedSetting === null || mergedSetting === void 0 || (_mergedSetting$item3 = mergedSetting[item]) === null || _mergedSetting$item3 === void 0 ? void 0 : _mergedSetting$item3.compactMode) || defaultGalleryCoverSetting.compactMode,
|
|
118
128
|
isShowLabel: (_mergedSetting$item$i = mergedSetting === null || mergedSetting === void 0 || (_mergedSetting$item4 = mergedSetting[item]) === null || _mergedSetting$item4 === void 0 ? void 0 : _mergedSetting$item4.isShowLabel) !== null && _mergedSetting$item$i !== void 0 ? _mergedSetting$item$i : defaultGalleryCoverSetting.isShowLabel
|
|
119
129
|
});
|
|
130
|
+
} else if (item === "filters") {
|
|
131
|
+
setting[item] = (mergedSetting === null || mergedSetting === void 0 ? void 0 : mergedSetting[item]) || {};
|
|
120
132
|
} else {
|
|
121
133
|
setting[item] = mergedSetting === null || mergedSetting === void 0 ? void 0 : mergedSetting[item];
|
|
122
134
|
}
|
|
@@ -158,17 +170,113 @@ var useTableSetting = function useTableSetting(params) {
|
|
|
158
170
|
* @param values
|
|
159
171
|
*/
|
|
160
172
|
var setTableSetting = useMemoizedFn(function (values) {
|
|
173
|
+
var _localSettings$scope2;
|
|
174
|
+
// 计算需要存储的 filter 值(仅当开启本地记忆且包含 filters 时)
|
|
175
|
+
var valuesForSave = values;
|
|
176
|
+
if (localSettings !== null && localSettings !== void 0 && localSettings.enable && (_localSettings$scope2 = localSettings.scope) !== null && _localSettings$scope2 !== void 0 && _localSettings$scope2.includes("filters")) {
|
|
177
|
+
var excluded = new Set((localSettings === null || localSettings === void 0 ? void 0 : localSettings.excludedFilterFields) || []);
|
|
178
|
+
var filterValue = {};
|
|
179
|
+
((filter === null || filter === void 0 ? void 0 : filter.list) || []).forEach(function (item) {
|
|
180
|
+
var rawName = item === null || item === void 0 ? void 0 : item.name;
|
|
181
|
+
if (!rawName) return;
|
|
182
|
+
var key = Array.isArray(rawName) ? rawName.join(",") : String(rawName);
|
|
183
|
+
if (excluded.has(key)) return;
|
|
184
|
+
if (values.hasOwnProperty(key)) {
|
|
185
|
+
filterValue[key] = values[key];
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
valuesForSave = _objectSpread(_objectSpread({}, values), {}, {
|
|
189
|
+
filters: filterValue
|
|
190
|
+
});
|
|
191
|
+
}
|
|
161
192
|
setFormValuesToLocalStorage({
|
|
162
193
|
tableId: tableId,
|
|
163
|
-
allValues:
|
|
194
|
+
allValues: valuesForSave,
|
|
164
195
|
keys: localStorageSettingKeyArr,
|
|
165
196
|
currentViewMode: currentViewMode,
|
|
166
197
|
currentSettingHash: currentSettingHash
|
|
167
198
|
});
|
|
168
199
|
});
|
|
169
200
|
var tableSetting = useMemo(function () {
|
|
170
|
-
|
|
201
|
+
var _localSettings$scope3;
|
|
202
|
+
var merged = _objectSpread(_objectSpread({}, tableLocalSetting), defaultTableSetting);
|
|
203
|
+
// 将本地记忆的 filter 扁平化注入初始表单值(不改变存储结构)
|
|
204
|
+
if (localSettings !== null && localSettings !== void 0 && localSettings.enable && (_localSettings$scope3 = localSettings.scope) !== null && _localSettings$scope3 !== void 0 && _localSettings$scope3.includes("filters")) {
|
|
205
|
+
var persistedFilter = tableLocalSetting === null || tableLocalSetting === void 0 ? void 0 : tableLocalSetting.filters;
|
|
206
|
+
if (persistedFilter && _typeof(persistedFilter) === "object") {
|
|
207
|
+
return _objectSpread(_objectSpread({}, merged), persistedFilter);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
return merged;
|
|
171
211
|
}, [tableLocalSetting, defaultTableSetting]);
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* 当刷新后获得新的 localSettings(scope 或 excludedFilterFields 变化)时,
|
|
215
|
+
* 根据最新规则调整已存储的 filters
|
|
216
|
+
*/
|
|
217
|
+
// 对本地已存储 filters 做一次对齐(仅在必要时写回)
|
|
218
|
+
useMemo(function () {
|
|
219
|
+
try {
|
|
220
|
+
var _localSettings$scope4;
|
|
221
|
+
if (!tableId) return;
|
|
222
|
+
var current = getTableSettingByCurrentViewMode(tableId, currentViewMode) || {};
|
|
223
|
+
var persistedFilters = (current === null || current === void 0 ? void 0 : current.filters) || {};
|
|
224
|
+
var nextFilters = _objectSpread({}, persistedFilters);
|
|
225
|
+
var shouldUpdate = false;
|
|
226
|
+
var enableFiltersMemory = !!(localSettings !== null && localSettings !== void 0 && localSettings.enable && (_localSettings$scope4 = localSettings.scope) !== null && _localSettings$scope4 !== void 0 && _localSettings$scope4.includes("filters"));
|
|
227
|
+
if (!enableFiltersMemory) {
|
|
228
|
+
if (Object.keys(persistedFilters || {}).length > 0) {
|
|
229
|
+
nextFilters = {};
|
|
230
|
+
shouldUpdate = true;
|
|
231
|
+
}
|
|
232
|
+
} else {
|
|
233
|
+
var names = new Set();
|
|
234
|
+
if ( /*#__PURE__*/React.isValidElement(filter)) {
|
|
235
|
+
names = new Set(((filter === null || filter === void 0 ? void 0 : filter.__items) || []).filter(function (item) {
|
|
236
|
+
return !item.isHidden;
|
|
237
|
+
}).map(function (item) {
|
|
238
|
+
var rawName = item === null || item === void 0 ? void 0 : item.value;
|
|
239
|
+
if (!rawName) return undefined;
|
|
240
|
+
return Array.isArray(rawName) ? rawName.join(",") : String(rawName);
|
|
241
|
+
}));
|
|
242
|
+
} else {
|
|
243
|
+
names = new Set(((filter === null || filter === void 0 ? void 0 : filter.list) || []).map(function (item) {
|
|
244
|
+
var rawName = item === null || item === void 0 ? void 0 : item.name;
|
|
245
|
+
if (!rawName) return undefined;
|
|
246
|
+
return Array.isArray(rawName) ? rawName.join(",") : String(rawName);
|
|
247
|
+
}).filter(Boolean));
|
|
248
|
+
}
|
|
249
|
+
var excluded = new Set((localSettings === null || localSettings === void 0 ? void 0 : localSettings.excludedFilterFields) || []);
|
|
250
|
+
var allowed = new Set(Array.from(names).filter(function (k) {
|
|
251
|
+
return !excluded.has(k);
|
|
252
|
+
}));
|
|
253
|
+
var filtered = {};
|
|
254
|
+
Object.keys(persistedFilters || {}).forEach(function (k) {
|
|
255
|
+
if (allowed.has(k)) {
|
|
256
|
+
filtered[k] = persistedFilters[k];
|
|
257
|
+
} else {
|
|
258
|
+
shouldUpdate = true;
|
|
259
|
+
}
|
|
260
|
+
});
|
|
261
|
+
if (Object.keys(filtered).length !== Object.keys(persistedFilters || {}).length) {
|
|
262
|
+
shouldUpdate = true;
|
|
263
|
+
}
|
|
264
|
+
nextFilters = filtered;
|
|
265
|
+
}
|
|
266
|
+
if (shouldUpdate) {
|
|
267
|
+
setTableSettingToLocalStorage({
|
|
268
|
+
tableId: tableId,
|
|
269
|
+
tableSettingObj: {
|
|
270
|
+
filters: nextFilters
|
|
271
|
+
},
|
|
272
|
+
currentViewMode: currentViewMode,
|
|
273
|
+
currentSettingHash: currentSettingHash
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
} catch (e) {
|
|
277
|
+
// ignore
|
|
278
|
+
}
|
|
279
|
+
}, []);
|
|
172
280
|
return {
|
|
173
281
|
setTableSetting: setTableSetting,
|
|
174
282
|
tableSetting: tableSetting
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
-
var _excluded = ["dataSource", "columns", "dispatch", "style", "filter", "sort", "buttons", "actionButtons", "title", "showTitle", "subTitle", "showSubTitle", "summary", "onValuesChange", "columnSetting", "dataSourceGroup", "view", "gallery", "currentSettingKey", "exportImport", "currentComponentId", "tabs"];
|
|
2
|
+
var _excluded = ["dataSource", "columns", "dispatch", "style", "filter", "sort", "buttons", "actionButtons", "title", "showTitle", "subTitle", "showSubTitle", "summary", "onValuesChange", "columnSetting", "dataSourceGroup", "localSettings", "view", "gallery", "currentSettingKey", "exportImport", "currentComponentId", "tabs"];
|
|
3
3
|
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); }
|
|
4
4
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
5
5
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
@@ -24,7 +24,7 @@ import useEngineContext from "../../hooks/useEngineContext";
|
|
|
24
24
|
import Actions from "./Actions";
|
|
25
25
|
import Header from "./Header";
|
|
26
26
|
import Summary from "./Summary";
|
|
27
|
-
import { clearTableSettingToLocalStorage, getCurrentViewModeFromLocalStorage, getHash, getTableSettingFromLocalStorage, mergeColumnSetting, omit, stringify } from "./Table/utils";
|
|
27
|
+
import { clearTableSettingToLocalStorage, getCurrentViewModeFromLocalStorage, getTableSettingByCurrentViewMode, getHash, getTableSettingFromLocalStorage, mergeColumnSetting, omit, stringify } from "./Table/utils";
|
|
28
28
|
import View from "./View";
|
|
29
29
|
import useTableSetting from "./hooks/useTableSetting";
|
|
30
30
|
import useTransDataSourceGroupSetting from "./hooks/useTransDataSourceGroupSetting";
|
|
@@ -58,6 +58,7 @@ var GridView = Provider( /*#__PURE__*/forwardRef(function (props, ref) {
|
|
|
58
58
|
_onValuesChange = props.onValuesChange,
|
|
59
59
|
columnSetting = props.columnSetting,
|
|
60
60
|
propsDataSourceGroup = props.dataSourceGroup,
|
|
61
|
+
_localSettings = props.localSettings,
|
|
61
62
|
_props$view = props.view,
|
|
62
63
|
view = _props$view === void 0 ? defaultView : _props$view,
|
|
63
64
|
gallery = props.gallery,
|
|
@@ -162,7 +163,8 @@ var GridView = Provider( /*#__PURE__*/forwardRef(function (props, ref) {
|
|
|
162
163
|
view: view,
|
|
163
164
|
currentViewMode: currentViewMode,
|
|
164
165
|
gallery: gallery,
|
|
165
|
-
currentSettingHash: currentSettingHash
|
|
166
|
+
currentSettingHash: currentSettingHash,
|
|
167
|
+
localSettings: _localSettings
|
|
166
168
|
}),
|
|
167
169
|
setTableSetting = _useTableSetting.setTableSetting,
|
|
168
170
|
tableSetting = _useTableSetting.tableSetting;
|
|
@@ -246,6 +248,15 @@ var GridView = Provider( /*#__PURE__*/forwardRef(function (props, ref) {
|
|
|
246
248
|
useImperativeHandle(ref, function () {
|
|
247
249
|
if (wrapRef.current) {
|
|
248
250
|
wrapRef.current.formInstance = form;
|
|
251
|
+
wrapRef.current.getCachedFilters = function () {
|
|
252
|
+
try {
|
|
253
|
+
if (!tableId) return {};
|
|
254
|
+
var setting = getTableSettingByCurrentViewMode(tableId, currentViewMode);
|
|
255
|
+
return (setting === null || setting === void 0 ? void 0 : setting.filters) || {};
|
|
256
|
+
} catch (e) {
|
|
257
|
+
return {};
|
|
258
|
+
}
|
|
259
|
+
};
|
|
249
260
|
}
|
|
250
261
|
// forwardRef 后需要返回元素才能选中
|
|
251
262
|
return wrapRef.current;
|
|
@@ -191,6 +191,21 @@ export declare type ExportImportType = {
|
|
|
191
191
|
apiUrl?: ApiProps;
|
|
192
192
|
otherParams?: any;
|
|
193
193
|
};
|
|
194
|
+
/**
|
|
195
|
+
* 设置记忆范围
|
|
196
|
+
*/
|
|
197
|
+
export declare type LocalSettingsScope = "filters" | "sorting" | "columns";
|
|
198
|
+
/**
|
|
199
|
+
* 本地记忆设置
|
|
200
|
+
*/
|
|
201
|
+
export declare type LocalSettingsType = {
|
|
202
|
+
/** 启用设置记忆 */
|
|
203
|
+
enable: boolean;
|
|
204
|
+
/** 记忆范围 */
|
|
205
|
+
scope: LocalSettingsScope[];
|
|
206
|
+
/** 不需要记忆的筛选字段(当 scope 包含 filters 时生效) */
|
|
207
|
+
excludedFilterFields?: string[];
|
|
208
|
+
};
|
|
194
209
|
export declare type GridViewProps = {
|
|
195
210
|
columns: any;
|
|
196
211
|
dataSource: any[];
|
|
@@ -247,5 +262,7 @@ export declare type GridViewProps = {
|
|
|
247
262
|
sortBy?: string;
|
|
248
263
|
}[];
|
|
249
264
|
};
|
|
265
|
+
/** 本地记忆设置 */
|
|
266
|
+
localSettings?: LocalSettingsType;
|
|
250
267
|
};
|
|
251
268
|
export {};
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
import
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './Presets.less';
|
|
2
3
|
export declare type PresetsItem = {
|
|
3
4
|
label: string;
|
|
4
5
|
value: number | string;
|
|
6
|
+
style?: React.CSSProperties;
|
|
7
|
+
onClick?: (item: PresetsItem, _next: () => void) => void;
|
|
8
|
+
render?: (item: PresetsItem) => React.ReactNode;
|
|
5
9
|
};
|
|
6
10
|
export interface PresetsProps {
|
|
7
11
|
presets?: PresetsItem[];
|
|
@@ -3,20 +3,34 @@ import "./Presets.less";
|
|
|
3
3
|
var Presets = function Presets(props) {
|
|
4
4
|
var presets = props.presets,
|
|
5
5
|
onChange = props.onChange;
|
|
6
|
+
var handleItemClick = function handleItemClick(item) {
|
|
7
|
+
if (item.onClick) {
|
|
8
|
+
var _next2 = function _next2() {
|
|
9
|
+
return onChange("".concat(item.value));
|
|
10
|
+
};
|
|
11
|
+
item.onClick(item, _next2);
|
|
12
|
+
} else {
|
|
13
|
+
onChange("".concat(item.value));
|
|
14
|
+
}
|
|
15
|
+
};
|
|
6
16
|
return useMemo(function () {
|
|
7
17
|
if (!(presets !== null && presets !== void 0 && presets.length)) {
|
|
8
18
|
return null;
|
|
9
19
|
}
|
|
10
20
|
return /*#__PURE__*/React.createElement("div", {
|
|
11
21
|
className: "pisell-virtual-keyboard-preset"
|
|
12
|
-
}, presets.map(function (item) {
|
|
13
|
-
|
|
22
|
+
}, presets.map(function (item, index) {
|
|
23
|
+
var _item$render;
|
|
24
|
+
var itemProps = {
|
|
25
|
+
key: index,
|
|
26
|
+
className: 'pisell-virtual-keyboard-preset-item',
|
|
27
|
+
style: item.style,
|
|
14
28
|
onClick: function onClick() {
|
|
15
|
-
return
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
|
|
29
|
+
return handleItemClick(item);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
return /*#__PURE__*/React.createElement("div", itemProps, ((_item$render = item.render) === null || _item$render === void 0 ? void 0 : _item$render.call(item, item)) || item.label);
|
|
19
33
|
}));
|
|
20
|
-
}, [presets]);
|
|
34
|
+
}, [presets, onChange]);
|
|
21
35
|
};
|
|
22
36
|
export default Presets;
|
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
.pisell-virtual-keyboard-preset {
|
|
2
|
-
display:
|
|
2
|
+
display: grid;
|
|
3
|
+
grid-template-columns: repeat(4, 1fr);
|
|
3
4
|
gap: 7px;
|
|
4
|
-
flex-wrap: wrap;
|
|
5
5
|
margin-bottom: 8px;
|
|
6
|
+
|
|
6
7
|
.pisell-virtual-keyboard-preset-item {
|
|
7
8
|
display: flex;
|
|
8
|
-
flex: 1;
|
|
9
9
|
padding: 12px 20px;
|
|
10
10
|
align-items: center;
|
|
11
11
|
justify-content: center;
|
|
12
|
-
height:
|
|
12
|
+
height: 40px;
|
|
13
13
|
border-radius: 8px;
|
|
14
|
-
border: 1px solid var(--Gray-300, #
|
|
14
|
+
border: 1px solid var(--Gray-300, #E9D7FE);
|
|
15
15
|
box-shadow: 0px 1px 2px 0px rgba(16, 24, 40, 0.05);
|
|
16
16
|
background: var(--Primary-25, #FCFAFF);
|
|
17
|
+
font-weight: 600;
|
|
18
|
+
color: #6941C6;
|
|
19
|
+
cursor: pointer;
|
|
20
|
+
position: relative;
|
|
17
21
|
}
|
|
18
22
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { PresetsProps } from './Presets';
|
|
3
|
+
import { KeyboardProps } from '../Keyboard';
|
|
3
4
|
import { RightItemsStyleProps } from '../Amount';
|
|
4
5
|
import './index.less';
|
|
5
6
|
export interface BaseNumberKeyboardProps {
|
|
@@ -16,6 +17,9 @@ export interface BaseNumberKeyboardProps {
|
|
|
16
17
|
presets?: PresetsProps['presets'];
|
|
17
18
|
defaultSelect?: boolean;
|
|
18
19
|
rightItemsStyle?: RightItemsStyleProps;
|
|
20
|
+
customDisplay?: React.ReactNode | ((props: any) => React.ReactNode);
|
|
21
|
+
keyboardProps?: KeyboardProps;
|
|
22
|
+
style?: React.CSSProperties;
|
|
19
23
|
}
|
|
20
24
|
declare const BaseNumberKeyboard: (props: BaseNumberKeyboardProps) => JSX.Element;
|
|
21
25
|
export default BaseNumberKeyboard;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
+
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); }
|
|
2
3
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
4
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
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; }
|
|
@@ -93,7 +94,9 @@ var BaseNumberKeyboard = function BaseNumberKeyboard(props) {
|
|
|
93
94
|
onEnter = props.onEnter,
|
|
94
95
|
presets = props.presets,
|
|
95
96
|
defaultSelect = props.defaultSelect,
|
|
96
|
-
rightItemsStyle = props.rightItemsStyle
|
|
97
|
+
rightItemsStyle = props.rightItemsStyle,
|
|
98
|
+
customDisplay = props.customDisplay,
|
|
99
|
+
style = props.style;
|
|
97
100
|
var _useControllableValue = useControllableValue(props, {
|
|
98
101
|
defaultValue: defaultValue
|
|
99
102
|
}),
|
|
@@ -173,6 +176,8 @@ var BaseNumberKeyboard = function BaseNumberKeyboard(props) {
|
|
|
173
176
|
}
|
|
174
177
|
};
|
|
175
178
|
var handleChangeValue = function handleChangeValue(val) {
|
|
179
|
+
var _val;
|
|
180
|
+
val = typeof val === 'string' ? val : ((_val = val) === null || _val === void 0 || (_val = _val.target) === null || _val === void 0 ? void 0 : _val.value) || '';
|
|
176
181
|
var detail = checkValue(val);
|
|
177
182
|
if (detail) return;
|
|
178
183
|
setValue(val);
|
|
@@ -205,37 +210,51 @@ var BaseNumberKeyboard = function BaseNumberKeyboard(props) {
|
|
|
205
210
|
var handleKeyboardChange = useMemoizedFn(function (val) {
|
|
206
211
|
return (actions[val] || actions.default)(val);
|
|
207
212
|
});
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
renderInput: function renderInput(props) {
|
|
216
|
-
if (isUndefined(props.value) || props.value === '') {
|
|
217
|
-
return /*#__PURE__*/React.createElement(VirtualInput, {
|
|
218
|
-
autoFocus: true,
|
|
219
|
-
placeholder: placeholder,
|
|
220
|
-
value: props.value
|
|
213
|
+
var renderDisplayField = function renderDisplayField() {
|
|
214
|
+
if (customDisplay) {
|
|
215
|
+
if (typeof customDisplay === 'function') {
|
|
216
|
+
return customDisplay({
|
|
217
|
+
value: value,
|
|
218
|
+
onChange: handleChangeValue,
|
|
219
|
+
onValueSelect: setSelect
|
|
221
220
|
});
|
|
222
221
|
}
|
|
223
|
-
return
|
|
224
|
-
},
|
|
225
|
-
showDelete: false,
|
|
226
|
-
onValueSelect: setSelect,
|
|
227
|
-
defaultSelect: defaultSelect,
|
|
228
|
-
style: {
|
|
229
|
-
backgroundColor: (rightItemsStyle === null || rightItemsStyle === void 0 ? void 0 : rightItemsStyle.buttonBackgroundColor) || '#fff',
|
|
230
|
-
color: (rightItemsStyle === null || rightItemsStyle === void 0 ? void 0 : rightItemsStyle.textColor) || '#000000'
|
|
222
|
+
return customDisplay;
|
|
231
223
|
}
|
|
232
|
-
|
|
224
|
+
return /*#__PURE__*/React.createElement(VirtualKeyInput, {
|
|
225
|
+
value: value,
|
|
226
|
+
onChange: function onChange(e) {
|
|
227
|
+
return handleChangeValue(e.target.value);
|
|
228
|
+
},
|
|
229
|
+
renderInput: function renderInput(props) {
|
|
230
|
+
if (isUndefined(props.value) || props.value === '') {
|
|
231
|
+
return /*#__PURE__*/React.createElement(VirtualInput, {
|
|
232
|
+
autoFocus: true,
|
|
233
|
+
placeholder: placeholder,
|
|
234
|
+
value: props.value
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
return (format === null || format === void 0 ? void 0 : format(props.value)) || props.value;
|
|
238
|
+
},
|
|
239
|
+
showDelete: false,
|
|
240
|
+
onValueSelect: setSelect,
|
|
241
|
+
defaultSelect: defaultSelect,
|
|
242
|
+
style: {
|
|
243
|
+
backgroundColor: (rightItemsStyle === null || rightItemsStyle === void 0 ? void 0 : rightItemsStyle.buttonBackgroundColor) || '#fff',
|
|
244
|
+
color: (rightItemsStyle === null || rightItemsStyle === void 0 ? void 0 : rightItemsStyle.textColor) || '#000000'
|
|
245
|
+
}
|
|
246
|
+
});
|
|
247
|
+
};
|
|
248
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
249
|
+
className: "pisell-virtual-keyboard-base",
|
|
250
|
+
style: style
|
|
251
|
+
}, renderDisplayField(), /*#__PURE__*/React.createElement(Presets, {
|
|
233
252
|
presets: presets,
|
|
234
253
|
onChange: handleChangeValue
|
|
235
|
-
}), /*#__PURE__*/React.createElement(Keyboard, {
|
|
254
|
+
}), /*#__PURE__*/React.createElement(Keyboard, _extends({
|
|
236
255
|
items: itemsWithStyle,
|
|
237
256
|
rightItems: rightItems,
|
|
238
257
|
onChange: handleKeyboardChange
|
|
239
|
-
}));
|
|
258
|
+
}, props.keyboardProps || {})));
|
|
240
259
|
};
|
|
241
260
|
export default BaseNumberKeyboard;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './index.less';
|
|
3
|
+
export interface BaseVirtualInputProps {
|
|
4
|
+
/** 输入值 */
|
|
5
|
+
value?: string | React.ReactNode;
|
|
6
|
+
/** 占位符 */
|
|
7
|
+
placeholder?: string;
|
|
8
|
+
/** 是否自动聚焦 */
|
|
9
|
+
autoFocus?: boolean;
|
|
10
|
+
/** 是否禁用 */
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
/** 组件高度,默认60px */
|
|
13
|
+
height?: number | string;
|
|
14
|
+
/** 字体大小,默认48px,如果不设置会根据高度自动计算 */
|
|
15
|
+
fontSize?: number | string;
|
|
16
|
+
/** 聚焦回调 */
|
|
17
|
+
onFocus?: () => void;
|
|
18
|
+
/** 失焦回调 */
|
|
19
|
+
onBlur?: () => void;
|
|
20
|
+
/** 文字位置 */
|
|
21
|
+
textAlign?: 'start' | 'center' | 'end';
|
|
22
|
+
/** 自定义样式 */
|
|
23
|
+
style?: React.CSSProperties;
|
|
24
|
+
/** 自定义类名 */
|
|
25
|
+
className?: string;
|
|
26
|
+
/** showCursor */
|
|
27
|
+
showCursor?: boolean;
|
|
28
|
+
/** 防止失焦的元素选择器或ref */
|
|
29
|
+
preventBlurElements?: Array<string | React.RefObject<HTMLElement>>;
|
|
30
|
+
/** 是否聚焦(受控模式) */
|
|
31
|
+
focused?: boolean;
|
|
32
|
+
}
|
|
33
|
+
export interface BaseVirtualInputRef {
|
|
34
|
+
/** 手动聚焦 */
|
|
35
|
+
focus: () => void;
|
|
36
|
+
/** 手动失焦 */
|
|
37
|
+
blur: () => void;
|
|
38
|
+
}
|
|
39
|
+
declare const BaseVirtualInput: React.ForwardRefExoticComponent<BaseVirtualInputProps & React.RefAttributes<BaseVirtualInputRef>>;
|
|
40
|
+
export default BaseVirtualInput;
|