0.1.0-hack • Published 3 years ago

@paprika/hf-panel v0.1.0-hack

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

@paprika/panel

Description

The Panel component provides a view that slides in from one side so the user can maintain context of their main task while they work on a sub task.

Installation

yarn add @paprika/panel

or with npm:

npm install @paprika/panel

Props

Panel

PropTyperequireddefaultDescription
a11yTextstringfalsenull
childrennodetrue-The content for the Panel.
getPushContentElementfuncfalsenullFunction that provides the container DOM element to be pushed.
groupOffsetYnumberfalse0Y offset that is passed down from <Panel.Group>
heightstring,numberfalse"33%"The height of the open Panel (when slide in from bottom)
isCompactboolfalsefalseControl the compactness of the Panel
isInlineboolfalsefalseRender the panel inline
isOpenboolfalsefalseControl the visibility of the Panel. This prop makes the Panel appear.
kind Panel.types.kind.DEFAULT, Panel.types.kind.CHILD, Panel.types.kind.PRIMARYfalsePanel.types.kinds.DEFAULTModify the look of the Panel
offsetshapefalse{ top: 0, left: 0, right: 0 }Control offset of the Panel. Only use 'top' when sliding in from the left or right. Only use 'left' or 'right' when sliding in from the bottom.
onAfterClosefuncfalse() => {}Callback once the Panel has been closed event
onAfterOpenfuncfalse() => {}Callback once the Panel has been opened event
onClosefuncfalsenullCallback triggered when the Panel needs to be close
slideFrom Panel.types.slideFroms.RIGHT, Panel.types.slideFroms.LEFT, Panel.types.slideFroms.BOTTOMfalsePanel.types.slideFroms.RIGHTControl where the Panel slides in from
widthstring,numberfalse"33%"The width of the open Panel (when slide in from left or right)
zIndexnumberfalsezValue(7)Control the z-index of the Panel

Panel.Header

PropTyperequireddefaultDescription
childrennodetrue-
getPushContentElementfuncfalse() => {}
hasCloseButtonboolfalsetrue
isCompactboolfalsefalse
isHeaderStickyboolfalsefalse
kind Header.types.kind.DEFAULT, Header.types.kind.PRIMARYfalseHeader.types.kind.DEFAULT
level 1, 2, 3, 4, 5, 6false2
onClosefuncfalse() => {}
refHeadingcustomfalsenull

Panel.Content

PropTyperequireddefaultDescription
childrennodefalsenullBody content of the Content

Panel.Footer

PropTyperequireddefaultDescription
childrennodetrue-
heightnumberfalse72
isStickyboolfalsefalse

Panel.Overlay

PropTyperequireddefaultDescription
backdropClassNamestringfalse-
childrenfuncfalse-
containernodefalse-container of the Overlay element
focusLockOptionsshapefalse-
hasBackdropboolfalse-
isOpenboolfalse-
onClosefuncfalse-
onAfterOpenfuncfalse-
onAfterClosefuncfalse-
zIndexnumberfalse-The z-index of the Panel Overlay

Panel.Trigger

PropTyperequireddefaultDescription
childrennodetrue-

Components

You can use any of the following components to compose the Panel:

<Panel.Content />
<Panel.Header />
<Panel.Footer />
<Panel.Overlay />
<Panel.FocusLock />
<Panel.Trigger />

Basic examples

import Panel from "@paprika/panel";

const [isOpen, setIsOpen] = React.useState(true);

<Panel isOpen={isOpen} onClose={() => setIsOpen(false)} slideFrom={Panel.types.slideFrom.LEFT}>
  <Panel.Header kind="primary">Header</Panel.Header>
  <Panel.Content>Your content here</Panel.Content>
  <Panel.Footer>
    <button>Accept</button>
    <button>Cancel</button>
  </Panel.Footer>
</Panel>;

FocusLock

There are issues when using FocusLock without the <Panel.Overlay />. Therefore the Panel will not use the focus lock when there is no overlay present. Focus locking will only be used when overlay is used to prevent this issue.

Warnings

If the content you are putting into this component will try and control focus (like CKEditor), read this: https://github.com/acl-services/paprika/issues/453

Links