@rc-component/trigger 3.6.15 → 3.7.0

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/README.md CHANGED
@@ -9,10 +9,10 @@ React Trigger Component
9
9
  [![bundle size][bundlephobia-image]][bundlephobia-url]
10
10
  [![dumi][dumi-image]][dumi-url]
11
11
 
12
- [npm-image]: http://img.shields.io/npm/v/@rc-component/trigger.svg?style=flat-square
13
- [npm-url]: http://npmjs.org/package/@rc-component/trigger
14
- [github-actions-image]: https://github.com/react-component/trigger/workflows/CI/badge.svg
15
- [github-actions-url]: https://github.com/react-component/trigger/actions
12
+ [npm-image]: https://img.shields.io/npm/v/@rc-component/trigger.svg?style=flat-square
13
+ [npm-url]: https://npmjs.org/package/@rc-component/trigger
14
+ [github-actions-image]: https://github.com/react-component/trigger/actions/workflows/main.yml/badge.svg
15
+ [github-actions-url]: https://github.com/react-component/trigger/actions/workflows/main.yml
16
16
  [codecov-image]: https://img.shields.io/codecov/c/github/react-component/trigger/master.svg?style=flat-square
17
17
  [codecov-url]: https://codecov.io/gh/react-component/trigger/branch/master
18
18
  [david-url]: https://david-dm.org/react-component/trigger
package/es/Popup/Arrow.js CHANGED
@@ -1,4 +1,4 @@
1
- import classNames from 'classnames';
1
+ import { clsx } from 'clsx';
2
2
  import * as React from 'react';
3
3
  export default function Arrow(props) {
4
4
  const {
@@ -55,7 +55,7 @@ export default function Arrow(props) {
55
55
  }
56
56
  return /*#__PURE__*/React.createElement("div", {
57
57
  ref: arrowRef,
58
- className: classNames(`${prefixCls}-arrow`, className),
58
+ className: clsx(`${prefixCls}-arrow`, className),
59
59
  style: {
60
60
  ...alignStyle,
61
61
  ...style
package/es/Popup/Mask.js CHANGED
@@ -1,5 +1,5 @@
1
1
  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
- import classNames from 'classnames';
2
+ import { clsx } from 'clsx';
3
3
  import CSSMotion from '@rc-component/motion';
4
4
  import * as React from 'react';
5
5
  export default function Mask(props) {
@@ -24,6 +24,6 @@ export default function Mask(props) {
24
24
  style: {
25
25
  zIndex
26
26
  },
27
- className: classNames(`${prefixCls}-mask`, mobile && `${prefixCls}-mobile-mask`, className)
27
+ className: clsx(`${prefixCls}-mask`, mobile && `${prefixCls}-mobile-mask`, className)
28
28
  }));
29
29
  }
package/es/Popup/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  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
- import classNames from 'classnames';
2
+ import { clsx } from 'clsx';
3
3
  import CSSMotion from '@rc-component/motion';
4
4
  import ResizeObserver from '@rc-component/resize-observer';
5
5
  import useLayoutEffect from "@rc-component/util/es/hooks/useLayoutEffect";
@@ -151,7 +151,7 @@ const Popup = /*#__PURE__*/React.forwardRef((props, ref) => {
151
151
  className: motionClassName,
152
152
  style: motionStyle
153
153
  }, motionRef) => {
154
- const cls = classNames(prefixCls, motionClassName, className, {
154
+ const cls = clsx(prefixCls, motionClassName, className, {
155
155
  [`${prefixCls}-mobile`]: isMobile
156
156
  });
157
157
  return /*#__PURE__*/React.createElement("div", {
@@ -1,7 +1,7 @@
1
1
  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
2
  import React from 'react';
3
3
  import useOffsetStyle from "../hooks/useOffsetStyle";
4
- import classNames from 'classnames';
4
+ import { clsx } from 'clsx';
5
5
  import CSSMotion from '@rc-component/motion';
6
6
  const UniqueContainer = props => {
7
7
  const {
@@ -57,7 +57,7 @@ const UniqueContainer = props => {
57
57
  className: motionClassName,
58
58
  style: motionStyle
59
59
  }) => {
60
- const cls = classNames(containerCls, motionClassName, uniqueContainerClassName, {
60
+ const cls = clsx(containerCls, motionClassName, uniqueContainerClassName, {
61
61
  [`${containerCls}-visible`]: motionVisible
62
62
  });
63
63
  return /*#__PURE__*/React.createElement("div", {
@@ -8,7 +8,7 @@ import { useEvent } from '@rc-component/util';
8
8
  import useTargetState from "./useTargetState";
9
9
  import { isDOM } from "@rc-component/util/es/Dom/findDOMNode";
10
10
  import UniqueContainer from "./UniqueContainer";
11
- import classNames from 'classnames';
11
+ import { clsx } from 'clsx';
12
12
  import { getAlignPopupClassName } from "../util";
13
13
  const UniqueProvider = ({
14
14
  children,
@@ -82,7 +82,7 @@ const UniqueProvider = ({
82
82
  }
83
83
  const baseClassName = getAlignPopupClassName(mergedOptions.builtinPlacements || {}, mergedOptions.prefixCls || '', alignInfo, false // alignPoint is false for UniqueProvider
84
84
  );
85
- return classNames(baseClassName, mergedOptions.getPopupClassNameFromAlign?.(alignInfo));
85
+ return clsx(baseClassName, mergedOptions.getPopupClassNameFromAlign?.(alignInfo));
86
86
  }, [alignInfo, mergedOptions?.getPopupClassNameFromAlign, mergedOptions?.builtinPlacements, mergedOptions?.prefixCls]);
87
87
  const contextValue = React.useMemo(() => ({
88
88
  show,
@@ -121,7 +121,7 @@ const UniqueProvider = ({
121
121
  portal: Portal,
122
122
  prefixCls: prefixCls,
123
123
  popup: mergedOptions.popup,
124
- className: classNames(mergedOptions.popupClassName, alignedClassName, `${prefixCls}-unique-controlled`),
124
+ className: clsx(mergedOptions.popupClassName, alignedClassName, `${prefixCls}-unique-controlled`),
125
125
  style: mergedOptions.popupStyle,
126
126
  target: mergedOptions.target,
127
127
  open: open,
@@ -167,7 +167,7 @@ const UniqueProvider = ({
167
167
  },
168
168
  popupSize: popupSize,
169
169
  motion: mergedOptions.popupMotion,
170
- uniqueContainerClassName: classNames(mergedOptions.uniqueContainerClassName, alignedClassName),
170
+ uniqueContainerClassName: clsx(mergedOptions.uniqueContainerClassName, alignedClassName),
171
171
  uniqueContainerStyle: mergedOptions.uniqueContainerStyle
172
172
  }))));
173
173
  };
package/es/index.d.ts CHANGED
@@ -12,7 +12,9 @@ export interface TriggerRef {
12
12
  forceAlign: VoidFunction;
13
13
  }
14
14
  export interface TriggerProps {
15
- children: React.ReactElement<any>;
15
+ children: React.ReactElement<any> | ((info: {
16
+ open: boolean;
17
+ }) => React.ReactElement<any>);
16
18
  action?: ActionType | ActionType[];
17
19
  showAction?: ActionType[];
18
20
  hideAction?: ActionType[];
package/es/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import Portal from '@rc-component/portal';
2
- import classNames from 'classnames';
2
+ import { clsx } from 'clsx';
3
3
  import ResizeObserver from '@rc-component/resize-observer';
4
4
  import { isDOM } from "@rc-component/util/es/Dom/findDOMNode";
5
5
  import { getShadowRoot } from "@rc-component/util/es/Dom/shadow";
@@ -125,10 +125,6 @@ export function generateTrigger(PortalComponent = Portal) {
125
125
  externalForwardRef.current = node;
126
126
  }
127
127
  });
128
-
129
- // ========================== Children ==========================
130
- const child = React.Children.only(children);
131
- const originChildProps = child?.props || {};
132
128
  const cloneProps = {};
133
129
  const inPopupOrChild = useEvent(ele => {
134
130
  const childDOM = targetEle;
@@ -147,6 +143,15 @@ export function generateTrigger(PortalComponent = Portal) {
147
143
  // Render still use props as first priority
148
144
  const mergedOpen = popupVisible ?? internalOpen;
149
145
 
146
+ // ========================== Children ==========================
147
+ const child = React.useMemo(() => {
148
+ const nextChild = typeof children === 'function' ? children({
149
+ open: mergedOpen
150
+ }) : children;
151
+ return React.Children.only(nextChild);
152
+ }, [children, mergedOpen]);
153
+ const originChildProps = child?.props || {};
154
+
150
155
  // We use effect sync here in case `popupVisible` back to `undefined`
151
156
  const setMergedOpen = useEvent(nextOpen => {
152
157
  if (openUncontrolled) {
@@ -281,7 +286,7 @@ export function generateTrigger(PortalComponent = Portal) {
281
286
  }, [JSON.stringify(popupAlign)]);
282
287
  const alignedClassName = React.useMemo(() => {
283
288
  const baseClassName = getAlignPopupClassName(builtinPlacements, prefixCls, alignInfo, alignPoint);
284
- return classNames(baseClassName, getPopupClassNameFromAlign?.(alignInfo));
289
+ return clsx(baseClassName, getPopupClassNameFromAlign?.(alignInfo));
285
290
  }, [alignInfo, getPopupClassNameFromAlign, builtinPlacements, prefixCls, alignPoint]);
286
291
 
287
292
  // ============================ Refs ============================
@@ -493,7 +498,7 @@ export function generateTrigger(PortalComponent = Portal) {
493
498
  ref: setPopupRef,
494
499
  prefixCls: prefixCls,
495
500
  popup: popup,
496
- className: classNames(popupClassName, !isMobile && alignedClassName),
501
+ className: clsx(popupClassName, !isMobile && alignedClassName),
497
502
  style: popupStyle,
498
503
  target: targetEle,
499
504
  onMouseEnter: onPopupMouseEnter,
@@ -4,11 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = Arrow;
7
- var _classnames = _interopRequireDefault(require("classnames"));
7
+ var _clsx = require("clsx");
8
8
  var React = _interopRequireWildcard(require("react"));
9
9
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
10
10
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
11
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
11
  function Arrow(props) {
13
12
  const {
14
13
  prefixCls,
@@ -64,7 +63,7 @@ function Arrow(props) {
64
63
  }
65
64
  return /*#__PURE__*/React.createElement("div", {
66
65
  ref: arrowRef,
67
- className: (0, _classnames.default)(`${prefixCls}-arrow`, className),
66
+ className: (0, _clsx.clsx)(`${prefixCls}-arrow`, className),
68
67
  style: {
69
68
  ...alignStyle,
70
69
  ...style
package/lib/Popup/Mask.js CHANGED
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = Mask;
7
- var _classnames = _interopRequireDefault(require("classnames"));
7
+ var _clsx = require("clsx");
8
8
  var _motion = _interopRequireDefault(require("@rc-component/motion"));
9
9
  var React = _interopRequireWildcard(require("react"));
10
10
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
@@ -33,6 +33,6 @@ function Mask(props) {
33
33
  style: {
34
34
  zIndex
35
35
  },
36
- className: (0, _classnames.default)(`${prefixCls}-mask`, mobile && `${prefixCls}-mobile-mask`, className)
36
+ className: (0, _clsx.clsx)(`${prefixCls}-mask`, mobile && `${prefixCls}-mobile-mask`, className)
37
37
  }));
38
38
  }
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _classnames = _interopRequireDefault(require("classnames"));
7
+ var _clsx = require("clsx");
8
8
  var _motion = _interopRequireDefault(require("@rc-component/motion"));
9
9
  var _resizeObserver = _interopRequireDefault(require("@rc-component/resize-observer"));
10
10
  var _useLayoutEffect = _interopRequireDefault(require("@rc-component/util/lib/hooks/useLayoutEffect"));
@@ -160,7 +160,7 @@ const Popup = /*#__PURE__*/React.forwardRef((props, ref) => {
160
160
  className: motionClassName,
161
161
  style: motionStyle
162
162
  }, motionRef) => {
163
- const cls = (0, _classnames.default)(prefixCls, motionClassName, className, {
163
+ const cls = (0, _clsx.clsx)(prefixCls, motionClassName, className, {
164
164
  [`${prefixCls}-mobile`]: isMobile
165
165
  });
166
166
  return /*#__PURE__*/React.createElement("div", {
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _react = _interopRequireDefault(require("react"));
8
8
  var _useOffsetStyle = _interopRequireDefault(require("../hooks/useOffsetStyle"));
9
- var _classnames = _interopRequireDefault(require("classnames"));
9
+ var _clsx = require("clsx");
10
10
  var _motion = _interopRequireDefault(require("@rc-component/motion"));
11
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
12
  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); }
@@ -64,7 +64,7 @@ const UniqueContainer = props => {
64
64
  className: motionClassName,
65
65
  style: motionStyle
66
66
  }) => {
67
- const cls = (0, _classnames.default)(containerCls, motionClassName, uniqueContainerClassName, {
67
+ const cls = (0, _clsx.clsx)(containerCls, motionClassName, uniqueContainerClassName, {
68
68
  [`${containerCls}-visible`]: motionVisible
69
69
  });
70
70
  return /*#__PURE__*/_react.default.createElement("div", {
@@ -14,7 +14,7 @@ var _util = require("@rc-component/util");
14
14
  var _useTargetState = _interopRequireDefault(require("./useTargetState"));
15
15
  var _findDOMNode = require("@rc-component/util/lib/Dom/findDOMNode");
16
16
  var _UniqueContainer = _interopRequireDefault(require("./UniqueContainer"));
17
- var _classnames = _interopRequireDefault(require("classnames"));
17
+ var _clsx = require("clsx");
18
18
  var _util2 = require("../util");
19
19
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
20
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
@@ -91,7 +91,7 @@ const UniqueProvider = ({
91
91
  }
92
92
  const baseClassName = (0, _util2.getAlignPopupClassName)(mergedOptions.builtinPlacements || {}, mergedOptions.prefixCls || '', alignInfo, false // alignPoint is false for UniqueProvider
93
93
  );
94
- return (0, _classnames.default)(baseClassName, mergedOptions.getPopupClassNameFromAlign?.(alignInfo));
94
+ return (0, _clsx.clsx)(baseClassName, mergedOptions.getPopupClassNameFromAlign?.(alignInfo));
95
95
  }, [alignInfo, mergedOptions?.getPopupClassNameFromAlign, mergedOptions?.builtinPlacements, mergedOptions?.prefixCls]);
96
96
  const contextValue = React.useMemo(() => ({
97
97
  show,
@@ -130,7 +130,7 @@ const UniqueProvider = ({
130
130
  portal: _portal.default,
131
131
  prefixCls: prefixCls,
132
132
  popup: mergedOptions.popup,
133
- className: (0, _classnames.default)(mergedOptions.popupClassName, alignedClassName, `${prefixCls}-unique-controlled`),
133
+ className: (0, _clsx.clsx)(mergedOptions.popupClassName, alignedClassName, `${prefixCls}-unique-controlled`),
134
134
  style: mergedOptions.popupStyle,
135
135
  target: mergedOptions.target,
136
136
  open: open,
@@ -176,7 +176,7 @@ const UniqueProvider = ({
176
176
  },
177
177
  popupSize: popupSize,
178
178
  motion: mergedOptions.popupMotion,
179
- uniqueContainerClassName: (0, _classnames.default)(mergedOptions.uniqueContainerClassName, alignedClassName),
179
+ uniqueContainerClassName: (0, _clsx.clsx)(mergedOptions.uniqueContainerClassName, alignedClassName),
180
180
  uniqueContainerStyle: mergedOptions.uniqueContainerStyle
181
181
  }))));
182
182
  };
package/lib/index.d.ts CHANGED
@@ -12,7 +12,9 @@ export interface TriggerRef {
12
12
  forceAlign: VoidFunction;
13
13
  }
14
14
  export interface TriggerProps {
15
- children: React.ReactElement<any>;
15
+ children: React.ReactElement<any> | ((info: {
16
+ open: boolean;
17
+ }) => React.ReactElement<any>);
16
18
  action?: ActionType | ActionType[];
17
19
  showAction?: ActionType[];
18
20
  hideAction?: ActionType[];
package/lib/index.js CHANGED
@@ -12,7 +12,7 @@ Object.defineProperty(exports, "UniqueProvider", {
12
12
  exports.default = void 0;
13
13
  exports.generateTrigger = generateTrigger;
14
14
  var _portal = _interopRequireDefault(require("@rc-component/portal"));
15
- var _classnames = _interopRequireDefault(require("classnames"));
15
+ var _clsx = require("clsx");
16
16
  var _resizeObserver = _interopRequireDefault(require("@rc-component/resize-observer"));
17
17
  var _findDOMNode = require("@rc-component/util/lib/Dom/findDOMNode");
18
18
  var _shadow = require("@rc-component/util/lib/Dom/shadow");
@@ -139,10 +139,6 @@ function generateTrigger(PortalComponent = _portal.default) {
139
139
  externalForwardRef.current = node;
140
140
  }
141
141
  });
142
-
143
- // ========================== Children ==========================
144
- const child = React.Children.only(children);
145
- const originChildProps = child?.props || {};
146
142
  const cloneProps = {};
147
143
  const inPopupOrChild = (0, _useEvent.default)(ele => {
148
144
  const childDOM = targetEle;
@@ -161,6 +157,15 @@ function generateTrigger(PortalComponent = _portal.default) {
161
157
  // Render still use props as first priority
162
158
  const mergedOpen = popupVisible ?? internalOpen;
163
159
 
160
+ // ========================== Children ==========================
161
+ const child = React.useMemo(() => {
162
+ const nextChild = typeof children === 'function' ? children({
163
+ open: mergedOpen
164
+ }) : children;
165
+ return React.Children.only(nextChild);
166
+ }, [children, mergedOpen]);
167
+ const originChildProps = child?.props || {};
168
+
164
169
  // We use effect sync here in case `popupVisible` back to `undefined`
165
170
  const setMergedOpen = (0, _useEvent.default)(nextOpen => {
166
171
  if (openUncontrolled) {
@@ -295,7 +300,7 @@ function generateTrigger(PortalComponent = _portal.default) {
295
300
  }, [JSON.stringify(popupAlign)]);
296
301
  const alignedClassName = React.useMemo(() => {
297
302
  const baseClassName = (0, _util.getAlignPopupClassName)(builtinPlacements, prefixCls, alignInfo, alignPoint);
298
- return (0, _classnames.default)(baseClassName, getPopupClassNameFromAlign?.(alignInfo));
303
+ return (0, _clsx.clsx)(baseClassName, getPopupClassNameFromAlign?.(alignInfo));
299
304
  }, [alignInfo, getPopupClassNameFromAlign, builtinPlacements, prefixCls, alignPoint]);
300
305
 
301
306
  // ============================ Refs ============================
@@ -507,7 +512,7 @@ function generateTrigger(PortalComponent = _portal.default) {
507
512
  ref: setPopupRef,
508
513
  prefixCls: prefixCls,
509
514
  popup: popup,
510
- className: (0, _classnames.default)(popupClassName, !isMobile && alignedClassName),
515
+ className: (0, _clsx.clsx)(popupClassName, !isMobile && alignedClassName),
511
516
  style: popupStyle,
512
517
  target: targetEle,
513
518
  onMouseEnter: onPopupMouseEnter,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rc-component/trigger",
3
- "version": "3.6.15",
3
+ "version": "3.7.0",
4
4
  "description": "base abstract trigger component for react",
5
5
  "engines": {
6
6
  "node": ">=8.x"
@@ -45,14 +45,13 @@
45
45
  "@rc-component/portal": "^2.0.0",
46
46
  "@rc-component/resize-observer": "^1.0.0",
47
47
  "@rc-component/util": "^1.2.1",
48
- "classnames": "^2.3.2"
48
+ "clsx": "^2.1.1"
49
49
  },
50
50
  "devDependencies": {
51
51
  "@rc-component/father-plugin": "^2.0.0",
52
52
  "@rc-component/np": "^1.0.3",
53
53
  "@testing-library/jest-dom": "^6.1.4",
54
54
  "@testing-library/react": "^16.0.0",
55
- "@types/classnames": "^2.2.10",
56
55
  "@types/jest": "^29.5.2",
57
56
  "@types/node": "^24.0.3",
58
57
  "@types/react": "^19.1.2",