@unoff/ui 1.21.0
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/LICENSE +21 -0
- package/README.md +880 -0
- package/dist/assets/Accordion.css +1 -0
- package/dist/assets/ActionsItem.css +1 -0
- package/dist/assets/ActionsList.css +1 -0
- package/dist/assets/Avatar.css +1 -0
- package/dist/assets/Bar.css +1 -0
- package/dist/assets/Button.css +1 -0
- package/dist/assets/Card.css +1 -0
- package/dist/assets/Chip.css +1 -0
- package/dist/assets/ColorChip.css +1 -0
- package/dist/assets/ColorItem.css +1 -0
- package/dist/assets/Consent.css +1 -0
- package/dist/assets/Dialog.css +1 -0
- package/dist/assets/DraggableItem.css +1 -0
- package/dist/assets/DraggableWindow.css +1 -0
- package/dist/assets/Drawer.css +1 -0
- package/dist/assets/Dropdown.css +1 -0
- package/dist/assets/Dropzone.css +1 -0
- package/dist/assets/FormItem.css +1 -0
- package/dist/assets/Icon.css +1 -0
- package/dist/assets/IconChip.css +1 -0
- package/dist/assets/Input.css +1 -0
- package/dist/assets/InputsBar.css +1 -0
- package/dist/assets/KeyboardShortcutItem.css +1 -0
- package/dist/assets/Knob.css +1 -0
- package/dist/assets/Layout.css +1 -0
- package/dist/assets/List.css +1 -0
- package/dist/assets/MembersList.css +1 -0
- package/dist/assets/Menu.css +1 -0
- package/dist/assets/Message.css +1 -0
- package/dist/assets/MultipleSlider.css +1 -0
- package/dist/assets/Notification.css +1 -0
- package/dist/assets/Popin.css +1 -0
- package/dist/assets/Section.css +1 -0
- package/dist/assets/SectionTitle.css +1 -0
- package/dist/assets/Select.css +1 -0
- package/dist/assets/SemanticMessage.css +1 -0
- package/dist/assets/SimpleItem.css +1 -0
- package/dist/assets/SimpleSlider.css +1 -0
- package/dist/assets/SortableList.css +1 -0
- package/dist/assets/Tabs.css +1 -0
- package/dist/assets/Text.css +1 -0
- package/dist/assets/Thumbnail.css +1 -0
- package/dist/assets/Tooltip.css +1 -0
- package/dist/assets/styles/icons/icons.css +1 -0
- package/dist/assets/styles/icons/styles/figma.css +1 -0
- package/dist/assets/styles/icons/styles/framer.css +1 -0
- package/dist/assets/styles/icons/styles/penpot.css +1 -0
- package/dist/assets/styles/icons/styles/sketch.css +1 -0
- package/dist/assets/styles/layouts.css +1 -0
- package/dist/assets/styles/texts/styles/figma.css +1 -0
- package/dist/assets/styles/texts/styles/framer.css +1 -0
- package/dist/assets/styles/texts/styles/penpot.css +1 -0
- package/dist/assets/styles/texts/styles/sketch.css +1 -0
- package/dist/assets/styles/texts/texts.css +1 -0
- package/dist/assets/styles/tokens/figma-types.css +1 -0
- package/dist/assets/styles/tokens/framer-types.css +1 -0
- package/dist/assets/styles/tokens/modules/figma-colors.css +1 -0
- package/dist/assets/styles/tokens/modules/figma-types.css +1 -0
- package/dist/assets/styles/tokens/modules/framer-colors.css +1 -0
- package/dist/assets/styles/tokens/modules/framer-types.css +1 -0
- package/dist/assets/styles/tokens/modules/globals.css +1 -0
- package/dist/assets/styles/tokens/modules/penpot-colors.css +1 -0
- package/dist/assets/styles/tokens/modules/penpot-types.css +1 -0
- package/dist/assets/styles/tokens/modules/sketch-colors.css +1 -0
- package/dist/assets/styles/tokens/modules/sketch-types.css +1 -0
- package/dist/assets/styles/tokens/penpot-types.css +1 -0
- package/dist/assets/styles/tokens/sketch-types.css +1 -0
- package/dist/components/actions/accordion/Accordion.d.ts +59 -0
- package/dist/components/actions/accordion/Accordion.d.ts.map +1 -0
- package/dist/components/actions/accordion/Accordion.js +104 -0
- package/dist/components/actions/accordion/Accordion.js.map +1 -0
- package/dist/components/actions/button/Button.d.ts +148 -0
- package/dist/components/actions/button/Button.d.ts.map +1 -0
- package/dist/components/actions/button/Button.figma.d.ts +2 -0
- package/dist/components/actions/button/Button.figma.d.ts.map +1 -0
- package/dist/components/actions/button/Button.figma.js +43 -0
- package/dist/components/actions/button/Button.figma.js.map +1 -0
- package/dist/components/actions/button/Button.js +306 -0
- package/dist/components/actions/button/Button.js.map +1 -0
- package/dist/components/actions/card/Card.d.ts +39 -0
- package/dist/components/actions/card/Card.d.ts.map +1 -0
- package/dist/components/actions/card/Card.js +99 -0
- package/dist/components/actions/card/Card.js.map +1 -0
- package/dist/components/actions/knob/Knob.d.ts +93 -0
- package/dist/components/actions/knob/Knob.d.ts.map +1 -0
- package/dist/components/actions/knob/Knob.js +179 -0
- package/dist/components/actions/knob/Knob.js.map +1 -0
- package/dist/components/actions/menu/Menu.d.ts +104 -0
- package/dist/components/actions/menu/Menu.d.ts.map +1 -0
- package/dist/components/actions/menu/Menu.js +200 -0
- package/dist/components/actions/menu/Menu.js.map +1 -0
- package/dist/components/assets/avatar/Avatar.d.ts +30 -0
- package/dist/components/assets/avatar/Avatar.d.ts.map +1 -0
- package/dist/components/assets/avatar/Avatar.js +54 -0
- package/dist/components/assets/avatar/Avatar.js.map +1 -0
- package/dist/components/assets/icon/Icon.d.ts +28 -0
- package/dist/components/assets/icon/Icon.d.ts.map +1 -0
- package/dist/components/assets/icon/Icon.figma.d.ts +2 -0
- package/dist/components/assets/icon/Icon.figma.d.ts.map +1 -0
- package/dist/components/assets/icon/Icon.figma.js +27 -0
- package/dist/components/assets/icon/Icon.figma.js.map +1 -0
- package/dist/components/assets/icon/Icon.js +35 -0
- package/dist/components/assets/icon/Icon.js.map +1 -0
- package/dist/components/assets/section-title/SectionTitle.d.ts +22 -0
- package/dist/components/assets/section-title/SectionTitle.d.ts.map +1 -0
- package/dist/components/assets/section-title/SectionTitle.js +42 -0
- package/dist/components/assets/section-title/SectionTitle.js.map +1 -0
- package/dist/components/assets/text/Text.d.ts +34 -0
- package/dist/components/assets/text/Text.d.ts.map +1 -0
- package/dist/components/assets/text/Text.js +35 -0
- package/dist/components/assets/text/Text.js.map +1 -0
- package/dist/components/assets/thumbnail/Thumbnail.d.ts +25 -0
- package/dist/components/assets/thumbnail/Thumbnail.d.ts.map +1 -0
- package/dist/components/assets/thumbnail/Thumbnail.js +67 -0
- package/dist/components/assets/thumbnail/Thumbnail.js.map +1 -0
- package/dist/components/dialogs/consent/Consent.d.ts +85 -0
- package/dist/components/dialogs/consent/Consent.d.ts.map +1 -0
- package/dist/components/dialogs/consent/Consent.js +402 -0
- package/dist/components/dialogs/consent/Consent.js.map +1 -0
- package/dist/components/dialogs/dialog/Dialog.d.ts +81 -0
- package/dist/components/dialogs/dialog/Dialog.d.ts.map +1 -0
- package/dist/components/dialogs/dialog/Dialog.js +58 -0
- package/dist/components/dialogs/dialog/Dialog.js.map +1 -0
- package/dist/components/dialogs/message/Message.d.ts +25 -0
- package/dist/components/dialogs/message/Message.d.ts.map +1 -0
- package/dist/components/dialogs/message/Message.js +141 -0
- package/dist/components/dialogs/message/Message.js.map +1 -0
- package/dist/components/dialogs/notification/Notification.d.ts +22 -0
- package/dist/components/dialogs/notification/Notification.d.ts.map +1 -0
- package/dist/components/dialogs/notification/Notification.js +38 -0
- package/dist/components/dialogs/notification/Notification.js.map +1 -0
- package/dist/components/dialogs/semantic-message/SemanticMessage.d.ts +40 -0
- package/dist/components/dialogs/semantic-message/SemanticMessage.d.ts.map +1 -0
- package/dist/components/dialogs/semantic-message/SemanticMessage.js +71 -0
- package/dist/components/dialogs/semantic-message/SemanticMessage.js.map +1 -0
- package/dist/components/inputs/dropdown/Dropdown.d.ts +123 -0
- package/dist/components/inputs/dropdown/Dropdown.d.ts.map +1 -0
- package/dist/components/inputs/dropdown/Dropdown.figma.d.ts +2 -0
- package/dist/components/inputs/dropdown/Dropdown.figma.d.ts.map +1 -0
- package/dist/components/inputs/dropdown/Dropdown.figma.js +28 -0
- package/dist/components/inputs/dropdown/Dropdown.figma.js.map +1 -0
- package/dist/components/inputs/dropdown/Dropdown.js +307 -0
- package/dist/components/inputs/dropdown/Dropdown.js.map +1 -0
- package/dist/components/inputs/dropzone/Dropzone.d.ts +78 -0
- package/dist/components/inputs/dropzone/Dropzone.d.ts.map +1 -0
- package/dist/components/inputs/dropzone/Dropzone.js +222 -0
- package/dist/components/inputs/dropzone/Dropzone.js.map +1 -0
- package/dist/components/inputs/input/Input.d.ts +203 -0
- package/dist/components/inputs/input/Input.d.ts.map +1 -0
- package/dist/components/inputs/input/Input.figma.d.ts +2 -0
- package/dist/components/inputs/input/Input.figma.d.ts.map +1 -0
- package/dist/components/inputs/input/Input.figma.js +35 -0
- package/dist/components/inputs/input/Input.figma.js.map +1 -0
- package/dist/components/inputs/input/Input.js +713 -0
- package/dist/components/inputs/input/Input.js.map +1 -0
- package/dist/components/inputs/inputs-bar/InputsBar.d.ts +18 -0
- package/dist/components/inputs/inputs-bar/InputsBar.d.ts.map +1 -0
- package/dist/components/inputs/inputs-bar/InputsBar.js +15 -0
- package/dist/components/inputs/inputs-bar/InputsBar.js.map +1 -0
- package/dist/components/inputs/multiple-slider/MultipleSlider.d.ts +125 -0
- package/dist/components/inputs/multiple-slider/MultipleSlider.d.ts.map +1 -0
- package/dist/components/inputs/multiple-slider/MultipleSlider.js +417 -0
- package/dist/components/inputs/multiple-slider/MultipleSlider.js.map +1 -0
- package/dist/components/inputs/multiple-slider/actions/addStop.d.ts +8 -0
- package/dist/components/inputs/multiple-slider/actions/addStop.d.ts.map +1 -0
- package/dist/components/inputs/multiple-slider/actions/deleteStop.d.ts +8 -0
- package/dist/components/inputs/multiple-slider/actions/deleteStop.d.ts.map +1 -0
- package/dist/components/inputs/multiple-slider/actions/shiftLeftStop.d.ts +5 -0
- package/dist/components/inputs/multiple-slider/actions/shiftLeftStop.d.ts.map +1 -0
- package/dist/components/inputs/multiple-slider/actions/shiftRightStop.d.ts +5 -0
- package/dist/components/inputs/multiple-slider/actions/shiftRightStop.d.ts.map +1 -0
- package/dist/components/inputs/select/Select.d.ts +112 -0
- package/dist/components/inputs/select/Select.d.ts.map +1 -0
- package/dist/components/inputs/select/Select.js +313 -0
- package/dist/components/inputs/select/Select.js.map +1 -0
- package/dist/components/inputs/simple-slider/SimpleSlider.d.ts +93 -0
- package/dist/components/inputs/simple-slider/SimpleSlider.d.ts.map +1 -0
- package/dist/components/inputs/simple-slider/SimpleSlider.js +166 -0
- package/dist/components/inputs/simple-slider/SimpleSlider.js.map +1 -0
- package/dist/components/lists/actions-item/ActionsItem.d.ts +64 -0
- package/dist/components/lists/actions-item/ActionsItem.d.ts.map +1 -0
- package/dist/components/lists/actions-item/ActionsItem.js +115 -0
- package/dist/components/lists/actions-item/ActionsItem.js.map +1 -0
- package/dist/components/lists/actions-list/ActionsList.d.ts +79 -0
- package/dist/components/lists/actions-list/ActionsList.d.ts.map +1 -0
- package/dist/components/lists/actions-list/ActionsList.js +384 -0
- package/dist/components/lists/actions-list/ActionsList.js.map +1 -0
- package/dist/components/lists/color-item/ColorItem.d.ts +27 -0
- package/dist/components/lists/color-item/ColorItem.d.ts.map +1 -0
- package/dist/components/lists/color-item/ColorItem.js +70 -0
- package/dist/components/lists/color-item/ColorItem.js.map +1 -0
- package/dist/components/lists/draggable-item/DraggableItem.d.ts +110 -0
- package/dist/components/lists/draggable-item/DraggableItem.d.ts.map +1 -0
- package/dist/components/lists/draggable-item/DraggableItem.js +176 -0
- package/dist/components/lists/draggable-item/DraggableItem.js.map +1 -0
- package/dist/components/lists/keyboard-shortcut-item/KeyboardShortcutItem.d.ts +19 -0
- package/dist/components/lists/keyboard-shortcut-item/KeyboardShortcutItem.d.ts.map +1 -0
- package/dist/components/lists/keyboard-shortcut-item/KeyboardShortcutItem.js +75 -0
- package/dist/components/lists/keyboard-shortcut-item/KeyboardShortcutItem.js.map +1 -0
- package/dist/components/lists/members-list/MembersList.d.ts +32 -0
- package/dist/components/lists/members-list/MembersList.d.ts.map +1 -0
- package/dist/components/lists/members-list/MembersList.js +117 -0
- package/dist/components/lists/members-list/MembersList.js.map +1 -0
- package/dist/components/lists/sortable-list/SortableList.d.ts +103 -0
- package/dist/components/lists/sortable-list/SortableList.d.ts.map +1 -0
- package/dist/components/lists/sortable-list/SortableList.js +148 -0
- package/dist/components/lists/sortable-list/SortableList.js.map +1 -0
- package/dist/components/lists/tabs/Tabs.d.ts +48 -0
- package/dist/components/lists/tabs/Tabs.d.ts.map +1 -0
- package/dist/components/lists/tabs/Tabs.figma.d.ts +2 -0
- package/dist/components/lists/tabs/Tabs.figma.d.ts.map +1 -0
- package/dist/components/lists/tabs/Tabs.figma.js +31 -0
- package/dist/components/lists/tabs/Tabs.figma.js.map +1 -0
- package/dist/components/lists/tabs/Tabs.js +165 -0
- package/dist/components/lists/tabs/Tabs.js.map +1 -0
- package/dist/components/slots/bar/Bar.d.ts +65 -0
- package/dist/components/slots/bar/Bar.d.ts.map +1 -0
- package/dist/components/slots/bar/Bar.js +100 -0
- package/dist/components/slots/bar/Bar.js.map +1 -0
- package/dist/components/slots/draggable-window/DraggableWindow.d.ts +25 -0
- package/dist/components/slots/draggable-window/DraggableWindow.d.ts.map +1 -0
- package/dist/components/slots/draggable-window/DraggableWindow.js +100 -0
- package/dist/components/slots/draggable-window/DraggableWindow.js.map +1 -0
- package/dist/components/slots/drawer/Drawer.d.ts +78 -0
- package/dist/components/slots/drawer/Drawer.d.ts.map +1 -0
- package/dist/components/slots/drawer/Drawer.js +148 -0
- package/dist/components/slots/drawer/Drawer.js.map +1 -0
- package/dist/components/slots/form-item/FormItem.d.ts +52 -0
- package/dist/components/slots/form-item/FormItem.d.ts.map +1 -0
- package/dist/components/slots/form-item/FormItem.js +89 -0
- package/dist/components/slots/form-item/FormItem.js.map +1 -0
- package/dist/components/slots/layout/Layout.d.ts +34 -0
- package/dist/components/slots/layout/Layout.d.ts.map +1 -0
- package/dist/components/slots/layout/Layout.js +45 -0
- package/dist/components/slots/layout/Layout.js.map +1 -0
- package/dist/components/slots/list/List.d.ts +49 -0
- package/dist/components/slots/list/List.d.ts.map +1 -0
- package/dist/components/slots/list/List.js +55 -0
- package/dist/components/slots/list/List.js.map +1 -0
- package/dist/components/slots/popin/Popin.d.ts +85 -0
- package/dist/components/slots/popin/Popin.d.ts.map +1 -0
- package/dist/components/slots/popin/Popin.js +182 -0
- package/dist/components/slots/popin/Popin.js.map +1 -0
- package/dist/components/slots/section/Section.d.ts +32 -0
- package/dist/components/slots/section/Section.d.ts.map +1 -0
- package/dist/components/slots/section/Section.js +49 -0
- package/dist/components/slots/section/Section.js.map +1 -0
- package/dist/components/slots/simple-item/SimpleItem.d.ts +45 -0
- package/dist/components/slots/simple-item/SimpleItem.d.ts.map +1 -0
- package/dist/components/slots/simple-item/SimpleItem.js +100 -0
- package/dist/components/slots/simple-item/SimpleItem.js.map +1 -0
- package/dist/components/tags/chip/Chip.d.ts +43 -0
- package/dist/components/tags/chip/Chip.d.ts.map +1 -0
- package/dist/components/tags/chip/Chip.figma.d.ts +2 -0
- package/dist/components/tags/chip/Chip.figma.d.ts.map +1 -0
- package/dist/components/tags/chip/Chip.figma.js +18 -0
- package/dist/components/tags/chip/Chip.figma.js.map +1 -0
- package/dist/components/tags/chip/Chip.js +88 -0
- package/dist/components/tags/chip/Chip.js.map +1 -0
- package/dist/components/tags/color-chip/ColorChip.d.ts +36 -0
- package/dist/components/tags/color-chip/ColorChip.d.ts.map +1 -0
- package/dist/components/tags/color-chip/ColorChip.js +39 -0
- package/dist/components/tags/color-chip/ColorChip.js.map +1 -0
- package/dist/components/tags/icon-chip/IconChip.d.ts +42 -0
- package/dist/components/tags/icon-chip/IconChip.d.ts.map +1 -0
- package/dist/components/tags/icon-chip/IconChip.js +54 -0
- package/dist/components/tags/icon-chip/IconChip.js.map +1 -0
- package/dist/components/tags/tooltip/Tooltip.d.ts +25 -0
- package/dist/components/tags/tooltip/Tooltip.d.ts.map +1 -0
- package/dist/components/tags/tooltip/Tooltip.js +72 -0
- package/dist/components/tags/tooltip/Tooltip.js.map +1 -0
- package/dist/do-classnames-DSDFCvzy.js +5 -0
- package/dist/do-classnames-DSDFCvzy.js.map +1 -0
- package/dist/do-map-2nhWP1KI.js +8 -0
- package/dist/do-map-2nhWP1KI.js.map +1 -0
- package/dist/index.d.ts +61 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +113 -0
- package/dist/index.js.map +1 -0
- package/dist/index_react-CmuCVQet.js +13799 -0
- package/dist/index_react-CmuCVQet.js.map +1 -0
- package/dist/styles/icons/icons.module.js +115 -0
- package/dist/styles/icons/icons.module.js.map +1 -0
- package/dist/styles/layouts.module.js +37 -0
- package/dist/styles/layouts.module.js.map +1 -0
- package/dist/styles/texts/texts.module.js +23 -0
- package/dist/styles/texts/texts.module.js.map +1 -0
- package/dist/styles/tokens/modules/figma-colors.module.js +9 -0
- package/dist/styles/tokens/modules/figma-colors.module.js.map +1 -0
- package/dist/styles/tokens/modules/figma-types.module.js +9 -0
- package/dist/styles/tokens/modules/figma-types.module.js.map +1 -0
- package/dist/styles/tokens/modules/framer-colors.module.js +9 -0
- package/dist/styles/tokens/modules/framer-colors.module.js.map +1 -0
- package/dist/styles/tokens/modules/framer-types.module.js +9 -0
- package/dist/styles/tokens/modules/framer-types.module.js.map +1 -0
- package/dist/styles/tokens/modules/globals.module.js +9 -0
- package/dist/styles/tokens/modules/globals.module.js.map +1 -0
- package/dist/styles/tokens/modules/penpot-colors.module.js +9 -0
- package/dist/styles/tokens/modules/penpot-colors.module.js.map +1 -0
- package/dist/styles/tokens/modules/penpot-types.module.js +9 -0
- package/dist/styles/tokens/modules/penpot-types.module.js.map +1 -0
- package/dist/styles/tokens/modules/sketch-colors.module.js +9 -0
- package/dist/styles/tokens/modules/sketch-colors.module.js.map +1 -0
- package/dist/styles/tokens/modules/sketch-types.module.js +9 -0
- package/dist/styles/tokens/modules/sketch-types.module.js.map +1 -0
- package/dist/tests/setup.d.ts +2 -0
- package/dist/tests/setup.d.ts.map +1 -0
- package/dist/types/consent.types.d.ts +10 -0
- package/dist/types/consent.types.d.ts.map +1 -0
- package/dist/types/consent.types.js +2 -0
- package/dist/types/consent.types.js.map +1 -0
- package/dist/types/icon.types.d.ts +2 -0
- package/dist/types/icon.types.d.ts.map +1 -0
- package/dist/types/icon.types.js +2 -0
- package/dist/types/icon.types.js.map +1 -0
- package/dist/types/list.types.d.ts +14 -0
- package/dist/types/list.types.d.ts.map +1 -0
- package/dist/types/list.types.js +2 -0
- package/dist/types/list.types.js.map +1 -0
- package/package.json +108 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.js","sources":["../../../../src/components/actions/button/Button.tsx"],"sourcesContent":["import React from 'react'\nimport layouts from '@styles/layouts.module.scss'\nimport Tooltip from '@components/tags/tooltip/Tooltip'\nimport IconChip from '@components/tags/icon-chip/IconChip'\nimport Chip from '@components/tags/chip/Chip'\nimport Icon from '@components/assets/icon/Icon'\nimport { doClassnames } from '@a_ng_d/figmug-utils'\nimport type { IconList } from '@tps/icon.types'\nimport './button.scss'\n\nexport interface ButtonProps {\n /**\n * Visual style of the button\n */\n type:\n | 'primary'\n | 'secondary'\n | 'tertiary'\n | 'destructive'\n | 'alternative'\n | 'icon'\n /**\n * Size of the button\n * @default 'default'\n */\n size?: 'small' | 'default' | 'large'\n /**\n * Icon name to display in the button\n */\n icon?: IconList\n /**\n * Custom CSS class for the icon\n */\n iconClassName?: string\n /**\n * Custom icon element to replace the default icon\n */\n customIcon?: React.ReactElement\n /**\n * Text label of the button\n */\n label?: string\n /**\n * Visual state of the button\n * @default 'default'\n */\n state?: 'default' | 'selected'\n /**\n * URL for link buttons\n */\n url?: string\n /**\n * Helper tooltip configuration\n */\n helper?: {\n /** Tooltip content */\n label: string | React.ReactNode\n /** Tooltip position */\n pin?: 'TOP' | 'BOTTOM'\n /** Tooltip display type */\n type?: 'MULTI_LINE' | 'SINGLE_LINE'\n }\n /**\n * Preview tooltip configuration with image\n */\n preview?: {\n /** Preview image URL */\n image: string\n /** Preview text */\n text: string | React.ReactNode\n /** Preview position */\n pin?: 'TOP' | 'BOTTOM'\n }\n /**\n * Warning tooltip configuration\n */\n warning?: {\n /** Warning message */\n label: string | React.ReactNode\n /** Warning position */\n pin?: 'TOP' | 'BOTTOM'\n /** Warning display type */\n type?: 'MULTI_LINE' | 'SINGLE_LINE'\n }\n /**\n * Feature identifier for tracking\n */\n feature?: string\n /**\n * Whether the button has multiple actions\n * @default false\n */\n hasMultipleActions?: boolean\n /**\n * Whether the button should render as a link\n * @default false\n */\n isLink?: boolean\n /**\n * Whether the button should auto-focus on mount\n * @default false\n */\n isAutofocus?: boolean\n /**\n * Reflow configuration for responsive behavior\n * @default { isEnabled: false, icon: 'adjust' }\n */\n shouldReflow?: {\n /** Whether reflow is enabled */\n isEnabled: boolean\n /** Icon to show when reflowed */\n icon: IconList\n }\n /**\n * Whether the button is in loading state\n * @default false\n */\n isLoading?: boolean\n /**\n * Whether the button is blocked (shows unblock action)\n * @default false\n */\n isBlocked?: boolean\n /**\n * Whether the button is disabled\n * @default false\n */\n isDisabled?: boolean\n /**\n * Whether to show a \"New\" badge\n * @default false\n */\n isNew?: boolean\n /**\n * Click handler for the button\n */\n action?: React.MouseEventHandler & React.KeyboardEventHandler\n /**\n * Handler called when unblock is clicked\n */\n onUnblock?: React.MouseEventHandler & React.KeyboardEventHandler\n}\n\ninterface ButtonStates {\n isTooltipVisible: boolean\n documentWidth: number\n}\n\nexport default class Button extends React.Component<ButtonProps, ButtonStates> {\n buttonRef: React.RefObject<HTMLButtonElement> = React.createRef()\n\n static defaultProps: Partial<ButtonProps> = {\n size: 'default',\n state: 'default',\n hasMultipleActions: false,\n isLink: false,\n shouldReflow: { isEnabled: false, icon: 'adjust' },\n isAutofocus: false,\n isLoading: false,\n isBlocked: false,\n isDisabled: false,\n isNew: false,\n }\n\n constructor(props: ButtonProps) {\n super(props)\n this.state = {\n isTooltipVisible: false,\n documentWidth: document.documentElement.clientWidth,\n }\n }\n\n // Lifecycle\n componentDidMount = () => {\n const { isAutofocus } = this.props\n\n if (isAutofocus)\n setTimeout(() => {\n if (this.buttonRef.current) this.buttonRef.current.focus()\n }, 1)\n\n window.addEventListener('resize', this.handleResize)\n }\n\n componentWillUnmount = () => {\n window.removeEventListener('resize', this.handleResize)\n }\n\n // Handlers\n handleResize = () => {\n this.setState({ documentWidth: document.documentElement.clientWidth })\n }\n\n // Templates\n Status = () => {\n const { type, warning, preview, isBlocked, isNew, onUnblock } = this.props\n\n if (warning || isBlocked || isNew)\n return (\n <div className=\"button__status\">\n {warning !== undefined && (\n <IconChip\n iconType=\"PICTO\"\n iconName=\"warning\"\n text={warning.label}\n pin={warning.pin}\n type={warning.type}\n />\n )}\n {(isBlocked || isNew) && type !== 'icon' && (\n <Chip\n preview={preview}\n isSolo\n action={isBlocked ? onUnblock : undefined}\n >\n {isNew ? 'New' : 'Pro'}\n </Chip>\n )}\n </div>\n )\n }\n\n Button = () => {\n const {\n type,\n icon,\n size,\n helper,\n feature,\n hasMultipleActions,\n isLoading,\n isDisabled,\n isBlocked,\n action,\n label,\n shouldReflow,\n } = this.props\n const { isTooltipVisible, documentWidth } = this.state\n\n const isReflowActive = shouldReflow?.isEnabled && documentWidth <= 460\n\n const getButtonLabel = () => (isReflowActive ? undefined : label)\n const getTooltipLabel = () => (isReflowActive ? label : helper?.label)\n const hasTooltipContent = () =>\n isReflowActive ? label !== undefined : helper !== undefined\n const getIconName = () =>\n isReflowActive && shouldReflow?.icon !== undefined\n ? shouldReflow.icon\n : icon\n\n return (\n <div className={layouts['snackbar--medium']}>\n <button\n role=\"button\"\n className={doClassnames([\n 'button',\n `button--${type}`,\n `button--${size}`,\n isLoading && 'button--loading',\n isBlocked && 'button--blocked',\n ])}\n data-feature={feature}\n disabled={isDisabled || isBlocked}\n aria-label={\n typeof (getButtonLabel() || helper?.label) === 'string'\n ? ((getButtonLabel() || helper?.label) as string)\n : undefined\n }\n aria-disabled={isDisabled || isBlocked}\n aria-busy={isLoading}\n onKeyDown={(e) => {\n if (\n (e.key === ' ' || e.key === 'Enter') &&\n (!isDisabled || !isBlocked)\n )\n action?.(e)\n if (e.key === 'Escape') (e.target as HTMLElement).blur()\n }}\n onMouseDown={!(isDisabled || isBlocked) ? action : undefined}\n onMouseEnter={() => {\n if (hasTooltipContent()) this.setState({ isTooltipVisible: true })\n }}\n onMouseLeave={() => {\n if (hasTooltipContent()) this.setState({ isTooltipVisible: false })\n }}\n onFocus={() => {\n if (hasTooltipContent()) this.setState({ isTooltipVisible: true })\n }}\n onBlur={() => {\n if (hasTooltipContent()) this.setState({ isTooltipVisible: false })\n }}\n tabIndex={0}\n ref={this.buttonRef}\n >\n {getIconName() !== undefined && (\n <span\n className=\"button__icon\"\n aria-hidden=\"true\"\n >\n <Icon\n type=\"PICTO\"\n iconName={getIconName()}\n />\n </span>\n )}\n {getButtonLabel() !== undefined && (\n <span className=\"button__label\">{getButtonLabel()}</span>\n )}\n {isLoading && (\n <div\n className=\"button__loader\"\n aria-hidden=\"true\"\n >\n <Icon\n type=\"PICTO\"\n iconName=\"spinner\"\n customClassName=\"button__spinner\"\n />\n </div>\n )}\n {hasMultipleActions && (\n <span\n className=\"button__caret\"\n aria-hidden=\"true\"\n >\n <Icon\n type=\"PICTO\"\n iconName=\"chevron-down\"\n />\n </span>\n )}\n {isTooltipVisible && hasTooltipContent() && (\n <Tooltip\n pin={helper?.pin || 'BOTTOM'}\n type={helper?.type || 'SINGLE_LINE'}\n >\n {getTooltipLabel()}\n </Tooltip>\n )}\n </button>\n {this.Status()}\n </div>\n )\n }\n\n LinkButton = () => {\n const { type, size, feature, label, url } = this.props\n\n return (\n <button\n role=\"link\"\n className={doClassnames([\n 'button',\n `button--${type}`,\n `button--${size}`,\n ])}\n data-feature={feature}\n ref={this.buttonRef}\n aria-label={label}\n tabIndex={0}\n >\n <a\n href={url}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"button__label\"\n aria-label={label}\n >\n {label}\n </a>\n </button>\n )\n }\n\n Icon = () => {\n const {\n size,\n icon,\n iconClassName,\n customIcon,\n feature,\n state,\n helper,\n warning,\n isLoading,\n isDisabled,\n isBlocked,\n isNew,\n action,\n } = this.props\n const { isTooltipVisible } = this.state\n\n return (\n <div className={layouts['snackbar--medium']}>\n <button\n role=\"button\"\n data-feature={feature}\n className={doClassnames([\n 'icon-button',\n `icon-button--${size}`,\n state === 'selected' && 'icon-button--selected',\n isNew && 'icon-button--new',\n isLoading && 'button--loading',\n ])}\n disabled={isDisabled || isBlocked}\n aria-label={typeof helper?.label === 'string' ? helper.label : icon}\n aria-disabled={isDisabled || isBlocked}\n aria-pressed={state === 'selected'}\n aria-busy={isLoading}\n onKeyDown={(e) => {\n if (\n (e.key === ' ' || e.key === 'Enter') &&\n !(isDisabled || isBlocked)\n )\n action?.(e)\n if (e.key === 'Escape') (e.target as HTMLElement).blur()\n }}\n onMouseDown={!(isDisabled || isBlocked) ? action : undefined}\n onMouseEnter={() => {\n if (helper !== undefined) this.setState({ isTooltipVisible: true })\n }}\n onMouseLeave={() => {\n if (helper !== undefined) this.setState({ isTooltipVisible: false })\n }}\n onFocus={() => {\n if (helper !== undefined) this.setState({ isTooltipVisible: true })\n }}\n onBlur={() => {\n if (helper !== undefined) this.setState({ isTooltipVisible: false })\n }}\n tabIndex={0}\n ref={this.buttonRef}\n >\n {customIcon === undefined ? (\n <Icon\n type=\"PICTO\"\n iconName={isLoading ? 'spinner' : icon}\n customClassName={\n iconClassName !== undefined ? iconClassName : undefined\n }\n />\n ) : (\n <div\n style={{\n opacity: isDisabled || isBlocked ? 0.5 : 1,\n pointerEvents: 'none',\n width: '100%',\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n {customIcon}\n </div>\n )}\n {isTooltipVisible && helper !== undefined && state !== 'selected' && (\n <Tooltip\n pin={helper?.pin || 'BOTTOM'}\n type={helper?.type || 'SINGLE_LINE'}\n >\n {helper?.label}\n </Tooltip>\n )}\n </button>\n {warning !== undefined && this.Status()}\n </div>\n )\n }\n\n // Render\n render() {\n const { type, isLink } = this.props\n\n if (type !== 'icon') return isLink ? this.LinkButton() : this.Button()\n return this.Icon()\n }\n}\n"],"names":["Button","React","props","isAutofocus","type","warning","preview","isBlocked","isNew","onUnblock","jsxs","jsx","IconChip","Chip","icon","size","helper","feature","hasMultipleActions","isLoading","isDisabled","action","label","shouldReflow","isTooltipVisible","documentWidth","isReflowActive","getButtonLabel","getTooltipLabel","hasTooltipContent","getIconName","layouts","doClassnames","e","Icon","Tooltip","url","iconClassName","customIcon","state","isLink"],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
|
|
2
|
+
interface CardProps {
|
|
3
|
+
/**
|
|
4
|
+
* Image source URL for the card thumbnail
|
|
5
|
+
*/
|
|
6
|
+
src?: string;
|
|
7
|
+
/**
|
|
8
|
+
* Tag label of the card
|
|
9
|
+
*/
|
|
10
|
+
tag?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Main title of the card
|
|
13
|
+
*/
|
|
14
|
+
title?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Subtitle text of the card
|
|
17
|
+
*/
|
|
18
|
+
subtitle?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Rich text content to display in the card
|
|
21
|
+
*/
|
|
22
|
+
richText?: React.ReactNode;
|
|
23
|
+
/**
|
|
24
|
+
* Action buttons to display on hover
|
|
25
|
+
*/
|
|
26
|
+
actions?: React.ReactNode;
|
|
27
|
+
/**
|
|
28
|
+
* Whether the card should fill available space
|
|
29
|
+
* @default false
|
|
30
|
+
*/
|
|
31
|
+
shouldFill?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Click handler for the card
|
|
34
|
+
*/
|
|
35
|
+
action: (event: React.MouseEvent<Element> | React.KeyboardEvent<Element>) => void;
|
|
36
|
+
}
|
|
37
|
+
declare const Card: (props: CardProps) => import("react/jsx-runtime").JSX.Element;
|
|
38
|
+
export default Card;
|
|
39
|
+
//# sourceMappingURL=Card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../../src/components/actions/card/Card.tsx"],"names":[],"mappings":";AAIA,OAAO,aAAa,CAAA;AAGpB,UAAU,SAAS;IACjB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B;;OAEG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;OAEG;IACH,MAAM,EAAE,CACN,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,KAC5D,IAAI,CAAA;CACV;AAED,QAAA,MAAM,IAAI,UAAW,SAAS,4CAmF7B,CAAA;AAED,eAAe,IAAI,CAAA"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import '../../../assets/Card.css';
|
|
2
|
+
import { jsxs as a, jsx as e, Fragment as g } from "react/jsx-runtime";
|
|
3
|
+
import { useState as y } from "react";
|
|
4
|
+
import o from "../../../styles/texts/texts.module.js";
|
|
5
|
+
import v from "../../tags/chip/Chip.js";
|
|
6
|
+
import x from "../../assets/thumbnail/Thumbnail.js";
|
|
7
|
+
import { t as s } from "../../../do-classnames-DSDFCvzy.js";
|
|
8
|
+
const M = (f) => {
|
|
9
|
+
const [i, t] = y(!1), {
|
|
10
|
+
src: l,
|
|
11
|
+
tag: n,
|
|
12
|
+
title: c,
|
|
13
|
+
subtitle: d,
|
|
14
|
+
richText: m,
|
|
15
|
+
actions: p,
|
|
16
|
+
shouldFill: h = !1,
|
|
17
|
+
action: u
|
|
18
|
+
} = f;
|
|
19
|
+
return /* @__PURE__ */ a(
|
|
20
|
+
"div",
|
|
21
|
+
{
|
|
22
|
+
className: s(["card", h && "card--fill"]),
|
|
23
|
+
role: "article",
|
|
24
|
+
onMouseEnter: () => t(!0),
|
|
25
|
+
onMouseLeave: () => t(!1),
|
|
26
|
+
onFocus: () => t(!0),
|
|
27
|
+
onBlur: () => t(!1),
|
|
28
|
+
onKeyDown: (r) => {
|
|
29
|
+
(r.key === "Enter" || r.key === " ") && u(r), r.key === "Escape" && r.target.blur();
|
|
30
|
+
},
|
|
31
|
+
onMouseDown: u,
|
|
32
|
+
tabIndex: 0,
|
|
33
|
+
children: [
|
|
34
|
+
n !== void 0 && /* @__PURE__ */ e(
|
|
35
|
+
"div",
|
|
36
|
+
{
|
|
37
|
+
className: "card__tags",
|
|
38
|
+
role: "group",
|
|
39
|
+
children: /* @__PURE__ */ e(v, { isSolo: !0, children: n })
|
|
40
|
+
}
|
|
41
|
+
),
|
|
42
|
+
l && /* @__PURE__ */ a(
|
|
43
|
+
"div",
|
|
44
|
+
{
|
|
45
|
+
className: "card__asset",
|
|
46
|
+
role: "group",
|
|
47
|
+
children: [
|
|
48
|
+
/* @__PURE__ */ e(x, { src: l }),
|
|
49
|
+
p && /* @__PURE__ */ e(
|
|
50
|
+
"div",
|
|
51
|
+
{
|
|
52
|
+
className: "card__actions",
|
|
53
|
+
role: "group",
|
|
54
|
+
"aria-hidden": !i,
|
|
55
|
+
children: i && p
|
|
56
|
+
}
|
|
57
|
+
)
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
),
|
|
61
|
+
/* @__PURE__ */ a(
|
|
62
|
+
"div",
|
|
63
|
+
{
|
|
64
|
+
className: "card__text",
|
|
65
|
+
role: "contentinfo",
|
|
66
|
+
children: [
|
|
67
|
+
c && /* @__PURE__ */ e(
|
|
68
|
+
"span",
|
|
69
|
+
{
|
|
70
|
+
className: s([
|
|
71
|
+
o.type,
|
|
72
|
+
o["type--xlarge"],
|
|
73
|
+
o["type--bold"]
|
|
74
|
+
]),
|
|
75
|
+
role: "heading",
|
|
76
|
+
"aria-level": 3,
|
|
77
|
+
children: c
|
|
78
|
+
}
|
|
79
|
+
),
|
|
80
|
+
d && /* @__PURE__ */ e(
|
|
81
|
+
"span",
|
|
82
|
+
{
|
|
83
|
+
className: s([o.type, o["type--large"]]),
|
|
84
|
+
role: "note",
|
|
85
|
+
children: d
|
|
86
|
+
}
|
|
87
|
+
),
|
|
88
|
+
m && /* @__PURE__ */ e(g, { children: m })
|
|
89
|
+
]
|
|
90
|
+
}
|
|
91
|
+
)
|
|
92
|
+
]
|
|
93
|
+
}
|
|
94
|
+
);
|
|
95
|
+
};
|
|
96
|
+
export {
|
|
97
|
+
M as default
|
|
98
|
+
};
|
|
99
|
+
//# sourceMappingURL=Card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Card.js","sources":["../../../../src/components/actions/card/Card.tsx"],"sourcesContent":["import { useState } from 'react'\nimport texts from '@styles/texts/texts.module.scss'\nimport Chip from '@components/tags/chip/Chip'\nimport Thumbnail from '@components/assets/thumbnail/Thumbnail'\nimport './card.scss'\nimport { doClassnames } from '@a_ng_d/figmug-utils'\n\ninterface CardProps {\n /**\n * Image source URL for the card thumbnail\n */\n src?: string\n /**\n * Tag label of the card\n */\n tag?: string\n /**\n * Main title of the card\n */\n title?: string\n /**\n * Subtitle text of the card\n */\n subtitle?: string\n /**\n * Rich text content to display in the card\n */\n richText?: React.ReactNode\n /**\n * Action buttons to display on hover\n */\n actions?: React.ReactNode\n /**\n * Whether the card should fill available space\n * @default false\n */\n shouldFill?: boolean\n /**\n * Click handler for the card\n */\n action: (\n event: React.MouseEvent<Element> | React.KeyboardEvent<Element>\n ) => void\n}\n\nconst Card = (props: CardProps) => {\n const [isActionsVisible, setActionsVisible] = useState<boolean>(false)\n const {\n src,\n tag,\n title,\n subtitle,\n richText,\n actions,\n shouldFill = false,\n action,\n } = props\n\n return (\n <div\n className={doClassnames(['card', shouldFill && 'card--fill'])}\n role=\"article\"\n onMouseEnter={() => setActionsVisible(true)}\n onMouseLeave={() => setActionsVisible(false)}\n onFocus={() => setActionsVisible(true)}\n onBlur={() => setActionsVisible(false)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') action(e)\n if (e.key === 'Escape') (e.target as HTMLElement).blur()\n }}\n onMouseDown={action}\n tabIndex={0}\n >\n {tag !== undefined && (\n <div\n className=\"card__tags\"\n role=\"group\"\n >\n <Chip isSolo>{tag}</Chip>\n </div>\n )}\n {src && (\n <div\n className=\"card__asset\"\n role=\"group\"\n >\n <Thumbnail src={src} />\n {actions && (\n <div\n className={'card__actions'}\n role=\"group\"\n aria-hidden={!isActionsVisible}\n >\n {isActionsVisible && actions}\n </div>\n )}\n </div>\n )}\n <div\n className=\"card__text\"\n role=\"contentinfo\"\n >\n {title && (\n <span\n className={doClassnames([\n texts.type,\n texts['type--xlarge'],\n texts['type--bold'],\n ])}\n role=\"heading\"\n aria-level={3}\n >\n {title}\n </span>\n )}\n {subtitle && (\n <span\n className={doClassnames([texts.type, texts['type--large']])}\n role=\"note\"\n >\n {subtitle}\n </span>\n )}\n\n {richText && <>{richText}</>}\n </div>\n </div>\n )\n}\n\nexport default Card\n"],"names":["Card","props","isActionsVisible","setActionsVisible","useState","src","tag","title","subtitle","richText","actions","shouldFill","action","jsxs","doClassnames","e","jsx","Chip","Thumbnail","texts"],"mappings":";;;;;;AA6CA,MAAMA,IAAO,CAACC,MAAqB;AACjC,QAAM,CAACC,GAAkBC,CAAiB,IAAIC,EAAkB,EAAK,GAC/D;AAAA,IACJ,KAAAC;AAAA,IACA,KAAAC;AAAA,IACA,OAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,SAAAC;AAAA,IACA,YAAAC,IAAa;AAAA,IACb,QAAAC;AAAA,EAAA,IACEX;AAEJ,SACE,gBAAAY;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAa,CAAC,QAAQH,KAAc,YAAY,CAAC;AAAA,MAC5D,MAAK;AAAA,MACL,cAAc,MAAMR,EAAkB,EAAI;AAAA,MAC1C,cAAc,MAAMA,EAAkB,EAAK;AAAA,MAC3C,SAAS,MAAMA,EAAkB,EAAI;AAAA,MACrC,QAAQ,MAAMA,EAAkB,EAAK;AAAA,MACrC,WAAW,CAACY,MAAM;AAChB,SAAIA,EAAE,QAAQ,WAAWA,EAAE,QAAQ,UAAYA,CAAC,GAC5CA,EAAE,QAAQ,YAAWA,EAAE,OAAuB,KAAA;AAAA,MACpD;AAAA,MACA,aAAaH;AAAA,MACb,UAAU;AAAA,MAET,UAAA;AAAA,QAAAN,MAAQ,UACP,gBAAAU;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,MAAK;AAAA,YAEL,UAAA,gBAAAA,EAACC,GAAA,EAAK,QAAM,IAAE,UAAAX,EAAA,CAAI;AAAA,UAAA;AAAA,QAAA;AAAA,QAGrBD,KACC,gBAAAQ;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,MAAK;AAAA,YAEL,UAAA;AAAA,cAAA,gBAAAG,EAACE,KAAU,KAAAb,GAAU;AAAA,cACpBK,KACC,gBAAAM;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAW;AAAA,kBACX,MAAK;AAAA,kBACL,eAAa,CAACd;AAAA,kBAEb,UAAAA,KAAoBQ;AAAA,gBAAA;AAAA,cAAA;AAAA,YACvB;AAAA,UAAA;AAAA,QAAA;AAAA,QAIN,gBAAAG;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,MAAK;AAAA,YAEJ,UAAA;AAAA,cAAAN,KACC,gBAAAS;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAWF,EAAa;AAAA,oBACtBK,EAAM;AAAA,oBACNA,EAAM,cAAc;AAAA,oBACpBA,EAAM,YAAY;AAAA,kBAAA,CACnB;AAAA,kBACD,MAAK;AAAA,kBACL,cAAY;AAAA,kBAEX,UAAAZ;AAAA,gBAAA;AAAA,cAAA;AAAA,cAGJC,KACC,gBAAAQ;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAWF,EAAa,CAACK,EAAM,MAAMA,EAAM,aAAa,CAAC,CAAC;AAAA,kBAC1D,MAAK;AAAA,kBAEJ,UAAAX;AAAA,gBAAA;AAAA,cAAA;AAAA,cAIJC,4BAAe,UAAAA,EAAA,CAAS;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAC3B;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
|
|
3
|
+
export interface KnobProps {
|
|
4
|
+
/**
|
|
5
|
+
* Unique identifier for the knob
|
|
6
|
+
*/
|
|
7
|
+
id: string;
|
|
8
|
+
/**
|
|
9
|
+
* Short identifier for the knob
|
|
10
|
+
*/
|
|
11
|
+
shortId: string;
|
|
12
|
+
/**
|
|
13
|
+
* Current value of the knob
|
|
14
|
+
*/
|
|
15
|
+
value: string | number;
|
|
16
|
+
/**
|
|
17
|
+
* Offset position for the knob display
|
|
18
|
+
*/
|
|
19
|
+
offset: number;
|
|
20
|
+
/**
|
|
21
|
+
* Minimum allowed value
|
|
22
|
+
*/
|
|
23
|
+
min?: string;
|
|
24
|
+
/**
|
|
25
|
+
* Maximum allowed value
|
|
26
|
+
*/
|
|
27
|
+
max?: string;
|
|
28
|
+
/**
|
|
29
|
+
* Helper tooltip configuration
|
|
30
|
+
*/
|
|
31
|
+
helper?: {
|
|
32
|
+
/** Tooltip content */
|
|
33
|
+
label: string | React.ReactNode;
|
|
34
|
+
/** Tooltip display type */
|
|
35
|
+
type: 'MULTI_LINE' | 'SINGLE_LINE' | 'WITH_IMAGE';
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Whether the value can be edited by typing
|
|
39
|
+
*/
|
|
40
|
+
canBeTyped: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Whether the knob is visible
|
|
43
|
+
*/
|
|
44
|
+
isDisplayed: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Whether the knob is blocked
|
|
47
|
+
* @default false
|
|
48
|
+
*/
|
|
49
|
+
isBlocked: boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Whether the knob is disabled
|
|
52
|
+
* @default false
|
|
53
|
+
*/
|
|
54
|
+
isDisabled: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Custom inline styles
|
|
57
|
+
*/
|
|
58
|
+
style?: React.CSSProperties;
|
|
59
|
+
/**
|
|
60
|
+
* Handler for right arrow key
|
|
61
|
+
*/
|
|
62
|
+
onShiftRight?: React.KeyboardEventHandler<HTMLInputElement>;
|
|
63
|
+
/**
|
|
64
|
+
* Handler for left arrow key
|
|
65
|
+
*/
|
|
66
|
+
onShiftLeft?: React.KeyboardEventHandler<HTMLInputElement>;
|
|
67
|
+
/**
|
|
68
|
+
* Handler for delete key
|
|
69
|
+
*/
|
|
70
|
+
onDelete?: React.KeyboardEventHandler<HTMLInputElement>;
|
|
71
|
+
/**
|
|
72
|
+
* Mouse down handler for dragging
|
|
73
|
+
*/
|
|
74
|
+
onMouseDown: React.MouseEventHandler<HTMLDivElement>;
|
|
75
|
+
/**
|
|
76
|
+
* Callback when value is validated
|
|
77
|
+
*/
|
|
78
|
+
onValidStopValue?: (stopId: string, e: React.FocusEvent<HTMLInputElement> | React.KeyboardEvent<HTMLInputElement>) => void;
|
|
79
|
+
}
|
|
80
|
+
export interface KnobStates {
|
|
81
|
+
isStopInputOpen: boolean;
|
|
82
|
+
isTooltipOpen: boolean;
|
|
83
|
+
stopInputValue: string | number;
|
|
84
|
+
}
|
|
85
|
+
export default class Knob extends React.Component<KnobProps, KnobStates> {
|
|
86
|
+
static defaultProps: Partial<KnobProps>;
|
|
87
|
+
constructor(props: KnobProps);
|
|
88
|
+
keyboardHandler: (action: string, e: React.KeyboardEvent<HTMLInputElement>) => void;
|
|
89
|
+
clickHandler: (e: React.MouseEvent<HTMLDivElement>) => void;
|
|
90
|
+
transformStopValue: (value: string | number) => string;
|
|
91
|
+
render(): import("react/jsx-runtime").JSX.Element;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=Knob.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Knob.d.ts","sourceRoot":"","sources":["../../../../src/components/actions/knob/Knob.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,OAAO,aAAa,CAAA;AAEpB,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAA;IACV;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,MAAM,CAAC,EAAE;QACP,sBAAsB;QACtB,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAA;QAC/B,2BAA2B;QAC3B,IAAI,EAAE,YAAY,GAAG,aAAa,GAAG,YAAY,CAAA;KAClD,CAAA;IACD;;OAEG;IACH,UAAU,EAAE,OAAO,CAAA;IACnB;;OAEG;IACH,WAAW,EAAE,OAAO,CAAA;IACpB;;;OAGG;IACH,SAAS,EAAE,OAAO,CAAA;IAClB;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAA;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;IAC3B;;OAEG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAA;IAC3D;;OAEG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAA;IAC1D;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAA;IACvD;;OAEG;IACH,WAAW,EAAE,KAAK,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAA;IACpD;;OAEG;IACH,gBAAgB,CAAC,EAAE,CACjB,MAAM,EAAE,MAAM,EACd,CAAC,EACG,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAClC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,KACtC,IAAI,CAAA;CACV;AAED,MAAM,WAAW,UAAU;IACzB,eAAe,EAAE,OAAO,CAAA;IACxB,aAAa,EAAE,OAAO,CAAA;IACtB,cAAc,EAAE,MAAM,GAAG,MAAM,CAAA;CAChC;AAED,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC;IACtE,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,CAGtC;gBAEW,KAAK,EAAE,SAAS;IAU5B,eAAe,WACL,MAAM,KACX,mBAAmB,CAAC,gBAAgB,CAAC,UAiCzC;IAED,YAAY,MAAO,gBAAgB,CAAC,cAAc,CAAC,UASlD;IAED,kBAAkB,UAAW,MAAM,GAAG,MAAM,YAK3C;IAGD,MAAM;CAqIP"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import '../../../assets/Knob.css';
|
|
2
|
+
import { jsxs as k, jsx as n } from "react/jsx-runtime";
|
|
3
|
+
import O from "react";
|
|
4
|
+
import v from "../../../styles/texts/texts.module.js";
|
|
5
|
+
import I from "../../tags/tooltip/Tooltip.js";
|
|
6
|
+
import T from "../../inputs/input/Input.js";
|
|
7
|
+
import { t as u } from "../../../do-classnames-DSDFCvzy.js";
|
|
8
|
+
class D extends O.Component {
|
|
9
|
+
static defaultProps = {
|
|
10
|
+
isBlocked: !1,
|
|
11
|
+
isDisabled: !1
|
|
12
|
+
};
|
|
13
|
+
constructor(s) {
|
|
14
|
+
super(s), this.state = {
|
|
15
|
+
isStopInputOpen: !1,
|
|
16
|
+
isTooltipOpen: !1,
|
|
17
|
+
stopInputValue: s.value
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
// Handlers
|
|
21
|
+
keyboardHandler = (s, e) => {
|
|
22
|
+
const { value: t, canBeTyped: p, onShiftRight: l, onShiftLeft: d, onDelete: r } = this.props, c = {
|
|
23
|
+
ArrowRight: () => {
|
|
24
|
+
l !== void 0 && l(e);
|
|
25
|
+
},
|
|
26
|
+
ArrowLeft: () => {
|
|
27
|
+
d !== void 0 && d(e);
|
|
28
|
+
},
|
|
29
|
+
Enter: () => {
|
|
30
|
+
p && this.setState({
|
|
31
|
+
isStopInputOpen: !0,
|
|
32
|
+
isTooltipOpen: !1,
|
|
33
|
+
stopInputValue: t
|
|
34
|
+
});
|
|
35
|
+
},
|
|
36
|
+
Escape: () => {
|
|
37
|
+
e.target.blur(), this.setState({ isStopInputOpen: !1 });
|
|
38
|
+
},
|
|
39
|
+
Backspace: () => {
|
|
40
|
+
r !== void 0 && r(e);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
if (e.currentTarget === e.target)
|
|
44
|
+
return c[s]?.();
|
|
45
|
+
};
|
|
46
|
+
clickHandler = (s) => {
|
|
47
|
+
const { canBeTyped: e, value: t } = this.props;
|
|
48
|
+
s.detail === 2 && e && this.setState({
|
|
49
|
+
isStopInputOpen: !0,
|
|
50
|
+
isTooltipOpen: !1,
|
|
51
|
+
stopInputValue: t
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
transformStopValue = (s) => {
|
|
55
|
+
let e = s;
|
|
56
|
+
return typeof e != "string" && (e = e.toFixed(1)), e.includes(".0") ? e = e.replace(".0", "") : e;
|
|
57
|
+
};
|
|
58
|
+
// Render
|
|
59
|
+
render() {
|
|
60
|
+
const {
|
|
61
|
+
id: s,
|
|
62
|
+
shortId: e,
|
|
63
|
+
value: t,
|
|
64
|
+
min: p,
|
|
65
|
+
max: l,
|
|
66
|
+
offset: d,
|
|
67
|
+
helper: r,
|
|
68
|
+
style: c,
|
|
69
|
+
isDisplayed: m,
|
|
70
|
+
isBlocked: o,
|
|
71
|
+
isDisabled: i,
|
|
72
|
+
onMouseDown: S,
|
|
73
|
+
onValidStopValue: b
|
|
74
|
+
} = this.props, { isTooltipOpen: f, isStopInputOpen: h, stopInputValue: y } = this.state;
|
|
75
|
+
return /* @__PURE__ */ k(
|
|
76
|
+
"div",
|
|
77
|
+
{
|
|
78
|
+
className: u([
|
|
79
|
+
"knob",
|
|
80
|
+
h && "knob--editing",
|
|
81
|
+
(o || i) && "knob--disabled"
|
|
82
|
+
]),
|
|
83
|
+
style: {
|
|
84
|
+
left: `${d}%`,
|
|
85
|
+
zIndex: f ? "2" : "1",
|
|
86
|
+
...c
|
|
87
|
+
},
|
|
88
|
+
"data-id": s,
|
|
89
|
+
"data-value": t,
|
|
90
|
+
role: "slider",
|
|
91
|
+
"aria-label": `${e} knob, value ${this.transformStopValue(t)}`,
|
|
92
|
+
"aria-valuemin": p ? parseFloat(p) : void 0,
|
|
93
|
+
"aria-valuemax": l ? parseFloat(l) : void 0,
|
|
94
|
+
"aria-valuenow": typeof t == "number" ? t : parseFloat(t),
|
|
95
|
+
"aria-valuetext": this.transformStopValue(t).toString(),
|
|
96
|
+
"aria-disabled": i || o,
|
|
97
|
+
"aria-readonly": o,
|
|
98
|
+
tabIndex: o || i ? -1 : 0,
|
|
99
|
+
onKeyDown: (a) => o || i ? void 0 : this.keyboardHandler(
|
|
100
|
+
a.key,
|
|
101
|
+
a
|
|
102
|
+
),
|
|
103
|
+
onMouseDown: o || i ? void 0 : S,
|
|
104
|
+
onMouseEnter: () => o || i || h ? void 0 : this.setState({ isTooltipOpen: !0 }),
|
|
105
|
+
onMouseLeave: (a) => {
|
|
106
|
+
document.activeElement === a.target && !(o || i) ? this.setState({ isTooltipOpen: !0 }) : this.setState({ isTooltipOpen: !1 });
|
|
107
|
+
},
|
|
108
|
+
onFocus: () => o || i ? void 0 : this.setState({ isTooltipOpen: !0 }),
|
|
109
|
+
onBlur: () => o || i ? void 0 : this.setState({ isTooltipOpen: !1 }),
|
|
110
|
+
onClick: (a) => o || i ? void 0 : this.clickHandler(a),
|
|
111
|
+
children: [
|
|
112
|
+
(m || f) && /* @__PURE__ */ n(
|
|
113
|
+
"div",
|
|
114
|
+
{
|
|
115
|
+
className: u(["knob__tooltip"]),
|
|
116
|
+
role: "status",
|
|
117
|
+
children: /* @__PURE__ */ n(
|
|
118
|
+
"span",
|
|
119
|
+
{
|
|
120
|
+
className: u([v.type, v["type--inverse"]]),
|
|
121
|
+
children: this.transformStopValue(t)
|
|
122
|
+
}
|
|
123
|
+
)
|
|
124
|
+
}
|
|
125
|
+
),
|
|
126
|
+
h && /* @__PURE__ */ n(
|
|
127
|
+
"div",
|
|
128
|
+
{
|
|
129
|
+
className: "knob__input",
|
|
130
|
+
role: "group",
|
|
131
|
+
children: /* @__PURE__ */ n(
|
|
132
|
+
T,
|
|
133
|
+
{
|
|
134
|
+
type: "NUMBER",
|
|
135
|
+
value: y.toFixed(1) ?? "0",
|
|
136
|
+
min: p,
|
|
137
|
+
max: l,
|
|
138
|
+
step: "0.1",
|
|
139
|
+
feature: "TYPE_STOP_VALUE",
|
|
140
|
+
shouldBlur: !0,
|
|
141
|
+
isAutoFocus: !0,
|
|
142
|
+
isFlex: !0,
|
|
143
|
+
onFocus: () => this.setState({
|
|
144
|
+
stopInputValue: t
|
|
145
|
+
}),
|
|
146
|
+
onBlur: (a) => {
|
|
147
|
+
a.target?.value !== t && b?.(e, a), this.setState({ isStopInputOpen: !1 });
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
)
|
|
151
|
+
}
|
|
152
|
+
),
|
|
153
|
+
/* @__PURE__ */ n(
|
|
154
|
+
"div",
|
|
155
|
+
{
|
|
156
|
+
className: u(["knob__label"]),
|
|
157
|
+
role: "presentation",
|
|
158
|
+
"aria-hidden": "true",
|
|
159
|
+
children: /* @__PURE__ */ n("span", { className: u([v.type]), children: e })
|
|
160
|
+
}
|
|
161
|
+
),
|
|
162
|
+
/* @__PURE__ */ n(
|
|
163
|
+
"div",
|
|
164
|
+
{
|
|
165
|
+
className: "knob__graduation",
|
|
166
|
+
role: "presentation",
|
|
167
|
+
"aria-hidden": "true"
|
|
168
|
+
}
|
|
169
|
+
),
|
|
170
|
+
r !== void 0 && f && /* @__PURE__ */ n(I, { type: r.type, children: r.label })
|
|
171
|
+
]
|
|
172
|
+
}
|
|
173
|
+
);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
export {
|
|
177
|
+
D as default
|
|
178
|
+
};
|
|
179
|
+
//# sourceMappingURL=Knob.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Knob.js","sources":["../../../../src/components/actions/knob/Knob.tsx"],"sourcesContent":["import React from 'react'\nimport texts from '@styles/texts/texts.module.scss'\nimport Tooltip from '@components/tags/tooltip/Tooltip'\nimport Input from '@components/inputs/input/Input'\nimport { doClassnames } from '@a_ng_d/figmug-utils'\nimport './knob.scss'\n\nexport interface KnobProps {\n /**\n * Unique identifier for the knob\n */\n id: string\n /**\n * Short identifier for the knob\n */\n shortId: string\n /**\n * Current value of the knob\n */\n value: string | number\n /**\n * Offset position for the knob display\n */\n offset: number\n /**\n * Minimum allowed value\n */\n min?: string\n /**\n * Maximum allowed value\n */\n max?: string\n /**\n * Helper tooltip configuration\n */\n helper?: {\n /** Tooltip content */\n label: string | React.ReactNode\n /** Tooltip display type */\n type: 'MULTI_LINE' | 'SINGLE_LINE' | 'WITH_IMAGE'\n }\n /**\n * Whether the value can be edited by typing\n */\n canBeTyped: boolean\n /**\n * Whether the knob is visible\n */\n isDisplayed: boolean\n /**\n * Whether the knob is blocked\n * @default false\n */\n isBlocked: boolean\n /**\n * Whether the knob is disabled\n * @default false\n */\n isDisabled: boolean\n /**\n * Custom inline styles\n */\n style?: React.CSSProperties\n /**\n * Handler for right arrow key\n */\n onShiftRight?: React.KeyboardEventHandler<HTMLInputElement>\n /**\n * Handler for left arrow key\n */\n onShiftLeft?: React.KeyboardEventHandler<HTMLInputElement>\n /**\n * Handler for delete key\n */\n onDelete?: React.KeyboardEventHandler<HTMLInputElement>\n /**\n * Mouse down handler for dragging\n */\n onMouseDown: React.MouseEventHandler<HTMLDivElement>\n /**\n * Callback when value is validated\n */\n onValidStopValue?: (\n stopId: string,\n e:\n | React.FocusEvent<HTMLInputElement>\n | React.KeyboardEvent<HTMLInputElement>\n ) => void\n}\n\nexport interface KnobStates {\n isStopInputOpen: boolean\n isTooltipOpen: boolean\n stopInputValue: string | number\n}\n\nexport default class Knob extends React.Component<KnobProps, KnobStates> {\n static defaultProps: Partial<KnobProps> = {\n isBlocked: false,\n isDisabled: false,\n }\n\n constructor(props: KnobProps) {\n super(props)\n this.state = {\n isStopInputOpen: false,\n isTooltipOpen: false,\n stopInputValue: props.value,\n }\n }\n\n // Handlers\n keyboardHandler = (\n action: string,\n e: React.KeyboardEvent<HTMLInputElement>\n ) => {\n const { value, canBeTyped, onShiftRight, onShiftLeft, onDelete } =\n this.props\n\n const actions = {\n ArrowRight: () => {\n if (onShiftRight !== undefined) onShiftRight(e)\n },\n ArrowLeft: () => {\n if (onShiftLeft !== undefined) onShiftLeft(e)\n },\n Enter: () => {\n if (canBeTyped)\n this.setState({\n isStopInputOpen: true,\n isTooltipOpen: false,\n stopInputValue: value,\n })\n },\n Escape: () => {\n ;(e.target as HTMLElement).blur()\n this.setState({ isStopInputOpen: false })\n },\n Backspace: () => {\n if (onDelete !== undefined) onDelete(e)\n },\n }\n\n if (e.currentTarget === e.target)\n return actions[\n action as 'ArrowRight' | 'ArrowLeft' | 'Enter' | 'Escape' | 'Backspace'\n ]?.()\n }\n\n clickHandler = (e: React.MouseEvent<HTMLDivElement>) => {\n const { canBeTyped, value } = this.props\n\n if (e.detail === 2 && canBeTyped)\n this.setState({\n isStopInputOpen: true,\n isTooltipOpen: false,\n stopInputValue: value,\n })\n }\n\n transformStopValue = (value: string | number) => {\n let newValue = value\n if (typeof newValue !== 'string') newValue = newValue.toFixed(1)\n if (newValue.includes('.0')) return (newValue = newValue.replace('.0', ''))\n return newValue\n }\n\n // Render\n render() {\n const {\n id,\n shortId,\n value,\n min,\n max,\n offset,\n helper,\n style,\n isDisplayed,\n isBlocked,\n isDisabled,\n onMouseDown,\n onValidStopValue,\n } = this.props\n const { isTooltipOpen, isStopInputOpen, stopInputValue } = this.state\n\n return (\n <div\n className={doClassnames([\n 'knob',\n isStopInputOpen && 'knob--editing',\n (isBlocked || isDisabled) && 'knob--disabled',\n ])}\n style={{\n left: `${offset}%`,\n zIndex: isTooltipOpen ? '2' : '1',\n ...style,\n }}\n data-id={id}\n data-value={value}\n role=\"slider\"\n aria-label={`${shortId} knob, value ${this.transformStopValue(value)}`}\n aria-valuemin={min ? parseFloat(min) : undefined}\n aria-valuemax={max ? parseFloat(max) : undefined}\n aria-valuenow={typeof value === 'number' ? value : parseFloat(value)}\n aria-valuetext={this.transformStopValue(value).toString()}\n aria-disabled={isDisabled || isBlocked}\n aria-readonly={isBlocked}\n tabIndex={!(isBlocked || isDisabled) ? 0 : -1}\n onKeyDown={(e) =>\n !(isBlocked || isDisabled)\n ? this.keyboardHandler(\n e.key,\n e as React.KeyboardEvent<HTMLInputElement>\n )\n : undefined\n }\n onMouseDown={!(isBlocked || isDisabled) ? onMouseDown : undefined}\n onMouseEnter={() =>\n !(isBlocked || isDisabled || isStopInputOpen)\n ? this.setState({ isTooltipOpen: true })\n : undefined\n }\n onMouseLeave={(e) => {\n const isFocused = document.activeElement === e.target\n if (isFocused && !(isBlocked || isDisabled))\n this.setState({ isTooltipOpen: true })\n else this.setState({ isTooltipOpen: false })\n }}\n onFocus={() =>\n !(isBlocked || isDisabled)\n ? this.setState({ isTooltipOpen: true })\n : undefined\n }\n onBlur={() =>\n !(isBlocked || isDisabled)\n ? this.setState({ isTooltipOpen: false })\n : undefined\n }\n onClick={(e) =>\n !(isBlocked || isDisabled) ? this.clickHandler(e) : undefined\n }\n >\n {(isDisplayed || isTooltipOpen) && (\n <div\n className={doClassnames(['knob__tooltip'])}\n role=\"status\"\n >\n <span\n className={doClassnames([texts.type, texts['type--inverse']])}\n >\n {this.transformStopValue(value)}\n </span>\n </div>\n )}\n {isStopInputOpen && (\n <div\n className=\"knob__input\"\n role=\"group\"\n >\n <Input\n type=\"NUMBER\"\n value={(stopInputValue as number).toFixed(1) ?? '0'}\n min={min}\n max={max}\n step=\"0.1\"\n feature=\"TYPE_STOP_VALUE\"\n shouldBlur={true}\n isAutoFocus={true}\n isFlex={true}\n onFocus={() =>\n this.setState({\n stopInputValue: value,\n })\n }\n onBlur={(e: React.FocusEvent<HTMLInputElement>) => {\n if ((e.target as HTMLInputElement)?.value !== value)\n onValidStopValue?.(shortId, e)\n this.setState({ isStopInputOpen: false })\n }}\n />\n </div>\n )}\n <div\n className={doClassnames(['knob__label'])}\n role=\"presentation\"\n aria-hidden=\"true\"\n >\n <span className={doClassnames([texts.type])}>{shortId}</span>\n </div>\n <div\n className=\"knob__graduation\"\n role=\"presentation\"\n aria-hidden=\"true\"\n ></div>\n {helper !== undefined && isTooltipOpen && (\n <Tooltip type={helper.type}>{helper.label}</Tooltip>\n )}\n </div>\n )\n }\n}\n"],"names":["Knob","React","props","action","value","canBeTyped","onShiftRight","onShiftLeft","onDelete","actions","e","newValue","id","shortId","min","max","offset","helper","style","isDisplayed","isBlocked","isDisabled","onMouseDown","onValidStopValue","isTooltipOpen","isStopInputOpen","stopInputValue","jsxs","doClassnames","jsx","texts","Input","Tooltip"],"mappings":"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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { DropdownOption } from '../../../types/list.types';
|
|
3
|
+
import { IconList } from '../../../types/icon.types';
|
|
4
|
+
import { default as Button } from '../button/Button';
|
|
5
|
+
|
|
6
|
+
export interface MenuProps {
|
|
7
|
+
/**
|
|
8
|
+
* Unique identifier for the menu
|
|
9
|
+
*/
|
|
10
|
+
id: string;
|
|
11
|
+
/**
|
|
12
|
+
* Visual type of the menu button
|
|
13
|
+
* @default 'ICON'
|
|
14
|
+
*/
|
|
15
|
+
type: 'ICON' | 'PRIMARY';
|
|
16
|
+
/**
|
|
17
|
+
* Text label for the menu button
|
|
18
|
+
*/
|
|
19
|
+
label?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Icon name to display in the button
|
|
22
|
+
*/
|
|
23
|
+
icon?: IconList;
|
|
24
|
+
/**
|
|
25
|
+
* Custom icon element
|
|
26
|
+
*/
|
|
27
|
+
customIcon?: React.ReactElement;
|
|
28
|
+
/**
|
|
29
|
+
* List of menu options
|
|
30
|
+
* @default []
|
|
31
|
+
*/
|
|
32
|
+
options: Array<DropdownOption>;
|
|
33
|
+
/**
|
|
34
|
+
* ID of the currently selected option
|
|
35
|
+
*/
|
|
36
|
+
selected?: string;
|
|
37
|
+
/**
|
|
38
|
+
* ID of the container element for portal rendering
|
|
39
|
+
*/
|
|
40
|
+
containerId?: string;
|
|
41
|
+
/**
|
|
42
|
+
* State of the menu button
|
|
43
|
+
* @default 'DEFAULT'
|
|
44
|
+
*/
|
|
45
|
+
state?: 'DEFAULT' | 'DISABLED' | 'LOADING';
|
|
46
|
+
/**
|
|
47
|
+
* Position of the menu relative to the button
|
|
48
|
+
* @default 'BOTTOM_LEFT'
|
|
49
|
+
*/
|
|
50
|
+
alignment?: 'TOP_RIGHT' | 'TOP_LEFT' | 'BOTTOM_RIGHT' | 'BOTTOM_LEFT';
|
|
51
|
+
/**
|
|
52
|
+
* Helper tooltip configuration
|
|
53
|
+
*/
|
|
54
|
+
helper?: {
|
|
55
|
+
/** Tooltip content */
|
|
56
|
+
label: string | React.ReactNode;
|
|
57
|
+
/** Tooltip position */
|
|
58
|
+
pin?: 'TOP' | 'BOTTOM';
|
|
59
|
+
/** Whether to use single line display */
|
|
60
|
+
isSingleLine?: boolean;
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Warning tooltip configuration
|
|
64
|
+
*/
|
|
65
|
+
warning?: {
|
|
66
|
+
/** Warning message */
|
|
67
|
+
label: string | React.ReactNode;
|
|
68
|
+
/** Warning position */
|
|
69
|
+
pin?: 'TOP' | 'BOTTOM';
|
|
70
|
+
/** Warning display type */
|
|
71
|
+
type?: 'MULTI_LINE' | 'SINGLE_LINE';
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Whether the menu is blocked
|
|
75
|
+
* @default false
|
|
76
|
+
*/
|
|
77
|
+
isBlocked?: boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Whether to show a "New" badge
|
|
80
|
+
* @default false
|
|
81
|
+
*/
|
|
82
|
+
isNew?: boolean;
|
|
83
|
+
}
|
|
84
|
+
export interface MenuStates {
|
|
85
|
+
isMenuOpen: boolean;
|
|
86
|
+
isMenuVisible: boolean;
|
|
87
|
+
alignment: 'TOP_RIGHT' | 'TOP_LEFT' | 'BOTTOM_RIGHT' | 'BOTTOM_LEFT';
|
|
88
|
+
}
|
|
89
|
+
export default class Menu extends React.Component<MenuProps, MenuStates> {
|
|
90
|
+
private selectMenuRef;
|
|
91
|
+
buttonRef: React.RefObject<Button>;
|
|
92
|
+
private listRef;
|
|
93
|
+
private actionsListRef;
|
|
94
|
+
private menuRef;
|
|
95
|
+
private subMenuRef;
|
|
96
|
+
static defaultProps: Partial<MenuProps>;
|
|
97
|
+
constructor(props: MenuProps);
|
|
98
|
+
componentDidMount: () => void;
|
|
99
|
+
componentWillUnmount: () => void;
|
|
100
|
+
handleClickOutside: (e: Event) => void;
|
|
101
|
+
onOpenMenu: (e: React.MouseEvent<Element> | React.KeyboardEvent<Element>) => void;
|
|
102
|
+
render(): import("react/jsx-runtime").JSX.Element | null;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=Menu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../../../../src/components/actions/menu/Menu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,MAAM,MAAM,kBAAkB,CAAA;AACrC,OAAO,aAAa,CAAA;AAEpB,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAA;IACV;;;OAGG;IACH,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;IACxB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf;;OAEG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC,YAAY,CAAA;IAC/B;;;OAGG;IACH,OAAO,EAAE,KAAK,CAAC,cAAc,CAAC,CAAA;IAC9B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAA;IAC1C;;;OAGG;IACH,SAAS,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,cAAc,GAAG,aAAa,CAAA;IACrE;;OAEG;IACH,MAAM,CAAC,EAAE;QACP,sBAAsB;QACtB,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAA;QAC/B,uBAAuB;QACvB,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAA;QACtB,yCAAyC;QACzC,YAAY,CAAC,EAAE,OAAO,CAAA;KACvB,CAAA;IACD;;OAEG;IACH,OAAO,CAAC,EAAE;QACR,sBAAsB;QACtB,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAA;QAC/B,uBAAuB;QACvB,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAA;QACtB,2BAA2B;QAC3B,IAAI,CAAC,EAAE,YAAY,GAAG,aAAa,CAAA;KACpC,CAAA;IACD;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,OAAO,CAAA;IACnB,aAAa,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,WAAW,GAAG,UAAU,GAAG,cAAc,GAAG,aAAa,CAAA;CACrE;AAED,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC;IACtE,OAAO,CAAC,aAAa,CAAiC;IACtD,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IAClC,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,UAAU,CAAmC;IAErD,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,CAOtC;gBAEW,KAAK,EAAE,SAAS;IAgB5B,iBAAiB,aACgD;IAEjE,oBAAoB,aAEnB;IAGD,kBAAkB,MAAO,KAAK,UAqB7B;IAED,UAAU,MACL,gBAAgB,CAAC,OAAO,CAAC,GAAG,mBAAmB,CAAC,OAAO,CAAC,UA+F5D;IAED,MAAM;CA8IP"}
|