@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,117 @@
|
|
|
1
|
+
import '../../../assets/MembersList.css';
|
|
2
|
+
import { jsxs as a, jsx as t } from "react/jsx-runtime";
|
|
3
|
+
import d from "react";
|
|
4
|
+
import p from "../../../styles/texts/texts.module.js";
|
|
5
|
+
import o from "../../tags/tooltip/Tooltip.js";
|
|
6
|
+
import u from "../../slots/simple-item/SimpleItem.js";
|
|
7
|
+
import f from "../../assets/avatar/Avatar.js";
|
|
8
|
+
class x extends d.Component {
|
|
9
|
+
static defaultProps = {
|
|
10
|
+
isInverted: !1
|
|
11
|
+
};
|
|
12
|
+
constructor(s) {
|
|
13
|
+
super(s), this.state = {
|
|
14
|
+
activeTooltipIndex: null,
|
|
15
|
+
isMembersListVisible: !1
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
render() {
|
|
19
|
+
const { members: s, numberOfAvatarsDisplayed: i, isInverted: r } = this.props, { activeTooltipIndex: m, isMembersListVisible: n } = this.state;
|
|
20
|
+
return /* @__PURE__ */ a(
|
|
21
|
+
"div",
|
|
22
|
+
{
|
|
23
|
+
className: `members-list ${r ? "members-list--inverted" : ""}`,
|
|
24
|
+
role: "list",
|
|
25
|
+
children: [
|
|
26
|
+
s.slice(0, i).map((e, l) => {
|
|
27
|
+
const c = r ? l + 1 : i - l;
|
|
28
|
+
return /* @__PURE__ */ a(
|
|
29
|
+
"div",
|
|
30
|
+
{
|
|
31
|
+
className: "members-list__member",
|
|
32
|
+
role: "listitem",
|
|
33
|
+
style: { zIndex: c },
|
|
34
|
+
onMouseEnter: () => this.setState({
|
|
35
|
+
activeTooltipIndex: l
|
|
36
|
+
}),
|
|
37
|
+
onMouseLeave: () => this.setState({
|
|
38
|
+
activeTooltipIndex: null
|
|
39
|
+
}),
|
|
40
|
+
children: [
|
|
41
|
+
/* @__PURE__ */ t(
|
|
42
|
+
"div",
|
|
43
|
+
{
|
|
44
|
+
className: "members-list__avatar",
|
|
45
|
+
role: "presentation",
|
|
46
|
+
children: /* @__PURE__ */ t(
|
|
47
|
+
"img",
|
|
48
|
+
{
|
|
49
|
+
src: e.avatar,
|
|
50
|
+
alt: e.fullName,
|
|
51
|
+
role: "img",
|
|
52
|
+
"aria-hidden": "true"
|
|
53
|
+
}
|
|
54
|
+
)
|
|
55
|
+
}
|
|
56
|
+
),
|
|
57
|
+
m === l && /* @__PURE__ */ t(o, { children: e.fullName })
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
e.fullName
|
|
61
|
+
);
|
|
62
|
+
}),
|
|
63
|
+
s.slice(i).length > 0 && /* @__PURE__ */ a(
|
|
64
|
+
"div",
|
|
65
|
+
{
|
|
66
|
+
className: "members-list__remaining",
|
|
67
|
+
role: "listitem",
|
|
68
|
+
onMouseEnter: () => this.setState({ isMembersListVisible: !0 }),
|
|
69
|
+
onMouseLeave: () => this.setState({ isMembersListVisible: !1 }),
|
|
70
|
+
children: [
|
|
71
|
+
/* @__PURE__ */ a(
|
|
72
|
+
"span",
|
|
73
|
+
{
|
|
74
|
+
className: p.type,
|
|
75
|
+
"aria-hidden": "true",
|
|
76
|
+
children: [
|
|
77
|
+
"+",
|
|
78
|
+
s.slice(i).length
|
|
79
|
+
]
|
|
80
|
+
}
|
|
81
|
+
),
|
|
82
|
+
n && /* @__PURE__ */ t(o, { children: /* @__PURE__ */ t(
|
|
83
|
+
"div",
|
|
84
|
+
{
|
|
85
|
+
className: "members-list__list",
|
|
86
|
+
role: "list",
|
|
87
|
+
children: s.slice(i).map((e) => /* @__PURE__ */ t(
|
|
88
|
+
u,
|
|
89
|
+
{
|
|
90
|
+
leftPartSlot: /* @__PURE__ */ t(
|
|
91
|
+
f,
|
|
92
|
+
{
|
|
93
|
+
avatar: e.avatar,
|
|
94
|
+
fullName: e.fullName,
|
|
95
|
+
isAccented: !0
|
|
96
|
+
},
|
|
97
|
+
e.fullName
|
|
98
|
+
),
|
|
99
|
+
isTransparent: !0,
|
|
100
|
+
alignment: "CENTER"
|
|
101
|
+
},
|
|
102
|
+
e.fullName
|
|
103
|
+
))
|
|
104
|
+
}
|
|
105
|
+
) })
|
|
106
|
+
]
|
|
107
|
+
}
|
|
108
|
+
)
|
|
109
|
+
]
|
|
110
|
+
}
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
export {
|
|
115
|
+
x as default
|
|
116
|
+
};
|
|
117
|
+
//# sourceMappingURL=MembersList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MembersList.js","sources":["../../../../src/components/lists/members-list/MembersList.tsx"],"sourcesContent":["import React from 'react'\nimport texts from '@styles/texts/texts.module.scss'\nimport Tooltip from '@components/tags/tooltip/Tooltip'\nimport SimpleItem from '@components/slots/simple-item/SimpleItem'\nimport Avatar from '@components/assets/avatar/Avatar'\nimport './members-list.scss'\n\nexport interface MembersListProps {\n /**\n * Array of member information\n */\n members: Array<{\n /** Avatar image URL */\n avatar: string\n /** Full name of the member */\n fullName: string\n }>\n /**\n * Maximum number of avatars to display\n */\n numberOfAvatarsDisplayed: number\n /**\n * Whether to use inverted color scheme\n * @default false\n */\n isInverted?: boolean\n}\n\nexport interface MembersListState {\n activeTooltipIndex: number | null\n isMembersListVisible: boolean\n}\n\nexport default class MembersList extends React.Component<\n MembersListProps,\n MembersListState\n> {\n static defaultProps: Partial<MembersListProps> = {\n isInverted: false,\n }\n\n constructor(props: MembersListProps) {\n super(props)\n this.state = {\n activeTooltipIndex: null,\n isMembersListVisible: false,\n }\n }\n\n render() {\n const { members, numberOfAvatarsDisplayed, isInverted } = this.props\n const { activeTooltipIndex, isMembersListVisible } = this.state\n\n return (\n <div\n className={`members-list ${isInverted ? 'members-list--inverted' : ''}`}\n role=\"list\"\n >\n {members.slice(0, numberOfAvatarsDisplayed).map((member, index) => {\n const zIndex = isInverted\n ? index + 1\n : numberOfAvatarsDisplayed - index\n\n return (\n <div\n key={member.fullName}\n className=\"members-list__member\"\n role=\"listitem\"\n style={{ zIndex }}\n onMouseEnter={() =>\n this.setState({\n activeTooltipIndex: index,\n })\n }\n onMouseLeave={() =>\n this.setState({\n activeTooltipIndex: null,\n })\n }\n >\n <div\n className=\"members-list__avatar\"\n role=\"presentation\"\n >\n <img\n src={member.avatar}\n alt={member.fullName}\n role=\"img\"\n aria-hidden=\"true\"\n />\n </div>\n {activeTooltipIndex === index && (\n <Tooltip>{member.fullName}</Tooltip>\n )}\n </div>\n )\n })}\n {members.slice(numberOfAvatarsDisplayed).length > 0 && (\n <div\n className=\"members-list__remaining\"\n role=\"listitem\"\n onMouseEnter={() => this.setState({ isMembersListVisible: true })}\n onMouseLeave={() => this.setState({ isMembersListVisible: false })}\n >\n <span\n className={texts.type}\n aria-hidden=\"true\"\n >\n +{members.slice(numberOfAvatarsDisplayed).length}\n </span>\n {isMembersListVisible && (\n <Tooltip>\n <div\n className=\"members-list__list\"\n role=\"list\"\n >\n {members.slice(numberOfAvatarsDisplayed).map((member) => (\n <SimpleItem\n key={member.fullName}\n leftPartSlot={\n <Avatar\n key={member.fullName}\n avatar={member.avatar}\n fullName={member.fullName}\n isAccented\n />\n }\n isTransparent\n alignment=\"CENTER\"\n />\n ))}\n </div>\n </Tooltip>\n )}\n </div>\n )}\n </div>\n )\n }\n}\n"],"names":["MembersList","React","props","members","numberOfAvatarsDisplayed","isInverted","activeTooltipIndex","isMembersListVisible","jsxs","member","index","zIndex","jsx","Tooltip","texts","SimpleItem","Avatar"],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
|
|
3
|
+
interface SelectedColor {
|
|
4
|
+
id: string | undefined;
|
|
5
|
+
position: number;
|
|
6
|
+
}
|
|
7
|
+
interface DefaultData {
|
|
8
|
+
id: string;
|
|
9
|
+
}
|
|
10
|
+
interface HoveredColor extends SelectedColor {
|
|
11
|
+
hasGuideAbove: boolean;
|
|
12
|
+
hasGuideBelow: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface SortableListProps<T = DefaultData> {
|
|
15
|
+
/**
|
|
16
|
+
* Array of data items
|
|
17
|
+
*/
|
|
18
|
+
data: Array<T>;
|
|
19
|
+
/**
|
|
20
|
+
* Array of primary content nodes
|
|
21
|
+
*/
|
|
22
|
+
primarySlot: Array<React.ReactNode>;
|
|
23
|
+
/**
|
|
24
|
+
* Array of secondary content configurations
|
|
25
|
+
*/
|
|
26
|
+
secondarySlot?: Array<{
|
|
27
|
+
/** Title for the secondary content */
|
|
28
|
+
title: string;
|
|
29
|
+
/** Content node */
|
|
30
|
+
node: React.ReactNode;
|
|
31
|
+
}>;
|
|
32
|
+
/**
|
|
33
|
+
* Array of action button nodes
|
|
34
|
+
*/
|
|
35
|
+
actionsSlot?: Array<React.ReactNode>;
|
|
36
|
+
/**
|
|
37
|
+
* Content to display when list is empty
|
|
38
|
+
*/
|
|
39
|
+
emptySlot?: React.ReactNode;
|
|
40
|
+
/**
|
|
41
|
+
* Helper texts for buttons
|
|
42
|
+
*/
|
|
43
|
+
helpers?: {
|
|
44
|
+
/** Helper for remove button */
|
|
45
|
+
remove?: string;
|
|
46
|
+
/** Helper for more options button */
|
|
47
|
+
more?: string;
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Whether the list is scrollable
|
|
51
|
+
* @default false
|
|
52
|
+
*/
|
|
53
|
+
isScrollable?: boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Whether to show a top border on scroll
|
|
56
|
+
* @default false
|
|
57
|
+
*/
|
|
58
|
+
isTopBorderEnabled?: boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Whether the list can be empty
|
|
61
|
+
* @default true
|
|
62
|
+
*/
|
|
63
|
+
canBeEmpty?: boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Whether the list is blocked
|
|
66
|
+
* @default false
|
|
67
|
+
*/
|
|
68
|
+
isBlocked?: boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Change handler when list is reordered
|
|
71
|
+
*/
|
|
72
|
+
onChangeSortableList: (data: Array<T>) => void;
|
|
73
|
+
/**
|
|
74
|
+
* Remove item handler
|
|
75
|
+
*/
|
|
76
|
+
onRemoveItem: React.MouseEventHandler<Element> & React.KeyboardEventHandler<Element>;
|
|
77
|
+
/**
|
|
78
|
+
* Refold options handler
|
|
79
|
+
*/
|
|
80
|
+
onRefoldOptions: () => void;
|
|
81
|
+
}
|
|
82
|
+
export interface SortableListStates {
|
|
83
|
+
selectedElement: SelectedColor;
|
|
84
|
+
hoveredElement: HoveredColor;
|
|
85
|
+
hasTopBorder: boolean;
|
|
86
|
+
}
|
|
87
|
+
export default class SortableList<T extends DefaultData> extends React.Component<SortableListProps<T>, SortableListStates> {
|
|
88
|
+
private listRef;
|
|
89
|
+
static defaultProps: Partial<SortableListProps>;
|
|
90
|
+
constructor(props: SortableListProps<T>);
|
|
91
|
+
componentDidMount: () => void;
|
|
92
|
+
componentWillUnmount: () => void;
|
|
93
|
+
handleClickOutside: (e: Event) => void;
|
|
94
|
+
orderHandler: () => void;
|
|
95
|
+
selectionHandler: React.MouseEventHandler<HTMLLIElement> & React.MouseEventHandler<Element> & React.FocusEventHandler<HTMLInputElement>;
|
|
96
|
+
dragHandler: (id: string | undefined, hasGuideAbove: boolean, hasGuideBelow: boolean, position: number) => void;
|
|
97
|
+
dropOutsideHandler: (e: React.DragEvent<HTMLLIElement>) => void;
|
|
98
|
+
removeHandler: (e: React.MouseEvent<Element, MouseEvent> | React.KeyboardEvent<Element>) => void;
|
|
99
|
+
onScroll: (e: React.UIEvent<HTMLUListElement>) => void;
|
|
100
|
+
render(): import("react/jsx-runtime").JSX.Element;
|
|
101
|
+
}
|
|
102
|
+
export {};
|
|
103
|
+
//# sourceMappingURL=SortableList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SortableList.d.ts","sourceRoot":"","sources":["../../../../src/components/lists/sortable-list/SortableList.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import '../../../assets/SortableList.css';
|
|
2
|
+
import { jsx as u } from "react/jsx-runtime";
|
|
3
|
+
import g from "react";
|
|
4
|
+
import { t as S } from "../../../do-classnames-DSDFCvzy.js";
|
|
5
|
+
import b from "../draggable-item/DraggableItem.js";
|
|
6
|
+
class C extends g.Component {
|
|
7
|
+
listRef;
|
|
8
|
+
static defaultProps = {
|
|
9
|
+
isScrollable: !1,
|
|
10
|
+
isTopBorderEnabled: !1,
|
|
11
|
+
canBeEmpty: !0,
|
|
12
|
+
isBlocked: !1
|
|
13
|
+
};
|
|
14
|
+
constructor(e) {
|
|
15
|
+
super(e), this.state = {
|
|
16
|
+
selectedElement: {
|
|
17
|
+
id: void 0,
|
|
18
|
+
position: 0
|
|
19
|
+
},
|
|
20
|
+
hoveredElement: {
|
|
21
|
+
id: void 0,
|
|
22
|
+
hasGuideAbove: !1,
|
|
23
|
+
hasGuideBelow: !1,
|
|
24
|
+
position: 0
|
|
25
|
+
},
|
|
26
|
+
hasTopBorder: !1
|
|
27
|
+
}, this.listRef = g.createRef(), this.handleClickOutside = this.handleClickOutside.bind(this);
|
|
28
|
+
}
|
|
29
|
+
// Lifecycle
|
|
30
|
+
componentDidMount = () => document.addEventListener("mousedown", this.handleClickOutside);
|
|
31
|
+
componentWillUnmount = () => document.removeEventListener("mousedown", this.handleClickOutside);
|
|
32
|
+
handleClickOutside = (e) => {
|
|
33
|
+
this.listRef.current !== null && (!this.listRef.current.contains(e.target) || e.target === this.listRef.current) && this.setState({
|
|
34
|
+
selectedElement: {
|
|
35
|
+
id: void 0,
|
|
36
|
+
position: 0
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
// Handlers
|
|
41
|
+
orderHandler = () => {
|
|
42
|
+
const { onChangeSortableList: e, data: s } = this.props, { selectedElement: o, hoveredElement: l } = this.state, i = o, t = l, r = s.map((d) => d);
|
|
43
|
+
let n;
|
|
44
|
+
const h = r.findIndex(
|
|
45
|
+
(d) => d.id === i.id
|
|
46
|
+
), [m] = r.splice(h, 1);
|
|
47
|
+
t.hasGuideAbove && t.position > i.position ? n = t.position - 1 : t.hasGuideBelow && t.position > i.position || t.hasGuideAbove && t.position < i.position ? n = t.position : t.hasGuideBelow && t.position < i.position ? n = t.position + 1 : n = t.position, r.splice(n, 0, m), e(r);
|
|
48
|
+
};
|
|
49
|
+
selectionHandler = (e) => {
|
|
50
|
+
const s = e.currentTarget, o = e.target;
|
|
51
|
+
return o.tagName === "INPUT" || o.tagName === "BUTTON" || o.tagName === "TEXTAREA" ? this.setState({
|
|
52
|
+
selectedElement: {
|
|
53
|
+
id: void 0,
|
|
54
|
+
position: 0
|
|
55
|
+
}
|
|
56
|
+
}) : this.setState({
|
|
57
|
+
selectedElement: {
|
|
58
|
+
id: s.dataset.id,
|
|
59
|
+
position: parseFloat(s.dataset.position ?? "0")
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
dragHandler = (e, s, o, l) => {
|
|
64
|
+
this.setState({
|
|
65
|
+
hoveredElement: {
|
|
66
|
+
id: e,
|
|
67
|
+
hasGuideAbove: s,
|
|
68
|
+
hasGuideBelow: o,
|
|
69
|
+
position: l
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
};
|
|
73
|
+
dropOutsideHandler = (e) => {
|
|
74
|
+
const s = e.target, o = s.parentNode ?? s, l = (o.parentNode?.parentNode).scrollTop, i = o.offsetTop, t = i + o.clientHeight;
|
|
75
|
+
e.pageY + l < i ? this.orderHandler() : e.pageY + l > t && this.orderHandler();
|
|
76
|
+
};
|
|
77
|
+
removeHandler = (e) => {
|
|
78
|
+
const { onChangeSortableList: s, data: o } = this.props, l = o.map((r) => r);
|
|
79
|
+
let i;
|
|
80
|
+
const t = e.currentTarget.closest(".draggable-item");
|
|
81
|
+
t !== null ? i = t.getAttribute("data-id") : i = null, s(l.filter((r) => r.id !== i));
|
|
82
|
+
};
|
|
83
|
+
// Direct Actions
|
|
84
|
+
onScroll = (e) => {
|
|
85
|
+
const { isTopBorderEnabled: s } = this.props;
|
|
86
|
+
e.preventDefault(), e.currentTarget.scrollTop > 0 && s ? this.setState({ hasTopBorder: !0 }) : this.setState({ hasTopBorder: !1 });
|
|
87
|
+
};
|
|
88
|
+
// Render
|
|
89
|
+
render() {
|
|
90
|
+
const {
|
|
91
|
+
data: e,
|
|
92
|
+
canBeEmpty: s,
|
|
93
|
+
isBlocked: o,
|
|
94
|
+
primarySlot: l,
|
|
95
|
+
secondarySlot: i,
|
|
96
|
+
actionsSlot: t,
|
|
97
|
+
emptySlot: r,
|
|
98
|
+
helpers: n,
|
|
99
|
+
isScrollable: h,
|
|
100
|
+
onRemoveItem: m,
|
|
101
|
+
onRefoldOptions: d
|
|
102
|
+
} = this.props, { selectedElement: f, hoveredElement: c, hasTopBorder: v } = this.state;
|
|
103
|
+
return e.length === 0 && s ? /* @__PURE__ */ u("div", { className: "sortable-list", children: r }) : /* @__PURE__ */ u(
|
|
104
|
+
"ul",
|
|
105
|
+
{
|
|
106
|
+
className: S([
|
|
107
|
+
"sortable-list",
|
|
108
|
+
h && "sortable-list--scrollable",
|
|
109
|
+
v && "sortable-list--top-border"
|
|
110
|
+
]),
|
|
111
|
+
onScroll: this.onScroll,
|
|
112
|
+
ref: this.listRef,
|
|
113
|
+
children: e.map((a, p) => /* @__PURE__ */ u(
|
|
114
|
+
b,
|
|
115
|
+
{
|
|
116
|
+
id: a.id,
|
|
117
|
+
index: p,
|
|
118
|
+
canBeRemoved: e.length > 1 && !o || s && !o,
|
|
119
|
+
primarySlot: l[p],
|
|
120
|
+
secondarySlot: i ? i[p] : void 0,
|
|
121
|
+
actionsSlot: t ? t[p] : void 0,
|
|
122
|
+
selected: f.id === a.id,
|
|
123
|
+
helpers: {
|
|
124
|
+
remove: n?.remove,
|
|
125
|
+
more: n?.more
|
|
126
|
+
},
|
|
127
|
+
guideAbove: c.id === a.id ? c.hasGuideAbove : !1,
|
|
128
|
+
guideBelow: c.id === a.id ? c.hasGuideBelow : !1,
|
|
129
|
+
isBlocked: o,
|
|
130
|
+
onCancelSelection: this.selectionHandler,
|
|
131
|
+
onRefoldOptions: d,
|
|
132
|
+
onChangeOrder: this.orderHandler,
|
|
133
|
+
onRemove: m,
|
|
134
|
+
onChangeSelection: this.selectionHandler,
|
|
135
|
+
onDragChange: this.dragHandler,
|
|
136
|
+
onDropOutside: this.orderHandler,
|
|
137
|
+
"aria-selected": f.id === a.id
|
|
138
|
+
},
|
|
139
|
+
a.id
|
|
140
|
+
))
|
|
141
|
+
}
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
export {
|
|
146
|
+
C as default
|
|
147
|
+
};
|
|
148
|
+
//# sourceMappingURL=SortableList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SortableList.js","sources":["../../../../src/components/lists/sortable-list/SortableList.tsx"],"sourcesContent":["import React from 'react'\nimport { doClassnames } from '@a_ng_d/figmug-utils'\nimport DraggableItem from '../draggable-item/DraggableItem'\nimport './sortable-list.scss'\n\ninterface SelectedColor {\n id: string | undefined\n position: number\n}\n\ninterface DefaultData {\n id: string\n}\n\ninterface HoveredColor extends SelectedColor {\n hasGuideAbove: boolean\n hasGuideBelow: boolean\n}\n\nexport interface SortableListProps<T = DefaultData> {\n /**\n * Array of data items\n */\n data: Array<T>\n /**\n * Array of primary content nodes\n */\n primarySlot: Array<React.ReactNode>\n /**\n * Array of secondary content configurations\n */\n secondarySlot?: Array<{\n /** Title for the secondary content */\n title: string\n /** Content node */\n node: React.ReactNode\n }>\n /**\n * Array of action button nodes\n */\n actionsSlot?: Array<React.ReactNode>\n /**\n * Content to display when list is empty\n */\n emptySlot?: React.ReactNode\n /**\n * Helper texts for buttons\n */\n helpers?: {\n /** Helper for remove button */\n remove?: string\n /** Helper for more options button */\n more?: string\n }\n /**\n * Whether the list is scrollable\n * @default false\n */\n isScrollable?: boolean\n /**\n * Whether to show a top border on scroll\n * @default false\n */\n isTopBorderEnabled?: boolean\n /**\n * Whether the list can be empty\n * @default true\n */\n canBeEmpty?: boolean\n /**\n * Whether the list is blocked\n * @default false\n */\n isBlocked?: boolean\n /**\n * Change handler when list is reordered\n */\n onChangeSortableList: (data: Array<T>) => void\n /**\n * Remove item handler\n */\n onRemoveItem: React.MouseEventHandler<Element> &\n React.KeyboardEventHandler<Element>\n /**\n * Refold options handler\n */\n onRefoldOptions: () => void\n}\n\nexport interface SortableListStates {\n selectedElement: SelectedColor\n hoveredElement: HoveredColor\n hasTopBorder: boolean\n}\n\nexport default class SortableList<\n T extends DefaultData,\n> extends React.Component<SortableListProps<T>, SortableListStates> {\n private listRef: React.RefObject<HTMLUListElement>\n\n static defaultProps: Partial<SortableListProps> = {\n isScrollable: false,\n isTopBorderEnabled: false,\n canBeEmpty: true,\n isBlocked: false,\n }\n\n constructor(props: SortableListProps<T>) {\n super(props)\n this.state = {\n selectedElement: {\n id: undefined,\n position: 0,\n },\n hoveredElement: {\n id: undefined,\n hasGuideAbove: false,\n hasGuideBelow: false,\n position: 0,\n },\n hasTopBorder: false,\n }\n this.listRef = React.createRef()\n this.handleClickOutside = this.handleClickOutside.bind(this)\n }\n\n // Lifecycle\n componentDidMount = () =>\n document.addEventListener('mousedown', this.handleClickOutside)\n\n componentWillUnmount = () =>\n document.removeEventListener('mousedown', this.handleClickOutside)\n\n handleClickOutside = (e: Event) => {\n if (this.listRef.current !== null)\n if (\n !this.listRef.current.contains(e.target as HTMLElement) ||\n e.target === this.listRef.current\n )\n this.setState({\n selectedElement: {\n id: undefined,\n position: 0,\n },\n })\n }\n\n // Handlers\n orderHandler = () => {\n const { onChangeSortableList, data } = this.props\n const { selectedElement, hoveredElement } = this.state\n\n const source: SelectedColor = selectedElement,\n target: HoveredColor = hoveredElement,\n duplicatedData = data.map((el) => el)\n\n let position: number\n const sourceIndex = duplicatedData.findIndex(\n (item) => item.id === source.id\n )\n\n const [removedElement] = duplicatedData.splice(sourceIndex, 1)\n\n if (target.hasGuideAbove && target.position > source.position)\n position = target.position - 1\n else if (target.hasGuideBelow && target.position > source.position)\n position = target.position\n else if (target.hasGuideAbove && target.position < source.position)\n position = target.position\n else if (target.hasGuideBelow && target.position < source.position)\n position = target.position + 1\n else position = target.position\n\n duplicatedData.splice(position, 0, removedElement)\n\n onChangeSortableList(duplicatedData)\n }\n\n selectionHandler: React.MouseEventHandler<HTMLLIElement> &\n React.MouseEventHandler<Element> &\n React.FocusEventHandler<HTMLInputElement> = (e) => {\n const item = e.currentTarget as HTMLElement\n const target = e.target as HTMLElement\n\n if (\n target.tagName === 'INPUT' ||\n target.tagName === 'BUTTON' ||\n target.tagName === 'TEXTAREA'\n )\n return this.setState({\n selectedElement: {\n id: undefined,\n position: 0,\n },\n })\n\n return this.setState({\n selectedElement: {\n id: item.dataset.id,\n position: parseFloat(item.dataset.position ?? '0'),\n },\n })\n }\n\n dragHandler = (\n id: string | undefined,\n hasGuideAbove: boolean,\n hasGuideBelow: boolean,\n position: number\n ) => {\n this.setState({\n hoveredElement: {\n id: id,\n hasGuideAbove: hasGuideAbove,\n hasGuideBelow: hasGuideBelow,\n position: position,\n },\n })\n }\n\n dropOutsideHandler = (e: React.DragEvent<HTMLLIElement>) => {\n const target = e.target,\n parent: ParentNode =\n (target as HTMLElement).parentNode ?? (target as HTMLElement),\n scrollY: number = (parent.parentNode?.parentNode as HTMLElement)\n .scrollTop,\n parentRefTop: number = (parent as HTMLElement).offsetTop,\n parentRefBottom: number =\n parentRefTop + (parent as HTMLElement).clientHeight\n\n if (e.pageY + scrollY < parentRefTop) this.orderHandler()\n else if (e.pageY + scrollY > parentRefBottom) this.orderHandler()\n }\n\n removeHandler = (\n e: React.MouseEvent<Element, MouseEvent> | React.KeyboardEvent<Element>\n ) => {\n const { onChangeSortableList, data } = this.props\n const duplicatedData = data.map((el) => el)\n let id: string | null\n const element: HTMLElement | null = (\n e.currentTarget as HTMLElement\n ).closest('.draggable-item')\n\n element !== null ? (id = element.getAttribute('data-id')) : (id = null)\n\n onChangeSortableList(duplicatedData.filter((item) => item.id !== id))\n }\n\n // Direct Actions\n onScroll = (e: React.UIEvent<HTMLUListElement>) => {\n const { isTopBorderEnabled } = this.props\n\n e.preventDefault()\n if (e.currentTarget.scrollTop > 0 && isTopBorderEnabled)\n this.setState({ hasTopBorder: true })\n else this.setState({ hasTopBorder: false })\n }\n\n // Render\n render() {\n const {\n data,\n canBeEmpty,\n isBlocked,\n primarySlot,\n secondarySlot,\n actionsSlot,\n emptySlot,\n helpers,\n isScrollable,\n onRemoveItem,\n onRefoldOptions,\n } = this.props\n const { selectedElement, hoveredElement, hasTopBorder } = this.state\n\n if (data.length === 0 && canBeEmpty)\n return <div className=\"sortable-list\">{emptySlot}</div>\n return (\n <ul\n className={doClassnames([\n 'sortable-list',\n isScrollable && 'sortable-list--scrollable',\n hasTopBorder && 'sortable-list--top-border',\n ])}\n onScroll={this.onScroll}\n ref={this.listRef}\n >\n {data.map((item, index) => (\n <DraggableItem\n key={item.id}\n id={item.id}\n index={index}\n canBeRemoved={\n (data.length > 1 && !isBlocked) || (canBeEmpty && !isBlocked)\n }\n primarySlot={primarySlot[index]}\n secondarySlot={secondarySlot ? secondarySlot[index] : undefined}\n actionsSlot={actionsSlot ? actionsSlot[index] : undefined}\n selected={selectedElement.id === item.id}\n helpers={{\n remove: helpers?.remove,\n more: helpers?.more,\n }}\n guideAbove={\n hoveredElement.id === item.id\n ? hoveredElement.hasGuideAbove\n : false\n }\n guideBelow={\n hoveredElement.id === item.id\n ? hoveredElement.hasGuideBelow\n : false\n }\n isBlocked={isBlocked}\n onCancelSelection={this.selectionHandler}\n onRefoldOptions={onRefoldOptions}\n onChangeOrder={this.orderHandler}\n onRemove={onRemoveItem}\n onChangeSelection={this.selectionHandler}\n onDragChange={this.dragHandler}\n onDropOutside={this.orderHandler}\n aria-selected={selectedElement.id === item.id}\n />\n ))}\n </ul>\n )\n }\n}\n"],"names":["SortableList","React","props","onChangeSortableList","data","selectedElement","hoveredElement","source","target","duplicatedData","el","position","sourceIndex","item","removedElement","id","hasGuideAbove","hasGuideBelow","parent","scrollY","parentRefTop","parentRefBottom","element","isTopBorderEnabled","canBeEmpty","isBlocked","primarySlot","secondarySlot","actionsSlot","emptySlot","helpers","isScrollable","onRemoveItem","onRefoldOptions","hasTopBorder","jsx","doClassnames","index","DraggableItem"],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { IconList } from '../../../types/icon.types';
|
|
2
|
+
|
|
3
|
+
export interface TabsProps {
|
|
4
|
+
/**
|
|
5
|
+
* Array of tab configurations
|
|
6
|
+
*/
|
|
7
|
+
tabs: Array<{
|
|
8
|
+
/** Tab label */
|
|
9
|
+
label: string;
|
|
10
|
+
/** Unique tab ID */
|
|
11
|
+
id: string;
|
|
12
|
+
/** Optional icon */
|
|
13
|
+
icon?: {
|
|
14
|
+
type: 'PICTO' | 'LETTER';
|
|
15
|
+
name: IconList;
|
|
16
|
+
};
|
|
17
|
+
/** Whether tab has been updated */
|
|
18
|
+
isUpdated: boolean;
|
|
19
|
+
/** Whether to show a "New" badge */
|
|
20
|
+
isNew?: boolean;
|
|
21
|
+
}>;
|
|
22
|
+
/**
|
|
23
|
+
* ID of the active tab
|
|
24
|
+
*/
|
|
25
|
+
active: string;
|
|
26
|
+
/**
|
|
27
|
+
* Layout direction
|
|
28
|
+
* @default 'HORIZONTAL'
|
|
29
|
+
*/
|
|
30
|
+
direction?: 'HORIZONTAL' | 'VERTICAL';
|
|
31
|
+
/**
|
|
32
|
+
* Whether tabs should use flex layout
|
|
33
|
+
* @default false
|
|
34
|
+
*/
|
|
35
|
+
isFlex?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Maximum number of tabs to display before collapsing into menu
|
|
38
|
+
* @default 3
|
|
39
|
+
*/
|
|
40
|
+
maxVisibleTabs?: number;
|
|
41
|
+
/**
|
|
42
|
+
* Click handler
|
|
43
|
+
*/
|
|
44
|
+
action: React.MouseEventHandler & React.KeyboardEventHandler;
|
|
45
|
+
}
|
|
46
|
+
declare const Tabs: (props: TabsProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
47
|
+
export default Tabs;
|
|
48
|
+
//# sourceMappingURL=Tabs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../../src/components/lists/tabs/Tabs.tsx"],"names":[],"mappings":";AAAA,OAAO,aAAa,CAAA;AAEpB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAO1C,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,IAAI,EAAE,KAAK,CAAC;QACV,gBAAgB;QAChB,KAAK,EAAE,MAAM,CAAA;QACb,oBAAoB;QACpB,EAAE,EAAE,MAAM,CAAA;QACV,oBAAoB;QACpB,IAAI,CAAC,EAAE;YACL,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAA;YACxB,IAAI,EAAE,QAAQ,CAAA;SACf,CAAA;QACD,mCAAmC;QACnC,SAAS,EAAE,OAAO,CAAA;QAClB,oCAAoC;QACpC,KAAK,CAAC,EAAE,OAAO,CAAA;KAChB,CAAC,CAAA;IACF;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,SAAS,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IACrC;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;OAEG;IACH,MAAM,EAAE,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,oBAAoB,CAAA;CAC7D;AAED,QAAA,MAAM,IAAI,UAAW,SAAS,mDA2K7B,CAAA;AAED,eAAe,IAAI,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tabs.figma.d.ts","sourceRoot":"","sources":["../../../../src/components/lists/tabs/Tabs.figma.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { i } from "../../../index_react-CmuCVQet.js";
|
|
3
|
+
import e from "./Tabs.js";
|
|
4
|
+
i.figma.connect(
|
|
5
|
+
e,
|
|
6
|
+
"https://www.figma.com/design/QlBdsfEcaUsGBzqA20xbNi/Unoff?node-id=651:383",
|
|
7
|
+
{
|
|
8
|
+
props: {
|
|
9
|
+
direction: i.figma.enum("direction", {
|
|
10
|
+
HORIZONTAL: "HORIZONTAL",
|
|
11
|
+
VERTICAL: "VERTICAL"
|
|
12
|
+
}),
|
|
13
|
+
isFlex: i.figma.boolean("isFlex")
|
|
14
|
+
},
|
|
15
|
+
example: (a) => /* @__PURE__ */ t(
|
|
16
|
+
e,
|
|
17
|
+
{
|
|
18
|
+
tabs: [
|
|
19
|
+
{ label: "Tab 1", id: "tab1", isUpdated: !1 },
|
|
20
|
+
{ label: "Tab 2", id: "tab2", isUpdated: !1 }
|
|
21
|
+
],
|
|
22
|
+
active: "tab1",
|
|
23
|
+
direction: a.direction,
|
|
24
|
+
isFlex: a.isFlex,
|
|
25
|
+
action: () => {
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
)
|
|
29
|
+
}
|
|
30
|
+
);
|
|
31
|
+
//# sourceMappingURL=Tabs.figma.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tabs.figma.js","sources":["../../../../src/components/lists/tabs/Tabs.figma.tsx"],"sourcesContent":["import { figma } from '@figma/code-connect'\nimport Tabs from './Tabs'\n\nfigma.connect(\n Tabs,\n 'https://www.figma.com/design/QlBdsfEcaUsGBzqA20xbNi/Unoff?node-id=651:383',\n {\n props: {\n direction: figma.enum('direction', {\n HORIZONTAL: 'HORIZONTAL',\n VERTICAL: 'VERTICAL',\n }),\n isFlex: figma.boolean('isFlex'),\n },\n example: (props) => (\n <Tabs\n tabs={[\n { label: 'Tab 1', id: 'tab1', isUpdated: false },\n { label: 'Tab 2', id: 'tab2', isUpdated: false },\n ]}\n active=\"tab1\"\n direction={props.direction}\n isFlex={props.isFlex}\n action={() => {}}\n />\n ),\n }\n)\n"],"names":["figma","Tabs","props","jsx"],"mappings":";;;AAGAA,EAAAA,MAAM;AAAA,EACJC;AAAA,EACA;AAAA,EACA;AAAA,IACE,OAAO;AAAA,MACL,WAAWD,EAAAA,MAAM,KAAK,aAAa;AAAA,QACjC,YAAY;AAAA,QACZ,UAAU;AAAA,MAAA,CACX;AAAA,MACD,QAAQA,EAAAA,MAAM,QAAQ,QAAQ;AAAA,IAAA;AAAA,IAEhC,SAAS,CAACE,MACR,gBAAAC;AAAA,MAACF;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,UACJ,EAAE,OAAO,SAAS,IAAI,QAAQ,WAAW,GAAA;AAAA,UACzC,EAAE,OAAO,SAAS,IAAI,QAAQ,WAAW,GAAA;AAAA,QAAM;AAAA,QAEjD,QAAO;AAAA,QACP,WAAWC,EAAM;AAAA,QACjB,QAAQA,EAAM;AAAA,QACd,QAAQ,MAAM;AAAA,QAAC;AAAA,MAAA;AAAA,IAAA;AAAA,EACjB;AAGN;"}
|