@os-design-mobile/menu 1.0.64 → 1.0.65
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/MenuGroup.d.ts +12 -5
- package/dist/MenuGroup.d.ts.map +1 -1
- package/dist/MenuGroup.js +1 -1
- package/dist/MenuGroup.js.map +1 -1
- package/package.json +4 -4
package/dist/MenuGroup.d.ts
CHANGED
@@ -1,12 +1,19 @@
|
|
1
1
|
import React, { PropsWithChildren } from 'react';
|
2
2
|
import { View, ViewProps } from 'react-native';
|
3
|
-
|
3
|
+
interface BaseMenuGroupProps<T> extends PropsWithChildren<ViewProps> {
|
4
4
|
title?: string;
|
5
|
-
maxSelectedItems?: number
|
6
|
-
value?:
|
7
|
-
defaultValue?:
|
8
|
-
onChange?: (value:
|
5
|
+
maxSelectedItems?: number;
|
6
|
+
value?: T;
|
7
|
+
defaultValue?: T;
|
8
|
+
onChange?: (value: T) => void;
|
9
9
|
}
|
10
|
+
interface MenuGroupNotMultipleProps extends BaseMenuGroupProps<string | null> {
|
11
|
+
multiple?: false;
|
12
|
+
}
|
13
|
+
interface MenuGroupMultipleProps extends BaseMenuGroupProps<string[]> {
|
14
|
+
multiple: true;
|
15
|
+
}
|
16
|
+
export type MenuGroupProps = MenuGroupNotMultipleProps | MenuGroupMultipleProps;
|
10
17
|
declare const MenuGroup: React.ForwardRefExoticComponent<MenuGroupProps & React.RefAttributes<View>>;
|
11
18
|
export default MenuGroup;
|
12
19
|
//# sourceMappingURL=MenuGroup.d.ts.map
|
package/dist/MenuGroup.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"MenuGroup.d.ts","sourceRoot":"","sources":["../src/MenuGroup.tsx"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"MenuGroup.d.ts","sourceRoot":"","sources":["../src/MenuGroup.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAEZ,iBAAiB,EAGlB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAI/C,UAAU,kBAAkB,CAAC,CAAC,CAAE,SAAQ,iBAAiB,CAAC,SAAS,CAAC;IAKlE,KAAK,CAAC,EAAE,MAAM,CAAC;IAMf,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAK1B,KAAK,CAAC,EAAE,CAAC,CAAC;IAKV,YAAY,CAAC,EAAE,CAAC,CAAC;IAKjB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;CAC/B;AACD,UAAU,yBAA0B,SAAQ,kBAAkB,CAAC,MAAM,GAAG,IAAI,CAAC;IAK3E,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB;AACD,UAAU,sBAAuB,SAAQ,kBAAkB,CAAC,MAAM,EAAE,CAAC;IAKnE,QAAQ,EAAE,IAAI,CAAC;CAChB;AACD,MAAM,MAAM,cAAc,GAAG,yBAAyB,GAAG,sBAAsB,CAAC;AAahF,QAAA,MAAM,SAAS,6EA2Fd,CAAC;AAIF,eAAe,SAAS,CAAC"}
|
package/dist/MenuGroup.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var
|
1
|
+
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _toConsumableArray2=_interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _native=_interopRequireDefault(require("@emotion/native"));var _theming=require("@os-design-mobile/theming");var _useForwardedState3=_interopRequireDefault(require("@os-design/use-forwarded-state"));var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _reactNativeSafeAreaContext=require("react-native-safe-area-context");var _MenuItem=_interopRequireDefault(require("./MenuItem"));var _jsxRuntime=require("react/jsx-runtime");var _excluded=["title","multiple","maxSelectedItems","value","defaultValue","onChange","children"];function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap();var cacheNodeInterop=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj;}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj};}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj);}var newObj={};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc);}else{newObj[key]=obj[key];}}}newObj.default=obj;if(cache){cache.set(obj,newObj);}return newObj;}var Title=_native.default.Text(function(p){return{fontWeight:'500',fontSize:p.theme.sizes.small*p.theme.fontSize,color:(0,_theming.clr)(p.theme.menuGroupColorTitle),marginBottom:0.4*p.theme.fontSize,paddingHorizontal:p.theme.modalBodyPaddingHorizontal*p.theme.fontSize};});var MenuGroup=(0,_react.forwardRef)(function(_ref,ref){var title=_ref.title,_ref$multiple=_ref.multiple,multiple=_ref$multiple===void 0?false:_ref$multiple,_ref$maxSelectedItems=_ref.maxSelectedItems,maxSelectedItems=_ref$maxSelectedItems===void 0?0:_ref$maxSelectedItems,value=_ref.value,defaultValue=_ref.defaultValue,_ref$onChange=_ref.onChange,onChange=_ref$onChange===void 0?function(){}:_ref$onChange,children=_ref.children,rest=(0,_objectWithoutProperties2.default)(_ref,_excluded);var _useForwardedState=(0,_useForwardedState3.default)({value:value,defaultValue:defaultValue,onChange:onChange}),_useForwardedState2=(0,_slicedToArray2.default)(_useForwardedState,2),forwardedValue=_useForwardedState2[0],setForwardedValue=_useForwardedState2[1];var safeAreaInsets=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)();var onSelect=(0,_react.useCallback)(function(v){if(multiple){if((forwardedValue||[]).includes(v)){setForwardedValue((forwardedValue||[]).filter(function(item){return item!==v;}));return;}if(maxSelectedItems===0||(forwardedValue||[]).length<maxSelectedItems){setForwardedValue([].concat((0,_toConsumableArray2.default)(forwardedValue||[]),[v]));return;}return;}setForwardedValue(v);},[forwardedValue,maxSelectedItems,multiple,setForwardedValue]);var menuItems=(0,_react.useMemo)(function(){return _react.default.Children.map(children,function(child){if(!_react.default.isValidElement(child)||child.type!==_MenuItem.default)return child;var _child$props=child.props,childValue=_child$props.value,childOnPress=_child$props.onPress;var selected=multiple&&(forwardedValue||[]).includes(childValue)||!multiple&&forwardedValue===childValue;return _react.default.cloneElement(child,{key:childValue,selected:selected,onPress:function onPress(e){if(!childValue)return;onSelect(childValue);if(childOnPress)childOnPress(e);}});});},[children,forwardedValue,multiple,onSelect]);return(0,_jsxRuntime.jsxs)(_reactNative.View,Object.assign({},rest,{ref:ref,children:[title&&(0,_jsxRuntime.jsx)(Title,{numberOfLines:1,style:Object.assign({},safeAreaInsets.left>0?{paddingLeft:safeAreaInsets.left}:{},safeAreaInsets.right>0?{paddingRight:safeAreaInsets.right}:{}),children:title}),menuItems]}));});MenuGroup.displayName='MenuGroup';var _default=MenuGroup;exports.default=_default;
|
2
2
|
//# sourceMappingURL=MenuGroup.js.map
|
package/dist/MenuGroup.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"MenuGroup.js","names":["Title","styled","Text","p","fontWeight","fontSize","theme","sizes","small","color","clr","menuGroupColorTitle","marginBottom","paddingHorizontal","modalBodyPaddingHorizontal","MenuGroup","forwardRef","ref","title","maxSelectedItems","value","defaultValue","onChange","children","rest","useForwardedState","forwardedValue","setForwardedValue","safeAreaInsets","useSafeAreaInsets","onSelect","
|
1
|
+
{"version":3,"file":"MenuGroup.js","names":["Title","styled","Text","p","fontWeight","fontSize","theme","sizes","small","color","clr","menuGroupColorTitle","marginBottom","paddingHorizontal","modalBodyPaddingHorizontal","MenuGroup","forwardRef","ref","title","multiple","maxSelectedItems","value","defaultValue","onChange","children","rest","useForwardedState","forwardedValue","setForwardedValue","safeAreaInsets","useSafeAreaInsets","onSelect","useCallback","v","includes","filter","item","length","menuItems","useMemo","React","Children","map","child","isValidElement","type","MenuItem","props","childValue","childOnPress","onPress","selected","cloneElement","key","e","left","paddingLeft","right","paddingRight","displayName"],"sources":["../src/MenuGroup.tsx"],"sourcesContent":["import styled from '@emotion/native';\nimport { clr } from '@os-design-mobile/theming';\nimport useForwardedState from '@os-design/use-forwarded-state';\nimport React, {\n forwardRef,\n PropsWithChildren,\n useCallback,\n useMemo,\n} from 'react';\nimport { View, ViewProps } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport MenuItem from './MenuItem';\n\ninterface BaseMenuGroupProps<T> extends PropsWithChildren<ViewProps> {\n /**\n * The title of the menu group.\n * @default undefined\n */\n title?: string;\n /**\n * The max number of options that the user can select. Zero means unlimited.\n * Works only when multiple is true.\n * @default 0\n */\n maxSelectedItems?: number;\n /**\n * Selected menu items.\n * @default undefined\n */\n value?: T;\n /**\n * The default value.\n * @default undefined\n */\n defaultValue?: T;\n /**\n * The change event handler.\n * @default undefined\n */\n onChange?: (value: T) => void;\n}\ninterface MenuGroupNotMultipleProps extends BaseMenuGroupProps<string | null> {\n /**\n * Is it possible to select multiple values.\n * @default false\n */\n multiple?: false;\n}\ninterface MenuGroupMultipleProps extends BaseMenuGroupProps<string[]> {\n /**\n * Is it possible to select multiple values.\n * @default false\n */\n multiple: true;\n}\nexport type MenuGroupProps = MenuGroupNotMultipleProps | MenuGroupMultipleProps;\n\nconst Title = styled.Text((p) => ({\n fontWeight: '500',\n fontSize: p.theme.sizes.small * p.theme.fontSize,\n color: clr(p.theme.menuGroupColorTitle),\n marginBottom: 0.4 * p.theme.fontSize,\n paddingHorizontal: p.theme.modalBodyPaddingHorizontal * p.theme.fontSize,\n}));\n\n/**\n * The group of menu items.\n */\nconst MenuGroup = forwardRef<View, MenuGroupProps>(\n (\n {\n title,\n multiple = false,\n maxSelectedItems = 0,\n value,\n defaultValue,\n onChange = () => {},\n children,\n ...rest\n },\n ref\n ) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [forwardedValue, setForwardedValue] = useForwardedState<any>({\n value,\n defaultValue,\n onChange,\n });\n const safeAreaInsets = useSafeAreaInsets();\n\n const onSelect = useCallback(\n (v: string) => {\n if (multiple) {\n // Delete the value because it was already selected\n if ((forwardedValue || []).includes(v)) {\n setForwardedValue(\n (forwardedValue || []).filter((item) => item !== v)\n );\n return;\n }\n\n // Add a new value if the number of selected items is less than max\n if (\n maxSelectedItems === 0 ||\n (forwardedValue || []).length < maxSelectedItems\n ) {\n setForwardedValue([...(forwardedValue || []), v]);\n return;\n }\n return;\n }\n setForwardedValue(v);\n },\n [forwardedValue, maxSelectedItems, multiple, setForwardedValue]\n );\n\n const menuItems = useMemo(\n () =>\n React.Children.map(children, (child) => {\n if (!React.isValidElement(child) || child.type !== MenuItem)\n return child;\n const { value: childValue, onPress: childOnPress } = child.props;\n const selected =\n (multiple && (forwardedValue || []).includes(childValue)) ||\n (!multiple && forwardedValue === childValue);\n return React.cloneElement<any>(child, {\n key: childValue,\n selected,\n onPress: (e) => {\n if (!childValue) return;\n onSelect(childValue);\n if (childOnPress) childOnPress(e);\n },\n });\n }),\n [children, forwardedValue, multiple, onSelect]\n );\n\n return (\n <View {...rest} ref={ref}>\n {title && (\n <Title\n numberOfLines={1}\n style={{\n ...(safeAreaInsets.left > 0\n ? { paddingLeft: safeAreaInsets.left }\n : {}),\n ...(safeAreaInsets.right > 0\n ? { paddingRight: safeAreaInsets.right }\n : {}),\n }}\n >\n {title}\n </Title>\n )}\n {menuItems}\n </View>\n );\n }\n);\n\nMenuGroup.displayName = 'MenuGroup';\n\nexport default MenuGroup;\n"],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@os-design-mobile/menu",
|
3
|
-
"version": "1.0.
|
3
|
+
"version": "1.0.65",
|
4
4
|
"license": "UNLICENSED",
|
5
5
|
"repository": "git@gitlab.com:os-team/libs/os-design-mobile.git",
|
6
6
|
"main": "dist/index.js",
|
@@ -21,9 +21,9 @@
|
|
21
21
|
"dependencies": {
|
22
22
|
"@os-design-mobile/button": "^1.0.45",
|
23
23
|
"@os-design-mobile/icons": "^1.0.44",
|
24
|
-
"@os-design-mobile/modal": "^1.0.
|
24
|
+
"@os-design-mobile/modal": "^1.0.69",
|
25
25
|
"@os-design-mobile/theming": "^1.0.31",
|
26
|
-
"@os-design/menu-utils": "^1.0.
|
26
|
+
"@os-design/menu-utils": "^1.0.12",
|
27
27
|
"@os-design/use-forwarded-state": "^1.0.10"
|
28
28
|
},
|
29
29
|
"devDependencies": {
|
@@ -39,5 +39,5 @@
|
|
39
39
|
"react-native-safe-area-context": ">=3",
|
40
40
|
"react-native-svg": ">=12"
|
41
41
|
},
|
42
|
-
"gitHead": "
|
42
|
+
"gitHead": "1049e3bf8d396d12a961348cca54b083dc94875e"
|
43
43
|
}
|