no-frills-ui 0.0.14-alpha.4 → 0.0.14-alpha.6
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/index.js +2841 -2786
- package/dist/index.js.map +1 -1
- package/lib-esm/components/Accordion/Accordion.d.ts +0 -1
- package/lib-esm/components/Accordion/Accordion.js +26 -26
- package/lib-esm/components/Accordion/AccordionStep.d.ts +0 -1
- package/lib-esm/components/Accordion/AccordionStep.js +98 -114
- package/lib-esm/components/Accordion/index.d.ts +0 -1
- package/lib-esm/components/Badge/Badge.d.ts +0 -1
- package/lib-esm/components/Badge/Badge.js +37 -43
- package/lib-esm/components/Badge/index.d.ts +0 -1
- package/lib-esm/components/Button/ActionButton.d.ts +0 -1
- package/lib-esm/components/Button/ActionButton.js +6 -38
- package/lib-esm/components/Button/Button.d.ts +0 -1
- package/lib-esm/components/Button/Button.js +8 -43
- package/lib-esm/components/Button/IconButton.d.ts +0 -1
- package/lib-esm/components/Button/IconButton.js +6 -42
- package/lib-esm/components/Button/LinkButton.d.ts +0 -1
- package/lib-esm/components/Button/LinkButton.js +6 -33
- package/lib-esm/components/Button/RaisedButton.d.ts +0 -1
- package/lib-esm/components/Button/RaisedButton.js +6 -46
- package/lib-esm/components/Button/index.d.ts +0 -1
- package/lib-esm/components/Card/Card.d.ts +0 -1
- package/lib-esm/components/Card/Card.js +8 -13
- package/lib-esm/components/Card/index.d.ts +0 -1
- package/lib-esm/components/Chip/Chip.d.ts +0 -1
- package/lib-esm/components/Chip/Chip.js +35 -43
- package/lib-esm/components/Chip/index.d.ts +0 -1
- package/lib-esm/components/ChipInput/ChipInput.d.ts +0 -1
- package/lib-esm/components/ChipInput/ChipInput.js +107 -167
- package/lib-esm/components/ChipInput/index.d.ts +0 -1
- package/lib-esm/components/Dialog/AlertDialog.d.ts +0 -1
- package/lib-esm/components/Dialog/AlertDialog.js +47 -25
- package/lib-esm/components/Dialog/ConfirmDialog.d.ts +0 -1
- package/lib-esm/components/Dialog/ConfirmDialog.js +49 -31
- package/lib-esm/components/Dialog/Dialog.d.ts +27 -2
- package/lib-esm/components/Dialog/Dialog.js +120 -67
- package/lib-esm/components/Dialog/PromptDialog.d.ts +0 -1
- package/lib-esm/components/Dialog/PromptDialog.js +82 -44
- package/lib-esm/components/Dialog/index.d.ts +0 -1
- package/lib-esm/components/DragAndDrop/DragAndDrop.d.ts +0 -1
- package/lib-esm/components/DragAndDrop/DragAndDrop.js +66 -71
- package/lib-esm/components/DragAndDrop/DragItem.d.ts +0 -1
- package/lib-esm/components/DragAndDrop/DragItem.js +106 -118
- package/lib-esm/components/DragAndDrop/index.d.ts +0 -1
- package/lib-esm/components/DragAndDrop/types.d.ts +0 -1
- package/lib-esm/components/DragAndDrop/types.js +7 -5
- package/lib-esm/components/Drawer/Drawer.d.ts +76 -2
- package/lib-esm/components/Drawer/Drawer.js +176 -96
- package/lib-esm/components/Drawer/index.d.ts +0 -1
- package/lib-esm/components/Groups/Group.d.ts +0 -1
- package/lib-esm/components/Groups/Group.js +32 -88
- package/lib-esm/components/Groups/GroupLabel.d.ts +0 -1
- package/lib-esm/components/Groups/GroupLabel.js +7 -17
- package/lib-esm/components/Groups/index.d.ts +0 -1
- package/lib-esm/components/Input/Checkbox.d.ts +0 -1
- package/lib-esm/components/Input/Checkbox.js +39 -110
- package/lib-esm/components/Input/Dropdown.d.ts +8 -1
- package/lib-esm/components/Input/Dropdown.js +109 -49
- package/lib-esm/components/Input/Input.d.ts +0 -1
- package/lib-esm/components/Input/Input.js +61 -113
- package/lib-esm/components/Input/Radio.d.ts +0 -1
- package/lib-esm/components/Input/Radio.js +31 -76
- package/lib-esm/components/Input/RadioButton.d.ts +0 -1
- package/lib-esm/components/Input/RadioButton.js +30 -67
- package/lib-esm/components/Input/Select.d.ts +0 -1
- package/lib-esm/components/Input/Select.js +74 -126
- package/lib-esm/components/Input/TextArea.d.ts +0 -1
- package/lib-esm/components/Input/TextArea.js +60 -111
- package/lib-esm/components/Input/Toggle.d.ts +0 -1
- package/lib-esm/components/Input/Toggle.js +29 -77
- package/lib-esm/components/Input/index.d.ts +0 -1
- package/lib-esm/components/Menu/Menu.d.ts +13 -2
- package/lib-esm/components/Menu/Menu.js +107 -27
- package/lib-esm/components/Menu/MenuContext.d.ts +0 -1
- package/lib-esm/components/Menu/MenuContext.js +4 -2
- package/lib-esm/components/Menu/MenuItem.d.ts +6 -4
- package/lib-esm/components/Menu/MenuItem.js +36 -51
- package/lib-esm/components/Menu/index.d.ts +0 -1
- package/lib-esm/components/Modal/Modal.d.ts +70 -2
- package/lib-esm/components/Modal/Modal.js +149 -52
- package/lib-esm/components/Modal/index.d.ts +0 -1
- package/lib-esm/components/Notification/Notification.d.ts +3 -2
- package/lib-esm/components/Notification/Notification.js +54 -64
- package/lib-esm/components/Notification/NotificationManager.d.ts +15 -2
- package/lib-esm/components/Notification/NotificationManager.js +169 -77
- package/lib-esm/components/Notification/index.d.ts +0 -1
- package/lib-esm/components/Notification/style.d.ts +4 -1
- package/lib-esm/components/Notification/style.js +63 -142
- package/lib-esm/components/Notification/types.d.ts +2 -1
- package/lib-esm/components/Notification/types.js +8 -9
- package/lib-esm/components/Popover/Popover.d.ts +0 -1
- package/lib-esm/components/Popover/Popover.js +146 -111
- package/lib-esm/components/Popover/index.d.ts +0 -1
- package/lib-esm/components/Spinner/Spinner.d.ts +3 -1
- package/lib-esm/components/Spinner/Spinner.js +19 -24
- package/lib-esm/components/Spinner/index.d.ts +0 -1
- package/lib-esm/components/Stepper/Step.d.ts +0 -1
- package/lib-esm/components/Stepper/Step.js +15 -22
- package/lib-esm/components/Stepper/Stepper.d.ts +0 -1
- package/lib-esm/components/Stepper/Stepper.js +100 -102
- package/lib-esm/components/Stepper/index.d.ts +0 -1
- package/lib-esm/components/Tabs/Tab.d.ts +0 -1
- package/lib-esm/components/Tabs/Tab.js +11 -10
- package/lib-esm/components/Tabs/Tabs.d.ts +0 -1
- package/lib-esm/components/Tabs/Tabs.js +88 -50
- package/lib-esm/components/Tabs/index.d.ts +0 -1
- package/lib-esm/components/Toast/Toast.d.ts +30 -5
- package/lib-esm/components/Toast/Toast.js +196 -108
- package/lib-esm/components/Toast/ToastStory.d.ts +0 -1
- package/lib-esm/components/Toast/index.d.ts +0 -1
- package/lib-esm/components/Tooltip/Tooltip.d.ts +0 -1
- package/lib-esm/components/Tooltip/Tooltip.js +60 -61
- package/lib-esm/components/Tooltip/index.d.ts +0 -1
- package/lib-esm/components/index.d.ts +0 -1
- package/lib-esm/components/index.js +42 -21
- package/lib-esm/icons/CheckCircle.d.ts +0 -1
- package/lib-esm/icons/CheckCircle.js +21 -4
- package/lib-esm/icons/Close.d.ts +0 -1
- package/lib-esm/icons/Close.js +21 -4
- package/lib-esm/icons/DragIndicator.d.ts +0 -1
- package/lib-esm/icons/DragIndicator.js +21 -4
- package/lib-esm/icons/ErrorOutline.d.ts +0 -1
- package/lib-esm/icons/ErrorOutline.js +15 -4
- package/lib-esm/icons/ExpandMore.d.ts +0 -1
- package/lib-esm/icons/ExpandMore.js +21 -4
- package/lib-esm/icons/FiberManualRecord.d.ts +0 -1
- package/lib-esm/icons/FiberManualRecord.js +23 -4
- package/lib-esm/icons/Info.d.ts +0 -1
- package/lib-esm/icons/Info.js +21 -4
- package/lib-esm/icons/ReportProblem.d.ts +0 -1
- package/lib-esm/icons/ReportProblem.js +21 -4
- package/lib-esm/icons/index.d.ts +0 -1
- package/lib-esm/index.d.ts +0 -1
- package/lib-esm/shared/LayerManager.d.ts +3 -1
- package/lib-esm/shared/LayerManager.js +158 -87
- package/lib-esm/shared/constants.d.ts +58 -28
- package/lib-esm/shared/constants.js +61 -26
- package/lib-esm/shared/styles.d.ts +1 -2
- package/lib-esm/shared/styles.js +20 -24
- package/package.json +15 -5
- package/lib-esm/components/Accordion/Accordion.d.ts.map +0 -1
- package/lib-esm/components/Accordion/Accordion.js.map +0 -1
- package/lib-esm/components/Accordion/AccordionStep.d.ts.map +0 -1
- package/lib-esm/components/Accordion/AccordionStep.js.map +0 -1
- package/lib-esm/components/Accordion/index.d.ts.map +0 -1
- package/lib-esm/components/Accordion/index.js +0 -3
- package/lib-esm/components/Accordion/index.js.map +0 -1
- package/lib-esm/components/Badge/Badge.d.ts.map +0 -1
- package/lib-esm/components/Badge/Badge.js.map +0 -1
- package/lib-esm/components/Badge/index.d.ts.map +0 -1
- package/lib-esm/components/Badge/index.js +0 -2
- package/lib-esm/components/Badge/index.js.map +0 -1
- package/lib-esm/components/Button/ActionButton.d.ts.map +0 -1
- package/lib-esm/components/Button/ActionButton.js.map +0 -1
- package/lib-esm/components/Button/Button.d.ts.map +0 -1
- package/lib-esm/components/Button/Button.js.map +0 -1
- package/lib-esm/components/Button/IconButton.d.ts.map +0 -1
- package/lib-esm/components/Button/IconButton.js.map +0 -1
- package/lib-esm/components/Button/LinkButton.d.ts.map +0 -1
- package/lib-esm/components/Button/LinkButton.js.map +0 -1
- package/lib-esm/components/Button/RaisedButton.d.ts.map +0 -1
- package/lib-esm/components/Button/RaisedButton.js.map +0 -1
- package/lib-esm/components/Button/index.d.ts.map +0 -1
- package/lib-esm/components/Button/index.js +0 -6
- package/lib-esm/components/Button/index.js.map +0 -1
- package/lib-esm/components/Card/Card.d.ts.map +0 -1
- package/lib-esm/components/Card/Card.js.map +0 -1
- package/lib-esm/components/Card/index.d.ts.map +0 -1
- package/lib-esm/components/Card/index.js +0 -3
- package/lib-esm/components/Card/index.js.map +0 -1
- package/lib-esm/components/Chip/Chip.d.ts.map +0 -1
- package/lib-esm/components/Chip/Chip.js.map +0 -1
- package/lib-esm/components/Chip/index.d.ts.map +0 -1
- package/lib-esm/components/Chip/index.js +0 -2
- package/lib-esm/components/Chip/index.js.map +0 -1
- package/lib-esm/components/ChipInput/ChipInput.d.ts.map +0 -1
- package/lib-esm/components/ChipInput/ChipInput.js.map +0 -1
- package/lib-esm/components/ChipInput/index.d.ts.map +0 -1
- package/lib-esm/components/ChipInput/index.js +0 -2
- package/lib-esm/components/ChipInput/index.js.map +0 -1
- package/lib-esm/components/Dialog/AlertDialog.d.ts.map +0 -1
- package/lib-esm/components/Dialog/AlertDialog.js.map +0 -1
- package/lib-esm/components/Dialog/ConfirmDialog.d.ts.map +0 -1
- package/lib-esm/components/Dialog/ConfirmDialog.js.map +0 -1
- package/lib-esm/components/Dialog/Dialog.d.ts.map +0 -1
- package/lib-esm/components/Dialog/Dialog.js.map +0 -1
- package/lib-esm/components/Dialog/PromptDialog.d.ts.map +0 -1
- package/lib-esm/components/Dialog/PromptDialog.js.map +0 -1
- package/lib-esm/components/Dialog/index.d.ts.map +0 -1
- package/lib-esm/components/Dialog/index.js +0 -5
- package/lib-esm/components/Dialog/index.js.map +0 -1
- package/lib-esm/components/DragAndDrop/DragAndDrop.d.ts.map +0 -1
- package/lib-esm/components/DragAndDrop/DragAndDrop.js.map +0 -1
- package/lib-esm/components/DragAndDrop/DragItem.d.ts.map +0 -1
- package/lib-esm/components/DragAndDrop/DragItem.js.map +0 -1
- package/lib-esm/components/DragAndDrop/index.d.ts.map +0 -1
- package/lib-esm/components/DragAndDrop/index.js +0 -3
- package/lib-esm/components/DragAndDrop/index.js.map +0 -1
- package/lib-esm/components/DragAndDrop/types.d.ts.map +0 -1
- package/lib-esm/components/DragAndDrop/types.js.map +0 -1
- package/lib-esm/components/Drawer/Drawer.d.ts.map +0 -1
- package/lib-esm/components/Drawer/Drawer.js.map +0 -1
- package/lib-esm/components/Drawer/index.d.ts.map +0 -1
- package/lib-esm/components/Drawer/index.js +0 -2
- package/lib-esm/components/Drawer/index.js.map +0 -1
- package/lib-esm/components/Groups/Group.d.ts.map +0 -1
- package/lib-esm/components/Groups/Group.js.map +0 -1
- package/lib-esm/components/Groups/GroupLabel.d.ts.map +0 -1
- package/lib-esm/components/Groups/GroupLabel.js.map +0 -1
- package/lib-esm/components/Groups/index.d.ts.map +0 -1
- package/lib-esm/components/Groups/index.js +0 -3
- package/lib-esm/components/Groups/index.js.map +0 -1
- package/lib-esm/components/Input/Checkbox.d.ts.map +0 -1
- package/lib-esm/components/Input/Checkbox.js.map +0 -1
- package/lib-esm/components/Input/Dropdown.d.ts.map +0 -1
- package/lib-esm/components/Input/Dropdown.js.map +0 -1
- package/lib-esm/components/Input/Input.d.ts.map +0 -1
- package/lib-esm/components/Input/Input.js.map +0 -1
- package/lib-esm/components/Input/Radio.d.ts.map +0 -1
- package/lib-esm/components/Input/Radio.js.map +0 -1
- package/lib-esm/components/Input/RadioButton.d.ts.map +0 -1
- package/lib-esm/components/Input/RadioButton.js.map +0 -1
- package/lib-esm/components/Input/Select.d.ts.map +0 -1
- package/lib-esm/components/Input/Select.js.map +0 -1
- package/lib-esm/components/Input/TextArea.d.ts.map +0 -1
- package/lib-esm/components/Input/TextArea.js.map +0 -1
- package/lib-esm/components/Input/Toggle.d.ts.map +0 -1
- package/lib-esm/components/Input/Toggle.js.map +0 -1
- package/lib-esm/components/Input/index.d.ts.map +0 -1
- package/lib-esm/components/Input/index.js +0 -9
- package/lib-esm/components/Input/index.js.map +0 -1
- package/lib-esm/components/Menu/Menu.d.ts.map +0 -1
- package/lib-esm/components/Menu/Menu.js.map +0 -1
- package/lib-esm/components/Menu/MenuContext.d.ts.map +0 -1
- package/lib-esm/components/Menu/MenuContext.js.map +0 -1
- package/lib-esm/components/Menu/MenuItem.d.ts.map +0 -1
- package/lib-esm/components/Menu/MenuItem.js.map +0 -1
- package/lib-esm/components/Menu/index.d.ts.map +0 -1
- package/lib-esm/components/Menu/index.js +0 -3
- package/lib-esm/components/Menu/index.js.map +0 -1
- package/lib-esm/components/Modal/Modal.d.ts.map +0 -1
- package/lib-esm/components/Modal/Modal.js.map +0 -1
- package/lib-esm/components/Modal/index.d.ts.map +0 -1
- package/lib-esm/components/Modal/index.js +0 -2
- package/lib-esm/components/Modal/index.js.map +0 -1
- package/lib-esm/components/Notification/Notification.d.ts.map +0 -1
- package/lib-esm/components/Notification/Notification.js.map +0 -1
- package/lib-esm/components/Notification/NotificationManager.d.ts.map +0 -1
- package/lib-esm/components/Notification/NotificationManager.js.map +0 -1
- package/lib-esm/components/Notification/index.d.ts.map +0 -1
- package/lib-esm/components/Notification/index.js +0 -3
- package/lib-esm/components/Notification/index.js.map +0 -1
- package/lib-esm/components/Notification/style.d.ts.map +0 -1
- package/lib-esm/components/Notification/style.js.map +0 -1
- package/lib-esm/components/Notification/types.d.ts.map +0 -1
- package/lib-esm/components/Notification/types.js.map +0 -1
- package/lib-esm/components/Popover/Popover.d.ts.map +0 -1
- package/lib-esm/components/Popover/Popover.js.map +0 -1
- package/lib-esm/components/Popover/index.d.ts.map +0 -1
- package/lib-esm/components/Popover/index.js +0 -2
- package/lib-esm/components/Popover/index.js.map +0 -1
- package/lib-esm/components/Spinner/Spinner.d.ts.map +0 -1
- package/lib-esm/components/Spinner/Spinner.js.map +0 -1
- package/lib-esm/components/Spinner/index.d.ts.map +0 -1
- package/lib-esm/components/Spinner/index.js +0 -2
- package/lib-esm/components/Spinner/index.js.map +0 -1
- package/lib-esm/components/Stepper/Step.d.ts.map +0 -1
- package/lib-esm/components/Stepper/Step.js.map +0 -1
- package/lib-esm/components/Stepper/Stepper.d.ts.map +0 -1
- package/lib-esm/components/Stepper/Stepper.js.map +0 -1
- package/lib-esm/components/Stepper/index.d.ts.map +0 -1
- package/lib-esm/components/Stepper/index.js +0 -4
- package/lib-esm/components/Stepper/index.js.map +0 -1
- package/lib-esm/components/Tabs/Tab.d.ts.map +0 -1
- package/lib-esm/components/Tabs/Tab.js.map +0 -1
- package/lib-esm/components/Tabs/Tabs.d.ts.map +0 -1
- package/lib-esm/components/Tabs/Tabs.js.map +0 -1
- package/lib-esm/components/Tabs/index.d.ts.map +0 -1
- package/lib-esm/components/Tabs/index.js +0 -3
- package/lib-esm/components/Tabs/index.js.map +0 -1
- package/lib-esm/components/Toast/Toast.d.ts.map +0 -1
- package/lib-esm/components/Toast/Toast.js.map +0 -1
- package/lib-esm/components/Toast/ToastStory.d.ts.map +0 -1
- package/lib-esm/components/Toast/ToastStory.js +0 -35
- package/lib-esm/components/Toast/ToastStory.js.map +0 -1
- package/lib-esm/components/Toast/index.d.ts.map +0 -1
- package/lib-esm/components/Toast/index.js +0 -2
- package/lib-esm/components/Toast/index.js.map +0 -1
- package/lib-esm/components/Tooltip/Tooltip.d.ts.map +0 -1
- package/lib-esm/components/Tooltip/Tooltip.js.map +0 -1
- package/lib-esm/components/Tooltip/index.d.ts.map +0 -1
- package/lib-esm/components/Tooltip/index.js +0 -2
- package/lib-esm/components/Tooltip/index.js.map +0 -1
- package/lib-esm/components/index.d.ts.map +0 -1
- package/lib-esm/components/index.js.map +0 -1
- package/lib-esm/icons/CheckCircle.d.ts.map +0 -1
- package/lib-esm/icons/CheckCircle.js.map +0 -1
- package/lib-esm/icons/Close.d.ts.map +0 -1
- package/lib-esm/icons/Close.js.map +0 -1
- package/lib-esm/icons/DragIndicator.d.ts.map +0 -1
- package/lib-esm/icons/DragIndicator.js.map +0 -1
- package/lib-esm/icons/ErrorOutline.d.ts.map +0 -1
- package/lib-esm/icons/ErrorOutline.js.map +0 -1
- package/lib-esm/icons/ExpandMore.d.ts.map +0 -1
- package/lib-esm/icons/ExpandMore.js.map +0 -1
- package/lib-esm/icons/FiberManualRecord.d.ts.map +0 -1
- package/lib-esm/icons/FiberManualRecord.js.map +0 -1
- package/lib-esm/icons/Info.d.ts.map +0 -1
- package/lib-esm/icons/Info.js.map +0 -1
- package/lib-esm/icons/ReportProblem.d.ts.map +0 -1
- package/lib-esm/icons/ReportProblem.js.map +0 -1
- package/lib-esm/icons/index.d.ts.map +0 -1
- package/lib-esm/icons/index.js +0 -9
- package/lib-esm/icons/index.js.map +0 -1
- package/lib-esm/index.d.ts.map +0 -1
- package/lib-esm/index.js +0 -2
- package/lib-esm/index.js.map +0 -1
- package/lib-esm/shared/LayerManager.d.ts.map +0 -1
- package/lib-esm/shared/LayerManager.js.map +0 -1
- package/lib-esm/shared/constants.d.ts.map +0 -1
- package/lib-esm/shared/constants.js.map +0 -1
- package/lib-esm/shared/styles.d.ts.map +0 -1
- package/lib-esm/shared/styles.js.map +0 -1
|
@@ -1,83 +1,35 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsxs, jsx } from '@emotion/react/jsx-runtime';
|
|
2
|
+
import 'react';
|
|
2
3
|
import PropTypes from 'prop-types';
|
|
3
4
|
import styled from '@emotion/styled';
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const Input = styled
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
& + span {
|
|
15
|
-
position: relative;
|
|
16
|
-
cursor: pointer;
|
|
17
|
-
width: 30px;
|
|
18
|
-
height: 18px;
|
|
19
|
-
background-color: ${constants.LIGHT_GREY};
|
|
20
|
-
transition: 0.4s;
|
|
21
|
-
border-radius: 10px;
|
|
22
|
-
padding: 0 3px;
|
|
23
|
-
margin: 0 10px 0 5px;
|
|
24
|
-
}
|
|
25
|
-
& + span:before {
|
|
26
|
-
position: absolute;
|
|
27
|
-
content: '';
|
|
28
|
-
height: 14px;
|
|
29
|
-
width: 14px;
|
|
30
|
-
left: 1px;
|
|
31
|
-
top: 1px;
|
|
32
|
-
border: 1px solid var(--disabled-border, ${constants.DISABLED_BORDER});
|
|
33
|
-
border-radius: 50%;
|
|
34
|
-
background-color: var(--background, ${constants.BACKGROUND});
|
|
35
|
-
transition: 0.4s;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/* checked */
|
|
39
|
-
&:checked + span {
|
|
40
|
-
background-color: var(--primary, ${constants.PRIMARY_LIGHT});
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
&:checked + span:before {
|
|
44
|
-
transform: translateX(18px);
|
|
45
|
-
border-color: var(--primary, ${constants.PRIMARY});
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/* focus */
|
|
49
|
-
&:enabled:focus + span:before {
|
|
50
|
-
box-shadow: 0 0 0 3px var(--primary, ${constants.PRIMARY_LIGHT});
|
|
51
|
-
border-color: var(--primary, ${constants.PRIMARY});
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/* hover */
|
|
55
|
-
&:enabled:hover ~ span {
|
|
56
|
-
cursor: pointer;
|
|
57
|
-
color: var(--primary, ${constants.PRIMARY});
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/* disabled */
|
|
61
|
-
&:disabled ~ span {
|
|
62
|
-
color: var(--disabled-border, ${constants.DISABLED_BORDER});
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
&:disabled + span {
|
|
66
|
-
background-color: ${constants.LIGHT_GREY};
|
|
67
|
-
cursor: not-allowed;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
&:disabled + span:before {
|
|
71
|
-
background-color: var(--border-light-color, ${constants.BORDER_LIGHT_COLOR});
|
|
72
|
-
border-color: var(--disabled-border, ${constants.DISABLED_BORDER});
|
|
73
|
-
}
|
|
74
|
-
`;
|
|
5
|
+
import { getThemeValue, THEME_NAME } from '../../shared/constants.js';
|
|
6
|
+
|
|
7
|
+
const Switch = /*#__PURE__*/ styled("label", {
|
|
8
|
+
target: "ecfiyvb0",
|
|
9
|
+
label: "Switch"
|
|
10
|
+
})("position:relative;display:inline-flex;margin:5px 0;", "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvbm8tZnJpbGxzLXVpL25vLWZyaWxscy11aS9zcmMvY29tcG9uZW50cy9JbnB1dC9Ub2dnbGUudHN4Iiwic291cmNlcyI6WyIvaG9tZS9ydW5uZXIvd29yay9uby1mcmlsbHMtdWkvbm8tZnJpbGxzLXVpL3NyYy9jb21wb25lbnRzL0lucHV0L1RvZ2dsZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBnZXRUaGVtZVZhbHVlLCBUSEVNRV9OQU1FIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2NvbnN0YW50cyc7XG5cbmNvbnN0IFN3aXRjaCA9IHN0eWxlZC5sYWJlbGBcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgbWFyZ2luOiA1cHggMDtcbmA7XG5cbmNvbnN0IElucHV0ID0gc3R5bGVkLmlucHV0YFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMDtcbiAgICBoZWlnaHQ6IDA7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICBtYXJnaW46IDA7XG5cbiAgICAmICsgc3BhbiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB3aWR0aDogMzBweDtcbiAgICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke2dldFRoZW1lVmFsdWUoVEhFTUVfTkFNRS5MSUdIVF9HUkVZKX07XG4gICAgICAgIHRyYW5zaXRpb246IDAuNHM7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgICAgIHBhZGRpbmc6IDAgM3B4O1xuICAgICAgICBtYXJnaW46IDAgMTBweCAwIDVweDtcbiAgICB9XG4gICAgJiArIHNwYW46YmVmb3JlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgaGVpZ2h0OiAxNHB4O1xuICAgICAgICB3aWR0aDogMTRweDtcbiAgICAgICAgbGVmdDogMXB4O1xuICAgICAgICB0b3A6IDFweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtnZXRUaGVtZVZhbHVlKFRIRU1FX05BTUUuRElTQUJMRURfQk9SREVSKX07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtnZXRUaGVtZVZhbHVlKFRIRU1FX05BTUUuQkFDS0dST1VORCl9O1xuICAgICAgICB0cmFuc2l0aW9uOiAwLjRzO1xuICAgIH1cblxuICAgIC8qIGNoZWNrZWQgKi9cbiAgICAmOmNoZWNrZWQgKyBzcGFuIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtnZXRUaGVtZVZhbHVlKFRIRU1FX05BTUUuUFJJTUFSWV9MSUdIVCl9O1xuICAgIH1cblxuICAgICY6Y2hlY2tlZCArIHNwYW46YmVmb3JlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDE4cHgpO1xuICAgICAgICBib3JkZXItY29sb3I6ICR7Z2V0VGhlbWVWYWx1ZShUSEVNRV9OQU1FLlBSSU1BUlkpfTtcbiAgICB9XG5cbiAgICAvKiBmb2N1cyAqL1xuICAgICY6ZW5hYmxlZDpmb2N1cyArIHNwYW46YmVmb3JlIHtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4ICR7Z2V0VGhlbWVWYWx1ZShUSEVNRV9OQU1FLlBSSU1BUllfTElHSFQpfTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2dldFRoZW1lVmFsdWUoVEhFTUVfTkFNRS5QUklNQVJZKX07XG4gICAgfVxuXG4gICAgLyogaG92ZXIgKi9cbiAgICAmOmVuYWJsZWQ6aG92ZXIgfiBzcGFuIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBjb2xvcjogJHtnZXRUaGVtZVZhbHVlKFRIRU1FX05BTUUuUFJJTUFSWSl9O1xuICAgIH1cblxuICAgIC8qIGRpc2FibGVkICovXG4gICAgJjpkaXNhYmxlZCB+IHNwYW4ge1xuICAgICAgICBjb2xvcjogJHtnZXRUaGVtZVZhbHVlKFRIRU1FX05BTUUuRElTQUJMRURfQk9SREVSKX07XG4gICAgfVxuXG4gICAgJjpkaXNhYmxlZCArIHNwYW4ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke2dldFRoZW1lVmFsdWUoVEhFTUVfTkFNRS5MSUdIVF9HUkVZKX07XG4gICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgfVxuXG4gICAgJjpkaXNhYmxlZCArIHNwYW46YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtnZXRUaGVtZVZhbHVlKFRIRU1FX05BTUUuQk9SREVSX0xJR0hUX0NPTE9SKX07XG4gICAgICAgIGJvcmRlci1jb2xvcjogJHtnZXRUaGVtZVZhbHVlKFRIRU1FX05BTUUuRElTQUJMRURfQk9SREVSKX07XG4gICAgfVxuYDtcblxudHlwZSBUb2dnbGVQcm9wcyA9IFByb3BUeXBlcy5JbmZlclByb3BzPFxuICAgIFJlYWN0LkFsbEhUTUxBdHRyaWJ1dGVzPEhUTUxJbnB1dEVsZW1lbnQ+ICYgdHlwZW9mIFRvZ2dsZS5wcm9wVHlwZXNcbj47XG5cbmZ1bmN0aW9uIFRvZ2dsZShwcm9wczogVG9nZ2xlUHJvcHMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgICA8U3dpdGNoPlxuICAgICAgICAgICAgPElucHV0IHsuLi5wcm9wc30gdHlwZT1cImNoZWNrYm94XCIgcm9sZT1cInN3aXRjaFwiIGFyaWEtY2hlY2tlZD17cHJvcHMuY2hlY2tlZH0gLz5cbiAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPntwcm9wcy5sYWJlbH08L3NwYW4+XG4gICAgICAgIDwvU3dpdGNoPlxuICAgICk7XG59XG5cblRvZ2dsZS5wcm9wVHlwZXMgPSB7XG4gICAgLyoqIExhYmVsIGZvciB0aGUgZmllbGQgKi9cbiAgICBsYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRvZ2dsZTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLZSJ9 */");
|
|
11
|
+
const Input = /*#__PURE__*/ styled("input", {
|
|
12
|
+
target: "ecfiyvb1",
|
|
13
|
+
label: "Input"
|
|
14
|
+
})("position:absolute;width:0;height:0;appearance:none;margin:0;& + span{position:relative;cursor:pointer;width:30px;height:18px;background-color:", getThemeValue(THEME_NAME.LIGHT_GREY), ";transition:0.4s;border-radius:10px;padding:0 3px;margin:0 10px 0 5px;}& + span:before{position:absolute;content:'';height:14px;width:14px;left:1px;top:1px;border:1px solid ", getThemeValue(THEME_NAME.DISABLED_BORDER), ";border-radius:50%;background-color:", getThemeValue(THEME_NAME.BACKGROUND), ";transition:0.4s;}&:checked + span{background-color:", getThemeValue(THEME_NAME.PRIMARY_LIGHT), ";}&:checked + span:before{transform:translateX(18px);border-color:", getThemeValue(THEME_NAME.PRIMARY), ";}&:enabled:focus + span:before{box-shadow:0 0 0 3px ", getThemeValue(THEME_NAME.PRIMARY_LIGHT), ";border-color:", getThemeValue(THEME_NAME.PRIMARY), ";}&:enabled:hover ~ span{cursor:pointer;color:", getThemeValue(THEME_NAME.PRIMARY), ";}&:disabled ~ span{color:", getThemeValue(THEME_NAME.DISABLED_BORDER), ";}&:disabled + span{background-color:", getThemeValue(THEME_NAME.LIGHT_GREY), ";cursor:not-allowed;}&:disabled + span:before{background-color:", getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR), ";border-color:", getThemeValue(THEME_NAME.DISABLED_BORDER), ";}", "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvbm8tZnJpbGxzLXVpL25vLWZyaWxscy11aS9zcmMvY29tcG9uZW50cy9JbnB1dC9Ub2dnbGUudHN4Iiwic291cmNlcyI6WyIvaG9tZS9ydW5uZXIvd29yay9uby1mcmlsbHMtdWkvbm8tZnJpbGxzLXVpL3NyYy9jb21wb25lbnRzL0lucHV0L1RvZ2dsZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBnZXRUaGVtZVZhbHVlLCBUSEVNRV9OQU1FIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2NvbnN0YW50cyc7XG5cbmNvbnN0IFN3aXRjaCA9IHN0eWxlZC5sYWJlbGBcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgbWFyZ2luOiA1cHggMDtcbmA7XG5cbmNvbnN0IElucHV0ID0gc3R5bGVkLmlucHV0YFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMDtcbiAgICBoZWlnaHQ6IDA7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICBtYXJnaW46IDA7XG5cbiAgICAmICsgc3BhbiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB3aWR0aDogMzBweDtcbiAgICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke2dldFRoZW1lVmFsdWUoVEhFTUVfTkFNRS5MSUdIVF9HUkVZKX07XG4gICAgICAgIHRyYW5zaXRpb246IDAuNHM7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgICAgIHBhZGRpbmc6IDAgM3B4O1xuICAgICAgICBtYXJnaW46IDAgMTBweCAwIDVweDtcbiAgICB9XG4gICAgJiArIHNwYW46YmVmb3JlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgaGVpZ2h0OiAxNHB4O1xuICAgICAgICB3aWR0aDogMTRweDtcbiAgICAgICAgbGVmdDogMXB4O1xuICAgICAgICB0b3A6IDFweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtnZXRUaGVtZVZhbHVlKFRIRU1FX05BTUUuRElTQUJMRURfQk9SREVSKX07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtnZXRUaGVtZVZhbHVlKFRIRU1FX05BTUUuQkFDS0dST1VORCl9O1xuICAgICAgICB0cmFuc2l0aW9uOiAwLjRzO1xuICAgIH1cblxuICAgIC8qIGNoZWNrZWQgKi9cbiAgICAmOmNoZWNrZWQgKyBzcGFuIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtnZXRUaGVtZVZhbHVlKFRIRU1FX05BTUUuUFJJTUFSWV9MSUdIVCl9O1xuICAgIH1cblxuICAgICY6Y2hlY2tlZCArIHNwYW46YmVmb3JlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDE4cHgpO1xuICAgICAgICBib3JkZXItY29sb3I6ICR7Z2V0VGhlbWVWYWx1ZShUSEVNRV9OQU1FLlBSSU1BUlkpfTtcbiAgICB9XG5cbiAgICAvKiBmb2N1cyAqL1xuICAgICY6ZW5hYmxlZDpmb2N1cyArIHNwYW46YmVmb3JlIHtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4ICR7Z2V0VGhlbWVWYWx1ZShUSEVNRV9OQU1FLlBSSU1BUllfTElHSFQpfTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2dldFRoZW1lVmFsdWUoVEhFTUVfTkFNRS5QUklNQVJZKX07XG4gICAgfVxuXG4gICAgLyogaG92ZXIgKi9cbiAgICAmOmVuYWJsZWQ6aG92ZXIgfiBzcGFuIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBjb2xvcjogJHtnZXRUaGVtZVZhbHVlKFRIRU1FX05BTUUuUFJJTUFSWSl9O1xuICAgIH1cblxuICAgIC8qIGRpc2FibGVkICovXG4gICAgJjpkaXNhYmxlZCB+IHNwYW4ge1xuICAgICAgICBjb2xvcjogJHtnZXRUaGVtZVZhbHVlKFRIRU1FX05BTUUuRElTQUJMRURfQk9SREVSKX07XG4gICAgfVxuXG4gICAgJjpkaXNhYmxlZCArIHNwYW4ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke2dldFRoZW1lVmFsdWUoVEhFTUVfTkFNRS5MSUdIVF9HUkVZKX07XG4gICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgfVxuXG4gICAgJjpkaXNhYmxlZCArIHNwYW46YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtnZXRUaGVtZVZhbHVlKFRIRU1FX05BTUUuQk9SREVSX0xJR0hUX0NPTE9SKX07XG4gICAgICAgIGJvcmRlci1jb2xvcjogJHtnZXRUaGVtZVZhbHVlKFRIRU1FX05BTUUuRElTQUJMRURfQk9SREVSKX07XG4gICAgfVxuYDtcblxudHlwZSBUb2dnbGVQcm9wcyA9IFByb3BUeXBlcy5JbmZlclByb3BzPFxuICAgIFJlYWN0LkFsbEhUTUxBdHRyaWJ1dGVzPEhUTUxJbnB1dEVsZW1lbnQ+ICYgdHlwZW9mIFRvZ2dsZS5wcm9wVHlwZXNcbj47XG5cbmZ1bmN0aW9uIFRvZ2dsZShwcm9wczogVG9nZ2xlUHJvcHMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgICA8U3dpdGNoPlxuICAgICAgICAgICAgPElucHV0IHsuLi5wcm9wc30gdHlwZT1cImNoZWNrYm94XCIgcm9sZT1cInN3aXRjaFwiIGFyaWEtY2hlY2tlZD17cHJvcHMuY2hlY2tlZH0gLz5cbiAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPntwcm9wcy5sYWJlbH08L3NwYW4+XG4gICAgICAgIDwvU3dpdGNoPlxuICAgICk7XG59XG5cblRvZ2dsZS5wcm9wVHlwZXMgPSB7XG4gICAgLyoqIExhYmVsIGZvciB0aGUgZmllbGQgKi9cbiAgICBsYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRvZ2dsZTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFXYyJ9 */");
|
|
75
15
|
function Toggle(props) {
|
|
76
|
-
return (
|
|
16
|
+
return /*#__PURE__*/ jsxs(Switch, {
|
|
17
|
+
children: [
|
|
18
|
+
/*#__PURE__*/ jsx(Input, {
|
|
19
|
+
...props,
|
|
20
|
+
type: "checkbox",
|
|
21
|
+
role: "switch",
|
|
22
|
+
"aria-checked": props.checked
|
|
23
|
+
}),
|
|
24
|
+
/*#__PURE__*/ jsx("span", {}),
|
|
25
|
+
/*#__PURE__*/ jsx("span", {
|
|
26
|
+
children: props.label
|
|
27
|
+
})
|
|
28
|
+
]
|
|
29
|
+
});
|
|
77
30
|
}
|
|
78
31
|
Toggle.propTypes = {
|
|
79
|
-
/** Label for the field */
|
|
80
|
-
label: PropTypes.string,
|
|
32
|
+
/** Label for the field */ label: PropTypes.string
|
|
81
33
|
};
|
|
82
|
-
|
|
83
|
-
|
|
34
|
+
|
|
35
|
+
export { Toggle as default };
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import React, { ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Props for the Menu component.
|
|
4
|
+
* @template T - The type of value(s) in the menu.
|
|
5
|
+
*/
|
|
2
6
|
interface MenuProps<T> {
|
|
3
7
|
/** Multiple Menu Items can be selected */
|
|
4
8
|
multiSelect?: boolean;
|
|
@@ -9,6 +13,13 @@ interface MenuProps<T> {
|
|
|
9
13
|
/** Menu Items */
|
|
10
14
|
children?: ReactNode;
|
|
11
15
|
}
|
|
12
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Menu component that allows selection of items from a list.
|
|
18
|
+
* Supports single and multi-select modes and keyboard navigation.
|
|
19
|
+
*
|
|
20
|
+
* @template T - The type of value(s) in the menu.
|
|
21
|
+
* @param {MenuProps<T> & Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'>} props - The menu properties.
|
|
22
|
+
* @param {ForwardedRef<HTMLDivElement>} ref - The ref forwarded to the menu container.
|
|
23
|
+
*/
|
|
24
|
+
declare const Menu: React.ForwardRefExoticComponent<MenuProps<object> & Omit<React.HTMLAttributes<HTMLDivElement>, "onChange"> & React.RefAttributes<HTMLDivElement>>;
|
|
13
25
|
export default Menu;
|
|
14
|
-
//# sourceMappingURL=Menu.d.ts.map
|
|
@@ -1,46 +1,126 @@
|
|
|
1
|
-
import { jsx
|
|
1
|
+
import { jsx } from '@emotion/react/jsx-runtime';
|
|
2
2
|
import React, { useState } from 'react';
|
|
3
3
|
import styled from '@emotion/styled';
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
flex: 1;
|
|
7
|
-
display: flex;
|
|
8
|
-
flex-direction: column;
|
|
4
|
+
import { getThemeValue, THEME_NAME } from '../../shared/constants.js';
|
|
5
|
+
import MenuContext from './MenuContext.js';
|
|
9
6
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
7
|
+
const MenuContainer = /*#__PURE__*/ styled("div", {
|
|
8
|
+
target: "ez48lhb0",
|
|
9
|
+
label: "MenuContainer"
|
|
10
|
+
})("flex:1;display:flex;flex-direction:column;& div:last-child{border-bottom:none;}&:focus-within{box-shadow:0 0 0 4px ", getThemeValue(THEME_NAME.PRIMARY_LIGHT), ";}", "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvbm8tZnJpbGxzLXVpL25vLWZyaWxscy11aS9zcmMvY29tcG9uZW50cy9NZW51L01lbnUudHN4Iiwic291cmNlcyI6WyIvaG9tZS9ydW5uZXIvd29yay9uby1mcmlsbHMtdWkvbm8tZnJpbGxzLXVpL3NyYy9jb21wb25lbnRzL01lbnUvTWVudS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCBSZWFjdE5vZGUsIEZvcndhcmRlZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IGdldFRoZW1lVmFsdWUsIFRIRU1FX05BTUUgfSBmcm9tICcuLi8uLi9zaGFyZWQvY29uc3RhbnRzJztcbmltcG9ydCBNZW51Q29udGV4dCBmcm9tICcuL01lbnVDb250ZXh0Jztcbi8qKlxuICogUHJvcHMgZm9yIHRoZSBNZW51IGNvbXBvbmVudC5cbiAqIEB0ZW1wbGF0ZSBUIC0gVGhlIHR5cGUgb2YgdmFsdWUocykgaW4gdGhlIG1lbnUuXG4gKi9cbmludGVyZmFjZSBNZW51UHJvcHM8VD4ge1xuICAgIC8qKiBNdWx0aXBsZSBNZW51IEl0ZW1zIGNhbiBiZSBzZWxlY3RlZCAqL1xuICAgIG11bHRpU2VsZWN0PzogYm9vbGVhbjtcbiAgICAvKiogVmFsdWUocykgc2VsZWN0ZWQgKi9cbiAgICB2YWx1ZT86IFQgfCBUW107XG4gICAgLyoqIENhbGxiYWNrIHdoZW4gdGhlIHNlbGVjdGVkIHZhbHVlIGNoYW5nZXMgKi9cbiAgICBvbkNoYW5nZT86ICh2YWx1ZTogVCB8IFRbXSkgPT4gdm9pZDtcbiAgICAvKiogTWVudSBJdGVtcyAqL1xuICAgIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xufVxuXG5jb25zdCBNZW51Q29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgICBmbGV4OiAxO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgICYgZGl2Omxhc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgIH1cblxuICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgNHB4ICR7Z2V0VGhlbWVWYWx1ZShUSEVNRV9OQU1FLlBSSU1BUllfTElHSFQpfTtcbiAgICB9XG5gO1xuXG4vKipcbiAqIE1lbnUgY29tcG9uZW50IHRoYXQgYWxsb3dzIHNlbGVjdGlvbiBvZiBpdGVtcyBmcm9tIGEgbGlzdC5cbiAqIFN1cHBvcnRzIHNpbmdsZSBhbmQgbXVsdGktc2VsZWN0IG1vZGVzIGFuZCBrZXlib2FyZCBuYXZpZ2F0aW9uLlxuICpcbiAqIEB0ZW1wbGF0ZSBUIC0gVGhlIHR5cGUgb2YgdmFsdWUocykgaW4gdGhlIG1lbnUuXG4gKiBAcGFyYW0ge01lbnVQcm9wczxUPiAmIE9taXQ8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+LCAnb25DaGFuZ2UnPn0gcHJvcHMgLSBUaGUgbWVudSBwcm9wZXJ0aWVzLlxuICogQHBhcmFtIHtGb3J3YXJkZWRSZWY8SFRNTERpdkVsZW1lbnQ+fSByZWYgLSBUaGUgcmVmIGZvcndhcmRlZCB0byB0aGUgbWVudSBjb250YWluZXIuXG4gKi9cbmNvbnN0IE1lbnUgPSBSZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIDxUIGV4dGVuZHMgb2JqZWN0PihcbiAgICBwcm9wczogTWVudVByb3BzPFQ+ICYgT21pdDxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4sICdvbkNoYW5nZSc+LFxuICAgIHJlZjogRm9yd2FyZGVkUmVmPEhUTUxEaXZFbGVtZW50Pixcbikge1xuICAgIGNvbnN0IHsgbXVsdGlTZWxlY3QsIG9uQ2hhbmdlLCB2YWx1ZTogcHJvcFZhbHVlLCAuLi5yZXN0IH0gPSBwcm9wcztcbiAgICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKHByb3BWYWx1ZSB8fCAobXVsdGlTZWxlY3QgPyBbXSA6ICcnKSk7XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBzZWxlY3RlZCB2YWx1ZShzKS5cbiAgICAgKiBIYW5kbGVzIGJvdGggc2luZ2xlIGFuZCBtdWx0aS1zZWxlY3QgbG9naWMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1R9IHZhbCAtIFRoZSB2YWx1ZSB0byBzZWxlY3Qgb3IgZGVzZWxlY3QuXG4gICAgICovXG4gICAgY29uc3QgdXBkYXRlVmFsdWUgPSAodmFsOiBUKSA9PiB7XG4gICAgICAgIGxldCBuZXdWYWw7XG4gICAgICAgIGlmIChtdWx0aVNlbGVjdCkge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlLmluY2x1ZGVzKHZhbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3VmFsID0gdmFsdWUuZmlsdGVyKChpdGVtKSA9PiBpdGVtICE9PSB2YWwpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld1ZhbCA9IFsuLi52YWx1ZSwgdmFsXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdWYWwgPSB2YWw7XG4gICAgICAgIH1cbiAgICAgICAgc2V0VmFsdWUobmV3VmFsKTtcbiAgICAgICAgb25DaGFuZ2U/LihuZXdWYWwpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGVzIGtleWJvYXJkIG5hdmlnYXRpb24gd2l0aGluIHRoZSBtZW51LlxuICAgICAqIFN1cHBvcnRzIEFycm93IGtleXMgZm9yIG5hdmlnYXRpb24sIGFuZCBFbnRlci9TcGFjZSBmb3Igc2VsZWN0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtSZWFjdC5LZXlib2FyZEV2ZW50fSBlIC0gVGhlIGtleWJvYXJkIGV2ZW50LlxuICAgICAqL1xuICAgIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZTogUmVhY3QuS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBlLnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gZS5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBjb25zdCBpdGVtcyA9IEFycmF5LmZyb20oY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tyb2xlPVwib3B0aW9uXCJdJykpIGFzIEhUTUxFbGVtZW50W107XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGl0ZW1zLmluZGV4T2YodGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcblxuICAgICAgICBsZXQgbmV4dEluZGV4O1xuXG4gICAgICAgIHN3aXRjaCAoZS5rZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIG5leHRJbmRleCA9IGN1cnJlbnRJbmRleCArIDE7XG4gICAgICAgICAgICAgICAgaWYgKG5leHRJbmRleCA+PSBpdGVtcy5sZW5ndGgpIG5leHRJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgaXRlbXNbbmV4dEluZGV4XT8uZm9jdXMoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBuZXh0SW5kZXggPSBjdXJyZW50SW5kZXggLSAxO1xuICAgICAgICAgICAgICAgIGlmIChuZXh0SW5kZXggPCAwKSBuZXh0SW5kZXggPSBpdGVtcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgIGl0ZW1zW25leHRJbmRleF0/LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdIb21lJzpcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgaXRlbXNbMF0/LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdFbmQnOlxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBpdGVtc1tpdGVtcy5sZW5ndGggLSAxXT8uZm9jdXMoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgICAgIGNhc2UgJyAnOiAvLyBTcGFjZVxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0YXJnZXQuY2xpY2soKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogSGFuZGxlcyBmb2N1cyBldmVudHMgb24gdGhlIG1lbnUgY29udGFpbmVyLlxuICAgICAqIERlbGVnYXRlcyBmb2N1cyB0byB0aGUgZmlyc3QgaXRlbSBpZiB0aGUgY29udGFpbmVyIGl0c2VsZiByZWNlaXZlcyBmb2N1cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7UmVhY3QuRm9jdXNFdmVudH0gZSAtIFRoZSBmb2N1cyBldmVudC5cbiAgICAgKi9cbiAgICBjb25zdCBmb2N1c0hhbmRsZXIgPSAoZTogUmVhY3QuRm9jdXNFdmVudCkgPT4ge1xuICAgICAgICAvLyBQcmV2ZW50IHRyYXA6IElmIGZvY3VzIGNhbWUgZnJvbSBpbnNpZGUgKFNoaWZ0K1RhYiksIGRvIE5PVCBhdXRvLWZvY3VzIGFnYWluLlxuICAgICAgICAvLyBUaGlzIGFsbG93cyBmb2N1cyB0byBsYW5kIG9uIHRoZSBjb250YWluZXIsIGFuZCB0aGUgbmV4dCBTaGlmdCtUYWIgd2lsbCBleGl0LlxuICAgICAgICBpZiAoZS5jdXJyZW50VGFyZ2V0LmNvbnRhaW5zKGUucmVsYXRlZFRhcmdldCBhcyBOb2RlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT25seSBpZiBmb2N1cyBpcyBhY3R1YWxseSBvbiB0aGUgY29udGFpbmVyIChlLmcuIHRhYmJpbmcgaW50byBpdClcbiAgICAgICAgLy8gYW5kIG5vdCBidWJibGluZyB1cCBmcm9tIGEgY2hpbGRcbiAgICAgICAgaWYgKGUudGFyZ2V0ID09PSBlLmN1cnJlbnRUYXJnZXQpIHtcbiAgICAgICAgICAgIC8vIFByZXZlbnQgdGhlIGNvbnRhaW5lciBmcm9tIGhvbGRpbmcgZm9jdXM7IGRlbGVnYXRlIHRvIGZpcnN0IGl0ZW1cbiAgICAgICAgICAgIGNvbnN0IGZpcnN0SXRlbSA9IGUuY3VycmVudFRhcmdldC5xdWVyeVNlbGVjdG9yKCdbcm9sZT1cIm9wdGlvblwiXScpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgZmlyc3RJdGVtPy5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxNZW51Q29udGV4dC5Qcm92aWRlclxuICAgICAgICAgICAgdmFsdWU9e1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIG11bHRpU2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVWYWx1ZSxcbiAgICAgICAgICAgICAgICB9IGFzIHVua25vd24gYXMgUmVhY3QuQ29udGV4dFR5cGU8dHlwZW9mIE1lbnVDb250ZXh0PlxuICAgICAgICAgICAgfVxuICAgICAgICA+XG4gICAgICAgICAgICA8TWVudUNvbnRhaW5lclxuICAgICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgICAgIHJlZj17cmVmfVxuICAgICAgICAgICAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICAgICAgICAgICAgICBhcmlhLW11bHRpc2VsZWN0YWJsZT17bXVsdGlTZWxlY3R9XG4gICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3dufVxuICAgICAgICAgICAgICAgIG9uRm9jdXM9e2ZvY3VzSGFuZGxlcn1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICA8L01lbnVDb250YWluZXI+XG4gICAgICAgIDwvTWVudUNvbnRleHQuUHJvdmlkZXI+XG4gICAgKTtcbn0pO1xuXG5NZW51LmRpc3BsYXlOYW1lID0gJ01lbnUnO1xuXG5NZW51LmRlZmF1bHRQcm9wcyA9IHtcbiAgICBtdWx0aVNlbGVjdDogZmFsc2UsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBNZW51O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1Cc0IifQ== */");
|
|
11
|
+
/**
|
|
12
|
+
* Menu component that allows selection of items from a list.
|
|
13
|
+
* Supports single and multi-select modes and keyboard navigation.
|
|
14
|
+
*
|
|
15
|
+
* @template T - The type of value(s) in the menu.
|
|
16
|
+
* @param {MenuProps<T> & Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'>} props - The menu properties.
|
|
17
|
+
* @param {ForwardedRef<HTMLDivElement>} ref - The ref forwarded to the menu container.
|
|
18
|
+
*/ const Menu = /*#__PURE__*/ React.forwardRef(function(props, ref) {
|
|
19
|
+
const { multiSelect, onChange, value: propValue, ...rest } = props;
|
|
20
|
+
const [value, setValue] = useState(propValue || (multiSelect ? [] : ''));
|
|
21
|
+
/**
|
|
22
|
+
* Updates the selected value(s).
|
|
23
|
+
* Handles both single and multi-select logic.
|
|
24
|
+
*
|
|
25
|
+
* @param {T} val - The value to select or deselect.
|
|
26
|
+
*/ const updateValue = (val)=>{
|
|
18
27
|
let newVal;
|
|
19
28
|
if (multiSelect) {
|
|
20
29
|
if (Array.isArray(value)) {
|
|
21
30
|
if (value.includes(val)) {
|
|
22
|
-
newVal = value.filter((item)
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
|
|
31
|
+
newVal = value.filter((item)=>item !== val);
|
|
32
|
+
} else {
|
|
33
|
+
newVal = [
|
|
34
|
+
...value,
|
|
35
|
+
val
|
|
36
|
+
];
|
|
26
37
|
}
|
|
27
38
|
}
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
39
|
+
} else {
|
|
30
40
|
newVal = val;
|
|
31
41
|
}
|
|
32
42
|
setValue(newVal);
|
|
33
|
-
onChange
|
|
43
|
+
onChange?.(newVal);
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Handles keyboard navigation within the menu.
|
|
47
|
+
* Supports Arrow keys for navigation, and Enter/Space for selection.
|
|
48
|
+
*
|
|
49
|
+
* @param {React.KeyboardEvent} e - The keyboard event.
|
|
50
|
+
*/ const handleKeyDown = (e)=>{
|
|
51
|
+
const target = e.target;
|
|
52
|
+
const container = e.currentTarget;
|
|
53
|
+
const items = Array.from(container.querySelectorAll('[role="option"]'));
|
|
54
|
+
const currentIndex = items.indexOf(target);
|
|
55
|
+
let nextIndex;
|
|
56
|
+
switch(e.key){
|
|
57
|
+
case 'ArrowDown':
|
|
58
|
+
e.preventDefault();
|
|
59
|
+
nextIndex = currentIndex + 1;
|
|
60
|
+
if (nextIndex >= items.length) nextIndex = 0;
|
|
61
|
+
items[nextIndex]?.focus();
|
|
62
|
+
break;
|
|
63
|
+
case 'ArrowUp':
|
|
64
|
+
e.preventDefault();
|
|
65
|
+
nextIndex = currentIndex - 1;
|
|
66
|
+
if (nextIndex < 0) nextIndex = items.length - 1;
|
|
67
|
+
items[nextIndex]?.focus();
|
|
68
|
+
break;
|
|
69
|
+
case 'Home':
|
|
70
|
+
e.preventDefault();
|
|
71
|
+
items[0]?.focus();
|
|
72
|
+
break;
|
|
73
|
+
case 'End':
|
|
74
|
+
e.preventDefault();
|
|
75
|
+
items[items.length - 1]?.focus();
|
|
76
|
+
break;
|
|
77
|
+
case 'Enter':
|
|
78
|
+
case ' ':
|
|
79
|
+
e.preventDefault();
|
|
80
|
+
target.click();
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
34
83
|
};
|
|
35
|
-
|
|
84
|
+
/**
|
|
85
|
+
* Handles focus events on the menu container.
|
|
86
|
+
* Delegates focus to the first item if the container itself receives focus.
|
|
87
|
+
*
|
|
88
|
+
* @param {React.FocusEvent} e - The focus event.
|
|
89
|
+
*/ const focusHandler = (e)=>{
|
|
90
|
+
// Prevent trap: If focus came from inside (Shift+Tab), do NOT auto-focus again.
|
|
91
|
+
// This allows focus to land on the container, and the next Shift+Tab will exit.
|
|
92
|
+
if (e.currentTarget.contains(e.relatedTarget)) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
// Only if focus is actually on the container (e.g. tabbing into it)
|
|
96
|
+
// and not bubbling up from a child
|
|
97
|
+
if (e.target === e.currentTarget) {
|
|
98
|
+
// Prevent the container from holding focus; delegate to first item
|
|
99
|
+
const firstItem = e.currentTarget.querySelector('[role="option"]');
|
|
100
|
+
firstItem?.focus();
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
return /*#__PURE__*/ jsx(MenuContext.Provider, {
|
|
104
|
+
value: {
|
|
36
105
|
value,
|
|
37
106
|
multiSelect,
|
|
38
|
-
updateValue
|
|
39
|
-
},
|
|
107
|
+
updateValue
|
|
108
|
+
},
|
|
109
|
+
children: /*#__PURE__*/ jsx(MenuContainer, {
|
|
110
|
+
...rest,
|
|
111
|
+
ref: ref,
|
|
112
|
+
role: "listbox",
|
|
113
|
+
"aria-multiselectable": multiSelect,
|
|
114
|
+
tabIndex: 0,
|
|
115
|
+
onKeyDown: handleKeyDown,
|
|
116
|
+
onFocus: focusHandler,
|
|
117
|
+
children: props.children
|
|
118
|
+
})
|
|
119
|
+
});
|
|
40
120
|
});
|
|
41
121
|
Menu.displayName = 'Menu';
|
|
42
122
|
Menu.defaultProps = {
|
|
43
|
-
multiSelect: false
|
|
123
|
+
multiSelect: false
|
|
44
124
|
};
|
|
45
|
-
|
|
46
|
-
|
|
125
|
+
|
|
126
|
+
export { Menu as default };
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
interface MenuItemProps<T> {
|
|
3
3
|
/** Value of the element */
|
|
4
|
-
value: T
|
|
4
|
+
value: T;
|
|
5
5
|
}
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
declare const MenuItemInner: <T>(props: MenuItemProps<T> & React.PropsWithChildren, ref: React.Ref<HTMLButtonElement>) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
7
|
+
declare const MenuItem: <T>(props: MenuItemProps<T> & React.PropsWithChildren & {
|
|
8
|
+
ref?: React.Ref<HTMLButtonElement>;
|
|
9
|
+
}) => ReturnType<typeof MenuItemInner>;
|
|
10
|
+
export default MenuItem;
|
|
@@ -1,57 +1,42 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
-
t[p] = s[p];
|
|
5
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
-
t[p[i]] = s[p[i]];
|
|
9
|
-
}
|
|
10
|
-
return t;
|
|
11
|
-
};
|
|
12
|
-
import { jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
|
|
13
|
-
import { useContext } from 'react';
|
|
1
|
+
import { jsxs, jsx } from '@emotion/react/jsx-runtime';
|
|
2
|
+
import React, { useContext } from 'react';
|
|
14
3
|
import styled from '@emotion/styled';
|
|
15
|
-
import
|
|
16
|
-
import Checkbox from '../Input/Checkbox';
|
|
17
|
-
import MenuContext from './MenuContext';
|
|
18
|
-
const Container = styled.button `
|
|
19
|
-
font-weight: ${(props) => (props.selected ? 'bold' : 'normal')};
|
|
20
|
-
padding: 8px 6px;
|
|
21
|
-
border: none;
|
|
22
|
-
background-color: transparent;
|
|
23
|
-
font-size: 16px;
|
|
24
|
-
border-bottom: 1px solid var(--border-light-color, ${constants.BORDER_LIGHT_COLOR});
|
|
25
|
-
min-height: 41px;
|
|
26
|
-
display: flex;
|
|
27
|
-
align-items: center;
|
|
28
|
-
cursor: pointer;
|
|
29
|
-
position: relative;
|
|
30
|
-
|
|
31
|
-
&:hover,
|
|
32
|
-
&:focus,
|
|
33
|
-
&:focus-within {
|
|
34
|
-
background-color: var(--border-light-color, ${constants.BORDER_LIGHT_COLOR});
|
|
35
|
-
}
|
|
4
|
+
import { getThemeValue, THEME_NAME } from '../../shared/constants.js';
|
|
5
|
+
import Checkbox from '../Input/Checkbox.js';
|
|
6
|
+
import MenuContext from './MenuContext.js';
|
|
36
7
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
var _a, _b;
|
|
8
|
+
const Container = /*#__PURE__*/ styled("button", {
|
|
9
|
+
target: "ea4jlaf0",
|
|
10
|
+
label: "Container"
|
|
11
|
+
})("font-weight:", (props)=>props.selected ? 'bold' : 'normal', ";padding:8px;border:none;border-left:4px solid\n ", (props)=>props.selected && !props.multiselect ? getThemeValue(THEME_NAME.TEXT_COLOR_DARK) : 'transparent', ";background-color:transparent;font-size:16px;border-bottom:1px solid ", getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR), ";min-height:41px;display:flex;align-items:center;cursor:pointer;position:relative;color:", getThemeValue(THEME_NAME.TEXT_COLOR_DARK), ";&:hover,&:focus,&:focus-within{background-color:", getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR), ";}& > label{margin:0 4px 0 0;}", "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvbm8tZnJpbGxzLXVpL25vLWZyaWxscy11aS9zcmMvY29tcG9uZW50cy9NZW51L01lbnVJdGVtLnRzeCIsInNvdXJjZXMiOlsiL2hvbWUvcnVubmVyL3dvcmsvbm8tZnJpbGxzLXVpL25vLWZyaWxscy11aS9zcmMvY29tcG9uZW50cy9NZW51L01lbnVJdGVtLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgU3ludGhldGljRXZlbnQsIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBnZXRUaGVtZVZhbHVlLCBUSEVNRV9OQU1FIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2NvbnN0YW50cyc7XG5pbXBvcnQgQ2hlY2tib3ggZnJvbSAnLi4vSW5wdXQvQ2hlY2tib3gnO1xuaW1wb3J0IE1lbnVDb250ZXh0LCB7IE1lbnVDb250ZXh0VHlwZSB9IGZyb20gJy4vTWVudUNvbnRleHQnO1xuXG5pbnRlcmZhY2UgTWVudUl0ZW1Qcm9wczxUPiB7XG4gICAgLyoqIFZhbHVlIG9mIHRoZSBlbGVtZW50ICovXG4gICAgdmFsdWU6IFQ7XG59XG5cbmNvbnN0IENvbnRhaW5lciA9IHN0eWxlZC5idXR0b248eyBzZWxlY3RlZDogYm9vbGVhbjsgbXVsdGlzZWxlY3Q/OiBib29sZWFuIH0+YFxuICAgIGZvbnQtd2VpZ2h0OiAkeyhwcm9wcykgPT4gKHByb3BzLnNlbGVjdGVkID8gJ2JvbGQnIDogJ25vcm1hbCcpfTtcbiAgICBwYWRkaW5nOiA4cHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWRcbiAgICAgICAgJHsocHJvcHMpID0+XG4gICAgICAgICAgICBwcm9wcy5zZWxlY3RlZCAmJiAhcHJvcHMubXVsdGlzZWxlY3RcbiAgICAgICAgICAgICAgICA/IGdldFRoZW1lVmFsdWUoVEhFTUVfTkFNRS5URVhUX0NPTE9SX0RBUkspXG4gICAgICAgICAgICAgICAgOiAndHJhbnNwYXJlbnQnfTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7Z2V0VGhlbWVWYWx1ZShUSEVNRV9OQU1FLkJPUkRFUl9MSUdIVF9DT0xPUil9O1xuICAgIG1pbi1oZWlnaHQ6IDQxcHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgY29sb3I6ICR7Z2V0VGhlbWVWYWx1ZShUSEVNRV9OQU1FLlRFWFRfQ09MT1JfREFSSyl9O1xuXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzLFxuICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtnZXRUaGVtZVZhbHVlKFRIRU1FX05BTUUuQk9SREVSX0xJR0hUX0NPTE9SKX07XG4gICAgfVxuXG4gICAgJiA+IGxhYmVsIHtcbiAgICAgICAgbWFyZ2luOiAwIDRweCAwIDA7XG4gICAgfVxuYDtcblxuY29uc3QgTWVudUl0ZW1Jbm5lciA9IDxULD4oXG4gICAgcHJvcHM6IE1lbnVJdGVtUHJvcHM8VD4gJiBSZWFjdC5Qcm9wc1dpdGhDaGlsZHJlbixcbiAgICByZWY6IFJlYWN0LlJlZjxIVE1MQnV0dG9uRWxlbWVudD4sXG4pID0+IHtcbiAgICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChNZW51Q29udGV4dCkgYXMgTWVudUNvbnRleHRUeXBlPFQ+O1xuICAgIGNvbnN0IHsgdmFsdWUsIGNoaWxkcmVuLCAuLi5yZXN0IH0gPSBwcm9wcztcbiAgICBjb25zdCBjbGlja0hhbmRsZXIgPSAoZTogU3ludGhldGljRXZlbnQpID0+IHtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgY29udGV4dC51cGRhdGVWYWx1ZSh2YWx1ZSBhcyBUICYgVFtdKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgc2VsZWN0ZWQgPSBjb250ZXh0Lm11bHRpU2VsZWN0XG4gICAgICAgID8gY29udGV4dC52YWx1ZT8uaW5jbHVkZXM/Lih2YWx1ZSlcbiAgICAgICAgOiBjb250ZXh0LnZhbHVlID09PSB2YWx1ZTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxDb250YWluZXJcbiAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWR9XG4gICAgICAgICAgICBzZWxlY3RlZD17c2VsZWN0ZWR9XG4gICAgICAgICAgICBvbkNsaWNrPXtjbGlja0hhbmRsZXJ9XG4gICAgICAgICAgICBtdWx0aXNlbGVjdD17Y29udGV4dC5tdWx0aVNlbGVjdCA/IHRydWUgOiB1bmRlZmluZWR9XG4gICAgICAgID5cbiAgICAgICAgICAgIHtjb250ZXh0Lm11bHRpU2VsZWN0ICYmIChcbiAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgIHJlYWRPbmx5XG4gICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IGUuc3RvcFByb3BhZ2F0aW9uKCl9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvQ29udGFpbmVyPlxuICAgICk7XG59O1xuXG5jb25zdCBNZW51SXRlbSA9IFJlYWN0LmZvcndhcmRSZWYoTWVudUl0ZW1Jbm5lcikgYXMgPFQ+KFxuICAgIHByb3BzOiBNZW51SXRlbVByb3BzPFQ+ICYgUmVhY3QuUHJvcHNXaXRoQ2hpbGRyZW4gJiB7IHJlZj86IFJlYWN0LlJlZjxIVE1MQnV0dG9uRWxlbWVudD4gfSxcbikgPT4gUmV0dXJuVHlwZTx0eXBlb2YgTWVudUl0ZW1Jbm5lcj47XG5cbmV4cG9ydCBkZWZhdWx0IE1lbnVJdGVtO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVdrQiJ9 */");
|
|
12
|
+
const MenuItemInner = (props, ref)=>{
|
|
43
13
|
const context = useContext(MenuContext);
|
|
44
|
-
const { value, children
|
|
45
|
-
const clickHandler = (e)
|
|
14
|
+
const { value, children, ...rest } = props;
|
|
15
|
+
const clickHandler = (e)=>{
|
|
46
16
|
e.stopPropagation();
|
|
47
|
-
if (context.multiSelect) {
|
|
48
|
-
e.nativeEvent.stopImmediatePropagation();
|
|
49
|
-
}
|
|
50
17
|
context.updateValue(value);
|
|
51
18
|
};
|
|
52
|
-
const selected = context.multiSelect
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
19
|
+
const selected = context.multiSelect ? context.value?.includes?.(value) : context.value === value;
|
|
20
|
+
return /*#__PURE__*/ jsxs(Container, {
|
|
21
|
+
...rest,
|
|
22
|
+
ref: ref,
|
|
23
|
+
type: "button",
|
|
24
|
+
role: "option",
|
|
25
|
+
"aria-selected": selected,
|
|
26
|
+
selected: selected,
|
|
27
|
+
onClick: clickHandler,
|
|
28
|
+
multiselect: context.multiSelect ? true : undefined,
|
|
29
|
+
children: [
|
|
30
|
+
context.multiSelect && /*#__PURE__*/ jsx(Checkbox, {
|
|
31
|
+
checked: selected,
|
|
32
|
+
readOnly: true,
|
|
33
|
+
tabIndex: -1,
|
|
34
|
+
onClick: (e)=>e.stopPropagation()
|
|
35
|
+
}),
|
|
36
|
+
children
|
|
37
|
+
]
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
const MenuItem = /*#__PURE__*/ React.forwardRef(MenuItemInner);
|
|
41
|
+
|
|
42
|
+
export { MenuItem as default };
|
|
@@ -1,10 +1,32 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
export { Header as ModalHeader, Body as ModalBody, Footer as ModalFooter, } from '../../shared/styles';
|
|
4
|
-
|
|
4
|
+
declare const modalPropTypes: {
|
|
5
|
+
/** Opens the modal */
|
|
6
|
+
open: PropTypes.Validator<boolean>;
|
|
7
|
+
/** Closes the modal on esc */
|
|
8
|
+
closeOnEsc: PropTypes.Requireable<boolean>;
|
|
9
|
+
/** Closes the modal on overlay click */
|
|
10
|
+
closeOnOverlayClick: PropTypes.Requireable<boolean>;
|
|
11
|
+
/** Call back function called when the modal closes. */
|
|
12
|
+
onClose: PropTypes.Requireable<(...args: any[]) => any>;
|
|
13
|
+
};
|
|
14
|
+
type ModalProps = PropTypes.InferProps<typeof modalPropTypes>;
|
|
5
15
|
interface ModalState {
|
|
6
16
|
open: boolean;
|
|
7
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Modal component
|
|
20
|
+
*
|
|
21
|
+
* A dialog window that sits on top of the main application content.
|
|
22
|
+
* It disrupts the user's workflow to demand attention for a critical task or decision.
|
|
23
|
+
*
|
|
24
|
+
* Accessibility:
|
|
25
|
+
* - Implements ARIA `role="dialog"` and `aria-modal="true"`.
|
|
26
|
+
* - Traps focus effectively within the modal while open.
|
|
27
|
+
* - Restores focus to the triggering element upon closure.
|
|
28
|
+
* - Supports closing via ESC key and overlay click.
|
|
29
|
+
*/
|
|
8
30
|
export default class Modal extends React.Component<React.PropsWithChildren<ModalProps>, ModalState> {
|
|
9
31
|
state: {
|
|
10
32
|
open: boolean;
|
|
@@ -23,13 +45,59 @@ export default class Modal extends React.Component<React.PropsWithChildren<Modal
|
|
|
23
45
|
closeOnEsc: boolean;
|
|
24
46
|
closeOnOverlayClick: boolean;
|
|
25
47
|
};
|
|
48
|
+
/**
|
|
49
|
+
* Syncs state with props.
|
|
50
|
+
*/
|
|
26
51
|
static getDerivedStateFromProps(props: ModalProps): {
|
|
27
52
|
open: boolean;
|
|
28
53
|
};
|
|
29
54
|
private layer;
|
|
30
55
|
private closeCallback;
|
|
56
|
+
/**
|
|
57
|
+
* Internal close handler.
|
|
58
|
+
* Restores focus and calls the external onClose callback.
|
|
59
|
+
*/
|
|
31
60
|
private onClose;
|
|
61
|
+
private lastFocusedElement;
|
|
62
|
+
private modalRef;
|
|
63
|
+
/**
|
|
64
|
+
* Retrieves all focusable elements within the modal.
|
|
65
|
+
*/
|
|
66
|
+
private getFocusableElements;
|
|
67
|
+
/**
|
|
68
|
+
* Handles keydown events to implement the focus trap.
|
|
69
|
+
* Traps Tab and Shift+Tab within the modal.
|
|
70
|
+
*/
|
|
71
|
+
private handleKeyDown;
|
|
72
|
+
/**
|
|
73
|
+
* Lifecycle method to save the currently focused element when the modal mounts while open.
|
|
74
|
+
*/
|
|
75
|
+
componentDidMount(): void;
|
|
76
|
+
/**
|
|
77
|
+
* Lifecycle method to restore focus when the modal unmounts.
|
|
78
|
+
*/
|
|
79
|
+
componentWillUnmount(): void;
|
|
80
|
+
/**
|
|
81
|
+
* Restores focus to the element that was focused before the modal opened.
|
|
82
|
+
*/
|
|
83
|
+
private restoreFocus;
|
|
84
|
+
/**
|
|
85
|
+
* Callback ref to capture the Modal DOM element.
|
|
86
|
+
* Triggers initial focus setting when the element mounts.
|
|
87
|
+
*/
|
|
88
|
+
private setModalRef;
|
|
89
|
+
/**
|
|
90
|
+
* Sets initial focus within the modal.
|
|
91
|
+
* Tries to focus the header (first child) first, then the first interactive element, or falls back to the container.
|
|
92
|
+
*/
|
|
93
|
+
private setInitialFocus;
|
|
94
|
+
/**
|
|
95
|
+
* Lifecycle method to handle Modal updates.
|
|
96
|
+
* Manages opening/closing logic via LayerManager and focus preservation.
|
|
97
|
+
*/
|
|
32
98
|
getSnapshotBeforeUpdate(prevProps: ModalProps): void;
|
|
99
|
+
/**
|
|
100
|
+
* Renders the Modal component via the LayerManager portal.
|
|
101
|
+
*/
|
|
33
102
|
render(): import("@emotion/react/jsx-runtime").JSX.Element;
|
|
34
103
|
}
|
|
35
|
-
//# sourceMappingURL=Modal.d.ts.map
|