@foxford/ui 2.105.0 → 2.106.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/components/AddElement/AddElement.js +1 -1
  2. package/components/AddElement/AddElement.js.map +1 -1
  3. package/components/AddElement/AddElement.mjs +1 -1
  4. package/components/AddElement/AddElement.mjs.map +1 -1
  5. package/components/Anchor/Anchor.js +1 -1
  6. package/components/Anchor/Anchor.js.map +1 -1
  7. package/components/Anchor/Anchor.mjs +1 -1
  8. package/components/Anchor/Anchor.mjs.map +1 -1
  9. package/components/DialogComponent/Header.js +1 -1
  10. package/components/DialogComponent/Header.js.map +1 -1
  11. package/components/DialogComponent/Header.mjs +1 -1
  12. package/components/DialogComponent/Header.mjs.map +1 -1
  13. package/components/Dropdown/Dropdown.js +1 -1
  14. package/components/Dropdown/Dropdown.js.map +1 -1
  15. package/components/Dropdown/Dropdown.mjs +1 -1
  16. package/components/Dropdown/Dropdown.mjs.map +1 -1
  17. package/components/Dropdown/DropdownListItem.js +1 -1
  18. package/components/Dropdown/DropdownListItem.js.map +1 -1
  19. package/components/Dropdown/DropdownListItem.mjs +1 -1
  20. package/components/Dropdown/DropdownListItem.mjs.map +1 -1
  21. package/components/Dropdown/DropdownMenuMultiple.js +1 -1
  22. package/components/Dropdown/DropdownMenuMultiple.js.map +1 -1
  23. package/components/Dropdown/DropdownMenuMultiple.mjs +1 -1
  24. package/components/Dropdown/DropdownMenuMultiple.mjs.map +1 -1
  25. package/components/Dropdown/sizes.js +1 -1
  26. package/components/Dropdown/sizes.js.map +1 -1
  27. package/components/Dropdown/sizes.mjs +1 -1
  28. package/components/Dropdown/sizes.mjs.map +1 -1
  29. package/components/FormLabel/FormLabel.js +1 -1
  30. package/components/FormLabel/FormLabel.js.map +1 -1
  31. package/components/FormLabel/FormLabel.mjs +1 -1
  32. package/components/FormLabel/FormLabel.mjs.map +1 -1
  33. package/components/FormLabel/constants.js +1 -1
  34. package/components/FormLabel/constants.js.map +1 -1
  35. package/components/FormLabel/constants.mjs +1 -1
  36. package/components/FormLabel/constants.mjs.map +1 -1
  37. package/components/IconButton/IconButton.js +1 -1
  38. package/components/IconButton/IconButton.js.map +1 -1
  39. package/components/IconButton/IconButton.mjs +1 -1
  40. package/components/IconButton/IconButton.mjs.map +1 -1
  41. package/components/IconButton/sizes.js +1 -1
  42. package/components/IconButton/sizes.js.map +1 -1
  43. package/components/IconButton/sizes.mjs +1 -1
  44. package/components/IconButton/sizes.mjs.map +1 -1
  45. package/components/ListItem/ListItem.js +1 -1
  46. package/components/ListItem/ListItem.js.map +1 -1
  47. package/components/ListItem/ListItem.mjs +1 -1
  48. package/components/ListItem/ListItem.mjs.map +1 -1
  49. package/components/ListItem/sizes.js +2 -0
  50. package/components/ListItem/sizes.js.map +1 -0
  51. package/components/ListItem/sizes.mjs +2 -0
  52. package/components/ListItem/sizes.mjs.map +1 -0
  53. package/components/ListItem/style.js +1 -1
  54. package/components/ListItem/style.js.map +1 -1
  55. package/components/ListItem/style.mjs +1 -1
  56. package/components/ListItem/style.mjs.map +1 -1
  57. package/components/MenuDivider/MenuDivider.js +1 -1
  58. package/components/MenuDivider/MenuDivider.js.map +1 -1
  59. package/components/MenuDivider/MenuDivider.mjs +1 -1
  60. package/components/MenuDivider/MenuDivider.mjs.map +1 -1
  61. package/components/Notification/Notification.js +1 -1
  62. package/components/Notification/Notification.js.map +1 -1
  63. package/components/Notification/Notification.mjs +1 -1
  64. package/components/Notification/Notification.mjs.map +1 -1
  65. package/components/Slot/Slot.js +1 -1
  66. package/components/Slot/Slot.js.map +1 -1
  67. package/components/Slot/Slot.mjs +1 -1
  68. package/components/Slot/Slot.mjs.map +1 -1
  69. package/dts/index.d.ts +426 -260
  70. package/hocs/withMergedProps.js.map +1 -1
  71. package/hocs/withMergedProps.mjs.map +1 -1
  72. package/hooks/useMergedProps.js +1 -1
  73. package/hooks/useMergedProps.js.map +1 -1
  74. package/hooks/useMergedProps.mjs +1 -1
  75. package/hooks/useMergedProps.mjs.map +1 -1
  76. package/package.json +2 -2
  77. package/shared/utils/createPolymorphicComponentWithRef.js +2 -0
  78. package/shared/utils/createPolymorphicComponentWithRef.js.map +1 -0
  79. package/shared/utils/createPolymorphicComponentWithRef.mjs +2 -0
  80. package/shared/utils/createPolymorphicComponentWithRef.mjs.map +1 -0
  81. package/components/ListItem/constants.js +0 -2
  82. package/components/ListItem/constants.js.map +0 -1
  83. package/components/ListItem/constants.mjs +0 -2
  84. package/components/ListItem/constants.mjs.map +0 -1
  85. package/shared/utils/polymorphic.js +0 -2
  86. package/shared/utils/polymorphic.js.map +0 -1
  87. package/shared/utils/polymorphic.mjs +0 -2
  88. package/shared/utils/polymorphic.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Dropdown.mjs","sources":["../../../../src/components/Dropdown/Dropdown.tsx"],"sourcesContent":["import { forwardRef, useState, useRef, useEffect, useLayoutEffect, useMemo, useCallback } from 'react'\nimport { nanoid } from 'nanoid'\nimport { ChevronDown, Close } from '@foxford/icon-pack'\nimport { withMergedProps } from 'hocs/withMergedProps'\nimport type { MergedProps } from 'hocs/withMergedProps'\nimport { useScrollMonitor } from 'hooks/useScrollMonitor'\nimport { focusFirstFocusable, focusLastFocusable } from 'shared/utils/dom'\nimport { createDebouncedCallback } from 'shared/utils/misc'\nimport { keyboardKeys } from 'shared/constants'\nimport type { Nullable } from 'shared/types'\nimport { FormInput } from 'components/FormInput'\nimport { FormInputLabel } from 'components/FormInputLabel'\nimport { Chip } from 'components/Chip'\nimport { IconButton } from 'components/IconButton'\nimport { Icon } from 'components/Icon'\nimport type { IconProps } from 'components/Icon'\nimport { Slot } from 'components/Slot'\nimport { DropdownMenu } from './DropdownMenu'\nimport { useFilteredOptions, useLoadedOptions } from './hooks'\nimport { SIZES, SIZES_ICON } from './sizes'\nimport { getDropdownInputText, getDropdownSelectedOption } from './utils'\nimport * as Styled from './style'\nimport type { DropdownProps, DropdownOption, DropdownOptionGroup } from './types'\nimport { DropdownMenuMultiple } from './DropdownMenuMultiple'\nimport { DropdownMenuSingle } from './DropdownMenuSingle'\n\nconst COMPONENT_NAME = 'Dropdown'\n\n/**\n *\n * Компонент для выбора одной или нескольких опций из числа доступных.\n *\n * Поддерживается \"ref\" и все нативные атрибуты \\<div\\> элемента.\n */\nconst Dropdown: React.ForwardRefExoticComponent<DropdownProps> = withMergedProps<DropdownProps, HTMLDivElement>(\n forwardRef<HTMLDivElement, MergedProps<DropdownProps>>((props, ref) => {\n const {\n size = 'm',\n name = 'fox-dropdown',\n labelPosition = 'dynamic',\n searchable = true,\n primary = true,\n optionsMultiToggle = true,\n iconProps = {},\n menuProps = {},\n loadingIconProps = {},\n optionsEmptyIconProps = {},\n loading,\n autoFocus,\n disableAutoScrollToSelectedOption,\n closeMenuOnScroll,\n scrollMonitorTarget,\n contrast,\n selectedOption,\n defaultSelectedOption,\n icon,\n addonLeft,\n inputMode,\n loadingMessage,\n loadingIcon,\n maxLength,\n multiple,\n clearable,\n onChangeInput,\n onCloseMenu,\n onOpenMenu,\n onSelectOption,\n options,\n loadOptions,\n renderOption,\n groupSelectedOptions,\n optionsMultiToggleCaption,\n optionsEmptyMessage,\n optionsEmptyIcon,\n palette,\n placeholder,\n readOnly,\n required,\n status,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n form,\n label,\n ...rootProps\n } = props\n\n const sizeProps = {\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n }\n\n const iconBaseProps: IconProps = {\n ...sizeProps,\n ...iconProps,\n sizes: SIZES_ICON,\n color: rootProps.disabled ? 'content-disabled' : 'content-onmain-tertiary',\n }\n\n const formInputLabelId = useMemo(() => rootProps.id ?? `${name}-${nanoid()}`, [name, rootProps.id])\n const inputLabelId = useMemo(() => nanoid(), [])\n const menuListId = useMemo(() => nanoid(), [])\n\n const [filteredOptions, getFilteredOptions] = useFilteredOptions({\n options,\n })\n\n const [loadedOptions, optionsLoading, getLoadedOptions] = useLoadedOptions({\n loadOptions,\n options,\n })\n\n const [dropdownSelectedOption, setDropdownSelectedOption] = useState<DropdownOption[]>(() =>\n getDropdownSelectedOption(selectedOption !== undefined ? selectedOption : defaultSelectedOption, multiple)\n )\n\n const [inputText, setInputText] = useState<string>(() => getDropdownInputText(dropdownSelectedOption, multiple))\n\n const [focusWithin, setFocusWithin] = useState<boolean>(false)\n\n const [menuOpenRequest, setMenuOpenRequest] = useState<boolean>(false)\n\n const menuOptions: (DropdownOption | DropdownOptionGroup)[] = loadOptions ? loadedOptions : filteredOptions\n const menuOptionsLoading = loadOptions ? (loading ?? optionsLoading) : loading\n\n const menuOpen = menuOpenRequest && !rootProps.disabled\n\n const inputRequired = required && dropdownSelectedOption.length === 0\n const inputActive = Boolean(menuOpen || inputText || focusWithin)\n\n const inputRef = useRef<HTMLInputElement>(null)\n const [menuRef, setMenuRef] = useState<Nullable<HTMLElement>>(null)\n const menuListRef = useRef<HTMLUListElement>(null)\n const selectedOptionRef = useRef<HTMLElement>(null)\n const menuOpenPrevRef = useRef<boolean>(menuOpen)\n\n const updateInputText = useCallback(\n (inputTextValue: string) => {\n setInputText(inputTextValue)\n\n if (onChangeInput) {\n onChangeInput(inputTextValue)\n }\n },\n [onChangeInput]\n )\n\n const updateOptions = useCallback(\n (inputTextValue: string) => {\n if (loadOptions) {\n getLoadedOptions(inputTextValue)\n } else {\n getFilteredOptions(inputTextValue)\n }\n },\n [loadOptions, getLoadedOptions, getFilteredOptions]\n )\n\n const updateOptionsDebounced = useMemo(() => {\n return createDebouncedCallback(updateOptions, 150)\n }, [updateOptions])\n\n const preventBlur = (evt: React.PointerEvent<HTMLDivElement> | React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n if (\n evt.target !== inputRef.current &&\n evt.target instanceof Node &&\n (evt.currentTarget.contains(evt.target) ||\n (menuProps.renderInPortal && menuOpen && menuRef && menuRef.contains(evt.target)))\n ) {\n evt.preventDefault()\n }\n }\n\n useScrollMonitor({\n target: scrollMonitorTarget,\n onScrollStart: () => {\n if (closeMenuOnScroll && menuOpen) {\n inputRef.current?.focus()\n setMenuOpenRequest(false)\n }\n },\n })\n\n useLayoutEffect(() => {\n if (selectedOption === undefined) return\n\n if (!multiple && !menuOpen) {\n updateInputText(getDropdownInputText(selectedOption))\n }\n setDropdownSelectedOption(getDropdownSelectedOption(selectedOption, multiple))\n }, [multiple, selectedOption, menuOpen, updateInputText])\n\n useEffect(() => {\n if (menuOpen === menuOpenPrevRef.current) return\n\n if (menuOpen && onOpenMenu) onOpenMenu()\n if (!menuOpen && onCloseMenu) onCloseMenu()\n\n menuOpenPrevRef.current = menuOpen\n }, [menuOpen, onCloseMenu, onOpenMenu])\n\n useEffect(() => {\n if (\n !multiple &&\n !disableAutoScrollToSelectedOption &&\n menuOpen &&\n !menuOptionsLoading &&\n inputText.length === 0 &&\n menuRef &&\n selectedOptionRef.current\n ) {\n const menuRect = menuRef.getBoundingClientRect()\n const selectedOptionRect = selectedOptionRef.current.getBoundingClientRect()\n\n if (selectedOptionRect.top < menuRect.top || selectedOptionRect.bottom > menuRect.bottom) {\n setTimeout(() => {\n if (menuRef && selectedOptionRef.current) {\n menuRef.scrollTo(0, selectedOptionRef.current.offsetTop)\n }\n }, 0)\n }\n }\n }, [multiple, disableAutoScrollToSelectedOption, menuOpen, menuOptionsLoading, inputText, menuRef])\n\n useEffect(() => {\n if (rootProps.disabled) {\n setFocusWithin(false)\n }\n }, [rootProps.disabled])\n\n return (\n <FormInputLabel\n {...rootProps}\n {...sizeProps}\n ref={ref}\n id={formInputLabelId}\n onColored={contrast}\n primary={primary}\n error={status === 'error'}\n success={status === 'success'}\n focus={focusWithin}\n palette={{\n color: rootProps.disabled ? palette.labelColorDisabled : palette.labelColor,\n backgroundColor: rootProps.disabled ? palette.backgroundColorDisabled : palette.backgroundColor,\n backgroundColorHover: rootProps.disabled ? palette.backgroundColorDisabled : palette.backgroundColorHover,\n borderColor: rootProps.disabled ? palette.borderColorDisabled : palette.borderColor,\n }}\n onClick={(evt) => {\n if (rootProps.onClick) rootProps.onClick(evt)\n\n if (rootProps.disabled) return\n\n inputRef.current?.focus()\n\n if (!menuOpen) {\n setMenuOpenRequest(true)\n\n updateOptions('')\n if (searchable) {\n updateInputText('')\n }\n } else if (menuRef && evt.target instanceof Node && !menuRef.contains(evt.target)) {\n setMenuOpenRequest(false)\n updateInputText(getDropdownInputText(dropdownSelectedOption, multiple))\n }\n }}\n onPointerDown={(evt) => {\n if (rootProps.onPointerDown) rootProps.onPointerDown(evt)\n\n preventBlur(evt)\n }}\n onMouseDown={(evt) => {\n if (rootProps.onMouseDown) rootProps.onMouseDown(evt)\n\n if (!window.PointerEvent) preventBlur(evt)\n }}\n onFocus={(evt) => {\n if (rootProps.onFocus) rootProps.onFocus(evt)\n\n setFocusWithin(true)\n\n if (inputRef.current && evt.target === inputRef.current && searchable && !multiple && !menuOpen) {\n updateInputText('')\n }\n }}\n onBlur={(evt) => {\n if (rootProps.onBlur) rootProps.onBlur(evt)\n\n if (\n evt.currentTarget.contains(evt.relatedTarget) ||\n (menuProps.renderInPortal && menuOpen && menuRef && menuRef.contains(evt.relatedTarget))\n ) {\n return\n }\n\n setFocusWithin(false)\n updateInputText(getDropdownInputText(dropdownSelectedOption, multiple))\n setMenuOpenRequest(false)\n }}\n input={\n <>\n {inputRequired && !searchable && !readOnly ? (\n <Styled.InputMimic\n required\n type='text'\n inputMode='none'\n form={form}\n tabIndex={-1}\n onFocus={() => {\n inputRef.current?.focus()\n }}\n />\n ) : null}\n <FormInput\n {...sizeProps}\n ref={inputRef}\n role='combobox'\n aria-controls={menuListId}\n aria-expanded={menuOpen}\n type='text'\n autoComplete='off'\n autoCapitalize='off'\n autoCorrect='off'\n spellCheck='false'\n active={inputActive}\n label={label}\n labelId={inputLabelId}\n labelPosition={labelPosition}\n form={form}\n autoFocus={autoFocus}\n inputMode={searchable ? inputMode : 'none'}\n maxLength={maxLength}\n placeholder={placeholder}\n readOnly={readOnly || !searchable}\n required={inputRequired}\n disabled={rootProps.disabled}\n value={inputText}\n palette={{\n color: palette.color,\n colorDisabled: palette.colorDisabled,\n placeholderColor: palette.placeholderColor,\n placeholderColorDisabled: palette.placeholderColorDisabled,\n }}\n onClick={(evt) => {\n if (menuOpen && evt.currentTarget.selectionStart !== evt.currentTarget.selectionEnd) {\n evt.stopPropagation()\n }\n }}\n onChange={(evt) => {\n const inputValue = evt.currentTarget.value\n\n updateInputText(inputValue)\n updateOptionsDebounced(inputValue)\n setMenuOpenRequest(true)\n }}\n onKeyDown={(evt) => {\n if (keyboardKeys.Enter.validate(evt.key)) {\n updateInputText(getDropdownInputText(dropdownSelectedOption, multiple))\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.Space.validate(evt.key) && (!menuOpen || evt.currentTarget.selectionStart === 0)) {\n evt.preventDefault()\n\n if (!menuOpen) {\n updateOptions('')\n if (searchable) {\n updateInputText('')\n }\n }\n\n setMenuOpenRequest((prev) => !prev)\n }\n\n if (keyboardKeys.Esc.validate(evt.key)) {\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.Tab.validate(evt.key) && menuOpen) {\n evt.preventDefault()\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.ArrowDown.validate(evt.key) && menuOpen && menuListRef.current) {\n evt.preventDefault()\n\n if (!multiple && selectedOptionRef.current) {\n const menuItems = [...menuListRef.current.children]\n\n const idx = menuItems.findIndex((item) => item.contains(selectedOptionRef.current as Node))\n\n const focusTarget = menuItems[idx + 1] ?? menuItems[0]\n\n if (focusTarget instanceof HTMLElement) {\n focusFirstFocusable(focusTarget)\n }\n } else {\n focusFirstFocusable(menuListRef.current)\n }\n }\n\n if (keyboardKeys.ArrowUp.validate(evt.key) && menuOpen && menuListRef.current) {\n evt.preventDefault()\n\n if (!multiple && selectedOptionRef.current) {\n const menuItems = [...menuListRef.current.children]\n\n const idx = menuItems.findIndex((item) => item.contains(selectedOptionRef.current as Node))\n\n const focusTarget = menuItems[idx - 1] ?? menuItems[menuItems.length - 1]\n\n if (focusTarget instanceof HTMLElement) {\n focusFirstFocusable(focusTarget)\n }\n } else {\n focusLastFocusable(menuListRef.current)\n }\n }\n }}\n />\n {dropdownSelectedOption.map((option) => (\n <input\n key={option.value}\n type='hidden'\n name={name}\n value={option.value}\n form={form}\n disabled={rootProps.disabled || option.disabled}\n />\n ))}\n </>\n }\n addonLeft={\n icon ? (\n <Icon\n name={typeof icon === 'string' ? icon : undefined}\n icon={typeof icon !== 'string' ? icon : undefined}\n {...iconBaseProps}\n />\n ) : addonLeft ? (\n <Slot props={{ iconProps: iconBaseProps }}>{addonLeft}</Slot>\n ) : null\n }\n addonRight={\n <>\n {multiple && dropdownSelectedOption.length > 0 ? (\n <Chip\n size='xs'\n active\n black\n disabled={rootProps.disabled}\n cursor={rootProps.disabled ? 'not-allowed' : undefined}\n text={dropdownSelectedOption.length}\n textProps={{\n appearance: 'caption',\n size: 'xs',\n }}\n palette={\n rootProps.disabled\n ? {\n color: 'content-disabled',\n colorHover: 'content-disabled',\n backgroundColor: 'bg-disabled-small',\n backgroundColorHover: 'bg-disabled-small',\n }\n : undefined\n }\n onPointerDown={(evt) => {\n evt.preventDefault()\n }}\n onMouseDown={(evt) => {\n if (!window.PointerEvent) evt.preventDefault()\n }}\n discardButtonProps={{\n square: true,\n contrast: !rootProps.disabled,\n onClick: (evt) => {\n evt.stopPropagation()\n\n if (!readOnly) {\n if (selectedOption === undefined) {\n setDropdownSelectedOption([])\n }\n\n if (onSelectOption) onSelectOption([])\n\n inputRef.current?.focus()\n updateInputText('')\n updateOptions('')\n setMenuOpenRequest(true)\n }\n },\n }}\n />\n ) : null}\n {!multiple && clearable && dropdownSelectedOption.length > 0 ? (\n <IconButton\n icon={<Close />}\n size='l'\n square\n disabled={rootProps.disabled}\n onClick={(evt) => {\n evt.stopPropagation()\n\n if (!readOnly) {\n if (selectedOption === undefined) {\n setDropdownSelectedOption([])\n }\n\n if (onSelectOption) onSelectOption(null)\n\n inputRef.current?.focus()\n updateInputText('')\n updateOptions('')\n setMenuOpenRequest(true)\n }\n }}\n />\n ) : null}\n <Styled.IconAnimated icon={<ChevronDown />} up={menuOpen} {...iconBaseProps} />\n </>\n }\n dropdown={\n <DropdownMenu\n {...menuProps}\n setRef={setMenuRef}\n open={menuOpen}\n popperReferenceId={formInputLabelId}\n secondary={!contrast}\n elevated={contrast}\n disableAutoFocus\n palette={{\n backgroundColor: palette.menuBackgroundColor,\n borderColor: palette.menuBorderColor,\n }}\n empty={menuOptions.length === 0}\n loading={menuOptionsLoading}\n loadingMessage={loadingMessage}\n loadingIcon={loadingIcon}\n loadingIconProps={{\n ...iconBaseProps,\n ...loadingIconProps,\n }}\n emptyMessage={optionsEmptyMessage}\n emptyIcon={optionsEmptyIcon}\n emptyIconProps={{\n ...iconBaseProps,\n ...optionsEmptyIconProps,\n }}\n onKeyDown={(evt) => {\n if (keyboardKeys.Tab.validate(evt.key)) {\n evt.preventDefault()\n inputRef.current?.focus()\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.Enter.validate(evt.key)) {\n inputRef.current?.focus()\n updateInputText(getDropdownInputText(dropdownSelectedOption, multiple))\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.Esc.validate(evt.key)) {\n inputRef.current?.focus()\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.Backspace.validate(evt.key) && !readOnly && (multiple || (!multiple && clearable))) {\n if (selectedOption === undefined) {\n setDropdownSelectedOption([])\n }\n\n if (onSelectOption) onSelectOption(multiple ? [] : null)\n\n updateInputText('')\n updateOptions('')\n }\n }}\n >\n {multiple ? (\n <DropdownMenuMultiple\n {...sizeProps}\n ref={menuListRef}\n inputRef={inputRef}\n label={label}\n name={name}\n disabled={rootProps.disabled}\n readOnly={readOnly}\n menuListId={menuListId}\n inputLabelId={inputLabelId}\n menuOptions={menuOptions}\n dropdownSelectedOption={dropdownSelectedOption}\n inputText={inputText}\n optionsMultiToggle={optionsMultiToggle}\n groupSelectedOptions={groupSelectedOptions}\n optionsMultiToggleCaption={optionsMultiToggleCaption}\n renderOption={renderOption}\n onChange={(update) => {\n if (selectedOption === undefined) {\n setDropdownSelectedOption(update)\n }\n\n if (onSelectOption) onSelectOption(update)\n }}\n />\n ) : (\n <DropdownMenuSingle\n {...sizeProps}\n ref={menuListRef}\n label={label}\n readOnly={readOnly}\n multiple={multiple}\n disabled={rootProps.disabled}\n status={status}\n menuListId={menuListId}\n inputLabelId={inputLabelId}\n menuOptions={menuOptions}\n dropdownSelectedOption={dropdownSelectedOption}\n selectedOptionRef={selectedOptionRef}\n renderOption={renderOption}\n onChange={(option) => {\n const update = { ...option }\n\n if (selectedOption === undefined) {\n updateInputText(getDropdownInputText(update))\n setDropdownSelectedOption(getDropdownSelectedOption(update))\n }\n\n if (onSelectOption) onSelectOption(update)\n\n inputRef.current?.focus()\n setMenuOpenRequest(false)\n }}\n />\n )}\n </DropdownMenu>\n }\n />\n )\n }),\n {\n sizes: SIZES,\n displayName: COMPONENT_NAME,\n }\n)\n\nexport { Dropdown, COMPONENT_NAME }\n"],"names":["COMPONENT_NAME","Dropdown","withMergedProps","forwardRef","props","ref","size","name","labelPosition","searchable","primary","optionsMultiToggle","iconProps","menuProps","loadingIconProps","optionsEmptyIconProps","loading","autoFocus","disableAutoScrollToSelectedOption","closeMenuOnScroll","scrollMonitorTarget","contrast","selectedOption","defaultSelectedOption","icon","addonLeft","inputMode","loadingMessage","loadingIcon","maxLength","multiple","clearable","onChangeInput","onCloseMenu","onOpenMenu","onSelectOption","options","loadOptions","renderOption","groupSelectedOptions","optionsMultiToggleCaption","optionsEmptyMessage","optionsEmptyIcon","palette","placeholder","readOnly","required","status","sizeXXS","sizeXS","sizeS","sizeM","sizeL","sizeXL","form","label","rootProps","sizeProps","iconBaseProps","sizes","SIZES_ICON","color","disabled","formInputLabelId","useMemo","id","nanoid","inputLabelId","menuListId","filteredOptions","getFilteredOptions","useFilteredOptions","loadedOptions","optionsLoading","getLoadedOptions","useLoadedOptions","dropdownSelectedOption","setDropdownSelectedOption","useState","getDropdownSelectedOption","undefined","inputText","setInputText","getDropdownInputText","focusWithin","setFocusWithin","menuOpenRequest","setMenuOpenRequest","menuOptions","menuOptionsLoading","menuOpen","inputRequired","length","inputActive","Boolean","inputRef","useRef","menuRef","setMenuRef","menuListRef","selectedOptionRef","menuOpenPrevRef","updateInputText","useCallback","inputTextValue","updateOptions","updateOptionsDebounced","createDebouncedCallback","preventBlur","evt","target","current","Node","currentTarget","contains","renderInPortal","preventDefault","useScrollMonitor","onScrollStart","focus","useLayoutEffect","useEffect","menuRect","getBoundingClientRect","selectedOptionRect","top","bottom","setTimeout","scrollTo","offsetTop","_jsx","FormInputLabel","onColored","error","success","labelColorDisabled","labelColor","backgroundColor","backgroundColorDisabled","backgroundColorHover","borderColor","borderColorDisabled","onClick","onPointerDown","onMouseDown","window","PointerEvent","onFocus","onBlur","relatedTarget","input","_jsxs","_Fragment","children","Styled","type","tabIndex","FormInput","role","autoComplete","autoCapitalize","autoCorrect","spellCheck","active","labelId","value","colorDisabled","placeholderColor","placeholderColorDisabled","selectionStart","selectionEnd","stopPropagation","onChange","inputValue","onKeyDown","keyboardKeys","Enter","validate","key","Space","prev","Esc","Tab","ArrowDown","menuItems","idx","findIndex","item","focusTarget","HTMLElement","focusFirstFocusable","ArrowUp","focusLastFocusable","map","option","Icon","Slot","addonRight","Chip","black","cursor","text","textProps","appearance","colorHover","discardButtonProps","square","IconButton","Close","ChevronDown","up","dropdown","DropdownMenu","setRef","open","popperReferenceId","secondary","elevated","disableAutoFocus","menuBackgroundColor","menuBorderColor","empty","emptyMessage","emptyIcon","emptyIconProps","Backspace","DropdownMenuMultiple","update","DropdownMenuSingle","SIZES","displayName"],"mappings":"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"}
1
+ {"version":3,"file":"Dropdown.mjs","sources":["../../../../src/components/Dropdown/Dropdown.tsx"],"sourcesContent":["import { forwardRef, useState, useRef, useEffect, useLayoutEffect, useMemo, useCallback } from 'react'\nimport { nanoid } from 'nanoid'\nimport { ChevronDown, Close } from '@foxford/icon-pack'\nimport { withMergedProps } from 'hocs/withMergedProps'\nimport type { MergedProps } from 'hocs/withMergedProps'\nimport { useScrollMonitor } from 'hooks/useScrollMonitor'\nimport { focusFirstFocusable, focusLastFocusable } from 'shared/utils/dom'\nimport { createDebouncedCallback } from 'shared/utils/misc'\nimport { keyboardKeys } from 'shared/constants'\nimport type { Nullable } from 'shared/types'\nimport { FormInput } from 'components/FormInput'\nimport { FormInputLabel } from 'components/FormInputLabel'\nimport { Chip } from 'components/Chip'\nimport { IconButton } from 'components/IconButton'\nimport { Icon } from 'components/Icon'\nimport type { IconProps } from 'components/Icon'\nimport { Slot } from 'components/Slot'\nimport { DropdownMenu } from './DropdownMenu'\nimport { useFilteredOptions, useLoadedOptions } from './hooks'\nimport { SIZES, SIZES_ICON } from './sizes'\nimport { getDropdownInputText, getDropdownSelectedOption } from './utils'\nimport * as Styled from './style'\nimport type { DropdownProps, DropdownOption, DropdownOptionGroup } from './types'\nimport { DropdownMenuMultiple } from './DropdownMenuMultiple'\nimport { DropdownMenuSingle } from './DropdownMenuSingle'\n\nconst COMPONENT_NAME = 'Dropdown'\n\n/**\n *\n * Компонент для выбора одной или нескольких опций из числа доступных.\n *\n * Поддерживается \"ref\" и все нативные атрибуты \\<div\\> элемента.\n */\nconst Dropdown: React.ForwardRefExoticComponent<DropdownProps> = withMergedProps<DropdownProps, HTMLDivElement>(\n forwardRef<HTMLDivElement, MergedProps<DropdownProps>>((props, ref) => {\n const {\n size = 'm',\n name = 'fox-dropdown',\n labelPosition = 'dynamic',\n searchable = true,\n primary = true,\n optionsMultiToggle = true,\n iconProps = {},\n menuProps = {},\n loadingIconProps = {},\n optionsEmptyIconProps = {},\n loading,\n autoFocus,\n disableAutoScrollToSelectedOption,\n closeMenuOnScroll,\n scrollMonitorTarget,\n contrast,\n selectedOption,\n defaultSelectedOption,\n icon,\n addonLeft,\n inputMode,\n loadingMessage,\n loadingIcon,\n maxLength,\n multiple,\n clearable,\n onChangeInput,\n onCloseMenu,\n onOpenMenu,\n onSelectOption,\n options,\n loadOptions,\n renderOption,\n groupSelectedOptions,\n optionsMultiToggleCaption,\n optionsEmptyMessage,\n optionsEmptyIcon,\n palette,\n placeholder,\n readOnly,\n required,\n status,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n form,\n label,\n ...rootProps\n } = props\n\n const sizeProps = {\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n }\n\n const iconBaseProps: IconProps = {\n ...sizeProps,\n ...iconProps,\n sizes: SIZES_ICON,\n color: rootProps.disabled ? 'content-disabled' : 'content-onmain-tertiary',\n }\n\n const formInputLabelId = useMemo(() => rootProps.id ?? `${name}-${nanoid()}`, [name, rootProps.id])\n const inputLabelId = useMemo(() => nanoid(), [])\n const menuListId = useMemo(() => nanoid(), [])\n\n const [filteredOptions, getFilteredOptions] = useFilteredOptions({\n options,\n })\n\n const [loadedOptions, optionsLoading, getLoadedOptions] = useLoadedOptions({\n loadOptions,\n options,\n })\n\n const [dropdownSelectedOption, setDropdownSelectedOption] = useState<DropdownOption[]>(() =>\n getDropdownSelectedOption(selectedOption !== undefined ? selectedOption : defaultSelectedOption, multiple)\n )\n\n const [inputText, setInputText] = useState<string>(() => getDropdownInputText(dropdownSelectedOption, multiple))\n\n const [focusWithin, setFocusWithin] = useState<boolean>(false)\n\n const [menuOpenRequest, setMenuOpenRequest] = useState<boolean>(false)\n\n const menuOptions: (DropdownOption | DropdownOptionGroup)[] = loadOptions ? loadedOptions : filteredOptions\n const menuOptionsLoading = loadOptions ? (loading ?? optionsLoading) : loading\n\n const menuOpen = menuOpenRequest && !rootProps.disabled\n\n const inputRequired = required && dropdownSelectedOption.length === 0\n const inputActive = Boolean(menuOpen || inputText || focusWithin)\n\n const inputRef = useRef<HTMLInputElement>(null)\n const [menuRef, setMenuRef] = useState<Nullable<HTMLElement>>(null)\n const menuListRef = useRef<HTMLUListElement>(null)\n const selectedOptionRef = useRef<HTMLElement>(null)\n const menuOpenPrevRef = useRef<boolean>(menuOpen)\n\n const updateInputText = useCallback(\n (inputTextValue: string) => {\n setInputText(inputTextValue)\n\n if (onChangeInput) {\n onChangeInput(inputTextValue)\n }\n },\n [onChangeInput]\n )\n\n const updateOptions = useCallback(\n (inputTextValue: string) => {\n if (loadOptions) {\n getLoadedOptions(inputTextValue)\n } else {\n getFilteredOptions(inputTextValue)\n }\n },\n [loadOptions, getLoadedOptions, getFilteredOptions]\n )\n\n const updateOptionsDebounced = useMemo(() => {\n return createDebouncedCallback(updateOptions, 150)\n }, [updateOptions])\n\n const preventBlur = (evt: React.PointerEvent<HTMLDivElement> | React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n if (\n evt.target !== inputRef.current &&\n evt.target instanceof Node &&\n (evt.currentTarget.contains(evt.target) ||\n (menuProps.renderInPortal && menuOpen && menuRef && menuRef.contains(evt.target)))\n ) {\n evt.preventDefault()\n }\n }\n\n useScrollMonitor({\n target: scrollMonitorTarget,\n onScrollStart: () => {\n if (closeMenuOnScroll && menuOpen) {\n inputRef.current?.focus()\n setMenuOpenRequest(false)\n }\n },\n })\n\n useLayoutEffect(() => {\n if (selectedOption === undefined) return\n\n if (!multiple && !menuOpen) {\n updateInputText(getDropdownInputText(selectedOption))\n }\n setDropdownSelectedOption(getDropdownSelectedOption(selectedOption, multiple))\n }, [multiple, selectedOption, menuOpen, updateInputText])\n\n useEffect(() => {\n if (menuOpen === menuOpenPrevRef.current) return\n\n if (menuOpen && onOpenMenu) onOpenMenu()\n if (!menuOpen && onCloseMenu) onCloseMenu()\n\n menuOpenPrevRef.current = menuOpen\n }, [menuOpen, onCloseMenu, onOpenMenu])\n\n useEffect(() => {\n if (\n !multiple &&\n !disableAutoScrollToSelectedOption &&\n menuOpen &&\n !menuOptionsLoading &&\n inputText.length === 0 &&\n menuRef &&\n selectedOptionRef.current\n ) {\n const menuRect = menuRef.getBoundingClientRect()\n const selectedOptionRect = selectedOptionRef.current.getBoundingClientRect()\n\n if (selectedOptionRect.top < menuRect.top || selectedOptionRect.bottom > menuRect.bottom) {\n setTimeout(() => {\n if (menuRef && selectedOptionRef.current) {\n menuRef.scrollTo(0, selectedOptionRef.current.offsetTop)\n }\n }, 0)\n }\n }\n }, [multiple, disableAutoScrollToSelectedOption, menuOpen, menuOptionsLoading, inputText, menuRef])\n\n useEffect(() => {\n if (rootProps.disabled) {\n setFocusWithin(false)\n }\n }, [rootProps.disabled])\n\n return (\n <FormInputLabel\n {...rootProps}\n {...sizeProps}\n ref={ref}\n id={formInputLabelId}\n onColored={contrast}\n primary={primary}\n error={status === 'error'}\n success={status === 'success'}\n focus={focusWithin}\n palette={{\n color: rootProps.disabled ? palette.labelColorDisabled : palette.labelColor,\n backgroundColor: rootProps.disabled ? palette.backgroundColorDisabled : palette.backgroundColor,\n backgroundColorHover: rootProps.disabled ? palette.backgroundColorDisabled : palette.backgroundColorHover,\n borderColor: rootProps.disabled ? palette.borderColorDisabled : palette.borderColor,\n }}\n onClick={(evt) => {\n if (rootProps.onClick) rootProps.onClick(evt)\n\n if (rootProps.disabled) return\n\n inputRef.current?.focus()\n\n if (!menuOpen) {\n setMenuOpenRequest(true)\n\n updateOptions('')\n if (searchable) {\n updateInputText('')\n }\n } else if (menuRef && evt.target instanceof Node && !menuRef.contains(evt.target)) {\n setMenuOpenRequest(false)\n updateInputText(getDropdownInputText(dropdownSelectedOption, multiple))\n }\n }}\n onPointerDown={(evt) => {\n if (rootProps.onPointerDown) rootProps.onPointerDown(evt)\n\n preventBlur(evt)\n }}\n onMouseDown={(evt) => {\n if (rootProps.onMouseDown) rootProps.onMouseDown(evt)\n\n if (!window.PointerEvent) preventBlur(evt)\n }}\n onFocus={(evt) => {\n if (rootProps.onFocus) rootProps.onFocus(evt)\n\n setFocusWithin(true)\n\n if (inputRef.current && evt.target === inputRef.current && searchable && !multiple && !menuOpen) {\n updateInputText('')\n }\n }}\n onBlur={(evt) => {\n if (rootProps.onBlur) rootProps.onBlur(evt)\n\n if (\n evt.currentTarget.contains(evt.relatedTarget) ||\n (menuProps.renderInPortal && menuOpen && menuRef && menuRef.contains(evt.relatedTarget))\n ) {\n return\n }\n\n setFocusWithin(false)\n updateInputText(getDropdownInputText(dropdownSelectedOption, multiple))\n setMenuOpenRequest(false)\n }}\n input={\n <>\n {inputRequired && !searchable && !readOnly ? (\n <Styled.InputMimic\n required\n type='text'\n inputMode='none'\n form={form}\n tabIndex={-1}\n onFocus={() => {\n inputRef.current?.focus()\n }}\n />\n ) : null}\n <FormInput\n {...sizeProps}\n ref={inputRef}\n role='combobox'\n aria-controls={menuListId}\n aria-expanded={menuOpen}\n type='text'\n autoComplete='off'\n autoCapitalize='off'\n autoCorrect='off'\n spellCheck='false'\n active={inputActive}\n label={label}\n labelId={inputLabelId}\n labelPosition={labelPosition}\n form={form}\n autoFocus={autoFocus}\n inputMode={searchable ? inputMode : 'none'}\n maxLength={maxLength}\n placeholder={placeholder}\n readOnly={readOnly || !searchable}\n required={inputRequired}\n disabled={rootProps.disabled}\n value={inputText}\n palette={{\n color: palette.color,\n colorDisabled: palette.colorDisabled,\n placeholderColor: palette.placeholderColor,\n placeholderColorDisabled: palette.placeholderColorDisabled,\n }}\n onClick={(evt) => {\n if (menuOpen && evt.currentTarget.selectionStart !== evt.currentTarget.selectionEnd) {\n evt.stopPropagation()\n }\n }}\n onChange={(evt) => {\n const inputValue = evt.currentTarget.value\n\n updateInputText(inputValue)\n updateOptionsDebounced(inputValue)\n setMenuOpenRequest(true)\n }}\n onKeyDown={(evt) => {\n if (keyboardKeys.Enter.validate(evt.key)) {\n updateInputText(getDropdownInputText(dropdownSelectedOption, multiple))\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.Space.validate(evt.key) && (!menuOpen || evt.currentTarget.selectionStart === 0)) {\n evt.preventDefault()\n\n if (!menuOpen) {\n updateOptions('')\n if (searchable) {\n updateInputText('')\n }\n }\n\n setMenuOpenRequest((prev) => !prev)\n }\n\n if (keyboardKeys.Esc.validate(evt.key)) {\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.Tab.validate(evt.key) && menuOpen) {\n evt.preventDefault()\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.ArrowDown.validate(evt.key) && menuOpen && menuListRef.current) {\n evt.preventDefault()\n\n if (!multiple && selectedOptionRef.current) {\n const menuItems = [...menuListRef.current.children]\n\n const idx = menuItems.findIndex((item) => item.contains(selectedOptionRef.current as Node))\n\n const focusTarget = menuItems[idx + 1] ?? menuItems[0]\n\n if (focusTarget instanceof HTMLElement) {\n focusFirstFocusable(focusTarget)\n }\n } else {\n focusFirstFocusable(menuListRef.current)\n }\n }\n\n if (keyboardKeys.ArrowUp.validate(evt.key) && menuOpen && menuListRef.current) {\n evt.preventDefault()\n\n if (!multiple && selectedOptionRef.current) {\n const menuItems = [...menuListRef.current.children]\n\n const idx = menuItems.findIndex((item) => item.contains(selectedOptionRef.current as Node))\n\n const focusTarget = menuItems[idx - 1] ?? menuItems[menuItems.length - 1]\n\n if (focusTarget instanceof HTMLElement) {\n focusFirstFocusable(focusTarget)\n }\n } else {\n focusLastFocusable(menuListRef.current)\n }\n }\n }}\n />\n {dropdownSelectedOption.map((option) => (\n <input\n key={option.value}\n type='hidden'\n name={name}\n value={option.value}\n form={form}\n disabled={rootProps.disabled || option.disabled}\n />\n ))}\n </>\n }\n addonLeft={\n icon ? (\n <Icon\n name={typeof icon === 'string' ? icon : undefined}\n icon={typeof icon !== 'string' ? icon : undefined}\n {...iconBaseProps}\n />\n ) : addonLeft ? (\n <Slot render={addonLeft} props={{ iconProps: iconBaseProps }} />\n ) : null\n }\n addonRight={\n <>\n {multiple && dropdownSelectedOption.length > 0 ? (\n <Chip\n size='xs'\n active\n black\n disabled={rootProps.disabled}\n cursor={rootProps.disabled ? 'not-allowed' : undefined}\n text={dropdownSelectedOption.length}\n textProps={{\n appearance: 'caption',\n size: 'xs',\n }}\n palette={\n rootProps.disabled\n ? {\n color: 'content-disabled',\n colorHover: 'content-disabled',\n backgroundColor: 'bg-disabled-small',\n backgroundColorHover: 'bg-disabled-small',\n }\n : undefined\n }\n onPointerDown={(evt) => {\n evt.preventDefault()\n }}\n onMouseDown={(evt) => {\n if (!window.PointerEvent) evt.preventDefault()\n }}\n discardButtonProps={{\n square: true,\n contrast: !rootProps.disabled,\n onClick: (evt) => {\n evt.stopPropagation()\n\n if (!readOnly) {\n if (selectedOption === undefined) {\n setDropdownSelectedOption([])\n }\n\n if (onSelectOption) onSelectOption([])\n\n inputRef.current?.focus()\n updateInputText('')\n updateOptions('')\n setMenuOpenRequest(true)\n }\n },\n }}\n />\n ) : null}\n {!multiple && clearable && dropdownSelectedOption.length > 0 ? (\n <IconButton\n icon={<Close />}\n size='l'\n square\n disabled={rootProps.disabled}\n onClick={(evt) => {\n evt.stopPropagation()\n\n if (!readOnly) {\n if (selectedOption === undefined) {\n setDropdownSelectedOption([])\n }\n\n if (onSelectOption) onSelectOption(null)\n\n inputRef.current?.focus()\n updateInputText('')\n updateOptions('')\n setMenuOpenRequest(true)\n }\n }}\n />\n ) : null}\n <Styled.IconAnimated icon={<ChevronDown />} up={menuOpen} {...iconBaseProps} />\n </>\n }\n dropdown={\n <DropdownMenu\n {...menuProps}\n setRef={setMenuRef}\n open={menuOpen}\n popperReferenceId={formInputLabelId}\n secondary={!contrast}\n elevated={contrast}\n disableAutoFocus\n palette={{\n backgroundColor: palette.menuBackgroundColor,\n borderColor: palette.menuBorderColor,\n }}\n empty={menuOptions.length === 0}\n loading={menuOptionsLoading}\n loadingMessage={loadingMessage}\n loadingIcon={loadingIcon}\n loadingIconProps={{\n ...iconBaseProps,\n ...loadingIconProps,\n }}\n emptyMessage={optionsEmptyMessage}\n emptyIcon={optionsEmptyIcon}\n emptyIconProps={{\n ...iconBaseProps,\n ...optionsEmptyIconProps,\n }}\n onKeyDown={(evt) => {\n if (keyboardKeys.Tab.validate(evt.key)) {\n evt.preventDefault()\n inputRef.current?.focus()\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.Enter.validate(evt.key)) {\n inputRef.current?.focus()\n updateInputText(getDropdownInputText(dropdownSelectedOption, multiple))\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.Esc.validate(evt.key)) {\n inputRef.current?.focus()\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.Backspace.validate(evt.key) && !readOnly && (multiple || (!multiple && clearable))) {\n if (selectedOption === undefined) {\n setDropdownSelectedOption([])\n }\n\n if (onSelectOption) onSelectOption(multiple ? [] : null)\n\n updateInputText('')\n updateOptions('')\n }\n }}\n >\n {multiple ? (\n <DropdownMenuMultiple\n {...sizeProps}\n ref={menuListRef}\n inputRef={inputRef}\n label={label}\n name={name}\n disabled={rootProps.disabled}\n readOnly={readOnly}\n menuListId={menuListId}\n inputLabelId={inputLabelId}\n menuOptions={menuOptions}\n dropdownSelectedOption={dropdownSelectedOption}\n inputText={inputText}\n optionsMultiToggle={optionsMultiToggle}\n groupSelectedOptions={groupSelectedOptions}\n optionsMultiToggleCaption={optionsMultiToggleCaption}\n renderOption={renderOption}\n onChange={(update) => {\n if (selectedOption === undefined) {\n setDropdownSelectedOption(update)\n }\n\n if (onSelectOption) onSelectOption(update)\n }}\n />\n ) : (\n <DropdownMenuSingle\n {...sizeProps}\n ref={menuListRef}\n label={label}\n readOnly={readOnly}\n multiple={multiple}\n disabled={rootProps.disabled}\n status={status}\n menuListId={menuListId}\n inputLabelId={inputLabelId}\n menuOptions={menuOptions}\n dropdownSelectedOption={dropdownSelectedOption}\n selectedOptionRef={selectedOptionRef}\n renderOption={renderOption}\n onChange={(option) => {\n const update = { ...option }\n\n if (selectedOption === undefined) {\n updateInputText(getDropdownInputText(update))\n setDropdownSelectedOption(getDropdownSelectedOption(update))\n }\n\n if (onSelectOption) onSelectOption(update)\n\n inputRef.current?.focus()\n setMenuOpenRequest(false)\n }}\n />\n )}\n </DropdownMenu>\n }\n />\n )\n }),\n {\n sizes: SIZES,\n displayName: COMPONENT_NAME,\n }\n)\n\nexport { Dropdown, COMPONENT_NAME }\n"],"names":["COMPONENT_NAME","Dropdown","withMergedProps","forwardRef","props","ref","size","name","labelPosition","searchable","primary","optionsMultiToggle","iconProps","menuProps","loadingIconProps","optionsEmptyIconProps","loading","autoFocus","disableAutoScrollToSelectedOption","closeMenuOnScroll","scrollMonitorTarget","contrast","selectedOption","defaultSelectedOption","icon","addonLeft","inputMode","loadingMessage","loadingIcon","maxLength","multiple","clearable","onChangeInput","onCloseMenu","onOpenMenu","onSelectOption","options","loadOptions","renderOption","groupSelectedOptions","optionsMultiToggleCaption","optionsEmptyMessage","optionsEmptyIcon","palette","placeholder","readOnly","required","status","sizeXXS","sizeXS","sizeS","sizeM","sizeL","sizeXL","form","label","rootProps","sizeProps","iconBaseProps","sizes","SIZES_ICON","color","disabled","formInputLabelId","useMemo","id","nanoid","inputLabelId","menuListId","filteredOptions","getFilteredOptions","useFilteredOptions","loadedOptions","optionsLoading","getLoadedOptions","useLoadedOptions","dropdownSelectedOption","setDropdownSelectedOption","useState","getDropdownSelectedOption","undefined","inputText","setInputText","getDropdownInputText","focusWithin","setFocusWithin","menuOpenRequest","setMenuOpenRequest","menuOptions","menuOptionsLoading","menuOpen","inputRequired","length","inputActive","Boolean","inputRef","useRef","menuRef","setMenuRef","menuListRef","selectedOptionRef","menuOpenPrevRef","updateInputText","useCallback","inputTextValue","updateOptions","updateOptionsDebounced","createDebouncedCallback","preventBlur","evt","target","current","Node","currentTarget","contains","renderInPortal","preventDefault","useScrollMonitor","onScrollStart","focus","useLayoutEffect","useEffect","menuRect","getBoundingClientRect","selectedOptionRect","top","bottom","setTimeout","scrollTo","offsetTop","_jsx","FormInputLabel","onColored","error","success","labelColorDisabled","labelColor","backgroundColor","backgroundColorDisabled","backgroundColorHover","borderColor","borderColorDisabled","onClick","onPointerDown","onMouseDown","window","PointerEvent","onFocus","onBlur","relatedTarget","input","_jsxs","_Fragment","children","Styled","type","tabIndex","FormInput","role","autoComplete","autoCapitalize","autoCorrect","spellCheck","active","labelId","value","colorDisabled","placeholderColor","placeholderColorDisabled","selectionStart","selectionEnd","stopPropagation","onChange","inputValue","onKeyDown","keyboardKeys","Enter","validate","key","Space","prev","Esc","Tab","ArrowDown","menuItems","idx","findIndex","item","focusTarget","HTMLElement","focusFirstFocusable","ArrowUp","focusLastFocusable","map","option","Icon","Slot","render","addonRight","Chip","black","cursor","text","textProps","appearance","colorHover","discardButtonProps","square","IconButton","Close","ChevronDown","up","dropdown","DropdownMenu","setRef","open","popperReferenceId","secondary","elevated","disableAutoFocus","menuBackgroundColor","menuBorderColor","empty","emptyMessage","emptyIcon","emptyIconProps","Backspace","DropdownMenuMultiple","update","DropdownMenuSingle","SIZES","displayName"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- 'use strict';var React=require('react');var sizes=require('./sizes.js');var jsxRuntime=require('react/jsx-runtime');var InputCheckbox=require('../InputCheckbox/InputCheckbox.js');var ListItem=require('../ListItem/ListItem.js');exports.DropdownListItem=React.forwardRef(({name:e,disabled:s,status:t,readOnly:r,multiple:i,option:o,selected:a,statusVisibility:n="selected",onClick:c,onChange:u,renderOption:d,...l},p)=>{const x=i?o.status??t:t;const m=n==='always'||n==='selected'&&a;const v=m&&x==='error';const I=m&&x==='success';const b={...l,ref:a?p:void 0,role:i?void 0:'option','aria-selected':i?void 0:a,active:a,text:o.text,danger:v,success:I,disabled:s||o.disabled,borderRadius:8,ellipsis:!1,textProps:{wordBreak:'break-word'},onClick:e=>{e.stopPropagation(),r||c?.(e,o)},control:i?jsxRuntime.jsx(InputCheckbox.InputCheckbox,{sizes:sizes.SIZES_CHECKBOX,form:"none",role:"option","aria-selected":a,name:e,value:o.value,checked:a,error:v,success:I,onChange:e=>{r||u?.(e,o,a)}}):void 0};return d?d(o,b):jsxRuntime.jsx(ListItem.ListItem,{...b})});
1
+ 'use strict';var React=require('react');var sizes=require('./sizes.js');var jsxRuntime=require('react/jsx-runtime');var InputCheckbox=require('../InputCheckbox/InputCheckbox.js');var ListItem=require('../ListItem/ListItem.js');var Text=require('../Text/Text.js');exports.DropdownListItem=React.forwardRef(({name:e,disabled:s,status:t,readOnly:i,multiple:r,option:o,selected:n,statusVisibility:a="selected",onClick:c,onChange:d,renderOption:u,size:l,sizeXXS:x,sizeXS:z,sizeS:m,sizeM:p,sizeL:b,sizeXL:v},I)=>{const j={size:l,sizeXXS:x,sizeXS:z,sizeS:m,sizeM:p,sizeL:b,sizeXL:v};const C=r?o.status??t:t;const L=a==='always'||a==='selected'&&n;const k=L&&C==='error';const S=L&&C==='success';const X=s||o.disabled;const h={...j,ref:n?I:void 0,role:r?void 0:'option','aria-selected':r?void 0:n,active:n,text:e=>jsxRuntime.jsx(Text.Text,{...e,sizes:sizes.SIZES_TEXT,ellipsis:!1,wordBreak:"break-word",children:o.text}),danger:k,success:S,disabled:X,borderRadius:8,onClick:e=>{e.stopPropagation(),i||c?.(e,o)},component:r?'label':'button',addonLeft:r?jsxRuntime.jsx(InputCheckbox.InputCheckbox,{...j,sizes:sizes.SIZES_CHECKBOX,form:"none",role:"option","aria-selected":n,name:e,value:o.value,checked:n,error:k,success:S,disabled:X,onChange:e=>{i||d?.(e,o,n)}}):void 0};return u?u(o,h):jsxRuntime.jsx(ListItem.ListItem,{...h})});
2
2
  //# sourceMappingURL=DropdownListItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownListItem.js","sources":["../../../../src/components/Dropdown/DropdownListItem.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport type { ListItemProps } from 'components/ListItem'\nimport { ListItem } from 'components/ListItem'\nimport { InputCheckbox } from 'components/InputCheckbox'\nimport { SIZES_CHECKBOX } from './sizes'\nimport type { DropdownListItemProps } from './types'\n\nexport const DropdownListItem = forwardRef<HTMLElement, DropdownListItemProps>(\n (\n {\n name,\n disabled,\n status,\n readOnly,\n multiple,\n option,\n selected,\n statusVisibility = 'selected',\n onClick,\n onChange,\n renderOption,\n ...restProps\n },\n ref\n ) => {\n const optionStatus = multiple ? (option.status ?? status) : status\n const showStatus = statusVisibility === 'always' || (statusVisibility === 'selected' && selected)\n const optionErrorStatus = showStatus && optionStatus === 'error'\n const optionSuccessStatus = showStatus && optionStatus === 'success'\n\n const listItemProps: ListItemProps = {\n ...restProps,\n ref: selected ? ref : undefined,\n role: !multiple ? 'option' : undefined,\n 'aria-selected': !multiple ? selected : undefined,\n active: selected,\n text: option.text,\n danger: optionErrorStatus,\n success: optionSuccessStatus,\n disabled: disabled || option.disabled,\n borderRadius: 8,\n ellipsis: false,\n textProps: { wordBreak: 'break-word' },\n onClick: (evt: React.MouseEvent<HTMLElement>) => {\n evt.stopPropagation()\n if (!readOnly) {\n onClick?.(evt, option)\n }\n },\n control: multiple ? (\n <InputCheckbox\n sizes={SIZES_CHECKBOX}\n form='none'\n role='option'\n aria-selected={selected}\n name={name}\n value={option.value}\n checked={selected}\n error={optionErrorStatus}\n success={optionSuccessStatus}\n onChange={(evt) => {\n if (!readOnly) {\n onChange?.(evt, option, selected)\n }\n }}\n />\n ) : undefined,\n }\n\n if (renderOption) {\n return renderOption(option, listItemProps)\n }\n\n return <ListItem {...listItemProps} />\n }\n)\n"],"names":["forwardRef","name","disabled","status","readOnly","multiple","option","selected","statusVisibility","onClick","onChange","renderOption","restProps","ref","optionStatus","showStatus","optionErrorStatus","optionSuccessStatus","listItemProps","undefined","role","active","text","danger","success","borderRadius","ellipsis","textProps","wordBreak","evt","stopPropagation","control","_jsx","InputCheckbox","sizes","SIZES_CHECKBOX","form","value","checked","error","ListItem"],"mappings":"4PAOgCA,MAAAA,WAC9B,EAEIC,OACAC,WACAC,SACAC,WACAC,WACAC,SACAC,WACAC,mBAAmB,WACnBC,UACAC,WACAC,kBACGC,GAELC,KAEA,MAAMC,EAAeT,EAAYC,EAAOH,QAAUA,EAAUA,EAC5D,MAAMY,EAAaP,IAAqB,UAAaA,IAAqB,YAAcD,EACxF,MAAMS,EAAoBD,GAAcD,IAAiB,QACzD,MAAMG,EAAsBF,GAAcD,IAAiB,UAE3D,MAAMI,EAA+B,IAChCN,EACHC,IAAKN,EAAWM,OAAMM,EACtBC,KAAOf,OAAsBc,EAAX,SAClB,gBAAkBd,OAAsBc,EAAXZ,EAC7Bc,OAAQd,EACRe,KAAMhB,EAAOgB,KACbC,OAAQP,EACRQ,QAASP,EACTf,SAAUA,GAAYI,EAAOJ,SAC7BuB,aAAc,EACdC,UAAU,EACVC,UAAW,CAAEC,UAAW,cACxBnB,QAAUoB,IACRA,EAAIC,kBACC1B,GACHK,IAAUoB,EAAKvB,IAGnByB,QAAS1B,EACP2B,WAAAA,IAACC,4BAAa,CACZC,MAAOC,MAAAA,eACPC,KAAK,OACLhB,KAAK,SACL,gBAAeb,EACfN,KAAMA,EACNoC,MAAO/B,EAAO+B,MACdC,QAAS/B,EACTgC,MAAOvB,EACPQ,QAASP,EACTP,SAAWmB,IACJzB,GACHM,IAAWmB,EAAKvB,EAAQC,WAI5BY,GAGN,OAAIR,EACKA,EAAaL,EAAQY,GAGvBc,WAAAA,IAACQ,SAAAA,SAAQ,IAAKtB"}
1
+ {"version":3,"file":"DropdownListItem.js","sources":["../../../../src/components/Dropdown/DropdownListItem.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport { ListItem } from 'components/ListItem'\nimport { Text } from 'components/Text'\nimport { InputCheckbox } from 'components/InputCheckbox'\nimport { SIZES_CHECKBOX, SIZES_TEXT } from './sizes'\nimport type { DropdownListItemProps, RenderOptionListItemProps } from './types'\n\nexport const DropdownListItem = forwardRef<HTMLElement, DropdownListItemProps>(\n (\n {\n name,\n disabled,\n status,\n readOnly,\n multiple,\n option,\n selected,\n statusVisibility = 'selected',\n onClick,\n onChange,\n renderOption,\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n },\n ref\n ) => {\n const sizeProps = {\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n }\n\n const optionStatus = multiple ? (option.status ?? status) : status\n const showStatus = statusVisibility === 'always' || (statusVisibility === 'selected' && selected)\n const optionErrorStatus = showStatus && optionStatus === 'error'\n const optionSuccessStatus = showStatus && optionStatus === 'success'\n const optionDisabled = disabled || option.disabled\n\n const listItemProps: RenderOptionListItemProps = {\n ...sizeProps,\n ref: selected ? ref : undefined,\n role: !multiple ? 'option' : undefined,\n 'aria-selected': !multiple ? selected : undefined,\n active: selected,\n text: (textProps) => (\n <Text {...textProps} sizes={SIZES_TEXT} ellipsis={false} wordBreak='break-word'>\n {option.text}\n </Text>\n ),\n danger: optionErrorStatus,\n success: optionSuccessStatus,\n disabled: optionDisabled,\n borderRadius: 8,\n onClick: (evt: React.MouseEvent<HTMLElement>) => {\n evt.stopPropagation()\n if (!readOnly) {\n onClick?.(evt, option)\n }\n },\n component: multiple ? 'label' : 'button',\n addonLeft: multiple ? (\n <InputCheckbox\n {...sizeProps}\n sizes={SIZES_CHECKBOX}\n form='none'\n role='option'\n aria-selected={selected}\n name={name}\n value={option.value}\n checked={selected}\n error={optionErrorStatus}\n success={optionSuccessStatus}\n disabled={optionDisabled}\n onChange={(evt) => {\n if (!readOnly) {\n onChange?.(evt, option, selected)\n }\n }}\n />\n ) : undefined,\n }\n\n if (renderOption) {\n return renderOption(option, listItemProps)\n }\n\n return <ListItem {...listItemProps} />\n }\n)\n"],"names":["forwardRef","name","disabled","status","readOnly","multiple","option","selected","statusVisibility","onClick","onChange","renderOption","size","sizeXXS","sizeXS","sizeS","sizeM","sizeL","sizeXL","ref","sizeProps","optionStatus","showStatus","optionErrorStatus","optionSuccessStatus","optionDisabled","listItemProps","undefined","role","active","text","textProps","_jsx","Text","sizes","SIZES_TEXT","ellipsis","wordBreak","children","danger","success","borderRadius","evt","stopPropagation","component","addonLeft","InputCheckbox","SIZES_CHECKBOX","form","value","checked","error","ListItem"],"mappings":"gSAOgCA,MAAAA,WAC9B,EAEIC,OACAC,WACAC,SACAC,WACAC,WACAC,SACAC,WACAC,mBAAmB,WACnBC,UACAC,WACAC,eACAC,OACAC,UACAC,SACAC,QACAC,QACAC,QACAC,UAEFC,KAEA,MAAMC,EAAY,CAChBR,OACAC,UACAC,SACAC,QACAC,QACAC,QACAC,UAGF,MAAMG,EAAehB,EAAYC,EAAOH,QAAUA,EAAUA,EAC5D,MAAMmB,EAAad,IAAqB,UAAaA,IAAqB,YAAcD,EACxF,MAAMgB,EAAoBD,GAAcD,IAAiB,QACzD,MAAMG,EAAsBF,GAAcD,IAAiB,UAC3D,MAAMI,EAAiBvB,GAAYI,EAAOJ,SAE1C,MAAMwB,EAA2C,IAC5CN,EACHD,IAAKZ,EAAWY,OAAMQ,EACtBC,KAAOvB,OAAsBsB,EAAX,SAClB,gBAAkBtB,OAAsBsB,EAAXpB,EAC7BsB,OAAQtB,EACRuB,KAAOC,GACLC,WAAAA,IAACC,UAAI,IAAKF,EAAWG,MAAOC,MAAAA,WAAYC,UAAU,EAAOC,UAAU,aAAYC,SAC5EhC,EAAOwB,OAGZS,OAAQhB,EACRiB,QAAShB,EACTtB,SAAUuB,EACVgB,aAAc,EACdhC,QAAUiC,IACRA,EAAIC,kBACCvC,GACHK,IAAUiC,EAAKpC,IAGnBsC,UAAWvC,EAAW,QAAU,SAChCwC,UAAWxC,EACT2B,WAAAA,IAACc,4BAAa,IACR1B,EACJc,MAAOa,MAAAA,eACPC,KAAK,OACLpB,KAAK,SACL,gBAAerB,EACfN,KAAMA,EACNgD,MAAO3C,EAAO2C,MACdC,QAAS3C,EACT4C,MAAO5B,EACPiB,QAAShB,EACTtB,SAAUuB,EACVf,SAAWgC,IACJtC,GACHM,IAAWgC,EAAKpC,EAAQC,WAI5BoB,GAGN,OAAIhB,EACKA,EAAaL,EAAQoB,GAGvBM,WAAAA,IAACoB,SAAAA,SAAQ,IAAK1B"}
@@ -1,2 +1,2 @@
1
- import{forwardRef}from'react';import{SIZES_CHECKBOX}from'./sizes.mjs';import{jsx}from'react/jsx-runtime';import{InputCheckbox}from'../InputCheckbox/InputCheckbox.mjs';import{ListItem}from'../ListItem/ListItem.mjs';const DropdownListItem=forwardRef(({name:e,disabled:t,status:o,readOnly:s,multiple:r,option:i,selected:n,statusVisibility:a="selected",onClick:c,onChange:d,renderOption:m,...l},p)=>{const u=r?i.status??o:o;const x=a==='always'||a==='selected'&&n;const C=x&&u==='error';const I=x&&u==='success';const f={...l,ref:n?p:void 0,role:r?void 0:'option','aria-selected':r?void 0:n,active:n,text:i.text,danger:C,success:I,disabled:t||i.disabled,borderRadius:8,ellipsis:!1,textProps:{wordBreak:'break-word'},onClick:e=>{e.stopPropagation(),s||c?.(e,i)},control:r?jsx(InputCheckbox,{sizes:SIZES_CHECKBOX,form:"none",role:"option","aria-selected":n,name:e,value:i.value,checked:n,error:C,success:I,onChange:e=>{s||d?.(e,i,n)}}):void 0};return m?m(i,f):jsx(ListItem,{...f})});export{DropdownListItem};
1
+ import{forwardRef}from'react';import{SIZES_CHECKBOX,SIZES_TEXT}from'./sizes.mjs';import{jsx}from'react/jsx-runtime';import{InputCheckbox}from'../InputCheckbox/InputCheckbox.mjs';import{ListItem}from'../ListItem/ListItem.mjs';import{Text}from'../Text/Text.mjs';const DropdownListItem=forwardRef(({name:e,disabled:s,status:t,readOnly:o,multiple:i,option:r,selected:n,statusVisibility:a="selected",onClick:c,onChange:d,renderOption:m,size:l,sizeXXS:p,sizeXS:u,sizeS:z,sizeM:x,sizeL:I,sizeXL:S},b)=>{const f={size:l,sizeXXS:p,sizeXS:u,sizeS:z,sizeM:x,sizeL:I,sizeXL:S};const C=i?r.status??t:t;const X=a==='always'||a==='selected'&&n;const L=X&&C==='error';const j=X&&C==='success';const k=s||r.disabled;const h={...f,ref:n?b:void 0,role:i?void 0:'option','aria-selected':i?void 0:n,active:n,text:e=>jsx(Text,{...e,sizes:SIZES_TEXT,ellipsis:!1,wordBreak:"break-word",children:r.text}),danger:L,success:j,disabled:k,borderRadius:8,onClick:e=>{e.stopPropagation(),o||c?.(e,r)},component:i?'label':'button',addonLeft:i?jsx(InputCheckbox,{...f,sizes:SIZES_CHECKBOX,form:"none",role:"option","aria-selected":n,name:e,value:r.value,checked:n,error:L,success:j,disabled:k,onChange:e=>{o||d?.(e,r,n)}}):void 0};return m?m(r,h):jsx(ListItem,{...h})});export{DropdownListItem};
2
2
  //# sourceMappingURL=DropdownListItem.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownListItem.mjs","sources":["../../../../src/components/Dropdown/DropdownListItem.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport type { ListItemProps } from 'components/ListItem'\nimport { ListItem } from 'components/ListItem'\nimport { InputCheckbox } from 'components/InputCheckbox'\nimport { SIZES_CHECKBOX } from './sizes'\nimport type { DropdownListItemProps } from './types'\n\nexport const DropdownListItem = forwardRef<HTMLElement, DropdownListItemProps>(\n (\n {\n name,\n disabled,\n status,\n readOnly,\n multiple,\n option,\n selected,\n statusVisibility = 'selected',\n onClick,\n onChange,\n renderOption,\n ...restProps\n },\n ref\n ) => {\n const optionStatus = multiple ? (option.status ?? status) : status\n const showStatus = statusVisibility === 'always' || (statusVisibility === 'selected' && selected)\n const optionErrorStatus = showStatus && optionStatus === 'error'\n const optionSuccessStatus = showStatus && optionStatus === 'success'\n\n const listItemProps: ListItemProps = {\n ...restProps,\n ref: selected ? ref : undefined,\n role: !multiple ? 'option' : undefined,\n 'aria-selected': !multiple ? selected : undefined,\n active: selected,\n text: option.text,\n danger: optionErrorStatus,\n success: optionSuccessStatus,\n disabled: disabled || option.disabled,\n borderRadius: 8,\n ellipsis: false,\n textProps: { wordBreak: 'break-word' },\n onClick: (evt: React.MouseEvent<HTMLElement>) => {\n evt.stopPropagation()\n if (!readOnly) {\n onClick?.(evt, option)\n }\n },\n control: multiple ? (\n <InputCheckbox\n sizes={SIZES_CHECKBOX}\n form='none'\n role='option'\n aria-selected={selected}\n name={name}\n value={option.value}\n checked={selected}\n error={optionErrorStatus}\n success={optionSuccessStatus}\n onChange={(evt) => {\n if (!readOnly) {\n onChange?.(evt, option, selected)\n }\n }}\n />\n ) : undefined,\n }\n\n if (renderOption) {\n return renderOption(option, listItemProps)\n }\n\n return <ListItem {...listItemProps} />\n }\n)\n"],"names":["DropdownListItem","forwardRef","name","disabled","status","readOnly","multiple","option","selected","statusVisibility","onClick","onChange","renderOption","restProps","ref","optionStatus","showStatus","optionErrorStatus","optionSuccessStatus","listItemProps","undefined","role","active","text","danger","success","borderRadius","ellipsis","textProps","wordBreak","evt","stopPropagation","control","_jsx","InputCheckbox","sizes","SIZES_CHECKBOX","form","value","checked","error","ListItem"],"mappings":"sNAOO,MAAMA,iBAAmBC,WAC9B,EAEIC,OACAC,WACAC,SACAC,WACAC,WACAC,SACAC,WACAC,mBAAmB,WACnBC,UACAC,WACAC,kBACGC,GAELC,KAEA,MAAMC,EAAeT,EAAYC,EAAOH,QAAUA,EAAUA,EAC5D,MAAMY,EAAaP,IAAqB,UAAaA,IAAqB,YAAcD,EACxF,MAAMS,EAAoBD,GAAcD,IAAiB,QACzD,MAAMG,EAAsBF,GAAcD,IAAiB,UAE3D,MAAMI,EAA+B,IAChCN,EACHC,IAAKN,EAAWM,OAAMM,EACtBC,KAAOf,OAAsBc,EAAX,SAClB,gBAAkBd,OAAsBc,EAAXZ,EAC7Bc,OAAQd,EACRe,KAAMhB,EAAOgB,KACbC,OAAQP,EACRQ,QAASP,EACTf,SAAUA,GAAYI,EAAOJ,SAC7BuB,aAAc,EACdC,UAAU,EACVC,UAAW,CAAEC,UAAW,cACxBnB,QAAUoB,IACRA,EAAIC,kBACC1B,GACHK,IAAUoB,EAAKvB,IAGnByB,QAAS1B,EACP2B,IAACC,cAAa,CACZC,MAAOC,eACPC,KAAK,OACLhB,KAAK,SACL,gBAAeb,EACfN,KAAMA,EACNoC,MAAO/B,EAAO+B,MACdC,QAAS/B,EACTgC,MAAOvB,EACPQ,QAASP,EACTP,SAAWmB,IACJzB,GACHM,IAAWmB,EAAKvB,EAAQC,WAI5BY,GAGN,OAAIR,EACKA,EAAaL,EAAQY,GAGvBc,IAACQ,SAAQ,IAAKtB"}
1
+ {"version":3,"file":"DropdownListItem.mjs","sources":["../../../../src/components/Dropdown/DropdownListItem.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport { ListItem } from 'components/ListItem'\nimport { Text } from 'components/Text'\nimport { InputCheckbox } from 'components/InputCheckbox'\nimport { SIZES_CHECKBOX, SIZES_TEXT } from './sizes'\nimport type { DropdownListItemProps, RenderOptionListItemProps } from './types'\n\nexport const DropdownListItem = forwardRef<HTMLElement, DropdownListItemProps>(\n (\n {\n name,\n disabled,\n status,\n readOnly,\n multiple,\n option,\n selected,\n statusVisibility = 'selected',\n onClick,\n onChange,\n renderOption,\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n },\n ref\n ) => {\n const sizeProps = {\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n }\n\n const optionStatus = multiple ? (option.status ?? status) : status\n const showStatus = statusVisibility === 'always' || (statusVisibility === 'selected' && selected)\n const optionErrorStatus = showStatus && optionStatus === 'error'\n const optionSuccessStatus = showStatus && optionStatus === 'success'\n const optionDisabled = disabled || option.disabled\n\n const listItemProps: RenderOptionListItemProps = {\n ...sizeProps,\n ref: selected ? ref : undefined,\n role: !multiple ? 'option' : undefined,\n 'aria-selected': !multiple ? selected : undefined,\n active: selected,\n text: (textProps) => (\n <Text {...textProps} sizes={SIZES_TEXT} ellipsis={false} wordBreak='break-word'>\n {option.text}\n </Text>\n ),\n danger: optionErrorStatus,\n success: optionSuccessStatus,\n disabled: optionDisabled,\n borderRadius: 8,\n onClick: (evt: React.MouseEvent<HTMLElement>) => {\n evt.stopPropagation()\n if (!readOnly) {\n onClick?.(evt, option)\n }\n },\n component: multiple ? 'label' : 'button',\n addonLeft: multiple ? (\n <InputCheckbox\n {...sizeProps}\n sizes={SIZES_CHECKBOX}\n form='none'\n role='option'\n aria-selected={selected}\n name={name}\n value={option.value}\n checked={selected}\n error={optionErrorStatus}\n success={optionSuccessStatus}\n disabled={optionDisabled}\n onChange={(evt) => {\n if (!readOnly) {\n onChange?.(evt, option, selected)\n }\n }}\n />\n ) : undefined,\n }\n\n if (renderOption) {\n return renderOption(option, listItemProps)\n }\n\n return <ListItem {...listItemProps} />\n }\n)\n"],"names":["DropdownListItem","forwardRef","name","disabled","status","readOnly","multiple","option","selected","statusVisibility","onClick","onChange","renderOption","size","sizeXXS","sizeXS","sizeS","sizeM","sizeL","sizeXL","ref","sizeProps","optionStatus","showStatus","optionErrorStatus","optionSuccessStatus","optionDisabled","listItemProps","undefined","role","active","text","textProps","_jsx","Text","sizes","SIZES_TEXT","ellipsis","wordBreak","children","danger","success","borderRadius","evt","stopPropagation","component","addonLeft","InputCheckbox","SIZES_CHECKBOX","form","value","checked","error","ListItem"],"mappings":"oQAOO,MAAMA,iBAAmBC,WAC9B,EAEIC,OACAC,WACAC,SACAC,WACAC,WACAC,SACAC,WACAC,mBAAmB,WACnBC,UACAC,WACAC,eACAC,OACAC,UACAC,SACAC,QACAC,QACAC,QACAC,UAEFC,KAEA,MAAMC,EAAY,CAChBR,OACAC,UACAC,SACAC,QACAC,QACAC,QACAC,UAGF,MAAMG,EAAehB,EAAYC,EAAOH,QAAUA,EAAUA,EAC5D,MAAMmB,EAAad,IAAqB,UAAaA,IAAqB,YAAcD,EACxF,MAAMgB,EAAoBD,GAAcD,IAAiB,QACzD,MAAMG,EAAsBF,GAAcD,IAAiB,UAC3D,MAAMI,EAAiBvB,GAAYI,EAAOJ,SAE1C,MAAMwB,EAA2C,IAC5CN,EACHD,IAAKZ,EAAWY,OAAMQ,EACtBC,KAAOvB,OAAsBsB,EAAX,SAClB,gBAAkBtB,OAAsBsB,EAAXpB,EAC7BsB,OAAQtB,EACRuB,KAAOC,GACLC,IAACC,KAAI,IAAKF,EAAWG,MAAOC,WAAYC,UAAU,EAAOC,UAAU,aAAYC,SAC5EhC,EAAOwB,OAGZS,OAAQhB,EACRiB,QAAShB,EACTtB,SAAUuB,EACVgB,aAAc,EACdhC,QAAUiC,IACRA,EAAIC,kBACCvC,GACHK,IAAUiC,EAAKpC,IAGnBsC,UAAWvC,EAAW,QAAU,SAChCwC,UAAWxC,EACT2B,IAACc,cAAa,IACR1B,EACJc,MAAOa,eACPC,KAAK,OACLpB,KAAK,SACL,gBAAerB,EACfN,KAAMA,EACNgD,MAAO3C,EAAO2C,MACdC,QAAS3C,EACT4C,MAAO5B,EACPiB,QAAShB,EACTtB,SAAUuB,EACVf,SAAWgC,IACJtC,GACHM,IAAWgC,EAAKpC,EAAQC,WAI5BoB,GAGN,OAAIhB,EACKA,EAAaL,EAAQoB,GAGvBM,IAACoB,SAAQ,IAAK1B"}
@@ -1,2 +1,2 @@
1
- 'use strict';var React=require('react');var sizes=require('./sizes.js');var utils=require('./utils.js');var renderDropdownOptionsList=require('./renderDropdownOptionsList.js');var jsxRuntime=require('react/jsx-runtime');var MenuList=require('../MenuList/MenuList.js');var ListItem=require('../ListItem/ListItem.js');var InputCheckbox=require('../InputCheckbox/InputCheckbox.js');var MenuDivider=require('../MenuDivider/MenuDivider.js');exports.DropdownMenuMultiple=React.forwardRef((e,n)=>{const{name:t,readOnly:r,label:i,disabled:s,status:o,menuListId:u,inputLabelId:l,inputRef:d,menuOptions:a,dropdownSelectedOption:p,inputText:c,optionsMultiToggle:m,optionsMultiToggleCaption:O,groupSelectedOptions:g,onChange:h,renderOption:x,...v}=e;const b=React.useMemo(()=>utils.groupDropdownOptions(a,p),[a,p]);const D=b[0].length>0&&b[1].length===0;const j=b[0].length>0&&b[1].length>0;const w={...v,readOnly:r,disabled:s,multiple:!0,dropdownSelectedOption:p,renderOption:x};return jsxRuntime.jsx(MenuList.MenuList,{ref:n,id:u,role:"listbox","aria-labelledby":i?l:void 0,"aria-multiselectable":!0,children:c.length===0?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[m?jsxRuntime.jsx(ListItem.ListItem,{...v,borderRadius:8,ellipsis:!1,textProps:{wordBreak:'break-word'},text:O,disabled:s,onClick:e=>{e.stopPropagation()},control:jsxRuntime.jsx(InputCheckbox.InputCheckbox,{sizes:sizes.SIZES_CHECKBOX,form:"none",name:t,checked:D,indeterminate:j,error:Boolean((D||j)&&o==='error'),success:Boolean((D||j)&&o==='success'),onChange:()=>{if(r)return;const e=D||j?p.filter(e=>e.disabled):a.reduce((e,n)=>((utils.isDropdownOptionGroup(n)?n.options:[n]).forEach(n=>!n.disabled&&e.push(n)),e),[]);h(e)}})}):null,(()=>{if(!m)return!1;const e=b[1]?.[0];return b[1].length===0?!!g||!(utils.isDropdownOptionGroup(a[0])&&a[0].label):!utils.isDropdownOptionGroup(e)||!e.label||Boolean(g&&b[0].length>0)})()?jsxRuntime.jsx(MenuDivider.MenuDivider,{...v}):null,g?renderDropdownOptionsList.renderDropdownOptionsList({...w,status:o,statusVisibility:'always',menuOptions:b[0],forceSelected:!0,onClick:()=>{d.current?.focus()},onChange:e=>{const n=p.filter(n=>n.value!==e.currentTarget.value);h(n)}}):null,(()=>{if(!g)return!1;if(b[0].length===0||b[1].length===0)return!1;const e=b[1][0];return!utils.isDropdownOptionGroup(e)||!e.label})()?jsxRuntime.jsx(MenuDivider.MenuDivider,{...v}):null,g?renderDropdownOptionsList.renderDropdownOptionsList({...w,statusVisibility:'never',forceSelected:!1,menuOptions:b[1],onClick:()=>{d.current?.focus()},onChange:(e,n)=>{const t=[...p,n];h(t)}}):null,!g&&renderDropdownOptionsList.renderDropdownOptionsList({...w,status:o,menuOptions:a,onChange:(e,n,t)=>{const r=t?p.filter(n=>n.value!==e.currentTarget.value):[...p,n];h(r)}})]}):renderDropdownOptionsList.renderDropdownOptionsList({...w,status:o,menuOptions:a,onChange:(e,n,t)=>{const r=t?p.filter(n=>n.value!==e.currentTarget.value):[...p,n];h(r)}})})});
1
+ 'use strict';var React=require('react');var sizes=require('./sizes.js');var utils=require('./utils.js');var renderDropdownOptionsList=require('./renderDropdownOptionsList.js');var jsxRuntime=require('react/jsx-runtime');var MenuList=require('../MenuList/MenuList.js');var ListItem=require('../ListItem/ListItem.js');var InputCheckbox=require('../InputCheckbox/InputCheckbox.js');var Text=require('../Text/Text.js');var MenuDivider=require('../MenuDivider/MenuDivider.js');exports.DropdownMenuMultiple=React.forwardRef((e,n)=>{const{name:t,readOnly:i,label:s,disabled:r,status:o,menuListId:u,inputLabelId:l,inputRef:d,menuOptions:a,dropdownSelectedOption:p,inputText:c,optionsMultiToggle:x,optionsMultiToggleCaption:m,groupSelectedOptions:O,onChange:L,renderOption:g,size:h,sizeXXS:b,sizeXS:j,sizeS:v,sizeM:D,sizeL:w,sizeXL:z}=e;const f={size:h,sizeXXS:b,sizeXS:j,sizeS:v,sizeM:D,sizeL:w,sizeXL:z};const M=React.useMemo(()=>utils.groupDropdownOptions(a,p),[a,p]);const C=M[0].length>0&&M[1].length===0;const R=M[0].length>0&&M[1].length>0;const S={...f,readOnly:i,disabled:r,multiple:!0,dropdownSelectedOption:p,renderOption:g};return jsxRuntime.jsx(MenuList.MenuList,{ref:n,id:u,role:"listbox","aria-labelledby":s?l:void 0,"aria-multiselectable":!0,children:c.length===0?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[x?jsxRuntime.jsx(ListItem.ListItem,{...f,component:"label",borderRadius:8,text:e=>jsxRuntime.jsx(Text.Text,{...e,sizes:sizes.SIZES_TEXT,ellipsis:!1,wordBreak:"break-word",children:m}),disabled:r,onClick:e=>{e.stopPropagation()},addonLeft:jsxRuntime.jsx(InputCheckbox.InputCheckbox,{...f,sizes:sizes.SIZES_CHECKBOX,form:"none",name:t,checked:C,indeterminate:R,error:Boolean((C||R)&&o==='error'),success:Boolean((C||R)&&o==='success'),disabled:r,onChange:()=>{if(i)return;const e=C||R?p.filter(e=>e.disabled):a.reduce((e,n)=>((utils.isDropdownOptionGroup(n)?n.options:[n]).forEach(n=>!n.disabled&&e.push(n)),e),[]);L(e)}})}):null,(()=>{if(!x)return!1;const e=M[1]?.[0];return M[1].length===0?!!O||!(utils.isDropdownOptionGroup(a[0])&&a[0].label):!utils.isDropdownOptionGroup(e)||!e.label||Boolean(O&&M[0].length>0)})()?jsxRuntime.jsx(MenuDivider.MenuDivider,{...f}):null,O?renderDropdownOptionsList.renderDropdownOptionsList({...S,status:o,statusVisibility:'always',menuOptions:M[0],forceSelected:!0,onClick:()=>{d.current?.focus()},onChange:e=>{const n=p.filter(n=>n.value!==e.currentTarget.value);L(n)}}):null,(()=>{if(!O)return!1;if(M[0].length===0||M[1].length===0)return!1;const e=M[1][0];return!utils.isDropdownOptionGroup(e)||!e.label})()?jsxRuntime.jsx(MenuDivider.MenuDivider,{...f}):null,O?renderDropdownOptionsList.renderDropdownOptionsList({...S,statusVisibility:'never',forceSelected:!1,menuOptions:M[1],onClick:()=>{d.current?.focus()},onChange:(e,n)=>{const t=[...p,n];L(t)}}):null,!O&&renderDropdownOptionsList.renderDropdownOptionsList({...S,status:o,menuOptions:a,onChange:(e,n,t)=>{const i=t?p.filter(n=>n.value!==e.currentTarget.value):[...p,n];L(i)}})]}):renderDropdownOptionsList.renderDropdownOptionsList({...S,status:o,menuOptions:a,onChange:(e,n,t)=>{const i=t?p.filter(n=>n.value!==e.currentTarget.value):[...p,n];L(i)}})})});
2
2
  //# sourceMappingURL=DropdownMenuMultiple.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownMenuMultiple.js","sources":["../../../../src/components/Dropdown/DropdownMenuMultiple.tsx"],"sourcesContent":["import { forwardRef, useMemo } from 'react'\nimport { MenuList } from 'components/MenuList'\nimport { ListItem } from 'components/ListItem'\nimport { InputCheckbox } from 'components/InputCheckbox'\nimport { MenuDivider } from 'components/MenuDivider'\nimport { SIZES_CHECKBOX } from './sizes'\nimport type { DropdownMenuMultipleProps, DropdownOption } from './types'\nimport { groupDropdownOptions, isDropdownOptionGroup } from './utils'\nimport { renderDropdownOptionsList } from './renderDropdownOptionsList'\n\nexport const DropdownMenuMultiple = forwardRef<HTMLUListElement, DropdownMenuMultipleProps>((props, ref) => {\n const {\n name,\n readOnly,\n label,\n disabled,\n status,\n menuListId,\n inputLabelId,\n inputRef,\n menuOptions,\n dropdownSelectedOption,\n inputText,\n optionsMultiToggle,\n optionsMultiToggleCaption,\n groupSelectedOptions,\n onChange,\n renderOption,\n ...sizeProps\n } = props\n\n const menuOptionsGroups: ReturnType<typeof groupDropdownOptions> = useMemo(\n () => groupDropdownOptions(menuOptions, dropdownSelectedOption),\n [menuOptions, dropdownSelectedOption]\n )\n\n const multiToggleChecked = menuOptionsGroups[0].length > 0 && menuOptionsGroups[1].length === 0\n const multiToggleIndeterminate = menuOptionsGroups[0].length > 0 && menuOptionsGroups[1].length > 0\n\n const commonProps = {\n ...sizeProps,\n readOnly,\n disabled,\n multiple: true,\n dropdownSelectedOption,\n renderOption,\n }\n\n const showFirstDivider = () => {\n if (!optionsMultiToggle) {\n return false\n }\n\n const firstGroup = menuOptionsGroups[1]?.[0]\n\n if (menuOptionsGroups[1].length === 0) {\n if (groupSelectedOptions) {\n return true\n }\n\n return !(isDropdownOptionGroup(menuOptions[0]) && menuOptions[0].label)\n }\n\n if (!isDropdownOptionGroup(firstGroup)) {\n return true\n }\n\n if (!firstGroup.label) {\n return true\n }\n\n return Boolean(groupSelectedOptions && menuOptionsGroups[0].length > 0)\n }\n\n const showSecondDivider = () => {\n if (!groupSelectedOptions) {\n return false\n }\n\n if (menuOptionsGroups[0].length === 0 || menuOptionsGroups[1].length === 0) {\n return false\n }\n\n const firstOption = menuOptionsGroups[1][0]\n\n if (!isDropdownOptionGroup(firstOption)) {\n return true\n }\n\n if (!firstOption.label) {\n return true\n }\n\n return false\n }\n\n return (\n <MenuList\n ref={ref}\n id={menuListId}\n role='listbox'\n aria-labelledby={label ? inputLabelId : undefined}\n aria-multiselectable\n >\n {inputText.length === 0 ? (\n <>\n {optionsMultiToggle ? (\n <ListItem\n {...sizeProps}\n borderRadius={8}\n ellipsis={false}\n textProps={{ wordBreak: 'break-word' }}\n text={optionsMultiToggleCaption}\n disabled={disabled}\n onClick={(evt) => {\n evt.stopPropagation()\n }}\n control={\n <InputCheckbox\n sizes={SIZES_CHECKBOX}\n form='none'\n name={name}\n checked={multiToggleChecked}\n indeterminate={multiToggleIndeterminate}\n error={Boolean((multiToggleChecked || multiToggleIndeterminate) && status === 'error')}\n success={Boolean((multiToggleChecked || multiToggleIndeterminate) && status === 'success')}\n onChange={() => {\n if (readOnly) {\n return\n }\n\n const update: DropdownOption[] =\n multiToggleChecked || multiToggleIndeterminate\n ? dropdownSelectedOption.filter((selectedOption) => selectedOption.disabled)\n : menuOptions.reduce<DropdownOption[]>((acc, option) => {\n const allOptions = isDropdownOptionGroup(option) ? option.options : [option]\n allOptions.forEach((opt) => !opt.disabled && acc.push(opt))\n\n return acc\n }, [])\n\n onChange(update)\n }}\n />\n }\n />\n ) : null}\n\n {showFirstDivider() ? <MenuDivider {...sizeProps} /> : null}\n\n {groupSelectedOptions\n ? renderDropdownOptionsList({\n ...commonProps,\n status,\n statusVisibility: 'always',\n menuOptions: menuOptionsGroups[0],\n forceSelected: true,\n onClick: () => {\n inputRef.current?.focus()\n },\n onChange: (evt) => {\n const update = dropdownSelectedOption.filter((item) => item.value !== evt.currentTarget.value)\n onChange(update)\n },\n })\n : null}\n\n {showSecondDivider() ? <MenuDivider {...sizeProps} /> : null}\n\n {groupSelectedOptions\n ? renderDropdownOptionsList({\n ...commonProps,\n statusVisibility: 'never',\n forceSelected: false,\n menuOptions: menuOptionsGroups[1],\n onClick: () => {\n inputRef.current?.focus()\n },\n onChange: (_, option) => {\n const update = [...dropdownSelectedOption, option]\n onChange(update)\n },\n })\n : null}\n\n {!groupSelectedOptions &&\n renderDropdownOptionsList({\n ...commonProps,\n status,\n menuOptions,\n onChange: (evt, option, selected) => {\n const update = selected\n ? dropdownSelectedOption.filter((item) => item.value !== evt.currentTarget.value)\n : [...dropdownSelectedOption, option]\n onChange(update)\n },\n })}\n </>\n ) : (\n renderDropdownOptionsList({\n ...commonProps,\n status,\n menuOptions,\n onChange: (evt, option, selected) => {\n const update = selected\n ? dropdownSelectedOption.filter((item) => item.value !== evt.currentTarget.value)\n : [...dropdownSelectedOption, option]\n onChange(update)\n },\n })\n )}\n </MenuList>\n )\n})\n"],"names":["forwardRef","props","ref","name","readOnly","label","disabled","status","menuListId","inputLabelId","inputRef","menuOptions","dropdownSelectedOption","inputText","optionsMultiToggle","optionsMultiToggleCaption","groupSelectedOptions","onChange","renderOption","sizeProps","menuOptionsGroups","useMemo","groupDropdownOptions","multiToggleChecked","length","multiToggleIndeterminate","commonProps","multiple","_jsx","MenuList","id","role","undefined","children","_jsxs","_Fragment","ListItem","borderRadius","ellipsis","textProps","wordBreak","text","onClick","evt","stopPropagation","control","InputCheckbox","sizes","SIZES_CHECKBOX","form","checked","indeterminate","error","Boolean","success","update","filter","selectedOption","reduce","acc","option","isDropdownOptionGroup","options","forEach","opt","push","showFirstDivider","firstGroup","MenuDivider","renderDropdownOptionsList","statusVisibility","forceSelected","current","focus","item","value","currentTarget","showSecondDivider","firstOption","_","selected"],"mappings":"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"}
1
+ {"version":3,"file":"DropdownMenuMultiple.js","sources":["../../../../src/components/Dropdown/DropdownMenuMultiple.tsx"],"sourcesContent":["import { forwardRef, useMemo } from 'react'\nimport { MenuList } from 'components/MenuList'\nimport { ListItem } from 'components/ListItem'\nimport { InputCheckbox } from 'components/InputCheckbox'\nimport { MenuDivider } from 'components/MenuDivider'\nimport { Text } from 'components/Text'\nimport { SIZES_CHECKBOX, SIZES_TEXT } from './sizes'\nimport type { DropdownMenuMultipleProps, DropdownOption } from './types'\nimport { groupDropdownOptions, isDropdownOptionGroup } from './utils'\nimport { renderDropdownOptionsList } from './renderDropdownOptionsList'\n\nexport const DropdownMenuMultiple = forwardRef<HTMLUListElement, DropdownMenuMultipleProps>((props, ref) => {\n const {\n name,\n readOnly,\n label,\n disabled,\n status,\n menuListId,\n inputLabelId,\n inputRef,\n menuOptions,\n dropdownSelectedOption,\n inputText,\n optionsMultiToggle,\n optionsMultiToggleCaption,\n groupSelectedOptions,\n onChange,\n renderOption,\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n } = props\n\n const sizeProps = {\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n }\n\n const menuOptionsGroups: ReturnType<typeof groupDropdownOptions> = useMemo(\n () => groupDropdownOptions(menuOptions, dropdownSelectedOption),\n [menuOptions, dropdownSelectedOption]\n )\n\n const multiToggleChecked = menuOptionsGroups[0].length > 0 && menuOptionsGroups[1].length === 0\n const multiToggleIndeterminate = menuOptionsGroups[0].length > 0 && menuOptionsGroups[1].length > 0\n\n const commonProps = {\n ...sizeProps,\n readOnly,\n disabled,\n multiple: true,\n dropdownSelectedOption,\n renderOption,\n }\n\n const showFirstDivider = () => {\n if (!optionsMultiToggle) {\n return false\n }\n\n const firstGroup = menuOptionsGroups[1]?.[0]\n\n if (menuOptionsGroups[1].length === 0) {\n if (groupSelectedOptions) {\n return true\n }\n\n return !(isDropdownOptionGroup(menuOptions[0]) && menuOptions[0].label)\n }\n\n if (!isDropdownOptionGroup(firstGroup)) {\n return true\n }\n\n if (!firstGroup.label) {\n return true\n }\n\n return Boolean(groupSelectedOptions && menuOptionsGroups[0].length > 0)\n }\n\n const showSecondDivider = () => {\n if (!groupSelectedOptions) {\n return false\n }\n\n if (menuOptionsGroups[0].length === 0 || menuOptionsGroups[1].length === 0) {\n return false\n }\n\n const firstOption = menuOptionsGroups[1][0]\n\n if (!isDropdownOptionGroup(firstOption)) {\n return true\n }\n\n if (!firstOption.label) {\n return true\n }\n\n return false\n }\n\n return (\n <MenuList\n ref={ref}\n id={menuListId}\n role='listbox'\n aria-labelledby={label ? inputLabelId : undefined}\n aria-multiselectable\n >\n {inputText.length === 0 ? (\n <>\n {optionsMultiToggle ? (\n <ListItem\n {...sizeProps}\n component='label'\n borderRadius={8}\n text={(textProps) => (\n <Text {...textProps} sizes={SIZES_TEXT} ellipsis={false} wordBreak='break-word'>\n {optionsMultiToggleCaption}\n </Text>\n )}\n disabled={disabled}\n onClick={(evt) => {\n evt.stopPropagation()\n }}\n addonLeft={\n <InputCheckbox\n {...sizeProps}\n sizes={SIZES_CHECKBOX}\n form='none'\n name={name}\n checked={multiToggleChecked}\n indeterminate={multiToggleIndeterminate}\n error={Boolean((multiToggleChecked || multiToggleIndeterminate) && status === 'error')}\n success={Boolean((multiToggleChecked || multiToggleIndeterminate) && status === 'success')}\n disabled={disabled}\n onChange={() => {\n if (readOnly) {\n return\n }\n\n const update: DropdownOption[] =\n multiToggleChecked || multiToggleIndeterminate\n ? dropdownSelectedOption.filter((selectedOption) => selectedOption.disabled)\n : menuOptions.reduce<DropdownOption[]>((acc, option) => {\n const allOptions = isDropdownOptionGroup(option) ? option.options : [option]\n allOptions.forEach((opt) => !opt.disabled && acc.push(opt))\n\n return acc\n }, [])\n\n onChange(update)\n }}\n />\n }\n />\n ) : null}\n\n {showFirstDivider() ? <MenuDivider {...sizeProps} /> : null}\n\n {groupSelectedOptions\n ? renderDropdownOptionsList({\n ...commonProps,\n status,\n statusVisibility: 'always',\n menuOptions: menuOptionsGroups[0],\n forceSelected: true,\n onClick: () => {\n inputRef.current?.focus()\n },\n onChange: (evt) => {\n const update = dropdownSelectedOption.filter((item) => item.value !== evt.currentTarget.value)\n onChange(update)\n },\n })\n : null}\n\n {showSecondDivider() ? <MenuDivider {...sizeProps} /> : null}\n\n {groupSelectedOptions\n ? renderDropdownOptionsList({\n ...commonProps,\n statusVisibility: 'never',\n forceSelected: false,\n menuOptions: menuOptionsGroups[1],\n onClick: () => {\n inputRef.current?.focus()\n },\n onChange: (_, option) => {\n const update = [...dropdownSelectedOption, option]\n onChange(update)\n },\n })\n : null}\n\n {!groupSelectedOptions &&\n renderDropdownOptionsList({\n ...commonProps,\n status,\n menuOptions,\n onChange: (evt, option, selected) => {\n const update = selected\n ? dropdownSelectedOption.filter((item) => item.value !== evt.currentTarget.value)\n : [...dropdownSelectedOption, option]\n onChange(update)\n },\n })}\n </>\n ) : (\n renderDropdownOptionsList({\n ...commonProps,\n status,\n menuOptions,\n onChange: (evt, option, selected) => {\n const update = selected\n ? dropdownSelectedOption.filter((item) => item.value !== evt.currentTarget.value)\n : [...dropdownSelectedOption, option]\n onChange(update)\n },\n })\n )}\n </MenuList>\n )\n})\n"],"names":["forwardRef","props","ref","name","readOnly","label","disabled","status","menuListId","inputLabelId","inputRef","menuOptions","dropdownSelectedOption","inputText","optionsMultiToggle","optionsMultiToggleCaption","groupSelectedOptions","onChange","renderOption","size","sizeXXS","sizeXS","sizeS","sizeM","sizeL","sizeXL","sizeProps","menuOptionsGroups","useMemo","groupDropdownOptions","multiToggleChecked","length","multiToggleIndeterminate","commonProps","multiple","_jsx","MenuList","id","role","undefined","children","_jsxs","_Fragment","ListItem","component","borderRadius","text","textProps","Text","sizes","SIZES_TEXT","ellipsis","wordBreak","onClick","evt","stopPropagation","addonLeft","InputCheckbox","SIZES_CHECKBOX","form","checked","indeterminate","error","Boolean","success","update","filter","selectedOption","reduce","acc","option","isDropdownOptionGroup","options","forEach","opt","push","showFirstDivider","firstGroup","MenuDivider","renderDropdownOptionsList","statusVisibility","forceSelected","current","focus","item","value","currentTarget","showSecondDivider","firstOption","_","selected"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{forwardRef,useMemo}from'react';import{SIZES_CHECKBOX}from'./sizes.mjs';import{groupDropdownOptions,isDropdownOptionGroup}from'./utils.mjs';import{renderDropdownOptionsList}from'./renderDropdownOptionsList.mjs';import{jsx,jsxs,Fragment}from'react/jsx-runtime';import{MenuList}from'../MenuList/MenuList.mjs';import{ListItem}from'../ListItem/ListItem.mjs';import{InputCheckbox}from'../InputCheckbox/InputCheckbox.mjs';import{MenuDivider}from'../MenuDivider/MenuDivider.mjs';const DropdownMenuMultiple=forwardRef((e,o)=>{const{name:n,readOnly:t,label:r,disabled:i,status:s,menuListId:l,inputLabelId:u,inputRef:p,menuOptions:d,dropdownSelectedOption:a,inputText:c,optionsMultiToggle:m,optionsMultiToggleCaption:f,groupSelectedOptions:g,onChange:O,renderOption:h,...b}=e;const w=useMemo(()=>groupDropdownOptions(d,a),[d,a]);const D=w[0].length>0&&w[1].length===0;const x=w[0].length>0&&w[1].length>0;const C={...b,readOnly:t,disabled:i,multiple:!0,dropdownSelectedOption:a,renderOption:h};return jsx(MenuList,{ref:o,id:l,role:"listbox","aria-labelledby":r?u:void 0,"aria-multiselectable":!0,children:c.length===0?jsxs(Fragment,{children:[m?jsx(ListItem,{...b,borderRadius:8,ellipsis:!1,textProps:{wordBreak:'break-word'},text:f,disabled:i,onClick:e=>{e.stopPropagation()},control:jsx(InputCheckbox,{sizes:SIZES_CHECKBOX,form:"none",name:n,checked:D,indeterminate:x,error:Boolean((D||x)&&s==='error'),success:Boolean((D||x)&&s==='success'),onChange:()=>{if(t)return;const e=D||x?a.filter(e=>e.disabled):d.reduce((e,o)=>((isDropdownOptionGroup(o)?o.options:[o]).forEach(o=>!o.disabled&&e.push(o)),e),[]);O(e)}})}):null,(()=>{if(!m)return!1;const e=w[1]?.[0];return w[1].length===0?!!g||!(isDropdownOptionGroup(d[0])&&d[0].label):!isDropdownOptionGroup(e)||!e.label||Boolean(g&&w[0].length>0)})()?jsx(MenuDivider,{...b}):null,g?renderDropdownOptionsList({...C,status:s,statusVisibility:'always',menuOptions:w[0],forceSelected:!0,onClick:()=>{p.current?.focus()},onChange:e=>{const o=a.filter(o=>o.value!==e.currentTarget.value);O(o)}}):null,(()=>{if(!g)return!1;if(w[0].length===0||w[1].length===0)return!1;const e=w[1][0];return!isDropdownOptionGroup(e)||!e.label})()?jsx(MenuDivider,{...b}):null,g?renderDropdownOptionsList({...C,statusVisibility:'never',forceSelected:!1,menuOptions:w[1],onClick:()=>{p.current?.focus()},onChange:(e,o)=>{const n=[...a,o];O(n)}}):null,!g&&renderDropdownOptionsList({...C,status:s,menuOptions:d,onChange:(e,o,n)=>{const t=n?a.filter(o=>o.value!==e.currentTarget.value):[...a,o];O(t)}})]}):renderDropdownOptionsList({...C,status:s,menuOptions:d,onChange:(e,o,n)=>{const t=n?a.filter(o=>o.value!==e.currentTarget.value):[...a,o];O(t)}})})});export{DropdownMenuMultiple};
1
+ import{forwardRef,useMemo}from'react';import{SIZES_CHECKBOX,SIZES_TEXT}from'./sizes.mjs';import{groupDropdownOptions,isDropdownOptionGroup}from'./utils.mjs';import{renderDropdownOptionsList}from'./renderDropdownOptionsList.mjs';import{jsx,jsxs,Fragment}from'react/jsx-runtime';import{MenuList}from'../MenuList/MenuList.mjs';import{ListItem}from'../ListItem/ListItem.mjs';import{InputCheckbox}from'../InputCheckbox/InputCheckbox.mjs';import{Text}from'../Text/Text.mjs';import{MenuDivider}from'../MenuDivider/MenuDivider.mjs';const DropdownMenuMultiple=forwardRef((e,n)=>{const{name:o,readOnly:t,label:r,disabled:i,status:s,menuListId:l,inputLabelId:p,inputRef:u,menuOptions:d,dropdownSelectedOption:a,inputText:c,optionsMultiToggle:m,optionsMultiToggleCaption:f,groupSelectedOptions:g,onChange:O,renderOption:h,size:b,sizeXXS:w,sizeXS:x,sizeS:L,sizeM:D,sizeL:M,sizeXL:S}=e;const j={size:b,sizeXXS:w,sizeXS:x,sizeS:L,sizeM:D,sizeL:M,sizeXL:S};const C=useMemo(()=>groupDropdownOptions(d,a),[d,a]);const z=C[0].length>0&&C[1].length===0;const I=C[0].length>0&&C[1].length>0;const T={...j,readOnly:t,disabled:i,multiple:!0,dropdownSelectedOption:a,renderOption:h};return jsx(MenuList,{ref:n,id:l,role:"listbox","aria-labelledby":r?p:void 0,"aria-multiselectable":!0,children:c.length===0?jsxs(Fragment,{children:[m?jsx(ListItem,{...j,component:"label",borderRadius:8,text:e=>jsx(Text,{...e,sizes:SIZES_TEXT,ellipsis:!1,wordBreak:"break-word",children:f}),disabled:i,onClick:e=>{e.stopPropagation()},addonLeft:jsx(InputCheckbox,{...j,sizes:SIZES_CHECKBOX,form:"none",name:o,checked:z,indeterminate:I,error:Boolean((z||I)&&s==='error'),success:Boolean((z||I)&&s==='success'),disabled:i,onChange:()=>{if(t)return;const e=z||I?a.filter(e=>e.disabled):d.reduce((e,n)=>((isDropdownOptionGroup(n)?n.options:[n]).forEach(n=>!n.disabled&&e.push(n)),e),[]);O(e)}})}):null,(()=>{if(!m)return!1;const e=C[1]?.[0];return C[1].length===0?!!g||!(isDropdownOptionGroup(d[0])&&d[0].label):!isDropdownOptionGroup(e)||!e.label||Boolean(g&&C[0].length>0)})()?jsx(MenuDivider,{...j}):null,g?renderDropdownOptionsList({...T,status:s,statusVisibility:'always',menuOptions:C[0],forceSelected:!0,onClick:()=>{u.current?.focus()},onChange:e=>{const n=a.filter(n=>n.value!==e.currentTarget.value);O(n)}}):null,(()=>{if(!g)return!1;if(C[0].length===0||C[1].length===0)return!1;const e=C[1][0];return!isDropdownOptionGroup(e)||!e.label})()?jsx(MenuDivider,{...j}):null,g?renderDropdownOptionsList({...T,statusVisibility:'never',forceSelected:!1,menuOptions:C[1],onClick:()=>{u.current?.focus()},onChange:(e,n)=>{const o=[...a,n];O(o)}}):null,!g&&renderDropdownOptionsList({...T,status:s,menuOptions:d,onChange:(e,n,o)=>{const t=o?a.filter(n=>n.value!==e.currentTarget.value):[...a,n];O(t)}})]}):renderDropdownOptionsList({...T,status:s,menuOptions:d,onChange:(e,n,o)=>{const t=o?a.filter(n=>n.value!==e.currentTarget.value):[...a,n];O(t)}})})});export{DropdownMenuMultiple};
2
2
  //# sourceMappingURL=DropdownMenuMultiple.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownMenuMultiple.mjs","sources":["../../../../src/components/Dropdown/DropdownMenuMultiple.tsx"],"sourcesContent":["import { forwardRef, useMemo } from 'react'\nimport { MenuList } from 'components/MenuList'\nimport { ListItem } from 'components/ListItem'\nimport { InputCheckbox } from 'components/InputCheckbox'\nimport { MenuDivider } from 'components/MenuDivider'\nimport { SIZES_CHECKBOX } from './sizes'\nimport type { DropdownMenuMultipleProps, DropdownOption } from './types'\nimport { groupDropdownOptions, isDropdownOptionGroup } from './utils'\nimport { renderDropdownOptionsList } from './renderDropdownOptionsList'\n\nexport const DropdownMenuMultiple = forwardRef<HTMLUListElement, DropdownMenuMultipleProps>((props, ref) => {\n const {\n name,\n readOnly,\n label,\n disabled,\n status,\n menuListId,\n inputLabelId,\n inputRef,\n menuOptions,\n dropdownSelectedOption,\n inputText,\n optionsMultiToggle,\n optionsMultiToggleCaption,\n groupSelectedOptions,\n onChange,\n renderOption,\n ...sizeProps\n } = props\n\n const menuOptionsGroups: ReturnType<typeof groupDropdownOptions> = useMemo(\n () => groupDropdownOptions(menuOptions, dropdownSelectedOption),\n [menuOptions, dropdownSelectedOption]\n )\n\n const multiToggleChecked = menuOptionsGroups[0].length > 0 && menuOptionsGroups[1].length === 0\n const multiToggleIndeterminate = menuOptionsGroups[0].length > 0 && menuOptionsGroups[1].length > 0\n\n const commonProps = {\n ...sizeProps,\n readOnly,\n disabled,\n multiple: true,\n dropdownSelectedOption,\n renderOption,\n }\n\n const showFirstDivider = () => {\n if (!optionsMultiToggle) {\n return false\n }\n\n const firstGroup = menuOptionsGroups[1]?.[0]\n\n if (menuOptionsGroups[1].length === 0) {\n if (groupSelectedOptions) {\n return true\n }\n\n return !(isDropdownOptionGroup(menuOptions[0]) && menuOptions[0].label)\n }\n\n if (!isDropdownOptionGroup(firstGroup)) {\n return true\n }\n\n if (!firstGroup.label) {\n return true\n }\n\n return Boolean(groupSelectedOptions && menuOptionsGroups[0].length > 0)\n }\n\n const showSecondDivider = () => {\n if (!groupSelectedOptions) {\n return false\n }\n\n if (menuOptionsGroups[0].length === 0 || menuOptionsGroups[1].length === 0) {\n return false\n }\n\n const firstOption = menuOptionsGroups[1][0]\n\n if (!isDropdownOptionGroup(firstOption)) {\n return true\n }\n\n if (!firstOption.label) {\n return true\n }\n\n return false\n }\n\n return (\n <MenuList\n ref={ref}\n id={menuListId}\n role='listbox'\n aria-labelledby={label ? inputLabelId : undefined}\n aria-multiselectable\n >\n {inputText.length === 0 ? (\n <>\n {optionsMultiToggle ? (\n <ListItem\n {...sizeProps}\n borderRadius={8}\n ellipsis={false}\n textProps={{ wordBreak: 'break-word' }}\n text={optionsMultiToggleCaption}\n disabled={disabled}\n onClick={(evt) => {\n evt.stopPropagation()\n }}\n control={\n <InputCheckbox\n sizes={SIZES_CHECKBOX}\n form='none'\n name={name}\n checked={multiToggleChecked}\n indeterminate={multiToggleIndeterminate}\n error={Boolean((multiToggleChecked || multiToggleIndeterminate) && status === 'error')}\n success={Boolean((multiToggleChecked || multiToggleIndeterminate) && status === 'success')}\n onChange={() => {\n if (readOnly) {\n return\n }\n\n const update: DropdownOption[] =\n multiToggleChecked || multiToggleIndeterminate\n ? dropdownSelectedOption.filter((selectedOption) => selectedOption.disabled)\n : menuOptions.reduce<DropdownOption[]>((acc, option) => {\n const allOptions = isDropdownOptionGroup(option) ? option.options : [option]\n allOptions.forEach((opt) => !opt.disabled && acc.push(opt))\n\n return acc\n }, [])\n\n onChange(update)\n }}\n />\n }\n />\n ) : null}\n\n {showFirstDivider() ? <MenuDivider {...sizeProps} /> : null}\n\n {groupSelectedOptions\n ? renderDropdownOptionsList({\n ...commonProps,\n status,\n statusVisibility: 'always',\n menuOptions: menuOptionsGroups[0],\n forceSelected: true,\n onClick: () => {\n inputRef.current?.focus()\n },\n onChange: (evt) => {\n const update = dropdownSelectedOption.filter((item) => item.value !== evt.currentTarget.value)\n onChange(update)\n },\n })\n : null}\n\n {showSecondDivider() ? <MenuDivider {...sizeProps} /> : null}\n\n {groupSelectedOptions\n ? renderDropdownOptionsList({\n ...commonProps,\n statusVisibility: 'never',\n forceSelected: false,\n menuOptions: menuOptionsGroups[1],\n onClick: () => {\n inputRef.current?.focus()\n },\n onChange: (_, option) => {\n const update = [...dropdownSelectedOption, option]\n onChange(update)\n },\n })\n : null}\n\n {!groupSelectedOptions &&\n renderDropdownOptionsList({\n ...commonProps,\n status,\n menuOptions,\n onChange: (evt, option, selected) => {\n const update = selected\n ? dropdownSelectedOption.filter((item) => item.value !== evt.currentTarget.value)\n : [...dropdownSelectedOption, option]\n onChange(update)\n },\n })}\n </>\n ) : (\n renderDropdownOptionsList({\n ...commonProps,\n status,\n menuOptions,\n onChange: (evt, option, selected) => {\n const update = selected\n ? dropdownSelectedOption.filter((item) => item.value !== evt.currentTarget.value)\n : [...dropdownSelectedOption, option]\n onChange(update)\n },\n })\n )}\n </MenuList>\n )\n})\n"],"names":["DropdownMenuMultiple","forwardRef","props","ref","name","readOnly","label","disabled","status","menuListId","inputLabelId","inputRef","menuOptions","dropdownSelectedOption","inputText","optionsMultiToggle","optionsMultiToggleCaption","groupSelectedOptions","onChange","renderOption","sizeProps","menuOptionsGroups","useMemo","groupDropdownOptions","multiToggleChecked","length","multiToggleIndeterminate","commonProps","multiple","_jsx","MenuList","id","role","undefined","children","_jsxs","_Fragment","ListItem","borderRadius","ellipsis","textProps","wordBreak","text","onClick","evt","stopPropagation","control","InputCheckbox","sizes","SIZES_CHECKBOX","form","checked","indeterminate","error","Boolean","success","update","filter","selectedOption","reduce","acc","option","isDropdownOptionGroup","options","forEach","opt","push","showFirstDivider","firstGroup","MenuDivider","renderDropdownOptionsList","statusVisibility","forceSelected","current","focus","item","value","currentTarget","showSecondDivider","firstOption","_","selected"],"mappings":"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"}
1
+ {"version":3,"file":"DropdownMenuMultiple.mjs","sources":["../../../../src/components/Dropdown/DropdownMenuMultiple.tsx"],"sourcesContent":["import { forwardRef, useMemo } from 'react'\nimport { MenuList } from 'components/MenuList'\nimport { ListItem } from 'components/ListItem'\nimport { InputCheckbox } from 'components/InputCheckbox'\nimport { MenuDivider } from 'components/MenuDivider'\nimport { Text } from 'components/Text'\nimport { SIZES_CHECKBOX, SIZES_TEXT } from './sizes'\nimport type { DropdownMenuMultipleProps, DropdownOption } from './types'\nimport { groupDropdownOptions, isDropdownOptionGroup } from './utils'\nimport { renderDropdownOptionsList } from './renderDropdownOptionsList'\n\nexport const DropdownMenuMultiple = forwardRef<HTMLUListElement, DropdownMenuMultipleProps>((props, ref) => {\n const {\n name,\n readOnly,\n label,\n disabled,\n status,\n menuListId,\n inputLabelId,\n inputRef,\n menuOptions,\n dropdownSelectedOption,\n inputText,\n optionsMultiToggle,\n optionsMultiToggleCaption,\n groupSelectedOptions,\n onChange,\n renderOption,\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n } = props\n\n const sizeProps = {\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n }\n\n const menuOptionsGroups: ReturnType<typeof groupDropdownOptions> = useMemo(\n () => groupDropdownOptions(menuOptions, dropdownSelectedOption),\n [menuOptions, dropdownSelectedOption]\n )\n\n const multiToggleChecked = menuOptionsGroups[0].length > 0 && menuOptionsGroups[1].length === 0\n const multiToggleIndeterminate = menuOptionsGroups[0].length > 0 && menuOptionsGroups[1].length > 0\n\n const commonProps = {\n ...sizeProps,\n readOnly,\n disabled,\n multiple: true,\n dropdownSelectedOption,\n renderOption,\n }\n\n const showFirstDivider = () => {\n if (!optionsMultiToggle) {\n return false\n }\n\n const firstGroup = menuOptionsGroups[1]?.[0]\n\n if (menuOptionsGroups[1].length === 0) {\n if (groupSelectedOptions) {\n return true\n }\n\n return !(isDropdownOptionGroup(menuOptions[0]) && menuOptions[0].label)\n }\n\n if (!isDropdownOptionGroup(firstGroup)) {\n return true\n }\n\n if (!firstGroup.label) {\n return true\n }\n\n return Boolean(groupSelectedOptions && menuOptionsGroups[0].length > 0)\n }\n\n const showSecondDivider = () => {\n if (!groupSelectedOptions) {\n return false\n }\n\n if (menuOptionsGroups[0].length === 0 || menuOptionsGroups[1].length === 0) {\n return false\n }\n\n const firstOption = menuOptionsGroups[1][0]\n\n if (!isDropdownOptionGroup(firstOption)) {\n return true\n }\n\n if (!firstOption.label) {\n return true\n }\n\n return false\n }\n\n return (\n <MenuList\n ref={ref}\n id={menuListId}\n role='listbox'\n aria-labelledby={label ? inputLabelId : undefined}\n aria-multiselectable\n >\n {inputText.length === 0 ? (\n <>\n {optionsMultiToggle ? (\n <ListItem\n {...sizeProps}\n component='label'\n borderRadius={8}\n text={(textProps) => (\n <Text {...textProps} sizes={SIZES_TEXT} ellipsis={false} wordBreak='break-word'>\n {optionsMultiToggleCaption}\n </Text>\n )}\n disabled={disabled}\n onClick={(evt) => {\n evt.stopPropagation()\n }}\n addonLeft={\n <InputCheckbox\n {...sizeProps}\n sizes={SIZES_CHECKBOX}\n form='none'\n name={name}\n checked={multiToggleChecked}\n indeterminate={multiToggleIndeterminate}\n error={Boolean((multiToggleChecked || multiToggleIndeterminate) && status === 'error')}\n success={Boolean((multiToggleChecked || multiToggleIndeterminate) && status === 'success')}\n disabled={disabled}\n onChange={() => {\n if (readOnly) {\n return\n }\n\n const update: DropdownOption[] =\n multiToggleChecked || multiToggleIndeterminate\n ? dropdownSelectedOption.filter((selectedOption) => selectedOption.disabled)\n : menuOptions.reduce<DropdownOption[]>((acc, option) => {\n const allOptions = isDropdownOptionGroup(option) ? option.options : [option]\n allOptions.forEach((opt) => !opt.disabled && acc.push(opt))\n\n return acc\n }, [])\n\n onChange(update)\n }}\n />\n }\n />\n ) : null}\n\n {showFirstDivider() ? <MenuDivider {...sizeProps} /> : null}\n\n {groupSelectedOptions\n ? renderDropdownOptionsList({\n ...commonProps,\n status,\n statusVisibility: 'always',\n menuOptions: menuOptionsGroups[0],\n forceSelected: true,\n onClick: () => {\n inputRef.current?.focus()\n },\n onChange: (evt) => {\n const update = dropdownSelectedOption.filter((item) => item.value !== evt.currentTarget.value)\n onChange(update)\n },\n })\n : null}\n\n {showSecondDivider() ? <MenuDivider {...sizeProps} /> : null}\n\n {groupSelectedOptions\n ? renderDropdownOptionsList({\n ...commonProps,\n statusVisibility: 'never',\n forceSelected: false,\n menuOptions: menuOptionsGroups[1],\n onClick: () => {\n inputRef.current?.focus()\n },\n onChange: (_, option) => {\n const update = [...dropdownSelectedOption, option]\n onChange(update)\n },\n })\n : null}\n\n {!groupSelectedOptions &&\n renderDropdownOptionsList({\n ...commonProps,\n status,\n menuOptions,\n onChange: (evt, option, selected) => {\n const update = selected\n ? dropdownSelectedOption.filter((item) => item.value !== evt.currentTarget.value)\n : [...dropdownSelectedOption, option]\n onChange(update)\n },\n })}\n </>\n ) : (\n renderDropdownOptionsList({\n ...commonProps,\n status,\n menuOptions,\n onChange: (evt, option, selected) => {\n const update = selected\n ? dropdownSelectedOption.filter((item) => item.value !== evt.currentTarget.value)\n : [...dropdownSelectedOption, option]\n onChange(update)\n },\n })\n )}\n </MenuList>\n )\n})\n"],"names":["DropdownMenuMultiple","forwardRef","props","ref","name","readOnly","label","disabled","status","menuListId","inputLabelId","inputRef","menuOptions","dropdownSelectedOption","inputText","optionsMultiToggle","optionsMultiToggleCaption","groupSelectedOptions","onChange","renderOption","size","sizeXXS","sizeXS","sizeS","sizeM","sizeL","sizeXL","sizeProps","menuOptionsGroups","useMemo","groupDropdownOptions","multiToggleChecked","length","multiToggleIndeterminate","commonProps","multiple","_jsx","MenuList","id","role","undefined","children","_jsxs","_Fragment","ListItem","component","borderRadius","text","textProps","Text","sizes","SIZES_TEXT","ellipsis","wordBreak","onClick","evt","stopPropagation","addonLeft","InputCheckbox","SIZES_CHECKBOX","form","checked","indeterminate","error","Boolean","success","update","filter","selectedOption","reduce","acc","option","isDropdownOptionGroup","options","forEach","opt","push","showFirstDivider","firstGroup","MenuDivider","renderDropdownOptionsList","statusVisibility","forceSelected","current","focus","item","value","currentTarget","showSecondDivider","firstOption","_","selected"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- 'use strict';var sizes=require('../FormInputLabel/sizes.js');var constants=require('../InputCheckbox/constants.js');const SIZES_CHECKBOX={l:constants.SIZES.m,m:constants.SIZES.s,s:constants.SIZES.xs,xs:constants.SIZES.xs};exports.SIZES={l:sizes.SIZES.l,m:sizes.SIZES.m,s:sizes.SIZES.s,xs:sizes.SIZES.xs},exports.SIZES_CHECKBOX=SIZES_CHECKBOX,exports.SIZES_ICON={l:{fontSize:24},m:{fontSize:24},s:{fontSize:20},xs:{fontSize:18}},exports.SIZES_MENU={l:{width:560,minWidth:'auto',maxWidth:'none'},m:{width:480,minWidth:'auto',maxWidth:'none'},s:{width:280,minWidth:'auto',maxWidth:'none'},fluid:{width:'100%',minWidth:'auto',maxWidth:'none'}};
1
+ 'use strict';var sizes=require('../FormInputLabel/sizes.js');var constants=require('../InputCheckbox/constants.js');const SIZES_CHECKBOX={l:constants.SIZES.m,m:constants.SIZES.s,s:constants.SIZES.xs,xs:constants.SIZES.xs};exports.SIZES={l:sizes.SIZES.l,m:sizes.SIZES.m,s:sizes.SIZES.s,xs:sizes.SIZES.xs},exports.SIZES_CHECKBOX=SIZES_CHECKBOX,exports.SIZES_ICON={l:{fontSize:24},m:{fontSize:24},s:{fontSize:20},xs:{fontSize:18}},exports.SIZES_MENU={l:{width:560,minWidth:'auto',maxWidth:'none'},m:{width:480,minWidth:'auto',maxWidth:'none'},s:{width:280,minWidth:'auto',maxWidth:'none'},fluid:{width:'100%',minWidth:'auto',maxWidth:'none'}},exports.SIZES_TEXT={l:{fontSize:18},m:{fontSize:16},s:{fontSize:14},xs:{fontSize:14}};
2
2
  //# sourceMappingURL=sizes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sizes.js","sources":["../../../../src/components/Dropdown/sizes.ts"],"sourcesContent":["import type { CSSProperties } from 'react'\nimport { SIZES as SIZES_FORM_INPUT_LABEL } from 'components/FormInputLabel'\nimport { SIZES as SIZES_INPUT_CHECKBOX } from 'components/InputCheckbox'\nimport type { MenuComponentSize } from 'components/MenuComponent'\nimport type { Size } from './types'\n\nexport const SIZES: Record<Size, CSSProperties> = {\n l: SIZES_FORM_INPUT_LABEL.l,\n m: SIZES_FORM_INPUT_LABEL.m,\n s: SIZES_FORM_INPUT_LABEL.s,\n xs: SIZES_FORM_INPUT_LABEL.xs,\n}\n\nexport const SIZES_CHECKBOX: Record<Size, CSSProperties> = {\n l: SIZES_INPUT_CHECKBOX.m,\n m: SIZES_INPUT_CHECKBOX.s,\n s: SIZES_INPUT_CHECKBOX.xs,\n xs: SIZES_INPUT_CHECKBOX.xs,\n}\n\nexport const SIZES_MENU: Record<MenuComponentSize, CSSProperties> = {\n l: {\n width: 560,\n minWidth: 'auto',\n maxWidth: 'none',\n },\n m: {\n width: 480,\n minWidth: 'auto',\n maxWidth: 'none',\n },\n s: {\n width: 280,\n minWidth: 'auto',\n maxWidth: 'none',\n },\n fluid: {\n width: '100%',\n minWidth: 'auto',\n maxWidth: 'none',\n },\n}\n\nexport const SIZES_ICON: Record<Size, CSSProperties> = {\n l: { fontSize: 24 },\n m: { fontSize: 24 },\n s: { fontSize: 20 },\n xs: { fontSize: 18 },\n}\n"],"names":["SIZES_CHECKBOX","l","SIZES_INPUT_CHECKBOX","m","s","xs","SIZES_FORM_INPUT_LABEL","fontSize","width","minWidth","maxWidth","fluid"],"mappings":"oHAaO,MAAMA,eAA8C,CACzDC,EAAGC,UAAAA,MAAqBC,EACxBA,EAAGD,UAAAA,MAAqBE,EACxBA,EAAGF,UAAAA,MAAqBG,GACxBA,GAAIH,UAAAA,MAAqBG,kBAXuB,CAChDJ,EAAGK,MAAAA,MAAuBL,EAC1BE,EAAGG,MAAAA,MAAuBH,EAC1BC,EAAGE,MAAAA,MAAuBF,EAC1BC,GAAIC,MAAAA,MAAuBD,6DAiC0B,CACrDJ,EAAG,CAAEM,SAAU,IACfJ,EAAG,CAAEI,SAAU,IACfH,EAAG,CAAEG,SAAU,IACfF,GAAI,CAAEE,SAAU,wBA3BkD,CAClEN,EAAG,CACDO,MAAO,IACPC,SAAU,OACVC,SAAU,QAEZP,EAAG,CACDK,MAAO,IACPC,SAAU,OACVC,SAAU,QAEZN,EAAG,CACDI,MAAO,IACPC,SAAU,OACVC,SAAU,QAEZC,MAAO,CACLH,MAAO,OACPC,SAAU,OACVC,SAAU"}
1
+ {"version":3,"file":"sizes.js","sources":["../../../../src/components/Dropdown/sizes.ts"],"sourcesContent":["import type { CSSProperties } from 'react'\nimport { SIZES as SIZES_FORM_INPUT_LABEL } from 'components/FormInputLabel'\nimport { SIZES as SIZES_INPUT_CHECKBOX } from 'components/InputCheckbox'\nimport type { MenuComponentSize } from 'components/MenuComponent'\nimport type { Size } from './types'\n\nexport const SIZES: Record<Size, CSSProperties> = {\n l: SIZES_FORM_INPUT_LABEL.l,\n m: SIZES_FORM_INPUT_LABEL.m,\n s: SIZES_FORM_INPUT_LABEL.s,\n xs: SIZES_FORM_INPUT_LABEL.xs,\n}\n\nexport const SIZES_CHECKBOX: Record<Size, CSSProperties> = {\n l: SIZES_INPUT_CHECKBOX.m,\n m: SIZES_INPUT_CHECKBOX.s,\n s: SIZES_INPUT_CHECKBOX.xs,\n xs: SIZES_INPUT_CHECKBOX.xs,\n}\n\nexport const SIZES_MENU: Record<MenuComponentSize, CSSProperties> = {\n l: {\n width: 560,\n minWidth: 'auto',\n maxWidth: 'none',\n },\n m: {\n width: 480,\n minWidth: 'auto',\n maxWidth: 'none',\n },\n s: {\n width: 280,\n minWidth: 'auto',\n maxWidth: 'none',\n },\n fluid: {\n width: '100%',\n minWidth: 'auto',\n maxWidth: 'none',\n },\n}\n\nexport const SIZES_TEXT: Record<Size, CSSProperties> = {\n l: { fontSize: 18 },\n m: { fontSize: 16 },\n s: { fontSize: 14 },\n xs: { fontSize: 14 },\n}\n\nexport const SIZES_ICON: Record<Size, CSSProperties> = {\n l: { fontSize: 24 },\n m: { fontSize: 24 },\n s: { fontSize: 20 },\n xs: { fontSize: 18 },\n}\n"],"names":["SIZES_CHECKBOX","l","SIZES_INPUT_CHECKBOX","m","s","xs","SIZES_FORM_INPUT_LABEL","fontSize","width","minWidth","maxWidth","fluid"],"mappings":"oHAaO,MAAMA,eAA8C,CACzDC,EAAGC,UAAAA,MAAqBC,EACxBA,EAAGD,UAAAA,MAAqBE,EACxBA,EAAGF,UAAAA,MAAqBG,GACxBA,GAAIH,UAAAA,MAAqBG,kBAXuB,CAChDJ,EAAGK,MAAAA,MAAuBL,EAC1BE,EAAGG,MAAAA,MAAuBH,EAC1BC,EAAGE,MAAAA,MAAuBF,EAC1BC,GAAIC,MAAAA,MAAuBD,6DAwC0B,CACrDJ,EAAG,CAAEM,SAAU,IACfJ,EAAG,CAAEI,SAAU,IACfH,EAAG,CAAEG,SAAU,IACfF,GAAI,CAAEE,SAAU,wBAlCkD,CAClEN,EAAG,CACDO,MAAO,IACPC,SAAU,OACVC,SAAU,QAEZP,EAAG,CACDK,MAAO,IACPC,SAAU,OACVC,SAAU,QAEZN,EAAG,CACDI,MAAO,IACPC,SAAU,OACVC,SAAU,QAEZC,MAAO,CACLH,MAAO,OACPC,SAAU,OACVC,SAAU,4BAIyC,CACrDT,EAAG,CAAEM,SAAU,IACfJ,EAAG,CAAEI,SAAU,IACfH,EAAG,CAAEG,SAAU,IACfF,GAAI,CAAEE,SAAU"}
@@ -1,2 +1,2 @@
1
- import{SIZES as SIZES$1}from'../FormInputLabel/sizes.mjs';import{SIZES as SIZES$2}from'../InputCheckbox/constants.mjs';const SIZES={l:SIZES$1.l,m:SIZES$1.m,s:SIZES$1.s,xs:SIZES$1.xs};const SIZES_CHECKBOX={l:SIZES$2.m,m:SIZES$2.s,s:SIZES$2.xs,xs:SIZES$2.xs};const SIZES_MENU={l:{width:560,minWidth:'auto',maxWidth:'none'},m:{width:480,minWidth:'auto',maxWidth:'none'},s:{width:280,minWidth:'auto',maxWidth:'none'},fluid:{width:'100%',minWidth:'auto',maxWidth:'none'}};const SIZES_ICON={l:{fontSize:24},m:{fontSize:24},s:{fontSize:20},xs:{fontSize:18}};export{SIZES,SIZES_CHECKBOX,SIZES_ICON,SIZES_MENU};
1
+ import{SIZES as SIZES$1}from'../FormInputLabel/sizes.mjs';import{SIZES as SIZES$2}from'../InputCheckbox/constants.mjs';const SIZES={l:SIZES$1.l,m:SIZES$1.m,s:SIZES$1.s,xs:SIZES$1.xs};const SIZES_CHECKBOX={l:SIZES$2.m,m:SIZES$2.s,s:SIZES$2.xs,xs:SIZES$2.xs};const SIZES_MENU={l:{width:560,minWidth:'auto',maxWidth:'none'},m:{width:480,minWidth:'auto',maxWidth:'none'},s:{width:280,minWidth:'auto',maxWidth:'none'},fluid:{width:'100%',minWidth:'auto',maxWidth:'none'}};const SIZES_TEXT={l:{fontSize:18},m:{fontSize:16},s:{fontSize:14},xs:{fontSize:14}};const SIZES_ICON={l:{fontSize:24},m:{fontSize:24},s:{fontSize:20},xs:{fontSize:18}};export{SIZES,SIZES_CHECKBOX,SIZES_ICON,SIZES_MENU,SIZES_TEXT};
2
2
  //# sourceMappingURL=sizes.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"sizes.mjs","sources":["../../../../src/components/Dropdown/sizes.ts"],"sourcesContent":["import type { CSSProperties } from 'react'\nimport { SIZES as SIZES_FORM_INPUT_LABEL } from 'components/FormInputLabel'\nimport { SIZES as SIZES_INPUT_CHECKBOX } from 'components/InputCheckbox'\nimport type { MenuComponentSize } from 'components/MenuComponent'\nimport type { Size } from './types'\n\nexport const SIZES: Record<Size, CSSProperties> = {\n l: SIZES_FORM_INPUT_LABEL.l,\n m: SIZES_FORM_INPUT_LABEL.m,\n s: SIZES_FORM_INPUT_LABEL.s,\n xs: SIZES_FORM_INPUT_LABEL.xs,\n}\n\nexport const SIZES_CHECKBOX: Record<Size, CSSProperties> = {\n l: SIZES_INPUT_CHECKBOX.m,\n m: SIZES_INPUT_CHECKBOX.s,\n s: SIZES_INPUT_CHECKBOX.xs,\n xs: SIZES_INPUT_CHECKBOX.xs,\n}\n\nexport const SIZES_MENU: Record<MenuComponentSize, CSSProperties> = {\n l: {\n width: 560,\n minWidth: 'auto',\n maxWidth: 'none',\n },\n m: {\n width: 480,\n minWidth: 'auto',\n maxWidth: 'none',\n },\n s: {\n width: 280,\n minWidth: 'auto',\n maxWidth: 'none',\n },\n fluid: {\n width: '100%',\n minWidth: 'auto',\n maxWidth: 'none',\n },\n}\n\nexport const SIZES_ICON: Record<Size, CSSProperties> = {\n l: { fontSize: 24 },\n m: { fontSize: 24 },\n s: { fontSize: 20 },\n xs: { fontSize: 18 },\n}\n"],"names":["SIZES","l","SIZES_FORM_INPUT_LABEL","m","s","xs","SIZES_CHECKBOX","SIZES_INPUT_CHECKBOX","SIZES_MENU","width","minWidth","maxWidth","fluid","SIZES_ICON","fontSize"],"mappings":"uHAMO,MAAMA,MAAqC,CAChDC,EAAGC,QAAuBD,EAC1BE,EAAGD,QAAuBC,EAC1BC,EAAGF,QAAuBE,EAC1BC,GAAIH,QAAuBG,IAGtB,MAAMC,eAA8C,CACzDL,EAAGM,QAAqBJ,EACxBA,EAAGI,QAAqBH,EACxBA,EAAGG,QAAqBF,GACxBA,GAAIE,QAAqBF,IAGpB,MAAMG,WAAuD,CAClEP,EAAG,CACDQ,MAAO,IACPC,SAAU,OACVC,SAAU,QAEZR,EAAG,CACDM,MAAO,IACPC,SAAU,OACVC,SAAU,QAEZP,EAAG,CACDK,MAAO,IACPC,SAAU,OACVC,SAAU,QAEZC,MAAO,CACLH,MAAO,OACPC,SAAU,OACVC,SAAU,SAIP,MAAME,WAA0C,CACrDZ,EAAG,CAAEa,SAAU,IACfX,EAAG,CAAEW,SAAU,IACfV,EAAG,CAAEU,SAAU,IACfT,GAAI,CAAES,SAAU"}
1
+ {"version":3,"file":"sizes.mjs","sources":["../../../../src/components/Dropdown/sizes.ts"],"sourcesContent":["import type { CSSProperties } from 'react'\nimport { SIZES as SIZES_FORM_INPUT_LABEL } from 'components/FormInputLabel'\nimport { SIZES as SIZES_INPUT_CHECKBOX } from 'components/InputCheckbox'\nimport type { MenuComponentSize } from 'components/MenuComponent'\nimport type { Size } from './types'\n\nexport const SIZES: Record<Size, CSSProperties> = {\n l: SIZES_FORM_INPUT_LABEL.l,\n m: SIZES_FORM_INPUT_LABEL.m,\n s: SIZES_FORM_INPUT_LABEL.s,\n xs: SIZES_FORM_INPUT_LABEL.xs,\n}\n\nexport const SIZES_CHECKBOX: Record<Size, CSSProperties> = {\n l: SIZES_INPUT_CHECKBOX.m,\n m: SIZES_INPUT_CHECKBOX.s,\n s: SIZES_INPUT_CHECKBOX.xs,\n xs: SIZES_INPUT_CHECKBOX.xs,\n}\n\nexport const SIZES_MENU: Record<MenuComponentSize, CSSProperties> = {\n l: {\n width: 560,\n minWidth: 'auto',\n maxWidth: 'none',\n },\n m: {\n width: 480,\n minWidth: 'auto',\n maxWidth: 'none',\n },\n s: {\n width: 280,\n minWidth: 'auto',\n maxWidth: 'none',\n },\n fluid: {\n width: '100%',\n minWidth: 'auto',\n maxWidth: 'none',\n },\n}\n\nexport const SIZES_TEXT: Record<Size, CSSProperties> = {\n l: { fontSize: 18 },\n m: { fontSize: 16 },\n s: { fontSize: 14 },\n xs: { fontSize: 14 },\n}\n\nexport const SIZES_ICON: Record<Size, CSSProperties> = {\n l: { fontSize: 24 },\n m: { fontSize: 24 },\n s: { fontSize: 20 },\n xs: { fontSize: 18 },\n}\n"],"names":["SIZES","l","SIZES_FORM_INPUT_LABEL","m","s","xs","SIZES_CHECKBOX","SIZES_INPUT_CHECKBOX","SIZES_MENU","width","minWidth","maxWidth","fluid","SIZES_TEXT","fontSize","SIZES_ICON"],"mappings":"uHAMO,MAAMA,MAAqC,CAChDC,EAAGC,QAAuBD,EAC1BE,EAAGD,QAAuBC,EAC1BC,EAAGF,QAAuBE,EAC1BC,GAAIH,QAAuBG,IAGtB,MAAMC,eAA8C,CACzDL,EAAGM,QAAqBJ,EACxBA,EAAGI,QAAqBH,EACxBA,EAAGG,QAAqBF,GACxBA,GAAIE,QAAqBF,IAGpB,MAAMG,WAAuD,CAClEP,EAAG,CACDQ,MAAO,IACPC,SAAU,OACVC,SAAU,QAEZR,EAAG,CACDM,MAAO,IACPC,SAAU,OACVC,SAAU,QAEZP,EAAG,CACDK,MAAO,IACPC,SAAU,OACVC,SAAU,QAEZC,MAAO,CACLH,MAAO,OACPC,SAAU,OACVC,SAAU,SAIP,MAAME,WAA0C,CACrDZ,EAAG,CAAEa,SAAU,IACfX,EAAG,CAAEW,SAAU,IACfV,EAAG,CAAEU,SAAU,IACfT,GAAI,CAAES,SAAU,KAGX,MAAMC,WAA0C,CACrDd,EAAG,CAAEa,SAAU,IACfX,EAAG,CAAEW,SAAU,IACfV,EAAG,CAAEU,SAAU,IACfT,GAAI,CAAES,SAAU"}
@@ -1,2 +1,2 @@
1
- 'use strict';var React=require('react');var withMergedProps=require('../../hocs/withMergedProps.js');var style=require('./style.js');var constants=require('./constants.js');var jsxRuntime=require('react/jsx-runtime');var Text=require('../Text/Text.js');var IconButton=require('../IconButton/IconButton.js');var index=require('../../icon-pack/src/icons/HelpCircle/index.js');var Tooltip=require('../Tooltip/Tooltip.js');var Badge=require('../Badge/Badge.js');const FormLabel=withMergedProps.withMergedProps(React.forwardRef(({size:e="m",textProps:s={},hint:t={},badgeProps:n={},sizeXXS:r,sizeXS:i,sizeS:o,sizeM:a,sizeL:c,sizeXL:l,disabled:d,error:p,success:u,checked:x,children:j,control:m,label:b,...T},z)=>{const I={size:e,sizeXXS:r,sizeXS:i,sizeS:o,sizeM:a,sizeL:c,sizeXL:l};const S={disabled:d,error:p,success:u,checked:x};const h=typeof m=='object'&&typeof m.props=='object'&&m.props!==null?m.props:{};const{text:B,textProps:R={},buttonProps:L={},tooltipProps:g={}}=t;return jsxRuntime.jsxs(style.Root,{...T,...I,...S,ref:z,children:[jsxRuntime.jsx(style.Control,{children:typeof m=='function'?m({...I,...S}):React.cloneElement(m,{...I,...S,...h})}),jsxRuntime.jsxs(style.Content,{children:[jsxRuntime.jsx(Text.Text,{as:"span",appearance:"body",color:"inherit",wordBreak:"break-word",sizes:constants.SIZES_LABEL,...I,...s,children:b??j}),B?jsxRuntime.jsx(Text.Text,{as:"span",appearance:"caption",color:S.disabled?'content-disabled':'content-onmain-secondary',wordBreak:"break-word",sizes:constants.SIZES_SUBTITLE,...I,...R,children:B}):null]}),jsxRuntime.jsxs(style.Hint,{sizes:constants.SIZES_HINT,...I,children:[!L.onClick||g.title||g.content?null:jsxRuntime.jsx(IconButton.IconButton,{icon:jsxRuntime.jsx(index.HelpCircle,{}),marginLeft:2,...I,sizes:constants.SIZES_HINT_BUTTON,iconProps:{sizes:constants.SIZES_HINT_ICON},...L,disabled:S.disabled||L.disabled}),g.title||g.content?jsxRuntime.jsx(Tooltip.Tooltip,{preset:"brand",placement:"top",styles:{wrapper:{cursor:'inherit'}},...g,children:jsxRuntime.jsx(IconButton.IconButton,{icon:jsxRuntime.jsx(index.HelpCircle,{}),marginLeft:2,...I,sizes:constants.SIZES_HINT_BUTTON,iconProps:{sizes:constants.SIZES_HINT_ICON},...L,disabled:S.disabled||L.disabled})}):null,n.children?jsxRuntime.jsx(Badge.Badge,{size:"s",cursor:"inherit",marginLeft:6,resetDefaultMargin:!0,...n}):null]})]})}),{displayName:"FormLabel",sizes:constants.SIZES});exports.COMPONENT_NAME="FormLabel",exports.FormLabel=FormLabel;
1
+ 'use strict';var React=require('react');var withMergedProps=require('../../hocs/withMergedProps.js');var style=require('./style.js');var constants=require('./constants.js');var jsxRuntime=require('react/jsx-runtime');var Text=require('../Text/Text.js');var IconButton=require('../IconButton/IconButton.js');var index=require('../../icon-pack/src/icons/HelpCircle/index.js');var Tooltip=require('../Tooltip/Tooltip.js');var Badge=require('../Badge/Badge.js');const FormLabel=withMergedProps.withMergedProps(React.forwardRef(({size:e="m",textProps:s={},hint:t={},badgeProps:r={},sizeXXS:n,sizeXS:i,sizeS:o,sizeM:a,sizeL:c,sizeXL:l,disabled:d,error:u,success:p,checked:x,children:j,control:m,label:b,...T},z)=>{const h={size:e,sizeXXS:n,sizeXS:i,sizeS:o,sizeM:a,sizeL:c,sizeXL:l};const S={disabled:d,error:u,success:p,checked:x};const B=typeof m=='object'&&typeof m.props=='object'&&m.props!==null?m.props:{};const{text:R,textProps:I={},buttonProps:L={},tooltipProps:g={}}=t;return jsxRuntime.jsxs(style.Root,{...T,...h,...S,ref:z,children:[jsxRuntime.jsx(style.Control,{children:typeof m=='function'?m({...h,...S}):React.cloneElement(m,{...h,...S,...B})}),jsxRuntime.jsxs(style.Content,{children:[jsxRuntime.jsx(Text.Text,{as:"span",appearance:"body",color:"inherit",wordBreak:"break-word",sizes:constants.SIZES_LABEL,...h,...s,children:b??j}),R?jsxRuntime.jsx(Text.Text,{as:"span",appearance:"caption",color:S.disabled?'content-disabled':'content-onmain-secondary',wordBreak:"break-word",sizes:constants.SIZES_SUBTITLE,...h,...I,children:R}):null]}),jsxRuntime.jsxs(style.Hint,{sizes:constants.SIZES_HINT,...h,children:[!L.onClick||g.title||g.content?null:jsxRuntime.jsx(IconButton.IconButton,{icon:jsxRuntime.jsx(index.HelpCircle,{}),marginLeft:2,...h,sizes:constants.SIZES_HINT_BUTTON,...L,disabled:S.disabled||L.disabled}),g.title||g.content?jsxRuntime.jsx(Tooltip.Tooltip,{preset:"brand",placement:"top",styles:{wrapper:{cursor:'inherit'}},...g,children:jsxRuntime.jsx(IconButton.IconButton,{icon:jsxRuntime.jsx(index.HelpCircle,{}),marginLeft:2,...h,sizes:constants.SIZES_HINT_BUTTON,...L,disabled:S.disabled||L.disabled})}):null,r.children?jsxRuntime.jsx(Badge.Badge,{size:"s",cursor:"inherit",marginLeft:6,resetDefaultMargin:!0,...r}):null]})]})}),{displayName:"FormLabel",sizes:constants.SIZES});exports.COMPONENT_NAME="FormLabel",exports.FormLabel=FormLabel;
2
2
  //# sourceMappingURL=FormLabel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormLabel.js","sources":["../../../../src/components/FormLabel/FormLabel.tsx"],"sourcesContent":["import { forwardRef, cloneElement } from 'react'\nimport { HelpCircle } from '@foxford/icon-pack'\nimport { withMergedProps } from 'hocs/withMergedProps'\nimport type { MergedProps } from 'hocs/withMergedProps'\nimport { Text } from 'components/Text'\nimport { IconButton } from 'components/IconButton'\nimport { Badge } from 'components/Badge'\nimport { Tooltip } from 'components/Tooltip'\nimport * as Styled from './style'\nimport { SIZES, SIZES_LABEL, SIZES_HINT, SIZES_HINT_BUTTON, SIZES_HINT_ICON, SIZES_SUBTITLE } from './constants'\nimport type { FormLabelProps } from './types'\n\nconst COMPONENT_NAME = 'FormLabel'\n\n/**\n *\n * *v1.0.0*\n *\n * Компонент для контрола выбора с дополнительными элементами.\n * Позволяет добавить для контрола заголовок, подзаголовок, бейдж и подсказку.\n *\n * Поддерживается \"ref\" и все нативные атрибуты \\<label\\> элемента.\n */\nconst FormLabel: React.ForwardRefExoticComponent<FormLabelProps> = withMergedProps<FormLabelProps, HTMLLabelElement>(\n forwardRef<HTMLLabelElement, MergedProps<FormLabelProps>>(\n (\n {\n size = 'm',\n textProps = {},\n hint = {},\n badgeProps = {},\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n disabled,\n error,\n success,\n checked,\n children,\n control,\n label,\n ...props\n },\n ref\n ) => {\n const sizeProps = {\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n }\n\n const stateProps = {\n disabled,\n error,\n success,\n checked,\n }\n\n const elementProps =\n typeof control === 'object' && typeof control.props === 'object' && control.props !== null ? control.props : {}\n\n const {\n text: hintText,\n textProps: hintTextProps = {},\n buttonProps: hintButtonProps = {},\n tooltipProps: hintTooltipProps = {},\n } = hint\n\n return (\n <Styled.Root {...props} {...sizeProps} {...stateProps} ref={ref}>\n <Styled.Control>\n {typeof control === 'function'\n ? control({\n ...sizeProps,\n ...stateProps,\n })\n : cloneElement(control, {\n ...sizeProps,\n ...stateProps,\n ...elementProps,\n })}\n </Styled.Control>\n <Styled.Content>\n <Text\n as='span'\n appearance='body'\n color='inherit'\n wordBreak='break-word'\n sizes={SIZES_LABEL}\n {...sizeProps}\n {...textProps}\n >\n {label ?? children}\n </Text>\n {hintText ? (\n <Text\n as='span'\n appearance='caption'\n color={stateProps.disabled ? 'content-disabled' : 'content-onmain-secondary'}\n wordBreak='break-word'\n sizes={SIZES_SUBTITLE}\n {...sizeProps}\n {...hintTextProps}\n >\n {hintText}\n </Text>\n ) : null}\n </Styled.Content>\n\n <Styled.Hint sizes={SIZES_HINT} {...sizeProps}>\n {hintButtonProps.onClick && !hintTooltipProps.title && !hintTooltipProps.content ? (\n <IconButton\n icon={<HelpCircle />}\n marginLeft={2}\n {...sizeProps}\n sizes={SIZES_HINT_BUTTON}\n iconProps={{\n // TODO: DSFOX-208 - удалить изменение размеров иконки через iconProps.\n sizes: SIZES_HINT_ICON,\n }}\n {...hintButtonProps}\n disabled={stateProps.disabled || hintButtonProps.disabled}\n />\n ) : null}\n {hintTooltipProps.title || hintTooltipProps.content ? (\n <Tooltip\n preset='brand'\n placement='top'\n styles={{\n wrapper: { cursor: 'inherit' },\n }}\n {...hintTooltipProps}\n >\n <IconButton\n icon={<HelpCircle />}\n marginLeft={2}\n {...sizeProps}\n sizes={SIZES_HINT_BUTTON}\n iconProps={{\n // TODO: DSFOX-208 - удалить изменение размеров иконки через iconProps.\n sizes: SIZES_HINT_ICON,\n }}\n {...hintButtonProps}\n disabled={stateProps.disabled || hintButtonProps.disabled}\n />\n </Tooltip>\n ) : null}\n {badgeProps.children ? (\n <Badge size='s' cursor='inherit' marginLeft={6} resetDefaultMargin {...badgeProps} />\n ) : null}\n </Styled.Hint>\n </Styled.Root>\n )\n }\n ),\n {\n displayName: COMPONENT_NAME,\n sizes: SIZES,\n }\n)\n\nexport { FormLabel, COMPONENT_NAME }\n"],"names":["FormLabel","withMergedProps","forwardRef","size","textProps","hint","badgeProps","sizeXXS","sizeXS","sizeS","sizeM","sizeL","sizeXL","disabled","error","success","checked","children","control","label","props","ref","sizeProps","stateProps","elementProps","text","hintText","hintTextProps","buttonProps","hintButtonProps","tooltipProps","hintTooltipProps","_jsxs","Styled","_jsx","cloneElement","Text","as","appearance","color","wordBreak","sizes","SIZES_LABEL","SIZES_SUBTITLE","SIZES_HINT","onClick","title","content","IconButton","icon","HelpCircle","marginLeft","SIZES_HINT_BUTTON","iconProps","SIZES_HINT_ICON","Tooltip","preset","placement","styles","wrapper","cursor","Badge","resetDefaultMargin","displayName","SIZES"],"mappings":"0cAuBA,MAAMA,UAA6DC,gBAAAA,gBACjEC,MAAAA,WACE,EAEIC,OAAO,IACPC,YAAY,CAAA,EACZC,OAAO,CAAA,EACPC,aAAa,CAAA,EACbC,UACAC,SACAC,QACAC,QACAC,QACAC,SACAC,WACAC,QACAC,UACAC,UACAC,WACAC,UACAC,WACGC,GAELC,KAEA,MAAMC,EAAY,CAChBnB,OACAI,UACAC,SACAC,QACAC,QACAC,QACAC,UAGF,MAAMW,EAAa,CACjBV,WACAC,QACAC,UACAC,WAGF,MAAMQ,SACGN,GAAY,iBAAmBA,EAAQE,OAAU,UAAYF,EAAQE,QAAU,KAAOF,EAAQE,MAAQ,CAAA,EAE/G,MACEK,KAAMC,EACNtB,UAAWuB,EAAgB,CAAA,EAC3BC,YAAaC,EAAkB,CAAA,EAC/BC,aAAcC,EAAmB,CAAA,GAC/B1B,EAEJ,OACE2B,WAAAA,KAACC,MAAAA,KAAW,IAAKb,KAAWE,KAAeC,EAAYF,IAAKA,EAAIJ,SAAA,CAC9DiB,WAAAA,IAACD,cAAc,CAAAhB,gBACLC,GAAY,WAChBA,EAAQ,IACHI,KACAC,IAELY,MAAAA,aAAajB,EAAS,IACjBI,KACAC,KACAC,MAGXQ,WAAAA,KAACC,cAAc,CAAAhB,SAAA,CACbiB,WAAAA,IAACE,UAAI,CACHC,GAAG,OACHC,WAAW,OACXC,MAAM,UACNC,UAAU,aACVC,MAAOC,UAAAA,eACHpB,KACAlB,EAASa,SAEZE,GAASF,IAEXS,EACCQ,WAAAA,IAACE,UAAI,CACHC,GAAG,OACHC,WAAW,UACXC,MAAOhB,EAAWV,SAAW,mBAAqB,2BAClD2B,UAAU,aACVC,MAAOE,UAAAA,kBACHrB,KACAK,EAAaV,SAEhBS,IAED,QAGNM,WAAAA,KAACC,WAAW,CAACQ,MAAOG,UAAAA,cAAgBtB,EAASL,WAC1CY,EAAgBgB,SAAYd,EAAiBe,OAAUf,EAAiBgB,QAarE,KAZFb,WAAAA,IAACc,sBAAU,CACTC,KAAMf,WAAAA,IAACgB,MAAAA,eACPC,WAAY,KACR7B,EACJmB,MAAOW,UAAAA,kBACPC,UAAW,CAETZ,MAAOa,UAAAA,oBAELzB,EACJhB,SAAUU,EAAWV,UAAYgB,EAAgBhB,WAGpDkB,EAAiBe,OAASf,EAAiBgB,QAC1Cb,WAAAA,IAACqB,gBAAO,CACNC,OAAO,QACPC,UAAU,MACVC,OAAQ,CACNC,QAAS,CAAEC,OAAQ,eAEjB7B,EAAgBd,SAEpBiB,WAAAA,IAACc,sBAAU,CACTC,KAAMf,WAAAA,IAACgB,MAAAA,eACPC,WAAY,KACR7B,EACJmB,MAAOW,UAAAA,kBACPC,UAAW,CAETZ,MAAOa,UAAAA,oBAELzB,EACJhB,SAAUU,EAAWV,UAAYgB,EAAgBhB,aAGnD,KACHP,EAAWW,SACViB,WAAAA,IAAC2B,MAAAA,MAAK,CAAC1D,KAAK,IAAIyD,OAAO,UAAUT,WAAY,EAAGW,oBAAkB,KAAKxD,IACrE,aAMd,CACEyD,YAvJmB,YAwJnBtB,MAAOuB,UAAAA,+BAxJY"}
1
+ {"version":3,"file":"FormLabel.js","sources":["../../../../src/components/FormLabel/FormLabel.tsx"],"sourcesContent":["import { forwardRef, cloneElement } from 'react'\nimport { HelpCircle } from '@foxford/icon-pack'\nimport { withMergedProps } from 'hocs/withMergedProps'\nimport type { MergedProps } from 'hocs/withMergedProps'\nimport { Text } from 'components/Text'\nimport { IconButton } from 'components/IconButton'\nimport { Badge } from 'components/Badge'\nimport { Tooltip } from 'components/Tooltip'\nimport * as Styled from './style'\nimport { SIZES, SIZES_LABEL, SIZES_HINT, SIZES_HINT_BUTTON, SIZES_SUBTITLE } from './constants'\nimport type { FormLabelProps } from './types'\n\nconst COMPONENT_NAME = 'FormLabel'\n\n/**\n *\n * *v1.0.0*\n *\n * Компонент для контрола выбора с дополнительными элементами.\n * Позволяет добавить для контрола заголовок, подзаголовок, бейдж и подсказку.\n *\n * Поддерживается \"ref\" и все нативные атрибуты \\<label\\> элемента.\n */\nconst FormLabel: React.ForwardRefExoticComponent<FormLabelProps> = withMergedProps<FormLabelProps, HTMLLabelElement>(\n forwardRef<HTMLLabelElement, MergedProps<FormLabelProps>>(\n (\n {\n size = 'm',\n textProps = {},\n hint = {},\n badgeProps = {},\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n disabled,\n error,\n success,\n checked,\n children,\n control,\n label,\n ...props\n },\n ref\n ) => {\n const sizeProps = {\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n }\n\n const stateProps = {\n disabled,\n error,\n success,\n checked,\n }\n\n const elementProps =\n typeof control === 'object' && typeof control.props === 'object' && control.props !== null ? control.props : {}\n\n const {\n text: hintText,\n textProps: hintTextProps = {},\n buttonProps: hintButtonProps = {},\n tooltipProps: hintTooltipProps = {},\n } = hint\n\n return (\n <Styled.Root {...props} {...sizeProps} {...stateProps} ref={ref}>\n <Styled.Control>\n {typeof control === 'function'\n ? control({\n ...sizeProps,\n ...stateProps,\n })\n : cloneElement(control, {\n ...sizeProps,\n ...stateProps,\n ...elementProps,\n })}\n </Styled.Control>\n <Styled.Content>\n <Text\n as='span'\n appearance='body'\n color='inherit'\n wordBreak='break-word'\n sizes={SIZES_LABEL}\n {...sizeProps}\n {...textProps}\n >\n {label ?? children}\n </Text>\n {hintText ? (\n <Text\n as='span'\n appearance='caption'\n color={stateProps.disabled ? 'content-disabled' : 'content-onmain-secondary'}\n wordBreak='break-word'\n sizes={SIZES_SUBTITLE}\n {...sizeProps}\n {...hintTextProps}\n >\n {hintText}\n </Text>\n ) : null}\n </Styled.Content>\n\n <Styled.Hint sizes={SIZES_HINT} {...sizeProps}>\n {hintButtonProps.onClick && !hintTooltipProps.title && !hintTooltipProps.content ? (\n <IconButton\n icon={<HelpCircle />}\n marginLeft={2}\n {...sizeProps}\n sizes={SIZES_HINT_BUTTON}\n {...hintButtonProps}\n disabled={stateProps.disabled || hintButtonProps.disabled}\n />\n ) : null}\n {hintTooltipProps.title || hintTooltipProps.content ? (\n <Tooltip\n preset='brand'\n placement='top'\n styles={{\n wrapper: { cursor: 'inherit' },\n }}\n {...hintTooltipProps}\n >\n <IconButton\n icon={<HelpCircle />}\n marginLeft={2}\n {...sizeProps}\n sizes={SIZES_HINT_BUTTON}\n {...hintButtonProps}\n disabled={stateProps.disabled || hintButtonProps.disabled}\n />\n </Tooltip>\n ) : null}\n {badgeProps.children ? (\n <Badge size='s' cursor='inherit' marginLeft={6} resetDefaultMargin {...badgeProps} />\n ) : null}\n </Styled.Hint>\n </Styled.Root>\n )\n }\n ),\n {\n displayName: COMPONENT_NAME,\n sizes: SIZES,\n }\n)\n\nexport { FormLabel, COMPONENT_NAME }\n"],"names":["FormLabel","withMergedProps","forwardRef","size","textProps","hint","badgeProps","sizeXXS","sizeXS","sizeS","sizeM","sizeL","sizeXL","disabled","error","success","checked","children","control","label","props","ref","sizeProps","stateProps","elementProps","text","hintText","hintTextProps","buttonProps","hintButtonProps","tooltipProps","hintTooltipProps","_jsxs","Styled","_jsx","cloneElement","Text","as","appearance","color","wordBreak","sizes","SIZES_LABEL","SIZES_SUBTITLE","SIZES_HINT","onClick","title","content","IconButton","icon","HelpCircle","marginLeft","SIZES_HINT_BUTTON","Tooltip","preset","placement","styles","wrapper","cursor","Badge","resetDefaultMargin","displayName","SIZES"],"mappings":"0cAuBA,MAAMA,UAA6DC,gBAAAA,gBACjEC,MAAAA,WACE,EAEIC,OAAO,IACPC,YAAY,CAAA,EACZC,OAAO,CAAA,EACPC,aAAa,CAAA,EACbC,UACAC,SACAC,QACAC,QACAC,QACAC,SACAC,WACAC,QACAC,UACAC,UACAC,WACAC,UACAC,WACGC,GAELC,KAEA,MAAMC,EAAY,CAChBnB,OACAI,UACAC,SACAC,QACAC,QACAC,QACAC,UAGF,MAAMW,EAAa,CACjBV,WACAC,QACAC,UACAC,WAGF,MAAMQ,SACGN,GAAY,iBAAmBA,EAAQE,OAAU,UAAYF,EAAQE,QAAU,KAAOF,EAAQE,MAAQ,CAAA,EAE/G,MACEK,KAAMC,EACNtB,UAAWuB,EAAgB,CAAA,EAC3BC,YAAaC,EAAkB,CAAA,EAC/BC,aAAcC,EAAmB,CAAA,GAC/B1B,EAEJ,OACE2B,WAAAA,KAACC,MAAAA,KAAW,IAAKb,KAAWE,KAAeC,EAAYF,IAAKA,EAAIJ,SAAA,CAC9DiB,WAAAA,IAACD,cAAc,CAAAhB,gBACLC,GAAY,WAChBA,EAAQ,IACHI,KACAC,IAELY,MAAAA,aAAajB,EAAS,IACjBI,KACAC,KACAC,MAGXQ,WAAAA,KAACC,cAAc,CAAAhB,SAAA,CACbiB,WAAAA,IAACE,UAAI,CACHC,GAAG,OACHC,WAAW,OACXC,MAAM,UACNC,UAAU,aACVC,MAAOC,UAAAA,eACHpB,KACAlB,EAASa,SAEZE,GAASF,IAEXS,EACCQ,WAAAA,IAACE,UAAI,CACHC,GAAG,OACHC,WAAW,UACXC,MAAOhB,EAAWV,SAAW,mBAAqB,2BAClD2B,UAAU,aACVC,MAAOE,UAAAA,kBACHrB,KACAK,EAAaV,SAEhBS,IAED,QAGNM,WAAAA,KAACC,WAAW,CAACQ,MAAOG,UAAAA,cAAgBtB,EAASL,WAC1CY,EAAgBgB,SAAYd,EAAiBe,OAAUf,EAAiBgB,QASrE,KARFb,WAAAA,IAACc,sBAAU,CACTC,KAAMf,WAAAA,IAACgB,MAAAA,eACPC,WAAY,KACR7B,EACJmB,MAAOW,UAAAA,qBACHvB,EACJhB,SAAUU,EAAWV,UAAYgB,EAAgBhB,WAGpDkB,EAAiBe,OAASf,EAAiBgB,QAC1Cb,WAAAA,IAACmB,gBAAO,CACNC,OAAO,QACPC,UAAU,MACVC,OAAQ,CACNC,QAAS,CAAEC,OAAQ,eAEjB3B,EAAgBd,SAEpBiB,WAAAA,IAACc,sBAAU,CACTC,KAAMf,WAAAA,IAACgB,MAAAA,eACPC,WAAY,KACR7B,EACJmB,MAAOW,UAAAA,qBACHvB,EACJhB,SAAUU,EAAWV,UAAYgB,EAAgBhB,aAGnD,KACHP,EAAWW,SACViB,WAAAA,IAACyB,MAAAA,MAAK,CAACxD,KAAK,IAAIuD,OAAO,UAAUP,WAAY,EAAGS,oBAAkB,KAAKtD,IACrE,aAMd,CACEuD,YA/ImB,YAgJnBpB,MAAOqB,UAAAA,+BAhJY"}
@@ -1,2 +1,2 @@
1
- import{forwardRef,cloneElement}from'react';import{withMergedProps}from'../../hocs/withMergedProps.mjs';import{Root,Control,Content,Hint}from'./style.mjs';import{SIZES,SIZES_LABEL,SIZES_SUBTITLE,SIZES_HINT,SIZES_HINT_ICON,SIZES_HINT_BUTTON}from'./constants.mjs';import{jsxs,jsx}from'react/jsx-runtime';import{Text}from'../Text/Text.mjs';import{IconButton}from'../IconButton/IconButton.mjs';import{HelpCircle}from'../../icon-pack/src/icons/HelpCircle/index.mjs';import{Tooltip}from'../Tooltip/Tooltip.mjs';import{Badge}from'../Badge/Badge.mjs';const COMPONENT_NAME='FormLabel';const FormLabel=withMergedProps(forwardRef(({size:e="m",textProps:o={},hint:s={},badgeProps:r={},sizeXXS:t,sizeXS:i,sizeS:n,sizeM:l,sizeL:c,sizeXL:a,disabled:p,error:d,success:m,checked:S,children:I,control:T,label:j,...x},E)=>{const b={size:e,sizeXXS:t,sizeXS:i,sizeS:n,sizeM:l,sizeL:c,sizeXL:a};const f={disabled:p,error:d,success:m,checked:S};const z=typeof T=='object'&&typeof T.props=='object'&&T.props!==null?T.props:{};const{text:N,textProps:_={},buttonProps:h={},tooltipProps:u={}}=s;return jsxs(Root,{...x,...b,...f,ref:E,children:[jsx(Control,{children:typeof T=='function'?T({...b,...f}):cloneElement(T,{...b,...f,...z})}),jsxs(Content,{children:[jsx(Text,{as:"span",appearance:"body",color:"inherit",wordBreak:"break-word",sizes:SIZES_LABEL,...b,...o,children:j??I}),N?jsx(Text,{as:"span",appearance:"caption",color:f.disabled?'content-disabled':'content-onmain-secondary',wordBreak:"break-word",sizes:SIZES_SUBTITLE,...b,..._,children:N}):null]}),jsxs(Hint,{sizes:SIZES_HINT,...b,children:[!h.onClick||u.title||u.content?null:jsx(IconButton,{icon:jsx(HelpCircle,{}),marginLeft:2,...b,sizes:SIZES_HINT_BUTTON,iconProps:{sizes:SIZES_HINT_ICON},...h,disabled:f.disabled||h.disabled}),u.title||u.content?jsx(Tooltip,{preset:"brand",placement:"top",styles:{wrapper:{cursor:'inherit'}},...u,children:jsx(IconButton,{icon:jsx(HelpCircle,{}),marginLeft:2,...b,sizes:SIZES_HINT_BUTTON,iconProps:{sizes:SIZES_HINT_ICON},...h,disabled:f.disabled||h.disabled})}):null,r.children?jsx(Badge,{size:"s",cursor:"inherit",marginLeft:6,resetDefaultMargin:!0,...r}):null]})]})}),{displayName:"FormLabel",sizes:SIZES});export{COMPONENT_NAME,FormLabel};
1
+ import{forwardRef,cloneElement}from'react';import{withMergedProps}from'../../hocs/withMergedProps.mjs';import{Root,Control,Content,Hint}from'./style.mjs';import{SIZES,SIZES_LABEL,SIZES_SUBTITLE,SIZES_HINT,SIZES_HINT_BUTTON}from'./constants.mjs';import{jsxs,jsx}from'react/jsx-runtime';import{Text}from'../Text/Text.mjs';import{IconButton}from'../IconButton/IconButton.mjs';import{HelpCircle}from'../../icon-pack/src/icons/HelpCircle/index.mjs';import{Tooltip}from'../Tooltip/Tooltip.mjs';import{Badge}from'../Badge/Badge.mjs';const COMPONENT_NAME='FormLabel';const FormLabel=withMergedProps(forwardRef(({size:e="m",textProps:o={},hint:s={},badgeProps:r={},sizeXXS:t,sizeXS:i,sizeS:n,sizeM:l,sizeL:c,sizeXL:a,disabled:p,error:d,success:m,checked:S,children:T,control:j,label:x,...b},f)=>{const I={size:e,sizeXXS:t,sizeXS:i,sizeS:n,sizeM:l,sizeL:c,sizeXL:a};const z={disabled:p,error:d,success:m,checked:S};const E=typeof j=='object'&&typeof j.props=='object'&&j.props!==null?j.props:{};const{text:h,textProps:u={},buttonProps:B={},tooltipProps:L={}}=s;return jsxs(Root,{...b,...I,...z,ref:f,children:[jsx(Control,{children:typeof j=='function'?j({...I,...z}):cloneElement(j,{...I,...z,...E})}),jsxs(Content,{children:[jsx(Text,{as:"span",appearance:"body",color:"inherit",wordBreak:"break-word",sizes:SIZES_LABEL,...I,...o,children:x??T}),h?jsx(Text,{as:"span",appearance:"caption",color:z.disabled?'content-disabled':'content-onmain-secondary',wordBreak:"break-word",sizes:SIZES_SUBTITLE,...I,...u,children:h}):null]}),jsxs(Hint,{sizes:SIZES_HINT,...I,children:[!B.onClick||L.title||L.content?null:jsx(IconButton,{icon:jsx(HelpCircle,{}),marginLeft:2,...I,sizes:SIZES_HINT_BUTTON,...B,disabled:z.disabled||B.disabled}),L.title||L.content?jsx(Tooltip,{preset:"brand",placement:"top",styles:{wrapper:{cursor:'inherit'}},...L,children:jsx(IconButton,{icon:jsx(HelpCircle,{}),marginLeft:2,...I,sizes:SIZES_HINT_BUTTON,...B,disabled:z.disabled||B.disabled})}):null,r.children?jsx(Badge,{size:"s",cursor:"inherit",marginLeft:6,resetDefaultMargin:!0,...r}):null]})]})}),{displayName:"FormLabel",sizes:SIZES});export{COMPONENT_NAME,FormLabel};
2
2
  //# sourceMappingURL=FormLabel.mjs.map