@razorpay/blade 11.6.2 → 11.6.3

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 (23) hide show
  1. package/build/lib/native/components/Dropdown/dropdownUtils.js +1 -1
  2. package/build/lib/native/components/Dropdown/dropdownUtils.js.map +1 -1
  3. package/build/lib/native/components/Dropdown/useDropdown.js +1 -1
  4. package/build/lib/native/components/Dropdown/useDropdown.js.map +1 -1
  5. package/build/lib/web/development/components/Dropdown/DropdownOverlay.web.js +4 -2
  6. package/build/lib/web/development/components/Dropdown/DropdownOverlay.web.js.map +1 -1
  7. package/build/lib/web/development/components/Dropdown/dropdownUtils.js +16 -8
  8. package/build/lib/web/development/components/Dropdown/dropdownUtils.js.map +1 -1
  9. package/build/lib/web/development/components/Dropdown/useDropdown.js +1 -1
  10. package/build/lib/web/development/components/Dropdown/useDropdown.js.map +1 -1
  11. package/build/lib/web/development/components/FileUpload/FileUpload.web.js +0 -1
  12. package/build/lib/web/development/components/FileUpload/FileUpload.web.js.map +1 -1
  13. package/build/lib/web/production/components/Dropdown/DropdownOverlay.web.js +4 -2
  14. package/build/lib/web/production/components/Dropdown/DropdownOverlay.web.js.map +1 -1
  15. package/build/lib/web/production/components/Dropdown/dropdownUtils.js +16 -8
  16. package/build/lib/web/production/components/Dropdown/dropdownUtils.js.map +1 -1
  17. package/build/lib/web/production/components/Dropdown/useDropdown.js +1 -1
  18. package/build/lib/web/production/components/Dropdown/useDropdown.js.map +1 -1
  19. package/build/lib/web/production/components/FileUpload/FileUpload.web.js +0 -1
  20. package/build/lib/web/production/components/FileUpload/FileUpload.web.js.map +1 -1
  21. package/build/types/components/index.d.ts +8 -2
  22. package/build/types/components/index.native.d.ts +7 -1
  23. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useDropdown.js","sources":["../../../../../../src/components/Dropdown/useDropdown.ts"],"sourcesContent":["import React from 'react';\n\nimport {\n ensureScrollVisiblity,\n getActionFromKey,\n getIndexByLetter,\n getUpdatedIndex,\n makeInputDisplayValue,\n makeInputValue,\n performAction,\n} from './dropdownUtils';\nimport type { SelectActionsType } from './dropdownUtils';\nimport type { DropdownProps } from './types';\n\nimport { dropdownComponentIds } from './dropdownComponentIds';\nimport type { FormInputHandleOnKeyDownEvent } from '~components/Form/FormTypes';\nimport { isReactNative } from '~utils';\nimport type { ContainerElementType } from '~utils/types';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst noop = (): void => {};\n\ntype OptionsType = {\n title: string;\n value: string;\n onClickTrigger?: (isSelected: boolean) => void;\n}[];\n\ntype DropdownContextType = {\n isOpen: boolean;\n setIsOpen: (isOpen: boolean) => void;\n close: () => void;\n /**\n * contains the indexes of selected items\n */\n selectedIndices: number[];\n setSelectedIndices: (value: number[]) => void;\n /**\n * contains the indexes of selected items during controlled selection\n */\n controlledValueIndices: number[];\n setControlledValueIndices: (value: number[]) => void;\n /**\n * contains information about all the options inside actionlist\n */\n options: OptionsType;\n setOptions: (value: OptionsType) => void;\n\n /**\n * Filtered values for AutoComplete Inputs\n */\n filteredValues: string[];\n setFilteredValues: (values: string[]) => void;\n\n /** Currently active (focussed) index */\n activeIndex: number;\n setActiveIndex: (value: number) => void;\n\n /** Currently active (focussed) tag */\n activeTagIndex: number;\n setActiveTagIndex: (value: number) => void;\n\n /**\n * Sometimes we want to ignore the blur event to keep dropdown open but not ignore the blur animation from selectinput\n * E.g. When someone clicks on Footer, we just want to ignore the blur event and not the blur animation\n */\n shouldIgnoreBlurAnimation: boolean;\n setShouldIgnoreBlurAnimation: (value: boolean) => void;\n /** Tells you if keyboard was used. Its false by default and turns into true when keydown is called */\n isKeydownPressed: boolean;\n setIsKeydownPressed: (value: boolean) => void;\n /** common baseId which is prepended to multiple other ids inside this dropdown */\n dropdownBaseId: string;\n /** Which element has triggered the dropdown */\n dropdownTriggerer?: 'SelectInput' | 'DropdownButton' | 'AutoComplete' | 'DropdownLink';\n /** ref of triggerer. Used to call focus in certain places */\n triggererRef: React.MutableRefObject<HTMLButtonElement | null>;\n triggererWrapperRef: React.MutableRefObject<ContainerElementType | null>;\n actionListItemRef: React.RefObject<HTMLDivElement | null>;\n isTagDismissedRef: React.RefObject<{ value: boolean } | null>;\n visibleTagsCountRef: React.RefObject<{ value: number } | null>;\n\n selectionType?: DropdownProps['selectionType'];\n /** whether footer has an action item.\n * certain a11y behaviour changes happen here\n * E.g. tabbing moves focus to that action instead of outside\n */\n hasFooterAction: boolean;\n setHasFooterAction: (value: boolean) => void;\n\n /**\n * Apart from dropdownTriggerer prop, we also set this boolean because in BottomSheet, the initial trigger can be Select but also have autocomplete inside of it\n */\n hasAutoCompleteInBottomSheetHeader: boolean;\n setHasAutoCompleteInBottomSheetHeader: (value: boolean) => void;\n\n /**\n * A value that can be used in dependency array to know when Dropdown value is changed.\n *\n * E.g.\n * ```ts\n * useEffect(() => {\n * console.log('Uncontrolled value change');\n * }, [changeCallbackTriggerer])\n * ```\n */\n changeCallbackTriggerer: number;\n setChangeCallbackTriggerer: (changeCallbackTriggerer: number) => void;\n\n /**\n * true when SelectInput has `value` prop (when it is controlled)\n */\n isControlled: boolean;\n setIsControlled: (isControlled: boolean) => void;\n};\n\nconst DropdownContext = React.createContext<DropdownContextType>({\n isOpen: false,\n setIsOpen: noop,\n close: noop,\n selectedIndices: [],\n setSelectedIndices: noop,\n controlledValueIndices: [],\n setControlledValueIndices: noop,\n options: [],\n setOptions: noop,\n filteredValues: [],\n setFilteredValues: noop,\n activeIndex: -1,\n setActiveIndex: noop,\n activeTagIndex: -1,\n setActiveTagIndex: noop,\n shouldIgnoreBlurAnimation: false,\n setShouldIgnoreBlurAnimation: noop,\n hasFooterAction: false,\n setHasFooterAction: noop,\n hasAutoCompleteInBottomSheetHeader: false,\n setHasAutoCompleteInBottomSheetHeader: noop,\n isKeydownPressed: false,\n setIsKeydownPressed: noop,\n changeCallbackTriggerer: 0,\n setChangeCallbackTriggerer: noop,\n isControlled: false,\n setIsControlled: noop,\n dropdownBaseId: '',\n actionListItemRef: {\n current: null,\n },\n triggererRef: {\n current: null,\n },\n isTagDismissedRef: {\n current: null,\n },\n visibleTagsCountRef: {\n current: null,\n },\n triggererWrapperRef: {\n current: null,\n },\n});\n\nlet searchTimeout: number;\nlet searchString = '';\n\ntype UseDropdownReturnValue = DropdownContextType & {\n /**\n * Click event on combobox. Toggles the dropdown\n */\n onTriggerClick: () => void;\n\n /**\n * Keydown event of combobox. Handles most of the keyboard accessibility of dropdown\n */\n onTriggerKeydown: FormInputHandleOnKeyDownEvent | undefined;\n\n /**\n * Handles the click even on option.\n *\n * Contains the logic that selects the option, moves the focus, etc\n */\n onOptionClick: (\n e: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLInputElement>,\n index: number,\n ) => void;\n\n /**\n * Removes the option with given optionsIndex\n */\n removeOption: (index: number) => void;\n\n /**\n * value that is used during form submissions\n */\n value: string;\n /**\n * This is the value that is displayed inside select after selection\n */\n displayValue: string;\n};\n\n/**\n * Handles almost all the functionality of dropdown.\n *\n * Returns the values from DropdownContext along with some helper functions and event handlers\n *\n */\nconst useDropdown = (): UseDropdownReturnValue => {\n const {\n isOpen,\n setIsOpen,\n close,\n selectedIndices,\n setSelectedIndices,\n activeIndex,\n setActiveIndex,\n activeTagIndex,\n setActiveTagIndex,\n visibleTagsCountRef,\n isKeydownPressed,\n setIsKeydownPressed,\n options,\n selectionType,\n changeCallbackTriggerer,\n setChangeCallbackTriggerer,\n isControlled,\n setControlledValueIndices,\n filteredValues,\n dropdownTriggerer,\n ...rest\n } = React.useContext(DropdownContext);\n\n type SelectOptionType = (\n index: number,\n properties?: {\n closeOnSelection?: boolean;\n },\n ) => boolean;\n\n const setIndices = (indices: number[]): void => {\n if (isControlled) {\n setControlledValueIndices(indices);\n } else {\n setSelectedIndices(indices);\n }\n };\n\n const removeOption = (index: number): void => {\n // remove existing item\n const existingItemIndex = selectedIndices.indexOf(index);\n if (existingItemIndex < 0) {\n return;\n }\n\n setIndices([\n ...selectedIndices.slice(0, existingItemIndex),\n ...selectedIndices.slice(existingItemIndex + 1),\n ]);\n };\n\n /**\n * Marks the given index as selected.\n *\n * In single select, it also closes the menu.\n * In multiselect, it keeps the menu open for more selections\n */\n const selectOption: SelectOptionType = (\n index,\n properties = {\n closeOnSelection: true,\n },\n ) => {\n let isSelected = false;\n\n if (index < 0 || index > options.length - 1) {\n return isSelected;\n }\n\n if (selectionType === 'multiple') {\n if (selectedIndices.includes(index)) {\n removeOption(index);\n isSelected = false;\n } else {\n setIndices([...selectedIndices, index]);\n isSelected = true;\n }\n } else {\n setIndices([index]);\n isSelected = true;\n }\n\n // Triggers `onChange` on SelectInput\n setChangeCallbackTriggerer(changeCallbackTriggerer + 1);\n\n if (activeIndex !== index) {\n setActiveIndex(index);\n }\n\n if (properties?.closeOnSelection && selectionType !== 'multiple') {\n close();\n }\n\n return isSelected;\n };\n\n /**\n * Click listener for combobox (or any triggerer of the dropdown)\n */\n const onTriggerClick = (): void => {\n if (isOpen) {\n close();\n } else {\n setIsOpen(true);\n }\n };\n\n /**\n * Function that we call when we want to move focus from one option to other\n */\n const onOptionChange = (actionType: SelectActionsType, index?: number): void => {\n setActiveTagIndex(-1);\n const newIndex = index ?? activeIndex;\n let updatedIndex: number;\n const hasAutoComplete =\n rest.hasAutoCompleteInBottomSheetHeader ||\n dropdownTriggerer === dropdownComponentIds.triggers.AutoComplete;\n if (hasAutoComplete && filteredValues.length > 0) {\n // When its autocomplete, we don't loop over all options. We only loop on filtered options\n\n const filteredIndexes = filteredValues\n .map((filteredValue) => options.findIndex((option) => option.value === filteredValue))\n .sort();\n\n updatedIndex =\n filteredIndexes[\n getUpdatedIndex({\n currentIndex: filteredIndexes.indexOf(newIndex),\n maxIndex: filteredIndexes.length - 1,\n actionType,\n })\n ];\n } else {\n updatedIndex = getUpdatedIndex({\n currentIndex: newIndex,\n maxIndex: options.length - 1,\n actionType,\n });\n }\n setActiveIndex(updatedIndex);\n\n const optionValues = options.map((option) => option.value);\n ensureScrollVisiblity(newIndex, rest.actionListItemRef.current, optionValues);\n };\n\n /**\n * Click handler when user clicks on any particular option.\n *\n * It\n * - changes the option focus\n * - selects that option\n * - moves focus to combobox\n */\n const onOptionClick = (\n e: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLInputElement>,\n index: number,\n ): void => {\n const actionType = getActionFromKey(e, isOpen, dropdownTriggerer);\n if (typeof actionType === 'number') {\n onOptionChange(actionType, index);\n }\n selectOption(index);\n if (!isReactNative()) {\n rest.triggererRef.current?.focus();\n }\n };\n\n /**\n * Function we call to handle the typeahead.\n *\n * It takes a letter, stores that letter in searchString (and clears it after timeout) to maintain a word\n *\n * Then searches for that word in options and moves focus there.\n */\n const onComboType = (letter: string, actionType: SelectActionsType): void => {\n // open the listbox if it is closed\n setIsOpen(true);\n\n if (\n rest.hasAutoCompleteInBottomSheetHeader ||\n dropdownTriggerer === dropdownComponentIds.triggers.AutoComplete\n ) {\n return;\n }\n\n if (typeof searchTimeout === 'number') {\n window.clearTimeout(searchTimeout);\n }\n\n searchTimeout = window.setTimeout(() => {\n searchString = '';\n }, 500);\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n searchString = searchString + letter;\n const optionTitles = options.map((option) => option.title);\n const searchIndex = getIndexByLetter(optionTitles, searchString, activeIndex + 1);\n\n // if a match was found, go to it\n if (searchIndex >= 0) {\n onOptionChange(actionType, searchIndex);\n }\n // if no matches, clear the timeout and search string\n else {\n window.clearTimeout(searchTimeout);\n searchString = '';\n }\n };\n\n /**\n * Keydown event of combobox. Handles most of the keyboard accessibility of dropdown\n */\n const onTriggerKeydown = (e: {\n event: React.KeyboardEvent<HTMLInputElement | HTMLButtonElement>;\n }): void => {\n if (!isKeydownPressed && ![' ', 'Enter', 'Escape', 'Meta'].includes(e.event.key)) {\n // When keydown is not already pressed and its not Enter, Space, Command, or Escape key (those are generic keys and we only want to handle arrow keys or home buttons etc)\n setIsKeydownPressed(true);\n }\n\n const actionType = getActionFromKey(e.event, isOpen, dropdownTriggerer);\n\n if (actionType) {\n performAction(actionType, e, {\n setIsOpen,\n close,\n onOptionChange,\n onComboType,\n selectCurrentOption: () => {\n if (activeIndex < 0) {\n return;\n }\n\n const isSelected = selectOption(activeIndex);\n if (rest.hasFooterAction && !isReactNative()) {\n rest.triggererRef.current?.focus();\n }\n\n options[activeIndex].onClickTrigger?.(isSelected);\n },\n });\n }\n };\n\n return {\n isOpen,\n setIsOpen,\n close,\n selectedIndices,\n setSelectedIndices,\n filteredValues,\n removeOption,\n setControlledValueIndices,\n onTriggerClick,\n onTriggerKeydown,\n onOptionClick,\n activeIndex,\n setActiveIndex,\n activeTagIndex,\n setActiveTagIndex,\n visibleTagsCountRef,\n isKeydownPressed,\n setIsKeydownPressed,\n changeCallbackTriggerer,\n setChangeCallbackTriggerer,\n isControlled,\n options,\n value: makeInputValue(selectedIndices, options),\n displayValue: makeInputDisplayValue(selectedIndices, options),\n selectionType,\n dropdownTriggerer,\n ...rest,\n };\n};\n\nexport type { DropdownContextType, OptionsType };\nexport { useDropdown, DropdownContext };\n"],"names":["noop","DropdownContext","React","createContext","isOpen","setIsOpen","close","selectedIndices","setSelectedIndices","controlledValueIndices","setControlledValueIndices","options","setOptions","filteredValues","setFilteredValues","activeIndex","setActiveIndex","activeTagIndex","setActiveTagIndex","shouldIgnoreBlurAnimation","setShouldIgnoreBlurAnimation","hasFooterAction","setHasFooterAction","hasAutoCompleteInBottomSheetHeader","setHasAutoCompleteInBottomSheetHeader","isKeydownPressed","setIsKeydownPressed","changeCallbackTriggerer","setChangeCallbackTriggerer","isControlled","setIsControlled","dropdownBaseId","actionListItemRef","current","triggererRef","isTagDismissedRef","visibleTagsCountRef","triggererWrapperRef","searchTimeout","searchString","useDropdown","_React$useContext","useContext","selectionType","dropdownTriggerer","rest","_objectWithoutProperties","_excluded","setIndices","indices","removeOption","index","existingItemIndex","indexOf","concat","_toConsumableArray","slice","selectOption","properties","arguments","length","undefined","closeOnSelection","isSelected","includes","onTriggerClick","onOptionChange","actionType","newIndex","updatedIndex","hasAutoComplete","dropdownComponentIds","triggers","AutoComplete","filteredIndexes","map","filteredValue","findIndex","option","value","sort","getUpdatedIndex","currentIndex","maxIndex","optionValues","ensureScrollVisiblity","onOptionClick","e","getActionFromKey","isReactNative","_rest$triggererRef$cu","focus","onComboType","letter","window","clearTimeout","setTimeout","optionTitles","title","searchIndex","getIndexByLetter","onTriggerKeydown","event","key","performAction","selectCurrentOption","_options$activeIndex$","_options$activeIndex","_rest$triggererRef$cu2","onClickTrigger","call","_objectSpread","makeInputValue","displayValue","makeInputDisplayValue"],"mappings":";;;;;;;;;;;;AAmBA;AACA,IAAMA,IAAI,GAAG,SAAPA,IAAIA,GAAe,EAAE,CAAA;AAgG3B,IAAMC,eAAe,gBAAGC,cAAK,CAACC,aAAa,CAAsB;AAC/DC,EAAAA,MAAM,EAAE,KAAK;AACbC,EAAAA,SAAS,EAAEL,IAAI;AACfM,EAAAA,KAAK,EAAEN,IAAI;AACXO,EAAAA,eAAe,EAAE,EAAE;AACnBC,EAAAA,kBAAkB,EAAER,IAAI;AACxBS,EAAAA,sBAAsB,EAAE,EAAE;AAC1BC,EAAAA,yBAAyB,EAAEV,IAAI;AAC/BW,EAAAA,OAAO,EAAE,EAAE;AACXC,EAAAA,UAAU,EAAEZ,IAAI;AAChBa,EAAAA,cAAc,EAAE,EAAE;AAClBC,EAAAA,iBAAiB,EAAEd,IAAI;EACvBe,WAAW,EAAE,CAAC,CAAC;AACfC,EAAAA,cAAc,EAAEhB,IAAI;EACpBiB,cAAc,EAAE,CAAC,CAAC;AAClBC,EAAAA,iBAAiB,EAAElB,IAAI;AACvBmB,EAAAA,yBAAyB,EAAE,KAAK;AAChCC,EAAAA,4BAA4B,EAAEpB,IAAI;AAClCqB,EAAAA,eAAe,EAAE,KAAK;AACtBC,EAAAA,kBAAkB,EAAEtB,IAAI;AACxBuB,EAAAA,kCAAkC,EAAE,KAAK;AACzCC,EAAAA,qCAAqC,EAAExB,IAAI;AAC3CyB,EAAAA,gBAAgB,EAAE,KAAK;AACvBC,EAAAA,mBAAmB,EAAE1B,IAAI;AACzB2B,EAAAA,uBAAuB,EAAE,CAAC;AAC1BC,EAAAA,0BAA0B,EAAE5B,IAAI;AAChC6B,EAAAA,YAAY,EAAE,KAAK;AACnBC,EAAAA,eAAe,EAAE9B,IAAI;AACrB+B,EAAAA,cAAc,EAAE,EAAE;AAClBC,EAAAA,iBAAiB,EAAE;AACjBC,IAAAA,OAAO,EAAE,IAAA;GACV;AACDC,EAAAA,YAAY,EAAE;AACZD,IAAAA,OAAO,EAAE,IAAA;GACV;AACDE,EAAAA,iBAAiB,EAAE;AACjBF,IAAAA,OAAO,EAAE,IAAA;GACV;AACDG,EAAAA,mBAAmB,EAAE;AACnBH,IAAAA,OAAO,EAAE,IAAA;GACV;AACDI,EAAAA,mBAAmB,EAAE;AACnBJ,IAAAA,OAAO,EAAE,IAAA;AACX,GAAA;AACF,CAAC,EAAC;AAEF,IAAIK,aAAqB,CAAA;AACzB,IAAIC,YAAY,GAAG,EAAE,CAAA;AAsCrB;AACA;AACA;AACA;AACA;AACA;AACA,IAAMC,WAAW,GAAG,SAAdA,WAAWA,GAAiC;AAChD,EAAA,IAAAC,iBAAA,GAsBIvC,cAAK,CAACwC,UAAU,CAACzC,eAAe,CAAC;IArBnCG,MAAM,GAAAqC,iBAAA,CAANrC,MAAM;IACNC,SAAS,GAAAoC,iBAAA,CAATpC,SAAS;IACTC,KAAK,GAAAmC,iBAAA,CAALnC,KAAK;IACLC,eAAe,GAAAkC,iBAAA,CAAflC,eAAe;IACfC,kBAAkB,GAAAiC,iBAAA,CAAlBjC,kBAAkB;IAClBO,WAAW,GAAA0B,iBAAA,CAAX1B,WAAW;IACXC,cAAc,GAAAyB,iBAAA,CAAdzB,cAAc;IACdC,cAAc,GAAAwB,iBAAA,CAAdxB,cAAc;IACdC,iBAAiB,GAAAuB,iBAAA,CAAjBvB,iBAAiB;IACjBkB,mBAAmB,GAAAK,iBAAA,CAAnBL,mBAAmB;IACnBX,gBAAgB,GAAAgB,iBAAA,CAAhBhB,gBAAgB;IAChBC,mBAAmB,GAAAe,iBAAA,CAAnBf,mBAAmB;IACnBf,OAAO,GAAA8B,iBAAA,CAAP9B,OAAO;IACPgC,aAAa,GAAAF,iBAAA,CAAbE,aAAa;IACbhB,uBAAuB,GAAAc,iBAAA,CAAvBd,uBAAuB;IACvBC,0BAA0B,GAAAa,iBAAA,CAA1Bb,0BAA0B;IAC1BC,YAAY,GAAAY,iBAAA,CAAZZ,YAAY;IACZnB,yBAAyB,GAAA+B,iBAAA,CAAzB/B,yBAAyB;IACzBG,cAAc,GAAA4B,iBAAA,CAAd5B,cAAc;IACd+B,iBAAiB,GAAAH,iBAAA,CAAjBG,iBAAiB;AACdC,IAAAA,IAAI,GAAAC,wBAAA,CAAAL,iBAAA,EAAAM,SAAA,CAAA,CAAA;AAUT,EAAA,IAAMC,UAAU,GAAG,SAAbA,UAAUA,CAAIC,OAAiB,EAAW;AAC9C,IAAA,IAAIpB,YAAY,EAAE;MAChBnB,yBAAyB,CAACuC,OAAO,CAAC,CAAA;AACpC,KAAC,MAAM;MACLzC,kBAAkB,CAACyC,OAAO,CAAC,CAAA;AAC7B,KAAA;GACD,CAAA;AAED,EAAA,IAAMC,YAAY,GAAG,SAAfA,YAAYA,CAAIC,KAAa,EAAW;AAC5C;AACA,IAAA,IAAMC,iBAAiB,GAAG7C,eAAe,CAAC8C,OAAO,CAACF,KAAK,CAAC,CAAA;IACxD,IAAIC,iBAAiB,GAAG,CAAC,EAAE;AACzB,MAAA,OAAA;AACF,KAAA;IAEAJ,UAAU,CAAA,EAAA,CAAAM,MAAA,CAAAC,kBAAA,CACLhD,eAAe,CAACiD,KAAK,CAAC,CAAC,EAAEJ,iBAAiB,CAAC,CAAAG,EAAAA,kBAAA,CAC3ChD,eAAe,CAACiD,KAAK,CAACJ,iBAAiB,GAAG,CAAC,CAAC,CAAA,CAChD,CAAC,CAAA;GACH,CAAA;;AAED;AACF;AACA;AACA;AACA;AACA;AACE,EAAA,IAAMK,YAA8B,GAAG,SAAjCA,YAA8BA,CAClCN,KAAK,EAIF;IAAA,IAHHO,UAAU,GAAAC,SAAA,CAAAC,MAAA,GAAAD,CAAAA,IAAAA,SAAA,CAAAE,CAAAA,CAAAA,KAAAA,SAAA,GAAAF,SAAA,CAAG,CAAA,CAAA,GAAA;AACXG,MAAAA,gBAAgB,EAAE,IAAA;KACnB,CAAA;IAED,IAAIC,UAAU,GAAG,KAAK,CAAA;IAEtB,IAAIZ,KAAK,GAAG,CAAC,IAAIA,KAAK,GAAGxC,OAAO,CAACiD,MAAM,GAAG,CAAC,EAAE;AAC3C,MAAA,OAAOG,UAAU,CAAA;AACnB,KAAA;IAEA,IAAIpB,aAAa,KAAK,UAAU,EAAE;AAChC,MAAA,IAAIpC,eAAe,CAACyD,QAAQ,CAACb,KAAK,CAAC,EAAE;QACnCD,YAAY,CAACC,KAAK,CAAC,CAAA;AACnBY,QAAAA,UAAU,GAAG,KAAK,CAAA;AACpB,OAAC,MAAM;QACLf,UAAU,CAAA,EAAA,CAAAM,MAAA,CAAAC,kBAAA,CAAKhD,eAAe,CAAA,EAAA,CAAE4C,KAAK,CAAA,CAAC,CAAC,CAAA;AACvCY,QAAAA,UAAU,GAAG,IAAI,CAAA;AACnB,OAAA;AACF,KAAC,MAAM;AACLf,MAAAA,UAAU,CAAC,CAACG,KAAK,CAAC,CAAC,CAAA;AACnBY,MAAAA,UAAU,GAAG,IAAI,CAAA;AACnB,KAAA;;AAEA;AACAnC,IAAAA,0BAA0B,CAACD,uBAAuB,GAAG,CAAC,CAAC,CAAA;IAEvD,IAAIZ,WAAW,KAAKoC,KAAK,EAAE;MACzBnC,cAAc,CAACmC,KAAK,CAAC,CAAA;AACvB,KAAA;IAEA,IAAIO,UAAU,KAAVA,IAAAA,IAAAA,UAAU,KAAVA,KAAAA,CAAAA,IAAAA,UAAU,CAAEI,gBAAgB,IAAInB,aAAa,KAAK,UAAU,EAAE;AAChErC,MAAAA,KAAK,EAAE,CAAA;AACT,KAAA;AAEA,IAAA,OAAOyD,UAAU,CAAA;GAClB,CAAA;;AAED;AACF;AACA;AACE,EAAA,IAAME,cAAc,GAAG,SAAjBA,cAAcA,GAAe;AACjC,IAAA,IAAI7D,MAAM,EAAE;AACVE,MAAAA,KAAK,EAAE,CAAA;AACT,KAAC,MAAM;MACLD,SAAS,CAAC,IAAI,CAAC,CAAA;AACjB,KAAA;GACD,CAAA;;AAED;AACF;AACA;EACE,IAAM6D,cAAc,GAAG,SAAjBA,cAAcA,CAAIC,UAA6B,EAAEhB,KAAc,EAAW;IAC9EjC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAA;IACrB,IAAMkD,QAAQ,GAAGjB,KAAK,KAAA,IAAA,IAALA,KAAK,KAALA,KAAAA,CAAAA,GAAAA,KAAK,GAAIpC,WAAW,CAAA;AACrC,IAAA,IAAIsD,YAAoB,CAAA;AACxB,IAAA,IAAMC,eAAe,GACnBzB,IAAI,CAACtB,kCAAkC,IACvCqB,iBAAiB,KAAK2B,oBAAoB,CAACC,QAAQ,CAACC,YAAY,CAAA;AAClE,IAAA,IAAIH,eAAe,IAAIzD,cAAc,CAAC+C,MAAM,GAAG,CAAC,EAAE;AAChD;;AAEA,MAAA,IAAMc,eAAe,GAAG7D,cAAc,CACnC8D,GAAG,CAAC,UAACC,aAAa,EAAA;AAAA,QAAA,OAAKjE,OAAO,CAACkE,SAAS,CAAC,UAACC,MAAM,EAAA;AAAA,UAAA,OAAKA,MAAM,CAACC,KAAK,KAAKH,aAAa,CAAA;SAAC,CAAA,CAAA;OAAC,CAAA,CACrFI,IAAI,EAAE,CAAA;AAETX,MAAAA,YAAY,GACVK,eAAe,CACbO,eAAe,CAAC;AACdC,QAAAA,YAAY,EAAER,eAAe,CAACrB,OAAO,CAACe,QAAQ,CAAC;AAC/Ce,QAAAA,QAAQ,EAAET,eAAe,CAACd,MAAM,GAAG,CAAC;AACpCO,QAAAA,UAAU,EAAVA,UAAAA;AACF,OAAC,CAAC,CACH,CAAA;AACL,KAAC,MAAM;MACLE,YAAY,GAAGY,eAAe,CAAC;AAC7BC,QAAAA,YAAY,EAAEd,QAAQ;AACtBe,QAAAA,QAAQ,EAAExE,OAAO,CAACiD,MAAM,GAAG,CAAC;AAC5BO,QAAAA,UAAU,EAAVA,UAAAA;AACF,OAAC,CAAC,CAAA;AACJ,KAAA;IACAnD,cAAc,CAACqD,YAAY,CAAC,CAAA;AAE5B,IAAA,IAAMe,YAAY,GAAGzE,OAAO,CAACgE,GAAG,CAAC,UAACG,MAAM,EAAA;MAAA,OAAKA,MAAM,CAACC,KAAK,CAAA;KAAC,CAAA,CAAA;IAC1DM,qBAAqB,CAACjB,QAAQ,EAAEvB,IAAI,CAACb,iBAAiB,CAACC,OAAO,EAAEmD,YAAY,CAAC,CAAA;GAC9E,CAAA;;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,IAAME,aAAa,GAAG,SAAhBA,aAAaA,CACjBC,CAA8E,EAC9EpC,KAAa,EACJ;IACT,IAAMgB,UAAU,GAAGqB,gBAAgB,CAACD,CAAC,EAAEnF,MAAM,EAAEwC,iBAAiB,CAAC,CAAA;AACjE,IAAA,IAAI,OAAOuB,UAAU,KAAK,QAAQ,EAAE;AAClCD,MAAAA,cAAc,CAACC,UAAU,EAAEhB,KAAK,CAAC,CAAA;AACnC,KAAA;IACAM,YAAY,CAACN,KAAK,CAAC,CAAA;AACnB,IAAA,IAAI,CAACsC,aAAa,EAAE,EAAE;AAAA,MAAA,IAAAC,qBAAA,CAAA;AACpB,MAAA,CAAAA,qBAAA,GAAA7C,IAAI,CAACX,YAAY,CAACD,OAAO,MAAAyD,IAAAA,IAAAA,qBAAA,KAAzBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,qBAAA,CAA2BC,KAAK,EAAE,CAAA;AACpC,KAAA;GACD,CAAA;;AAED;AACF;AACA;AACA;AACA;AACA;AACA;EACE,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAIC,MAAc,EAAE1B,UAA6B,EAAW;AAC3E;IACA9D,SAAS,CAAC,IAAI,CAAC,CAAA;IAEf,IACEwC,IAAI,CAACtB,kCAAkC,IACvCqB,iBAAiB,KAAK2B,oBAAoB,CAACC,QAAQ,CAACC,YAAY,EAChE;AACA,MAAA,OAAA;AACF,KAAA;AAEA,IAAA,IAAI,OAAOnC,aAAa,KAAK,QAAQ,EAAE;AACrCwD,MAAAA,MAAM,CAACC,YAAY,CAACzD,aAAa,CAAC,CAAA;AACpC,KAAA;AAEAA,IAAAA,aAAa,GAAGwD,MAAM,CAACE,UAAU,CAAC,YAAM;AACtCzD,MAAAA,YAAY,GAAG,EAAE,CAAA;KAClB,EAAE,GAAG,CAAC,CAAA;AACP;IACAA,YAAY,GAAGA,YAAY,GAAGsD,MAAM,CAAA;AACpC,IAAA,IAAMI,YAAY,GAAGtF,OAAO,CAACgE,GAAG,CAAC,UAACG,MAAM,EAAA;MAAA,OAAKA,MAAM,CAACoB,KAAK,CAAA;KAAC,CAAA,CAAA;IAC1D,IAAMC,WAAW,GAAGC,gBAAgB,CAACH,YAAY,EAAE1D,YAAY,EAAExB,WAAW,GAAG,CAAC,CAAC,CAAA;;AAEjF;IACA,IAAIoF,WAAW,IAAI,CAAC,EAAE;AACpBjC,MAAAA,cAAc,CAACC,UAAU,EAAEgC,WAAW,CAAC,CAAA;AACzC,KAAA;AACA;SACK;AACHL,MAAAA,MAAM,CAACC,YAAY,CAACzD,aAAa,CAAC,CAAA;AAClCC,MAAAA,YAAY,GAAG,EAAE,CAAA;AACnB,KAAA;GACD,CAAA;;AAED;AACF;AACA;AACE,EAAA,IAAM8D,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAId,CAEzB,EAAW;IACV,IAAI,CAAC9D,gBAAgB,IAAI,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAACuC,QAAQ,CAACuB,CAAC,CAACe,KAAK,CAACC,GAAG,CAAC,EAAE;AAChF;MACA7E,mBAAmB,CAAC,IAAI,CAAC,CAAA;AAC3B,KAAA;IAEA,IAAMyC,UAAU,GAAGqB,gBAAgB,CAACD,CAAC,CAACe,KAAK,EAAElG,MAAM,EAAEwC,iBAAiB,CAAC,CAAA;AAEvE,IAAA,IAAIuB,UAAU,EAAE;AACdqC,MAAAA,aAAa,CAACrC,UAAU,EAAEoB,CAAC,EAAE;AAC3BlF,QAAAA,SAAS,EAATA,SAAS;AACTC,QAAAA,KAAK,EAALA,KAAK;AACL4D,QAAAA,cAAc,EAAdA,cAAc;AACd0B,QAAAA,WAAW,EAAXA,WAAW;QACXa,mBAAmB,EAAE,SAAAA,mBAAAA,GAAM;UAAA,IAAAC,qBAAA,EAAAC,oBAAA,CAAA;UACzB,IAAI5F,WAAW,GAAG,CAAC,EAAE;AACnB,YAAA,OAAA;AACF,WAAA;AAEA,UAAA,IAAMgD,UAAU,GAAGN,YAAY,CAAC1C,WAAW,CAAC,CAAA;UAC5C,IAAI8B,IAAI,CAACxB,eAAe,IAAI,CAACoE,aAAa,EAAE,EAAE;AAAA,YAAA,IAAAmB,sBAAA,CAAA;AAC5C,YAAA,CAAAA,sBAAA,GAAA/D,IAAI,CAACX,YAAY,CAACD,OAAO,MAAA2E,IAAAA,IAAAA,sBAAA,KAAzBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,sBAAA,CAA2BjB,KAAK,EAAE,CAAA;AACpC,WAAA;UAEA,CAAAe,qBAAA,IAAAC,oBAAA,GAAAhG,OAAO,CAACI,WAAW,CAAC,EAAC8F,cAAc,cAAAH,qBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAnCA,qBAAA,CAAAI,IAAA,CAAAH,oBAAA,EAAsC5C,UAAU,CAAC,CAAA;AACnD,SAAA;AACF,OAAC,CAAC,CAAA;AACJ,KAAA;GACD,CAAA;AAED,EAAA,OAAAgD,aAAA,CAAA;AACE3G,IAAAA,MAAM,EAANA,MAAM;AACNC,IAAAA,SAAS,EAATA,SAAS;AACTC,IAAAA,KAAK,EAALA,KAAK;AACLC,IAAAA,eAAe,EAAfA,eAAe;AACfC,IAAAA,kBAAkB,EAAlBA,kBAAkB;AAClBK,IAAAA,cAAc,EAAdA,cAAc;AACdqC,IAAAA,YAAY,EAAZA,YAAY;AACZxC,IAAAA,yBAAyB,EAAzBA,yBAAyB;AACzBuD,IAAAA,cAAc,EAAdA,cAAc;AACdoC,IAAAA,gBAAgB,EAAhBA,gBAAgB;AAChBf,IAAAA,aAAa,EAAbA,aAAa;AACbvE,IAAAA,WAAW,EAAXA,WAAW;AACXC,IAAAA,cAAc,EAAdA,cAAc;AACdC,IAAAA,cAAc,EAAdA,cAAc;AACdC,IAAAA,iBAAiB,EAAjBA,iBAAiB;AACjBkB,IAAAA,mBAAmB,EAAnBA,mBAAmB;AACnBX,IAAAA,gBAAgB,EAAhBA,gBAAgB;AAChBC,IAAAA,mBAAmB,EAAnBA,mBAAmB;AACnBC,IAAAA,uBAAuB,EAAvBA,uBAAuB;AACvBC,IAAAA,0BAA0B,EAA1BA,0BAA0B;AAC1BC,IAAAA,YAAY,EAAZA,YAAY;AACZlB,IAAAA,OAAO,EAAPA,OAAO;AACPoE,IAAAA,KAAK,EAAEiC,cAAc,CAACzG,eAAe,EAAEI,OAAO,CAAC;AAC/CsG,IAAAA,YAAY,EAAEC,qBAAqB,CAAC3G,eAAe,EAAEI,OAAO,CAAC;AAC7DgC,IAAAA,aAAa,EAAbA,aAAa;AACbC,IAAAA,iBAAiB,EAAjBA,iBAAAA;AAAiB,GAAA,EACdC,IAAI,CAAA,CAAA;AAEX;;;;"}
1
+ {"version":3,"file":"useDropdown.js","sources":["../../../../../../src/components/Dropdown/useDropdown.ts"],"sourcesContent":["import React from 'react';\n\nimport {\n ensureScrollVisiblity,\n getActionFromKey,\n getIndexByLetter,\n getUpdatedIndex,\n makeInputDisplayValue,\n makeInputValue,\n performAction,\n} from './dropdownUtils';\nimport type { SelectActionsType } from './dropdownUtils';\nimport type { DropdownProps } from './types';\n\nimport { dropdownComponentIds } from './dropdownComponentIds';\nimport type { FormInputHandleOnKeyDownEvent } from '~components/Form/FormTypes';\nimport { isReactNative } from '~utils';\nimport type { ContainerElementType } from '~utils/types';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst noop = (): void => {};\n\ntype OptionsType = {\n title: string;\n value: string;\n onClickTrigger?: (isSelected: boolean) => void;\n}[];\n\ntype DropdownContextType = {\n isOpen: boolean;\n setIsOpen: (isOpen: boolean) => void;\n close: () => void;\n /**\n * contains the indexes of selected items\n */\n selectedIndices: number[];\n setSelectedIndices: (value: number[]) => void;\n /**\n * contains the indexes of selected items during controlled selection\n */\n controlledValueIndices: number[];\n setControlledValueIndices: (value: number[]) => void;\n /**\n * contains information about all the options inside actionlist\n */\n options: OptionsType;\n setOptions: (value: OptionsType) => void;\n\n /**\n * Filtered values for AutoComplete Inputs\n */\n filteredValues: string[];\n setFilteredValues: (values: string[]) => void;\n\n /** Currently active (focussed) index */\n activeIndex: number;\n setActiveIndex: (value: number) => void;\n\n /** Currently active (focussed) tag */\n activeTagIndex: number;\n setActiveTagIndex: (value: number) => void;\n\n /**\n * Sometimes we want to ignore the blur event to keep dropdown open but not ignore the blur animation from selectinput\n * E.g. When someone clicks on Footer, we just want to ignore the blur event and not the blur animation\n */\n shouldIgnoreBlurAnimation: boolean;\n setShouldIgnoreBlurAnimation: (value: boolean) => void;\n /** Tells you if keyboard was used. Its false by default and turns into true when keydown is called */\n isKeydownPressed: boolean;\n setIsKeydownPressed: (value: boolean) => void;\n /** common baseId which is prepended to multiple other ids inside this dropdown */\n dropdownBaseId: string;\n /** Which element has triggered the dropdown */\n dropdownTriggerer?: 'SelectInput' | 'DropdownButton' | 'AutoComplete' | 'DropdownLink';\n /** ref of triggerer. Used to call focus in certain places */\n triggererRef: React.MutableRefObject<HTMLButtonElement | null>;\n triggererWrapperRef: React.MutableRefObject<ContainerElementType | null>;\n actionListItemRef: React.RefObject<HTMLDivElement | null>;\n isTagDismissedRef: React.RefObject<{ value: boolean } | null>;\n visibleTagsCountRef: React.RefObject<{ value: number } | null>;\n\n selectionType?: DropdownProps['selectionType'];\n /** whether footer has an action item.\n * certain a11y behaviour changes happen here\n * E.g. tabbing moves focus to that action instead of outside\n */\n hasFooterAction: boolean;\n setHasFooterAction: (value: boolean) => void;\n\n /**\n * Apart from dropdownTriggerer prop, we also set this boolean because in BottomSheet, the initial trigger can be Select but also have autocomplete inside of it\n */\n hasAutoCompleteInBottomSheetHeader: boolean;\n setHasAutoCompleteInBottomSheetHeader: (value: boolean) => void;\n\n /**\n * A value that can be used in dependency array to know when Dropdown value is changed.\n *\n * E.g.\n * ```ts\n * useEffect(() => {\n * console.log('Uncontrolled value change');\n * }, [changeCallbackTriggerer])\n * ```\n */\n changeCallbackTriggerer: number;\n setChangeCallbackTriggerer: (changeCallbackTriggerer: number) => void;\n\n /**\n * true when SelectInput has `value` prop (when it is controlled)\n */\n isControlled: boolean;\n setIsControlled: (isControlled: boolean) => void;\n};\n\nconst DropdownContext = React.createContext<DropdownContextType>({\n isOpen: false,\n setIsOpen: noop,\n close: noop,\n selectedIndices: [],\n setSelectedIndices: noop,\n controlledValueIndices: [],\n setControlledValueIndices: noop,\n options: [],\n setOptions: noop,\n filteredValues: [],\n setFilteredValues: noop,\n activeIndex: -1,\n setActiveIndex: noop,\n activeTagIndex: -1,\n setActiveTagIndex: noop,\n shouldIgnoreBlurAnimation: false,\n setShouldIgnoreBlurAnimation: noop,\n hasFooterAction: false,\n setHasFooterAction: noop,\n hasAutoCompleteInBottomSheetHeader: false,\n setHasAutoCompleteInBottomSheetHeader: noop,\n isKeydownPressed: false,\n setIsKeydownPressed: noop,\n changeCallbackTriggerer: 0,\n setChangeCallbackTriggerer: noop,\n isControlled: false,\n setIsControlled: noop,\n dropdownBaseId: '',\n actionListItemRef: {\n current: null,\n },\n triggererRef: {\n current: null,\n },\n isTagDismissedRef: {\n current: null,\n },\n visibleTagsCountRef: {\n current: null,\n },\n triggererWrapperRef: {\n current: null,\n },\n});\n\nlet searchTimeout: number;\nlet searchString = '';\n\ntype UseDropdownReturnValue = DropdownContextType & {\n /**\n * Click event on combobox. Toggles the dropdown\n */\n onTriggerClick: () => void;\n\n /**\n * Keydown event of combobox. Handles most of the keyboard accessibility of dropdown\n */\n onTriggerKeydown: FormInputHandleOnKeyDownEvent | undefined;\n\n /**\n * Handles the click even on option.\n *\n * Contains the logic that selects the option, moves the focus, etc\n */\n onOptionClick: (\n e: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLInputElement>,\n index: number,\n ) => void;\n\n /**\n * Removes the option with given optionsIndex\n */\n removeOption: (index: number) => void;\n\n /**\n * value that is used during form submissions\n */\n value: string;\n /**\n * This is the value that is displayed inside select after selection\n */\n displayValue: string;\n};\n\n/**\n * Handles almost all the functionality of dropdown.\n *\n * Returns the values from DropdownContext along with some helper functions and event handlers\n *\n */\nconst useDropdown = (): UseDropdownReturnValue => {\n const {\n isOpen,\n setIsOpen,\n close,\n selectedIndices,\n setSelectedIndices,\n activeIndex,\n setActiveIndex,\n activeTagIndex,\n setActiveTagIndex,\n visibleTagsCountRef,\n isKeydownPressed,\n setIsKeydownPressed,\n options,\n selectionType,\n changeCallbackTriggerer,\n setChangeCallbackTriggerer,\n isControlled,\n setControlledValueIndices,\n filteredValues,\n dropdownTriggerer,\n ...rest\n } = React.useContext(DropdownContext);\n\n type SelectOptionType = (\n index: number,\n properties?: {\n closeOnSelection?: boolean;\n },\n ) => boolean;\n\n const setIndices = (indices: number[]): void => {\n if (isControlled) {\n setControlledValueIndices(indices);\n } else {\n setSelectedIndices(indices);\n }\n };\n\n const removeOption = (index: number): void => {\n // remove existing item\n const existingItemIndex = selectedIndices.indexOf(index);\n if (existingItemIndex < 0) {\n return;\n }\n\n setIndices([\n ...selectedIndices.slice(0, existingItemIndex),\n ...selectedIndices.slice(existingItemIndex + 1),\n ]);\n };\n\n /**\n * Marks the given index as selected.\n *\n * In single select, it also closes the menu.\n * In multiselect, it keeps the menu open for more selections\n */\n const selectOption: SelectOptionType = (\n index,\n properties = {\n closeOnSelection: true,\n },\n ) => {\n let isSelected = false;\n\n if (index < 0 || index > options.length - 1) {\n return isSelected;\n }\n\n if (selectionType === 'multiple') {\n if (selectedIndices.includes(index)) {\n removeOption(index);\n isSelected = false;\n } else {\n setIndices([...selectedIndices, index]);\n isSelected = true;\n }\n } else {\n setIndices([index]);\n isSelected = true;\n }\n\n // Triggers `onChange` on SelectInput\n setChangeCallbackTriggerer(changeCallbackTriggerer + 1);\n\n if (activeIndex !== index) {\n setActiveIndex(index);\n }\n\n if (properties?.closeOnSelection && selectionType !== 'multiple') {\n close();\n }\n\n return isSelected;\n };\n\n /**\n * Click listener for combobox (or any triggerer of the dropdown)\n */\n const onTriggerClick = (): void => {\n if (isOpen) {\n close();\n } else {\n setIsOpen(true);\n }\n };\n\n /**\n * Function that we call when we want to move focus from one option to other\n */\n const onOptionChange = (actionType: SelectActionsType, index?: number): void => {\n setActiveTagIndex(-1);\n const newIndex = index ?? activeIndex;\n let updatedIndex: number;\n const hasAutoComplete =\n rest.hasAutoCompleteInBottomSheetHeader ||\n dropdownTriggerer === dropdownComponentIds.triggers.AutoComplete;\n if (hasAutoComplete && filteredValues.length > 0) {\n // When its autocomplete, we don't loop over all options. We only loop on filtered options\n\n const filteredIndexes = filteredValues\n .map((filteredValue) => options.findIndex((option) => option.value === filteredValue))\n .sort();\n\n updatedIndex =\n filteredIndexes[\n getUpdatedIndex({\n currentIndex: filteredIndexes.indexOf(newIndex),\n maxIndex: filteredIndexes.length - 1,\n actionType,\n })\n ];\n } else {\n updatedIndex = getUpdatedIndex({\n currentIndex: newIndex,\n maxIndex: options.length - 1,\n actionType,\n });\n }\n setActiveIndex(updatedIndex);\n\n const optionValues = options.map((option) => option.value);\n ensureScrollVisiblity(updatedIndex, rest.actionListItemRef.current, optionValues);\n };\n\n /**\n * Click handler when user clicks on any particular option.\n *\n * It\n * - changes the option focus\n * - selects that option\n * - moves focus to combobox\n */\n const onOptionClick = (\n e: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLInputElement>,\n index: number,\n ): void => {\n const actionType = getActionFromKey(e, isOpen, dropdownTriggerer);\n if (typeof actionType === 'number') {\n onOptionChange(actionType, index);\n }\n selectOption(index);\n if (!isReactNative()) {\n rest.triggererRef.current?.focus();\n }\n };\n\n /**\n * Function we call to handle the typeahead.\n *\n * It takes a letter, stores that letter in searchString (and clears it after timeout) to maintain a word\n *\n * Then searches for that word in options and moves focus there.\n */\n const onComboType = (letter: string, actionType: SelectActionsType): void => {\n // open the listbox if it is closed\n setIsOpen(true);\n\n if (\n rest.hasAutoCompleteInBottomSheetHeader ||\n dropdownTriggerer === dropdownComponentIds.triggers.AutoComplete\n ) {\n return;\n }\n\n if (typeof searchTimeout === 'number') {\n window.clearTimeout(searchTimeout);\n }\n\n searchTimeout = window.setTimeout(() => {\n searchString = '';\n }, 500);\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n searchString = searchString + letter;\n const optionTitles = options.map((option) => option.title);\n const searchIndex = getIndexByLetter(optionTitles, searchString, activeIndex + 1);\n\n // if a match was found, go to it\n if (searchIndex >= 0) {\n onOptionChange(actionType, searchIndex);\n }\n // if no matches, clear the timeout and search string\n else {\n window.clearTimeout(searchTimeout);\n searchString = '';\n }\n };\n\n /**\n * Keydown event of combobox. Handles most of the keyboard accessibility of dropdown\n */\n const onTriggerKeydown = (e: {\n event: React.KeyboardEvent<HTMLInputElement | HTMLButtonElement>;\n }): void => {\n if (!isKeydownPressed && ![' ', 'Enter', 'Escape', 'Meta'].includes(e.event.key)) {\n // When keydown is not already pressed and its not Enter, Space, Command, or Escape key (those are generic keys and we only want to handle arrow keys or home buttons etc)\n setIsKeydownPressed(true);\n }\n\n const actionType = getActionFromKey(e.event, isOpen, dropdownTriggerer);\n\n if (actionType) {\n performAction(actionType, e, {\n setIsOpen,\n close,\n onOptionChange,\n onComboType,\n selectCurrentOption: () => {\n if (activeIndex < 0) {\n return;\n }\n\n const isSelected = selectOption(activeIndex);\n if (rest.hasFooterAction && !isReactNative()) {\n rest.triggererRef.current?.focus();\n }\n\n options[activeIndex].onClickTrigger?.(isSelected);\n },\n });\n }\n };\n\n return {\n isOpen,\n setIsOpen,\n close,\n selectedIndices,\n setSelectedIndices,\n filteredValues,\n removeOption,\n setControlledValueIndices,\n onTriggerClick,\n onTriggerKeydown,\n onOptionClick,\n activeIndex,\n setActiveIndex,\n activeTagIndex,\n setActiveTagIndex,\n visibleTagsCountRef,\n isKeydownPressed,\n setIsKeydownPressed,\n changeCallbackTriggerer,\n setChangeCallbackTriggerer,\n isControlled,\n options,\n value: makeInputValue(selectedIndices, options),\n displayValue: makeInputDisplayValue(selectedIndices, options),\n selectionType,\n dropdownTriggerer,\n ...rest,\n };\n};\n\nexport type { DropdownContextType, OptionsType };\nexport { useDropdown, DropdownContext };\n"],"names":["noop","DropdownContext","React","createContext","isOpen","setIsOpen","close","selectedIndices","setSelectedIndices","controlledValueIndices","setControlledValueIndices","options","setOptions","filteredValues","setFilteredValues","activeIndex","setActiveIndex","activeTagIndex","setActiveTagIndex","shouldIgnoreBlurAnimation","setShouldIgnoreBlurAnimation","hasFooterAction","setHasFooterAction","hasAutoCompleteInBottomSheetHeader","setHasAutoCompleteInBottomSheetHeader","isKeydownPressed","setIsKeydownPressed","changeCallbackTriggerer","setChangeCallbackTriggerer","isControlled","setIsControlled","dropdownBaseId","actionListItemRef","current","triggererRef","isTagDismissedRef","visibleTagsCountRef","triggererWrapperRef","searchTimeout","searchString","useDropdown","_React$useContext","useContext","selectionType","dropdownTriggerer","rest","_objectWithoutProperties","_excluded","setIndices","indices","removeOption","index","existingItemIndex","indexOf","concat","_toConsumableArray","slice","selectOption","properties","arguments","length","undefined","closeOnSelection","isSelected","includes","onTriggerClick","onOptionChange","actionType","newIndex","updatedIndex","hasAutoComplete","dropdownComponentIds","triggers","AutoComplete","filteredIndexes","map","filteredValue","findIndex","option","value","sort","getUpdatedIndex","currentIndex","maxIndex","optionValues","ensureScrollVisiblity","onOptionClick","e","getActionFromKey","isReactNative","_rest$triggererRef$cu","focus","onComboType","letter","window","clearTimeout","setTimeout","optionTitles","title","searchIndex","getIndexByLetter","onTriggerKeydown","event","key","performAction","selectCurrentOption","_options$activeIndex$","_options$activeIndex","_rest$triggererRef$cu2","onClickTrigger","call","_objectSpread","makeInputValue","displayValue","makeInputDisplayValue"],"mappings":"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"}
@@ -77,7 +77,6 @@ var _FileUpload = function _FileUpload(_ref, ref) {
77
77
  _useState4 = _slicedToArray(_useState3, 2),
78
78
  errorMessage = _useState4[0],
79
79
  setErrorMessage = _useState4[1];
80
- console.log('🚀 ~ errorMessage:', errorMessage);
81
80
  var _useState5 = useState('none'),
82
81
  _useState6 = _slicedToArray(_useState5, 2),
83
82
  internalValidationState = _useState6[0],
@@ -1 +1 @@
1
- {"version":3,"file":"FileUpload.web.js","sources":["../../../../../../src/components/FileUpload/FileUpload.web.tsx"],"sourcesContent":["import { useState, useCallback, useMemo, forwardRef } from 'react';\nimport type { FileUploadProps, BladeFile, BladeFileList } from './types';\nimport { StyledFileUploadWrapper } from './StyledFileUploadWrapper';\nimport {\n fileUploadColorTokens,\n fileUploadLinkBorderTokens,\n getFileUploadInputHoverTokens,\n} from './fileUploadTokens';\nimport { FileUploadItem } from './FileUploadItem';\nimport { isFileAccepted } from './isFileAccepted';\nimport BaseBox from '~components/Box/BaseBox';\nimport { Box } from '~components/Box';\nimport { SelectorLabel } from '~components/Form/Selector/SelectorLabel';\nimport { SelectorInput } from '~components/Form/Selector/SelectorInput';\nimport { screenReaderStyles } from '~components/VisuallyHidden';\nimport { FormHint, FormLabel } from '~components/Form';\nimport { useFormId } from '~components/Form/useFormId';\nimport { assignWithoutSideEffects } from '~utils/assignWithoutSideEffects';\nimport { metaAttribute, MetaConstants } from '~utils/metaAttribute';\nimport { getStyledProps } from '~components/Box/styledProps';\nimport { makeSize, useTheme } from '~utils';\nimport { Text } from '~components/Typography';\nimport type { BladeElementRef } from '~utils/types';\nimport { getHintType } from '~components/Input/BaseInput/BaseInput';\nimport { makeAccessible } from '~utils/makeAccessible';\n\nconst _FileUpload: React.ForwardRefRenderFunction<BladeElementRef, FileUploadProps> = (\n {\n name,\n accept,\n uploadType = 'single',\n onChange,\n onPreview,\n onRemove,\n onDismiss,\n onDrop,\n isDisabled,\n isRequired,\n necessityIndicator,\n fileList,\n testID,\n label,\n labelPosition = 'top',\n accessibilityLabel,\n validationState,\n helpText,\n errorText,\n maxCount,\n maxSize,\n ...styledProps\n },\n ref,\n): React.ReactElement => {\n const { platform } = useTheme();\n const [selectedFiles, setSelectedFiles] = useState<BladeFileList>(fileList ?? []);\n const [errorMessage, setErrorMessage] = useState(errorText);\n console.log('🚀 ~ errorMessage:', errorMessage);\n const [internalValidationState, setInternalValidationState] = useState('none');\n const [isActive, setIsActive] = useState(false);\n\n const isMultiple = uploadType === 'multiple';\n const isOneFileSelectedWithSingleUpload = !isMultiple && selectedFiles.length === 1;\n const inputLabelPosition = platform === 'onMobile' ? 'top' : labelPosition;\n const isLabelLeftPositioned = inputLabelPosition === 'left';\n const willRenderHintText = Boolean(helpText) || Boolean(errorMessage);\n\n const showError = validationState === 'error' || internalValidationState === 'error';\n const showHelpText = !showError && helpText;\n const accessibilityText =\n accessibilityLabel ?? `,${showError ? errorText : ''} ${showHelpText ? helpText : ''}`;\n const { inputId, labelId, helpTextId, errorTextId } = useFormId('fileuploadinput');\n\n const accessibilityProps = makeAccessible({\n required: Boolean(isRequired),\n invalid: Boolean(showError),\n disabled: Boolean(isDisabled),\n describedBy: labelId,\n });\n\n // In control mode attach a unique id to each file if not provided\n useMemo(() => {\n for (const file of selectedFiles) {\n if (!file.id) {\n file.id = `${new Date().getTime().toString()}${Math.floor(Math.random() * 1000000)}`;\n }\n }\n }, [selectedFiles]);\n\n const handleFilesChange = useCallback((inputFiles: BladeFileList) => {\n setSelectedFiles((prevFiles) => {\n if (prevFiles.length > 0) {\n const allFiles = [...prevFiles, ...inputFiles];\n return allFiles;\n }\n\n return inputFiles;\n });\n }, []);\n\n const validateFiles = (inputFiles: BladeFileList, allFiles: BladeFileList): boolean => {\n if (accept && inputFiles.some((file) => !isFileAccepted(file, accept))) {\n setErrorMessage(`You provided an unsupported file type. Supported file types are: ${accept}`);\n setInternalValidationState('error');\n return true;\n }\n\n if (uploadType === 'single' && inputFiles.length > 1) {\n setErrorMessage('You can upload only one file.');\n setInternalValidationState('error');\n return true;\n }\n\n if (maxCount && allFiles.length > maxCount) {\n setErrorMessage(`You can't upload more than ${maxCount} files.`);\n setInternalValidationState('error');\n return true;\n }\n\n if (maxSize && inputFiles.some((file) => file.size > maxSize)) {\n setErrorMessage('File size exceeded.');\n setInternalValidationState('error');\n return true;\n }\n\n setInternalValidationState('none');\n setErrorMessage('');\n return false;\n };\n\n const handleDragOver = (event: React.DragEvent): void => {\n event.preventDefault();\n setIsActive(true);\n };\n\n const handleDragLeave = (event: React.DragEvent): void => {\n event.preventDefault();\n setIsActive(false);\n };\n\n const handleDrop = (event: React.DragEvent): void => {\n event.preventDefault();\n setIsActive(false);\n\n const droppedFiles = Array.from(event.dataTransfer.files);\n const allFiles = selectedFiles.length > 0 ? [...selectedFiles, ...droppedFiles] : droppedFiles;\n\n const hasValidationErrors = validateFiles(droppedFiles, allFiles);\n\n if (!hasValidationErrors) {\n handleFilesChange(droppedFiles);\n onDrop?.({ name, fileList: allFiles });\n }\n };\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\n const inputFiles = Array.from(event.target.files ?? []);\n const allFiles = selectedFiles.length > 0 ? [...selectedFiles, ...inputFiles] : inputFiles;\n\n const hasValidationErrors = validateFiles(inputFiles, allFiles);\n\n if (!hasValidationErrors) {\n handleFilesChange(inputFiles);\n onChange?.({ name, fileList: allFiles });\n }\n };\n\n return (\n <BaseBox\n display=\"flex\"\n flexDirection=\"column\"\n width=\"100%\"\n {...metaAttribute({ name: MetaConstants.FileUpload, testID })}\n {...getStyledProps(styledProps)}\n >\n <BaseBox\n display=\"flex\"\n flexDirection={isLabelLeftPositioned ? 'row' : 'column'}\n alignItems={isLabelLeftPositioned ? 'center' : undefined}\n position=\"relative\"\n width=\"100%\"\n >\n {label ? (\n <FormLabel\n as=\"span\"\n necessityIndicator={necessityIndicator}\n position={labelPosition}\n id={labelId}\n accessibilityText={accessibilityText}\n >\n {label}\n </FormLabel>\n ) : null}\n\n <SelectorLabel\n componentName={MetaConstants.FileUploadLabel}\n inputProps={{}}\n style={{\n cursor: isDisabled ? 'not-allowed' : 'pointer',\n }}\n >\n <BaseBox\n display=\"flex\"\n flexDirection=\"column\"\n width=\"100%\"\n marginBottom={willRenderHintText ? 'spacing.0' : 'spacing.5'}\n >\n <StyledFileUploadWrapper\n isDisabled={isDisabled}\n isActive={isActive}\n display=\"flex\"\n flexDirection=\"row\"\n justifyContent=\"center\"\n alignItems=\"center\"\n borderRadius=\"medium\"\n borderWidth=\"thin\"\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n onClick={() => setIsActive(true)}\n data-comp=\"f\"\n style={{\n ...(isOneFileSelectedWithSingleUpload ? screenReaderStyles : {}),\n }}\n >\n <Box\n display=\"flex\"\n justifyContent=\"center\"\n alignItems=\"center\"\n flexDirection={{ base: 'column', s: 'row' }}\n gap={makeSize(6)}\n padding=\"spacing.3\"\n >\n <Text\n color={\n isDisabled\n ? fileUploadColorTokens.text.disabled\n : fileUploadColorTokens.text.default\n }\n >\n Drag files here or{' '}\n </Text>\n <SelectorInput\n id={inputId}\n hoverTokens={getFileUploadInputHoverTokens()}\n isChecked={false}\n isDisabled={isDisabled}\n inputProps={{\n name,\n type: 'file',\n onChange: handleInputChange,\n multiple: isMultiple,\n required: isRequired,\n disabled: isDisabled,\n accept,\n onBlur: () => setIsActive(false),\n ...accessibilityProps,\n }}\n ref={ref}\n />\n\n <Box\n display=\"flex\"\n justifyContent=\"center\"\n alignItems=\"center\"\n flexDirection={{ base: 'column', s: 'row' }}\n borderRadius=\"small\"\n >\n <Box\n display=\"flex\"\n flexDirection=\"row\"\n alignItems=\"center\"\n borderBottomColor={\n fileUploadLinkBorderTokens.color[isDisabled ? 'disabled' : 'default']\n }\n borderBottomWidth={fileUploadLinkBorderTokens.width.default}\n >\n <Text\n color={\n isDisabled\n ? fileUploadColorTokens.link.disabled\n : fileUploadColorTokens.link.default\n }\n >\n Upload\n </Text>\n </Box>\n </Box>\n </Box>\n </StyledFileUploadWrapper>\n </BaseBox>\n </SelectorLabel>\n {isOneFileSelectedWithSingleUpload && (\n <FileUploadItem\n file={selectedFiles[0]}\n onRemove={() => {\n const newFiles = selectedFiles.filter(({ id }) => id !== selectedFiles[0].id);\n setSelectedFiles(newFiles);\n onRemove?.({ file: selectedFiles[0] });\n }}\n onDismiss={() => {\n const newFiles = selectedFiles.filter(({ id }) => id !== selectedFiles[0].id);\n setSelectedFiles(newFiles);\n onDismiss?.({ file: selectedFiles[0] });\n }}\n onPreview={onPreview}\n />\n )}\n </BaseBox>\n {/* the magic number 136 is basically max-width of label i.e 120 and then right margin i.e 16 which is the spacing between label and input field */}\n {willRenderHintText && (\n <BaseBox\n marginLeft={makeSize(label && isLabelLeftPositioned ? 136 : 0)}\n marginBottom=\"spacing.5\"\n >\n <BaseBox display=\"flex\" flexDirection=\"row\" justifyContent=\"'space-between\">\n <FormHint\n type={getHintType({\n validationState: showError ? 'error' : validationState,\n hasHelpText: Boolean(helpText),\n })}\n helpText={helpText}\n errorText={errorMessage}\n helpTextId={helpTextId}\n errorTextId={errorTextId}\n />\n </BaseBox>\n </BaseBox>\n )}\n {!isOneFileSelectedWithSingleUpload &&\n selectedFiles.map((file) => (\n <BaseBox\n key={file.id}\n marginLeft={makeSize(label && isLabelLeftPositioned ? 136 : 0)}\n marginBottom=\"spacing.3\"\n >\n <FileUploadItem\n file={file}\n onRemove={() => {\n const newFiles = selectedFiles.filter(({ id }) => id !== file.id);\n setSelectedFiles(newFiles);\n onRemove?.({ file });\n }}\n onDismiss={() => {\n const newFiles = selectedFiles.filter(({ id }) => id !== file.id);\n setSelectedFiles(newFiles);\n onDismiss?.({ file });\n }}\n onPreview={onPreview}\n />\n </BaseBox>\n ))}\n </BaseBox>\n );\n};\n\n/**\n * ### FileUpload Component\n * \n * The FileUpload component is used to handle file attachments, including the drag-and-drop interaction.\n * Primarily, it is used to upload files to a server or to display a list of uploaded files.\n * \n * ---\n * \n * #### Usage\n * \n * ```jsx\n const GSTForm = () => {\n const [selectedFile, setSelectedFile] = useState<BladeFile>();\n const [isLoading, setIsLoading] = useState(false);\n \n return (\n <Box>\n <Heading marginBottom=\"spacing.4\">Add GST Details</Heading>\n <form encType=\"multipart/form-data\" onSubmit={handleSubmit}>\n <FileUpload\n uploadType=\"single\"\n label=\"Upload GST\"\n helpText=\"Upload .jpg, .jpeg, or .png file only\"\n accept=\".jpg, .jpeg, .png\"\n onChange={({ fileList }) => {\n setSelectedFile(fileList[0]);\n }}\n onDrop={({ fileList }) => {\n setSelectedFile(fileList[0]);\n }}\n isRequired\n necessityIndicator=\"required\"\n />\n <Button type=\"submit\" variant=\"primary\">\n Submit\n </Button>\n {isLoading && (\n <ProgressBar isIndeterminate label=\"Uploading your GST Certificate...\" />\n )}\n </form>\n </Box>\n );\n }\n * ```\n *\n * ---\n *\n * Checkout {@link https://blade.razorpay.com/?path=/docs/components-fileupload FileUpload Documentation}\n * \n */\nconst FileUpload = assignWithoutSideEffects(forwardRef(_FileUpload), {\n displayName: 'FileUpload',\n componentId: 'FileUpload',\n});\n\nexport { FileUpload };\nexport type { BladeFile, BladeFileList, FileUploadProps };\n"],"names":["_FileUpload","_ref","ref","name","accept","_ref$uploadType","uploadType","onChange","onPreview","onRemove","onDismiss","onDrop","isDisabled","isRequired","necessityIndicator","fileList","testID","label","_ref$labelPosition","labelPosition","accessibilityLabel","validationState","helpText","errorText","maxCount","maxSize","styledProps","_objectWithoutProperties","_excluded","_useTheme","useTheme","platform","_useState","useState","_useState2","_slicedToArray","selectedFiles","setSelectedFiles","_useState3","_useState4","errorMessage","setErrorMessage","console","log","_useState5","_useState6","internalValidationState","setInternalValidationState","_useState7","_useState8","isActive","setIsActive","isMultiple","isOneFileSelectedWithSingleUpload","length","inputLabelPosition","isLabelLeftPositioned","willRenderHintText","Boolean","showError","showHelpText","accessibilityText","concat","_useFormId","useFormId","inputId","labelId","helpTextId","errorTextId","accessibilityProps","makeAccessible","required","invalid","disabled","describedBy","useMemo","_iterator","_createForOfIteratorHelper","_step","s","n","done","file","value","id","Date","getTime","toString","Math","floor","random","err","e","f","handleFilesChange","useCallback","inputFiles","prevFiles","allFiles","_toConsumableArray","validateFiles","some","isFileAccepted","size","handleDragOver","event","preventDefault","handleDragLeave","handleDrop","droppedFiles","Array","from","dataTransfer","files","hasValidationErrors","handleInputChange","_event$target$files","target","_jsxs","BaseBox","_objectSpread","display","flexDirection","width","metaAttribute","MetaConstants","FileUpload","getStyledProps","children","alignItems","undefined","position","_jsx","FormLabel","as","SelectorLabel","componentName","FileUploadLabel","inputProps","style","cursor","marginBottom","StyledFileUploadWrapper","justifyContent","borderRadius","borderWidth","onDragOver","onDragLeave","onClick","screenReaderStyles","Box","base","gap","makeSize","padding","Text","color","fileUploadColorTokens","text","SelectorInput","hoverTokens","getFileUploadInputHoverTokens","isChecked","type","multiple","onBlur","borderBottomColor","fileUploadLinkBorderTokens","borderBottomWidth","link","FileUploadItem","newFiles","filter","_ref2","_ref3","marginLeft","FormHint","getHintType","hasHelpText","map","_ref4","_ref5","assignWithoutSideEffects","forwardRef","displayName","componentId"],"mappings":"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"}
1
+ {"version":3,"file":"FileUpload.web.js","sources":["../../../../../../src/components/FileUpload/FileUpload.web.tsx"],"sourcesContent":["import { useState, useCallback, useMemo, forwardRef } from 'react';\nimport type { FileUploadProps, BladeFile, BladeFileList } from './types';\nimport { StyledFileUploadWrapper } from './StyledFileUploadWrapper';\nimport {\n fileUploadColorTokens,\n fileUploadLinkBorderTokens,\n getFileUploadInputHoverTokens,\n} from './fileUploadTokens';\nimport { FileUploadItem } from './FileUploadItem';\nimport { isFileAccepted } from './isFileAccepted';\nimport BaseBox from '~components/Box/BaseBox';\nimport { Box } from '~components/Box';\nimport { SelectorLabel } from '~components/Form/Selector/SelectorLabel';\nimport { SelectorInput } from '~components/Form/Selector/SelectorInput';\nimport { screenReaderStyles } from '~components/VisuallyHidden';\nimport { FormHint, FormLabel } from '~components/Form';\nimport { useFormId } from '~components/Form/useFormId';\nimport { assignWithoutSideEffects } from '~utils/assignWithoutSideEffects';\nimport { metaAttribute, MetaConstants } from '~utils/metaAttribute';\nimport { getStyledProps } from '~components/Box/styledProps';\nimport { makeSize, useTheme } from '~utils';\nimport { Text } from '~components/Typography';\nimport type { BladeElementRef } from '~utils/types';\nimport { getHintType } from '~components/Input/BaseInput/BaseInput';\nimport { makeAccessible } from '~utils/makeAccessible';\n\nconst _FileUpload: React.ForwardRefRenderFunction<BladeElementRef, FileUploadProps> = (\n {\n name,\n accept,\n uploadType = 'single',\n onChange,\n onPreview,\n onRemove,\n onDismiss,\n onDrop,\n isDisabled,\n isRequired,\n necessityIndicator,\n fileList,\n testID,\n label,\n labelPosition = 'top',\n accessibilityLabel,\n validationState,\n helpText,\n errorText,\n maxCount,\n maxSize,\n ...styledProps\n },\n ref,\n): React.ReactElement => {\n const { platform } = useTheme();\n const [selectedFiles, setSelectedFiles] = useState<BladeFileList>(fileList ?? []);\n const [errorMessage, setErrorMessage] = useState(errorText);\n const [internalValidationState, setInternalValidationState] = useState('none');\n const [isActive, setIsActive] = useState(false);\n\n const isMultiple = uploadType === 'multiple';\n const isOneFileSelectedWithSingleUpload = !isMultiple && selectedFiles.length === 1;\n const inputLabelPosition = platform === 'onMobile' ? 'top' : labelPosition;\n const isLabelLeftPositioned = inputLabelPosition === 'left';\n const willRenderHintText = Boolean(helpText) || Boolean(errorMessage);\n\n const showError = validationState === 'error' || internalValidationState === 'error';\n const showHelpText = !showError && helpText;\n const accessibilityText =\n accessibilityLabel ?? `,${showError ? errorText : ''} ${showHelpText ? helpText : ''}`;\n const { inputId, labelId, helpTextId, errorTextId } = useFormId('fileuploadinput');\n\n const accessibilityProps = makeAccessible({\n required: Boolean(isRequired),\n invalid: Boolean(showError),\n disabled: Boolean(isDisabled),\n describedBy: labelId,\n });\n\n // In control mode attach a unique id to each file if not provided\n useMemo(() => {\n for (const file of selectedFiles) {\n if (!file.id) {\n file.id = `${new Date().getTime().toString()}${Math.floor(Math.random() * 1000000)}`;\n }\n }\n }, [selectedFiles]);\n\n const handleFilesChange = useCallback((inputFiles: BladeFileList) => {\n setSelectedFiles((prevFiles) => {\n if (prevFiles.length > 0) {\n const allFiles = [...prevFiles, ...inputFiles];\n return allFiles;\n }\n\n return inputFiles;\n });\n }, []);\n\n const validateFiles = (inputFiles: BladeFileList, allFiles: BladeFileList): boolean => {\n if (accept && inputFiles.some((file) => !isFileAccepted(file, accept))) {\n setErrorMessage(`You provided an unsupported file type. Supported file types are: ${accept}`);\n setInternalValidationState('error');\n return true;\n }\n\n if (uploadType === 'single' && inputFiles.length > 1) {\n setErrorMessage('You can upload only one file.');\n setInternalValidationState('error');\n return true;\n }\n\n if (maxCount && allFiles.length > maxCount) {\n setErrorMessage(`You can't upload more than ${maxCount} files.`);\n setInternalValidationState('error');\n return true;\n }\n\n if (maxSize && inputFiles.some((file) => file.size > maxSize)) {\n setErrorMessage('File size exceeded.');\n setInternalValidationState('error');\n return true;\n }\n\n setInternalValidationState('none');\n setErrorMessage('');\n return false;\n };\n\n const handleDragOver = (event: React.DragEvent): void => {\n event.preventDefault();\n setIsActive(true);\n };\n\n const handleDragLeave = (event: React.DragEvent): void => {\n event.preventDefault();\n setIsActive(false);\n };\n\n const handleDrop = (event: React.DragEvent): void => {\n event.preventDefault();\n setIsActive(false);\n\n const droppedFiles = Array.from(event.dataTransfer.files);\n const allFiles = selectedFiles.length > 0 ? [...selectedFiles, ...droppedFiles] : droppedFiles;\n\n const hasValidationErrors = validateFiles(droppedFiles, allFiles);\n\n if (!hasValidationErrors) {\n handleFilesChange(droppedFiles);\n onDrop?.({ name, fileList: allFiles });\n }\n };\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\n const inputFiles = Array.from(event.target.files ?? []);\n const allFiles = selectedFiles.length > 0 ? [...selectedFiles, ...inputFiles] : inputFiles;\n\n const hasValidationErrors = validateFiles(inputFiles, allFiles);\n\n if (!hasValidationErrors) {\n handleFilesChange(inputFiles);\n onChange?.({ name, fileList: allFiles });\n }\n };\n\n return (\n <BaseBox\n display=\"flex\"\n flexDirection=\"column\"\n width=\"100%\"\n {...metaAttribute({ name: MetaConstants.FileUpload, testID })}\n {...getStyledProps(styledProps)}\n >\n <BaseBox\n display=\"flex\"\n flexDirection={isLabelLeftPositioned ? 'row' : 'column'}\n alignItems={isLabelLeftPositioned ? 'center' : undefined}\n position=\"relative\"\n width=\"100%\"\n >\n {label ? (\n <FormLabel\n as=\"span\"\n necessityIndicator={necessityIndicator}\n position={labelPosition}\n id={labelId}\n accessibilityText={accessibilityText}\n >\n {label}\n </FormLabel>\n ) : null}\n\n <SelectorLabel\n componentName={MetaConstants.FileUploadLabel}\n inputProps={{}}\n style={{\n cursor: isDisabled ? 'not-allowed' : 'pointer',\n }}\n >\n <BaseBox\n display=\"flex\"\n flexDirection=\"column\"\n width=\"100%\"\n marginBottom={willRenderHintText ? 'spacing.0' : 'spacing.5'}\n >\n <StyledFileUploadWrapper\n isDisabled={isDisabled}\n isActive={isActive}\n display=\"flex\"\n flexDirection=\"row\"\n justifyContent=\"center\"\n alignItems=\"center\"\n borderRadius=\"medium\"\n borderWidth=\"thin\"\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n onClick={() => setIsActive(true)}\n data-comp=\"f\"\n style={{\n ...(isOneFileSelectedWithSingleUpload ? screenReaderStyles : {}),\n }}\n >\n <Box\n display=\"flex\"\n justifyContent=\"center\"\n alignItems=\"center\"\n flexDirection={{ base: 'column', s: 'row' }}\n gap={makeSize(6)}\n padding=\"spacing.3\"\n >\n <Text\n color={\n isDisabled\n ? fileUploadColorTokens.text.disabled\n : fileUploadColorTokens.text.default\n }\n >\n Drag files here or{' '}\n </Text>\n <SelectorInput\n id={inputId}\n hoverTokens={getFileUploadInputHoverTokens()}\n isChecked={false}\n isDisabled={isDisabled}\n inputProps={{\n name,\n type: 'file',\n onChange: handleInputChange,\n multiple: isMultiple,\n required: isRequired,\n disabled: isDisabled,\n accept,\n onBlur: () => setIsActive(false),\n ...accessibilityProps,\n }}\n ref={ref}\n />\n\n <Box\n display=\"flex\"\n justifyContent=\"center\"\n alignItems=\"center\"\n flexDirection={{ base: 'column', s: 'row' }}\n borderRadius=\"small\"\n >\n <Box\n display=\"flex\"\n flexDirection=\"row\"\n alignItems=\"center\"\n borderBottomColor={\n fileUploadLinkBorderTokens.color[isDisabled ? 'disabled' : 'default']\n }\n borderBottomWidth={fileUploadLinkBorderTokens.width.default}\n >\n <Text\n color={\n isDisabled\n ? fileUploadColorTokens.link.disabled\n : fileUploadColorTokens.link.default\n }\n >\n Upload\n </Text>\n </Box>\n </Box>\n </Box>\n </StyledFileUploadWrapper>\n </BaseBox>\n </SelectorLabel>\n {isOneFileSelectedWithSingleUpload && (\n <FileUploadItem\n file={selectedFiles[0]}\n onRemove={() => {\n const newFiles = selectedFiles.filter(({ id }) => id !== selectedFiles[0].id);\n setSelectedFiles(newFiles);\n onRemove?.({ file: selectedFiles[0] });\n }}\n onDismiss={() => {\n const newFiles = selectedFiles.filter(({ id }) => id !== selectedFiles[0].id);\n setSelectedFiles(newFiles);\n onDismiss?.({ file: selectedFiles[0] });\n }}\n onPreview={onPreview}\n />\n )}\n </BaseBox>\n {/* the magic number 136 is basically max-width of label i.e 120 and then right margin i.e 16 which is the spacing between label and input field */}\n {willRenderHintText && (\n <BaseBox\n marginLeft={makeSize(label && isLabelLeftPositioned ? 136 : 0)}\n marginBottom=\"spacing.5\"\n >\n <BaseBox display=\"flex\" flexDirection=\"row\" justifyContent=\"'space-between\">\n <FormHint\n type={getHintType({\n validationState: showError ? 'error' : validationState,\n hasHelpText: Boolean(helpText),\n })}\n helpText={helpText}\n errorText={errorMessage}\n helpTextId={helpTextId}\n errorTextId={errorTextId}\n />\n </BaseBox>\n </BaseBox>\n )}\n {!isOneFileSelectedWithSingleUpload &&\n selectedFiles.map((file) => (\n <BaseBox\n key={file.id}\n marginLeft={makeSize(label && isLabelLeftPositioned ? 136 : 0)}\n marginBottom=\"spacing.3\"\n >\n <FileUploadItem\n file={file}\n onRemove={() => {\n const newFiles = selectedFiles.filter(({ id }) => id !== file.id);\n setSelectedFiles(newFiles);\n onRemove?.({ file });\n }}\n onDismiss={() => {\n const newFiles = selectedFiles.filter(({ id }) => id !== file.id);\n setSelectedFiles(newFiles);\n onDismiss?.({ file });\n }}\n onPreview={onPreview}\n />\n </BaseBox>\n ))}\n </BaseBox>\n );\n};\n\n/**\n * ### FileUpload Component\n * \n * The FileUpload component is used to handle file attachments, including the drag-and-drop interaction.\n * Primarily, it is used to upload files to a server or to display a list of uploaded files.\n * \n * ---\n * \n * #### Usage\n * \n * ```jsx\n const GSTForm = () => {\n const [selectedFile, setSelectedFile] = useState<BladeFile>();\n const [isLoading, setIsLoading] = useState(false);\n \n return (\n <Box>\n <Heading marginBottom=\"spacing.4\">Add GST Details</Heading>\n <form encType=\"multipart/form-data\" onSubmit={handleSubmit}>\n <FileUpload\n uploadType=\"single\"\n label=\"Upload GST\"\n helpText=\"Upload .jpg, .jpeg, or .png file only\"\n accept=\".jpg, .jpeg, .png\"\n onChange={({ fileList }) => {\n setSelectedFile(fileList[0]);\n }}\n onDrop={({ fileList }) => {\n setSelectedFile(fileList[0]);\n }}\n isRequired\n necessityIndicator=\"required\"\n />\n <Button type=\"submit\" variant=\"primary\">\n Submit\n </Button>\n {isLoading && (\n <ProgressBar isIndeterminate label=\"Uploading your GST Certificate...\" />\n )}\n </form>\n </Box>\n );\n }\n * ```\n *\n * ---\n *\n * Checkout {@link https://blade.razorpay.com/?path=/docs/components-fileupload FileUpload Documentation}\n * \n */\nconst FileUpload = assignWithoutSideEffects(forwardRef(_FileUpload), {\n displayName: 'FileUpload',\n componentId: 'FileUpload',\n});\n\nexport { FileUpload };\nexport type { BladeFile, BladeFileList, FileUploadProps };\n"],"names":["_FileUpload","_ref","ref","name","accept","_ref$uploadType","uploadType","onChange","onPreview","onRemove","onDismiss","onDrop","isDisabled","isRequired","necessityIndicator","fileList","testID","label","_ref$labelPosition","labelPosition","accessibilityLabel","validationState","helpText","errorText","maxCount","maxSize","styledProps","_objectWithoutProperties","_excluded","_useTheme","useTheme","platform","_useState","useState","_useState2","_slicedToArray","selectedFiles","setSelectedFiles","_useState3","_useState4","errorMessage","setErrorMessage","_useState5","_useState6","internalValidationState","setInternalValidationState","_useState7","_useState8","isActive","setIsActive","isMultiple","isOneFileSelectedWithSingleUpload","length","inputLabelPosition","isLabelLeftPositioned","willRenderHintText","Boolean","showError","showHelpText","accessibilityText","concat","_useFormId","useFormId","inputId","labelId","helpTextId","errorTextId","accessibilityProps","makeAccessible","required","invalid","disabled","describedBy","useMemo","_iterator","_createForOfIteratorHelper","_step","s","n","done","file","value","id","Date","getTime","toString","Math","floor","random","err","e","f","handleFilesChange","useCallback","inputFiles","prevFiles","allFiles","_toConsumableArray","validateFiles","some","isFileAccepted","size","handleDragOver","event","preventDefault","handleDragLeave","handleDrop","droppedFiles","Array","from","dataTransfer","files","hasValidationErrors","handleInputChange","_event$target$files","target","_jsxs","BaseBox","_objectSpread","display","flexDirection","width","metaAttribute","MetaConstants","FileUpload","getStyledProps","children","alignItems","undefined","position","_jsx","FormLabel","as","SelectorLabel","componentName","FileUploadLabel","inputProps","style","cursor","marginBottom","StyledFileUploadWrapper","justifyContent","borderRadius","borderWidth","onDragOver","onDragLeave","onClick","screenReaderStyles","Box","base","gap","makeSize","padding","Text","color","fileUploadColorTokens","text","SelectorInput","hoverTokens","getFileUploadInputHoverTokens","isChecked","type","multiple","onBlur","borderBottomColor","fileUploadLinkBorderTokens","borderBottomWidth","link","FileUploadItem","newFiles","filter","_ref2","_ref3","marginLeft","FormHint","getHintType","hasHelpText","map","_ref4","_ref5","assignWithoutSideEffects","forwardRef","displayName","componentId"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,IAAMA,WAA6E,GAAG,SAAhFA,WAA6EA,CAAAC,IAAA,EAyBjFC,GAAG,EACoB;AAAA,EAAA,IAxBrBC,IAAI,GAAAF,IAAA,CAAJE,IAAI;IACJC,MAAM,GAAAH,IAAA,CAANG,MAAM;IAAAC,eAAA,GAAAJ,IAAA,CACNK,UAAU;AAAVA,IAAAA,UAAU,GAAAD,eAAA,KAAG,KAAA,CAAA,GAAA,QAAQ,GAAAA,eAAA;IACrBE,QAAQ,GAAAN,IAAA,CAARM,QAAQ;IACRC,SAAS,GAAAP,IAAA,CAATO,SAAS;IACTC,SAAQ,GAAAR,IAAA,CAARQ,QAAQ;IACRC,UAAS,GAAAT,IAAA,CAATS,SAAS;IACTC,MAAM,GAAAV,IAAA,CAANU,MAAM;IACNC,UAAU,GAAAX,IAAA,CAAVW,UAAU;IACVC,UAAU,GAAAZ,IAAA,CAAVY,UAAU;IACVC,kBAAkB,GAAAb,IAAA,CAAlBa,kBAAkB;IAClBC,QAAQ,GAAAd,IAAA,CAARc,QAAQ;IACRC,MAAM,GAAAf,IAAA,CAANe,MAAM;IACNC,KAAK,GAAAhB,IAAA,CAALgB,KAAK;IAAAC,kBAAA,GAAAjB,IAAA,CACLkB,aAAa;AAAbA,IAAAA,aAAa,GAAAD,kBAAA,KAAG,KAAA,CAAA,GAAA,KAAK,GAAAA,kBAAA;IACrBE,kBAAkB,GAAAnB,IAAA,CAAlBmB,kBAAkB;IAClBC,eAAe,GAAApB,IAAA,CAAfoB,eAAe;IACfC,QAAQ,GAAArB,IAAA,CAARqB,QAAQ;IACRC,SAAS,GAAAtB,IAAA,CAATsB,SAAS;IACTC,QAAQ,GAAAvB,IAAA,CAARuB,QAAQ;IACRC,OAAO,GAAAxB,IAAA,CAAPwB,OAAO;AACJC,IAAAA,WAAW,GAAAC,wBAAA,CAAA1B,IAAA,EAAA2B,SAAA,CAAA,CAAA;AAIhB,EAAA,IAAAC,SAAA,GAAqBC,QAAQ,EAAE;IAAvBC,QAAQ,GAAAF,SAAA,CAARE,QAAQ,CAAA;EAChB,IAAAC,SAAA,GAA0CC,QAAQ,CAAgBlB,QAAQ,KAARA,IAAAA,IAAAA,QAAQ,KAARA,KAAAA,CAAAA,GAAAA,QAAQ,GAAI,EAAE,CAAC;IAAAmB,UAAA,GAAAC,cAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAA1EI,IAAAA,aAAa,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,gBAAgB,GAAAH,UAAA,CAAA,CAAA,CAAA,CAAA;AACtC,EAAA,IAAAI,UAAA,GAAwCL,QAAQ,CAACV,SAAS,CAAC;IAAAgB,UAAA,GAAAJ,cAAA,CAAAG,UAAA,EAAA,CAAA,CAAA;AAApDE,IAAAA,YAAY,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAEE,IAAAA,eAAe,GAAAF,UAAA,CAAA,CAAA,CAAA,CAAA;AACpC,EAAA,IAAAG,UAAA,GAA8DT,QAAQ,CAAC,MAAM,CAAC;IAAAU,UAAA,GAAAR,cAAA,CAAAO,UAAA,EAAA,CAAA,CAAA;AAAvEE,IAAAA,uBAAuB,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAEE,IAAAA,0BAA0B,GAAAF,UAAA,CAAA,CAAA,CAAA,CAAA;AAC1D,EAAA,IAAAG,UAAA,GAAgCb,QAAQ,CAAC,KAAK,CAAC;IAAAc,UAAA,GAAAZ,cAAA,CAAAW,UAAA,EAAA,CAAA,CAAA;AAAxCE,IAAAA,QAAQ,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAEE,IAAAA,WAAW,GAAAF,UAAA,CAAA,CAAA,CAAA,CAAA;AAE5B,EAAA,IAAMG,UAAU,GAAG5C,UAAU,KAAK,UAAU,CAAA;EAC5C,IAAM6C,iCAAiC,GAAG,CAACD,UAAU,IAAId,aAAa,CAACgB,MAAM,KAAK,CAAC,CAAA;EACnF,IAAMC,kBAAkB,GAAGtB,QAAQ,KAAK,UAAU,GAAG,KAAK,GAAGZ,aAAa,CAAA;AAC1E,EAAA,IAAMmC,qBAAqB,GAAGD,kBAAkB,KAAK,MAAM,CAAA;EAC3D,IAAME,kBAAkB,GAAGC,OAAO,CAAClC,QAAQ,CAAC,IAAIkC,OAAO,CAAChB,YAAY,CAAC,CAAA;EAErE,IAAMiB,SAAS,GAAGpC,eAAe,KAAK,OAAO,IAAIuB,uBAAuB,KAAK,OAAO,CAAA;AACpF,EAAA,IAAMc,YAAY,GAAG,CAACD,SAAS,IAAInC,QAAQ,CAAA;EAC3C,IAAMqC,iBAAiB,GACrBvC,kBAAkB,KAAA,IAAA,IAAlBA,kBAAkB,KAAlBA,KAAAA,CAAAA,GAAAA,kBAAkB,GAAAwC,GAAAA,CAAAA,MAAA,CAAQH,SAAS,GAAGlC,SAAS,GAAG,EAAE,EAAA,GAAA,CAAA,CAAAqC,MAAA,CAAIF,YAAY,GAAGpC,QAAQ,GAAG,EAAE,CAAE,CAAA;AACxF,EAAA,IAAAuC,UAAA,GAAsDC,SAAS,CAAC,iBAAiB,CAAC;IAA1EC,OAAO,GAAAF,UAAA,CAAPE,OAAO;IAAEC,OAAO,GAAAH,UAAA,CAAPG,OAAO;IAAEC,UAAU,GAAAJ,UAAA,CAAVI,UAAU;IAAEC,WAAW,GAAAL,UAAA,CAAXK,WAAW,CAAA;EAEjD,IAAMC,kBAAkB,GAAGC,cAAc,CAAC;AACxCC,IAAAA,QAAQ,EAAEb,OAAO,CAAC3C,UAAU,CAAC;AAC7ByD,IAAAA,OAAO,EAAEd,OAAO,CAACC,SAAS,CAAC;AAC3Bc,IAAAA,QAAQ,EAAEf,OAAO,CAAC5C,UAAU,CAAC;AAC7B4D,IAAAA,WAAW,EAAER,OAAAA;AACf,GAAC,CAAC,CAAA;;AAEF;AACAS,EAAAA,OAAO,CAAC,YAAM;AAAA,IAAA,IAAAC,SAAA,GAAAC,0BAAA,CACOvC,aAAa,CAAA;MAAAwC,KAAA,CAAA;AAAA,IAAA,IAAA;MAAhC,KAAAF,SAAA,CAAAG,CAAA,EAAAD,EAAAA,CAAAA,CAAAA,KAAA,GAAAF,SAAA,CAAAI,CAAA,EAAAC,EAAAA,IAAA,GAAkC;AAAA,QAAA,IAAvBC,IAAI,GAAAJ,KAAA,CAAAK,KAAA,CAAA;AACb,QAAA,IAAI,CAACD,IAAI,CAACE,EAAE,EAAE;AACZF,UAAAA,IAAI,CAACE,EAAE,GAAAtB,EAAAA,CAAAA,MAAA,CAAM,IAAIuB,IAAI,EAAE,CAACC,OAAO,EAAE,CAACC,QAAQ,EAAE,CAAA,CAAAzB,MAAA,CAAG0B,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAE,CAAA;AACtF,SAAA;AACF,OAAA;AAAC,KAAA,CAAA,OAAAC,GAAA,EAAA;MAAAf,SAAA,CAAAgB,CAAA,CAAAD,GAAA,CAAA,CAAA;AAAA,KAAA,SAAA;AAAAf,MAAAA,SAAA,CAAAiB,CAAA,EAAA,CAAA;AAAA,KAAA;AACH,GAAC,EAAE,CAACvD,aAAa,CAAC,CAAC,CAAA;AAEnB,EAAA,IAAMwD,iBAAiB,GAAGC,WAAW,CAAC,UAACC,UAAyB,EAAK;IACnEzD,gBAAgB,CAAC,UAAC0D,SAAS,EAAK;AAC9B,MAAA,IAAIA,SAAS,CAAC3C,MAAM,GAAG,CAAC,EAAE;QACxB,IAAM4C,QAAQ,GAAApC,EAAAA,CAAAA,MAAA,CAAAqC,kBAAA,CAAOF,SAAS,CAAAE,EAAAA,kBAAA,CAAKH,UAAU,CAAC,CAAA,CAAA;AAC9C,QAAA,OAAOE,QAAQ,CAAA;AACjB,OAAA;AAEA,MAAA,OAAOF,UAAU,CAAA;AACnB,KAAC,CAAC,CAAA;GACH,EAAE,EAAE,CAAC,CAAA;EAEN,IAAMI,aAAa,GAAG,SAAhBA,aAAaA,CAAIJ,UAAyB,EAAEE,QAAuB,EAAc;AACrF,IAAA,IAAI5F,MAAM,IAAI0F,UAAU,CAACK,IAAI,CAAC,UAACnB,IAAI,EAAA;AAAA,MAAA,OAAK,CAACoB,cAAc,CAACpB,IAAI,EAAE5E,MAAM,CAAC,CAAA;AAAA,KAAA,CAAC,EAAE;AACtEqC,MAAAA,eAAe,CAAAmB,mEAAAA,CAAAA,MAAA,CAAqExD,MAAM,CAAE,CAAC,CAAA;MAC7FyC,0BAA0B,CAAC,OAAO,CAAC,CAAA;AACnC,MAAA,OAAO,IAAI,CAAA;AACb,KAAA;IAEA,IAAIvC,UAAU,KAAK,QAAQ,IAAIwF,UAAU,CAAC1C,MAAM,GAAG,CAAC,EAAE;MACpDX,eAAe,CAAC,+BAA+B,CAAC,CAAA;MAChDI,0BAA0B,CAAC,OAAO,CAAC,CAAA;AACnC,MAAA,OAAO,IAAI,CAAA;AACb,KAAA;AAEA,IAAA,IAAIrB,QAAQ,IAAIwE,QAAQ,CAAC5C,MAAM,GAAG5B,QAAQ,EAAE;AAC1CiB,MAAAA,eAAe,CAAAmB,6BAAAA,CAAAA,MAAA,CAA+BpC,QAAQ,YAAS,CAAC,CAAA;MAChEqB,0BAA0B,CAAC,OAAO,CAAC,CAAA;AACnC,MAAA,OAAO,IAAI,CAAA;AACb,KAAA;AAEA,IAAA,IAAIpB,OAAO,IAAIqE,UAAU,CAACK,IAAI,CAAC,UAACnB,IAAI,EAAA;AAAA,MAAA,OAAKA,IAAI,CAACqB,IAAI,GAAG5E,OAAO,CAAA;AAAA,KAAA,CAAC,EAAE;MAC7DgB,eAAe,CAAC,qBAAqB,CAAC,CAAA;MACtCI,0BAA0B,CAAC,OAAO,CAAC,CAAA;AACnC,MAAA,OAAO,IAAI,CAAA;AACb,KAAA;IAEAA,0BAA0B,CAAC,MAAM,CAAC,CAAA;IAClCJ,eAAe,CAAC,EAAE,CAAC,CAAA;AACnB,IAAA,OAAO,KAAK,CAAA;GACb,CAAA;AAED,EAAA,IAAM6D,cAAc,GAAG,SAAjBA,cAAcA,CAAIC,KAAsB,EAAW;IACvDA,KAAK,CAACC,cAAc,EAAE,CAAA;IACtBvD,WAAW,CAAC,IAAI,CAAC,CAAA;GAClB,CAAA;AAED,EAAA,IAAMwD,eAAe,GAAG,SAAlBA,eAAeA,CAAIF,KAAsB,EAAW;IACxDA,KAAK,CAACC,cAAc,EAAE,CAAA;IACtBvD,WAAW,CAAC,KAAK,CAAC,CAAA;GACnB,CAAA;AAED,EAAA,IAAMyD,UAAU,GAAG,SAAbA,UAAUA,CAAIH,KAAsB,EAAW;IACnDA,KAAK,CAACC,cAAc,EAAE,CAAA;IACtBvD,WAAW,CAAC,KAAK,CAAC,CAAA;IAElB,IAAM0D,YAAY,GAAGC,KAAK,CAACC,IAAI,CAACN,KAAK,CAACO,YAAY,CAACC,KAAK,CAAC,CAAA;AACzD,IAAA,IAAMf,QAAQ,GAAG5D,aAAa,CAACgB,MAAM,GAAG,CAAC,GAAA,EAAA,CAAAQ,MAAA,CAAAqC,kBAAA,CAAO7D,aAAa,CAAKuE,EAAAA,YAAY,IAAIA,YAAY,CAAA;AAE9F,IAAA,IAAMK,mBAAmB,GAAGd,aAAa,CAACS,YAAY,EAAEX,QAAQ,CAAC,CAAA;IAEjE,IAAI,CAACgB,mBAAmB,EAAE;MACxBpB,iBAAiB,CAACe,YAAY,CAAC,CAAA;AAC/BhG,MAAAA,MAAM,KAANA,IAAAA,IAAAA,MAAM,KAANA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,MAAM,CAAG;AAAER,QAAAA,IAAI,EAAJA,IAAI;AAAEY,QAAAA,QAAQ,EAAEiF,QAAAA;AAAS,OAAC,CAAC,CAAA;AACxC,KAAA;GACD,CAAA;AAED,EAAA,IAAMiB,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIV,KAA0C,EAAW;AAAA,IAAA,IAAAW,mBAAA,CAAA;AAC9E,IAAA,IAAMpB,UAAU,GAAGc,KAAK,CAACC,IAAI,CAAA,CAAAK,mBAAA,GAACX,KAAK,CAACY,MAAM,CAACJ,KAAK,MAAAG,IAAAA,IAAAA,mBAAA,cAAAA,mBAAA,GAAI,EAAE,CAAC,CAAA;AACvD,IAAA,IAAMlB,QAAQ,GAAG5D,aAAa,CAACgB,MAAM,GAAG,CAAC,GAAA,EAAA,CAAAQ,MAAA,CAAAqC,kBAAA,CAAO7D,aAAa,CAAK0D,EAAAA,UAAU,IAAIA,UAAU,CAAA;AAE1F,IAAA,IAAMkB,mBAAmB,GAAGd,aAAa,CAACJ,UAAU,EAAEE,QAAQ,CAAC,CAAA;IAE/D,IAAI,CAACgB,mBAAmB,EAAE;MACxBpB,iBAAiB,CAACE,UAAU,CAAC,CAAA;AAC7BvF,MAAAA,QAAQ,KAARA,IAAAA,IAAAA,QAAQ,KAARA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAQ,CAAG;AAAEJ,QAAAA,IAAI,EAAJA,IAAI;AAAEY,QAAAA,QAAQ,EAAEiF,QAAAA;AAAS,OAAC,CAAC,CAAA;AAC1C,KAAA;GACD,CAAA;EAED,oBACEoB,IAAA,CAACC,OAAO,EAAAC,aAAA,CAAAA,aAAA,CAAAA,aAAA,CAAA;AACNC,IAAAA,OAAO,EAAC,MAAM;AACdC,IAAAA,aAAa,EAAC,QAAQ;AACtBC,IAAAA,KAAK,EAAC,MAAA;AAAM,GAAA,EACRC,aAAa,CAAC;IAAEvH,IAAI,EAAEwH,aAAa,CAACC,UAAU;AAAE5G,IAAAA,MAAM,EAANA,MAAAA;AAAO,GAAC,CAAC,CAAA,EACzD6G,cAAc,CAACnG,WAAW,CAAC,CAAA,EAAA,EAAA,EAAA;IAAAoG,QAAA,EAAA,cAE/BV,IAAA,CAACC,OAAO,EAAA;AACNE,MAAAA,OAAO,EAAC,MAAM;AACdC,MAAAA,aAAa,EAAElE,qBAAqB,GAAG,KAAK,GAAG,QAAS;AACxDyE,MAAAA,UAAU,EAAEzE,qBAAqB,GAAG,QAAQ,GAAG0E,SAAU;AACzDC,MAAAA,QAAQ,EAAC,UAAU;AACnBR,MAAAA,KAAK,EAAC,MAAM;AAAAK,MAAAA,QAAA,EAEX7G,CAAAA,KAAK,gBACJiH,GAAA,CAACC,SAAS,EAAA;AACRC,QAAAA,EAAE,EAAC,MAAM;AACTtH,QAAAA,kBAAkB,EAAEA,kBAAmB;AACvCmH,QAAAA,QAAQ,EAAE9G,aAAc;AACxB+D,QAAAA,EAAE,EAAElB,OAAQ;AACZL,QAAAA,iBAAiB,EAAEA,iBAAkB;AAAAmE,QAAAA,QAAA,EAEpC7G,KAAAA;AAAK,OACG,CAAC,GACV,IAAI,eAERiH,GAAA,CAACG,aAAa,EAAA;QACZC,aAAa,EAAEX,aAAa,CAACY,eAAgB;QAC7CC,UAAU,EAAE,EAAG;AACfC,QAAAA,KAAK,EAAE;AACLC,UAAAA,MAAM,EAAE9H,UAAU,GAAG,aAAa,GAAG,SAAA;SACrC;QAAAkH,QAAA,eAEFI,GAAA,CAACb,OAAO,EAAA;AACNE,UAAAA,OAAO,EAAC,MAAM;AACdC,UAAAA,aAAa,EAAC,QAAQ;AACtBC,UAAAA,KAAK,EAAC,MAAM;AACZkB,UAAAA,YAAY,EAAEpF,kBAAkB,GAAG,WAAW,GAAG,WAAY;UAAAuE,QAAA,eAE7DI,GAAA,CAACU,uBAAuB,EAAA;AACtBhI,YAAAA,UAAU,EAAEA,UAAW;AACvBoC,YAAAA,QAAQ,EAAEA,QAAS;AACnBuE,YAAAA,OAAO,EAAC,MAAM;AACdC,YAAAA,aAAa,EAAC,KAAK;AACnBqB,YAAAA,cAAc,EAAC,QAAQ;AACvBd,YAAAA,UAAU,EAAC,QAAQ;AACnBe,YAAAA,YAAY,EAAC,QAAQ;AACrBC,YAAAA,WAAW,EAAC,MAAM;AAClBC,YAAAA,UAAU,EAAE1C,cAAe;AAC3B2C,YAAAA,WAAW,EAAExC,eAAgB;AAC7B9F,YAAAA,MAAM,EAAE+F,UAAW;YACnBwC,OAAO,EAAE,SAAAA,OAAA,GAAA;cAAA,OAAMjG,WAAW,CAAC,IAAI,CAAC,CAAA;aAAC;AACjC,YAAA,WAAA,EAAU,GAAG;YACbwF,KAAK,EAAAnB,aAAA,CACCnE,EAAAA,EAAAA,iCAAiC,GAAGgG,kBAAkB,GAAG,EAAE,CAC/D;YAAArB,QAAA,eAEFV,IAAA,CAACgC,GAAG,EAAA;AACF7B,cAAAA,OAAO,EAAC,MAAM;AACdsB,cAAAA,cAAc,EAAC,QAAQ;AACvBd,cAAAA,UAAU,EAAC,QAAQ;AACnBP,cAAAA,aAAa,EAAE;AAAE6B,gBAAAA,IAAI,EAAE,QAAQ;AAAExE,gBAAAA,CAAC,EAAE,KAAA;eAAQ;AAC5CyE,cAAAA,GAAG,EAAEC,QAAQ,CAAC,CAAC,CAAE;AACjBC,cAAAA,OAAO,EAAC,WAAW;cAAA1B,QAAA,EAAA,cAEnBV,IAAA,CAACqC,IAAI,EAAA;AACHC,gBAAAA,KAAK,EACH9I,UAAU,GACN+I,qBAAqB,CAACC,IAAI,CAACrF,QAAQ,GACnCoF,qBAAqB,CAACC,IAAI,CAC/B,SAAA,CAAA;gBAAA9B,QAAA,EAAA,CACF,oBACmB,EAAC,GAAG,CAAA;AAAA,eAClB,CAAC,eACPI,GAAA,CAAC2B,aAAa,EAAA;AACZ3E,gBAAAA,EAAE,EAAEnB,OAAQ;gBACZ+F,WAAW,EAAEC,6BAA6B,EAAG;AAC7CC,gBAAAA,SAAS,EAAE,KAAM;AACjBpJ,gBAAAA,UAAU,EAAEA,UAAW;AACvB4H,gBAAAA,UAAU,EAAAlB,aAAA,CAAA;AACRnH,kBAAAA,IAAI,EAAJA,IAAI;AACJ8J,kBAAAA,IAAI,EAAE,MAAM;AACZ1J,kBAAAA,QAAQ,EAAE0G,iBAAiB;AAC3BiD,kBAAAA,QAAQ,EAAEhH,UAAU;AACpBmB,kBAAAA,QAAQ,EAAExD,UAAU;AACpB0D,kBAAAA,QAAQ,EAAE3D,UAAU;AACpBR,kBAAAA,MAAM,EAANA,MAAM;kBACN+J,MAAM,EAAE,SAAAA,MAAA,GAAA;oBAAA,OAAMlH,WAAW,CAAC,KAAK,CAAC,CAAA;AAAA,mBAAA;AAAA,iBAAA,EAC7BkB,kBAAkB,CACrB;AACFjE,gBAAAA,GAAG,EAAEA,GAAAA;AAAI,eACV,CAAC,eAEFgI,GAAA,CAACkB,GAAG,EAAA;AACF7B,gBAAAA,OAAO,EAAC,MAAM;AACdsB,gBAAAA,cAAc,EAAC,QAAQ;AACvBd,gBAAAA,UAAU,EAAC,QAAQ;AACnBP,gBAAAA,aAAa,EAAE;AAAE6B,kBAAAA,IAAI,EAAE,QAAQ;AAAExE,kBAAAA,CAAC,EAAE,KAAA;iBAAQ;AAC5CiE,gBAAAA,YAAY,EAAC,OAAO;gBAAAhB,QAAA,eAEpBI,GAAA,CAACkB,GAAG,EAAA;AACF7B,kBAAAA,OAAO,EAAC,MAAM;AACdC,kBAAAA,aAAa,EAAC,KAAK;AACnBO,kBAAAA,UAAU,EAAC,QAAQ;kBACnBqC,iBAAiB,EACfC,0BAA0B,CAACX,KAAK,CAAC9I,UAAU,GAAG,UAAU,GAAG,SAAS,CACrE;AACD0J,kBAAAA,iBAAiB,EAAED,0BAA0B,CAAC5C,KAAK,CAAS,SAAA,CAAA;kBAAAK,QAAA,eAE5DI,GAAA,CAACuB,IAAI,EAAA;AACHC,oBAAAA,KAAK,EACH9I,UAAU,GACN+I,qBAAqB,CAACY,IAAI,CAAChG,QAAQ,GACnCoF,qBAAqB,CAACY,IAAI,CAC/B,SAAA,CAAA;AAAAzC,oBAAAA,QAAA,EACF,QAAA;mBAEK,CAAA;iBACH,CAAA;AAAC,eACH,CAAC,CAAA;aACH,CAAA;WACkB,CAAA;SAClB,CAAA;AAAC,OACG,CAAC,EACf3E,iCAAiC,iBAChC+E,GAAA,CAACsC,cAAc,EAAA;AACbxF,QAAAA,IAAI,EAAE5C,aAAa,CAAC,CAAC,CAAE;QACvB3B,QAAQ,EAAE,SAAAA,QAAAA,GAAM;AACd,UAAA,IAAMgK,QAAQ,GAAGrI,aAAa,CAACsI,MAAM,CAAC,UAAAC,KAAA,EAAA;AAAA,YAAA,IAAGzF,EAAE,GAAAyF,KAAA,CAAFzF,EAAE,CAAA;AAAA,YAAA,OAAOA,EAAE,KAAK9C,aAAa,CAAC,CAAC,CAAC,CAAC8C,EAAE,CAAA;WAAC,CAAA,CAAA;UAC7E7C,gBAAgB,CAACoI,QAAQ,CAAC,CAAA;AAC1BhK,UAAAA,SAAQ,KAARA,IAAAA,IAAAA,SAAQ,KAARA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAQ,CAAG;YAAEuE,IAAI,EAAE5C,aAAa,CAAC,CAAC,CAAA;AAAE,WAAC,CAAC,CAAA;SACtC;QACF1B,SAAS,EAAE,SAAAA,SAAAA,GAAM;AACf,UAAA,IAAM+J,QAAQ,GAAGrI,aAAa,CAACsI,MAAM,CAAC,UAAAE,KAAA,EAAA;AAAA,YAAA,IAAG1F,EAAE,GAAA0F,KAAA,CAAF1F,EAAE,CAAA;AAAA,YAAA,OAAOA,EAAE,KAAK9C,aAAa,CAAC,CAAC,CAAC,CAAC8C,EAAE,CAAA;WAAC,CAAA,CAAA;UAC7E7C,gBAAgB,CAACoI,QAAQ,CAAC,CAAA;AAC1B/J,UAAAA,UAAS,KAATA,IAAAA,IAAAA,UAAS,KAATA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,UAAS,CAAG;YAAEsE,IAAI,EAAE5C,aAAa,CAAC,CAAC,CAAA;AAAE,WAAC,CAAC,CAAA;SACvC;AACF5B,QAAAA,SAAS,EAAEA,SAAAA;AAAU,OACtB,CACF,CAAA;AAAA,KACM,CAAC,EAET+C,kBAAkB,iBACjB2E,GAAA,CAACb,OAAO,EAAA;MACNwD,UAAU,EAAEtB,QAAQ,CAACtI,KAAK,IAAIqC,qBAAqB,GAAG,GAAG,GAAG,CAAC,CAAE;AAC/DqF,MAAAA,YAAY,EAAC,WAAW;MAAAb,QAAA,eAExBI,GAAA,CAACb,OAAO,EAAA;AAACE,QAAAA,OAAO,EAAC,MAAM;AAACC,QAAAA,aAAa,EAAC,KAAK;AAACqB,QAAAA,cAAc,EAAC,gBAAgB;QAAAf,QAAA,eACzEI,GAAA,CAAC4C,QAAQ,EAAA;UACPb,IAAI,EAAEc,WAAW,CAAC;AAChB1J,YAAAA,eAAe,EAAEoC,SAAS,GAAG,OAAO,GAAGpC,eAAe;YACtD2J,WAAW,EAAExH,OAAO,CAAClC,QAAQ,CAAA;AAC/B,WAAC,CAAE;AACHA,UAAAA,QAAQ,EAAEA,QAAS;AACnBC,UAAAA,SAAS,EAAEiB,YAAa;AACxByB,UAAAA,UAAU,EAAEA,UAAW;AACvBC,UAAAA,WAAW,EAAEA,WAAAA;SACd,CAAA;OACM,CAAA;KACF,CACV,EACA,CAACf,iCAAiC,IACjCf,aAAa,CAAC6I,GAAG,CAAC,UAACjG,IAAI,EAAA;MAAA,oBACrBkD,GAAA,CAACb,OAAO,EAAA;QAENwD,UAAU,EAAEtB,QAAQ,CAACtI,KAAK,IAAIqC,qBAAqB,GAAG,GAAG,GAAG,CAAC,CAAE;AAC/DqF,QAAAA,YAAY,EAAC,WAAW;QAAAb,QAAA,eAExBI,GAAA,CAACsC,cAAc,EAAA;AACbxF,UAAAA,IAAI,EAAEA,IAAK;UACXvE,QAAQ,EAAE,SAAAA,QAAAA,GAAM;AACd,YAAA,IAAMgK,QAAQ,GAAGrI,aAAa,CAACsI,MAAM,CAAC,UAAAQ,KAAA,EAAA;AAAA,cAAA,IAAGhG,EAAE,GAAAgG,KAAA,CAAFhG,EAAE,CAAA;AAAA,cAAA,OAAOA,EAAE,KAAKF,IAAI,CAACE,EAAE,CAAA;aAAC,CAAA,CAAA;YACjE7C,gBAAgB,CAACoI,QAAQ,CAAC,CAAA;AAC1BhK,YAAAA,SAAQ,KAARA,IAAAA,IAAAA,SAAQ,KAARA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAQ,CAAG;AAAEuE,cAAAA,IAAI,EAAJA,IAAAA;AAAK,aAAC,CAAC,CAAA;WACpB;UACFtE,SAAS,EAAE,SAAAA,SAAAA,GAAM;AACf,YAAA,IAAM+J,QAAQ,GAAGrI,aAAa,CAACsI,MAAM,CAAC,UAAAS,KAAA,EAAA;AAAA,cAAA,IAAGjG,EAAE,GAAAiG,KAAA,CAAFjG,EAAE,CAAA;AAAA,cAAA,OAAOA,EAAE,KAAKF,IAAI,CAACE,EAAE,CAAA;aAAC,CAAA,CAAA;YACjE7C,gBAAgB,CAACoI,QAAQ,CAAC,CAAA;AAC1B/J,YAAAA,UAAS,KAATA,IAAAA,IAAAA,UAAS,KAATA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,UAAS,CAAG;AAAEsE,cAAAA,IAAI,EAAJA,IAAAA;AAAK,aAAC,CAAC,CAAA;WACrB;AACFxE,UAAAA,SAAS,EAAEA,SAAAA;SACZ,CAAA;OAjBIwE,EAAAA,IAAI,CAACE,EAkBH,CAAC,CAAA;AAAA,KACX,CAAC,CAAA;AAAA,GAAA,CACG,CAAC,CAAA;AAEd,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACM0C,IAAAA,UAAU,gBAAGwD,wBAAwB,eAACC,UAAU,CAACrL,WAAW,CAAC,EAAE;AACnEsL,EAAAA,WAAW,EAAE,YAAY;AACzBC,EAAAA,WAAW,EAAE,YAAA;AACf,CAAC;;;;"}
@@ -7,7 +7,7 @@ import { CSSObject } from 'styled-components';
7
7
  import { CurrencyCodeType } from '@razorpay/i18nify-js/currency';
8
8
  import { ReactDOMAttributes } from '@use-gesture/react/dist/declarations/src/types';
9
9
  import * as csstype from 'csstype';
10
- import { UseFloatingOptions } from '@floating-ui/react';
10
+ import { Placement, UseFloatingOptions } from '@floating-ui/react';
11
11
  import { Toast } from 'react-hot-toast';
12
12
 
13
13
  type BorderRadius = Readonly<{
@@ -5200,11 +5200,17 @@ type DropdownOverlayProps = {
5200
5200
  */
5201
5201
  zIndex?: number;
5202
5202
  width?: BoxProps['width'];
5203
+ /**
5204
+ * Sets the placement of the DropdownOverlay
5205
+ *
5206
+ * @default 'bottom-start'
5207
+ */
5208
+ defaultPlacement?: Placement;
5203
5209
  } & TestID;
5204
5210
 
5205
5211
  declare const Dropdown: ({ children, isOpen: isOpenControlled, onOpenChange, selectionType, testID, ...styledProps }: DropdownProps) => React__default.ReactElement;
5206
5212
 
5207
- declare const DropdownOverlay: ({ children, testID, zIndex, width, }: DropdownOverlayProps) => React__default.ReactElement | null;
5213
+ declare const DropdownOverlay: ({ children, testID, zIndex, width, defaultPlacement, }: DropdownOverlayProps) => React__default.ReactElement | null;
5208
5214
 
5209
5215
  type DropdownButtonProps = ButtonProps & {
5210
5216
  onBlur?: BaseButtonProps['onBlur'];
@@ -6,7 +6,7 @@ import { CSSObject } from 'styled-components';
6
6
  import { CurrencyCodeType } from '@razorpay/i18nify-js/currency';
7
7
  import { ReactDOMAttributes } from '@use-gesture/react/dist/declarations/src/types';
8
8
  import * as react_native_types from 'react-native/types';
9
- import { UseFloatingOptions } from '@floating-ui/react';
9
+ import { Placement, UseFloatingOptions } from '@floating-ui/react';
10
10
  import { Toast } from 'react-hot-toast';
11
11
 
12
12
  type BorderRadius = Readonly<{
@@ -4691,6 +4691,12 @@ type DropdownOverlayProps = {
4691
4691
  */
4692
4692
  zIndex?: number;
4693
4693
  width?: BoxProps['width'];
4694
+ /**
4695
+ * Sets the placement of the DropdownOverlay
4696
+ *
4697
+ * @default 'bottom-start'
4698
+ */
4699
+ defaultPlacement?: Placement;
4694
4700
  } & TestID;
4695
4701
 
4696
4702
  declare const Dropdown: ({ children, isOpen: isOpenControlled, onOpenChange, selectionType, testID, ...styledProps }: DropdownProps) => React__default.ReactElement;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@razorpay/blade",
3
3
  "description": "The Design System that powers Razorpay",
4
- "version": "11.6.2",
4
+ "version": "11.6.3",
5
5
  "license": "MIT",
6
6
  "engines": {
7
7
  "node": ">=18.12.1"