{"version":3,"file":"DualFunctionButton.cjs","names":["React","_interopRequireWildcard","require","_TextButton","_icons","_CommonStyling","_nanoid","_types","_DropdownContent","_interopRequireDefault","_styledComponents","_common","_jsxRuntime","_excluded","_excluded2","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ownKeys","keys","getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","DualButtonsContainer","styled","div","TextButtonContentContainer","props","$size","Size","Large","Medium","DualFunctionButton","_ref","children","variant","type","size","width","testId","disabled","id","dropdownMenuValues","setDropdownMenuValues","dropdownCustomizationProps","_objectWithoutProperties2","loading","icon","onClick","renderProps","isOpen","setIsOpen","useState","activeDescendant","setActiveDescendant","focused","setFocused","keyboardNavigated","setKeyboardNavigated","dropdownContainerRef","useRef","selectedValues","setSelectedValues","dropdownContentRef","dropdownButtonRef","useClickOutsideRef","useFocusOutsideRef","dropdownContentId","nanoid","useEffect","jsxs","DropdownContainer","ref","$isButton","$readOnly","$disabled","margin","jsx","flatEdge","containerRef","customizationProps","itemsType","isButton","Small","onActiveDescendantChanged","outline","messageOnNoResults","alignLeft","ariaRolesType","onKeyPress","key","className","role","stopPropagation","SystemIcons","ArrowDropUp","ArrowDropDown","propTypes","_propTypes","arrayOf","string","func","_default","exports"],"sources":["../../src/Button/DualFunctionButton.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport TextButton, { TextButtonContentContainer, TextButtonProps } from './TextButton';\r\nimport { SystemIcons } from '../icons';\r\nimport { DropdownContainer } from '../Dropdown/CommonStyling';\r\nimport { nanoid } from 'nanoid';\r\nimport { Size } from '../types';\r\nimport DropdownContent, { DropdownCustomizationProps } from '../Dropdown/DropdownContent';\r\nimport styled from 'styled-components';\r\nimport { useClickOutsideRef, useFocusOutsideRef } from '../common';\r\n\r\nconst DualButtonsContainer = styled.div<{ $size?: Size }>`\r\n  display: flex;\r\n  align-items: center;\r\n\r\n  button:first-child {\r\n    margin-right: 2px;\r\n  }\r\n\r\n  ${TextButtonContentContainer} {\r\n    min-width: unset;\r\n    gap: 0px;\r\n    padding: ${(props) => (props.$size == Size.Large ? '4px 18px' : props.$size == Size.Medium ? '4px 14px' : '4px 10px')};\r\n  }\r\n\r\n  .extraMargin {\r\n    margin-bottom: 4px;\r\n  }\r\n`;\r\n\r\nexport interface ButtonOption {\r\n  label: string;\r\n}\r\n\r\nexport interface DualButtonProps extends TextButtonProps {\r\n  /**\r\n  * Required. An object containing customization properties for the dropdown.\r\n  */\r\n  dropdownCustomizationProps: DropdownCustomizationProps;\r\n  /**\r\n  * Optional. An array of strings representing the values in the dropdown menu.\r\n  */\r\n  dropdownMenuValues?: string[];\r\n  /**\r\n   * Optional. A function to be called when the values in the dropdown menu change.\r\n   * It should return void, a boolean, or undefined.\r\n   */\r\n  setDropdownMenuValues?: (values: string[]) => void | boolean | undefined;\r\n}\r\n\r\nconst DualFunctionButton: React.FunctionComponent<DualButtonProps> = ({\r\n  children = 'Primary Button',\r\n  variant = 'primary',\r\n  type = 'button',\r\n  size = Size.Medium,\r\n  width: width = 'auto',\r\n  testId,\r\n  disabled,\r\n  id,\r\n  dropdownMenuValues,\r\n  setDropdownMenuValues,\r\n  dropdownCustomizationProps,\r\n  ...props\r\n}) => {\r\n  // Let's filter out properties that we don't need to render.\r\n  const { loading, icon, onClick, ...renderProps } = props;\r\n  const [isOpen, setIsOpen] = React.useState<boolean>(false);\r\n  const [activeDescendant, setActiveDescendant] = React.useState<string>();\r\n  const [focused, setFocused] = React.useState<number | null>(null);\r\n  const [keyboardNavigated, setKeyboardNavigated] = React.useState<boolean>(false);\r\n  const dropdownContainerRef = React.useRef<HTMLDivElement>(null);\r\n  const [selectedValues, setSelectedValues] = React.useState<string[]>([]);\r\n\r\n  const dropdownContentRef = React.useRef<HTMLDivElement>(null);\r\n  const dropdownButtonRef = useClickOutsideRef(\r\n    () => setIsOpen(false),\r\n    [dropdownContainerRef],\r\n    useFocusOutsideRef(() => setIsOpen(false), [dropdownContentRef]),\r\n  );\r\n  \r\n  const dropdownContentId = id ? id + '_dropdownContent' : nanoid();\r\n\r\n  React.useEffect(() => {\r\n    !isOpen && setKeyboardNavigated(false);\r\n  }, [isOpen]);\r\n\r\n  return (\r\n    <DualButtonsContainer $size={size}>\r\n      <DropdownContainer ref={dropdownContainerRef} $isButton={true} $readOnly={false} $disabled={false} margin=\"\">\r\n        <TextButton {...renderProps} testId={testId} onClick={onClick} disabled={disabled} type={type} loading={loading} icon={icon} size={size} width={width} variant={variant} flatEdge=\"right\">\r\n          {children}\r\n        </TextButton>\r\n        <DropdownContent\r\n          containerRef={dropdownContainerRef}\r\n          customizationProps={dropdownCustomizationProps}\r\n          filter=\"\"\r\n          ref={dropdownContentRef}\r\n          selectedValues={dropdownCustomizationProps.itemsType == 'normal' ? [] : dropdownMenuValues ?? selectedValues}\r\n          setSelectedValues={setDropdownMenuValues ? setDropdownMenuValues : setSelectedValues}\r\n          isButton={true}\r\n          setIsOpen={setIsOpen}\r\n          focused={focused}\r\n          width={size == Size.Small ? '280px' : '360px'}\r\n          onActiveDescendantChanged={(e) => setActiveDescendant(e)}\r\n          setFocused={setFocused}\r\n          size={size}\r\n          outline={keyboardNavigated}\r\n          isOpen={isOpen}\r\n          id={dropdownContentId}\r\n          messageOnNoResults=\"\"\r\n          alignLeft={true}\r\n          ariaRolesType=\"menu\"\r\n        />\r\n      </DropdownContainer>\r\n      <TextButton\r\n        variant={variant}\r\n        {...renderProps}\r\n        onKeyPress={(e: any) => {\r\n          if (isOpen) return;\r\n\r\n          if (e.key === 'Enter' || e.key === ' ') {\r\n            setFocused(0);\r\n            setKeyboardNavigated(true);\r\n          }\r\n        }}\r\n        className=\"extraMargin\"\r\n        testId={'options_toggleBtn'}\r\n        ref={dropdownButtonRef}\r\n        aria-activedescendant={activeDescendant}\r\n        role=\"button\"\r\n        aria-controls={dropdownContentId}\r\n        disabled={disabled}\r\n        type={type}\r\n        size={size}\r\n        onClick={(e) => {\r\n          e.stopPropagation();\r\n          setIsOpen(!isOpen);\r\n        }}\r\n        icon={ isOpen ? <SystemIcons.ArrowDropUp aria-hidden=\"true\" size=\"16px\" /> \r\n        : <SystemIcons.ArrowDropDown aria-hidden=\"true\" size=\"16px\" /> }\r\n        flatEdge=\"left\"\r\n      />\r\n    </DualButtonsContainer>\r\n  );\r\n};\r\n\r\nexport default DualFunctionButton;\r\n"],"mappings":"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","ignoreList":[]}