@os-design-mobile/menu 1.0.109 → 1.0.111
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/dist/MenuGroup.d.ts.map +1 -1
- package/dist/MenuGroup.js +1 -1
- package/dist/MenuGroup.js.map +1 -1
- package/dist/MenuItem.js +1 -1
- package/dist/MenuItem.js.map +1 -1
- package/package.json +8 -8
- package/src/MenuGroup.tsx +1 -2
- package/src/MenuItem.tsx +1 -1
package/dist/MenuGroup.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"MenuGroup.d.ts","sourceRoot":"","sources":["../src/MenuGroup.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAEZ,KAAK,iBAAiB,EAGvB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAIpD,UAAU,kBAAkB,CAAC,CAAC,CAAE,SAAQ,iBAAiB,CAAC,SAAS,CAAC;IAClE;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,KAAK,CAAC,EAAE,CAAC,CAAC;IACV;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;CAC/B;AACD,UAAU,yBAA0B,SAAQ,kBAAkB,CAAC,MAAM,GAAG,IAAI,CAAC;IAC3E;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB;AACD,UAAU,sBAAuB,SAAQ,kBAAkB,CAAC,MAAM,EAAE,CAAC;IACnE;;;OAGG;IACH,QAAQ,EAAE,IAAI,CAAC;CAChB;AACD,MAAM,MAAM,cAAc,GAAG,yBAAyB,GAAG,sBAAsB,CAAC;AAUhF;;GAEG;AACH,QAAA,MAAM,SAAS,
|
1
|
+
{"version":3,"file":"MenuGroup.d.ts","sourceRoot":"","sources":["../src/MenuGroup.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAEZ,KAAK,iBAAiB,EAGvB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAIpD,UAAU,kBAAkB,CAAC,CAAC,CAAE,SAAQ,iBAAiB,CAAC,SAAS,CAAC;IAClE;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,KAAK,CAAC,EAAE,CAAC,CAAC;IACV;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;CAC/B;AACD,UAAU,yBAA0B,SAAQ,kBAAkB,CAAC,MAAM,GAAG,IAAI,CAAC;IAC3E;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB;AACD,UAAU,sBAAuB,SAAQ,kBAAkB,CAAC,MAAM,EAAE,CAAC;IACnE;;;OAGG;IACH,QAAQ,EAAE,IAAI,CAAC;CAChB;AACD,MAAM,MAAM,cAAc,GAAG,yBAAyB,GAAG,sBAAsB,CAAC;AAUhF;;GAEG;AACH,QAAA,MAAM,SAAS,6EA4Fd,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 _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(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap(),t=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?t:r;})(e);}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&&{}.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;}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
|
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(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap(),t=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?t:r;})(e);}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&&{}.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;}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=exports.default=MenuGroup;
|
2
2
|
//# sourceMappingURL=MenuGroup.js.map
|
package/dist/MenuGroup.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"MenuGroup.js","names":["_native","_interopRequireDefault","require","_theming","_useForwardedState3","_react","_interopRequireWildcard","_reactNative","_reactNativeSafeAreaContext","_MenuItem","_jsxRuntime","_excluded","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","Title","styled","Text","p","fontWeight","fontSize","theme","sizes","small","color","clr","menuGroupColorTitle","marginBottom","paddingHorizontal","modalBodyPaddingHorizontal","MenuGroup","forwardRef","_ref","ref","title","_ref$multiple","multiple","_ref$maxSelectedItems","maxSelectedItems","value","defaultValue","_ref$onChange","onChange","children","rest","_objectWithoutProperties2","_useForwardedState","useForwardedState","_useForwardedState2","_slicedToArray2","forwardedValue","setForwardedValue","safeAreaInsets","useSafeAreaInsets","onSelect","useCallback","v","includes","filter","item","length","concat","_toConsumableArray2","menuItems","useMemo","React","Children","map","child","isValidElement","type","MenuItem","_ref2","props","childValue","childOnPress","onPress","selected","cloneElement","key","jsxs","View","assign","jsx","numberOfLines","style","left","paddingLeft","right","paddingRight","displayName","_default","exports"],"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 type PropsWithChildren,\n useCallback,\n useMemo,\n} from 'react';\nimport { View, type 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 } =\n child.props as any; // eslint-disable-line @typescript-eslint/no-explicit-any\n const selected =\n (multiple && (forwardedValue || []).includes(childValue)) ||\n (!multiple && forwardedValue === childValue);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\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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","ignoreList":[]}
|
1
|
+
{"version":3,"file":"MenuGroup.js","names":["_native","_interopRequireDefault","require","_theming","_useForwardedState3","_react","_interopRequireWildcard","_reactNative","_reactNativeSafeAreaContext","_MenuItem","_jsxRuntime","_excluded","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","Title","styled","Text","p","fontWeight","fontSize","theme","sizes","small","color","clr","menuGroupColorTitle","marginBottom","paddingHorizontal","modalBodyPaddingHorizontal","MenuGroup","forwardRef","_ref","ref","title","_ref$multiple","multiple","_ref$maxSelectedItems","maxSelectedItems","value","defaultValue","_ref$onChange","onChange","children","rest","_objectWithoutProperties2","_useForwardedState","useForwardedState","_useForwardedState2","_slicedToArray2","forwardedValue","setForwardedValue","safeAreaInsets","useSafeAreaInsets","onSelect","useCallback","v","includes","filter","item","length","concat","_toConsumableArray2","menuItems","useMemo","React","Children","map","child","isValidElement","type","MenuItem","_child$props","props","childValue","childOnPress","onPress","selected","cloneElement","key","jsxs","View","assign","jsx","numberOfLines","style","left","paddingLeft","right","paddingRight","displayName","_default","exports"],"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 type PropsWithChildren,\n useCallback,\n useMemo,\n} from 'react';\nimport { View, type 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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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","ignoreList":[]}
|
package/dist/MenuItem.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 _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _react=_interopRequireWildcard(require("react"));var _theming=require("@os-design-mobile/theming");var _icons=require("@os-design-mobile/icons");var _button=_interopRequireDefault(require("@os-design-mobile/button"));var _native=_interopRequireDefault(require("@emotion/native"));var _menuUtils=require("@os-design/menu-utils");var _reactNativeSafeAreaContext=require("react-native-safe-area-context");var _jsxRuntime=require("react/jsx-runtime");var _excluded=["selected","value","right","viewProps","textProps","onPress"];function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap(),t=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?t:r;})(e);}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&&{}.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;}var selectedStyles=function selectedStyles(p){return p.selected?{backgroundColor:(0,_theming.clr)(p.theme.menuItemSelectedColorBg)}:{};};var StyledButton=(0,_native.default)(_button.default)(selectedStyles);var MenuItem=(0,_react.forwardRef)(function(_ref,ref){var _ref$selected=_ref.selected,selected=_ref$selected===void 0?false:_ref$selected,value=_ref.value,right=_ref.right,_ref$viewProps=_ref.viewProps,viewProps=_ref$viewProps===void 0?{}:_ref$viewProps,_ref$textProps=_ref.textProps,textProps=_ref$textProps===void 0?{}:_ref$textProps,_ref$onPress=_ref.onPress,onPress=_ref$onPress===void 0?function(){}:_ref$onPress,rest=(0,_objectWithoutProperties2.default)(_ref,_excluded);var _useContext=(0,_react.useContext)(_menuUtils.MenuContext),closeOnSelect=_useContext.closeOnSelect,onClose=_useContext.onClose;var onPressRef=(0,_react.useRef)(
|
1
|
+
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _react=_interopRequireWildcard(require("react"));var _theming=require("@os-design-mobile/theming");var _icons=require("@os-design-mobile/icons");var _button=_interopRequireDefault(require("@os-design-mobile/button"));var _native=_interopRequireDefault(require("@emotion/native"));var _menuUtils=require("@os-design/menu-utils");var _reactNativeSafeAreaContext=require("react-native-safe-area-context");var _jsxRuntime=require("react/jsx-runtime");var _excluded=["selected","value","right","viewProps","textProps","onPress"];function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap(),t=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?t:r;})(e);}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&&{}.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;}var selectedStyles=function selectedStyles(p){return p.selected?{backgroundColor:(0,_theming.clr)(p.theme.menuItemSelectedColorBg)}:{};};var StyledButton=(0,_native.default)(_button.default)(selectedStyles);var MenuItem=(0,_react.forwardRef)(function(_ref,ref){var _ref$selected=_ref.selected,selected=_ref$selected===void 0?false:_ref$selected,value=_ref.value,right=_ref.right,_ref$viewProps=_ref.viewProps,viewProps=_ref$viewProps===void 0?{}:_ref$viewProps,_ref$textProps=_ref.textProps,textProps=_ref$textProps===void 0?{}:_ref$textProps,_ref$onPress=_ref.onPress,onPress=_ref$onPress===void 0?function(){}:_ref$onPress,rest=(0,_objectWithoutProperties2.default)(_ref,_excluded);var _useContext=(0,_react.useContext)(_menuUtils.MenuContext),closeOnSelect=_useContext.closeOnSelect,onClose=_useContext.onClose;var onPressRef=(0,_react.useRef)();var _useTheme=(0,_theming.useTheme)(),theme=_useTheme.theme;var safeAreaInsets=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)();(0,_react.useEffect)(function(){onPressRef.current=onPress;},[onPress]);var clickHandler=(0,_react.useCallback)(function(e){if(onPressRef.current)onPressRef.current(e);if(closeOnSelect)onClose();},[closeOnSelect,onClose]);return(0,_jsxRuntime.jsx)(_theming.ThemeOverrider,{overrides:function overrides(t){return{buttonGhostColorText:t.colorText,borderRadius:0,buttonHeight:theme.menuItemHeight,buttonPaddingHorizontal:theme.menuItemPaddingHorizontal};},children:(0,_jsxRuntime.jsx)(StyledButton,Object.assign({selected:selected,right:selected?(0,_jsxRuntime.jsx)(_theming.ThemeOverrider,{overrides:function overrides(t){return{colorText:t.menuItemSelectedColorIcon};},children:(0,_jsxRuntime.jsx)(_icons.Check,{})}):right,type:"ghost",onPress:clickHandler,viewProps:Object.assign({},viewProps,{style:Object.assign({},safeAreaInsets.left>0?{paddingLeft:safeAreaInsets.left}:{},safeAreaInsets.right>0?{paddingRight:safeAreaInsets.right}:{},typeof(viewProps==null?void 0:viewProps.style)==='object'?viewProps.style:{})}),textProps:Object.assign({},textProps,{style:Object.assign({flex:1,textAlign:'left',fontWeight:'normal'},typeof(textProps==null?void 0:textProps.style)==='object'?textProps.style:{})})},rest,{ref:ref}))});});MenuItem.displayName='MenuItem';var _default=exports.default=MenuItem;
|
2
2
|
//# sourceMappingURL=MenuItem.js.map
|
package/dist/MenuItem.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"MenuItem.js","names":["_react","_interopRequireWildcard","require","_theming","_icons","_button","_interopRequireDefault","_native","_menuUtils","_reactNativeSafeAreaContext","_jsxRuntime","_excluded","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","selectedStyles","p","selected","backgroundColor","clr","theme","menuItemSelectedColorBg","StyledButton","styled","Button","MenuItem","forwardRef","_ref","ref","_ref$selected","value","right","_ref$viewProps","viewProps","_ref$textProps","textProps","_ref$onPress","onPress","rest","_objectWithoutProperties2","_useContext","useContext","MenuContext","closeOnSelect","onClose","onPressRef","useRef","_useTheme","useTheme","safeAreaInsets","useSafeAreaInsets","useEffect","current","clickHandler","useCallback","jsx","ThemeOverrider","overrides","buttonGhostColorText","colorText","borderRadius","buttonHeight","menuItemHeight","buttonPaddingHorizontal","menuItemPaddingHorizontal","children","assign","menuItemSelectedColorIcon","Check","type","style","left","paddingLeft","paddingRight","flex","textAlign","fontWeight","displayName","_default","exports"],"sources":["../src/MenuItem.tsx"],"sourcesContent":["import React, {\n forwardRef,\n type PropsWithChildren,\n useCallback,\n useContext,\n useEffect,\n useRef,\n} from 'react';\nimport { clr, ThemeOverrider, useTheme } from '@os-design-mobile/theming';\nimport { Check } from '@os-design-mobile/icons';\nimport Button, { type ButtonProps } from '@os-design-mobile/button';\nimport { RectButton } from 'react-native-gesture-handler';\nimport styled from '@emotion/native';\nimport { MenuContext } from '@os-design/menu-utils';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nexport interface MenuItemProps\n extends PropsWithChildren<Omit<ButtonProps, 'type' | 'size'>> {\n /**\n * Whether the menu item is selected.\n * @default false\n */\n selected?: boolean;\n /**\n * The value of the menu item.\n * @default undefined\n */\n value?: string;\n}\n\nconst selectedStyles = (p) =>\n p.selected\n ? {\n backgroundColor: clr(p.theme.menuItemSelectedColorBg),\n }\n : {};\n\ntype StyledButtonProps = Required<Pick<MenuItemProps, 'selected'>>;\nconst StyledButton = styled(Button)<StyledButtonProps>(selectedStyles);\n\n/**\n * The base menu item.\n */\nconst MenuItem = forwardRef<typeof RectButton, MenuItemProps>(\n (\n {\n selected = false,\n value,\n right,\n viewProps = {},\n textProps = {},\n onPress = () => {},\n ...rest\n },\n ref\n ) => {\n const { closeOnSelect, onClose } = useContext(MenuContext);\n const onPressRef = useRef<MenuItemProps['onPress']>(
|
1
|
+
{"version":3,"file":"MenuItem.js","names":["_react","_interopRequireWildcard","require","_theming","_icons","_button","_interopRequireDefault","_native","_menuUtils","_reactNativeSafeAreaContext","_jsxRuntime","_excluded","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","selectedStyles","p","selected","backgroundColor","clr","theme","menuItemSelectedColorBg","StyledButton","styled","Button","MenuItem","forwardRef","_ref","ref","_ref$selected","value","right","_ref$viewProps","viewProps","_ref$textProps","textProps","_ref$onPress","onPress","rest","_objectWithoutProperties2","_useContext","useContext","MenuContext","closeOnSelect","onClose","onPressRef","useRef","_useTheme","useTheme","safeAreaInsets","useSafeAreaInsets","useEffect","current","clickHandler","useCallback","jsx","ThemeOverrider","overrides","buttonGhostColorText","colorText","borderRadius","buttonHeight","menuItemHeight","buttonPaddingHorizontal","menuItemPaddingHorizontal","children","assign","menuItemSelectedColorIcon","Check","type","style","left","paddingLeft","paddingRight","flex","textAlign","fontWeight","displayName","_default","exports"],"sources":["../src/MenuItem.tsx"],"sourcesContent":["import React, {\n forwardRef,\n type PropsWithChildren,\n useCallback,\n useContext,\n useEffect,\n useRef,\n} from 'react';\nimport { clr, ThemeOverrider, useTheme } from '@os-design-mobile/theming';\nimport { Check } from '@os-design-mobile/icons';\nimport Button, { type ButtonProps } from '@os-design-mobile/button';\nimport { RectButton } from 'react-native-gesture-handler';\nimport styled from '@emotion/native';\nimport { MenuContext } from '@os-design/menu-utils';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nexport interface MenuItemProps\n extends PropsWithChildren<Omit<ButtonProps, 'type' | 'size'>> {\n /**\n * Whether the menu item is selected.\n * @default false\n */\n selected?: boolean;\n /**\n * The value of the menu item.\n * @default undefined\n */\n value?: string;\n}\n\nconst selectedStyles = (p) =>\n p.selected\n ? {\n backgroundColor: clr(p.theme.menuItemSelectedColorBg),\n }\n : {};\n\ntype StyledButtonProps = Required<Pick<MenuItemProps, 'selected'>>;\nconst StyledButton = styled(Button)<StyledButtonProps>(selectedStyles);\n\n/**\n * The base menu item.\n */\nconst MenuItem = forwardRef<typeof RectButton, MenuItemProps>(\n (\n {\n selected = false,\n value,\n right,\n viewProps = {},\n textProps = {},\n onPress = () => {},\n ...rest\n },\n ref\n ) => {\n const { closeOnSelect, onClose } = useContext(MenuContext);\n const onPressRef = useRef<MenuItemProps['onPress']>();\n const { theme } = useTheme();\n const safeAreaInsets = useSafeAreaInsets();\n\n useEffect(() => {\n onPressRef.current = onPress;\n }, [onPress]);\n\n const clickHandler = useCallback(\n (e) => {\n if (onPressRef.current) onPressRef.current(e);\n if (closeOnSelect) onClose();\n },\n [closeOnSelect, onClose]\n );\n\n return (\n <ThemeOverrider\n overrides={(t) => ({\n buttonGhostColorText: t.colorText,\n borderRadius: 0,\n buttonHeight: theme.menuItemHeight,\n buttonPaddingHorizontal: theme.menuItemPaddingHorizontal,\n })}\n >\n <StyledButton\n selected={selected}\n right={\n selected ? (\n <ThemeOverrider\n overrides={(t) => ({ colorText: t.menuItemSelectedColorIcon })}\n >\n <Check />\n </ThemeOverrider>\n ) : (\n right\n )\n }\n type='ghost'\n onPress={clickHandler}\n viewProps={{\n ...viewProps,\n style: {\n ...(safeAreaInsets.left > 0\n ? { paddingLeft: safeAreaInsets.left }\n : {}),\n ...(safeAreaInsets.right > 0\n ? { paddingRight: safeAreaInsets.right }\n : {}),\n ...(typeof viewProps?.style === 'object' ? viewProps.style : {}),\n },\n }}\n textProps={{\n ...textProps,\n style: {\n flex: 1,\n textAlign: 'left',\n fontWeight: 'normal',\n ...(typeof textProps?.style === 'object' ? textProps.style : {}),\n },\n }}\n {...rest}\n ref={ref}\n />\n </ThemeOverrider>\n );\n }\n);\n\nMenuItem.displayName = 'MenuItem';\n\nexport default MenuItem;\n"],"mappings":"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","ignoreList":[]}
|
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.111",
|
4
4
|
"license": "UNLICENSED",
|
5
5
|
"repository": "git@gitlab.com:os-team/libs/os-design-mobile.git",
|
6
6
|
"main": "./dist/index.js",
|
@@ -28,25 +28,25 @@
|
|
28
28
|
"access": "public"
|
29
29
|
},
|
30
30
|
"dependencies": {
|
31
|
-
"@os-design-mobile/button": "^1.0.
|
32
|
-
"@os-design-mobile/icons": "^1.0.
|
33
|
-
"@os-design-mobile/modal": "^1.0.
|
34
|
-
"@os-design-mobile/theming": "^1.0.
|
31
|
+
"@os-design-mobile/button": "^1.0.78",
|
32
|
+
"@os-design-mobile/icons": "^1.0.74",
|
33
|
+
"@os-design-mobile/modal": "^1.0.115",
|
34
|
+
"@os-design-mobile/theming": "^1.0.54",
|
35
35
|
"@os-design/menu-utils": "^1.0.27",
|
36
36
|
"@os-design/use-forwarded-state": "^1.0.29"
|
37
37
|
},
|
38
38
|
"devDependencies": {
|
39
|
-
"@os-design-mobile/text": "^1.0.
|
39
|
+
"@os-design-mobile/text": "^1.0.72"
|
40
40
|
},
|
41
41
|
"peerDependencies": {
|
42
42
|
"@emotion/native": ">=11",
|
43
43
|
"@emotion/react": ">=11",
|
44
44
|
"@react-native-async-storage/async-storage": ">=1",
|
45
45
|
"react": "18.2.0",
|
46
|
-
"react-native": "0.76.
|
46
|
+
"react-native": "0.76.3",
|
47
47
|
"react-native-gesture-handler": ">=2",
|
48
48
|
"react-native-safe-area-context": ">=3",
|
49
49
|
"react-native-svg": ">=12"
|
50
50
|
},
|
51
|
-
"gitHead": "
|
51
|
+
"gitHead": "1e85c5a3f446cc3cea4b66ed7e01425021763729"
|
52
52
|
}
|
package/src/MenuGroup.tsx
CHANGED
@@ -119,8 +119,7 @@ const MenuGroup = forwardRef<View, MenuGroupProps>(
|
|
119
119
|
React.Children.map(children, (child) => {
|
120
120
|
if (!React.isValidElement(child) || child.type !== MenuItem)
|
121
121
|
return child;
|
122
|
-
const { value: childValue, onPress: childOnPress } =
|
123
|
-
child.props as any; // eslint-disable-line @typescript-eslint/no-explicit-any
|
122
|
+
const { value: childValue, onPress: childOnPress } = child.props;
|
124
123
|
const selected =
|
125
124
|
(multiple && (forwardedValue || []).includes(childValue)) ||
|
126
125
|
(!multiple && forwardedValue === childValue);
|
package/src/MenuItem.tsx
CHANGED
@@ -55,7 +55,7 @@ const MenuItem = forwardRef<typeof RectButton, MenuItemProps>(
|
|
55
55
|
ref
|
56
56
|
) => {
|
57
57
|
const { closeOnSelect, onClose } = useContext(MenuContext);
|
58
|
-
const onPressRef = useRef<MenuItemProps['onPress']>(
|
58
|
+
const onPressRef = useRef<MenuItemProps['onPress']>();
|
59
59
|
const { theme } = useTheme();
|
60
60
|
const safeAreaInsets = useSafeAreaInsets();
|
61
61
|
|