UNPKG

@wordpress/components

Version:
8 lines (7 loc) 5.88 kB
{ "version": 3, "sources": ["../../src/checkbox-control/index.tsx"], "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n/**\n * WordPress dependencies\n */\nimport { useState } from '@wordpress/element';\nimport { useInstanceId, useRefEffect } from '@wordpress/compose';\nimport deprecated from '@wordpress/deprecated';\nimport { Icon, check, reset } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport BaseControl from '../base-control';\nimport { HStack } from '../h-stack';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Checkboxes allow the user to select one or more items from a set.\n *\n * ```jsx\n * import { CheckboxControl } from '@wordpress/components';\n * import { useState } from '@wordpress/element';\n *\n * const MyCheckboxControl = () => {\n * const [ isChecked, setChecked ] = useState( true );\n * return (\n * <CheckboxControl\n * label=\"Is author\"\n * help=\"Is the user a author or not?\"\n * checked={ isChecked }\n * onChange={ setChecked }\n * />\n * );\n * };\n * ```\n */\nexport function CheckboxControl(props) {\n const {\n // Prevent passing this to `input`.\n __nextHasNoMarginBottom: _,\n label,\n className,\n heading,\n checked,\n indeterminate,\n help,\n id: idProp,\n onChange,\n onClick,\n ...additionalProps\n } = props;\n if (heading) {\n deprecated('`heading` prop in `CheckboxControl`', {\n alternative: 'a separate element to implement a heading',\n since: '5.8'\n });\n }\n const [showCheckedIcon, setShowCheckedIcon] = useState(false);\n const [showIndeterminateIcon, setShowIndeterminateIcon] = useState(false);\n\n // Run the following callback every time the `ref` (and the additional\n // dependencies) change.\n const ref = useRefEffect(node => {\n if (!node) {\n return;\n }\n\n // It cannot be set using an HTML attribute.\n node.indeterminate = !!indeterminate;\n setShowCheckedIcon(node.matches(':checked'));\n setShowIndeterminateIcon(node.matches(':indeterminate'));\n }, [checked, indeterminate]);\n const id = useInstanceId(CheckboxControl, 'inspector-checkbox-control', idProp);\n const onChangeValue = event => onChange(event.target.checked);\n return /*#__PURE__*/_jsx(BaseControl, {\n label: heading,\n id: id,\n help: help && /*#__PURE__*/_jsx(\"span\", {\n className: \"components-checkbox-control__help\",\n children: help\n }),\n className: clsx('components-checkbox-control', className),\n children: /*#__PURE__*/_jsxs(HStack, {\n spacing: 0,\n justify: \"start\",\n alignment: \"top\",\n children: [/*#__PURE__*/_jsxs(\"span\", {\n className: \"components-checkbox-control__input-container\",\n children: [/*#__PURE__*/_jsx(\"input\", {\n ref: ref,\n id: id,\n className: \"components-checkbox-control__input\",\n type: \"checkbox\",\n value: \"1\",\n onChange: onChangeValue,\n checked: checked,\n \"aria-describedby\": !!help ? id + '__help' : undefined,\n onClick: event => {\n // Compat code for Safari to ensure that the checkbox is focused when clicked.\n event.currentTarget.focus();\n onClick?.(event);\n },\n ...additionalProps\n }), showIndeterminateIcon ? /*#__PURE__*/_jsx(Icon, {\n icon: reset,\n className: \"components-checkbox-control__indeterminate\",\n role: \"presentation\"\n }) : null, showCheckedIcon ? /*#__PURE__*/_jsx(Icon, {\n icon: check,\n className: \"components-checkbox-control__checked\",\n role: \"presentation\"\n }) : null]\n }), label && /*#__PURE__*/_jsx(\"label\", {\n className: \"components-checkbox-control__label\",\n htmlFor: id,\n children: label\n })]\n })\n });\n}\nexport default CheckboxControl;"], "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAiB;AAIjB,qBAAyB;AACzB,qBAA4C;AAC5C,wBAAuB;AACvB,mBAAmC;AAKnC,0BAAwB;AACxB,qBAAuB;AACvB,yBAA2C;AAqBpC,SAAS,gBAAgB,OAAO;AACrC,QAAM;AAAA;AAAA,IAEJ,yBAAyB;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,IAAI;AAAA,IACJ;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AACJ,MAAI,SAAS;AACX,0BAAAA,SAAW,uCAAuC;AAAA,MAChD,aAAa;AAAA,MACb,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AACA,QAAM,CAAC,iBAAiB,kBAAkB,QAAI,yBAAS,KAAK;AAC5D,QAAM,CAAC,uBAAuB,wBAAwB,QAAI,yBAAS,KAAK;AAIxE,QAAM,UAAM,6BAAa,UAAQ;AAC/B,QAAI,CAAC,MAAM;AACT;AAAA,IACF;AAGA,SAAK,gBAAgB,CAAC,CAAC;AACvB,uBAAmB,KAAK,QAAQ,UAAU,CAAC;AAC3C,6BAAyB,KAAK,QAAQ,gBAAgB,CAAC;AAAA,EACzD,GAAG,CAAC,SAAS,aAAa,CAAC;AAC3B,QAAM,SAAK,8BAAc,iBAAiB,8BAA8B,MAAM;AAC9E,QAAM,gBAAgB,WAAS,SAAS,MAAM,OAAO,OAAO;AAC5D,SAAoB,uCAAAC,KAAK,oBAAAC,SAAa;AAAA,IACpC,OAAO;AAAA,IACP;AAAA,IACA,MAAM,QAAqB,uCAAAD,KAAK,QAAQ;AAAA,MACtC,WAAW;AAAA,MACX,UAAU;AAAA,IACZ,CAAC;AAAA,IACD,eAAW,YAAAE,SAAK,+BAA+B,SAAS;AAAA,IACxD,UAAuB,uCAAAC,MAAM,uBAAQ;AAAA,MACnC,SAAS;AAAA,MACT,SAAS;AAAA,MACT,WAAW;AAAA,MACX,UAAU,CAAc,uCAAAA,MAAM,QAAQ;AAAA,QACpC,WAAW;AAAA,QACX,UAAU,CAAc,uCAAAH,KAAK,SAAS;AAAA,UACpC;AAAA,UACA;AAAA,UACA,WAAW;AAAA,UACX,MAAM;AAAA,UACN,OAAO;AAAA,UACP,UAAU;AAAA,UACV;AAAA,UACA,oBAAoB,CAAC,CAAC,OAAO,KAAK,WAAW;AAAA,UAC7C,SAAS,WAAS;AAEhB,kBAAM,cAAc,MAAM;AAC1B,sBAAU,KAAK;AAAA,UACjB;AAAA,UACA,GAAG;AAAA,QACL,CAAC,GAAG,wBAAqC,uCAAAA,KAAK,mBAAM;AAAA,UAClD,MAAM;AAAA,UACN,WAAW;AAAA,UACX,MAAM;AAAA,QACR,CAAC,IAAI,MAAM,kBAA+B,uCAAAA,KAAK,mBAAM;AAAA,UACnD,MAAM;AAAA,UACN,WAAW;AAAA,UACX,MAAM;AAAA,QACR,CAAC,IAAI,IAAI;AAAA,MACX,CAAC,GAAG,SAAsB,uCAAAA,KAAK,SAAS;AAAA,QACtC,WAAW;AAAA,QACX,SAAS;AAAA,QACT,UAAU;AAAA,MACZ,CAAC,CAAC;AAAA,IACJ,CAAC;AAAA,EACH,CAAC;AACH;AACA,IAAO,2BAAQ;", "names": ["deprecated", "_jsx", "BaseControl", "clsx", "_jsxs"] }