@lemon-fe/components 1.2.11-alpha.0 → 1.2.11-alpha.2

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.
@@ -1,17 +1,17 @@
1
1
  /// <reference types="react" />
2
2
  import type { ActionsProps } from '../actions';
3
- import type { PaginationType } from '../data-grid/typings';
3
+ import type { DataGridProps } from '../data-grid/typings';
4
4
  import type { FilterProps } from '../filter/typings';
5
- import type { AgGridReactProps } from '@ag-grid-community/react';
6
- interface ContextProps {
7
- /** 目前DataGrid由于是类组件,比较难处理,只支持ag-grid自带的属性 */
8
- DataGrid?: Omit<AgGridReactProps<any>, 'rowSelection' | 'pagination'> & {
9
- pagination?: PaginationType;
10
- };
11
- Filter?: FilterProps<any>;
12
- Actions?: Partial<ActionsProps>;
5
+ import type { SelectViewProps } from '../select-view';
6
+ declare type PropsGetter<T> = ((props: T) => T) | Partial<T>;
7
+ export interface ComponentConfigureContextProps {
8
+ DataGrid?: PropsGetter<DataGridProps<unknown>>;
9
+ Filter?: PropsGetter<FilterProps<unknown>>;
10
+ Actions?: PropsGetter<ActionsProps>;
11
+ SelectView?: PropsGetter<SelectViewProps<unknown, unknown>>;
13
12
  }
14
- export declare const ComponentConfigureContext: import("react").Context<ContextProps>;
15
- export declare const ComponentConfigureProvider: import("react").Provider<ContextProps>;
16
- export declare const ComponentConfigureConsumer: import("react").Consumer<ContextProps>;
13
+ export declare const ComponentConfigureContext: import("react").Context<ComponentConfigureContextProps>;
14
+ export declare const ComponentConfigureProvider: import("react").Provider<ComponentConfigureContextProps>;
15
+ export declare const ComponentConfigureConsumer: import("react").Consumer<ComponentConfigureContextProps>;
16
+ export declare function useComponentDefaultProps<T>(key: keyof ComponentConfigureContextProps, originalProps: T): T;
17
17
  export {};
@@ -1,4 +1,21 @@
1
- import { createContext } from 'react';
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 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
+ 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
+ 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; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
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
+ import { createContext, useContext } from 'react';
2
8
  export var ComponentConfigureContext = /*#__PURE__*/createContext({});
3
9
  export var ComponentConfigureProvider = ComponentConfigureContext.Provider;
4
- export var ComponentConfigureConsumer = ComponentConfigureContext.Consumer;
10
+ export var ComponentConfigureConsumer = ComponentConfigureContext.Consumer;
11
+ export function useComponentDefaultProps(key, originalProps) {
12
+ var defaultProps = useContext(ComponentConfigureContext);
13
+ var componentDefaultProps = defaultProps[key];
14
+ var props = originalProps;
15
+ if (typeof componentDefaultProps === 'function') {
16
+ props = componentDefaultProps(originalProps);
17
+ } else if (componentDefaultProps !== undefined) {
18
+ props = _objectSpread(_objectSpread({}, componentDefaultProps), originalProps);
19
+ }
20
+ return props;
21
+ }
@@ -35,8 +35,8 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
35
35
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
36
36
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
37
37
  import { Spin, Pagination } from 'antd';
38
- import React, { Component, createRef, forwardRef, useContext } from 'react';
39
- import { ComponentConfigureContext } from "../component-configure";
38
+ import React, { Component, createRef, forwardRef } from 'react';
39
+ import { useComponentDefaultProps } from "../component-configure";
40
40
  import { useLocaleReceiver } from "../locale-receiver";
41
41
  import { parseLocalTemplate } from "../locale/locale";
42
42
  import DateEditor from "./cell-editors/date";
@@ -184,7 +184,7 @@ var InternalDataGrid = /*#__PURE__*/function (_Component) {
184
184
  toolPanel: CustomColumnPanel,
185
185
  toolPanelParams: {
186
186
  enableSave: !!_this.props.customColumnPanelStorage,
187
- enableSummary: _this.isClientMode()
187
+ enableSummary: _this.isClientMode() || _this.props.enableCustomColumnSummary
188
188
  }
189
189
  }]
190
190
  });
@@ -1681,7 +1681,7 @@ var InternalDataGrid = /*#__PURE__*/function (_Component) {
1681
1681
  enableCellEditingOnBackspace: true,
1682
1682
  maintainColumnOrder: true,
1683
1683
  suppressCsvExport: true,
1684
- suppressRowClickSelection: gridRowSelection === 'multiple',
1684
+ rowMultiSelectWithClick: gridRowSelection === 'multiple',
1685
1685
  noRowsOverlayComponent: this.NoRowsOverlay,
1686
1686
  getMainMenuItems: this.getMainMenuItems,
1687
1687
  rowBuffer: 20,
@@ -1715,15 +1715,14 @@ var InternalDataGrid = /*#__PURE__*/function (_Component) {
1715
1715
  }]);
1716
1716
  return InternalDataGrid;
1717
1717
  }(Component);
1718
- var DataGrid = /*#__PURE__*/forwardRef(function (props, ref) {
1719
- var _useContext = useContext(ComponentConfigureContext),
1720
- extraProps = _useContext.DataGrid;
1718
+ var DataGrid = /*#__PURE__*/forwardRef(function (originalProps, ref) {
1721
1719
  var _useLocaleReceiver3 = useLocaleReceiver('DataGrid'),
1722
1720
  _useLocaleReceiver4 = _slicedToArray(_useLocaleReceiver3, 1),
1723
1721
  dataGridLocale = _useLocaleReceiver4[0];
1722
+ var props = useComponentDefaultProps('DataGrid', originalProps);
1724
1723
  return /*#__PURE__*/React.createElement(InternalDataGrid, _extends({
1725
1724
  ref: ref
1726
- }, extraProps, props, {
1725
+ }, props, {
1727
1726
  locale: dataGridLocale
1728
1727
  }));
1729
1728
  });
@@ -223,4 +223,8 @@ export interface DataGridProps<TData> extends Omit<AgGridReactProps<TData>, 'row
223
223
  set: (data: CustomColumnData) => Promise<void> | void;
224
224
  get: () => Promise<CustomColumnData | null | undefined> | CustomColumnData | null | undefined;
225
225
  };
226
+ /**
227
+ * @descriptioin 列定制启用汇总
228
+ */
229
+ enableCustomColumnSummary?: boolean;
226
230
  }
@@ -1,15 +1,15 @@
1
1
  /// <reference types="react" />
2
2
  import type { ComponentOption, FilterProps } from './typings';
3
- declare function FilterWrapper<T extends Record<string, any> = Record<string, any>>(props: FilterProps<T>): JSX.Element;
4
- declare namespace FilterWrapper {
3
+ declare function Filter<T extends Record<string, any> = Record<string, any>>(originalProps: FilterProps<T>): JSX.Element;
4
+ declare namespace Filter {
5
5
  var setComponents: (items: ComponentOption[]) => void;
6
6
  var setStorage: <T extends {
7
7
  title: string;
8
8
  value: Record<string | number, any>;
9
9
  }>(getData: (storageKey: string) => T[] | Promise<T[]>, setData: (storageKey: string, data: T[], action: {
10
- type: "set" | "delete";
10
+ type: "delete" | "set";
11
11
  target: T;
12
12
  }) => void | Promise<void>) => void;
13
- var defaultProps: Partial<FilterProps<Record<string, any>>>;
13
+ var defaultProps: Partial<FilterProps<unknown>>;
14
14
  }
15
- export default FilterWrapper;
15
+ export default Filter;
@@ -19,8 +19,8 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
19
19
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
20
20
  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); }
21
21
  import { Button, Checkbox, Form, Input, Popover, Space } from 'antd';
22
- import React, { useEffect, useMemo, useState, useContext } from 'react';
23
- import { ComponentConfigureContext } from "../component-configure";
22
+ import React, { useEffect, useMemo, useState } from 'react';
23
+ import { useComponentDefaultProps } from "../component-configure";
24
24
  import Dropdown from "../dropdown";
25
25
  import DurationPicker from "../duration-picker";
26
26
  import Empty from "../empty";
@@ -93,7 +93,8 @@ function setStorage(getData, setData) {
93
93
  setStorageData = setData;
94
94
  }
95
95
  var defaultData = [];
96
- function Filter(props) {
96
+ function Filter(originalProps) {
97
+ var props = useComponentDefaultProps('Filter', originalProps);
97
98
  var _props$data = props.data,
98
99
  data = _props$data === void 0 ? defaultData : _props$data,
99
100
  defaultValueProp = props.defaultValue,
@@ -631,11 +632,7 @@ function Filter(props) {
631
632
  mask: "url(#filter-down-mask)"
632
633
  }))))))))));
633
634
  }
634
- function FilterWrapper(props) {
635
- var contextProps = useContext(ComponentConfigureContext).Filter;
636
- return /*#__PURE__*/React.createElement(Filter, _extends({}, contextProps, props));
637
- }
638
- FilterWrapper.setComponents = setComponents;
639
- FilterWrapper.setStorage = setStorage;
640
- FilterWrapper.defaultProps = {};
641
- export default FilterWrapper;
635
+ Filter.setComponents = setComponents;
636
+ Filter.setStorage = setStorage;
637
+ Filter.defaultProps = {};
638
+ export default Filter;
@@ -24,7 +24,7 @@ export interface FilterItemType<T = any> {
24
24
 
25
25
  export type ActionType = 'submit' | 'reset';
26
26
 
27
- export interface FilterProps<T extends Record<string, any> = Record<string, any>> {
27
+ export interface FilterProps<T> {
28
28
  data?: FilterItemType<T>[];
29
29
  defaultValue?: T;
30
30
  value?: T;
@@ -2,7 +2,7 @@ import type { CSSProperties, ReactElement } from 'react';
2
2
  import type { ColType, CustomColumnData, DataGridProps, PaginationType, SortType } from '../data-grid/typings';
3
3
  import type { FilterProps } from '../filter/typings';
4
4
  import type { SideBarDef } from '@ag-grid-community/core';
5
- interface Props<RecordType, ParamsType extends Record<string, any>> extends Pick<DataGridProps<RecordType>, 'defaultColDef' | 'rowHeight' | 'cellDisplayFlex' | 'isRowSelectable'> {
5
+ export interface SelectViewProps<RecordType, ParamsType> extends Pick<DataGridProps<RecordType>, 'defaultColDef' | 'rowHeight' | 'cellDisplayFlex' | 'isRowSelectable'> {
6
6
  value?: RecordType[];
7
7
  onChange?: (value: RecordType[], rowDoubleClicked?: boolean) => void;
8
8
  /**
@@ -72,11 +72,5 @@ interface Props<RecordType, ParamsType extends Record<string, any>> extends Pick
72
72
  set: (data: CustomColumnData) => Promise<void> | void;
73
73
  get: () => Promise<CustomColumnData | null | undefined> | CustomColumnData | null | undefined;
74
74
  };
75
- /**
76
- * @description 表格顶部header区域自定义
77
- * @default null
78
- */
79
- header?: ReactElement | null;
80
75
  }
81
- export default function SelectView<RecordType extends Record<string | number, any>, ParamsType extends Record<string, any>>(props: Props<RecordType, ParamsType>): JSX.Element;
82
- export {};
76
+ export default function SelectView<RecordType extends Record<string | number, any>, ParamsType extends Record<string, any>>(originalProps: SelectViewProps<RecordType, ParamsType>): JSX.Element;
@@ -18,6 +18,7 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
18
18
  import { Form, Spin, Tabs } from 'antd';
19
19
  import React, { useEffect, useMemo, useRef, useState } from 'react';
20
20
  import { Resizable } from 'react-resizable';
21
+ import { useComponentDefaultProps } from "../component-configure";
21
22
  import DataGrid from "../data-grid";
22
23
  import Filter from "../filter";
23
24
  import { useLocaleReceiver } from "../locale-receiver";
@@ -25,10 +26,11 @@ import { parseLocalTemplate } from "../locale/locale";
25
26
  import { mergeProp, prefixClassName } from "../utils";
26
27
  import classNames from 'classnames';
27
28
  import { get } from 'lodash';
28
- export default function SelectView(props) {
29
+ export default function SelectView(originalProps) {
29
30
  var emptyValue = useMemo(function () {
30
31
  return [];
31
32
  }, []);
33
+ var props = useComponentDefaultProps('SelectView', originalProps);
32
34
  var value = props.value,
33
35
  onChange = props.onChange,
34
36
  _props$pagination = props.pagination,
@@ -51,9 +53,7 @@ export default function SelectView(props) {
51
53
  isRowSelectable = props.isRowSelectable,
52
54
  checkSearchParams = props.checkSearchParams,
53
55
  sideBar = props.sideBar,
54
- customColumnPanelStorage = props.customColumnPanelStorage,
55
- _props$header = props.header,
56
- headerProp = _props$header === void 0 ? null : _props$header;
56
+ customColumnPanelStorage = props.customColumnPanelStorage;
57
57
  var prefix = prefixClassName("select-view");
58
58
  var _useState = useState(value || emptyValue),
59
59
  _useState2 = _slicedToArray(_useState, 2),
@@ -152,32 +152,30 @@ export default function SelectView(props) {
152
152
  };
153
153
  var headerNode = null;
154
154
  var siderNode = null;
155
- if (filter && filter.data) {
156
- headerNode = /*#__PURE__*/React.createElement(React.Fragment, null, headerProp && /*#__PURE__*/React.createElement("div", {
157
- className: prefix('head-wrapper')
158
- }, headerProp), /*#__PURE__*/React.createElement(Filter, _extends({
159
- simple: true,
160
- autoPlaceholder: true,
161
- form: filterForm
162
- }, filter, {
163
- value: cParams,
164
- onChange: function onChange(val) {
165
- return handleChangeParams(_objectSpread(_objectSpread({}, cParams), val));
166
- }
167
- })));
168
- } else if (headerProp) {
169
- headerNode = headerProp;
170
- }
171
- if (filter && filter.sider) {
172
- siderNode = filter.sider({
173
- /**
174
- * 原则上这里使用cParams也会有问题,不排除Filter中的条件可能会影响Sider的渲染,但此种情况先忽略,尽可能避免这个情况
175
- */
176
- value: cParams,
177
- onChange: function onChange(val) {
178
- handleChangeParams(_objectSpread(_objectSpread(_objectSpread({}, cParams), filterForm.getFieldsValue()), val));
179
- }
180
- });
155
+ if (filter) {
156
+ if (filter.data) {
157
+ headerNode = /*#__PURE__*/React.createElement(Filter, _extends({
158
+ simple: true,
159
+ autoPlaceholder: true,
160
+ form: filterForm
161
+ }, filter, {
162
+ value: cParams,
163
+ onChange: function onChange(val) {
164
+ return handleChangeParams(_objectSpread(_objectSpread({}, cParams), val));
165
+ }
166
+ }));
167
+ }
168
+ if (filter.sider) {
169
+ siderNode = filter.sider({
170
+ /**
171
+ * 原则上这里使用cParams也会有问题,不排除Filter中的条件可能会影响Sider的渲染,但此种情况先忽略,尽可能避免这个情况
172
+ */
173
+ value: cParams,
174
+ onChange: function onChange(val) {
175
+ handleChangeParams(_objectSpread(_objectSpread(_objectSpread({}, cParams), filterForm.getFieldsValue()), val));
176
+ }
177
+ });
178
+ }
181
179
  }
182
180
  var dataKeys = useMemo(function () {
183
181
  return data.map(getRowKey);
@@ -238,8 +236,6 @@ export default function SelectView(props) {
238
236
  handleChangeData([node.id], [node.data], true);
239
237
  }
240
238
  },
241
- rowMultiSelectWithClick: true,
242
- suppressRowClickSelection: false,
243
239
  sideBar: sideBar,
244
240
  rowHeight: rowHeight,
245
241
  defaultColDef: defaultColDef,
@@ -68,12 +68,6 @@
68
68
  margin-top: @padding-md;
69
69
  }
70
70
 
71
- &-head {
72
- &-wrapper {
73
- margin-bottom: 4px;
74
- }
75
- }
76
-
77
71
  &-body {
78
72
  flex: 1;
79
73
  min-height: 0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lemon-fe/components",
3
- "version": "1.2.11-alpha.0",
3
+ "version": "1.2.11-alpha.2",
4
4
  "description": "> TODO: description",
5
5
  "homepage": "",
6
6
  "license": "ISC",
@@ -27,7 +27,7 @@
27
27
  "@ag-grid-community/react": "29.2.0",
28
28
  "@ag-grid-community/styles": "29.2.0",
29
29
  "@dnd-kit/core": "^6.0.8",
30
- "@lemon-fe/hooks": "^1.2.0",
30
+ "@lemon-fe/hooks": "^1.2.11-alpha.2",
31
31
  "@lemon-fe/utils": "^1.1.0",
32
32
  "async-validator": "^4.2.5",
33
33
  "bignumber.js": ">=9.0.0",
@@ -67,5 +67,5 @@
67
67
  "publishConfig": {
68
68
  "registry": "https://registry.npmjs.org"
69
69
  },
70
- "gitHead": "084f158755b14b82bca352d812f0da492b120b66"
70
+ "gitHead": "ae15ff1f11ac069128da561e6afeb1515c77a36e"
71
71
  }