@nutui/nutui-react-taro 2.0.0-alpha.1 → 2.0.0-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.
Files changed (47) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/esm/Address.js +2 -2
  3. package/dist/esm/Animate.js +2 -3
  4. package/dist/esm/Badge.js +1 -3
  5. package/dist/esm/Divider.js +2 -1
  6. package/dist/esm/Drag.js +2 -3
  7. package/dist/esm/Elevator.js +3 -3
  8. package/dist/esm/Menu.js +1 -1
  9. package/dist/esm/MenuItem.js +3 -4
  10. package/dist/esm/NavBar.js +1 -4
  11. package/dist/esm/Progress.js +1 -4
  12. package/dist/esm/Uploader.js +2 -4
  13. package/dist/esm/{address.taro-632ca799.js → address.taro-2f915873.js} +2 -2
  14. package/dist/esm/{animate.taro-fb7986d6.js → animate.taro-9e65d07a.js} +4 -3
  15. package/dist/esm/{badge.taro-ae154f41.js → badge.taro-1d5df601.js} +11 -16
  16. package/dist/esm/{divider.taro-6c1657ce.js → divider.taro-67e9f757.js} +2 -0
  17. package/dist/esm/{drag.taro-79bb8744.js → drag.taro-2d3d9d11.js} +4 -3
  18. package/dist/esm/{elevator.taro-81a11ecc.js → elevator.taro-588e219b.js} +31 -24
  19. package/dist/esm/menu.taro-b61442a7.js +111 -0
  20. package/dist/esm/{menuitem.taro-86a6bb6c.js → menuitem.taro-bca78e07.js} +31 -30
  21. package/dist/esm/navbar.taro-02c69d66.js +57 -0
  22. package/dist/esm/nutui-react.es.js +13 -13
  23. package/dist/esm/progress.taro-1c199fbe.js +40 -0
  24. package/dist/esm/{uploader.taro-2151eec6.js → uploader.taro-17569890.js} +2 -2
  25. package/dist/locales/base.js +1 -1
  26. package/dist/locales/en-US.js +1 -1
  27. package/dist/locales/id-ID.js +1 -1
  28. package/dist/locales/zh-CN.js +1 -1
  29. package/dist/locales/zh-TW.js +1 -1
  30. package/dist/locales/zh-UG.js +1 -1
  31. package/dist/nutui.react.mjs +702 -795
  32. package/dist/nutui.react.umd.js +702 -795
  33. package/dist/packages/badge/badge.scss +8 -17
  34. package/dist/packages/elevator/elevator.scss +2 -28
  35. package/dist/packages/menu/menu.scss +44 -55
  36. package/dist/packages/menuitem/menuitem.scss +16 -26
  37. package/dist/packages/navbar/navbar.scss +16 -115
  38. package/dist/packages/progress/progress.scss +19 -58
  39. package/dist/style.css +1 -1
  40. package/dist/style.mjs +1 -1
  41. package/dist/styles/variables-jmapp.scss +23 -114
  42. package/dist/styles/variables.scss +31 -122
  43. package/dist/types/index.d.ts +18 -51
  44. package/package.json +1 -1
  45. package/dist/esm/menu.taro-54951911.js +0 -98
  46. package/dist/esm/navbar.taro-69f47d51.js +0 -77
  47. package/dist/esm/progress.taro-24392ef3.js +0 -88
package/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ # v2.0.0-alpha.2
2
+ `2023-04-26`
3
+
4
+ * 🛠 refactor: navbar (#890) @拧巴的猫
5
+ * 🛠 refactor: animate (#940) @junjun666
6
+ * 🛠 refactor: badge (#936) @xiaoyatong
7
+ * 🛠 refactor: drag (#937) @拧巴的猫
8
+ * 🛠 refactor: elevator (#927) @拧巴的猫
9
+ * 🛠 refactor: menu (#923) @oasis-cloud
10
+ * 🛠 refactor: progress (#943) @Eiinu
11
+ * 🔨 chore: sync pnpm-lock @oasis-cloud
12
+ * :bug: fix: 修改taro增加主题编译 (#950) @junjun666
13
+
14
+
1
15
  # v2.0.0-alpha.1
2
16
  `2023-04-21`
3
17
 
@@ -1,4 +1,4 @@
1
- import { A as Address } from './address.taro-632ca799.js';
1
+ import { A as Address } from './address.taro-2f915873.js';
2
2
  import 'react';
3
3
  import '@nutui/icons-react-taro';
4
4
  import './popup.taro-020bf791.js';
@@ -14,7 +14,7 @@ import './configprovider-9960f0fb.js';
14
14
  import 'lodash.kebabcase';
15
15
  import './zh-CN-b4f493ba.js';
16
16
  import '@tarojs/taro';
17
- import './elevator.taro-81a11ecc.js';
17
+ import './elevator.taro-588e219b.js';
18
18
  import './configprovider.taro-c8c54556.js';
19
19
 
20
20
 
@@ -1,8 +1,7 @@
1
- import { A as Animate } from './animate.taro-fb7986d6.js';
1
+ import { A as Animate } from './animate.taro-9e65d07a.js';
2
2
  import 'react';
3
3
  import 'classnames';
4
- import './bem-350c1702.js';
5
- import '@bem-react/classname';
4
+ import './typings-d8491423.js';
6
5
 
7
6
 
8
7
 
package/dist/esm/Badge.js CHANGED
@@ -1,8 +1,6 @@
1
- import { B as Badge } from './badge.taro-ae154f41.js';
1
+ import { B as Badge } from './badge.taro-1d5df601.js';
2
2
  import 'react';
3
3
  import 'classnames';
4
- import './bem-350c1702.js';
5
- import '@bem-react/classname';
6
4
  import './typings-d8491423.js';
7
5
 
8
6
 
@@ -1,6 +1,7 @@
1
- import { D as Divider } from './divider.taro-6c1657ce.js';
1
+ import { D as Divider } from './divider.taro-67e9f757.js';
2
2
  import 'react';
3
3
  import 'classnames';
4
+ import './typings-d8491423.js';
4
5
 
5
6
 
6
7
 
package/dist/esm/Drag.js CHANGED
@@ -1,8 +1,7 @@
1
- import { D as Drag } from './drag.taro-79bb8744.js';
1
+ import { D as Drag } from './drag.taro-2d3d9d11.js';
2
2
  import 'react';
3
3
  import '@tarojs/taro';
4
- import './bem-350c1702.js';
5
- import '@bem-react/classname';
4
+ import './typings-d8491423.js';
6
5
 
7
6
 
8
7
 
@@ -1,9 +1,9 @@
1
- import { E as Elevator } from './elevator.taro-81a11ecc.js';
1
+ import { E as Elevator } from './elevator.taro-588e219b.js';
2
2
  import 'react';
3
3
  import '@tarojs/taro';
4
4
  import '@tarojs/components';
5
- import './bem-350c1702.js';
6
- import '@bem-react/classname';
5
+ import 'classnames';
6
+ import './typings-d8491423.js';
7
7
 
8
8
 
9
9
 
package/dist/esm/Menu.js CHANGED
@@ -1,4 +1,4 @@
1
- import { M as Menu } from './menu.taro-54951911.js';
1
+ import { M as Menu } from './menu.taro-b61442a7.js';
2
2
  import 'react';
3
3
  import 'classnames';
4
4
  import '@nutui/icons-react-taro';
@@ -1,14 +1,13 @@
1
- import { M as MenuItem } from './menuitem.taro-86a6bb6c.js';
1
+ import { M as MenuItem } from './menuitem.taro-bca78e07.js';
2
2
  import 'react';
3
3
  import 'classnames';
4
+ import '@tarojs/taro';
4
5
  import 'react-transition-group';
5
6
  import '@nutui/icons-react-taro';
6
- import './configprovider.taro-c8c54556.js';
7
- import 'lodash.kebabcase';
8
- import './zh-CN-b4f493ba.js';
9
7
  import './overlay.taro-ad0d4775.js';
10
8
  import '@tarojs/components';
11
9
  import './typings-d8491423.js';
10
+ import './use-client-rect-1f8ed1fe.js';
12
11
 
13
12
 
14
13
 
@@ -1,9 +1,6 @@
1
- import { N as NavBar } from './navbar.taro-69f47d51.js';
1
+ import { N as NavBar } from './navbar.taro-02c69d66.js';
2
2
  import 'react';
3
3
  import 'classnames';
4
- import '@nutui/icons-react-taro';
5
- import './bem-350c1702.js';
6
- import '@bem-react/classname';
7
4
  import './typings-d8491423.js';
8
5
 
9
6
 
@@ -1,9 +1,6 @@
1
- import { P as Progress } from './progress.taro-24392ef3.js';
1
+ import { P as Progress } from './progress.taro-1c199fbe.js';
2
2
  import 'react';
3
3
  import 'classnames';
4
- import '@nutui/icons-react-taro';
5
- import './bem-350c1702.js';
6
- import '@bem-react/classname';
7
4
  import './typings-d8491423.js';
8
5
 
9
6
 
@@ -1,4 +1,4 @@
1
- import { U as Uploader } from './uploader.taro-2151eec6.js';
1
+ import { U as Uploader } from './uploader.taro-17569890.js';
2
2
  import 'react';
3
3
  import 'classnames';
4
4
  import '@tarojs/taro';
@@ -6,9 +6,7 @@ import '@nutui/icons-react-taro';
6
6
  import '@tarojs/components';
7
7
  import './button.taro-a1c9512f.js';
8
8
  import './typings-d8491423.js';
9
- import './progress.taro-24392ef3.js';
10
- import './bem-350c1702.js';
11
- import '@bem-react/classname';
9
+ import './progress.taro-1c199fbe.js';
12
10
  import './configprovider.taro-c8c54556.js';
13
11
  import 'lodash.kebabcase';
14
12
  import './zh-CN-b4f493ba.js';
@@ -4,7 +4,7 @@ import { P as Popup } from './popup.taro-020bf791.js';
4
4
  import { c as cn } from './bem-350c1702.js';
5
5
  import { u as useConfig } from './configprovider-9960f0fb.js';
6
6
  import { createSelectorQuery } from '@tarojs/taro';
7
- import { E as Elevator } from './elevator.taro-81a11ecc.js';
7
+ import { E as Elevator } from './elevator.taro-588e219b.js';
8
8
  import { u as useConfig$1 } from './configprovider.taro-c8c54556.js';
9
9
  import { C as ComponentDefaults } from './typings-d8491423.js';
10
10
 
@@ -302,7 +302,7 @@ const CustomRender = (props) => {
302
302
  item.name)));
303
303
  })))),
304
304
  privateType === 'custom2' && (React__default.createElement("div", { className: b('elevator-group') },
305
- React__default.createElement(Elevator, { height: height, indexList: regionList[tabName[tabIndex]], onClickItem: handleElevatorItem })))));
305
+ React__default.createElement(Elevator, { height: height, list: regionList[tabName[tabIndex]], onClickItem: handleElevatorItem })))));
306
306
  };
307
307
 
308
308
  const defaultProps = {
@@ -1,23 +1,24 @@
1
1
  import React__default, { useState } from 'react';
2
2
  import classNames from 'classnames';
3
- import { c as cn } from './bem-350c1702.js';
3
+ import { C as ComponentDefaults } from './typings-d8491423.js';
4
4
 
5
5
  const defaultProps = {
6
+ ...ComponentDefaults,
6
7
  type: 'shake',
7
8
  action: 'initial',
8
9
  loop: false,
9
10
  onClick: (event) => { },
10
11
  };
12
+ const classPrefix = `nut-animate`;
11
13
  const Animate = (props) => {
12
14
  const { className, type, action, loop, onClick, children, ...rest } = {
13
15
  ...defaultProps,
14
16
  ...props,
15
17
  };
16
18
  const [clicked, setClicked] = useState(false);
17
- const b = cn('animate');
18
19
  const classes = classNames({
19
20
  'nut-ani-container': true,
20
- [`${b('')}-${type}`]: action === 'initial' || clicked ? type : false,
21
+ [`${classPrefix}-${type}`]: action === 'initial' || clicked ? type : false,
21
22
  loop: loop,
22
23
  });
23
24
  const cls = classNames(classes, className);
@@ -1,31 +1,27 @@
1
1
  import React__default from 'react';
2
2
  import classNames from 'classnames';
3
- import { c as cn } from './bem-350c1702.js';
4
3
  import { C as ComponentDefaults } from './typings-d8491423.js';
5
4
 
6
- const b = cn('badge');
7
5
  const defaultProps = {
8
6
  ...ComponentDefaults,
9
- className: '',
10
7
  value: '',
11
8
  dot: false,
12
- max: 10000,
9
+ max: 99,
13
10
  top: '0',
14
- right: '0',
15
- zIndex: '0',
11
+ right: '5',
16
12
  color: '',
17
- icon: null,
18
13
  };
19
14
  const Badge = (props) => {
20
- const { className, style, children, dot, top, right, zIndex, color, icon } = {
15
+ const { className, style, value, max, children, dot, top, right, color } = {
21
16
  ...defaultProps,
22
17
  ...props,
23
18
  };
19
+ const classPrefix = 'nut-badge';
20
+ const classes = classNames(classPrefix, className);
21
+ const contentClasses = classNames({ [`${classPrefix}__dot`]: dot }, `${classPrefix}__content`, `${classPrefix}__sup`);
24
22
  function content() {
25
- if (dot)
26
- return undefined;
27
- const { value } = props;
28
- const { max } = props;
23
+ if (dot || typeof value === 'object')
24
+ return null;
29
25
  if (typeof value === 'number' && typeof max === 'number') {
30
26
  return max < value ? `${max}+` : value;
31
27
  }
@@ -35,14 +31,13 @@ const Badge = (props) => {
35
31
  const style = {};
36
32
  style.top = `${Number(top) || parseFloat(top) || 0}px`;
37
33
  style.right = `${Number(right) || parseFloat(right) || 0}px`;
38
- style.zIndex = zIndex;
39
34
  style.background = color;
40
35
  return style;
41
36
  };
42
- return (React__default.createElement("div", { className: classNames(b(), className), style: style },
43
- icon && React__default.createElement("div", { className: "slot-icon" }, icon),
37
+ return (React__default.createElement("div", { className: classes, style: style },
38
+ typeof value === 'object' && value && (React__default.createElement("div", { className: `${classPrefix}__icon` }, value)),
44
39
  React__default.createElement("div", null, children),
45
- React__default.createElement("div", { className: classNames({ 'is-dot': dot }, b('content'), 'sup'), style: getStyle() }, content())));
40
+ React__default.createElement("div", { className: contentClasses, style: getStyle() }, content())));
46
41
  };
47
42
  Badge.defaultProps = defaultProps;
48
43
  Badge.displayName = 'NutBadge';
@@ -1,7 +1,9 @@
1
1
  import React__default from 'react';
2
2
  import classNames from 'classnames';
3
+ import { C as ComponentDefaults } from './typings-d8491423.js';
3
4
 
4
5
  const defaultProps = {
6
+ ...ComponentDefaults,
5
7
  contentPosition: 'center',
6
8
  direction: 'horizontal',
7
9
  };
@@ -1,8 +1,9 @@
1
1
  import React__default, { useState, useRef, useEffect } from 'react';
2
2
  import { getSystemInfoSync, createSelectorQuery } from '@tarojs/taro';
3
- import { c as cn } from './bem-350c1702.js';
3
+ import { C as ComponentDefaults } from './typings-d8491423.js';
4
4
 
5
5
  const defaultProps = {
6
+ ...ComponentDefaults,
6
7
  attract: false,
7
8
  direction: undefined,
8
9
  boundary: {
@@ -18,7 +19,7 @@ const Drag = (props) => {
18
19
  ...defaultProps,
19
20
  ...props,
20
21
  };
21
- const b = cn('drag');
22
+ const classPrefix = 'nut-drag';
22
23
  const [boundaryState, setBoundaryState] = useState(boundary);
23
24
  const myDrag = useRef(null);
24
25
  const dragRef = useRef(null);
@@ -99,7 +100,7 @@ const Drag = (props) => {
99
100
  clearTimeout(timer.current);
100
101
  };
101
102
  }, []);
102
- return (React__default.createElement("div", { style: style, className: `${b()} ${className}`, ...reset, ref: myDrag },
103
+ return (React__default.createElement("div", { style: style, className: `${classPrefix} ${className}`, ...reset, ref: myDrag },
103
104
  React__default.createElement("div", { onTouchStart: (event) => touchStart(event), ref: dragRef, onTouchMove: touchMove, onTouchEnd: touchEnd,
104
105
  // eslint-disable-next-line react/no-unknown-property
105
106
  style: currstyle }, children)));
@@ -1,24 +1,26 @@
1
1
  import React__default, { createContext, useRef, useState, useEffect } from 'react';
2
2
  import { nextTick, createSelectorQuery } from '@tarojs/taro';
3
3
  import { ScrollView } from '@tarojs/components';
4
- import { c as cn } from './bem-350c1702.js';
4
+ import classNames from 'classnames';
5
+ import { C as ComponentDefaults } from './typings-d8491423.js';
5
6
 
6
7
  const elevatorContext = createContext({});
7
8
  const defaultProps = {
9
+ ...ComponentDefaults,
8
10
  height: '200px',
9
- acceptKey: 'title',
10
- indexList: [],
11
- isSticky: false,
11
+ floorKey: 'title',
12
+ list: [],
13
+ sticky: false,
12
14
  spaceHeight: 23,
13
15
  titleHeight: 35,
14
16
  className: 'weapp-elevator',
15
17
  };
16
18
  const Elevator = (props) => {
17
- const { height, acceptKey, indexList, isSticky, spaceHeight, titleHeight, className, onClickItem, onClickIndex, children, ...rest } = {
19
+ const { height, floorKey, list, sticky, spaceHeight, titleHeight, className, style, onClickItem, onClickIndex, children, ...rest } = {
18
20
  ...defaultProps,
19
21
  ...props,
20
22
  };
21
- const b = cn('elevator');
23
+ const classPrefix = 'nut-elevator';
22
24
  const listview = useRef(null);
23
25
  const initData = {
24
26
  anchorIndex: 0,
@@ -53,7 +55,7 @@ const Elevator = (props) => {
53
55
  for (let i = 0; i < state.current.listGroup.length; i++) {
54
56
  const query = createSelectorQuery();
55
57
  query
56
- .selectAll(`.${className} .elevator__item__${i}`)
58
+ .selectAll(`.${className} .nut-elevator__item__${i}`)
57
59
  .boundingClientRect();
58
60
  // eslint-disable-next-line no-loop-func
59
61
  query.exec((res) => {
@@ -148,27 +150,32 @@ const Elevator = (props) => {
148
150
  });
149
151
  }
150
152
  }, [listview]);
151
- return (React__default.createElement("div", { className: `${b()} ${className} `, ...rest },
152
- isSticky && scrollTop > 0 ? (React__default.createElement("div", { className: b('list__fixed') },
153
- React__default.createElement("span", { className: "fixed-title" }, indexList[currentIndex][acceptKey]))) : null,
154
- React__default.createElement("div", { className: b('list'), style: { height: Number.isNaN(+height) ? height : `${height}px` } },
155
- React__default.createElement(ScrollView, { scrollTop: scrollTop, scrollY: true, type: "list", className: b('list__inner'), ref: listview, onScroll: listViewScroll }, indexList.map((item, idx) => {
156
- return (React__default.createElement("div", { className: `${b('list__item')} elevator__item__${idx}`, key: idx },
157
- React__default.createElement("div", { className: b('list__item__code') }, item[acceptKey]),
153
+ return (React__default.createElement("div", { className: `${classPrefix} ${className}`, style: style, ...rest },
154
+ sticky && scrollTop > 0 ? (React__default.createElement("div", { className: `${classPrefix}__list__fixed` },
155
+ React__default.createElement("span", { className: `${classPrefix}__list__fixed__title` }, list[currentIndex][floorKey]))) : null,
156
+ React__default.createElement("div", { className: `${classPrefix}__list`, style: { height: Number.isNaN(+height) ? height : `${height}px` } },
157
+ React__default.createElement(ScrollView, { scrollTop: scrollTop, scrollY: true, className: `${classPrefix}__list__inner`, type: "list", ref: listview, onScroll: listViewScroll }, list.map((item, idx) => {
158
+ return (React__default.createElement("div", { className: `${classPrefix}__list__item nut-elevator__item__${idx}`, key: idx },
159
+ React__default.createElement("div", { className: `${classPrefix}__list__item__code` }, item[floorKey]),
158
160
  React__default.createElement(React__default.Fragment, null, item.list.map((subitem) => {
159
- return (React__default.createElement("div", { className: b('list__item__name', {
160
- highcolor: currentData.id === subitem.id &&
161
- currentKey === item[acceptKey],
162
- }), key: subitem.id, onClick: () => handleClickItem(item[acceptKey], subitem) }, children ? (React__default.createElement(React__default.Fragment, null,
161
+ return (React__default.createElement("div", { className: classNames({
162
+ [`${classPrefix}__list__item__name`]: true,
163
+ [`${classPrefix}__list__item__name--highcolor`]: currentData.id === subitem.id &&
164
+ currentKey === item[floorKey],
165
+ }), key: subitem.id, onClick: () => handleClickItem(item[floorKey], subitem) }, children ? (React__default.createElement(React__default.Fragment, null,
163
166
  React__default.createElement(elevatorContext.Provider, { value: subitem }, children))) : (subitem.name)));
164
167
  }))));
165
168
  }))),
166
- indexList.length && scrollStart ? (React__default.createElement("div", { className: b('code--current', { current: true }) }, indexList[codeIndex][acceptKey])) : null,
167
- React__default.createElement("div", { className: b('bars') },
168
- React__default.createElement("div", { className: b('bars__inner'), onTouchStart: (event) => touchStart(event), onTouchMove: (event) => touchMove(event), onTouchEnd: touchEnd, style: { touchAction: 'pan-y' } }, indexList.map((item, index) => {
169
- return (React__default.createElement("div", { className: `${b('bars__inner__item', {
170
- active: item[acceptKey] === indexList[currentIndex][acceptKey],
171
- })} `, "data-index": index, key: index, onClick: () => handleClickIndex(item[acceptKey]) }, item[acceptKey]));
169
+ list.length && scrollStart ? (React__default.createElement("div", { className: classNames({
170
+ [`${classPrefix}__code--current`]: true,
171
+ [`${classPrefix}__code--current--current`]: true,
172
+ }) }, list[codeIndex][floorKey])) : null,
173
+ React__default.createElement("div", { className: `${classPrefix}__bars` },
174
+ React__default.createElement("div", { className: `${classPrefix}__bars__inner`, onTouchStart: (event) => touchStart(event), onTouchMove: (event) => touchMove(event), onTouchEnd: touchEnd, style: { touchAction: 'pan-y' } }, list.map((item, index) => {
175
+ return (React__default.createElement("div", { className: classNames({
176
+ [`${classPrefix}__bars__inner__item`]: true,
177
+ [`${classPrefix}__bars__inner__item--active`]: item[floorKey] === list[currentIndex][floorKey],
178
+ }), "data-index": index, key: index, onClick: () => handleClickIndex(item[floorKey]) }, item[floorKey]));
172
179
  })))));
173
180
  };
174
181
  Elevator.defaultProps = defaultProps;
@@ -0,0 +1,111 @@
1
+ import React__default, { useRef, useState, useEffect } from 'react';
2
+ import classNames from 'classnames';
3
+ import { ArrowUp2, ArrowDown2 } from '@nutui/icons-react-taro';
4
+ import { C as ComponentDefaults } from './typings-d8491423.js';
5
+
6
+ const defaultProps = {
7
+ ...ComponentDefaults,
8
+ activeColor: '',
9
+ closeOnClickOverlay: true,
10
+ scrollFixed: false,
11
+ lockScroll: true,
12
+ icon: null,
13
+ };
14
+ const Menu = (props) => {
15
+ const { className, icon, scrollFixed, lockScroll, closeOnClickOverlay, children, activeColor, ...rest } = {
16
+ ...defaultProps,
17
+ ...props,
18
+ };
19
+ const menuRef = useRef(null);
20
+ const [isScrollFixed, setIsScrollFixed] = useState(false);
21
+ const getScrollTop = (el) => {
22
+ return Math.max(0, 'scrollTop' in el ? el.scrollTop : el.pageYOffset);
23
+ };
24
+ const onScroll = () => {
25
+ const { scrollFixed } = props;
26
+ const scrollTop = getScrollTop(window);
27
+ const isFixed = scrollTop > (typeof scrollFixed === 'boolean' ? 30 : Number(scrollFixed));
28
+ setIsScrollFixed(isFixed);
29
+ };
30
+ useEffect(() => {
31
+ if (scrollFixed) {
32
+ window.addEventListener('scroll', onScroll);
33
+ }
34
+ return () => window.removeEventListener('scroll', onScroll);
35
+ }, []);
36
+ const [showMenuItem, setShowMenuItem] = useState([]);
37
+ const [menuItemTitle, setMenuItemTitle] = useState([]);
38
+ const toggleMenuItem = (index) => {
39
+ showMenuItem[index] = !showMenuItem[index];
40
+ const temp = showMenuItem.map((i, idx) => idx === index ? i : false);
41
+ setShowMenuItem([...temp]);
42
+ };
43
+ const hideMenuItem = (index) => {
44
+ showMenuItem[index] = false;
45
+ setShowMenuItem([...showMenuItem]);
46
+ };
47
+ const updateTitle = (text, index) => {
48
+ menuItemTitle[index] = text;
49
+ setMenuItemTitle([...menuItemTitle]);
50
+ };
51
+ const cloneChildren = () => {
52
+ return React__default.Children.map(children, (child, index) => {
53
+ return React__default.cloneElement(child, {
54
+ show: showMenuItem[index],
55
+ index,
56
+ activeColor,
57
+ parent: {
58
+ closeOnClickOverlay,
59
+ lockScroll,
60
+ toggleMenuItem,
61
+ updateTitle,
62
+ hideMenuItem,
63
+ menuRef,
64
+ },
65
+ });
66
+ });
67
+ };
68
+ const menuTitle = () => {
69
+ return React__default.Children.map(children, (child, index) => {
70
+ if (React__default.isValidElement(child)) {
71
+ const { title, options, value, disabled, direction } = child.props;
72
+ const selected = options?.filter((option) => option.value === value);
73
+ const finallyTitle = () => {
74
+ if (title)
75
+ return title;
76
+ if (menuItemTitle && menuItemTitle[index])
77
+ return menuItemTitle[index];
78
+ if (selected && selected.length && selected[0].text)
79
+ return selected[0].text;
80
+ return '';
81
+ };
82
+ return (React__default.createElement("div", { className: classNames('nut-menu__item ', className, {
83
+ active: showMenuItem[index],
84
+ disabled,
85
+ }), style: { color: showMenuItem[index] ? activeColor : '' }, key: index, onClick: () => {
86
+ !disabled && toggleMenuItem(index);
87
+ } },
88
+ React__default.createElement("div", { className: classNames('nut-menu__title ', {
89
+ active: showMenuItem[index],
90
+ disabled,
91
+ }) },
92
+ React__default.createElement("div", { className: "nut-menu__title-text" }, finallyTitle()),
93
+ icon ||
94
+ (direction === 'up' ? (React__default.createElement(ArrowUp2, { className: "nut-menu__title-icon", size: 10 })) : (React__default.createElement(ArrowDown2, { className: "nut-menu__title-icon", size: 10 }))))));
95
+ }
96
+ return null;
97
+ });
98
+ };
99
+ return (React__default.createElement("div", { ...rest, className: classNames(`nut-menu`, className, {
100
+ 'scroll-fixed': isScrollFixed,
101
+ }), ref: menuRef },
102
+ React__default.createElement("div", { className: "nut-menu-relative" },
103
+ React__default.createElement("div", { className: classNames('nut-menu__bar', {
104
+ opened: showMenuItem.includes(true),
105
+ }) }, menuTitle()),
106
+ cloneChildren())));
107
+ };
108
+ Menu.defaultProps = defaultProps;
109
+ Menu.displayName = 'NutMenu';
110
+
111
+ export { Menu as M };