@sheinx/hooks 3.4.0-beta.1 → 3.4.0-beta.10

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 (111) hide show
  1. package/cjs/common/use-input-able/use-Input-able.js +2 -2
  2. package/cjs/common/use-position-style/index.d.ts +4 -1
  3. package/cjs/common/use-position-style/index.d.ts.map +1 -1
  4. package/cjs/common/use-position-style/index.js +98 -11
  5. package/cjs/components/use-datepicker/use-date.d.ts +2 -2
  6. package/cjs/components/use-datepicker/use-date.d.ts.map +1 -1
  7. package/cjs/components/use-datepicker/use-date.js +2 -2
  8. package/cjs/components/use-datepicker/use-date.type.d.ts +1 -1
  9. package/cjs/components/use-datepicker/use-date.type.d.ts.map +1 -1
  10. package/cjs/components/use-datepicker/use-datepicker-format.d.ts +1 -1
  11. package/cjs/components/use-datepicker/use-datepicker-format.d.ts.map +1 -1
  12. package/cjs/components/use-datepicker/use-datepicker-format.js +4 -2
  13. package/cjs/components/use-datepicker/use-datepicker-format.type.d.ts +1 -0
  14. package/cjs/components/use-datepicker/use-datepicker-format.type.d.ts.map +1 -1
  15. package/cjs/components/use-datepicker/use-month.d.ts +2 -2
  16. package/cjs/components/use-datepicker/use-month.d.ts.map +1 -1
  17. package/cjs/components/use-datepicker/use-month.js +2 -2
  18. package/cjs/components/use-datepicker/use-month.type.d.ts +1 -1
  19. package/cjs/components/use-datepicker/use-month.type.d.ts.map +1 -1
  20. package/cjs/components/use-datepicker/use-quarter.d.ts +2 -2
  21. package/cjs/components/use-datepicker/use-quarter.d.ts.map +1 -1
  22. package/cjs/components/use-datepicker/use-quarter.js +2 -2
  23. package/cjs/components/use-datepicker/use-year.d.ts +2 -2
  24. package/cjs/components/use-datepicker/use-year.d.ts.map +1 -1
  25. package/cjs/components/use-datepicker/use-year.js +2 -2
  26. package/cjs/components/use-datepicker/use-year.type.d.ts +1 -1
  27. package/cjs/components/use-datepicker/use-year.type.d.ts.map +1 -1
  28. package/cjs/components/use-datepicker/util.d.ts +1 -1
  29. package/cjs/components/use-datepicker/util.d.ts.map +1 -1
  30. package/cjs/components/use-datepicker/util.js +2 -1
  31. package/cjs/components/use-form/use-form-control/use-form-control.js +2 -2
  32. package/cjs/components/use-form/use-form.d.ts.map +1 -1
  33. package/cjs/components/use-form/use-form.js +40 -19
  34. package/cjs/components/use-form/use-form.type.d.ts +11 -6
  35. package/cjs/components/use-form/use-form.type.d.ts.map +1 -1
  36. package/cjs/components/use-input/use-input-format.d.ts +1 -1
  37. package/cjs/components/use-input/use-input-number.d.ts +1 -1
  38. package/cjs/components/use-input/use-input-number.d.ts.map +1 -1
  39. package/cjs/components/use-input/use-input-number.js +37 -5
  40. package/cjs/components/use-popup/use-popup.d.ts +1 -0
  41. package/cjs/components/use-popup/use-popup.d.ts.map +1 -1
  42. package/cjs/components/use-popup/use-popup.js +7 -4
  43. package/cjs/components/use-table/use-table-virtual.d.ts +1 -1
  44. package/cjs/components/use-table/use-table-virtual.d.ts.map +1 -1
  45. package/cjs/components/use-table/use-table-virtual.js +34 -4
  46. package/cjs/components/use-transfer/use-transfer.d.ts +1 -1
  47. package/cjs/components/use-transfer/use-transfer.d.ts.map +1 -1
  48. package/cjs/components/use-transfer/use-transfer.js +8 -17
  49. package/cjs/utils/dom/element.js +1 -1
  50. package/cjs/utils/is.d.ts +1 -0
  51. package/cjs/utils/is.d.ts.map +1 -1
  52. package/cjs/utils/is.js +6 -1
  53. package/cjs/utils/position.d.ts +1 -1
  54. package/cjs/utils/position.d.ts.map +1 -1
  55. package/cjs/utils/position.js +20 -5
  56. package/esm/common/use-input-able/use-Input-able.js +2 -2
  57. package/esm/common/use-position-style/index.d.ts +4 -1
  58. package/esm/common/use-position-style/index.d.ts.map +1 -1
  59. package/esm/common/use-position-style/index.js +99 -12
  60. package/esm/components/use-datepicker/use-date.d.ts +2 -2
  61. package/esm/components/use-datepicker/use-date.d.ts.map +1 -1
  62. package/esm/components/use-datepicker/use-date.js +2 -2
  63. package/esm/components/use-datepicker/use-date.type.d.ts +1 -1
  64. package/esm/components/use-datepicker/use-date.type.d.ts.map +1 -1
  65. package/esm/components/use-datepicker/use-datepicker-format.d.ts +1 -1
  66. package/esm/components/use-datepicker/use-datepicker-format.d.ts.map +1 -1
  67. package/esm/components/use-datepicker/use-datepicker-format.js +4 -2
  68. package/esm/components/use-datepicker/use-datepicker-format.type.d.ts +1 -0
  69. package/esm/components/use-datepicker/use-datepicker-format.type.d.ts.map +1 -1
  70. package/esm/components/use-datepicker/use-month.d.ts +2 -2
  71. package/esm/components/use-datepicker/use-month.d.ts.map +1 -1
  72. package/esm/components/use-datepicker/use-month.js +2 -2
  73. package/esm/components/use-datepicker/use-month.type.d.ts +1 -1
  74. package/esm/components/use-datepicker/use-month.type.d.ts.map +1 -1
  75. package/esm/components/use-datepicker/use-quarter.d.ts +2 -2
  76. package/esm/components/use-datepicker/use-quarter.d.ts.map +1 -1
  77. package/esm/components/use-datepicker/use-quarter.js +2 -2
  78. package/esm/components/use-datepicker/use-year.d.ts +2 -2
  79. package/esm/components/use-datepicker/use-year.d.ts.map +1 -1
  80. package/esm/components/use-datepicker/use-year.js +2 -2
  81. package/esm/components/use-datepicker/use-year.type.d.ts +1 -1
  82. package/esm/components/use-datepicker/use-year.type.d.ts.map +1 -1
  83. package/esm/components/use-datepicker/util.d.ts +1 -1
  84. package/esm/components/use-datepicker/util.d.ts.map +1 -1
  85. package/esm/components/use-datepicker/util.js +2 -1
  86. package/esm/components/use-form/use-form-control/use-form-control.js +2 -2
  87. package/esm/components/use-form/use-form.d.ts.map +1 -1
  88. package/esm/components/use-form/use-form.js +40 -19
  89. package/esm/components/use-form/use-form.type.d.ts +11 -6
  90. package/esm/components/use-form/use-form.type.d.ts.map +1 -1
  91. package/esm/components/use-input/use-input-format.d.ts +1 -1
  92. package/esm/components/use-input/use-input-number.d.ts +1 -1
  93. package/esm/components/use-input/use-input-number.d.ts.map +1 -1
  94. package/esm/components/use-input/use-input-number.js +34 -4
  95. package/esm/components/use-popup/use-popup.d.ts +1 -0
  96. package/esm/components/use-popup/use-popup.d.ts.map +1 -1
  97. package/esm/components/use-popup/use-popup.js +7 -4
  98. package/esm/components/use-table/use-table-virtual.d.ts +1 -1
  99. package/esm/components/use-table/use-table-virtual.d.ts.map +1 -1
  100. package/esm/components/use-table/use-table-virtual.js +34 -4
  101. package/esm/components/use-transfer/use-transfer.d.ts +1 -1
  102. package/esm/components/use-transfer/use-transfer.d.ts.map +1 -1
  103. package/esm/components/use-transfer/use-transfer.js +8 -17
  104. package/esm/utils/dom/element.js +1 -1
  105. package/esm/utils/is.d.ts +1 -0
  106. package/esm/utils/is.d.ts.map +1 -1
  107. package/esm/utils/is.js +3 -0
  108. package/esm/utils/position.d.ts +1 -1
  109. package/esm/utils/position.d.ts.map +1 -1
  110. package/esm/utils/position.js +20 -5
  111. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"use-form.d.ts","sourceRoot":"","sources":["use-form.ts"],"names":[],"mappings":";AAyBA,OAAO,EAAe,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAAe,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI5D,QAAA,MAAM,OAAO;;;;;;;;;wBAmK8B;gBAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;aAAE;8BARzB,MAAM;oCAuDD,OAAO;;6BAfb,MAAM,KAAK,KAAK,GAAG,SAAS;;oCAdrB,MAAM,EAAE;sCArEN,MAAM,GAAG,MAAM,EAAE,mBAAgB,QAAQ,IAAI,CAAC;qCAiI5D,MAAM;gCAzCE,MAAM,SAAS,MAAM,UAAU,KAAK;gCAKpC,MAAM,SAAS,MAAM;;;;;;oBA1CpB;YAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;SAAE;0BARzB,MAAM;gCAuDD,OAAO;;yBAfb,MAAM,KAAK,KAAK,GAAG,SAAS;;gCAdrB,MAAM,EAAE;kCArEN,MAAM,GAAG,MAAM,EAAE,mBAAgB,QAAQ,IAAI,CAAC;iCAiI5D,MAAM;4BAzCE,MAAM,SAAS,MAAM,UAAU,KAAK;4BAKpC,MAAM,SAAS,MAAM;;CA4P9D,CAAC;AAEF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"use-form.d.ts","sourceRoot":"","sources":["use-form.ts"],"names":[],"mappings":";AAyBA,OAAO,EAAe,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAwB,MAAM,iBAAiB,CAAC;AACnH,OAAO,EAAe,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI5D,QAAA,MAAM,OAAO;;;;;;;;;wBAuK8B;gBAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;aAAE;8BARzB,MAAM;oCAyDD,OAAO;;6BAfb,MAAM,KAAK,KAAK,GAAG,SAAS;;oCAdrB,MAAM,EAAE;sCAvEN,MAAM,GAAG,MAAM,EAAE,mBAAgB,QAAQ,IAAI,CAAC;qCAmI5D,MAAM;gCAzCE,MAAM,SAAS,MAAM,UAAU,KAAK;gCAKpC,MAAM,SAAS,MAAM;;;;;;oBA5CpB;YAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;SAAE;0BARzB,MAAM;gCAyDD,OAAO;;yBAfb,MAAM,KAAK,KAAK,GAAG,SAAS;;gCAdrB,MAAM,EAAE;kCAvEN,MAAM,GAAG,MAAM,EAAE,mBAAgB,QAAQ,IAAI,CAAC;iCAmI5D,MAAM;4BAzCE,MAAM,SAAS,MAAM,UAAU,KAAK;4BAKpC,MAAM,SAAS,MAAM;;CAoQ9D,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -65,8 +65,10 @@ var useForm = function useForm(props) {
65
65
  var _context$flowMap$glob;
66
66
  if (!name) {
67
67
  Object.keys(context.updateMap).forEach(function (key) {
68
- var _context$updateMap$ke, _context$updateMap;
69
- (_context$updateMap$ke = (_context$updateMap = context.updateMap)[key]) === null || _context$updateMap$ke === void 0 || _context$updateMap$ke.call(_context$updateMap, context.value, context.errors, context.serverErrors);
68
+ var _context$updateMap$ke;
69
+ (_context$updateMap$ke = context.updateMap[key]) === null || _context$updateMap$ke === void 0 || _context$updateMap$ke.forEach(function (update) {
70
+ update(context.value, context.errors, context.serverErrors);
71
+ });
70
72
  });
71
73
  Object.keys(context.flowMap).forEach(function (key) {
72
74
  context.flowMap[key].forEach(function (update) {
@@ -76,8 +78,10 @@ var useForm = function useForm(props) {
76
78
  } else {
77
79
  var names = isArray(name) ? name : [name];
78
80
  names.forEach(function (key) {
79
- var _context$updateMap$ke2, _context$updateMap2, _context$flowMap$key;
80
- (_context$updateMap$ke2 = (_context$updateMap2 = context.updateMap)[key]) === null || _context$updateMap$ke2 === void 0 || _context$updateMap$ke2.call(_context$updateMap2, context.value, context.errors, context.serverErrors);
81
+ var _context$updateMap$ke2, _context$flowMap$key;
82
+ (_context$updateMap$ke2 = context.updateMap[key]) === null || _context$updateMap$ke2 === void 0 || _context$updateMap$ke2.forEach(function (update) {
83
+ update(context.value, context.errors, context.serverErrors);
84
+ });
81
85
  (_context$flowMap$key = context.flowMap[key]) === null || _context$flowMap$key === void 0 || _context$flowMap$key.forEach(function (update) {
82
86
  update();
83
87
  });
@@ -133,9 +137,11 @@ var useForm = function useForm(props) {
133
137
  }) : Object.keys(context.validateMap);
134
138
  var validates = files2.map(function (key) {
135
139
  var validateField = context.validateMap[key];
136
- return validateField(key, deepGet(context.value, key), context.value, config);
140
+ return Array.from(validateField).map(function (validate) {
141
+ return validate(key, deepGet(context.value, key), context.value, config);
142
+ });
137
143
  });
138
- Promise.all(validates).then(function (results) {
144
+ Promise.all(validates.flat()).then(function (results) {
139
145
  var error = results.find(function (n) {
140
146
  return n !== true;
141
147
  });
@@ -180,8 +186,10 @@ var useForm = function useForm(props) {
180
186
  Object.keys(vals).forEach(function (key) {
181
187
  deepSet(draft, key, vals[key], deepSetOptions);
182
188
  if (option.validate) {
183
- var _context$validateMap$, _context$validateMap;
184
- (_context$validateMap$ = (_context$validateMap = context.validateMap)[key]) === null || _context$validateMap$ === void 0 || _context$validateMap$.call(_context$validateMap, key, vals[key], current(draft));
189
+ var _context$validateMap$;
190
+ (_context$validateMap$ = context.validateMap[key]) === null || _context$validateMap$ === void 0 || _context$validateMap$.forEach(function (validate) {
191
+ validate(key, vals[key], current(draft));
192
+ });
185
193
  }
186
194
  });
187
195
  });
@@ -325,12 +333,17 @@ var useForm = function useForm(props) {
325
333
  var controlFunc = useLatestObj({
326
334
  bind: function bind(n, df, validate, updateFn) {
327
335
  if (context.names.has(n)) {
328
- console.error("name \"".concat(n, "\" already exist"));
329
- return;
336
+ console.warn("name \"".concat(n, "\" already exist"));
330
337
  }
331
338
  context.names.add(n);
332
- context.validateMap[n] = validate;
333
- context.updateMap[n] = updateFn;
339
+ if (!context.validateMap[n]) {
340
+ context.validateMap[n] = new Set();
341
+ }
342
+ context.validateMap[n].add(validate);
343
+ if (!context.updateMap[n]) {
344
+ context.updateMap[n] = new Set();
345
+ }
346
+ context.updateMap[n].add(updateFn);
334
347
  context.removeArr.delete(n);
335
348
  if (df !== undefined && deepGet(context.value, n) === undefined) {
336
349
  if (!context.mounted) context.defaultValues[n] = df;
@@ -340,11 +353,19 @@ var useForm = function useForm(props) {
340
353
  }
341
354
  update(n);
342
355
  },
343
- unbind: function unbind(n, reserveAble) {
344
- delete context.validateMap[n];
345
- delete context.defaultValues[n];
346
- delete context.updateMap[n];
347
- context.names.delete(n);
356
+ unbind: function unbind(n, reserveAble, validateFiled, update) {
357
+ var validateFieldSet = context.validateMap[n];
358
+ if (validateFiled && validateFieldSet.has(validateFiled)) {
359
+ validateFieldSet.delete(validateFiled);
360
+ }
361
+ var updateFieldSet = context.updateMap[n];
362
+ if (update && updateFieldSet.has(update)) {
363
+ updateFieldSet.delete(update);
364
+ }
365
+ if (validateFieldSet.size === 0 && updateFieldSet.size === 0) {
366
+ context.names.delete(n);
367
+ delete context.defaultValues[n];
368
+ }
348
369
  if (!reserveAble && !context.removeLock) {
349
370
  addRemove(n);
350
371
  }
@@ -419,12 +440,12 @@ var useForm = function useForm(props) {
419
440
  React.useEffect(function () {
420
441
  // 服务端错误更新
421
442
  if (!props.error) context.serverErrors = {};else {
422
- var _errors = Object.keys(props.error).reduce(function (prev, cur) {
443
+ var errors = Object.keys(props.error).reduce(function (prev, cur) {
423
444
  var item = props.error[cur];
424
445
  var error = item instanceof Error ? item : new Error(item);
425
446
  return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, cur, error));
426
447
  }, {});
427
- context.serverErrors = _errors;
448
+ context.serverErrors = errors;
428
449
  }
429
450
  update();
430
451
  }, [props.error]);
@@ -2,12 +2,15 @@
2
2
  import { ReactNode } from 'react';
3
3
  import { AddNoProps, ObjectType } from '../../common/type';
4
4
  import { FormItemRule } from '../../utils/rule/rule.type';
5
+ import { FormError } from '../../utils';
6
+ export type ValidateFn = (name: string, value: any, formData: ObjectType, config?: {
7
+ ignoreBind?: boolean;
8
+ }) => Promise<boolean | FormError>;
9
+ export type UpdateFn = (formValue: ObjectType, errors: ObjectType<Error | undefined>, serverErrors: ObjectType<Error | undefined>) => void;
5
10
  export interface FormContextValueType {
6
11
  func?: {
7
- unbind: (n: string, reserveAble?: boolean) => void;
8
- bind: (n: string, df: any, validate: (name: string, value: any, formData: ObjectType, config: {
9
- ignoreBind?: boolean;
10
- }) => void, update: (formValue: ObjectType, errors: ObjectType<Error>, serverErrors: ObjectType<Error>) => void) => void;
12
+ unbind: (n: string, reserveAble?: boolean, validate?: ValidateFn, update?: UpdateFn) => void;
13
+ bind: (n: string, df: any, validate: ValidateFn, update: UpdateFn) => void;
11
14
  combineRules: <ValueItem>(name: string, propRules: FormItemRule<ValueItem>) => FormItemRule<ValueItem>;
12
15
  watch: (names: string[] | undefined, update: () => void) => void;
13
16
  unWatch: (names: string[] | undefined, update: () => void) => void;
@@ -149,7 +152,9 @@ export interface BaseFormProps<T> extends FormCommonConfig {
149
152
  export type UseFormProps<T> = BaseFormProps<T>;
150
153
  export type FormContext = {
151
154
  defaultValues: ObjectType;
152
- validateMap: ObjectType;
155
+ validateMap: ObjectType<Set<(name: string, v: any, formValue: ObjectType, config?: {
156
+ ignoreBind?: boolean;
157
+ }) => Promise<boolean | FormError>>>;
153
158
  removeArr: Set<string>;
154
159
  removeTimer?: number | NodeJS.Timeout;
155
160
  names: Set<string>;
@@ -157,7 +162,7 @@ export type FormContext = {
157
162
  lastValue: ObjectType | undefined;
158
163
  resetTime: number;
159
164
  mounted: boolean;
160
- updateMap: ObjectType;
165
+ updateMap: ObjectType<Set<(formValue: ObjectType, errors: ObjectType<Error | undefined>, serverErrors: ObjectType<Error | undefined>) => void>>;
161
166
  flowMap: ObjectType<Set<() => void>>;
162
167
  value: ObjectType;
163
168
  errors: ObjectType<Error | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"use-form.type.d.ts","sourceRoot":"","sources":["use-form.type.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-form.type.d.ts","sourceRoot":"","sources":["use-form.type.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ declare const useInputFormat: (props: InputFormatProps) => {
5
5
  onBlur: (e: React.FocusEvent) => void;
6
6
  onFocus: (e: React.FocusEvent) => void;
7
7
  value: string | undefined;
8
- type: "search" | "color" | "button" | "time" | "image" | "text" | "reset" | "submit" | "email" | "url" | "range" | "tel" | (string & {}) | "hidden" | "checkbox" | "date" | "datetime-local" | "file" | "month" | "password" | "radio" | "week" | undefined;
8
+ type: "search" | "color" | "button" | "time" | "image" | "text" | "reset" | "submit" | "email" | "url" | "range" | "tel" | (string & {}) | "checkbox" | "radio" | "hidden" | "date" | "datetime-local" | "file" | "month" | "password" | "week" | undefined;
9
9
  };
10
10
  export default useInputFormat;
11
11
  //# sourceMappingURL=use-input-format.d.ts.map
@@ -7,7 +7,7 @@ declare const useNumberFormat: (props: InputNumberProps) => {
7
7
  onBlur: (e: React.FocusEvent<Element, Element>) => void;
8
8
  onFocus: (e: React.FocusEvent<Element, Element>) => void;
9
9
  value: string | undefined;
10
- type: "search" | "color" | "button" | "time" | "image" | "text" | "reset" | "submit" | "email" | "url" | "range" | "tel" | (string & {}) | "hidden" | "checkbox" | "date" | "datetime-local" | "file" | "month" | "password" | "radio" | "week" | undefined;
10
+ type: "search" | "color" | "button" | "time" | "image" | "text" | "reset" | "submit" | "email" | "url" | "range" | "tel" | (string & {}) | "checkbox" | "radio" | "hidden" | "date" | "datetime-local" | "file" | "month" | "password" | "week" | undefined;
11
11
  };
12
12
  export default useNumberFormat;
13
13
  //# sourceMappingURL=use-input-number.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-input-number.d.ts","sourceRoot":"","sources":["use-input-number.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAK3D,QAAA,MAAM,eAAe,UAAW,gBAAgB;;;;;;;;CA6H/C,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"use-input-number.d.ts","sourceRoot":"","sources":["use-input-number.ts"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAK3D,QAAA,MAAM,eAAe,UAAW,gBAAgB;;;;;;;;CAkJ/C,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -4,6 +4,13 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
4
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
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
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
8
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
9
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
10
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
11
+ 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; } }
12
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
13
+ import React, { useEffect } from 'react';
7
14
  import usePersistFn from "../../common/use-persist-fn";
8
15
  import useInputFormat from "./use-input-format";
9
16
  import { sub } from "../../utils/number";
@@ -30,6 +37,15 @@ var useNumberFormat = function useNumberFormat(props) {
30
37
  }
31
38
  return value || '';
32
39
  };
40
+ var _React$useState = React.useState(getStringValue(props.value)),
41
+ _React$useState2 = _slicedToArray(_React$useState, 2),
42
+ inernalInputValue = _React$useState2[0],
43
+ setInternalInputValue = _React$useState2[1];
44
+ useEffect(function () {
45
+ if (props.value !== inernalInputValue) {
46
+ setInternalInputValue(getStringValue(props.value));
47
+ }
48
+ }, [props.value]);
33
49
  var getNumberValue = function getNumberValue(value) {
34
50
  if (isNaN(value)) return 0;
35
51
  if (typeof value === 'number') {
@@ -47,6 +63,17 @@ var useNumberFormat = function useNumberFormat(props) {
47
63
  }
48
64
  return num;
49
65
  };
66
+ var onInnerChange = usePersistFn(function (val) {
67
+ setInternalInputValue(getStringValue(val));
68
+ if (typeof val === 'string') {
69
+ var num = parseFloat(val);
70
+ if (isNaN(num)) return;
71
+ onChange === null || onChange === void 0 || onChange(num);
72
+ } else {
73
+ onChange === null || onChange === void 0 || onChange(val);
74
+ }
75
+ ;
76
+ });
50
77
  var onNumberBlur = usePersistFn(function (e) {
51
78
  var target = e.target;
52
79
  var newValue = target.value;
@@ -57,7 +84,7 @@ var useNumberFormat = function useNumberFormat(props) {
57
84
  return;
58
85
  }
59
86
  if (newValue === '' && allowNull) {
60
- onChange === null || onChange === void 0 || onChange(null);
87
+ onInnerChange(null);
61
88
  onBlur === null || onBlur === void 0 || onBlur(e);
62
89
  return;
63
90
  }
@@ -72,15 +99,18 @@ var useNumberFormat = function useNumberFormat(props) {
72
99
  num = parseFloat(num.toFixed(digits));
73
100
  }
74
101
  num = commonFormat(num);
102
+
103
+ // 失焦时,将非法值转换为合法值
104
+ setInternalInputValue(getStringValue(num));
75
105
  if (num !== value) {
76
106
  target.value = typeof num === 'number' ? String(num) : '';
77
- if (!cancelBlurChange) onChange === null || onChange === void 0 || onChange(num);
107
+ if (!cancelBlurChange) onInnerChange(num);
78
108
  }
79
109
  onBlur === null || onBlur === void 0 || onBlur(e);
80
110
  });
81
111
  var onNumberChange = usePersistFn(function (value) {
82
112
  var result = value;
83
- onChange === null || onChange === void 0 || onChange(result);
113
+ onInnerChange(result);
84
114
  });
85
115
  var changeValue = function changeValue(mod) {
86
116
  var num = getNumberValue(props.value);
@@ -106,7 +136,7 @@ var useNumberFormat = function useNumberFormat(props) {
106
136
  changeValue(-step);
107
137
  });
108
138
  return _objectSpread(_objectSpread({}, useInputFormat({
109
- value: getStringValue(props.value),
139
+ value: inernalInputValue,
110
140
  type: 'number',
111
141
  numType: numType,
112
142
  integerLimit: integerLimit,
@@ -5,6 +5,7 @@ declare const usePopup: (props: BasePopupProps) => {
5
5
  position: PositionType;
6
6
  targetRef: React.MutableRefObject<HTMLDivElement | null>;
7
7
  popupRef: React.MutableRefObject<HTMLDivElement | null>;
8
+ arrowRef: React.MutableRefObject<HTMLSpanElement | null>;
8
9
  getTargetProps: () => {
9
10
  onMouseEnter: (e: {
10
11
  target: EventTarget | null;
@@ -1 +1 @@
1
- {"version":3,"file":"use-popup.d.ts","sourceRoot":"","sources":["use-popup.ts"],"names":[],"mappings":"AAAA,OAAO,KAA2D,MAAM,OAAO,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAMhE,QAAA,MAAM,QAAQ,UAAW,cAAc;;;;;;0BAoHK;YAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAAA;SAAE;0BAM9B;YAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAAA;SAAE;;;;;qBA5B7B;YAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;;;;2BA6ElD,MAAM,gBAAgB,CAAC,WAAW,GAAG,IAAI,CAAC;6BAGxC,MAAM,gBAAgB,CAAC,WAAW,GAAG,IAAI,CAAC;;CAqBpE,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"use-popup.d.ts","sourceRoot":"","sources":["use-popup.ts"],"names":[],"mappings":"AAAA,OAAO,KAA2D,MAAM,OAAO,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAMhE,QAAA,MAAM,QAAQ,UAAW,cAAc;;;;;;;0BA2HK;YAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAAA;SAAE;0BAM9B;YAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAAA;SAAE;;;;;qBA5B7B;YAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;;;;2BA6ElD,MAAM,gBAAgB,CAAC,WAAW,GAAG,IAAI,CAAC;6BAGxC,MAAM,gBAAgB,CAAC,WAAW,GAAG,IAAI,CAAC;;CAsBpE,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -30,6 +30,7 @@ var usePopup = function usePopup(props) {
30
30
  removeChild = _useContext.removeChild;
31
31
  var targetRef = useRef(null);
32
32
  var popupRef = useRef(null);
33
+ var arrowRef = useRef(null);
33
34
  useEffect(function () {
34
35
  bindChild(popupRef);
35
36
  return function () {
@@ -61,11 +62,12 @@ var usePopup = function usePopup(props) {
61
62
  setPositionState = _useState4[1];
62
63
  var position = isPositionControl ? props.position : positionState;
63
64
  var updatePosition = usePersistFn(function () {
64
- if (isPositionControl) return;
65
- if (props.position === 'auto' || !props.position) {
66
- var newPosition = getPosition(targetRef.current, props.priorityDirection, autoMode);
65
+ // if (isPositionControl) return;
66
+ // if (props.position === 'auto' || !props.position) {
67
+ setTimeout(function () {
68
+ var newPosition = getPosition(targetRef.current, props.priorityDirection, autoMode, popupRef.current || undefined);
67
69
  if (newPosition !== position) setPositionState(newPosition);
68
- }
70
+ }, 10);
69
71
  });
70
72
  useEffect(function () {
71
73
  if (props.open) {
@@ -194,6 +196,7 @@ var usePopup = function usePopup(props) {
194
196
  position: position,
195
197
  targetRef: targetRef,
196
198
  popupRef: popupRef,
199
+ arrowRef: arrowRef,
197
200
  getTargetProps: getTargetProps,
198
201
  openPop: openPop,
199
202
  closePop: closePop,
@@ -26,7 +26,7 @@ declare const useTableVirtual: (props: UseTableVirtualProps) => {
26
26
  }) => void;
27
27
  setRowHeight: (index: number, height: number) => void;
28
28
  getTranslate: (left?: number, top?: number) => string;
29
- scrollToIndex: (index: number) => void;
29
+ scrollToIndex: (index: number, callback?: () => void) => void;
30
30
  };
31
31
  export default useTableVirtual;
32
32
  //# sourceMappingURL=use-table-virtual.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-table-virtual.d.ts","sourceRoot":"","sources":["use-table-virtual.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,UAAU,oBAAoB;IAC5B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC3C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;CACnC;AACD,QAAA,MAAM,eAAe,UAAW,oBAAoB;;;;;;;oBAiLpC,MAAM;mBACP,MAAM;WACd,MAAM;gBACD,MAAM;kBACJ,OAAO;;0BAnFuB,MAAM,UAAU,MAAM;0BAxBtB,MAAM,QAAQ,MAAM;2BA+InB,MAAM;CAmElD,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"use-table-virtual.d.ts","sourceRoot":"","sources":["use-table-virtual.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD,UAAU,oBAAoB;IAC5B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC3C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;CACnC;AACD,QAAA,MAAM,eAAe,UAAW,oBAAoB;;;;;;;oBAqLpC,MAAM;mBACP,MAAM;WACd,MAAM;gBACD,MAAM;kBACJ,OAAO;;0BAzFuB,MAAM,UAAU,MAAM;0BAxBtB,MAAM,QAAQ,MAAM;2BAqJnB,MAAM,aAAa,MAAM,IAAI;CA8FzE,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -10,6 +10,7 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
10
10
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
11
11
  import { usePersistFn } from "../../common/use-persist-fn";
12
12
  import { useState, useRef, useEffect, useMemo } from 'react';
13
+ var MAX_ROW_SPAN = 200;
13
14
  var useTableVirtual = function useTableVirtual(props) {
14
15
  var _useState = useState(0),
15
16
  _useState2 = _slicedToArray(_useState, 2),
@@ -92,7 +93,9 @@ var useTableVirtual = function useTableVirtual(props) {
92
93
  topTimer: null,
93
94
  controlScrollRate: null,
94
95
  heightCallback: null,
95
- preIndex: null
96
+ preIndex: null,
97
+ rowSpanRows: 0,
98
+ autoAddRows: 0
96
99
  }),
97
100
  context = _useRef.current;
98
101
  var getTranslate = usePersistFn(function (left, top) {
@@ -143,17 +146,20 @@ var useTableVirtual = function useTableVirtual(props) {
143
146
  var top = 0;
144
147
  var maxIndex = Math.max(props.data.length - rowsInView, 0);
145
148
  for (var i = 0; i <= maxIndex; i++) {
149
+ context.rowSpanRows = 0;
146
150
  sum += context.cachedHeight[i] || props.rowHeight;
147
151
  var rowSpanHeight = 0;
148
152
  if (rowSpanInfos) {
153
+ var maxRowSpanLenth = Math.min(rowSpanInfos.length, props.rowsInView > MAX_ROW_SPAN ? props.rowsInView : props.rowsInView || MAX_ROW_SPAN);
149
154
  var siblingsIndexs = [];
150
- for (var k = 0; k < rowSpanInfos.length; k++) {
155
+ for (var k = 0; k < maxRowSpanLenth; k++) {
151
156
  if (rowSpanInfos[k] <= i && k > i) {
152
157
  siblingsIndexs.push(k);
153
158
  }
154
159
  }
155
160
  for (var j = 0; j < siblingsIndexs.length; j++) {
156
161
  var index = siblingsIndexs[j];
162
+ context.rowSpanRows += 1;
157
163
  rowSpanHeight += context.cachedHeight[index] || props.rowHeight;
158
164
  }
159
165
  }
@@ -229,7 +235,7 @@ var useTableVirtual = function useTableVirtual(props) {
229
235
  updateIndexAndTopFromTop(scrollTop);
230
236
  }
231
237
  };
232
- var scrollToIndex = usePersistFn(function (index) {
238
+ var scrollToIndex = usePersistFn(function (index, callback) {
233
239
  if (props.disabled) return;
234
240
  if (props.scrollRef.current) {
235
241
  context.shouldUpdateHeight = true;
@@ -240,16 +246,39 @@ var useTableVirtual = function useTableVirtual(props) {
240
246
  if (beforeHeight2 !== beforeHeight) {
241
247
  scrollToIndex(index);
242
248
  }
249
+ if (callback && typeof callback === 'function') {
250
+ callback();
251
+ }
243
252
  };
244
253
  props.scrollRef.current.scrollTop = beforeHeight;
245
254
  }
246
255
  });
256
+ useEffect(function () {
257
+ var scrollRefHeight = props.scrollRef.current ? props.scrollRef.current.clientHeight : 0;
258
+ var tableRefHeight = props.innerRef.current ? props.innerRef.current.clientHeight : 0;
259
+ var remainHeight = scrollRefHeight - tableRefHeight;
260
+ if (remainHeight > 0) {
261
+ var addonHeight = 0;
262
+ var addonCount = 0;
263
+ for (var i = startIndex + rowsInView; i < props.data.length; i++) {
264
+ var height = context.cachedHeight[i] || props.rowHeight;
265
+ addonHeight += height;
266
+ addonCount += 1;
267
+ if (addonHeight >= remainHeight + context.cachedHeight[0]) break;
268
+ }
269
+ if (addonCount > 0) {
270
+ context.autoAddRows = addonCount;
271
+ }
272
+ }
273
+ }, []);
247
274
  useEffect(function () {
248
275
  // 记录preIndex
249
276
  context.preIndex = startIndex;
250
277
  }, [startIndex]);
251
278
  useEffect(function () {
252
279
  // 数据变化的时候清空掉 preIndex, 如果之前有缓存的index, setRowHeight 会有问题
280
+ setTop(0);
281
+ setStartIndex(0);
253
282
  return function () {
254
283
  context.preIndex = null;
255
284
  };
@@ -278,7 +307,8 @@ var useTableVirtual = function useTableVirtual(props) {
278
307
  cb();
279
308
  }
280
309
  }, [scrollHeight]);
281
- var renderData = props.disabled ? props.data : _toConsumableArray(props.data).slice(startIndex, startIndex + rowsInView);
310
+ var finalRowsInView = rowsInView + context.rowSpanRows + context.autoAddRows;
311
+ var renderData = props.disabled ? props.data : _toConsumableArray(props.data).slice(startIndex, startIndex + finalRowsInView);
282
312
  return {
283
313
  scrollHeight: scrollHeight,
284
314
  startIndex: startIndex,
@@ -87,7 +87,7 @@ declare const useTransfer: <DataItem, Value extends KeygenResult[]>(props: BaseT
87
87
  filterTargetText: string;
88
88
  sourceSelectedKeys: KeygenResult[];
89
89
  targetSelectedKeys: KeygenResult[];
90
- onSelectChange: ((sourceKeys: KeygenResult[], targetKeys?: KeygenResult[] | undefined) => void) | ((selectKeys: KeygenResult[]) => void);
90
+ onSelectChange: (_value: KeygenResult[], source: KeygenResult[], target: KeygenResult[]) => void;
91
91
  onFilter: (text: string, listType: TransferListType) => void;
92
92
  };
93
93
  export default useTransfer;
@@ -1 +1 @@
1
- {"version":3,"file":"use-transfer.d.ts","sourceRoot":"","sources":["use-transfer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE1E,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAqHa,MAAM,YAAY,gBAAgB;CAsB/D,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"use-transfer.d.ts","sourceRoot":"","sources":["use-transfer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE1E,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BA0BL,YAAY,EAAE,UACd,YAAY,EAAE,UACd,YAAY,EAAE;qBAqFI,MAAM,YAAY,gBAAgB;CAsB/D,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -37,12 +37,15 @@ var useTransfer = function useTransfer(props) {
37
37
  _useState4 = _slicedToArray(_useState3, 2),
38
38
  filterTargetText = _useState4[0],
39
39
  setFilterTargetText = _useState4[1];
40
+ var handleSelectedChange = function handleSelectedChange(_value, source, target) {
41
+ onSelectChangeProp === null || onSelectChangeProp === void 0 || onSelectChangeProp(source, target);
42
+ };
40
43
  var _useInputAble = useInputAble({
41
44
  value: selectValue,
42
45
  defaultValue: defaultSelectValue,
43
46
  control: selectControl,
44
47
  beforeChange: undefined,
45
- onChange: onSelectChangeProp
48
+ onChange: handleSelectedChange
46
49
  }),
47
50
  selectedKeys = _useInputAble.value,
48
51
  onSelectChange = _useInputAble.onChange;
@@ -99,24 +102,12 @@ var useTransfer = function useTransfer(props) {
99
102
  return keygen;
100
103
  };
101
104
  var handleSourceSelectedChange = function handleSourceSelectedChange(value) {
102
- if (selectControl) {
103
- // 受控情况下整合工作交给用户处理
104
- onSelectChange === null || onSelectChange === void 0 || onSelectChange(value, targetSelectedKeys);
105
- } else {
106
- // 非受控内部直接整合 source target
107
- var next = [].concat(_toConsumableArray(value), _toConsumableArray(targetSelectedKeys));
108
- onSelectChange === null || onSelectChange === void 0 || onSelectChange(next);
109
- }
105
+ var next = [].concat(_toConsumableArray(value), _toConsumableArray(targetSelectedKeys));
106
+ onSelectChange === null || onSelectChange === void 0 || onSelectChange(next, value, targetSelectedKeys);
110
107
  };
111
108
  var handleTargetSelectedChange = function handleTargetSelectedChange(value) {
112
- if (selectControl) {
113
- // 受控情况下整合工作交给用户处理
114
- onSelectChange === null || onSelectChange === void 0 || onSelectChange(sourceSelectedKeys, value);
115
- } else {
116
- // 非受控内部直接整合 source target
117
- var next = [].concat(_toConsumableArray(sourceSelectedKeys), _toConsumableArray(value));
118
- onSelectChange === null || onSelectChange === void 0 || onSelectChange(next);
119
- }
109
+ var next = [].concat(_toConsumableArray(sourceSelectedKeys), _toConsumableArray(value));
110
+ onSelectChange === null || onSelectChange === void 0 || onSelectChange(next, sourceSelectedKeys, value);
120
111
  };
121
112
  var sourceDatum = useListSelectMultiple({
122
113
  value: sourceSelectedKeys,
@@ -72,7 +72,7 @@ export var addResizeObserver = function addResizeObserver(el, handler) {
72
72
  if (height && lastHeight !== height) {
73
73
  debounceHandler(entry);
74
74
  }
75
- } else if (width && height) {
75
+ } else if (lastWidth !== width || lastHeight !== height) {
76
76
  debounceHandler(entry, {
77
77
  x: lastWidth !== width,
78
78
  y: lastHeight !== height
package/esm/utils/is.d.ts CHANGED
@@ -21,6 +21,7 @@ export declare const isPromise: (p: unknown) => unknown;
21
21
  export declare const isNan: (a: unknown) => boolean;
22
22
  export declare const isEmpty: (val: unknown) => boolean;
23
23
  export declare const isLink: (el: unknown) => el is React.ReactElement<any, string | React.JSXElementConstructor<any>>;
24
+ export declare function isNamedComponent(type: any): type is React.ForwardRefExoticComponent<unknown>;
24
25
  export declare const isMacOS: () => boolean;
25
26
  export declare const isFirefox: () => boolean;
26
27
  export declare const isChromeLowerThan: (version: number) => boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"is.d.ts","sourceRoot":"","sources":["is.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AACxE,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,wBAAgB,SAAS,YAExB;AASD,eAAO,MAAM,OAAO,4BAAgB,CAAC;AACrC,eAAO,MAAM,QAAQ,QAAS,OAAO,sBACc,CAAC;AACpD,eAAO,MAAM,MAAM,QAAS,OAAO,gBAAqC,CAAC;AACzE,eAAO,MAAM,SAAS,QAAS,OAAO,mBAA2C,CAAC;AAClF,eAAO,MAAM,OAAO,QAAS,OAAO,KAAG,OAA+B,CAAC;AACvE,eAAO,MAAM,QAAQ,MAAO,OAAO,gBAAuC,CAAC;AAC3E,eAAO,MAAM,QAAQ,QAAS,OAAO,KAAG,OAAgC,CAAC;AACzE,eAAO,MAAM,QAAQ,MAAO,OAAO,gBAAuC,CAAC;AAC3E,eAAO,MAAM,WAAW,QAAS,GAAG,qBAAwC,CAAC;AAC7E,eAAO,MAAM,KAAK,QAjBsB,OAAO,mBAiBb,CAAC;AACnC,eAAO,MAAM,KAAK,QAlBsB,OAAO,mBAkBb,CAAC;AACnC,eAAO,MAAM,QAAQ,QAAS,OAAO,KAAG,OAUvC,CAAC;AACF,eAAO,MAAM,eAAe,QAAS,OAAO,yBAE3C,CAAC;AACF,eAAO,MAAM,WAAW,QAAS,OAAO,KAAG,OAS1C,CAAC;AAEF,eAAO,MAAM,MAAM,MAAO,OAAO,kBAA2C,CAAC;AAE7E,eAAO,MAAM,SAAS,MAAO,OAAO,YACiC,CAAC;AAGtE,eAAO,MAAM,KAAK,MAAO,OAAO,KAAG,OAAkB,CAAC;AAEtD,eAAO,MAAM,OAAO,QAAS,OAAO,KAAG,OActC,CAAC;AAEF,eAAO,MAAM,MAAM,OAAQ,OAAO,6EASjC,CAAC;AAEF,eAAO,MAAM,OAAO,QAAO,OACqC,CAAC;AAEjE,eAAO,MAAM,SAAS,QAAO,OAG5B,CAAC;AAEF,eAAO,MAAM,iBAAiB,YAAa,MAAM,KAAG,OASnD,CAAC;AAEF,wBAAgB,YAAY,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,IAAI,WAAW,CAQjE"}
1
+ {"version":3,"file":"is.d.ts","sourceRoot":"","sources":["is.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AACxE,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,wBAAgB,SAAS,YAExB;AASD,eAAO,MAAM,OAAO,4BAAgB,CAAC;AACrC,eAAO,MAAM,QAAQ,QAAS,OAAO,sBACc,CAAC;AACpD,eAAO,MAAM,MAAM,QAAS,OAAO,gBAAqC,CAAC;AACzE,eAAO,MAAM,SAAS,QAAS,OAAO,mBAA2C,CAAC;AAClF,eAAO,MAAM,OAAO,QAAS,OAAO,KAAG,OAA+B,CAAC;AACvE,eAAO,MAAM,QAAQ,MAAO,OAAO,gBAAuC,CAAC;AAC3E,eAAO,MAAM,QAAQ,QAAS,OAAO,KAAG,OAAgC,CAAC;AACzE,eAAO,MAAM,QAAQ,MAAO,OAAO,gBAAuC,CAAC;AAC3E,eAAO,MAAM,WAAW,QAAS,GAAG,qBAAwC,CAAC;AAC7E,eAAO,MAAM,KAAK,QAjBsB,OAAO,mBAiBb,CAAC;AACnC,eAAO,MAAM,KAAK,QAlBsB,OAAO,mBAkBb,CAAC;AACnC,eAAO,MAAM,QAAQ,QAAS,OAAO,KAAG,OAUvC,CAAC;AACF,eAAO,MAAM,eAAe,QAAS,OAAO,yBAE3C,CAAC;AACF,eAAO,MAAM,WAAW,QAAS,OAAO,KAAG,OAS1C,CAAC;AAEF,eAAO,MAAM,MAAM,MAAO,OAAO,kBAA2C,CAAC;AAE7E,eAAO,MAAM,SAAS,MAAO,OAAO,YACiC,CAAC;AAGtE,eAAO,MAAM,KAAK,MAAO,OAAO,KAAG,OAAkB,CAAC;AAEtD,eAAO,MAAM,OAAO,QAAS,OAAO,KAAG,OActC,CAAC;AAEF,eAAO,MAAM,MAAM,OAAQ,OAAO,6EASjC,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAE5F;AAED,eAAO,MAAM,OAAO,QAAO,OACqC,CAAC;AAEjE,eAAO,MAAM,SAAS,QAAO,OAG5B,CAAC;AAEF,eAAO,MAAM,iBAAiB,YAAa,MAAM,KAAG,OASnD,CAAC;AAEF,wBAAgB,YAAY,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,IAAI,WAAW,CAQjE"}
package/esm/utils/is.js CHANGED
@@ -85,6 +85,9 @@ export var isLink = function isLink(el) {
85
85
  }
86
86
  return false;
87
87
  };
88
+ export function isNamedComponent(type) {
89
+ return (isObject(type) || isFunc(type)) && type.hasOwnProperty('displayName');
90
+ }
88
91
  export var isMacOS = function isMacOS() {
89
92
  return isBrowser() && /macintosh|mac os x/i.test(navigator.userAgent);
90
93
  };
@@ -1,2 +1,2 @@
1
- export declare const getPosition: (target: HTMLElement | null, priorityDirection: "vertical" | "horizontal" | "auto" | undefined, mode: 'popover' | 'menu' | 'list') => "bottom" | "left" | "right" | "top" | "top-left" | "top-right" | "bottom-left" | "bottom-right" | "left-top" | "left-bottom" | "right-top" | "right-bottom";
1
+ export declare const getPosition: (target: HTMLElement | null, priorityDirection: "vertical" | "horizontal" | "auto" | undefined, mode: 'popover' | 'menu' | 'list', popup?: HTMLElement) => "bottom" | "left" | "right" | "top" | "top-left" | "top-right" | "bottom-left" | "bottom-right" | "left-top" | "left-bottom" | "right-top" | "right-bottom";
2
2
  //# sourceMappingURL=position.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"position.d.ts","sourceRoot":"","sources":["position.ts"],"names":[],"mappings":"AAgFA,eAAO,MAAM,WAAW,WACd,WAAW,GAAG,IAAI,2EAEpB,SAAS,GAAG,MAAM,GAAG,MAAM,gKAKlC,CAAC"}
1
+ {"version":3,"file":"position.d.ts","sourceRoot":"","sources":["position.ts"],"names":[],"mappings":"AAiGA,eAAO,MAAM,WAAW,WACd,WAAW,GAAG,IAAI,2EAEpB,SAAS,GAAG,MAAM,GAAG,MAAM,UACzB,WAAW,gKAKpB,CAAC"}
@@ -35,6 +35,7 @@ var getMenuPosition = function getMenuPosition(target) {
35
35
  };
36
36
  var getPopoverPosition = function getPopoverPosition(target) {
37
37
  var priorityDirection = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'vertical';
38
+ var popup = arguments.length > 2 ? arguments[2] : undefined;
38
39
  var position = 'bottom-left';
39
40
  if (!target) return position;
40
41
  var rect = target.getBoundingClientRect();
@@ -56,11 +57,24 @@ var getPopoverPosition = function getPopoverPosition(target) {
56
57
  position += '-top';
57
58
  }
58
59
  } else {
60
+ var popupRect = popup === null || popup === void 0 ? void 0 : popup.getBoundingClientRect();
59
61
  if (verticalPoint > windowHeight / 2) position = 'top';else position = 'bottom';
60
- if (horizontalPoint > windowWidth * 0.6) {
61
- position += '-right';
62
- } else if (horizontalPoint < windowWidth * 0.4) {
63
- position += '-left';
62
+
63
+ // 如果渲染了弹出内容,则根据弹出内容宽度计算是否自动调整位置
64
+ if (popupRect) {
65
+ if ((popupRect === null || popupRect === void 0 ? void 0 : popupRect.width) / 2 > rect.left) {
66
+ position += '-left';
67
+ }
68
+ if ((popupRect === null || popupRect === void 0 ? void 0 : popupRect.width) / 2 > windowWidth - rect.right) {
69
+ position += '-right';
70
+ }
71
+ } else {
72
+ // 兜底计算
73
+ if (horizontalPoint > windowWidth * 0.6) {
74
+ position += '-right';
75
+ } else if (horizontalPoint < windowWidth * 0.4) {
76
+ position += '-left';
77
+ }
64
78
  }
65
79
  }
66
80
  return position;
@@ -68,7 +82,8 @@ var getPopoverPosition = function getPopoverPosition(target) {
68
82
  export var getPosition = function getPosition(target) {
69
83
  var priorityDirection = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'vertical';
70
84
  var mode = arguments.length > 2 ? arguments[2] : undefined;
71
- if (mode === 'popover') return getPopoverPosition(target, priorityDirection);
85
+ var popup = arguments.length > 3 ? arguments[3] : undefined;
86
+ if (mode === 'popover') return getPopoverPosition(target, priorityDirection, popup);
72
87
  if (mode === 'menu') return getMenuPosition(target, priorityDirection);
73
88
  return 'bottom-left';
74
89
  };