UNPKG

@schema-render/search-table-react

Version:
309 lines (308 loc) 10.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, /** * 搜索栏数据处理 */ "default", { enumerable: true, get: function() { return useSearch; } }); var _jsxruntime = require("react/jsx-runtime"); var _corereact = require("@schema-render/core-react"); var _searchreact = /*#__PURE__*/ _interop_require_default(require("@schema-render/search-react")); var _react = require("react"); function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _async_to_generator(fn) { return function() { var self = this, args = arguments; return new Promise(function(resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } function _define_property(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _object_spread(target) { for(var i = 1; i < arguments.length; i++){ var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === "function") { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function(key) { _define_property(target, key, source[key]); }); } return target; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function(sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _object_spread_props(target, source) { source = source != null ? source : {}; if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function(key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } function _ts_generator(thisArg, body) { var f, y, t, g, _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function(v) { return step([ n, v ]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while(_)try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [ op[0] & 2, t.value ]; switch(op[0]){ case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [ 0 ]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [ 6, e ]; y = 0; } finally{ f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } } var hasOwnProperty = _corereact.utils.hasOwnProperty; function useSearch(param) { var locale = param.locale, loading = param.loading, search = param.search, searchValueRef = param.searchValueRef, runRequest = param.runRequest, updateScrollY = param.updateScrollY; var searchProps = search === false ? {} : search; var searchRef = (0, _react.useRef)(null); var forceUpdate = (0, _corereact.useForceUpdate)().forceUpdate; // 是否受控模式,存在 value 字段即为受控模式 var isControlled = hasOwnProperty(searchProps, 'value'); if (isControlled) { var _searchProps_value; searchValueRef.current = (_searchProps_value = searchProps.value) !== null && _searchProps_value !== void 0 ? _searchProps_value : {}; } // 搜索数据变化事件 var handleSearchChange = (0, _corereact.useMemoizedFn)(function(value, e) { var _searchProps_onChange; // 解构,避免外部 onChange 影响 searchValueRef.current = _object_spread({}, value); // 非受控模式下内部更新,受控模式下由应用层父组件触发更新 if (!isControlled) { forceUpdate(); } (_searchProps_onChange = searchProps.onChange) === null || _searchProps_onChange === void 0 ? void 0 : _searchProps_onChange.call(searchProps, value, e); }); // 重置事件 var handleSearchReset = (0, _corereact.useMemoizedFn)(/*#__PURE__*/ function() { var _ref = _async_to_generator(function(value) { var _searchProps_onReset; return _ts_generator(this, function(_state) { switch(_state.label){ case 0: searchValueRef.current = _object_spread({}, value); // 外部事件 return [ 4, (_searchProps_onReset = searchProps.onReset) === null || _searchProps_onReset === void 0 ? void 0 : _searchProps_onReset.call(searchProps, value) ]; case 1: _state.sent(); // 发送请求,重置时,分页重置为第一页 return [ 4, runRequest({ current: 1 }) ]; case 2: _state.sent(); return [ 2 ]; } }); }); return function(value) { return _ref.apply(this, arguments); }; }()); // 提交事件 var handleSearchSubmit = (0, _corereact.useMemoizedFn)(/*#__PURE__*/ function() { var _ref = _async_to_generator(function(value) { var _searchProps_onSubmit; return _ts_generator(this, function(_state) { switch(_state.label){ case 0: return [ 4, (_searchProps_onSubmit = searchProps.onSubmit) === null || _searchProps_onSubmit === void 0 ? void 0 : _searchProps_onSubmit.call(searchProps, value) ]; case 1: _state.sent(); return [ 4, runRequest() ]; case 2: _state.sent(); return [ 2 ]; } }); }); return function(value) { return _ref.apply(this, arguments); }; }()); // 收起、展开事件 var handleToggleCollapsed = (0, _corereact.useMemoizedFn)(function(isCollapsed) { var _searchProps_onToggleCollapsed; (_searchProps_onToggleCollapsed = searchProps.onToggleCollapsed) === null || _searchProps_onToggleCollapsed === void 0 ? void 0 : _searchProps_onToggleCollapsed.call(searchProps, isCollapsed); // 更新表格高度 updateScrollY(0, true); }); var searchNodeHolder = search ? /*#__PURE__*/ (0, _jsxruntime.jsx)(_searchreact.default, _object_spread_props(_object_spread({}, search), { locale: search.locale || locale, rootStyle: _object_spread({ marginBottom: 16 }, search.rootStyle), ref: searchRef, disabled: search.disabled || loading, value: searchValueRef.current, onChange: handleSearchChange, onReset: handleSearchReset, onSubmit: handleSearchSubmit, onToggleCollapsed: handleToggleCollapsed })) : null; return { searchNodeHolder: searchNodeHolder, searchRef: searchRef }; }