@wordpress/notices
Version:
State management for notices.
8 lines (7 loc) • 3.43 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../../src/components/inline-notices/index.tsx"],
"sourcesContent": ["/**\n * External dependencies\n */\nimport type { ReactNode } from 'react';\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { NoticeList } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as noticesStore } from '../../store';\n\ntype InlineNoticesProps = {\n\tchildren?: ReactNode;\n\tclassName?: string;\n\tpinnedNoticesClassName?: string;\n\tdismissibleNoticesClassName?: string;\n\tcontext?: string;\n};\n\nfunction hasRenderableChildren( children: ReactNode ): boolean {\n\treturn (\n\t\tchildren !== null &&\n\t\tchildren !== undefined &&\n\t\tchildren !== false &&\n\t\tchildren !== ''\n\t);\n}\n\nexport default function InlineNotices( {\n\tchildren,\n\tclassName,\n\tpinnedNoticesClassName,\n\tdismissibleNoticesClassName,\n\tcontext,\n}: InlineNoticesProps ) {\n\tconst notices = useSelect(\n\t\t( select ) => select( noticesStore ).getNotices( context ),\n\t\t[ context ]\n\t);\n\tconst { removeNotice } = useDispatch( noticesStore );\n\tconst dismissibleNotices = notices.filter(\n\t\t( { isDismissible, type } ) => isDismissible && type === 'default'\n\t);\n\tconst nonDismissibleNotices = notices.filter(\n\t\t( { isDismissible, type } ) => ! isDismissible && type === 'default'\n\t);\n\n\tconst hasPinnedNotices = nonDismissibleNotices.length > 0;\n\tconst hasDismissibleNotices =\n\t\tdismissibleNotices.length > 0 || hasRenderableChildren( children );\n\n\tif ( ! hasPinnedNotices && ! hasDismissibleNotices ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className={ clsx( 'notices-inline-notices-wrapper', className ) }>\n\t\t\t{ hasPinnedNotices && (\n\t\t\t\t<NoticeList\n\t\t\t\t\tnotices={ nonDismissibleNotices }\n\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t'components-notices__pinned',\n\t\t\t\t\t\tpinnedNoticesClassName\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ hasDismissibleNotices && (\n\t\t\t\t<NoticeList\n\t\t\t\t\tnotices={ dismissibleNotices }\n\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t'components-notices__dismissible',\n\t\t\t\t\t\tdismissibleNoticesClassName\n\t\t\t\t\t) }\n\t\t\t\t\tonRemove={ ( id ) => removeNotice( id, context ) }\n\t\t\t\t>\n\t\t\t\t\t{ children }\n\t\t\t\t</NoticeList>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],
"mappings": ";AAIA,OAAO,UAAU;AAKjB,SAAS,kBAAkB;AAC3B,SAAS,aAAa,iBAAiB;AAKvC,SAAS,SAAS,oBAAoB;AA+CpC,SAEE,KAFF;AArCF,SAAS,sBAAuB,UAA+B;AAC9D,SACC,aAAa,QACb,aAAa,UACb,aAAa,SACb,aAAa;AAEf;AAEe,SAAR,cAAgC;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAwB;AACvB,QAAM,UAAU;AAAA,IACf,CAAE,WAAY,OAAQ,YAAa,EAAE,WAAY,OAAQ;AAAA,IACzD,CAAE,OAAQ;AAAA,EACX;AACA,QAAM,EAAE,aAAa,IAAI,YAAa,YAAa;AACnD,QAAM,qBAAqB,QAAQ;AAAA,IAClC,CAAE,EAAE,eAAe,KAAK,MAAO,iBAAiB,SAAS;AAAA,EAC1D;AACA,QAAM,wBAAwB,QAAQ;AAAA,IACrC,CAAE,EAAE,eAAe,KAAK,MAAO,CAAE,iBAAiB,SAAS;AAAA,EAC5D;AAEA,QAAM,mBAAmB,sBAAsB,SAAS;AACxD,QAAM,wBACL,mBAAmB,SAAS,KAAK,sBAAuB,QAAS;AAElE,MAAK,CAAE,oBAAoB,CAAE,uBAAwB;AACpD,WAAO;AAAA,EACR;AAEA,SACC,qBAAC,SAAI,WAAY,KAAM,kCAAkC,SAAU,GAChE;AAAA,wBACD;AAAA,MAAC;AAAA;AAAA,QACA,SAAU;AAAA,QACV,WAAY;AAAA,UACX;AAAA,UACA;AAAA,QACD;AAAA;AAAA,IACD;AAAA,IAEC,yBACD;AAAA,MAAC;AAAA;AAAA,QACA,SAAU;AAAA,QACV,WAAY;AAAA,UACX;AAAA,UACA;AAAA,QACD;AAAA,QACA,UAAW,CAAE,OAAQ,aAAc,IAAI,OAAQ;AAAA,QAE7C;AAAA;AAAA,IACH;AAAA,KAEF;AAEF;",
"names": []
}