UNPKG

@wordpress/components

Version:
107 lines (103 loc) 3.84 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _reactNative = require("react-native"); var _native = require("@react-navigation/native"); var _element = require("@wordpress/element"); var _icons = require("@wordpress/icons"); var _i18n = require("@wordpress/i18n"); var _style = _interopRequireDefault(require("./style.scss")); var _bottomSheet = _interopRequireDefault(require("../bottom-sheet")); var _jsxRuntime = require("react/jsx-runtime"); /** * External dependencies */ /** * WordPress dependencies */ /** * Internal dependencies */ const EMPTY_OPTION = { label: '' }; const BottomSheetSelectControl = ({ label, icon, options: items, onChange, value: selectedValue, disabled }) => { var _items$find; const [showSubSheet, setShowSubSheet] = (0, _element.useState)(false); const navigation = (0, _native.useNavigation)(); const onChangeValue = value => { return () => { goBack(); onChange(value); }; }; const selectedOption = (_items$find = items.find(option => option.value === selectedValue)) !== null && _items$find !== void 0 ? _items$find : EMPTY_OPTION; const goBack = () => { setShowSubSheet(false); navigation.goBack(); }; const openSubSheet = () => { navigation.navigate(_bottomSheet.default.SubSheet.screenName); setShowSubSheet(true); }; return /*#__PURE__*/(0, _jsxRuntime.jsx)(_bottomSheet.default.SubSheet, { navigationButton: /*#__PURE__*/(0, _jsxRuntime.jsx)(_bottomSheet.default.Cell, { label: label, separatorType: "none", icon: icon, value: selectedOption.label, onPress: openSubSheet, accessibilityRole: "button", accessibilityLabel: (0, _i18n.sprintf)( // translators: 1: Select control button label e.g. "Button width". 2: Select control option value e.g: "Auto, 25%". (0, _i18n.__)('%1$s. Currently selected: %2$s'), label, selectedOption.label), accessibilityHint: (0, _i18n.sprintf)( // translators: %s: Select control button label e.g. "Button width" (0, _i18n.__)('Navigates to select %s'), label), disabled: disabled, children: disabled ? null : /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.Icon, { icon: _icons.chevronRight }) }), showSheet: showSubSheet, children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, { children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_bottomSheet.default.NavBar, { children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_bottomSheet.default.NavBar.BackButton, { onPress: goBack }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_bottomSheet.default.NavBar.Heading, { children: label })] }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, { style: _style.default.selectControl, children: items.map((item, index) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_bottomSheet.default.Cell, { customActionButton: true, separatorType: "none", label: item.label, icon: item.icon, onPress: onChangeValue(item.value), leftAlign: true, accessibilityRole: "button", accessibilityLabel: item.value === selectedValue ? (0, _i18n.sprintf)( // translators: %s: The selected option. (0, _i18n.__)('Selected: %s'), item.label) : item.label, accessibilityHint: (0, _i18n.__)('Double tap to select'), children: item.value === selectedValue && /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.Icon, { icon: _icons.check }) }, index)) })] }) }); }; var _default = exports.default = BottomSheetSelectControl; //# sourceMappingURL=index.native.js.map