@foxford/ui 2.76.1-beta-3d975b5-20250715 → 2.77.0-beta-90a741d-20250807
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 +27 -0
- package/components/Accordion/Accordion.js +1 -1
- package/components/Accordion/Accordion.js.map +1 -1
- package/components/Accordion/Accordion.mjs +1 -1
- package/components/Accordion/Accordion.mjs.map +1 -1
- package/components/Accordion/hooks.js +1 -1
- package/components/Accordion/hooks.js.map +1 -1
- package/components/Accordion/hooks.mjs +1 -1
- package/components/Accordion/hooks.mjs.map +1 -1
- package/components/AccordionItem/AccordionItem.js +1 -1
- package/components/AccordionItem/AccordionItem.js.map +1 -1
- package/components/AccordionItem/AccordionItem.mjs +1 -1
- package/components/AccordionItem/AccordionItem.mjs.map +1 -1
- package/components/ActionBtn/ActionBtn.js +1 -1
- package/components/ActionBtn/ActionBtn.js.map +1 -1
- package/components/ActionBtn/ActionBtn.mjs +1 -1
- package/components/ActionBtn/ActionBtn.mjs.map +1 -1
- package/components/ActionBtn/style.js.map +1 -1
- package/components/ActionBtn/style.mjs.map +1 -1
- package/components/Alert/Alert.js +1 -1
- package/components/Alert/Alert.js.map +1 -1
- package/components/Alert/Alert.mjs +1 -1
- package/components/Alert/Alert.mjs.map +1 -1
- package/components/Amount/Amount.js +1 -1
- package/components/Amount/Amount.js.map +1 -1
- package/components/Amount/Amount.mjs +1 -1
- package/components/Amount/Amount.mjs.map +1 -1
- package/components/Amount/data/index.js.map +1 -1
- package/components/Amount/data/index.mjs.map +1 -1
- package/components/Amount/style.js.map +1 -1
- package/components/Amount/style.mjs.map +1 -1
- package/components/Anchor/Anchor.js +1 -1
- package/components/Anchor/Anchor.js.map +1 -1
- package/components/Anchor/Anchor.mjs +1 -1
- package/components/Anchor/Anchor.mjs.map +1 -1
- package/components/Arrow/Arrow.js.map +1 -1
- package/components/Arrow/Arrow.mjs.map +1 -1
- package/components/ArrowBadge/ArrowBadge.js.map +1 -1
- package/components/ArrowBadge/ArrowBadge.mjs.map +1 -1
- package/components/AspectRatio/style.js.map +1 -1
- package/components/AspectRatio/style.mjs.map +1 -1
- package/components/Avatar/Avatar.js +1 -1
- package/components/Avatar/Avatar.js.map +1 -1
- package/components/Avatar/Avatar.mjs +1 -1
- package/components/Avatar/Avatar.mjs.map +1 -1
- package/components/Avatar/utils.js.map +1 -1
- package/components/Avatar/utils.mjs.map +1 -1
- package/components/Badge/Badge.js +1 -1
- package/components/Badge/Badge.js.map +1 -1
- package/components/Badge/Badge.mjs +1 -1
- package/components/Badge/Badge.mjs.map +1 -1
- package/components/Button/Button.js +1 -1
- package/components/Button/Button.js.map +1 -1
- package/components/Button/Button.mjs +1 -1
- package/components/Button/Button.mjs.map +1 -1
- package/components/Button/hooks.js.map +1 -1
- package/components/Button/hooks.mjs.map +1 -1
- package/components/Button/style.js.map +1 -1
- package/components/Button/style.mjs.map +1 -1
- package/components/Checkbox/Checkbox.js +1 -1
- package/components/Checkbox/Checkbox.js.map +1 -1
- package/components/Checkbox/Checkbox.mjs +1 -1
- package/components/Checkbox/Checkbox.mjs.map +1 -1
- package/components/Chip/Chip.js +1 -1
- package/components/Chip/Chip.js.map +1 -1
- package/components/Chip/Chip.mjs +1 -1
- package/components/Chip/Chip.mjs.map +1 -1
- package/components/Container/Container.js.map +1 -1
- package/components/Container/Container.mjs.map +1 -1
- package/components/Container/style.js.map +1 -1
- package/components/Container/style.mjs.map +1 -1
- package/components/ContextMenu/ContextMenu.js +1 -1
- package/components/ContextMenu/ContextMenu.js.map +1 -1
- package/components/ContextMenu/ContextMenu.mjs +1 -1
- package/components/ContextMenu/ContextMenu.mjs.map +1 -1
- package/components/ContextMenu/Item.js.map +1 -1
- package/components/ContextMenu/Item.mjs.map +1 -1
- package/components/ContextMenu/style.js.map +1 -1
- package/components/ContextMenu/style.mjs.map +1 -1
- package/components/ContextMenu.Multilevel/ContextMenu.Multilevel.js +1 -1
- package/components/ContextMenu.Multilevel/ContextMenu.Multilevel.js.map +1 -1
- package/components/ContextMenu.Multilevel/ContextMenu.Multilevel.mjs +1 -1
- package/components/ContextMenu.Multilevel/ContextMenu.Multilevel.mjs.map +1 -1
- package/components/ContextMenu.Multilevel/Controls.js.map +1 -1
- package/components/ContextMenu.Multilevel/Controls.mjs.map +1 -1
- package/components/Dialog/Dialog.js.map +1 -1
- package/components/Dialog/Dialog.mjs.map +1 -1
- package/components/DialogComponent/DialogComponent.js +1 -1
- package/components/DialogComponent/DialogComponent.js.map +1 -1
- package/components/DialogComponent/DialogComponent.mjs +1 -1
- package/components/DialogComponent/DialogComponent.mjs.map +1 -1
- package/components/DialogComponent/style.js.map +1 -1
- package/components/DialogComponent/style.mjs.map +1 -1
- package/components/Divider/style.js.map +1 -1
- package/components/Divider/style.mjs.map +1 -1
- package/components/Dropdown/Dropdown.js +1 -1
- package/components/Dropdown/Dropdown.js.map +1 -1
- package/components/Dropdown/Dropdown.mjs +1 -1
- package/components/Dropdown/Dropdown.mjs.map +1 -1
- package/components/Dropdown/DropdownMenuNoOptions.js +1 -1
- package/components/Dropdown/DropdownMenuNoOptions.js.map +1 -1
- package/components/Dropdown/DropdownMenuNoOptions.mjs +1 -1
- package/components/Dropdown/DropdownMenuNoOptions.mjs.map +1 -1
- package/components/Dropdown/hooks.js.map +1 -1
- package/components/Dropdown/hooks.mjs.map +1 -1
- package/components/FormInput/FormInput.js.map +1 -1
- package/components/FormInput/FormInput.mjs.map +1 -1
- package/components/FormInputLabel/FormInputLabel.js +1 -1
- package/components/FormInputLabel/FormInputLabel.js.map +1 -1
- package/components/FormInputLabel/FormInputLabel.mjs +1 -1
- package/components/FormInputLabel/FormInputLabel.mjs.map +1 -1
- package/components/FormLabel/FormLabel.js +1 -1
- package/components/FormLabel/FormLabel.js.map +1 -1
- package/components/FormLabel/FormLabel.mjs +1 -1
- package/components/FormLabel/FormLabel.mjs.map +1 -1
- package/components/Icon/Icon.js +1 -1
- package/components/Icon/Icon.js.map +1 -1
- package/components/Icon/Icon.mjs +1 -1
- package/components/Icon/Icon.mjs.map +1 -1
- package/components/Icon/bg-worker.js.map +1 -1
- package/components/Icon/bg-worker.mjs.map +1 -1
- package/components/Icon/list/default.js.map +1 -1
- package/components/Icon/list/default.mjs.map +1 -1
- package/components/Icon/list/icon-pack.js.map +1 -1
- package/components/Icon/list/icon-pack.mjs.map +1 -1
- package/components/IconButton/IconButton.js.map +1 -1
- package/components/IconButton/IconButton.mjs.map +1 -1
- package/components/Indicator/Indicator.js +1 -1
- package/components/Indicator/Indicator.js.map +1 -1
- package/components/Indicator/Indicator.mjs +1 -1
- package/components/Indicator/Indicator.mjs.map +1 -1
- package/components/Input/Input.js.map +1 -1
- package/components/Input/Input.mjs.map +1 -1
- package/components/Input/helpers.js.map +1 -1
- package/components/Input/helpers.mjs.map +1 -1
- package/components/Input.Phone/Input.Phone.js.map +1 -1
- package/components/Input.Phone/Input.Phone.mjs.map +1 -1
- package/components/InputCheckbox/InputCheckbox.js.map +1 -1
- package/components/InputCheckbox/InputCheckbox.mjs.map +1 -1
- package/components/InputRadio/InputRadio.js.map +1 -1
- package/components/InputRadio/InputRadio.mjs.map +1 -1
- package/components/ListItem/ListItem.js +1 -1
- package/components/ListItem/ListItem.js.map +1 -1
- package/components/ListItem/ListItem.mjs +1 -1
- package/components/ListItem/ListItem.mjs.map +1 -1
- package/components/Menu/Menu.js.map +1 -1
- package/components/Menu/Menu.mjs.map +1 -1
- package/components/MenuComponent/MenuComponent.js.map +1 -1
- package/components/MenuComponent/MenuComponent.mjs.map +1 -1
- package/components/MenuComponent/style.js +1 -1
- package/components/MenuComponent/style.js.map +1 -1
- package/components/MenuComponent/style.mjs +1 -1
- package/components/MenuComponent/style.mjs.map +1 -1
- package/components/MenuContainer/MenuContainer.js +1 -1
- package/components/MenuContainer/MenuContainer.js.map +1 -1
- package/components/MenuContainer/MenuContainer.mjs +1 -1
- package/components/MenuContainer/MenuContainer.mjs.map +1 -1
- package/components/MenuDivider/MenuDivider.js +1 -1
- package/components/MenuDivider/MenuDivider.js.map +1 -1
- package/components/MenuDivider/MenuDivider.mjs +1 -1
- package/components/MenuDivider/MenuDivider.mjs.map +1 -1
- package/components/MenuList/MenuList.js.map +1 -1
- package/components/MenuList/MenuList.mjs.map +1 -1
- package/components/Modal/Modal.js.map +1 -1
- package/components/Modal/Modal.mjs.map +1 -1
- package/components/Modal/adapter.js.map +1 -1
- package/components/Modal/adapter.mjs.map +1 -1
- package/components/Modal/style.js +1 -1
- package/components/Modal/style.js.map +1 -1
- package/components/Modal/style.mjs +1 -1
- package/components/Modal/style.mjs.map +1 -1
- package/components/Notification/Notification.js +1 -1
- package/components/Notification/Notification.js.map +1 -1
- package/components/Notification/Notification.mjs +1 -1
- package/components/Notification/Notification.mjs.map +1 -1
- package/components/Paper/Paper.js.map +1 -1
- package/components/Paper/Paper.mjs.map +1 -1
- package/components/Paper/style.js.map +1 -1
- package/components/Paper/style.mjs.map +1 -1
- package/components/Popover/Popover.js.map +1 -1
- package/components/Popover/Popover.mjs.map +1 -1
- package/components/PopoverComponent/PopoverComponent.js +1 -1
- package/components/PopoverComponent/PopoverComponent.js.map +1 -1
- package/components/PopoverComponent/PopoverComponent.mjs +1 -1
- package/components/PopoverComponent/PopoverComponent.mjs.map +1 -1
- package/components/Progress/Progress.js.map +1 -1
- package/components/Progress/Progress.mjs.map +1 -1
- package/components/Progress/style.js +1 -1
- package/components/Progress/style.js.map +1 -1
- package/components/Progress/style.mjs +1 -1
- package/components/Progress/style.mjs.map +1 -1
- package/components/Progress.Circle/Progress.Circle.js +1 -1
- package/components/Progress.Circle/Progress.Circle.js.map +1 -1
- package/components/Progress.Circle/Progress.Circle.mjs +1 -1
- package/components/Progress.Circle/Progress.Circle.mjs.map +1 -1
- package/components/Progress.Circle/style.js +1 -1
- package/components/Progress.Circle/style.js.map +1 -1
- package/components/Progress.Circle/style.mjs +1 -1
- package/components/Progress.Circle/style.mjs.map +1 -1
- package/components/Progress.Segmented/Progress.Segmented.js.map +1 -1
- package/components/Progress.Segmented/Progress.Segmented.mjs.map +1 -1
- package/components/Progress.Segmented/style.js.map +1 -1
- package/components/Progress.Segmented/style.mjs.map +1 -1
- package/components/ProgressCircle/ProgressCircle.js +1 -1
- package/components/ProgressCircle/ProgressCircle.js.map +1 -1
- package/components/ProgressCircle/ProgressCircle.mjs +1 -1
- package/components/ProgressCircle/ProgressCircle.mjs.map +1 -1
- package/components/ProgressCircle/style.js +1 -1
- package/components/ProgressCircle/style.js.map +1 -1
- package/components/ProgressCircle/style.mjs +1 -1
- package/components/ProgressCircle/style.mjs.map +1 -1
- package/components/ProgressLine/ProgressLine.js +1 -1
- package/components/ProgressLine/ProgressLine.js.map +1 -1
- package/components/ProgressLine/ProgressLine.mjs +1 -1
- package/components/ProgressLine/ProgressLine.mjs.map +1 -1
- package/components/Radio/Group.js.map +1 -1
- package/components/Radio/Group.mjs.map +1 -1
- package/components/Radio/Radio.js +1 -1
- package/components/Radio/Radio.js.map +1 -1
- package/components/Radio/Radio.mjs +1 -1
- package/components/Radio/Radio.mjs.map +1 -1
- package/components/Radio/style.js.map +1 -1
- package/components/Radio/style.mjs.map +1 -1
- package/components/Scrollable/Scrollable.js +1 -1
- package/components/Scrollable/Scrollable.js.map +1 -1
- package/components/Scrollable/Scrollable.mjs +1 -1
- package/components/Scrollable/Scrollable.mjs.map +1 -1
- package/components/Section/Section.js.map +1 -1
- package/components/Section/Section.mjs.map +1 -1
- package/components/Section/style.js +1 -1
- package/components/Section/style.js.map +1 -1
- package/components/Section/style.mjs +1 -1
- package/components/Section/style.mjs.map +1 -1
- package/components/Select/Select.js.map +1 -1
- package/components/Select/Select.mjs.map +1 -1
- package/components/Select/style.js +1 -1
- package/components/Select/style.js.map +1 -1
- package/components/Select/style.mjs +1 -1
- package/components/Select/style.mjs.map +1 -1
- package/components/Separator/Separator.js.map +1 -1
- package/components/Separator/Separator.mjs.map +1 -1
- package/components/Separator/SeparatorText.js.map +1 -1
- package/components/Separator/SeparatorText.mjs.map +1 -1
- package/components/Separator/style.js +1 -1
- package/components/Separator/style.js.map +1 -1
- package/components/Separator/style.mjs +1 -1
- package/components/Separator/style.mjs.map +1 -1
- package/components/Spacer/Spacer.js.map +1 -1
- package/components/Spacer/Spacer.mjs.map +1 -1
- package/components/Spacer/style.js.map +1 -1
- package/components/Spacer/style.mjs.map +1 -1
- package/components/Spinner/Spinner.js.map +1 -1
- package/components/Spinner/Spinner.mjs.map +1 -1
- package/components/Spinner/style.js +1 -1
- package/components/Spinner/style.js.map +1 -1
- package/components/Spinner/style.mjs +1 -1
- package/components/Spinner/style.mjs.map +1 -1
- package/components/Switch/Switch.js.map +1 -1
- package/components/Switch/Switch.mjs.map +1 -1
- package/components/Switcher/style.js.map +1 -1
- package/components/Switcher/style.mjs.map +1 -1
- package/components/Tab/Tab.js +1 -1
- package/components/Tab/Tab.js.map +1 -1
- package/components/Tab/Tab.mjs +1 -1
- package/components/Tab/Tab.mjs.map +1 -1
- package/components/TabList/TabList.js +1 -1
- package/components/TabList/TabList.js.map +1 -1
- package/components/TabList/TabList.mjs +1 -1
- package/components/TabList/TabList.mjs.map +1 -1
- package/components/TabList/TabListMenuTab.js +1 -1
- package/components/TabList/TabListMenuTab.js.map +1 -1
- package/components/TabList/TabListMenuTab.mjs +1 -1
- package/components/TabList/TabListMenuTab.mjs.map +1 -1
- package/components/TabList/TabListPanel.js.map +1 -1
- package/components/TabList/TabListPanel.mjs.map +1 -1
- package/components/TabList/hooks.js +1 -1
- package/components/TabList/hooks.js.map +1 -1
- package/components/TabList/hooks.mjs +1 -1
- package/components/TabList/hooks.mjs.map +1 -1
- package/components/TabList/style.js +1 -1
- package/components/TabList/style.js.map +1 -1
- package/components/TabList/style.mjs +1 -1
- package/components/TabList/style.mjs.map +1 -1
- package/components/TabListTab/TabListTab.js.map +1 -1
- package/components/TabListTab/TabListTab.mjs.map +1 -1
- package/components/TabListTab/style.js +1 -1
- package/components/TabListTab/style.js.map +1 -1
- package/components/TabListTab/style.mjs +1 -1
- package/components/TabListTab/style.mjs.map +1 -1
- package/components/Tabs/Tabs.js.map +1 -1
- package/components/Tabs/Tabs.mjs.map +1 -1
- package/components/Tabs/style.js +1 -1
- package/components/Tabs/style.js.map +1 -1
- package/components/Tabs/style.mjs +1 -1
- package/components/Tabs/style.mjs.map +1 -1
- package/components/Tag/Tag.js +1 -1
- package/components/Tag/Tag.js.map +1 -1
- package/components/Tag/Tag.mjs +1 -1
- package/components/Tag/Tag.mjs.map +1 -1
- package/components/Tag/style.js +1 -1
- package/components/Tag/style.js.map +1 -1
- package/components/Tag/style.mjs +1 -1
- package/components/Tag/style.mjs.map +1 -1
- package/components/Text/Ellipsis.js +1 -1
- package/components/Text/Ellipsis.js.map +1 -1
- package/components/Text/Ellipsis.mjs +1 -1
- package/components/Text/Ellipsis.mjs.map +1 -1
- package/components/Text/Text.js.map +1 -1
- package/components/Text/Text.mjs.map +1 -1
- package/components/Text/style.js.map +1 -1
- package/components/Text/style.mjs.map +1 -1
- package/components/Text.Ellipse/Text.Ellipse.js +1 -1
- package/components/Text.Ellipse/Text.Ellipse.js.map +1 -1
- package/components/Text.Ellipse/Text.Ellipse.mjs +1 -1
- package/components/Text.Ellipse/Text.Ellipse.mjs.map +1 -1
- package/components/Textarea/Textarea.js +1 -1
- package/components/Textarea/Textarea.js.map +1 -1
- package/components/Textarea/Textarea.mjs +1 -1
- package/components/Textarea/Textarea.mjs.map +1 -1
- package/components/Tooltip/Tooltip.js.map +1 -1
- package/components/Tooltip/Tooltip.mjs.map +1 -1
- package/components/Tooltip/TooltipWrapper.js.map +1 -1
- package/components/Tooltip/TooltipWrapper.mjs.map +1 -1
- package/components/TooltipComponent/TooltipComponent.js +1 -1
- package/components/TooltipComponent/TooltipComponent.js.map +1 -1
- package/components/TooltipComponent/TooltipComponent.mjs +1 -1
- package/components/TooltipComponent/TooltipComponent.mjs.map +1 -1
- package/dts/index.d.ts +2630 -2557
- package/hocs/withMergedProps.js.map +1 -1
- package/hocs/withMergedProps.mjs.map +1 -1
- package/hocs/withTranslation.js +1 -1
- package/hocs/withTranslation.js.map +1 -1
- package/hocs/withTranslation.mjs +1 -1
- package/hocs/withTranslation.mjs.map +1 -1
- package/hooks/use-config-priority.js.map +1 -1
- package/hooks/use-config-priority.mjs +1 -1
- package/hooks/use-config-priority.mjs.map +1 -1
- package/hooks/useClickOutside.js.map +1 -1
- package/hooks/useClickOutside.mjs.map +1 -1
- package/hooks/useMergedPalette.js +1 -1
- package/hooks/useMergedPalette.js.map +1 -1
- package/hooks/useMergedPalette.mjs +1 -1
- package/hooks/useMergedPalette.mjs.map +1 -1
- package/hooks/useMergedProps.js.map +1 -1
- package/hooks/useMergedProps.mjs.map +1 -1
- package/hooks/useMergedSizes.js.map +1 -1
- package/hooks/useMergedSizes.mjs.map +1 -1
- package/hooks/useResizeObserver.js.map +1 -1
- package/hooks/useResizeObserver.mjs.map +1 -1
- package/hooks/useScrollMonitor.js +1 -1
- package/hooks/useScrollMonitor.js.map +1 -1
- package/hooks/useScrollMonitor.mjs +1 -1
- package/hooks/useScrollMonitor.mjs.map +1 -1
- package/hooks/useScrollThresholds.js.map +1 -1
- package/hooks/useScrollThresholds.mjs.map +1 -1
- package/mixins/color.js.map +1 -1
- package/mixins/color.mjs.map +1 -1
- package/mixins/create-responsive-props.js.map +1 -1
- package/mixins/create-responsive-props.mjs.map +1 -1
- package/mixins/display.js.map +1 -1
- package/mixins/display.mjs.map +1 -1
- package/mixins/responsive-margin.js.map +1 -1
- package/mixins/responsive-margin.mjs.map +1 -1
- package/mixins/responsive-property.js +1 -1
- package/mixins/responsive-property.js.map +1 -1
- package/mixins/responsive-property.mjs +1 -1
- package/mixins/responsive-property.mjs.map +1 -1
- package/mixins/screen.js +1 -1
- package/mixins/screen.js.map +1 -1
- package/mixins/screen.mjs +1 -1
- package/mixins/screen.mjs.map +1 -1
- package/mixins/shared.js +4 -4
- package/mixins/shared.js.map +1 -1
- package/mixins/shared.mjs +4 -4
- package/mixins/shared.mjs.map +1 -1
- package/mixins/vAlign.js.map +1 -1
- package/mixins/vAlign.mjs.map +1 -1
- package/package.json +7 -7
- package/shared/enums/sizeInput.js.map +1 -1
- package/shared/enums/sizeInput.mjs.map +1 -1
- package/shared/resize-observer.js.map +1 -1
- package/shared/resize-observer.mjs.map +1 -1
- package/shared/utils/colors.js.map +1 -1
- package/shared/utils/colors.mjs.map +1 -1
- package/shared/utils/dom.js.map +1 -1
- package/shared/utils/dom.mjs.map +1 -1
- package/shared/utils/react.js.map +1 -1
- package/shared/utils/react.mjs.map +1 -1
- package/shared/utils/rel-builder.js +1 -1
- package/shared/utils/rel-builder.js.map +1 -1
- package/shared/utils/rel-builder.mjs +1 -1
- package/shared/utils/rel-builder.mjs.map +1 -1
- package/theme/colors-dark.js.map +1 -1
- package/theme/colors-dark.mjs.map +1 -1
- package/theme/colors-light.js.map +1 -1
- package/theme/colors-light.mjs.map +1 -1
- package/theme/colors.js.map +1 -1
- package/theme/colors.mjs.map +1 -1
- package/theme/global-styled.js.map +1 -1
- package/theme/global-styled.mjs.map +1 -1
- package/theme/theme-provider.js.map +1 -1
- package/theme/theme-provider.mjs.map +1 -1
package/LICENSE
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
Copyright © 2018, OLC Netology group LLC
|
|
2
|
+
All rights reserved.
|
|
3
|
+
|
|
4
|
+
Redistribution and use in source and binary forms, with or without
|
|
5
|
+
modification, are permitted provided that the following conditions are met:
|
|
6
|
+
1. Redistributions of source code must retain the above copyright
|
|
7
|
+
notice, this list of conditions and the following disclaimer.
|
|
8
|
+
2. Redistributions in binary form must reproduce the above copyright
|
|
9
|
+
notice, this list of conditions and the following disclaimer in the
|
|
10
|
+
documentation and/or other materials provided with the distribution.
|
|
11
|
+
3. All advertising materials mentioning features or use of this software
|
|
12
|
+
must display the following acknowledgement:
|
|
13
|
+
This product includes software developed by the "OLC Netology group LLC".
|
|
14
|
+
4. Neither the name of the "OLC Netology group LLC" nor the
|
|
15
|
+
names of its contributors may be used to endorse or promote products
|
|
16
|
+
derived from this software without specific prior written permission.
|
|
17
|
+
|
|
18
|
+
THIS SOFTWARE IS PROVIDED BY "OLC Netology group LLC" ''AS IS'' AND ANY
|
|
19
|
+
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
20
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
21
|
+
DISCLAIMED. IN NO EVENT SHALL "OLC Netology group LLC" BE LIABLE FOR ANY
|
|
22
|
+
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
23
|
+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
24
|
+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
25
|
+
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
26
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
27
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var React=require('react');var withMergedProps=require('../../hocs/withMergedProps.js');var accordion=require('../../shared/context/accordion.js');var constants=require('../../shared/constants.js');var dom=require('../../shared/utils/dom.js');var hooks=require('./hooks.js');var sizes=require('./sizes.js');var style=require('./style.js');var jsxRuntime=require('react/jsx-runtime');var AccordionItem=require('../AccordionItem/AccordionItem.js');var Divider=require('../Divider/Divider.js');const Accordion=Object.assign(withMergedProps.withMergedProps(React.forwardRef(((e,r)=>{const{size:o="m",sizeXXS:i,sizeXS:s,sizeS:t,sizeM:n,sizeL:a,sizeXL:d,children:c,multiple:l,collapsible:u,expanded:
|
|
1
|
+
'use strict';var React=require('react');var withMergedProps=require('../../hocs/withMergedProps.js');var accordion=require('../../shared/context/accordion.js');var constants=require('../../shared/constants.js');var dom=require('../../shared/utils/dom.js');var hooks=require('./hooks.js');var sizes=require('./sizes.js');var style=require('./style.js');var jsxRuntime=require('react/jsx-runtime');var AccordionItem=require('../AccordionItem/AccordionItem.js');var Divider=require('../Divider/Divider.js');const Accordion=Object.assign(withMergedProps.withMergedProps(React.forwardRef(((e,r)=>{const{size:o="m",sizeXXS:i,sizeXS:s,sizeS:t,sizeM:n,sizeL:a,sizeXL:d,children:c,multiple:l,collapsible:u,expanded:m,palette:v,loading:y,disabled:p,embedded:h,defaultExpanded:j,borderRadius:x,primary:z,secondary:A,onExpandedChange:b,...f}=e;const g=React.useMemo((()=>({size:o,sizeXXS:i,sizeXS:s,sizeS:t,sizeM:n,sizeL:a,sizeXL:d})),[o,i,s,t,n,a,d]);const D=hooks.useAccordion({expanded:m,defaultExpanded:j,multiple:l,collapsible:u,onExpandedChange:b});const k=React.useMemo((()=>({...g,palette:v,loading:y,disabled:p,embedded:h,borderRadius:x,primary:z,secondary:A})),[g,v,y,p,h,x,z,A]);return jsxRuntime.jsx(style.Root,{...f,...g,ref:r,onKeyDown:e=>{if(f.onKeyDown&&f.onKeyDown(e),!(document.activeElement instanceof HTMLElement)||document.activeElement.dataset.accordionControl!=='true')return;const r=Array.from(e.currentTarget.querySelectorAll('[data-accordion-control="true"]'));r.length!==0&&(constants.keyboardKeys.Home.validate(e.key)?(e.preventDefault(),r[0].focus()):constants.keyboardKeys.End.validate(e.key)?(e.preventDefault(),r[r.length-1].focus()):(constants.keyboardKeys.ArrowUp.validate(e.key)||constants.keyboardKeys.ArrowDown.validate(e.key))&&(e.preventDefault(),dom.navigateVerticalList(e.key,document.activeElement,r)))},children:jsxRuntime.jsx(accordion.AccordionPanelsContext.Provider,{value:D,children:jsxRuntime.jsx(accordion.AccordionPropsContext.Provider,{value:k,children:c})})})})),{displayName:'Accordion',sizes:sizes.SIZES}),{Item:AccordionItem.AccordionItem,Divider:Divider.Divider});exports.Accordion=Accordion;
|
|
2
2
|
//# sourceMappingURL=Accordion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Accordion.js","sources":["../../../../src/components/Accordion/Accordion.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport { withMergedProps } from 'hocs/withMergedProps'\nimport { AccordionPanelsContext, AccordionPropsContext } from 'shared/context/accordion'\nimport { keyboardKeys } from 'shared/constants'\nimport { navigateVerticalList } from 'shared/utils/dom'\nimport { AccordionItem } from 'components/AccordionItem'\nimport { Divider } from 'components/Divider'\nimport { useAccordion } from './hooks'\nimport { SIZES } from './sizes'\nimport type { AccordionProps } from './types'\nimport * as Styled from './style'\n\nconst COMPONENT_NAME = 'Accordion'\n\n/**\n *\n * Компонент для создания вертикального стека сворачиваемых секций контента.\n *\n * Поддерживается \"ref\" и все нативные атрибуты \\<div\\> элемента.\n *\n * Дизайн соответствует [рекомендациям WAI-ARIA](https://www.w3.org/WAI/ARIA/apg/patterns/accordion/).\n */\nconst Accordion: React.ForwardRefExoticComponent<AccordionProps> & {\n Item: typeof AccordionItem\n Divider: typeof Divider\n} = Object.assign(\n withMergedProps<AccordionProps, HTMLDivElement>(\n forwardRef((props, ref) => {\n const {\n size = 'm',\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n children,\n multiple,\n collapsible,\n expanded,\n palette,\n loading,\n disabled,\n embedded,\n defaultExpanded,\n borderRadius,\n primary,\n secondary,\n onExpandedChange,\n ...restProps\n } = props\n\n const sizeProps =
|
|
1
|
+
{"version":3,"file":"Accordion.js","sources":["../../../../src/components/Accordion/Accordion.tsx"],"sourcesContent":["import { forwardRef, useMemo } from 'react'\nimport { withMergedProps } from 'hocs/withMergedProps'\nimport type { MergedProps } from 'hocs/withMergedProps'\nimport { AccordionPanelsContext, AccordionPropsContext } from 'shared/context/accordion'\nimport { keyboardKeys } from 'shared/constants'\nimport { navigateVerticalList } from 'shared/utils/dom'\nimport { AccordionItem } from 'components/AccordionItem'\nimport { Divider } from 'components/Divider'\nimport { useAccordion } from './hooks'\nimport { SIZES } from './sizes'\nimport type { AccordionProps } from './types'\nimport * as Styled from './style'\n\nconst COMPONENT_NAME = 'Accordion'\n\n/**\n *\n * Компонент для создания вертикального стека сворачиваемых секций контента.\n *\n * Поддерживается \"ref\" и все нативные атрибуты \\<div\\> элемента.\n *\n * Дизайн соответствует [рекомендациям WAI-ARIA](https://www.w3.org/WAI/ARIA/apg/patterns/accordion/).\n */\nconst Accordion: React.ForwardRefExoticComponent<AccordionProps> & {\n Item: typeof AccordionItem\n Divider: typeof Divider\n} = Object.assign(\n withMergedProps<AccordionProps, HTMLDivElement>(\n forwardRef<HTMLDivElement, MergedProps<AccordionProps>>((props, ref) => {\n const {\n size = 'm',\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n children,\n multiple,\n collapsible,\n expanded,\n palette,\n loading,\n disabled,\n embedded,\n defaultExpanded,\n borderRadius,\n primary,\n secondary,\n onExpandedChange,\n ...restProps\n } = props\n\n const sizeProps = useMemo(\n () => ({ size, sizeXXS, sizeXS, sizeS, sizeM, sizeL, sizeXL }),\n [size, sizeXXS, sizeXS, sizeS, sizeM, sizeL, sizeXL]\n )\n\n const panels = useAccordion({\n expanded,\n defaultExpanded,\n multiple,\n collapsible,\n onExpandedChange,\n })\n\n const panelsContextProps = useMemo(\n () => ({\n ...sizeProps,\n palette,\n loading,\n disabled,\n embedded,\n borderRadius,\n primary,\n secondary,\n }),\n [sizeProps, palette, loading, disabled, embedded, borderRadius, primary, secondary]\n )\n\n return (\n <Styled.Root\n {...restProps}\n {...sizeProps}\n ref={ref}\n onKeyDown={(evt) => {\n if (restProps.onKeyDown) {\n restProps.onKeyDown(evt)\n }\n\n if (\n !(document.activeElement instanceof HTMLElement) ||\n document.activeElement.dataset.accordionControl !== 'true'\n ) {\n return\n }\n\n const controls = Array.from(\n evt.currentTarget.querySelectorAll<HTMLElement>('[data-accordion-control=\"true\"]')\n )\n\n if (controls.length === 0) return\n\n if (keyboardKeys.Home.validate(evt.key)) {\n evt.preventDefault()\n controls[0].focus()\n } else if (keyboardKeys.End.validate(evt.key)) {\n evt.preventDefault()\n controls[controls.length - 1].focus()\n } else if (keyboardKeys.ArrowUp.validate(evt.key) || keyboardKeys.ArrowDown.validate(evt.key)) {\n evt.preventDefault()\n navigateVerticalList(evt.key, document.activeElement, controls)\n }\n }}\n >\n <AccordionPanelsContext.Provider value={panels}>\n <AccordionPropsContext.Provider value={panelsContextProps}>{children}</AccordionPropsContext.Provider>\n </AccordionPanelsContext.Provider>\n </Styled.Root>\n )\n }),\n {\n displayName: COMPONENT_NAME,\n sizes: SIZES,\n }\n ),\n {\n Item: AccordionItem,\n Divider,\n }\n)\n\nexport { Accordion }\n"],"names":["Accordion","Object","assign","withMergedProps","forwardRef","props","ref","size","sizeXXS","sizeXS","sizeS","sizeM","sizeL","sizeXL","children","multiple","collapsible","expanded","palette","loading","disabled","embedded","defaultExpanded","borderRadius","primary","secondary","onExpandedChange","restProps","sizeProps","useMemo","panels","useAccordion","panelsContextProps","_jsx","Styled","onKeyDown","evt","document","activeElement","HTMLElement","dataset","accordionControl","controls","Array","from","currentTarget","querySelectorAll","length","keyboardKeys","Home","validate","key","preventDefault","focus","End","ArrowUp","ArrowDown","navigateVerticalList","AccordionPanelsContext","Provider","value","AccordionPropsContext","displayName","sizes","SIZES","Item","AccordionItem","Divider"],"mappings":"wfAuBA,MAAMA,UAGFC,OAAOC,OACTC,gBAAAA,gBACEC,MAAAA,YAAwD,CAACC,EAAOC,KAC9D,MAAMC,KACJA,EAAO,IAAGC,QACVA,EAAOC,OACPA,EAAMC,MACNA,EAAKC,MACLA,EAAKC,MACLA,EAAKC,OACLA,EAAMC,SACNA,EAAQC,SACRA,EAAQC,YACRA,EAAWC,SACXA,EAAQC,QACRA,EAAOC,QACPA,EAAOC,SACPA,EAAQC,SACRA,EAAQC,gBACRA,EAAeC,aACfA,EAAYC,QACZA,EAAOC,UACPA,EAASC,iBACTA,KACGC,GACDtB,EAEJ,MAAMuB,EAAYC,MAAAA,SAChB,KAAO,CAAEtB,OAAMC,UAASC,SAAQC,QAAOC,QAAOC,QAAOC,YACrD,CAACN,EAAMC,EAASC,EAAQC,EAAOC,EAAOC,EAAOC,IAG/C,MAAMiB,EAASC,MAAAA,aAAa,CAC1Bd,WACAK,kBACAP,WACAC,cACAU,qBAGF,MAAMM,EAAqBH,MAAAA,SACzB,KAAO,IACFD,EACHV,UACAC,UACAC,WACAC,WACAE,eACAC,UACAC,eAEF,CAACG,EAAWV,EAASC,EAASC,EAAUC,EAAUE,EAAcC,EAASC,IAG3E,OACEQ,WAAAA,IAACC,MAAAA,KAAW,IACNP,KACAC,EACJtB,IAAKA,EACL6B,UAAYC,IAKV,GAJIT,EAAUQ,WACZR,EAAUQ,UAAUC,KAIlBC,SAASC,yBAAyBC,cACpCF,SAASC,cAAcE,QAAQC,mBAAqB,OAEpD,OAGF,MAAMC,EAAWC,MAAMC,KACrBR,EAAIS,cAAcC,iBAA8B,oCAG9CJ,EAASK,SAAW,IAEpBC,UAAYA,aAACC,KAAKC,SAASd,EAAIe,MACjCf,EAAIgB,iBACJV,EAAS,GAAGW,SACHL,UAAYA,aAACM,IAAIJ,SAASd,EAAIe,MACvCf,EAAIgB,iBACJV,EAASA,EAASK,OAAS,GAAGM,UACrBL,UAAYA,aAACO,QAAQL,SAASd,EAAIe,MAAQH,UAAAA,aAAaQ,UAAUN,SAASd,EAAIe,QACvFf,EAAIgB,iBACJK,IAAoBA,qBAACrB,EAAIe,IAAKd,SAASC,cAAeI,IACxD,EACA5B,SAEFmB,WAAAA,IAACyB,UAAsBA,uBAACC,SAAQ,CAACC,MAAO9B,EAAOhB,SAC7CmB,WAAAA,IAAC4B,UAAqBA,sBAACF,SAAQ,CAACC,MAAO5B,EAAmBlB,SAAEA,OAElD,IAGlB,CACEgD,YA7GiB,YA8GjBC,MAAOC,MAAAA,QAGX,CACEC,KAAMC,cAAaA,cACnBC,QAAAA,QAAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{forwardRef}from'react';import{withMergedProps}from'../../hocs/withMergedProps.mjs';import{AccordionPanelsContext,AccordionPropsContext}from'../../shared/context/accordion.mjs';import{keyboardKeys}from'../../shared/constants.mjs';import{navigateVerticalList}from'../../shared/utils/dom.mjs';import{useAccordion}from'./hooks.mjs';import{SIZES}from'./sizes.mjs';import{Root}from'./style.mjs';import{jsx}from'react/jsx-runtime';import{AccordionItem}from'../AccordionItem/AccordionItem.mjs';import{Divider}from'../Divider/Divider.mjs';const Accordion=Object.assign(withMergedProps(forwardRef(((e,o)=>{const{size:r="m",sizeXXS:t,sizeXS:i,sizeS:d,sizeM:
|
|
1
|
+
import{forwardRef,useMemo}from'react';import{withMergedProps}from'../../hocs/withMergedProps.mjs';import{AccordionPanelsContext,AccordionPropsContext}from'../../shared/context/accordion.mjs';import{keyboardKeys}from'../../shared/constants.mjs';import{navigateVerticalList}from'../../shared/utils/dom.mjs';import{useAccordion}from'./hooks.mjs';import{SIZES}from'./sizes.mjs';import{Root}from'./style.mjs';import{jsx}from'react/jsx-runtime';import{AccordionItem}from'../AccordionItem/AccordionItem.mjs';import{Divider}from'../Divider/Divider.mjs';const Accordion=Object.assign(withMergedProps(forwardRef(((e,o)=>{const{size:r="m",sizeXXS:t,sizeXS:i,sizeS:d,sizeM:s,sizeL:n,sizeXL:a,children:c,multiple:m,collapsible:l,expanded:p,palette:u,loading:f,disabled:y,embedded:v,defaultExpanded:x,borderRadius:A,primary:h,secondary:z,onExpandedChange:j,...b}=e;const g=useMemo((()=>({size:r,sizeXXS:t,sizeXS:i,sizeS:d,sizeM:s,sizeL:n,sizeXL:a})),[r,t,i,d,s,n,a]);const D=useAccordion({expanded:p,defaultExpanded:x,multiple:m,collapsible:l,onExpandedChange:j});const k=useMemo((()=>({...g,palette:u,loading:f,disabled:y,embedded:v,borderRadius:A,primary:h,secondary:z})),[g,u,f,y,v,A,h,z]);return jsx(Root,{...b,...g,ref:o,onKeyDown:e=>{if(b.onKeyDown&&b.onKeyDown(e),!(document.activeElement instanceof HTMLElement)||document.activeElement.dataset.accordionControl!=='true')return;const o=Array.from(e.currentTarget.querySelectorAll('[data-accordion-control="true"]'));o.length!==0&&(keyboardKeys.Home.validate(e.key)?(e.preventDefault(),o[0].focus()):keyboardKeys.End.validate(e.key)?(e.preventDefault(),o[o.length-1].focus()):(keyboardKeys.ArrowUp.validate(e.key)||keyboardKeys.ArrowDown.validate(e.key))&&(e.preventDefault(),navigateVerticalList(e.key,document.activeElement,o)))},children:jsx(AccordionPanelsContext.Provider,{value:D,children:jsx(AccordionPropsContext.Provider,{value:k,children:c})})})})),{displayName:'Accordion',sizes:SIZES}),{Item:AccordionItem,Divider});export{Accordion};
|
|
2
2
|
//# sourceMappingURL=Accordion.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Accordion.mjs","sources":["../../../../src/components/Accordion/Accordion.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport { withMergedProps } from 'hocs/withMergedProps'\nimport { AccordionPanelsContext, AccordionPropsContext } from 'shared/context/accordion'\nimport { keyboardKeys } from 'shared/constants'\nimport { navigateVerticalList } from 'shared/utils/dom'\nimport { AccordionItem } from 'components/AccordionItem'\nimport { Divider } from 'components/Divider'\nimport { useAccordion } from './hooks'\nimport { SIZES } from './sizes'\nimport type { AccordionProps } from './types'\nimport * as Styled from './style'\n\nconst COMPONENT_NAME = 'Accordion'\n\n/**\n *\n * Компонент для создания вертикального стека сворачиваемых секций контента.\n *\n * Поддерживается \"ref\" и все нативные атрибуты \\<div\\> элемента.\n *\n * Дизайн соответствует [рекомендациям WAI-ARIA](https://www.w3.org/WAI/ARIA/apg/patterns/accordion/).\n */\nconst Accordion: React.ForwardRefExoticComponent<AccordionProps> & {\n Item: typeof AccordionItem\n Divider: typeof Divider\n} = Object.assign(\n withMergedProps<AccordionProps, HTMLDivElement>(\n forwardRef((props, ref) => {\n const {\n size = 'm',\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n children,\n multiple,\n collapsible,\n expanded,\n palette,\n loading,\n disabled,\n embedded,\n defaultExpanded,\n borderRadius,\n primary,\n secondary,\n onExpandedChange,\n ...restProps\n } = props\n\n const sizeProps =
|
|
1
|
+
{"version":3,"file":"Accordion.mjs","sources":["../../../../src/components/Accordion/Accordion.tsx"],"sourcesContent":["import { forwardRef, useMemo } from 'react'\nimport { withMergedProps } from 'hocs/withMergedProps'\nimport type { MergedProps } from 'hocs/withMergedProps'\nimport { AccordionPanelsContext, AccordionPropsContext } from 'shared/context/accordion'\nimport { keyboardKeys } from 'shared/constants'\nimport { navigateVerticalList } from 'shared/utils/dom'\nimport { AccordionItem } from 'components/AccordionItem'\nimport { Divider } from 'components/Divider'\nimport { useAccordion } from './hooks'\nimport { SIZES } from './sizes'\nimport type { AccordionProps } from './types'\nimport * as Styled from './style'\n\nconst COMPONENT_NAME = 'Accordion'\n\n/**\n *\n * Компонент для создания вертикального стека сворачиваемых секций контента.\n *\n * Поддерживается \"ref\" и все нативные атрибуты \\<div\\> элемента.\n *\n * Дизайн соответствует [рекомендациям WAI-ARIA](https://www.w3.org/WAI/ARIA/apg/patterns/accordion/).\n */\nconst Accordion: React.ForwardRefExoticComponent<AccordionProps> & {\n Item: typeof AccordionItem\n Divider: typeof Divider\n} = Object.assign(\n withMergedProps<AccordionProps, HTMLDivElement>(\n forwardRef<HTMLDivElement, MergedProps<AccordionProps>>((props, ref) => {\n const {\n size = 'm',\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n children,\n multiple,\n collapsible,\n expanded,\n palette,\n loading,\n disabled,\n embedded,\n defaultExpanded,\n borderRadius,\n primary,\n secondary,\n onExpandedChange,\n ...restProps\n } = props\n\n const sizeProps = useMemo(\n () => ({ size, sizeXXS, sizeXS, sizeS, sizeM, sizeL, sizeXL }),\n [size, sizeXXS, sizeXS, sizeS, sizeM, sizeL, sizeXL]\n )\n\n const panels = useAccordion({\n expanded,\n defaultExpanded,\n multiple,\n collapsible,\n onExpandedChange,\n })\n\n const panelsContextProps = useMemo(\n () => ({\n ...sizeProps,\n palette,\n loading,\n disabled,\n embedded,\n borderRadius,\n primary,\n secondary,\n }),\n [sizeProps, palette, loading, disabled, embedded, borderRadius, primary, secondary]\n )\n\n return (\n <Styled.Root\n {...restProps}\n {...sizeProps}\n ref={ref}\n onKeyDown={(evt) => {\n if (restProps.onKeyDown) {\n restProps.onKeyDown(evt)\n }\n\n if (\n !(document.activeElement instanceof HTMLElement) ||\n document.activeElement.dataset.accordionControl !== 'true'\n ) {\n return\n }\n\n const controls = Array.from(\n evt.currentTarget.querySelectorAll<HTMLElement>('[data-accordion-control=\"true\"]')\n )\n\n if (controls.length === 0) return\n\n if (keyboardKeys.Home.validate(evt.key)) {\n evt.preventDefault()\n controls[0].focus()\n } else if (keyboardKeys.End.validate(evt.key)) {\n evt.preventDefault()\n controls[controls.length - 1].focus()\n } else if (keyboardKeys.ArrowUp.validate(evt.key) || keyboardKeys.ArrowDown.validate(evt.key)) {\n evt.preventDefault()\n navigateVerticalList(evt.key, document.activeElement, controls)\n }\n }}\n >\n <AccordionPanelsContext.Provider value={panels}>\n <AccordionPropsContext.Provider value={panelsContextProps}>{children}</AccordionPropsContext.Provider>\n </AccordionPanelsContext.Provider>\n </Styled.Root>\n )\n }),\n {\n displayName: COMPONENT_NAME,\n sizes: SIZES,\n }\n ),\n {\n Item: AccordionItem,\n Divider,\n }\n)\n\nexport { Accordion }\n"],"names":["Accordion","Object","assign","withMergedProps","forwardRef","props","ref","size","sizeXXS","sizeXS","sizeS","sizeM","sizeL","sizeXL","children","multiple","collapsible","expanded","palette","loading","disabled","embedded","defaultExpanded","borderRadius","primary","secondary","onExpandedChange","restProps","sizeProps","useMemo","panels","useAccordion","panelsContextProps","_jsx","Styled","onKeyDown","evt","document","activeElement","HTMLElement","dataset","accordionControl","controls","Array","from","currentTarget","querySelectorAll","length","keyboardKeys","Home","validate","key","preventDefault","focus","End","ArrowUp","ArrowDown","navigateVerticalList","AccordionPanelsContext","Provider","value","AccordionPropsContext","displayName","sizes","SIZES","Item","AccordionItem","Divider"],"mappings":"iiBAuBA,MAAMA,UAGFC,OAAOC,OACTC,gBACEC,YAAwD,CAACC,EAAOC,KAC9D,MAAMC,KACJA,EAAO,IAAGC,QACVA,EAAOC,OACPA,EAAMC,MACNA,EAAKC,MACLA,EAAKC,MACLA,EAAKC,OACLA,EAAMC,SACNA,EAAQC,SACRA,EAAQC,YACRA,EAAWC,SACXA,EAAQC,QACRA,EAAOC,QACPA,EAAOC,SACPA,EAAQC,SACRA,EAAQC,gBACRA,EAAeC,aACfA,EAAYC,QACZA,EAAOC,UACPA,EAASC,iBACTA,KACGC,GACDtB,EAEJ,MAAMuB,EAAYC,SAChB,KAAO,CAAEtB,OAAMC,UAASC,SAAQC,QAAOC,QAAOC,QAAOC,YACrD,CAACN,EAAMC,EAASC,EAAQC,EAAOC,EAAOC,EAAOC,IAG/C,MAAMiB,EAASC,aAAa,CAC1Bd,WACAK,kBACAP,WACAC,cACAU,qBAGF,MAAMM,EAAqBH,SACzB,KAAO,IACFD,EACHV,UACAC,UACAC,WACAC,WACAE,eACAC,UACAC,eAEF,CAACG,EAAWV,EAASC,EAASC,EAAUC,EAAUE,EAAcC,EAASC,IAG3E,OACEQ,IAACC,KAAW,IACNP,KACAC,EACJtB,IAAKA,EACL6B,UAAYC,IAKV,GAJIT,EAAUQ,WACZR,EAAUQ,UAAUC,KAIlBC,SAASC,yBAAyBC,cACpCF,SAASC,cAAcE,QAAQC,mBAAqB,OAEpD,OAGF,MAAMC,EAAWC,MAAMC,KACrBR,EAAIS,cAAcC,iBAA8B,oCAG9CJ,EAASK,SAAW,IAEpBC,aAAaC,KAAKC,SAASd,EAAIe,MACjCf,EAAIgB,iBACJV,EAAS,GAAGW,SACHL,aAAaM,IAAIJ,SAASd,EAAIe,MACvCf,EAAIgB,iBACJV,EAASA,EAASK,OAAS,GAAGM,UACrBL,aAAaO,QAAQL,SAASd,EAAIe,MAAQH,aAAaQ,UAAUN,SAASd,EAAIe,QACvFf,EAAIgB,iBACJK,qBAAqBrB,EAAIe,IAAKd,SAASC,cAAeI,IACxD,EACA5B,SAEFmB,IAACyB,uBAAuBC,SAAQ,CAACC,MAAO9B,EAAOhB,SAC7CmB,IAAC4B,sBAAsBF,SAAQ,CAACC,MAAO5B,EAAmBlB,SAAEA,OAElD,IAGlB,CACEgD,YA7GiB,YA8GjBC,MAAOC,QAGX,CACEC,KAAMC,cACNC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var React=require('react');exports.useAccordion=({defaultExpanded:e=[],expanded:t,multiple:a,collapsible:n,onExpandedChange:d})=>{const[o,
|
|
1
|
+
'use strict';var React=require('react');exports.useAccordion=({defaultExpanded:e=[],expanded:t,multiple:a,collapsible:n,onExpandedChange:d})=>{const[o,c]=React.useState((()=>{const n=t??e;return!a&&n.length>1?[n[0]]:n}));return React.useLayoutEffect((()=>{t!==void 0&&c(t)}),[t]),React.useMemo((()=>({expandedPanels:o,updatePanels:(e,r)=>{if(r){const n=a?[...o,e]:[e];return t===void 0&&c(n),void(d&&d(n))}if(n){const n=a?o.filter((t=>t!==e)):[];t===void 0&&c(n),d&&d(n)}}})),[o,t,n,a,d])};
|
|
2
2
|
//# sourceMappingURL=hooks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../../../../src/components/Accordion/hooks.ts"],"sourcesContent":["import { useState, useLayoutEffect } from 'react'\nimport type { AccordionProps } from './types'\n\nexport const useAccordion = ({\n defaultExpanded = [],\n expanded,\n multiple,\n collapsible,\n onExpandedChange,\n}: Pick<AccordionProps, 'expanded' | 'defaultExpanded' | 'multiple' | 'collapsible' | 'onExpandedChange'>): {\n expandedPanels: string[]\n updatePanels: (panelId: string, panelExpanded: boolean) => void\n} => {\n const [expandedPanels, setExpandedPanels] = useState<string[]>(() => {\n const panels = expanded ?? defaultExpanded\n\n return !multiple && panels.length > 1 ? [panels[0]] : panels\n })\n\n useLayoutEffect(() => {\n if (expanded !== undefined) {\n setExpandedPanels(expanded)\n }\n }, [expanded])\n\n return {\n
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../../../src/components/Accordion/hooks.ts"],"sourcesContent":["import { useState, useLayoutEffect, useMemo } from 'react'\nimport type { AccordionProps } from './types'\n\nexport const useAccordion = ({\n defaultExpanded = [],\n expanded,\n multiple,\n collapsible,\n onExpandedChange,\n}: Pick<AccordionProps, 'expanded' | 'defaultExpanded' | 'multiple' | 'collapsible' | 'onExpandedChange'>): {\n expandedPanels: string[]\n updatePanels: (panelId: string, panelExpanded: boolean) => void\n} => {\n const [expandedPanels, setExpandedPanels] = useState<string[]>(() => {\n const panels = expanded ?? defaultExpanded\n\n return !multiple && panels.length > 1 ? [panels[0]] : panels\n })\n\n useLayoutEffect(() => {\n if (expanded !== undefined) {\n setExpandedPanels(expanded)\n }\n }, [expanded])\n\n return useMemo(\n () => ({\n expandedPanels,\n updatePanels: (panelId, panelExpanded) => {\n if (panelExpanded) {\n const update = multiple ? [...expandedPanels, panelId] : [panelId]\n\n if (expanded === undefined) setExpandedPanels(update)\n if (onExpandedChange) onExpandedChange(update)\n\n return\n }\n\n if (collapsible) {\n const update = multiple ? expandedPanels.filter((id) => id !== panelId) : []\n\n if (expanded === undefined) setExpandedPanels(update)\n if (onExpandedChange) onExpandedChange(update)\n }\n },\n }),\n [expandedPanels, expanded, collapsible, multiple, onExpandedChange]\n )\n}\n"],"names":["useAccordion","defaultExpanded","expanded","multiple","collapsible","onExpandedChange","expandedPanels","setExpandedPanels","useState","panels","length","useLayoutEffect","undefined","useMemo","updatePanels","panelId","panelExpanded","update","filter","id"],"mappings":"6DAG4BA,EAC1BC,kBAAkB,GAClBC,WACAC,WACAC,cACAC,uBAKA,MAAOC,EAAgBC,GAAqBC,MAAQA,UAAW,KAC7D,MAAMC,EAASP,GAAYD,EAE3B,OAAQE,GAAYM,EAAOC,OAAS,EAAI,CAACD,EAAO,IAAMA,CAAM,IAS9D,OANAE,MAAAA,iBAAgB,KACVT,SAAaU,GACfL,EAAkBL,EACpB,GACC,CAACA,IAEGW,MAAOA,SACZ,KAAO,CACLP,iBACAQ,aAAcA,CAACC,EAASC,KACtB,GAAIA,EAAe,CACjB,MAAMC,EAASd,EAAW,IAAIG,EAAgBS,GAAW,CAACA,GAK1D,OAHIb,SAAaU,GAAWL,EAAkBU,QAC1CZ,GAAkBA,EAAiBY,GAGzC,CAEA,GAAIb,EAAa,CACf,MAAMa,EAASd,EAAWG,EAAeY,QAAQC,GAAOA,IAAOJ,IAAW,GAEtEb,SAAaU,GAAWL,EAAkBU,GAC1CZ,GAAkBA,EAAiBY,EACzC,MAGJ,CAACX,EAAgBJ,EAAUE,EAAaD,EAAUE,GACnD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useState,useLayoutEffect}from'react';const useAccordion=({defaultExpanded:e=[],expanded:t,multiple:o,collapsible:n,onExpandedChange:d})=>{const[
|
|
1
|
+
import{useState,useLayoutEffect,useMemo}from'react';const useAccordion=({defaultExpanded:e=[],expanded:t,multiple:o,collapsible:n,onExpandedChange:d})=>{const[s,u]=useState((()=>{const n=t??e;return!o&&n.length>1?[n[0]]:n}));return useLayoutEffect((()=>{t!==void 0&&u(t)}),[t]),useMemo((()=>({expandedPanels:s,updatePanels:(e,a)=>{if(a){const n=o?[...s,e]:[e];return t===void 0&&u(n),void(d&&d(n))}if(n){const n=o?s.filter((t=>t!==e)):[];t===void 0&&u(n),d&&d(n)}}})),[s,t,n,o,d])};export{useAccordion};
|
|
2
2
|
//# sourceMappingURL=hooks.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.mjs","sources":["../../../../src/components/Accordion/hooks.ts"],"sourcesContent":["import { useState, useLayoutEffect } from 'react'\nimport type { AccordionProps } from './types'\n\nexport const useAccordion = ({\n defaultExpanded = [],\n expanded,\n multiple,\n collapsible,\n onExpandedChange,\n}: Pick<AccordionProps, 'expanded' | 'defaultExpanded' | 'multiple' | 'collapsible' | 'onExpandedChange'>): {\n expandedPanels: string[]\n updatePanels: (panelId: string, panelExpanded: boolean) => void\n} => {\n const [expandedPanels, setExpandedPanels] = useState<string[]>(() => {\n const panels = expanded ?? defaultExpanded\n\n return !multiple && panels.length > 1 ? [panels[0]] : panels\n })\n\n useLayoutEffect(() => {\n if (expanded !== undefined) {\n setExpandedPanels(expanded)\n }\n }, [expanded])\n\n return {\n
|
|
1
|
+
{"version":3,"file":"hooks.mjs","sources":["../../../../src/components/Accordion/hooks.ts"],"sourcesContent":["import { useState, useLayoutEffect, useMemo } from 'react'\nimport type { AccordionProps } from './types'\n\nexport const useAccordion = ({\n defaultExpanded = [],\n expanded,\n multiple,\n collapsible,\n onExpandedChange,\n}: Pick<AccordionProps, 'expanded' | 'defaultExpanded' | 'multiple' | 'collapsible' | 'onExpandedChange'>): {\n expandedPanels: string[]\n updatePanels: (panelId: string, panelExpanded: boolean) => void\n} => {\n const [expandedPanels, setExpandedPanels] = useState<string[]>(() => {\n const panels = expanded ?? defaultExpanded\n\n return !multiple && panels.length > 1 ? [panels[0]] : panels\n })\n\n useLayoutEffect(() => {\n if (expanded !== undefined) {\n setExpandedPanels(expanded)\n }\n }, [expanded])\n\n return useMemo(\n () => ({\n expandedPanels,\n updatePanels: (panelId, panelExpanded) => {\n if (panelExpanded) {\n const update = multiple ? [...expandedPanels, panelId] : [panelId]\n\n if (expanded === undefined) setExpandedPanels(update)\n if (onExpandedChange) onExpandedChange(update)\n\n return\n }\n\n if (collapsible) {\n const update = multiple ? expandedPanels.filter((id) => id !== panelId) : []\n\n if (expanded === undefined) setExpandedPanels(update)\n if (onExpandedChange) onExpandedChange(update)\n }\n },\n }),\n [expandedPanels, expanded, collapsible, multiple, onExpandedChange]\n )\n}\n"],"names":["useAccordion","defaultExpanded","expanded","multiple","collapsible","onExpandedChange","expandedPanels","setExpandedPanels","useState","panels","length","useLayoutEffect","undefined","useMemo","updatePanels","panelId","panelExpanded","update","filter","id"],"mappings":"oDAGO,MAAMA,aAAeA,EAC1BC,kBAAkB,GAClBC,WACAC,WACAC,cACAC,uBAKA,MAAOC,EAAgBC,GAAqBC,UAAmB,KAC7D,MAAMC,EAASP,GAAYD,EAE3B,OAAQE,GAAYM,EAAOC,OAAS,EAAI,CAACD,EAAO,IAAMA,CAAM,IAS9D,OANAE,iBAAgB,KACVT,SAAaU,GACfL,EAAkBL,EACpB,GACC,CAACA,IAEGW,SACL,KAAO,CACLP,iBACAQ,aAAcA,CAACC,EAASC,KACtB,GAAIA,EAAe,CACjB,MAAMC,EAASd,EAAW,IAAIG,EAAgBS,GAAW,CAACA,GAK1D,OAHIb,SAAaU,GAAWL,EAAkBU,QAC1CZ,GAAkBA,EAAiBY,GAGzC,CAEA,GAAIb,EAAa,CACf,MAAMa,EAASd,EAAWG,EAAeY,QAAQC,GAAOA,IAAOJ,IAAW,GAEtEb,SAAaU,GAAWL,EAAkBU,GAC1CZ,GAAkBA,EAAiBY,EACzC,MAGJ,CAACX,EAAgBJ,EAAUE,EAAaD,EAAUE,GACnD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var React=require('react');var nanoid=require('nanoid');var withMergedProps=require('../../hocs/withMergedProps.js');var hooks=require('./hooks.js');var sizes=require('./sizes.js');var style=require('./style.js');var jsxRuntime=require('react/jsx-runtime');var Skeleton=require('../Skeleton/Skeleton.js');var Text=require('../Text/Text.js');var Icon=require('../Icon/Icon.js');const AccordionItem=withMergedProps.withMergedProps(React.forwardRef(((e,s)=>{const{size:i="m",defaultExpanded:n=!1,headingAs:t="h3",borderRadius:o=0,sizeXXS:a,sizeXS:r,sizeS:d,sizeM:l,sizeL:c,sizeXL:x,id:u,header:j,addon:E,content:p,title:m,subtitle:R,icon:S,panel:h,children:z,loading:y,disabled:I,expanded:b,embedded:D,onExpandedChange:T,...f}=hooks.useAccordionPanelProps(e);const k={size:i,sizeXXS:a,sizeXS:r,sizeS:d,sizeM:l,sizeL:c,sizeXL:x};const g={...k,preset:'brand',name:'chevronDown',sizes:sizes.SIZES_ICON};const A={...k,as:'span',appearance:'subheading-compact',wordBreak:'break-word',color:'inherit',sizes:sizes.SIZES_TITLE};const P={...k,as:'span',appearance:'body',wordBreak:'break-word',color:'inherit',sizes:sizes.SIZES_SUBTITLE};const{panelExpanded:_,setPanelExpanded:w}=hooks.useAccordionPanel({id:u,expanded:b,defaultExpanded:n,onExpandedChange:T});const[v,M]=React.useState(_);const Z=React.useMemo((()=>nanoid.nanoid()),[]);const L=React.useMemo((()=>nanoid.nanoid()),[]);return React.useLayoutEffect((()=>{_&&M(!0)}),[_]),jsxRuntime.jsxs(style.Root,{...f,...k,id:u,disabled:I,loading:y,expanded:_,borderRadius:o,"data-accordion-item":!0,ref:s,children:[jsxRuntime.jsx(style.Heading,{as:t,onClick:()=>{I||w(!_)},children:jsxRuntime.jsx(style.Button,{id:Z,type:"button","data-accordion-control":!0,"aria-controls":L,"aria-expanded":v,"aria-disabled":v&&(I||b!==void 0&&!T),disabled:I,onClick:e=>{e.stopPropagation(),w(!_)},children:y?jsxRuntime.jsx(style.Header,{...k,sizes:D?sizes.SIZES_HEADER_EMBEDDED:sizes.SIZES_HEADER,children:jsxRuntime.jsx(style.Content,{children:jsxRuntime.jsx(Skeleton.Skeleton,{as:"span",borderRadius:4,width:"90%","data-accordion-skeleton":!0,children:jsxRuntime.jsx(Text.Text,{...A})})})}):React.isValidElement(j)?j:typeof j=='function'?j({titleProps:A,subtitleProps:P,iconProps:g}):jsxRuntime.jsxs(style.Header,{...k,sizes:D?sizes.SIZES_HEADER_EMBEDDED:sizes.SIZES_HEADER,children:[E,jsxRuntime.jsx(style.Content,{children:React.isValidElement(p)?p:typeof p=='function'?p({titleProps:A,subtitleProps:P}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[React.isValidElement(m)?m:typeof m=='function'?m(A):typeof m=='string'||typeof m=='number'?jsxRuntime.jsx(Text.Text,{...A,children:m}):null,React.isValidElement(R)?R:typeof R=='function'?R(P):typeof R=='string'||typeof R=='number'?jsxRuntime.jsx(Text.Text,{...P,children:R}):null]})}),jsxRuntime.jsx(style.IconAnimation,{up:_,children:React.isValidElement(S)?S:typeof S=='function'?S(g):jsxRuntime.jsx(Icon.Icon,{...g})})]})})}),jsxRuntime.jsx(style.Panel,{id:L,role:"region","aria-labelledby":Z,hidden:!v,onTransitionEnd:e=>{e.propertyName!=='opacity'||_||M(!1)},children:y?jsxRuntime.jsxs(style.Details,{...k,sizes:D?sizes.SIZES_DETAILS_EMBEDDED:sizes.SIZES_DETAILS,children:[jsxRuntime.jsx(Skeleton.Skeleton,{as:"span",borderRadius:4,width:"100%",marginBottom:"0.4em",children:jsxRuntime.jsx(Text.Text,{...P})}),jsxRuntime.jsx(Skeleton.Skeleton,{as:"span",borderRadius:4,width:"70%",children:jsxRuntime.jsx(Text.Text,{...P})})]}):React.isValidElement(h)?h:jsxRuntime.jsx(style.Details,{...k,sizes:D?sizes.SIZES_DETAILS_EMBEDDED:sizes.SIZES_DETAILS,children:z})})]})})),{displayName:'AccordionItem',sizes:sizes.SIZES});exports.AccordionItem=AccordionItem;
|
|
1
|
+
'use strict';var React=require('react');var nanoid=require('nanoid');var withMergedProps=require('../../hocs/withMergedProps.js');var hooks=require('./hooks.js');var sizes=require('./sizes.js');var style=require('./style.js');var jsxRuntime=require('react/jsx-runtime');var Skeleton=require('../Skeleton/Skeleton.js');var Text=require('../Text/Text.js');var Icon=require('../Icon/Icon.js');const AccordionItem=withMergedProps.withMergedProps(React.forwardRef(((e,s)=>{const{size:i="m",defaultExpanded:n=!1,headingAs:t="h3",borderRadius:o=0,sizeXXS:a,sizeXS:r,sizeS:d,sizeM:l,sizeL:c,sizeXL:x,id:u,header:j,addon:E,content:p,title:m,subtitle:R,icon:S,panel:h,children:z,loading:y,disabled:I,expanded:b,embedded:D,onExpandedChange:T,...f}=hooks.useAccordionPanelProps(e);const k={size:i,sizeXXS:a,sizeXS:r,sizeS:d,sizeM:l,sizeL:c,sizeXL:x};const g={...k,preset:'brand',name:'chevronDown',sizes:sizes.SIZES_ICON};const A={...k,as:'span',appearance:'subheading-compact',wordBreak:'break-word',color:'inherit',sizes:sizes.SIZES_TITLE};const P={...k,as:'span',appearance:'body',wordBreak:'break-word',color:'inherit',sizes:sizes.SIZES_SUBTITLE};const{panelExpanded:_,setPanelExpanded:w}=hooks.useAccordionPanel({id:u,expanded:b,defaultExpanded:n,onExpandedChange:T});const[v,M]=React.useState(_);const Z=React.useMemo((()=>nanoid.nanoid()),[]);const L=React.useMemo((()=>nanoid.nanoid()),[]);return React.useLayoutEffect((()=>{_&&M(!0)}),[_]),jsxRuntime.jsxs(style.Root,{...f,...k,id:u,disabled:I,loading:y,expanded:_,borderRadius:o,"data-accordion-item":!0,ref:s,children:[jsxRuntime.jsx(style.Heading,{as:t,onClick:()=>{I||w(!_)},children:jsxRuntime.jsx(style.Button,{id:Z,type:"button","data-accordion-control":!0,"aria-controls":L,"aria-expanded":v,"aria-disabled":Boolean(v&&(I||b!==void 0&&!T)),disabled:I,onClick:e=>{e.stopPropagation(),w(!_)},children:y?jsxRuntime.jsx(style.Header,{...k,sizes:D?sizes.SIZES_HEADER_EMBEDDED:sizes.SIZES_HEADER,children:jsxRuntime.jsx(style.Content,{children:jsxRuntime.jsx(Skeleton.Skeleton,{as:"span",borderRadius:4,width:"90%","data-accordion-skeleton":!0,children:jsxRuntime.jsx(Text.Text,{...A})})})}):React.isValidElement(j)?j:typeof j=='function'?j({titleProps:A,subtitleProps:P,iconProps:g}):jsxRuntime.jsxs(style.Header,{...k,sizes:D?sizes.SIZES_HEADER_EMBEDDED:sizes.SIZES_HEADER,children:[E,jsxRuntime.jsx(style.Content,{children:React.isValidElement(p)?p:typeof p=='function'?p({titleProps:A,subtitleProps:P}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[React.isValidElement(m)?m:typeof m=='function'?m(A):typeof m=='string'||typeof m=='number'?jsxRuntime.jsx(Text.Text,{...A,children:m}):null,React.isValidElement(R)?R:typeof R=='function'?R(P):typeof R=='string'||typeof R=='number'?jsxRuntime.jsx(Text.Text,{...P,children:R}):null]})}),jsxRuntime.jsx(style.IconAnimation,{up:_,children:React.isValidElement(S)?S:typeof S=='function'?S(g):jsxRuntime.jsx(Icon.Icon,{...g})})]})})}),jsxRuntime.jsx(style.Panel,{id:L,role:"region","aria-labelledby":Z,hidden:!v,onTransitionEnd:e=>{e.propertyName!=='opacity'||_||M(!1)},children:y?jsxRuntime.jsxs(style.Details,{...k,sizes:D?sizes.SIZES_DETAILS_EMBEDDED:sizes.SIZES_DETAILS,children:[jsxRuntime.jsx(Skeleton.Skeleton,{as:"span",borderRadius:4,width:"100%",marginBottom:"0.4em",children:jsxRuntime.jsx(Text.Text,{...P})}),jsxRuntime.jsx(Skeleton.Skeleton,{as:"span",borderRadius:4,width:"70%",children:jsxRuntime.jsx(Text.Text,{...P})})]}):React.isValidElement(h)?h:jsxRuntime.jsx(style.Details,{...k,sizes:D?sizes.SIZES_DETAILS_EMBEDDED:sizes.SIZES_DETAILS,children:z})})]})})),{displayName:'AccordionItem',sizes:sizes.SIZES});exports.AccordionItem=AccordionItem;
|
|
2
2
|
//# sourceMappingURL=AccordionItem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccordionItem.js","sources":["../../../../src/components/AccordionItem/AccordionItem.tsx"],"sourcesContent":["import { forwardRef, useState, isValidElement, useLayoutEffect, useMemo } from 'react'\nimport { nanoid } from 'nanoid'\nimport { withMergedProps } from 'hocs/withMergedProps'\nimport { Text } from 'components/Text'\nimport { Icon } from 'components/Icon'\nimport { Skeleton } from 'components/Skeleton'\nimport type { IconProps } from 'components/Icon'\nimport type { TextProps } from 'components/Text'\nimport { useAccordionPanel, useAccordionPanelProps } from './hooks'\nimport {\n SIZES,\n SIZES_HEADER,\n SIZES_HEADER_EMBEDDED,\n SIZES_DETAILS,\n SIZES_DETAILS_EMBEDDED,\n SIZES_TITLE,\n SIZES_SUBTITLE,\n SIZES_ICON,\n} from './sizes'\nimport type { AccordionItemProps } from './types'\nimport * as Styled from './style'\n\nconst COMPONENT_NAME = 'AccordionItem'\n\n/**\n *\n * Компонент для создания сворачиваемой секции контента.\n *\n * Поддерживается \"ref\" и все нативные атрибуты \\<section\\> элемента.\n *\n * Дизайн соответствует [рекомендациям WAI-ARIA](https://www.w3.org/WAI/ARIA/apg/patterns/accordion/).\n *\n * @visibleName Accordion.Item\n */\nconst AccordionItem: React.ForwardRefExoticComponent<AccordionItemProps> = withMergedProps<\n AccordionItemProps,\n HTMLElement\n>(\n forwardRef((props, ref) => {\n const {\n size = 'm',\n defaultExpanded = false,\n headingAs = 'h3',\n borderRadius = 0,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n id,\n header,\n addon,\n content,\n title,\n subtitle,\n icon,\n panel,\n children,\n loading,\n disabled,\n expanded,\n embedded,\n onExpandedChange,\n ...restProps\n } = useAccordionPanelProps(props)\n\n const sizeProps = {\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n }\n\n const iconProps: IconProps = {\n ...sizeProps,\n preset: 'brand',\n name: 'chevronDown',\n sizes: SIZES_ICON,\n }\n\n const titleProps: TextProps = {\n ...sizeProps,\n as: 'span',\n appearance: 'subheading-compact',\n wordBreak: 'break-word',\n color: 'inherit',\n sizes: SIZES_TITLE,\n }\n\n const subtitleProps: TextProps = {\n ...sizeProps,\n as: 'span',\n appearance: 'body',\n wordBreak: 'break-word',\n color: 'inherit',\n sizes: SIZES_SUBTITLE,\n }\n\n const { panelExpanded, setPanelExpanded } = useAccordionPanel({\n id,\n expanded,\n defaultExpanded,\n onExpandedChange,\n })\n\n const [panelVisible, setPanelVisible] = useState<boolean>(panelExpanded)\n\n const controlId = useMemo(() => nanoid(), [])\n const panelId = useMemo(() => nanoid(), [])\n\n useLayoutEffect(() => {\n if (panelExpanded) setPanelVisible(true)\n }, [panelExpanded])\n\n return (\n <Styled.Root\n {...restProps}\n {...sizeProps}\n id={id}\n disabled={disabled}\n loading={loading}\n expanded={panelExpanded}\n borderRadius={borderRadius}\n data-accordion-item\n ref={ref}\n >\n <Styled.Heading\n as={headingAs}\n onClick={() => {\n if (!disabled) {\n setPanelExpanded(!panelExpanded)\n }\n }}\n >\n <Styled.Button\n id={controlId}\n type='button'\n data-accordion-control\n aria-controls={panelId}\n aria-expanded={panelVisible}\n aria-disabled={panelVisible && (disabled || (expanded !== undefined && !onExpandedChange))}\n disabled={disabled}\n onClick={(evt) => {\n evt.stopPropagation()\n setPanelExpanded(!panelExpanded)\n }}\n >\n {loading ? (\n <Styled.Header {...sizeProps} sizes={embedded ? SIZES_HEADER_EMBEDDED : SIZES_HEADER}>\n <Styled.Content>\n <Skeleton as='span' borderRadius={4} width='90%' data-accordion-skeleton>\n <Text {...titleProps} />\n </Skeleton>\n </Styled.Content>\n </Styled.Header>\n ) : isValidElement(header) ? (\n header\n ) : typeof header === 'function' ? (\n header({\n titleProps,\n subtitleProps,\n iconProps,\n })\n ) : (\n <Styled.Header {...sizeProps} sizes={embedded ? SIZES_HEADER_EMBEDDED : SIZES_HEADER}>\n {addon}\n <Styled.Content>\n {isValidElement(content) ? (\n content\n ) : typeof content === 'function' ? (\n content({\n titleProps,\n subtitleProps,\n })\n ) : (\n <>\n {isValidElement(title) ? (\n title\n ) : typeof title === 'function' ? (\n title(titleProps)\n ) : typeof title === 'string' || typeof title === 'number' ? (\n <Text {...titleProps}>{title}</Text>\n ) : null}\n {isValidElement(subtitle) ? (\n subtitle\n ) : typeof subtitle === 'function' ? (\n subtitle(subtitleProps)\n ) : typeof subtitle === 'string' || typeof subtitle === 'number' ? (\n <Text {...subtitleProps}>{subtitle}</Text>\n ) : null}\n </>\n )}\n </Styled.Content>\n <Styled.IconAnimation up={panelExpanded}>\n {isValidElement(icon) ? icon : typeof icon === 'function' ? icon(iconProps) : <Icon {...iconProps} />}\n </Styled.IconAnimation>\n </Styled.Header>\n )}\n </Styled.Button>\n </Styled.Heading>\n <Styled.Panel\n id={panelId}\n role='region'\n aria-labelledby={controlId}\n hidden={!panelVisible}\n onTransitionEnd={(evt) => {\n if (evt.propertyName === 'opacity' && !panelExpanded) {\n setPanelVisible(false)\n }\n }}\n >\n {loading ? (\n <Styled.Details {...sizeProps} sizes={embedded ? SIZES_DETAILS_EMBEDDED : SIZES_DETAILS}>\n <Skeleton as='span' borderRadius={4} width='100%' marginBottom='0.4em'>\n <Text {...subtitleProps} />\n </Skeleton>\n <Skeleton as='span' borderRadius={4} width='70%'>\n <Text {...subtitleProps} />\n </Skeleton>\n </Styled.Details>\n ) : isValidElement(panel) ? (\n panel\n ) : (\n <Styled.Details {...sizeProps} sizes={embedded ? SIZES_DETAILS_EMBEDDED : SIZES_DETAILS}>\n {children}\n </Styled.Details>\n )}\n </Styled.Panel>\n </Styled.Root>\n )\n }),\n {\n displayName: COMPONENT_NAME,\n sizes: SIZES,\n }\n)\n\nexport { AccordionItem }\n"],"names":["AccordionItem","withMergedProps","forwardRef","props","ref","size","defaultExpanded","headingAs","borderRadius","sizeXXS","sizeXS","sizeS","sizeM","sizeL","sizeXL","id","header","addon","content","title","subtitle","icon","panel","children","loading","disabled","expanded","embedded","onExpandedChange","restProps","useAccordionPanelProps","sizeProps","iconProps","preset","name","sizes","SIZES_ICON","titleProps","as","appearance","wordBreak","color","SIZES_TITLE","subtitleProps","SIZES_SUBTITLE","panelExpanded","setPanelExpanded","useAccordionPanel","panelVisible","setPanelVisible","useState","controlId","useMemo","nanoid","panelId","useLayoutEffect","_jsxs","Styled","_jsx","jsx","onClick","type","undefined","evt","stopPropagation","SIZES_HEADER_EMBEDDED","SIZES_HEADER","Skeleton","width","Text","isValidElement","jsxs","_Fragment","up","Icon","role","hidden","onTransitionEnd","propertyName","SIZES_DETAILS_EMBEDDED","SIZES_DETAILS","marginBottom","displayName","SIZES"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AccordionItem.js","sources":["../../../../src/components/AccordionItem/AccordionItem.tsx"],"sourcesContent":["import { forwardRef, useState, isValidElement, useLayoutEffect, useMemo } from 'react'\nimport { nanoid } from 'nanoid'\nimport { withMergedProps } from 'hocs/withMergedProps'\nimport { Text } from 'components/Text'\nimport { Icon } from 'components/Icon'\nimport { Skeleton } from 'components/Skeleton'\nimport type { IconProps } from 'components/Icon'\nimport type { TextProps } from 'components/Text'\nimport { useAccordionPanel, useAccordionPanelProps } from './hooks'\nimport {\n SIZES,\n SIZES_HEADER,\n SIZES_HEADER_EMBEDDED,\n SIZES_DETAILS,\n SIZES_DETAILS_EMBEDDED,\n SIZES_TITLE,\n SIZES_SUBTITLE,\n SIZES_ICON,\n} from './sizes'\nimport type { AccordionItemProps } from './types'\nimport * as Styled from './style'\n\nconst COMPONENT_NAME = 'AccordionItem'\n\n/**\n *\n * Компонент для создания сворачиваемой секции контента.\n *\n * Поддерживается \"ref\" и все нативные атрибуты \\<section\\> элемента.\n *\n * Дизайн соответствует [рекомендациям WAI-ARIA](https://www.w3.org/WAI/ARIA/apg/patterns/accordion/).\n *\n * @visibleName Accordion.Item\n */\nconst AccordionItem: React.ForwardRefExoticComponent<AccordionItemProps> = withMergedProps<\n AccordionItemProps,\n HTMLElement\n>(\n forwardRef((props, ref) => {\n const {\n size = 'm',\n defaultExpanded = false,\n headingAs = 'h3',\n borderRadius = 0,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n id,\n header,\n addon,\n content,\n title,\n subtitle,\n icon,\n panel,\n children,\n loading,\n disabled,\n expanded,\n embedded,\n onExpandedChange,\n ...restProps\n } = useAccordionPanelProps(props)\n\n const sizeProps = {\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n }\n\n const iconProps: IconProps = {\n ...sizeProps,\n preset: 'brand',\n name: 'chevronDown',\n sizes: SIZES_ICON,\n }\n\n const titleProps: TextProps = {\n ...sizeProps,\n as: 'span',\n appearance: 'subheading-compact',\n wordBreak: 'break-word',\n color: 'inherit',\n sizes: SIZES_TITLE,\n }\n\n const subtitleProps: TextProps = {\n ...sizeProps,\n as: 'span',\n appearance: 'body',\n wordBreak: 'break-word',\n color: 'inherit',\n sizes: SIZES_SUBTITLE,\n }\n\n const { panelExpanded, setPanelExpanded } = useAccordionPanel({\n id,\n expanded,\n defaultExpanded,\n onExpandedChange,\n })\n\n const [panelVisible, setPanelVisible] = useState<boolean>(panelExpanded)\n\n const controlId = useMemo(() => nanoid(), [])\n const panelId = useMemo(() => nanoid(), [])\n\n useLayoutEffect(() => {\n if (panelExpanded) setPanelVisible(true)\n }, [panelExpanded])\n\n return (\n <Styled.Root\n {...restProps}\n {...sizeProps}\n id={id}\n disabled={disabled}\n loading={loading}\n expanded={panelExpanded}\n borderRadius={borderRadius}\n data-accordion-item\n ref={ref}\n >\n <Styled.Heading\n as={headingAs}\n onClick={() => {\n if (!disabled) {\n setPanelExpanded(!panelExpanded)\n }\n }}\n >\n <Styled.Button\n id={controlId}\n type='button'\n data-accordion-control\n aria-controls={panelId}\n aria-expanded={panelVisible}\n aria-disabled={Boolean(panelVisible && (disabled || (expanded !== undefined && !onExpandedChange)))}\n disabled={disabled}\n onClick={(evt) => {\n evt.stopPropagation()\n setPanelExpanded(!panelExpanded)\n }}\n >\n {loading ? (\n <Styled.Header {...sizeProps} sizes={embedded ? SIZES_HEADER_EMBEDDED : SIZES_HEADER}>\n <Styled.Content>\n <Skeleton as='span' borderRadius={4} width='90%' data-accordion-skeleton>\n <Text {...titleProps} />\n </Skeleton>\n </Styled.Content>\n </Styled.Header>\n ) : isValidElement(header) ? (\n header\n ) : typeof header === 'function' ? (\n header({\n titleProps,\n subtitleProps,\n iconProps,\n })\n ) : (\n <Styled.Header {...sizeProps} sizes={embedded ? SIZES_HEADER_EMBEDDED : SIZES_HEADER}>\n {addon}\n <Styled.Content>\n {isValidElement(content) ? (\n content\n ) : typeof content === 'function' ? (\n content({\n titleProps,\n subtitleProps,\n })\n ) : (\n <>\n {isValidElement(title) ? (\n title\n ) : typeof title === 'function' ? (\n title(titleProps)\n ) : typeof title === 'string' || typeof title === 'number' ? (\n <Text {...titleProps}>{title}</Text>\n ) : null}\n {isValidElement(subtitle) ? (\n subtitle\n ) : typeof subtitle === 'function' ? (\n subtitle(subtitleProps)\n ) : typeof subtitle === 'string' || typeof subtitle === 'number' ? (\n <Text {...subtitleProps}>{subtitle}</Text>\n ) : null}\n </>\n )}\n </Styled.Content>\n <Styled.IconAnimation up={panelExpanded}>\n {isValidElement(icon) ? icon : typeof icon === 'function' ? icon(iconProps) : <Icon {...iconProps} />}\n </Styled.IconAnimation>\n </Styled.Header>\n )}\n </Styled.Button>\n </Styled.Heading>\n <Styled.Panel\n id={panelId}\n role='region'\n aria-labelledby={controlId}\n hidden={!panelVisible}\n onTransitionEnd={(evt) => {\n if (evt.propertyName === 'opacity' && !panelExpanded) {\n setPanelVisible(false)\n }\n }}\n >\n {loading ? (\n <Styled.Details {...sizeProps} sizes={embedded ? SIZES_DETAILS_EMBEDDED : SIZES_DETAILS}>\n <Skeleton as='span' borderRadius={4} width='100%' marginBottom='0.4em'>\n <Text {...subtitleProps} />\n </Skeleton>\n <Skeleton as='span' borderRadius={4} width='70%'>\n <Text {...subtitleProps} />\n </Skeleton>\n </Styled.Details>\n ) : isValidElement(panel) ? (\n panel\n ) : (\n <Styled.Details {...sizeProps} sizes={embedded ? SIZES_DETAILS_EMBEDDED : SIZES_DETAILS}>\n {children}\n </Styled.Details>\n )}\n </Styled.Panel>\n </Styled.Root>\n )\n }),\n {\n displayName: COMPONENT_NAME,\n sizes: SIZES,\n }\n)\n\nexport { AccordionItem }\n"],"names":["AccordionItem","withMergedProps","forwardRef","props","ref","size","defaultExpanded","headingAs","borderRadius","sizeXXS","sizeXS","sizeS","sizeM","sizeL","sizeXL","id","header","addon","content","title","subtitle","icon","panel","children","loading","disabled","expanded","embedded","onExpandedChange","restProps","useAccordionPanelProps","sizeProps","iconProps","preset","name","sizes","SIZES_ICON","titleProps","as","appearance","wordBreak","color","SIZES_TITLE","subtitleProps","SIZES_SUBTITLE","panelExpanded","setPanelExpanded","useAccordionPanel","panelVisible","setPanelVisible","useState","controlId","useMemo","nanoid","panelId","useLayoutEffect","_jsxs","Styled","_jsx","jsx","onClick","type","Boolean","undefined","evt","stopPropagation","SIZES_HEADER_EMBEDDED","SIZES_HEADER","Skeleton","width","Text","isValidElement","jsxs","_Fragment","up","Icon","role","hidden","onTransitionEnd","propertyName","SIZES_DETAILS_EMBEDDED","SIZES_DETAILS","marginBottom","displayName","SIZES"],"mappings":"sYAkCMA,MAAAA,cAAqEC,gBAAAA,gBAIzEC,MAAAA,YAAW,CAACC,EAAOC,KACjB,MAAMC,KACJA,EAAO,IAAGC,gBACVA,GAAkB,EAAKC,UACvBA,EAAY,KAAIC,aAChBA,EAAe,EAACC,QAChBA,EAAOC,OACPA,EAAMC,MACNA,EAAKC,MACLA,EAAKC,MACLA,EAAKC,OACLA,EAAMC,GACNA,EAAEC,OACFA,EAAMC,MACNA,EAAKC,QACLA,EAAOC,MACPA,EAAKC,SACLA,EAAQC,KACRA,EAAIC,MACJA,EAAKC,SACLA,EAAQC,QACRA,EAAOC,SACPA,EAAQC,SACRA,EAAQC,SACRA,EAAQC,iBACRA,KACGC,GACDC,MAAAA,uBAAuB3B,GAE3B,MAAM4B,EAAY,CAChB1B,OACAI,UACAC,SACAC,QACAC,QACAC,QACAC,UAGF,MAAMkB,EAAuB,IACxBD,EACHE,OAAQ,QACRC,KAAM,cACNC,MAAOC,MAAAA,YAGT,MAAMC,EAAwB,IACzBN,EACHO,GAAI,OACJC,WAAY,qBACZC,UAAW,aACXC,MAAO,UACPN,MAAOO,MAAAA,aAGT,MAAMC,EAA2B,IAC5BZ,EACHO,GAAI,OACJC,WAAY,OACZC,UAAW,aACXC,MAAO,UACPN,MAAOS,MAAAA,gBAGT,MAAMC,cAAEA,EAAaC,iBAAEA,GAAqBC,wBAAkB,CAC5DhC,KACAW,WACApB,kBACAsB,qBAGF,MAAOoB,EAAcC,GAAmBC,MAAQA,SAAUL,GAE1D,MAAMM,EAAYC,MAAOA,SAAC,IAAMC,OAAAA,UAAU,IAC1C,MAAMC,EAAUF,MAAOA,SAAC,IAAMC,OAAAA,UAAU,IAMxC,OAJAE,MAAAA,iBAAgB,KACVV,GAAeI,GAAgB,EAAK,GACvC,CAACJ,IAGFW,WAAAA,KAACC,MAAAA,KAAW,IACN5B,KACAE,EACJhB,GAAIA,EACJU,SAAUA,EACVD,QAASA,EACTE,SAAUmB,EACVrC,aAAcA,EACd,uBAAmB,EACnBJ,IAAKA,EAAImB,SAETmC,CAAAA,WAAAC,IAACF,cAAc,CACbnB,GAAI/B,EACJqD,QAASA,KACFnC,GACHqB,GAAkBD,EACpB,EACAtB,SAEFmC,WAAAC,IAACF,aAAa,CACZ1C,GAAIoC,EACJU,KAAK,SACL,0BAAsB,EACtB,gBAAeP,EACf,gBAAeN,EACf,gBAAec,QAAQd,IAAiBvB,GAAaC,SAAaqC,IAAcnC,IAChFH,SAAUA,EACVmC,QAAUI,IACRA,EAAIC,kBACJnB,GAAkBD,EAAc,EAChCtB,SAEDC,EACCkC,WAAAC,IAACF,aAAa,IAAK1B,EAAWI,MAAOR,EAAWuC,MAAAA,sBAAwBC,MAAaA,aAAA5C,SACnFmC,WAAAC,IAACF,cAAc,CAAAlC,SACbmC,WAAAC,IAACS,kBAAQ,CAAC9B,GAAG,OAAO9B,aAAc,EAAG6D,MAAM,MAAM,2BAAuB,EAAA9C,SACtEmC,WAAAC,IAACW,UAAI,IAAKjC,UAIdkC,MAAcA,eAACvD,GACjBA,SACSA,GAAW,WACpBA,EAAO,CACLqB,aACAM,gBACAX,cAGFwB,WAAAgB,KAACf,aAAa,IAAK1B,EAAWI,MAAOR,EAAWuC,MAAAA,sBAAwBC,MAAaA,aAAA5C,UAClFN,EACDyC,WAAAC,IAACF,cAAc,CAAAlC,SACZgD,MAAcA,eAACrD,GACdA,SACSA,GAAY,WACrBA,EAAQ,CACNmB,aACAM,kBAGFa,WAAAgB,KAAAC,oBAAA,CAAAlD,SACG,CAAAgD,MAAAA,eAAepD,GACdA,SACSA,GAAU,WACnBA,EAAMkB,UACGlB,GAAU,iBAAmBA,GAAU,SAChDuC,WAAAC,IAACW,UAAI,IAAKjC,EAAUd,SAAGJ,IACrB,KACHoD,qBAAenD,GACdA,SACSA,GAAa,WACtBA,EAASuB,UACAvB,GAAa,iBAAmBA,GAAa,SACtDsC,WAAAC,IAACW,UAAI,IAAK3B,EAAapB,SAAGH,IACxB,UAIVsC,WAAAC,IAACF,oBAAoB,CAACiB,GAAI7B,EAActB,SACrCgD,MAAcA,eAAClD,GAAQA,SAAcA,GAAS,WAAaA,EAAKW,GAAa0B,WAAAA,IAACiB,KAAAA,KAAI,IAAK3C,aAMlG0B,WAAAC,IAACF,YAAY,CACX1C,GAAIuC,EACJsB,KAAK,SACL,kBAAiBzB,EACjB0B,QAAS7B,EACT8B,gBAAkBd,IACZA,EAAIe,eAAiB,WAAclC,GACrCI,GAAgB,EAClB,EACA1B,SAEDC,EACCgC,WAAAgB,KAACf,cAAc,IAAK1B,EAAWI,MAAOR,EAAWqD,MAAAA,uBAAyBC,MAAcA,cAAA1D,SAAA,CACtFmC,WAAAC,IAACS,kBAAQ,CAAC9B,GAAG,OAAO9B,aAAc,EAAG6D,MAAM,OAAOa,aAAa,QAAO3D,SACpEmC,WAAAC,IAACW,UAAI,IAAK3B,MAEZe,WAAAC,IAACS,kBAAQ,CAAC9B,GAAG,OAAO9B,aAAc,EAAG6D,MAAM,MAAK9C,SAC9CmC,WAAAC,IAACW,UAAI,IAAK3B,SAGZ4B,MAAcA,eAACjD,GACjBA,EAEAoC,WAAAA,IAACD,MAAAA,QAAc,IAAK1B,EAAWI,MAAOR,EAAWqD,MAAAA,uBAAyBC,MAAcA,cAAA1D,SACrFA,QAIK,IAGlB,CACE4D,YAtNmB,gBAuNnBhD,MAAOiD,MAAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{forwardRef,useState,useMemo,useLayoutEffect,isValidElement}from'react';import{nanoid}from'nanoid';import{withMergedProps}from'../../hocs/withMergedProps.mjs';import{useAccordionPanelProps,useAccordionPanel}from'./hooks.mjs';import{SIZES,SIZES_HEADER_EMBEDDED,SIZES_HEADER,SIZES_DETAILS_EMBEDDED,SIZES_DETAILS,SIZES_ICON,SIZES_TITLE,SIZES_SUBTITLE}from'./sizes.mjs';import{Root,Heading,Button,Header,Content,IconAnimation,Panel,Details}from'./style.mjs';import{jsxs,jsx,Fragment}from'react/jsx-runtime';import{Skeleton}from'../Skeleton/Skeleton.mjs';import{Text}from'../Text/Text.mjs';import{Icon}from'../Icon/Icon.mjs';const AccordionItem=withMergedProps(forwardRef(((e,n)=>{const{size:o="m",defaultExpanded:i=!1,headingAs:s="h3",borderRadius:t=0,sizeXXS:d,sizeXS:r,sizeS:a,sizeM:l,sizeL:c,sizeXL:E,id:S,header:p,addon:m,content:x,title:I,subtitle:u,icon:h,panel:f,children:D,loading:j,disabled:_,expanded:b,embedded:z,onExpandedChange:T,...A}=useAccordionPanelProps(e);const Z={size:o,sizeXXS:d,sizeXS:r,sizeS:a,sizeM:l,sizeL:c,sizeXL:E};const g={...Z,preset:'brand',name:'chevronDown',sizes:SIZES_ICON};const y={...Z,as:'span',appearance:'subheading-compact',wordBreak:'break-word',color:'inherit',sizes:SIZES_TITLE};const P={...Z,as:'span',appearance:'body',wordBreak:'break-word',color:'inherit',sizes:SIZES_SUBTITLE};const{panelExpanded:L,setPanelExpanded:R}=useAccordionPanel({id:S,expanded:b,defaultExpanded:i,onExpandedChange:T});const[k,
|
|
1
|
+
import{forwardRef,useState,useMemo,useLayoutEffect,isValidElement}from'react';import{nanoid}from'nanoid';import{withMergedProps}from'../../hocs/withMergedProps.mjs';import{useAccordionPanelProps,useAccordionPanel}from'./hooks.mjs';import{SIZES,SIZES_HEADER_EMBEDDED,SIZES_HEADER,SIZES_DETAILS_EMBEDDED,SIZES_DETAILS,SIZES_ICON,SIZES_TITLE,SIZES_SUBTITLE}from'./sizes.mjs';import{Root,Heading,Button,Header,Content,IconAnimation,Panel,Details}from'./style.mjs';import{jsxs,jsx,Fragment}from'react/jsx-runtime';import{Skeleton}from'../Skeleton/Skeleton.mjs';import{Text}from'../Text/Text.mjs';import{Icon}from'../Icon/Icon.mjs';const AccordionItem=withMergedProps(forwardRef(((e,n)=>{const{size:o="m",defaultExpanded:i=!1,headingAs:s="h3",borderRadius:t=0,sizeXXS:d,sizeXS:r,sizeS:a,sizeM:l,sizeL:c,sizeXL:E,id:S,header:p,addon:m,content:x,title:I,subtitle:u,icon:h,panel:f,children:D,loading:j,disabled:_,expanded:b,embedded:z,onExpandedChange:T,...A}=useAccordionPanelProps(e);const Z={size:o,sizeXXS:d,sizeXS:r,sizeS:a,sizeM:l,sizeL:c,sizeXL:E};const g={...Z,preset:'brand',name:'chevronDown',sizes:SIZES_ICON};const y={...Z,as:'span',appearance:'subheading-compact',wordBreak:'break-word',color:'inherit',sizes:SIZES_TITLE};const P={...Z,as:'span',appearance:'body',wordBreak:'break-word',color:'inherit',sizes:SIZES_SUBTITLE};const{panelExpanded:L,setPanelExpanded:R}=useAccordionPanel({id:S,expanded:b,defaultExpanded:i,onExpandedChange:T});const[k,B]=useState(L);const M=useMemo((()=>nanoid()),[]);const w=useMemo((()=>nanoid()),[]);return useLayoutEffect((()=>{L&&B(!0)}),[L]),jsxs(Root,{...A,...Z,id:S,disabled:_,loading:j,expanded:L,borderRadius:t,"data-accordion-item":!0,ref:n,children:[jsx(Heading,{as:s,onClick:()=>{_||R(!L)},children:jsx(Button,{id:M,type:"button","data-accordion-control":!0,"aria-controls":w,"aria-expanded":k,"aria-disabled":Boolean(k&&(_||b!==void 0&&!T)),disabled:_,onClick:e=>{e.stopPropagation(),R(!L)},children:j?jsx(Header,{...Z,sizes:z?SIZES_HEADER_EMBEDDED:SIZES_HEADER,children:jsx(Content,{children:jsx(Skeleton,{as:"span",borderRadius:4,width:"90%","data-accordion-skeleton":!0,children:jsx(Text,{...y})})})}):isValidElement(p)?p:typeof p=='function'?p({titleProps:y,subtitleProps:P,iconProps:g}):jsxs(Header,{...Z,sizes:z?SIZES_HEADER_EMBEDDED:SIZES_HEADER,children:[m,jsx(Content,{children:isValidElement(x)?x:typeof x=='function'?x({titleProps:y,subtitleProps:P}):jsxs(Fragment,{children:[isValidElement(I)?I:typeof I=='function'?I(y):typeof I=='string'||typeof I=='number'?jsx(Text,{...y,children:I}):null,isValidElement(u)?u:typeof u=='function'?u(P):typeof u=='string'||typeof u=='number'?jsx(Text,{...P,children:u}):null]})}),jsx(IconAnimation,{up:L,children:isValidElement(h)?h:typeof h=='function'?h(g):jsx(Icon,{...g})})]})})}),jsx(Panel,{id:w,role:"region","aria-labelledby":M,hidden:!k,onTransitionEnd:e=>{e.propertyName!=='opacity'||L||B(!1)},children:j?jsxs(Details,{...Z,sizes:z?SIZES_DETAILS_EMBEDDED:SIZES_DETAILS,children:[jsx(Skeleton,{as:"span",borderRadius:4,width:"100%",marginBottom:"0.4em",children:jsx(Text,{...P})}),jsx(Skeleton,{as:"span",borderRadius:4,width:"70%",children:jsx(Text,{...P})})]}):isValidElement(f)?f:jsx(Details,{...Z,sizes:z?SIZES_DETAILS_EMBEDDED:SIZES_DETAILS,children:D})})]})})),{displayName:'AccordionItem',sizes:SIZES});export{AccordionItem};
|
|
2
2
|
//# sourceMappingURL=AccordionItem.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccordionItem.mjs","sources":["../../../../src/components/AccordionItem/AccordionItem.tsx"],"sourcesContent":["import { forwardRef, useState, isValidElement, useLayoutEffect, useMemo } from 'react'\nimport { nanoid } from 'nanoid'\nimport { withMergedProps } from 'hocs/withMergedProps'\nimport { Text } from 'components/Text'\nimport { Icon } from 'components/Icon'\nimport { Skeleton } from 'components/Skeleton'\nimport type { IconProps } from 'components/Icon'\nimport type { TextProps } from 'components/Text'\nimport { useAccordionPanel, useAccordionPanelProps } from './hooks'\nimport {\n SIZES,\n SIZES_HEADER,\n SIZES_HEADER_EMBEDDED,\n SIZES_DETAILS,\n SIZES_DETAILS_EMBEDDED,\n SIZES_TITLE,\n SIZES_SUBTITLE,\n SIZES_ICON,\n} from './sizes'\nimport type { AccordionItemProps } from './types'\nimport * as Styled from './style'\n\nconst COMPONENT_NAME = 'AccordionItem'\n\n/**\n *\n * Компонент для создания сворачиваемой секции контента.\n *\n * Поддерживается \"ref\" и все нативные атрибуты \\<section\\> элемента.\n *\n * Дизайн соответствует [рекомендациям WAI-ARIA](https://www.w3.org/WAI/ARIA/apg/patterns/accordion/).\n *\n * @visibleName Accordion.Item\n */\nconst AccordionItem: React.ForwardRefExoticComponent<AccordionItemProps> = withMergedProps<\n AccordionItemProps,\n HTMLElement\n>(\n forwardRef((props, ref) => {\n const {\n size = 'm',\n defaultExpanded = false,\n headingAs = 'h3',\n borderRadius = 0,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n id,\n header,\n addon,\n content,\n title,\n subtitle,\n icon,\n panel,\n children,\n loading,\n disabled,\n expanded,\n embedded,\n onExpandedChange,\n ...restProps\n } = useAccordionPanelProps(props)\n\n const sizeProps = {\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n }\n\n const iconProps: IconProps = {\n ...sizeProps,\n preset: 'brand',\n name: 'chevronDown',\n sizes: SIZES_ICON,\n }\n\n const titleProps: TextProps = {\n ...sizeProps,\n as: 'span',\n appearance: 'subheading-compact',\n wordBreak: 'break-word',\n color: 'inherit',\n sizes: SIZES_TITLE,\n }\n\n const subtitleProps: TextProps = {\n ...sizeProps,\n as: 'span',\n appearance: 'body',\n wordBreak: 'break-word',\n color: 'inherit',\n sizes: SIZES_SUBTITLE,\n }\n\n const { panelExpanded, setPanelExpanded } = useAccordionPanel({\n id,\n expanded,\n defaultExpanded,\n onExpandedChange,\n })\n\n const [panelVisible, setPanelVisible] = useState<boolean>(panelExpanded)\n\n const controlId = useMemo(() => nanoid(), [])\n const panelId = useMemo(() => nanoid(), [])\n\n useLayoutEffect(() => {\n if (panelExpanded) setPanelVisible(true)\n }, [panelExpanded])\n\n return (\n <Styled.Root\n {...restProps}\n {...sizeProps}\n id={id}\n disabled={disabled}\n loading={loading}\n expanded={panelExpanded}\n borderRadius={borderRadius}\n data-accordion-item\n ref={ref}\n >\n <Styled.Heading\n as={headingAs}\n onClick={() => {\n if (!disabled) {\n setPanelExpanded(!panelExpanded)\n }\n }}\n >\n <Styled.Button\n id={controlId}\n type='button'\n data-accordion-control\n aria-controls={panelId}\n aria-expanded={panelVisible}\n aria-disabled={panelVisible && (disabled || (expanded !== undefined && !onExpandedChange))}\n disabled={disabled}\n onClick={(evt) => {\n evt.stopPropagation()\n setPanelExpanded(!panelExpanded)\n }}\n >\n {loading ? (\n <Styled.Header {...sizeProps} sizes={embedded ? SIZES_HEADER_EMBEDDED : SIZES_HEADER}>\n <Styled.Content>\n <Skeleton as='span' borderRadius={4} width='90%' data-accordion-skeleton>\n <Text {...titleProps} />\n </Skeleton>\n </Styled.Content>\n </Styled.Header>\n ) : isValidElement(header) ? (\n header\n ) : typeof header === 'function' ? (\n header({\n titleProps,\n subtitleProps,\n iconProps,\n })\n ) : (\n <Styled.Header {...sizeProps} sizes={embedded ? SIZES_HEADER_EMBEDDED : SIZES_HEADER}>\n {addon}\n <Styled.Content>\n {isValidElement(content) ? (\n content\n ) : typeof content === 'function' ? (\n content({\n titleProps,\n subtitleProps,\n })\n ) : (\n <>\n {isValidElement(title) ? (\n title\n ) : typeof title === 'function' ? (\n title(titleProps)\n ) : typeof title === 'string' || typeof title === 'number' ? (\n <Text {...titleProps}>{title}</Text>\n ) : null}\n {isValidElement(subtitle) ? (\n subtitle\n ) : typeof subtitle === 'function' ? (\n subtitle(subtitleProps)\n ) : typeof subtitle === 'string' || typeof subtitle === 'number' ? (\n <Text {...subtitleProps}>{subtitle}</Text>\n ) : null}\n </>\n )}\n </Styled.Content>\n <Styled.IconAnimation up={panelExpanded}>\n {isValidElement(icon) ? icon : typeof icon === 'function' ? icon(iconProps) : <Icon {...iconProps} />}\n </Styled.IconAnimation>\n </Styled.Header>\n )}\n </Styled.Button>\n </Styled.Heading>\n <Styled.Panel\n id={panelId}\n role='region'\n aria-labelledby={controlId}\n hidden={!panelVisible}\n onTransitionEnd={(evt) => {\n if (evt.propertyName === 'opacity' && !panelExpanded) {\n setPanelVisible(false)\n }\n }}\n >\n {loading ? (\n <Styled.Details {...sizeProps} sizes={embedded ? SIZES_DETAILS_EMBEDDED : SIZES_DETAILS}>\n <Skeleton as='span' borderRadius={4} width='100%' marginBottom='0.4em'>\n <Text {...subtitleProps} />\n </Skeleton>\n <Skeleton as='span' borderRadius={4} width='70%'>\n <Text {...subtitleProps} />\n </Skeleton>\n </Styled.Details>\n ) : isValidElement(panel) ? (\n panel\n ) : (\n <Styled.Details {...sizeProps} sizes={embedded ? SIZES_DETAILS_EMBEDDED : SIZES_DETAILS}>\n {children}\n </Styled.Details>\n )}\n </Styled.Panel>\n </Styled.Root>\n )\n }),\n {\n displayName: COMPONENT_NAME,\n sizes: SIZES,\n }\n)\n\nexport { AccordionItem }\n"],"names":["AccordionItem","withMergedProps","forwardRef","props","ref","size","defaultExpanded","headingAs","borderRadius","sizeXXS","sizeXS","sizeS","sizeM","sizeL","sizeXL","id","header","addon","content","title","subtitle","icon","panel","children","loading","disabled","expanded","embedded","onExpandedChange","restProps","useAccordionPanelProps","sizeProps","iconProps","preset","name","sizes","SIZES_ICON","titleProps","as","appearance","wordBreak","color","SIZES_TITLE","subtitleProps","SIZES_SUBTITLE","panelExpanded","setPanelExpanded","useAccordionPanel","panelVisible","setPanelVisible","useState","controlId","useMemo","nanoid","panelId","useLayoutEffect","_jsxs","Styled","_jsx","onClick","type","undefined","evt","stopPropagation","SIZES_HEADER_EMBEDDED","SIZES_HEADER","Skeleton","width","Text","isValidElement","_Fragment","up","Icon","role","hidden","onTransitionEnd","propertyName","SIZES_DETAILS_EMBEDDED","SIZES_DETAILS","marginBottom","displayName","SIZES"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AccordionItem.mjs","sources":["../../../../src/components/AccordionItem/AccordionItem.tsx"],"sourcesContent":["import { forwardRef, useState, isValidElement, useLayoutEffect, useMemo } from 'react'\nimport { nanoid } from 'nanoid'\nimport { withMergedProps } from 'hocs/withMergedProps'\nimport { Text } from 'components/Text'\nimport { Icon } from 'components/Icon'\nimport { Skeleton } from 'components/Skeleton'\nimport type { IconProps } from 'components/Icon'\nimport type { TextProps } from 'components/Text'\nimport { useAccordionPanel, useAccordionPanelProps } from './hooks'\nimport {\n SIZES,\n SIZES_HEADER,\n SIZES_HEADER_EMBEDDED,\n SIZES_DETAILS,\n SIZES_DETAILS_EMBEDDED,\n SIZES_TITLE,\n SIZES_SUBTITLE,\n SIZES_ICON,\n} from './sizes'\nimport type { AccordionItemProps } from './types'\nimport * as Styled from './style'\n\nconst COMPONENT_NAME = 'AccordionItem'\n\n/**\n *\n * Компонент для создания сворачиваемой секции контента.\n *\n * Поддерживается \"ref\" и все нативные атрибуты \\<section\\> элемента.\n *\n * Дизайн соответствует [рекомендациям WAI-ARIA](https://www.w3.org/WAI/ARIA/apg/patterns/accordion/).\n *\n * @visibleName Accordion.Item\n */\nconst AccordionItem: React.ForwardRefExoticComponent<AccordionItemProps> = withMergedProps<\n AccordionItemProps,\n HTMLElement\n>(\n forwardRef((props, ref) => {\n const {\n size = 'm',\n defaultExpanded = false,\n headingAs = 'h3',\n borderRadius = 0,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n id,\n header,\n addon,\n content,\n title,\n subtitle,\n icon,\n panel,\n children,\n loading,\n disabled,\n expanded,\n embedded,\n onExpandedChange,\n ...restProps\n } = useAccordionPanelProps(props)\n\n const sizeProps = {\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n }\n\n const iconProps: IconProps = {\n ...sizeProps,\n preset: 'brand',\n name: 'chevronDown',\n sizes: SIZES_ICON,\n }\n\n const titleProps: TextProps = {\n ...sizeProps,\n as: 'span',\n appearance: 'subheading-compact',\n wordBreak: 'break-word',\n color: 'inherit',\n sizes: SIZES_TITLE,\n }\n\n const subtitleProps: TextProps = {\n ...sizeProps,\n as: 'span',\n appearance: 'body',\n wordBreak: 'break-word',\n color: 'inherit',\n sizes: SIZES_SUBTITLE,\n }\n\n const { panelExpanded, setPanelExpanded } = useAccordionPanel({\n id,\n expanded,\n defaultExpanded,\n onExpandedChange,\n })\n\n const [panelVisible, setPanelVisible] = useState<boolean>(panelExpanded)\n\n const controlId = useMemo(() => nanoid(), [])\n const panelId = useMemo(() => nanoid(), [])\n\n useLayoutEffect(() => {\n if (panelExpanded) setPanelVisible(true)\n }, [panelExpanded])\n\n return (\n <Styled.Root\n {...restProps}\n {...sizeProps}\n id={id}\n disabled={disabled}\n loading={loading}\n expanded={panelExpanded}\n borderRadius={borderRadius}\n data-accordion-item\n ref={ref}\n >\n <Styled.Heading\n as={headingAs}\n onClick={() => {\n if (!disabled) {\n setPanelExpanded(!panelExpanded)\n }\n }}\n >\n <Styled.Button\n id={controlId}\n type='button'\n data-accordion-control\n aria-controls={panelId}\n aria-expanded={panelVisible}\n aria-disabled={Boolean(panelVisible && (disabled || (expanded !== undefined && !onExpandedChange)))}\n disabled={disabled}\n onClick={(evt) => {\n evt.stopPropagation()\n setPanelExpanded(!panelExpanded)\n }}\n >\n {loading ? (\n <Styled.Header {...sizeProps} sizes={embedded ? SIZES_HEADER_EMBEDDED : SIZES_HEADER}>\n <Styled.Content>\n <Skeleton as='span' borderRadius={4} width='90%' data-accordion-skeleton>\n <Text {...titleProps} />\n </Skeleton>\n </Styled.Content>\n </Styled.Header>\n ) : isValidElement(header) ? (\n header\n ) : typeof header === 'function' ? (\n header({\n titleProps,\n subtitleProps,\n iconProps,\n })\n ) : (\n <Styled.Header {...sizeProps} sizes={embedded ? SIZES_HEADER_EMBEDDED : SIZES_HEADER}>\n {addon}\n <Styled.Content>\n {isValidElement(content) ? (\n content\n ) : typeof content === 'function' ? (\n content({\n titleProps,\n subtitleProps,\n })\n ) : (\n <>\n {isValidElement(title) ? (\n title\n ) : typeof title === 'function' ? (\n title(titleProps)\n ) : typeof title === 'string' || typeof title === 'number' ? (\n <Text {...titleProps}>{title}</Text>\n ) : null}\n {isValidElement(subtitle) ? (\n subtitle\n ) : typeof subtitle === 'function' ? (\n subtitle(subtitleProps)\n ) : typeof subtitle === 'string' || typeof subtitle === 'number' ? (\n <Text {...subtitleProps}>{subtitle}</Text>\n ) : null}\n </>\n )}\n </Styled.Content>\n <Styled.IconAnimation up={panelExpanded}>\n {isValidElement(icon) ? icon : typeof icon === 'function' ? icon(iconProps) : <Icon {...iconProps} />}\n </Styled.IconAnimation>\n </Styled.Header>\n )}\n </Styled.Button>\n </Styled.Heading>\n <Styled.Panel\n id={panelId}\n role='region'\n aria-labelledby={controlId}\n hidden={!panelVisible}\n onTransitionEnd={(evt) => {\n if (evt.propertyName === 'opacity' && !panelExpanded) {\n setPanelVisible(false)\n }\n }}\n >\n {loading ? (\n <Styled.Details {...sizeProps} sizes={embedded ? SIZES_DETAILS_EMBEDDED : SIZES_DETAILS}>\n <Skeleton as='span' borderRadius={4} width='100%' marginBottom='0.4em'>\n <Text {...subtitleProps} />\n </Skeleton>\n <Skeleton as='span' borderRadius={4} width='70%'>\n <Text {...subtitleProps} />\n </Skeleton>\n </Styled.Details>\n ) : isValidElement(panel) ? (\n panel\n ) : (\n <Styled.Details {...sizeProps} sizes={embedded ? SIZES_DETAILS_EMBEDDED : SIZES_DETAILS}>\n {children}\n </Styled.Details>\n )}\n </Styled.Panel>\n </Styled.Root>\n )\n }),\n {\n displayName: COMPONENT_NAME,\n sizes: SIZES,\n }\n)\n\nexport { AccordionItem }\n"],"names":["AccordionItem","withMergedProps","forwardRef","props","ref","size","defaultExpanded","headingAs","borderRadius","sizeXXS","sizeXS","sizeS","sizeM","sizeL","sizeXL","id","header","addon","content","title","subtitle","icon","panel","children","loading","disabled","expanded","embedded","onExpandedChange","restProps","useAccordionPanelProps","sizeProps","iconProps","preset","name","sizes","SIZES_ICON","titleProps","as","appearance","wordBreak","color","SIZES_TITLE","subtitleProps","SIZES_SUBTITLE","panelExpanded","setPanelExpanded","useAccordionPanel","panelVisible","setPanelVisible","useState","controlId","useMemo","nanoid","panelId","useLayoutEffect","_jsxs","Styled","_jsx","onClick","type","Boolean","undefined","evt","stopPropagation","SIZES_HEADER_EMBEDDED","SIZES_HEADER","Skeleton","width","Text","isValidElement","_Fragment","up","Icon","role","hidden","onTransitionEnd","propertyName","SIZES_DETAILS_EMBEDDED","SIZES_DETAILS","marginBottom","displayName","SIZES"],"mappings":"knBAkCMA,MAAAA,cAAqEC,gBAIzEC,YAAW,CAACC,EAAOC,KACjB,MAAMC,KACJA,EAAO,IAAGC,gBACVA,GAAkB,EAAKC,UACvBA,EAAY,KAAIC,aAChBA,EAAe,EAACC,QAChBA,EAAOC,OACPA,EAAMC,MACNA,EAAKC,MACLA,EAAKC,MACLA,EAAKC,OACLA,EAAMC,GACNA,EAAEC,OACFA,EAAMC,MACNA,EAAKC,QACLA,EAAOC,MACPA,EAAKC,SACLA,EAAQC,KACRA,EAAIC,MACJA,EAAKC,SACLA,EAAQC,QACRA,EAAOC,SACPA,EAAQC,SACRA,EAAQC,SACRA,EAAQC,iBACRA,KACGC,GACDC,uBAAuB3B,GAE3B,MAAM4B,EAAY,CAChB1B,OACAI,UACAC,SACAC,QACAC,QACAC,QACAC,UAGF,MAAMkB,EAAuB,IACxBD,EACHE,OAAQ,QACRC,KAAM,cACNC,MAAOC,YAGT,MAAMC,EAAwB,IACzBN,EACHO,GAAI,OACJC,WAAY,qBACZC,UAAW,aACXC,MAAO,UACPN,MAAOO,aAGT,MAAMC,EAA2B,IAC5BZ,EACHO,GAAI,OACJC,WAAY,OACZC,UAAW,aACXC,MAAO,UACPN,MAAOS,gBAGT,MAAMC,cAAEA,EAAaC,iBAAEA,GAAqBC,kBAAkB,CAC5DhC,KACAW,WACApB,kBACAsB,qBAGF,MAAOoB,EAAcC,GAAmBC,SAAkBL,GAE1D,MAAMM,EAAYC,SAAQ,IAAMC,UAAU,IAC1C,MAAMC,EAAUF,SAAQ,IAAMC,UAAU,IAMxC,OAJAE,iBAAgB,KACVV,GAAeI,GAAgB,EAAK,GACvC,CAACJ,IAGFW,KAACC,KAAW,IACN5B,KACAE,EACJhB,GAAIA,EACJU,SAAUA,EACVD,QAASA,EACTE,SAAUmB,EACVrC,aAAcA,EACd,uBAAmB,EACnBJ,IAAKA,EAAImB,SAETmC,CAAAA,IAACD,QAAc,CACbnB,GAAI/B,EACJoD,QAASA,KACFlC,GACHqB,GAAkBD,EACpB,EACAtB,SAEFmC,IAACD,OAAa,CACZ1C,GAAIoC,EACJS,KAAK,SACL,0BAAsB,EACtB,gBAAeN,EACf,gBAAeN,EACf,gBAAea,QAAQb,IAAiBvB,GAAaC,SAAaoC,IAAclC,IAChFH,SAAUA,EACVkC,QAAUI,IACRA,EAAIC,kBACJlB,GAAkBD,EAAc,EAChCtB,SAEDC,EACCkC,IAACD,OAAa,IAAK1B,EAAWI,MAAOR,EAAWsC,sBAAwBC,aAAa3C,SACnFmC,IAACD,QAAc,CAAAlC,SACbmC,IAACS,SAAQ,CAAC7B,GAAG,OAAO9B,aAAc,EAAG4D,MAAM,MAAM,2BAAuB,EAAA7C,SACtEmC,IAACW,KAAI,IAAKhC,UAIdiC,eAAetD,GACjBA,SACSA,GAAW,WACpBA,EAAO,CACLqB,aACAM,gBACAX,cAGFwB,KAACC,OAAa,IAAK1B,EAAWI,MAAOR,EAAWsC,sBAAwBC,aAAa3C,UAClFN,EACDyC,IAACD,QAAc,CAAAlC,SACZ+C,eAAepD,GACdA,SACSA,GAAY,WACrBA,EAAQ,CACNmB,aACAM,kBAGFa,KAAAe,SAAA,CAAAhD,SACG,CAAA+C,eAAenD,GACdA,SACSA,GAAU,WACnBA,EAAMkB,UACGlB,GAAU,iBAAmBA,GAAU,SAChDuC,IAACW,KAAI,IAAKhC,EAAUd,SAAGJ,IACrB,KACHmD,eAAelD,GACdA,SACSA,GAAa,WACtBA,EAASuB,UACAvB,GAAa,iBAAmBA,GAAa,SACtDsC,IAACW,KAAI,IAAK1B,EAAapB,SAAGH,IACxB,UAIVsC,IAACD,cAAoB,CAACe,GAAI3B,EAActB,SACrC+C,eAAejD,GAAQA,SAAcA,GAAS,WAAaA,EAAKW,GAAa0B,IAACe,KAAI,IAAKzC,aAMlG0B,IAACD,MAAY,CACX1C,GAAIuC,EACJoB,KAAK,SACL,kBAAiBvB,EACjBwB,QAAS3B,EACT4B,gBAAkBb,IACZA,EAAIc,eAAiB,WAAchC,GACrCI,GAAgB,EAClB,EACA1B,SAEDC,EACCgC,KAACC,QAAc,IAAK1B,EAAWI,MAAOR,EAAWmD,uBAAyBC,cAAcxD,SAAA,CACtFmC,IAACS,SAAQ,CAAC7B,GAAG,OAAO9B,aAAc,EAAG4D,MAAM,OAAOY,aAAa,QAAOzD,SACpEmC,IAACW,KAAI,IAAK1B,MAEZe,IAACS,SAAQ,CAAC7B,GAAG,OAAO9B,aAAc,EAAG4D,MAAM,MAAK7C,SAC9CmC,IAACW,KAAI,IAAK1B,SAGZ2B,eAAehD,GACjBA,EAEAoC,IAACD,QAAc,IAAK1B,EAAWI,MAAOR,EAAWmD,uBAAyBC,cAAcxD,SACrFA,QAIK,IAGlB,CACE0D,YAtNmB,gBAuNnB9C,MAAO+C"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var useClassname=require('../../hooks/useClassname.js');var style=require('./style.js');var jsxRuntime=require('react/jsx-runtime');var Icon=require('../Icon/Icon.js');function ActionBtn({icon:e,disabled:s=!1,onClick:n,children:t,className:i,active:a,style:c}){const
|
|
1
|
+
'use strict';var useClassname=require('../../hooks/useClassname.js');var style=require('./style.js');var jsxRuntime=require('react/jsx-runtime');var Icon=require('../Icon/Icon.js');function ActionBtn({icon:e,disabled:s=!1,onClick:n,children:t,className:i,active:a,style:c}){const l=useClassname.useClassname(ActionBtn.displayName,i);return jsxRuntime.jsxs(style.Root,{className:l,style:c,disabled:s,active:a,onClick:n,children:[e?jsxRuntime.jsx(Icon.Icon,{size:16,name:e}):null,t]})}ActionBtn.displayName='ActionBtn',exports.ActionBtn=ActionBtn;
|
|
2
2
|
//# sourceMappingURL=ActionBtn.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionBtn.js","sources":["../../../../src/components/ActionBtn/ActionBtn.tsx"],"sourcesContent":["import { DisplayProperty } from 'mixins/display'\nimport { useClassname } from 'hooks/useClassname'\nimport { BaseProps } from 'shared/interfaces'\nimport { Icon } from 'components/Icon'\nimport type { IconName } from 'components/Icon'\nimport * as Styled from './style'\n\nexport interface ActionBtnProps extends BaseProps, DisplayProperty {\n /** Icon name (for inner Icon component) */\n icon?: IconName\n disabled?: boolean\n active?: boolean\n onClick?(): void\n /**\n * Children react node\n */\n children?: React.ReactNode\n}\n\
|
|
1
|
+
{"version":3,"file":"ActionBtn.js","sources":["../../../../src/components/ActionBtn/ActionBtn.tsx"],"sourcesContent":["import type { DisplayProperty } from 'mixins/display'\nimport { useClassname } from 'hooks/useClassname'\nimport type { BaseProps } from 'shared/interfaces'\nimport { Icon } from 'components/Icon'\nimport type { IconName } from 'components/Icon'\nimport * as Styled from './style'\n\nexport interface ActionBtnProps extends BaseProps, DisplayProperty {\n /** Icon name (for inner Icon component) */\n icon?: IconName\n disabled?: boolean\n active?: boolean\n onClick?(): void\n /**\n * Children react node\n */\n children?: React.ReactNode\n}\n\n/**\n * Расширен:\n * - [`BaseProps`](#/Миксины)\n * - [`Display`](#/Миксины)\n */\nfunction ActionBtn({ icon, disabled = false, onClick, children, className, active, style }: ActionBtnProps) {\n const _className = useClassname(ActionBtn.displayName, className)\n\n return (\n <Styled.Root className={_className} style={style} disabled={disabled} active={active} onClick={onClick}>\n {icon ? <Icon size={16} name={icon} /> : null}\n {children}\n </Styled.Root>\n )\n}\n\nActionBtn.displayName = 'ActionBtn'\n\nexport { ActionBtn }\n"],"names":["ActionBtn","icon","disabled","onClick","children","className","active","style","_className","useClassname","displayName","_jsxs","Styled","_jsx","jsx","Icon","size","name"],"mappings":"qLAwBA,SAASA,WAAUC,KAAEA,EAAIC,SAAEA,GAAW,EAAKC,QAAEA,EAAOC,SAAEA,EAAQC,UAAEA,EAASC,OAAEA,EAAQC,MAAAA,IACjF,MAAMC,EAAaC,aAAYA,aAACT,UAAUU,YAAaL,GAEvD,OACEM,WAAAA,KAACC,MAAAA,KAAW,CAACP,UAAWG,EAAYD,MAAOA,EAAOL,SAAUA,EAAUI,OAAQA,EAAQH,QAASA,EAAQC,SACpGH,CAAAA,EAAOY,WAAAC,IAACC,UAAI,CAACC,KAAM,GAAIC,KAAMhB,IAAW,KACxCG,IAGP,CAEAJ,UAAUU,YAAc"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useClassname}from'../../hooks/useClassname.mjs';import{Root}from'./style.mjs';import{jsxs,jsx}from'react/jsx-runtime';import{Icon}from'../Icon/Icon.mjs';function ActionBtn({icon:s,disabled:
|
|
1
|
+
import{useClassname}from'../../hooks/useClassname.mjs';import{Root}from'./style.mjs';import{jsxs,jsx}from'react/jsx-runtime';import{Icon}from'../Icon/Icon.mjs';function ActionBtn({icon:s,disabled:n=!1,onClick:o,children:t,className:e,active:i,style:c}){const a=useClassname(ActionBtn.displayName,e);return jsxs(Root,{className:a,style:c,disabled:n,active:i,onClick:o,children:[s?jsx(Icon,{size:16,name:s}):null,t]})}ActionBtn.displayName='ActionBtn';export{ActionBtn};
|
|
2
2
|
//# sourceMappingURL=ActionBtn.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionBtn.mjs","sources":["../../../../src/components/ActionBtn/ActionBtn.tsx"],"sourcesContent":["import { DisplayProperty } from 'mixins/display'\nimport { useClassname } from 'hooks/useClassname'\nimport { BaseProps } from 'shared/interfaces'\nimport { Icon } from 'components/Icon'\nimport type { IconName } from 'components/Icon'\nimport * as Styled from './style'\n\nexport interface ActionBtnProps extends BaseProps, DisplayProperty {\n /** Icon name (for inner Icon component) */\n icon?: IconName\n disabled?: boolean\n active?: boolean\n onClick?(): void\n /**\n * Children react node\n */\n children?: React.ReactNode\n}\n\
|
|
1
|
+
{"version":3,"file":"ActionBtn.mjs","sources":["../../../../src/components/ActionBtn/ActionBtn.tsx"],"sourcesContent":["import type { DisplayProperty } from 'mixins/display'\nimport { useClassname } from 'hooks/useClassname'\nimport type { BaseProps } from 'shared/interfaces'\nimport { Icon } from 'components/Icon'\nimport type { IconName } from 'components/Icon'\nimport * as Styled from './style'\n\nexport interface ActionBtnProps extends BaseProps, DisplayProperty {\n /** Icon name (for inner Icon component) */\n icon?: IconName\n disabled?: boolean\n active?: boolean\n onClick?(): void\n /**\n * Children react node\n */\n children?: React.ReactNode\n}\n\n/**\n * Расширен:\n * - [`BaseProps`](#/Миксины)\n * - [`Display`](#/Миксины)\n */\nfunction ActionBtn({ icon, disabled = false, onClick, children, className, active, style }: ActionBtnProps) {\n const _className = useClassname(ActionBtn.displayName, className)\n\n return (\n <Styled.Root className={_className} style={style} disabled={disabled} active={active} onClick={onClick}>\n {icon ? <Icon size={16} name={icon} /> : null}\n {children}\n </Styled.Root>\n )\n}\n\nActionBtn.displayName = 'ActionBtn'\n\nexport { ActionBtn }\n"],"names":["ActionBtn","icon","disabled","onClick","children","className","active","style","_className","useClassname","displayName","_jsxs","Styled","_jsx","Icon","size","name"],"mappings":"gKAwBA,SAASA,WAAUC,KAAEA,EAAIC,SAAEA,GAAW,EAAKC,QAAEA,EAAOC,SAAEA,EAAQC,UAAEA,EAASC,OAAEA,EAAMC,MAAEA,IACjF,MAAMC,EAAaC,aAAaT,UAAUU,YAAaL,GAEvD,OACEM,KAACC,KAAW,CAACP,UAAWG,EAAYD,MAAOA,EAAOL,SAAUA,EAAUI,OAAQA,EAAQH,QAASA,EAAQC,SACpGH,CAAAA,EAAOY,IAACC,KAAI,CAACC,KAAM,GAAIC,KAAMf,IAAW,KACxCG,IAGP,CAEAJ,UAAUU,YAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.js","sources":["../../../../src/components/ActionBtn/style.ts"],"sourcesContent":["import styled, { css } from 'styled-components'\nimport { display } from 'mixins/display'\nimport { ActionBtnProps } from './ActionBtn'\n\nconst active = css`\n background: ${(props) => props.theme.colors.onahau};\n color: ${(props) => props.theme.colors.accent};\n`\n\nconst notDisabled = css`\n &:hover {\n background: ${(props) => props.theme.colors.mercury};\n }\n &:active {\n ${active}\n }\n`\n\nconst disabled = css`\n cursor: default;\n opacity: 0.6;\n`\n\nexport const Root = styled.div<ActionBtnProps>`\n padding: 4px;\n background: transparent;\n color: ${(props) => props.theme.colors.silver};\n transition
|
|
1
|
+
{"version":3,"file":"style.js","sources":["../../../../src/components/ActionBtn/style.ts"],"sourcesContent":["import styled, { css } from 'styled-components'\nimport { display } from 'mixins/display'\nimport type { ActionBtnProps } from './ActionBtn'\n\nconst active = css`\n background: ${(props) => props.theme.colors.onahau};\n color: ${(props) => props.theme.colors.accent};\n`\n\nconst notDisabled = css`\n &:hover {\n background: ${(props) => props.theme.colors.mercury};\n }\n &:active {\n ${active}\n }\n`\n\nconst disabled = css`\n cursor: default;\n opacity: 0.6;\n`\n\nexport const Root = styled.div<ActionBtnProps>`\n padding: 4px;\n background: transparent;\n color: ${(props) => props.theme.colors.silver};\n transition:\n background 0.4s ease-out,\n color 0.6s ease-out;\n line-height: 0;\n cursor: pointer;\n border-radius: 5px;\n & + & {\n margin-left: 16px;\n }\n ${(props) => (props.disabled ? disabled : notDisabled)}\n ${(props) => (props.active ? active : null)}\n ${(props) =>\n props.display\n ? display(props.display)\n : css`\n display: inline-block;\n `}\n`\n"],"names":["active","css","props","theme","colors","onahau","accent","notDisabled","mercury","disabled","Root","styled","div","withConfig","displayName","componentId","silver","display"],"mappings":"iNAIA,MAAMA,OAASC,OAAGA,IAAA,CAAA,cAAA,UAAA,MACDC,GAAUA,EAAMC,MAAMC,OAAOC,SAClCH,GAAUA,EAAMC,MAAMC,OAAOE,SAGzC,MAAMC,YAAcN,OAAAA,IAAG,CAAA,sBAAA,cAAA,MAEJC,GAAUA,EAAMC,MAAMC,OAAOI,SAG1CR,QAIN,MAAMS,SAAWR,OAAGA,IAGnB,CAAA,sCAEYS,KAAOC,gBAAAA,QAAOC,IAAGC,WAAA,CAAAC,YAAA,kBAAAC,YAAA,oBAAVJ,CAGRT,CAAAA,4CAAAA,mIAAAA,IAAAA,IAAAA,KAAAA,GAAUA,EAAMC,MAAMC,OAAOY,SAUpCd,GAAWA,EAAMO,SAAWA,SAAWF,cACvCL,GAAWA,EAAMF,OAASA,OAAS,OACnCE,GACDA,EAAMe,QACFA,QAAAA,QAAQf,EAAMe,SACdhB,OAAGA,IAAA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.mjs","sources":["../../../../src/components/ActionBtn/style.ts"],"sourcesContent":["import styled, { css } from 'styled-components'\nimport { display } from 'mixins/display'\nimport { ActionBtnProps } from './ActionBtn'\n\nconst active = css`\n background: ${(props) => props.theme.colors.onahau};\n color: ${(props) => props.theme.colors.accent};\n`\n\nconst notDisabled = css`\n &:hover {\n background: ${(props) => props.theme.colors.mercury};\n }\n &:active {\n ${active}\n }\n`\n\nconst disabled = css`\n cursor: default;\n opacity: 0.6;\n`\n\nexport const Root = styled.div<ActionBtnProps>`\n padding: 4px;\n background: transparent;\n color: ${(props) => props.theme.colors.silver};\n transition
|
|
1
|
+
{"version":3,"file":"style.mjs","sources":["../../../../src/components/ActionBtn/style.ts"],"sourcesContent":["import styled, { css } from 'styled-components'\nimport { display } from 'mixins/display'\nimport type { ActionBtnProps } from './ActionBtn'\n\nconst active = css`\n background: ${(props) => props.theme.colors.onahau};\n color: ${(props) => props.theme.colors.accent};\n`\n\nconst notDisabled = css`\n &:hover {\n background: ${(props) => props.theme.colors.mercury};\n }\n &:active {\n ${active}\n }\n`\n\nconst disabled = css`\n cursor: default;\n opacity: 0.6;\n`\n\nexport const Root = styled.div<ActionBtnProps>`\n padding: 4px;\n background: transparent;\n color: ${(props) => props.theme.colors.silver};\n transition:\n background 0.4s ease-out,\n color 0.6s ease-out;\n line-height: 0;\n cursor: pointer;\n border-radius: 5px;\n & + & {\n margin-left: 16px;\n }\n ${(props) => (props.disabled ? disabled : notDisabled)}\n ${(props) => (props.active ? active : null)}\n ${(props) =>\n props.display\n ? display(props.display)\n : css`\n display: inline-block;\n `}\n`\n"],"names":["active","css","props","theme","colors","onahau","accent","notDisabled","mercury","disabled","Root","styled","div","withConfig","displayName","componentId","silver","display"],"mappings":"yFAIA,MAAMA,OAASC,IAAG,CAAA,cAAA,UAAA,MACDC,GAAUA,EAAMC,MAAMC,OAAOC,SAClCH,GAAUA,EAAMC,MAAMC,OAAOE,SAGzC,MAAMC,YAAcN,IAAG,CAAA,sBAAA,cAAA,MAEJC,GAAUA,EAAMC,MAAMC,OAAOI,SAG1CR,QAIN,MAAMS,SAAWR,IAGhB,CAAA,sCAEYS,KAAOC,OAAOC,IAAGC,WAAA,CAAAC,YAAA,kBAAAC,YAAA,oBAAVJ,CAGRT,CAAAA,4CAAAA,mIAAAA,IAAAA,IAAAA,KAAAA,GAAUA,EAAMC,MAAMC,OAAOY,SAUpCd,GAAWA,EAAMO,SAAWA,SAAWF,cACvCL,GAAWA,EAAMF,OAASA,OAAS,OACnCE,GACDA,EAAMe,QACFA,QAAQf,EAAMe,SACdhB,IAAG,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var React=require('react');var styled=require('styled-components');var iconPack=require('@foxford/icon-pack');var useClassname=require('../../hooks/useClassname.js');var useConfigPriority=require('../../hooks/use-config-priority.js');var style=require('./style.js');var utils=require('./utils.js');var jsxRuntime=require('react/jsx-runtime');var Icon=require('../Icon/Icon.js');var Anchor=require('../Anchor/Anchor.js');var Button=require('../Button/Button.js');const getDefaultIcon=({isCompact:e,theme:t,type:n})=>{const o=e?16:24;switch(n){case'error':return jsxRuntime.jsx(iconPack.CloseCirlceFill,{color:t.colors['alert-bg-error-500'],size:o});case'info':return jsxRuntime.jsx(iconPack.NotifFill,{color:t.colors['content-brand-primary'],size:o});case'success':return jsxRuntime.jsx(iconPack.CheckCircleFill,{color:t.colors['alert-success'],size:o});case'warning':return jsxRuntime.jsx(iconPack.WarningTriangleFill,{color:t.colors['alert-warning'],size:o});default:return null}};const Alert=React.forwardRef(((e,t)=>{const n=styled.useTheme();const{cancelTimerText:o="Отменить",primaryAction:s,primaryActionProps:i={},secondaryAction:r,secondaryActionProps:
|
|
1
|
+
'use strict';var React=require('react');var styled=require('styled-components');var iconPack=require('@foxford/icon-pack');var useClassname=require('../../hooks/useClassname.js');var useConfigPriority=require('../../hooks/use-config-priority.js');var style=require('./style.js');var utils=require('./utils.js');var jsxRuntime=require('react/jsx-runtime');var Icon=require('../Icon/Icon.js');var Anchor=require('../Anchor/Anchor.js');var Button=require('../Button/Button.js');const getDefaultIcon=({isCompact:e,theme:t,type:n})=>{const o=e?16:24;switch(n){case'error':return jsxRuntime.jsx(iconPack.CloseCirlceFill,{color:t.colors['alert-bg-error-500'],size:o});case'info':return jsxRuntime.jsx(iconPack.NotifFill,{color:t.colors['content-brand-primary'],size:o});case'success':return jsxRuntime.jsx(iconPack.CheckCircleFill,{color:t.colors['alert-success'],size:o});case'warning':return jsxRuntime.jsx(iconPack.WarningTriangleFill,{color:t.colors['alert-warning'],size:o});default:return null}};const Alert=React.forwardRef(((e,t)=>{const n=styled.useTheme();const{cancelTimerText:o="Отменить",primaryAction:s,primaryActionProps:i={},secondaryAction:r,secondaryActionProps:l={},children:c,className:a,clear:u,customIcon:m,image:p,isCompact:x,link:j,linkProps:h={},noIcon:C,onClickCancelTimer:y,closeToast:d,onTimerFinish:k,size:R="s",style:f,textProps:g={},textWrap:A,timer:w,title:T,titleProps:I={},type:P,width:z=['fit-content','fit-content','fit-content','351px','304px','304px']}=useConfigPriority.useConfigPriority(n.components?.Alert,e);const v=useClassname.useClassname("Alert",a);const[b,q]=React.useState(!1);const W=Boolean(R==='l'||!!T||x&&(T||j||s||r));return jsxRuntime.jsxs(style.Root,{className:v,clear:u,column:W,isCompact:x,noIcon:C,onMouseEnter:()=>{w&&q(!0)},onMouseLeave:()=>{w&&q(!1)},ref:t,size:R,style:f,textWrap:A,type:P,width:z,withAction:!!s||!!r,withCloseIcon:!!d,withImage:!!p,withLink:!!j,withTimer:!!w,withTitle:!!T,children:[!C||m?jsxRuntime.jsxs(style.IconWrapper,{column:W,isCompact:x,withImage:!!p,children:[C||w||m||p?null:getDefaultIcon({isCompact:x,theme:n,type:P}),m?jsxRuntime.jsx(Icon.Icon,{name:m,size:x?16:24}):null,p,w?jsxRuntime.jsx(style.Timer,{isCompact:x,paused:b,timer:w,onTimerFinish:k,color:utils.countdownColor({theme:n,type:P})}):null]}):null,jsxRuntime.jsxs(style.ContentWrapper,{column:W,isCompact:x,children:[T?jsxRuntime.jsx(style.Title,{color:n.colors['content-onmain-primary'],isCompact:x,size:x?14:16,lineHeight:"m",...I,children:T}):null,jsxRuntime.jsx(style.Content,{appearance:"body",color:n.colors['content-onmain-primary'],column:W,isCompact:x,size:x?'xs':'s',textWrap:A,...g,children:c}),j?jsxRuntime.jsx(style.Link,{clear:u,column:W,isCompact:x,withTitle:!!T,children:jsxRuntime.jsx(Anchor.Anchor,{color:e.clear?n.colors['content-link']:n.colors['content-onmain-primary'],onClick:j.onClick,preset:"default",pseudo:!0,size:x?'s':'m',...h,children:j.content})}):null,s||r?jsxRuntime.jsxs(style.Actions,{column:W,isCompact:x,withTitle:!!T,children:[r?jsxRuntime.jsx(Button.Button,{black:!0,fontWeight:"normal",onClick:r.onClick,outline:!0,preset:"brand",size:x?'xs':'s',margin:4,...l,children:r.content}):null,s?jsxRuntime.jsx(Button.Button,{black:!0,fontWeight:"normal",onClick:s.onClick,preset:"brand",size:x?'xs':'s',margin:4,...i,children:s.content}):null]}):null]}),y?jsxRuntime.jsx(style.CancelTimer,{black:!0,clear:!0,fontWeight:"normal",isCompact:x,onClick:y,preset:"brand",size:x?'xs':'s',margin:4,children:o}):null,!d||x&&w?null:jsxRuntime.jsx(style.CloseIcon,{"aria-label":"close",onClick:d,type:"button",withTimer:!!w,children:jsxRuntime.jsx(iconPack.Close,{color:n.colors['content-onmain-primary'],size:x?18:24})})]})}));Alert.displayName="Alert",exports.Alert=Alert,exports.COMPONENT_NAME="Alert";
|
|
2
2
|
//# sourceMappingURL=Alert.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Alert.js","sources":["../../../../src/components/Alert/Alert.tsx"],"sourcesContent":["import { forwardRef, useState } from 'react'\nimport { useTheme } from 'styled-components'\nimport { CheckCircleFill, Close, CloseCirlceFill, NotifFill, WarningTriangleFill } from '@foxford/icon-pack'\nimport type { DefaultTheme } from 'styled-components'\n\nimport { useClassname } from 'hooks/useClassname'\nimport { useConfigPriority } from 'hooks/use-config-priority'\n\nimport { Anchor } from '../Anchor'\nimport { Button } from '../Button'\nimport { Icon } from '../Icon'\n\nimport * as Styled from './style'\n\nimport type { AlertProps } from './types'\nimport { countdownColor } from './utils'\n\nconst getDefaultIcon = ({\n isCompact,\n theme,\n type,\n}: Pick<AlertProps, 'isCompact' | 'type'> & { theme: DefaultTheme }) => {\n const size = isCompact ? 16 : 24\n\n switch (type) {\n case 'error':\n return <CloseCirlceFill color={theme.colors['alert-bg-error-500']} size={size} />\n case 'info':\n return <NotifFill color={theme.colors['content-brand-primary']} size={size} />\n case 'success':\n return <CheckCircleFill color={theme.colors['alert-success']} size={size} />\n case 'warning':\n return <WarningTriangleFill color={theme.colors['alert-warning']} size={size} />\n default:\n return null\n }\n}\n\nconst COMPONENT_NAME = 'Alert'\n\nconst Alert = forwardRef<HTMLDivElement, AlertProps>((props, ref) => {\n const theme = useTheme()\n\n const {\n cancelTimerText = 'Отменить',\n primaryAction,\n primaryActionProps = {},\n secondaryAction,\n secondaryActionProps = {},\n children,\n className,\n clear,\n customIcon,\n image,\n isCompact,\n link,\n linkProps = {},\n noIcon,\n onClickCancelTimer,\n closeToast,\n onTimerFinish,\n size = 's',\n style,\n textProps = {},\n textWrap,\n timer,\n title,\n titleProps = {},\n type,\n width = ['fit-content', 'fit-content', 'fit-content', '351px', '304px', '304px'],\n } = useConfigPriority<AlertProps>(theme.components?.Alert, props)\n const _className = useClassname(COMPONENT_NAME, className)\n const [timerOnPause, setTimerOnPause] = useState(false)\n\n const column = Boolean(size === 'l' || !!title || (isCompact && (title || link || primaryAction || secondaryAction)))\n\n const handleMouseEnter = () => {\n if (timer) {\n setTimerOnPause(true)\n }\n }\n\n const handleMouseLeave = () => {\n if (timer) {\n setTimerOnPause(false)\n }\n }\n\n return (\n <Styled.Root\n className={_className}\n clear={clear}\n column={column}\n isCompact={isCompact}\n noIcon={noIcon}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n ref={ref}\n size={size}\n style={style}\n textWrap={textWrap}\n type={type}\n width={width}\n withAction={!!primaryAction || !!secondaryAction}\n withCloseIcon={!!closeToast}\n withImage={!!image}\n withLink={!!link}\n withTimer={!!timer}\n withTitle={!!title}\n >\n {(!noIcon || customIcon) && (\n <Styled.IconWrapper column={column} isCompact={isCompact} withImage={!!image}>\n {!noIcon && !timer && !customIcon && !image && getDefaultIcon({ isCompact, theme, type })}\n {customIcon && <Icon name={customIcon} size={isCompact ? 16 : 24} />}\n {image}\n {timer && (\n <Styled.Timer\n isCompact={isCompact}\n paused={timerOnPause}\n timer={timer}\n onTimerFinish={onTimerFinish}\n color={countdownColor({ theme, type })}\n />\n )}\n </Styled.IconWrapper>\n )}\n\n <Styled.ContentWrapper column={column} isCompact={isCompact}>\n {title && (\n <Styled.Title\n color={theme.colors['content-onmain-primary']}\n isCompact={isCompact}\n size={isCompact ? 14 : 16}\n lineHeight='m'\n {...titleProps}\n >\n {title}\n </Styled.Title>\n )}\n\n <Styled.Content\n appearance='body'\n color={theme.colors['content-onmain-primary']}\n column={column}\n isCompact={isCompact}\n size={isCompact ? 'xs' : 's'}\n textWrap={textWrap}\n {...textProps}\n >\n {children}\n </Styled.Content>\n\n {link && (\n <Styled.Link clear={clear} column={column} isCompact={isCompact} withTitle={!!title}>\n <Anchor\n color={props.clear ? theme.colors['content-link'] : theme.colors['content-onmain-primary']}\n onClick={link.onClick}\n preset='default'\n pseudo\n size={isCompact ? 's' : 'm'}\n {...linkProps}\n >\n {link.content}\n </Anchor>\n </Styled.Link>\n )}\n\n {(primaryAction || secondaryAction) && (\n <Styled.Actions column={column} isCompact={isCompact} withTitle={!!title}>\n {secondaryAction && (\n <Button\n black\n fontWeight='normal'\n onClick={secondaryAction.onClick}\n outline\n preset='brand'\n size={isCompact ? 'xs' : 's'}\n margin={4}\n {...secondaryActionProps}\n >\n {secondaryAction.content}\n </Button>\n )}\n\n {primaryAction && (\n <Button\n black\n fontWeight='normal'\n onClick={primaryAction.onClick}\n preset='brand'\n size={isCompact ? 'xs' : 's'}\n margin={4}\n {...primaryActionProps}\n >\n {primaryAction.content}\n </Button>\n )}\n </Styled.Actions>\n )}\n </Styled.ContentWrapper>\n\n {onClickCancelTimer && (\n <Styled.CancelTimer\n black\n clear\n fontWeight='normal'\n isCompact={isCompact}\n onClick={onClickCancelTimer}\n preset='brand'\n size={isCompact ? 'xs' : 's'}\n margin={4}\n >\n {cancelTimerText}\n </Styled.CancelTimer>\n )}\n\n {closeToast && (isCompact ? !timer : true) && (\n <Styled.CloseIcon aria-label='close' onClick={closeToast} type='button' withTimer={!!timer}>\n <Close color={theme.colors['content-onmain-primary']} size={isCompact ? 18 : 24} />\n </Styled.CloseIcon>\n )}\n </Styled.Root>\n )\n})\n\nAlert.displayName = COMPONENT_NAME\n\nexport { Alert, COMPONENT_NAME }\n\nexport type { AlertProps }\n"],"names":["getDefaultIcon","isCompact","theme","type","size","_jsx","CloseCirlceFill","color","colors","NotifFill","CheckCircleFill","WarningTriangleFill","Alert","forwardRef","props","ref","useTheme","cancelTimerText","primaryAction","primaryActionProps","secondaryAction","secondaryActionProps","children","className","clear","customIcon","image","link","linkProps","noIcon","onClickCancelTimer","closeToast","onTimerFinish","style","textProps","textWrap","timer","title","titleProps","width","useConfigPriority","components","_className","useClassname","timerOnPause","setTimerOnPause","useState","column","Boolean","_jsxs","Styled","onMouseEnter","handleMouseEnter","onMouseLeave","handleMouseLeave","withAction","withCloseIcon","withImage","withLink","withTimer","withTitle","jsx","Icon","name","paused","countdownColor","jsxs","lineHeight","appearance","Anchor","onClick","preset","pseudo","content","Button","black","fontWeight","outline","margin","Close","displayName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Alert.js","sources":["../../../../src/components/Alert/Alert.tsx"],"sourcesContent":["import { forwardRef, useState } from 'react'\nimport { useTheme } from 'styled-components'\nimport { CheckCircleFill, Close, CloseCirlceFill, NotifFill, WarningTriangleFill } from '@foxford/icon-pack'\nimport type { DefaultTheme } from 'styled-components'\n\nimport { useClassname } from 'hooks/useClassname'\nimport { useConfigPriority } from 'hooks/use-config-priority'\n\nimport { Anchor } from '../Anchor'\nimport { Button } from '../Button'\nimport { Icon } from '../Icon'\n\nimport * as Styled from './style'\n\nimport type { AlertProps } from './types'\nimport { countdownColor } from './utils'\n\nconst getDefaultIcon = ({\n isCompact,\n theme,\n type,\n}: Pick<AlertProps, 'isCompact' | 'type'> & { theme: DefaultTheme }) => {\n const size = isCompact ? 16 : 24\n\n switch (type) {\n case 'error':\n return <CloseCirlceFill color={theme.colors['alert-bg-error-500']} size={size} />\n case 'info':\n return <NotifFill color={theme.colors['content-brand-primary']} size={size} />\n case 'success':\n return <CheckCircleFill color={theme.colors['alert-success']} size={size} />\n case 'warning':\n return <WarningTriangleFill color={theme.colors['alert-warning']} size={size} />\n default:\n return null\n }\n}\n\nconst COMPONENT_NAME = 'Alert'\n\nconst Alert = forwardRef<HTMLDivElement, AlertProps>((props, ref) => {\n const theme = useTheme()\n\n const {\n cancelTimerText = 'Отменить',\n primaryAction,\n primaryActionProps = {},\n secondaryAction,\n secondaryActionProps = {},\n children,\n className,\n clear,\n customIcon,\n image,\n isCompact,\n link,\n linkProps = {},\n noIcon,\n onClickCancelTimer,\n closeToast,\n onTimerFinish,\n size = 's',\n style,\n textProps = {},\n textWrap,\n timer,\n title,\n titleProps = {},\n type,\n width = ['fit-content', 'fit-content', 'fit-content', '351px', '304px', '304px'],\n } = useConfigPriority<AlertProps>(theme.components?.Alert, props)\n const _className = useClassname(COMPONENT_NAME, className)\n const [timerOnPause, setTimerOnPause] = useState(false)\n\n const column = Boolean(size === 'l' || !!title || (isCompact && (title || link || primaryAction || secondaryAction)))\n\n const handleMouseEnter = () => {\n if (timer) {\n setTimerOnPause(true)\n }\n }\n\n const handleMouseLeave = () => {\n if (timer) {\n setTimerOnPause(false)\n }\n }\n\n return (\n <Styled.Root\n className={_className}\n clear={clear}\n column={column}\n isCompact={isCompact}\n noIcon={noIcon}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n ref={ref}\n size={size}\n style={style}\n textWrap={textWrap}\n type={type}\n width={width}\n withAction={!!primaryAction || !!secondaryAction}\n withCloseIcon={!!closeToast}\n withImage={!!image}\n withLink={!!link}\n withTimer={!!timer}\n withTitle={!!title}\n >\n {!noIcon || customIcon ? (\n <Styled.IconWrapper column={column} isCompact={isCompact} withImage={!!image}>\n {!noIcon && !timer && !customIcon && !image ? getDefaultIcon({ isCompact, theme, type }) : null}\n {customIcon ? <Icon name={customIcon} size={isCompact ? 16 : 24} /> : null}\n {image}\n {timer ? (\n <Styled.Timer\n isCompact={isCompact}\n paused={timerOnPause}\n timer={timer}\n onTimerFinish={onTimerFinish}\n color={countdownColor({ theme, type })}\n />\n ) : null}\n </Styled.IconWrapper>\n ) : null}\n\n <Styled.ContentWrapper column={column} isCompact={isCompact}>\n {title ? (\n <Styled.Title\n color={theme.colors['content-onmain-primary']}\n isCompact={isCompact}\n size={isCompact ? 14 : 16}\n lineHeight='m'\n {...titleProps}\n >\n {title}\n </Styled.Title>\n ) : null}\n\n <Styled.Content\n appearance='body'\n color={theme.colors['content-onmain-primary']}\n column={column}\n isCompact={isCompact}\n size={isCompact ? 'xs' : 's'}\n textWrap={textWrap}\n {...textProps}\n >\n {children}\n </Styled.Content>\n\n {link ? (\n <Styled.Link clear={clear} column={column} isCompact={isCompact} withTitle={!!title}>\n <Anchor\n color={props.clear ? theme.colors['content-link'] : theme.colors['content-onmain-primary']}\n // eslint-disable-next-line react/jsx-handler-names\n onClick={link.onClick}\n preset='default'\n pseudo\n size={isCompact ? 's' : 'm'}\n {...linkProps}\n >\n {link.content}\n </Anchor>\n </Styled.Link>\n ) : null}\n\n {primaryAction || secondaryAction ? (\n <Styled.Actions column={column} isCompact={isCompact} withTitle={!!title}>\n {secondaryAction ? (\n <Button\n black\n fontWeight='normal'\n // eslint-disable-next-line react/jsx-handler-names\n onClick={secondaryAction.onClick}\n outline\n preset='brand'\n size={isCompact ? 'xs' : 's'}\n margin={4}\n {...secondaryActionProps}\n >\n {secondaryAction.content}\n </Button>\n ) : null}\n\n {primaryAction ? (\n <Button\n black\n fontWeight='normal'\n // eslint-disable-next-line react/jsx-handler-names\n onClick={primaryAction.onClick}\n preset='brand'\n size={isCompact ? 'xs' : 's'}\n margin={4}\n {...primaryActionProps}\n >\n {primaryAction.content}\n </Button>\n ) : null}\n </Styled.Actions>\n ) : null}\n </Styled.ContentWrapper>\n\n {onClickCancelTimer ? (\n <Styled.CancelTimer\n black\n clear\n fontWeight='normal'\n isCompact={isCompact}\n onClick={onClickCancelTimer}\n preset='brand'\n size={isCompact ? 'xs' : 's'}\n margin={4}\n >\n {cancelTimerText}\n </Styled.CancelTimer>\n ) : null}\n\n {closeToast && (isCompact ? !timer : true) ? (\n <Styled.CloseIcon aria-label='close' onClick={closeToast} type='button' withTimer={!!timer}>\n <Close color={theme.colors['content-onmain-primary']} size={isCompact ? 18 : 24} />\n </Styled.CloseIcon>\n ) : null}\n </Styled.Root>\n )\n})\n\nAlert.displayName = COMPONENT_NAME\n\nexport { Alert, COMPONENT_NAME }\n\nexport type { AlertProps }\n"],"names":["getDefaultIcon","isCompact","theme","type","size","_jsx","CloseCirlceFill","color","colors","NotifFill","CheckCircleFill","WarningTriangleFill","Alert","forwardRef","props","ref","useTheme","cancelTimerText","primaryAction","primaryActionProps","secondaryAction","secondaryActionProps","children","className","clear","customIcon","image","link","linkProps","noIcon","onClickCancelTimer","closeToast","onTimerFinish","style","textProps","textWrap","timer","title","titleProps","width","useConfigPriority","components","_className","useClassname","timerOnPause","setTimerOnPause","useState","column","Boolean","_jsxs","Styled","onMouseEnter","handleMouseEnter","onMouseLeave","handleMouseLeave","withAction","withCloseIcon","withImage","withLink","withTimer","withTitle","Icon","name","paused","countdownColor","jsxs","jsx","lineHeight","appearance","Anchor","onClick","preset","pseudo","content","Button","black","fontWeight","outline","margin","Close","displayName"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{forwardRef,useState}from'react';import{useTheme}from'styled-components';import{Close,WarningTriangleFill,CheckCircleFill,NotifFill,CloseCirlceFill}from'@foxford/icon-pack';import{useClassname}from'../../hooks/useClassname.mjs';import{useConfigPriority}from'../../hooks/use-config-priority.mjs';import{Root,IconWrapper,Timer,ContentWrapper,Title,Content,Link,Actions,CancelTimer,CloseIcon}from'./style.mjs';import{countdownColor}from'./utils.mjs';import{jsxs,jsx}from'react/jsx-runtime';import{Icon}from'../Icon/Icon.mjs';import{Anchor}from'../Anchor/Anchor.mjs';import{Button}from'../Button/Button.mjs';const getDefaultIcon=({isCompact:o,theme:e,type:
|
|
1
|
+
import{forwardRef,useState}from'react';import{useTheme}from'styled-components';import{Close,WarningTriangleFill,CheckCircleFill,NotifFill,CloseCirlceFill}from'@foxford/icon-pack';import{useClassname}from'../../hooks/useClassname.mjs';import{useConfigPriority}from'../../hooks/use-config-priority.mjs';import{Root,IconWrapper,Timer,ContentWrapper,Title,Content,Link,Actions,CancelTimer,CloseIcon}from'./style.mjs';import{countdownColor}from'./utils.mjs';import{jsxs,jsx}from'react/jsx-runtime';import{Icon}from'../Icon/Icon.mjs';import{Anchor}from'../Anchor/Anchor.mjs';import{Button}from'../Button/Button.mjs';const getDefaultIcon=({isCompact:o,theme:e,type:n})=>{const t=o?16:24;switch(n){case'error':return jsx(CloseCirlceFill,{color:e.colors['alert-bg-error-500'],size:t});case'info':return jsx(NotifFill,{color:e.colors['content-brand-primary'],size:t});case'success':return jsx(CheckCircleFill,{color:e.colors['alert-success'],size:t});case'warning':return jsx(WarningTriangleFill,{color:e.colors['alert-warning'],size:t});default:return null}};const COMPONENT_NAME='Alert';const Alert=forwardRef(((o,e)=>{const n=useTheme();const{cancelTimerText:t="Отменить",primaryAction:r,primaryActionProps:i={},secondaryAction:l,secondaryActionProps:s={},children:c,className:a,clear:m,customIcon:p,image:u,isCompact:C,link:h,linkProps:x={},noIcon:f,onClickCancelTimer:d,closeToast:j,onTimerFinish:y,size:k="s",style:T,textProps:g={},textWrap:A,timer:w,title:I,titleProps:z={},type:W,width:b=['fit-content','fit-content','fit-content','351px','304px','304px']}=useConfigPriority(n.components?.Alert,o);const N=useClassname("Alert",a);const[F,P]=useState(!1);const B=Boolean(k==='l'||!!I||C&&(I||h||r||l));return jsxs(Root,{className:N,clear:m,column:B,isCompact:C,noIcon:f,onMouseEnter:()=>{w&&P(!0)},onMouseLeave:()=>{w&&P(!1)},ref:e,size:k,style:T,textWrap:A,type:W,width:b,withAction:!!r||!!l,withCloseIcon:!!j,withImage:!!u,withLink:!!h,withTimer:!!w,withTitle:!!I,children:[!f||p?jsxs(IconWrapper,{column:B,isCompact:C,withImage:!!u,children:[f||w||p||u?null:getDefaultIcon({isCompact:C,theme:n,type:W}),p?jsx(Icon,{name:p,size:C?16:24}):null,u,w?jsx(Timer,{isCompact:C,paused:F,timer:w,onTimerFinish:y,color:countdownColor({theme:n,type:W})}):null]}):null,jsxs(ContentWrapper,{column:B,isCompact:C,children:[I?jsx(Title,{color:n.colors['content-onmain-primary'],isCompact:C,size:C?14:16,lineHeight:"m",...z,children:I}):null,jsx(Content,{appearance:"body",color:n.colors['content-onmain-primary'],column:B,isCompact:C,size:C?'xs':'s',textWrap:A,...g,children:c}),h?jsx(Link,{clear:m,column:B,isCompact:C,withTitle:!!I,children:jsx(Anchor,{color:o.clear?n.colors['content-link']:n.colors['content-onmain-primary'],onClick:h.onClick,preset:"default",pseudo:!0,size:C?'s':'m',...x,children:h.content})}):null,r||l?jsxs(Actions,{column:B,isCompact:C,withTitle:!!I,children:[l?jsx(Button,{black:!0,fontWeight:"normal",onClick:l.onClick,outline:!0,preset:"brand",size:C?'xs':'s',margin:4,...s,children:l.content}):null,r?jsx(Button,{black:!0,fontWeight:"normal",onClick:r.onClick,preset:"brand",size:C?'xs':'s',margin:4,...i,children:r.content}):null]}):null]}),d?jsx(CancelTimer,{black:!0,clear:!0,fontWeight:"normal",isCompact:C,onClick:d,preset:"brand",size:C?'xs':'s',margin:4,children:t}):null,!j||C&&w?null:jsx(CloseIcon,{"aria-label":"close",onClick:j,type:"button",withTimer:!!w,children:jsx(Close,{color:n.colors['content-onmain-primary'],size:C?18:24})})]})}));Alert.displayName="Alert";export{Alert,COMPONENT_NAME};
|
|
2
2
|
//# sourceMappingURL=Alert.mjs.map
|