@vibe/core 3.77.1-alpha-b78d2.0 → 3.77.1-alpha-59987.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/components/dialog/dist/Dialog/Dialog.js +1 -1
  2. package/dist/components/dialog/dist/Dialog/Dialog.js.map +1 -1
  3. package/dist/components/layers/dist/LayerProvider/LayerContext.js.map +1 -0
  4. package/dist/components/layers/dist/LayerProvider/LayerProvider.js.map +1 -0
  5. package/dist/metadata.json +0 -32
  6. package/dist/mocked_classnames/components/dialog/dist/Dialog/Dialog.js +1 -1
  7. package/dist/mocked_classnames/components/dialog/dist/Dialog/Dialog.js.map +1 -1
  8. package/dist/mocked_classnames/components/layers/dist/LayerProvider/LayerContext.js.map +1 -0
  9. package/dist/mocked_classnames/components/layers/dist/LayerProvider/LayerProvider.js.map +1 -0
  10. package/dist/mocked_classnames/src/components/Dropdown/Dropdown.js +1 -1
  11. package/dist/mocked_classnames/src/components/Dropdown/Dropdown.js.map +1 -1
  12. package/dist/mocked_classnames/src/components/EditableTypography/EditableTypography.js +1 -1
  13. package/dist/mocked_classnames/src/components/EditableTypography/EditableTypography.js.map +1 -1
  14. package/dist/mocked_classnames/src/components/LegacyModal/LegacyModal.js +1 -1
  15. package/dist/mocked_classnames/src/components/LegacyModal/LegacyModal.js.map +1 -1
  16. package/dist/mocked_classnames/src/components/Modal/Modal/Modal.js +1 -1
  17. package/dist/mocked_classnames/src/components/Modal/Modal/Modal.js.map +1 -1
  18. package/dist/mocked_classnames/src/index.js +1 -1
  19. package/dist/src/components/Dropdown/Dropdown.js +1 -1
  20. package/dist/src/components/Dropdown/Dropdown.js.map +1 -1
  21. package/dist/src/components/EditableTypography/EditableTypography.js +1 -1
  22. package/dist/src/components/EditableTypography/EditableTypography.js.map +1 -1
  23. package/dist/src/components/LegacyModal/LegacyModal.js +1 -1
  24. package/dist/src/components/LegacyModal/LegacyModal.js.map +1 -1
  25. package/dist/src/components/Modal/Modal/Modal.js +1 -1
  26. package/dist/src/components/Modal/Modal/Modal.js.map +1 -1
  27. package/dist/src/index.js +1 -1
  28. package/package.json +10 -10
  29. package/dist/components/layer/dist/LayerProvider/LayerContext.js.map +0 -1
  30. package/dist/components/layer/dist/LayerProvider/LayerProvider.js.map +0 -1
  31. package/dist/mocked_classnames/components/layer/dist/LayerProvider/LayerContext.js.map +0 -1
  32. package/dist/mocked_classnames/components/layer/dist/LayerProvider/LayerProvider.js.map +0 -1
  33. /package/dist/components/{layer → layers}/dist/LayerProvider/LayerContext.js +0 -0
  34. /package/dist/components/{layer → layers}/dist/LayerProvider/LayerProvider.js +0 -0
  35. /package/dist/mocked_classnames/components/{layer → layers}/dist/LayerProvider/LayerContext.js +0 -0
  36. /package/dist/mocked_classnames/components/{layer → layers}/dist/LayerProvider/LayerProvider.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"Dropdown.js","sources":["../../../../../src/components/Dropdown/Dropdown.tsx"],"sourcesContent":["import { ComponentDefaultTestId, getTestId } from \"../../tests/test-ids-utils\";\nimport cx from \"classnames\";\nimport { BaseSizes, type SIZES_VALUES } from \"../../constants\";\nimport React, { forwardRef, useCallback, useMemo, useRef, useState, useEffect, useContext } from \"react\";\nimport Select, { type InputProps, components, createFilter, type ActionMeta } from \"react-select\";\nimport AsyncSelect from \"react-select/async\";\nimport BaseSelect from \"react-select/base\";\nimport { noop as NOOP } from \"es-toolkit\";\nimport MenuComponent from \"./components/menu/menu\";\nimport DropdownIndicatorComponent from \"./components/DropdownIndicator/DropdownIndicator\";\nimport OptionComponent from \"./components/option/option\";\nimport SingleValueComponent from \"./components/singleValue/singleValue\";\nimport ClearIndicatorComponent from \"./components/ClearIndicator/ClearIndicator\";\nimport MultiValueContainer from \"./components/MultiValueContainer/MultiValueContainer\";\nimport { isClient } from \"../../utils/ssr-utils\";\nimport {\n ADD_AUTO_HEIGHT_COMPONENTS,\n defaultCustomStyles,\n DROPDOWN_CHIP_COLORS,\n DROPDOWN_ID,\n DROPDOWN_INPUT_ARIA_LABEL,\n DROPDOWN_MENU_ARIA_LABEL,\n DROPDOWN_MENU_ID,\n DROPDOWN_MENU_PLACEMENT,\n DROPDOWN_MENU_POSITION\n} from \"./DropdownConstants\";\nimport generateBaseStyles, { customTheme } from \"./Dropdown.styles\";\nimport Control from \"./components/Control/Control\";\nimport Text from \"../Text/Text\";\nimport menuStyles from \"./components/menu/menu.module.scss\";\nimport styles from \"./Dropdown.module.scss\";\nimport {\n type DropdownOption,\n type DropdownState,\n type CustomMenuProps,\n type CustomOptionProps,\n type CustomSingleValueProps,\n type DropdownComponentProps\n} from \"./Dropdown.types\";\nimport { withStaticProps } from \"../../types\";\nimport { ComponentVibeId } from \"../../tests/constants\";\nimport { LayerContext } from \"@vibe/layer\";\n\nconst Dropdown = forwardRef(\n (\n {\n className,\n optionWrapperClassName,\n singleValueWrapperClassName,\n dropdownMenuWrapperClassName,\n placeholder = \"\",\n allowPlaceholderEllipsis,\n disabled = false,\n readOnly = false,\n onMenuOpen = NOOP,\n onMenuClose = NOOP,\n onFocus = NOOP,\n onBlur = NOOP,\n onScroll = NOOP,\n onMenuScrollToBottom = NOOP,\n onChange: customOnChange = NOOP,\n searchable = true,\n captureMenuScroll = false,\n options = [],\n defaultValue,\n value: customValue,\n noOptionsMessage,\n openMenuOnFocus,\n openMenuOnClick,\n clearable = true,\n OptionRenderer,\n optionRenderer,\n ValueRenderer,\n valueRenderer,\n menuRenderer,\n menuPlacement = \"bottom\",\n rtl,\n size = \"medium\",\n asyncOptions,\n cacheOptions,\n defaultOptions,\n isVirtualized,\n menuPortalTarget,\n extraStyles = defaultCustomStyles,\n maxMenuHeight,\n menuIsOpen,\n tabIndex = \"0\",\n id = DROPDOWN_ID,\n menuId = DROPDOWN_MENU_ID,\n menuAriaLabel = DROPDOWN_MENU_ARIA_LABEL,\n inputAriaLabel = DROPDOWN_INPUT_ARIA_LABEL,\n autoFocus = false,\n multi = false,\n multiline = false,\n onOptionRemove: customOnOptionRemove,\n onOptionSelect,\n onClear,\n onInputChange = NOOP,\n closeMenuOnSelect = !multi,\n closeMenuOnScroll: customCloseMenuOnScroll = false,\n withMandatoryDefaultOptions = false,\n isOptionSelected,\n insideOverflowContainer = false,\n insideOverflowWithTransformContainer = false,\n insideLayerContext = false,\n tooltipContent = \"\",\n onKeyDown = NOOP,\n isLoading = false,\n loadingMessage,\n ariaLabel,\n tabSelectsValue = true,\n popupsContainerSelector,\n filterOption,\n menuPosition = \"absolute\",\n \"data-testid\": dataTestId,\n withGroupDivider = false,\n inputValue,\n blurInputOnSelect,\n multiValueDialogClassName\n }: DropdownComponentProps,\n ref: React.ForwardedRef<HTMLElement>\n ) => {\n const controlRef = useRef();\n const { layerRef } = useContext(LayerContext);\n const overrideMenuPortalTarget =\n (insideLayerContext && layerRef?.current) ||\n menuPortalTarget ||\n (popupsContainerSelector && document.querySelector(popupsContainerSelector));\n const overrideDefaultValue = useMemo(() => {\n if (defaultValue) {\n return Array.isArray(defaultValue)\n ? (defaultValue as DropdownOption[]).map(df => ({ ...df, isMandatory: true }))\n : { ...(defaultValue as DropdownOption), isMandatory: true };\n }\n\n return defaultValue;\n }, [defaultValue]);\n\n BaseSelect.prototype.renderLiveRegion = (): null => {\n return null;\n };\n\n // SSR support\n const [WindowedMenuList, setWindowedMenuList] = useState(null);\n useEffect(() => {\n if (isClient()) {\n if (isTestEnv()) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n setWindowedMenuList(() => require(\"react-windowed-select\").WindowedMenuList);\n } else {\n // Dynamically import the specific named export from react-windowed-select for SSR support\n import(\"react-windowed-select\").then(module => {\n setWindowedMenuList(() => module.WindowedMenuList);\n });\n }\n }\n }, []);\n\n const [selected, setSelected] = useState(overrideDefaultValue || []);\n const [focusedOptionId, setFocusedOptionId] = useState(\"\");\n const finalOptionRenderer = optionRenderer || OptionRenderer;\n const finalValueRenderer = valueRenderer || ValueRenderer;\n const isControlled = !!customValue;\n const selectedOptions = customValue ?? selected;\n const selectedOptionsMap = useMemo(() => {\n if (Array.isArray(selectedOptions)) {\n return selectedOptions.reduce((acc, option) => ({ ...acc, [option.value]: option }), {});\n }\n return {};\n }, [selectedOptions]);\n\n const overrideAriaLabel = useMemo(() => {\n return (\n ariaLabel ||\n `${readOnly ? \"Readonly \" : \"\"} ${tooltipContent} ${\n Array.isArray(selectedOptions) ? `Selected: ${selectedOptions.map(o => o.label).join(\", \")}` : \"Select\"\n }`\n );\n }, [ariaLabel, readOnly, selectedOptions, tooltipContent]);\n const value = multi ? selectedOptions : customValue;\n\n const inlineStyles = useMemo(() => {\n // We first want to get the default stylized groups (e.g. \"container\", \"menu\").\n const baseStyles = generateBaseStyles({\n size,\n rtl,\n insideOverflowContainer,\n controlRef,\n insideOverflowWithTransformContainer,\n withGroupDivider,\n searchable,\n allowPlaceholderEllipsis\n });\n\n type BaseStyles = typeof baseStyles;\n\n // Then we want to run the consumer's root-level custom styles with our \"base\" override groups.\n const customStyles = extraStyles(baseStyles);\n\n // Lastly, we create a style groups object that makes sure we run each custom group with our basic overrides.\n const mergedStyles: any = Object.entries(customStyles).reduce((accumulator, [stylesGroup, stylesFn]) => {\n return {\n ...accumulator,\n [stylesGroup]: (defaultStyles: BaseStyles, state: DropdownState) => {\n const providedFn = baseStyles[stylesGroup as keyof BaseStyles];\n const provided = providedFn ? providedFn(defaultStyles, state) : defaultStyles;\n\n return stylesFn(provided, state);\n }\n };\n }, {} as BaseStyles);\n\n if (multi) {\n if (multiline) {\n ADD_AUTO_HEIGHT_COMPONENTS.forEach((component: string) => {\n const original = mergedStyles[component];\n mergedStyles[component] = (provided: BaseStyles, state: DropdownState) => ({\n ...original(provided, state),\n height: \"auto\"\n });\n });\n }\n\n const originalValueContainer = mergedStyles.valueContainer;\n mergedStyles.valueContainer = (provided: BaseStyles, state: DropdownState) => ({\n ...originalValueContainer(provided, state),\n paddingLeft: 6\n });\n }\n\n return mergedStyles;\n }, [\n size,\n rtl,\n insideOverflowContainer,\n insideOverflowWithTransformContainer,\n allowPlaceholderEllipsis,\n extraStyles,\n multi,\n multiline\n ]);\n\n const Menu = useCallback(\n (props: CustomMenuProps) => (\n <MenuComponent\n {...props}\n id={menuId}\n ariaLabel={menuAriaLabel}\n Renderer={menuRenderer}\n dropdownMenuWrapperClassName={dropdownMenuWrapperClassName}\n onScroll={onScroll}\n />\n ),\n [dropdownMenuWrapperClassName, menuRenderer, menuId, menuAriaLabel, onScroll]\n );\n\n const DropdownIndicator = useCallback(\n (props: React.HTMLAttributes<HTMLElement> & { size?: SIZES_VALUES }) => (\n <DropdownIndicatorComponent {...props} size={size} />\n ),\n [size]\n );\n\n const Option = useCallback(\n (props: CustomOptionProps) => (\n <OptionComponent\n setFocusedOptionId={setFocusedOptionId}\n {...props}\n Renderer={finalOptionRenderer}\n optionWrapperClassName={optionWrapperClassName}\n />\n ),\n [finalOptionRenderer, optionWrapperClassName, setFocusedOptionId]\n );\n\n const Input = useCallback(\n (props: InputProps | any) => {\n const { focusedOptionId, menuIsOpen } = props.selectProps;\n const ariaActiveDescendant = focusedOptionId && menuIsOpen ? focusedOptionId : \"\";\n return (\n <components.Input\n {...props}\n aria-activedescendant={ariaActiveDescendant}\n role=\"combobox\"\n aria-expanded={!readOnly && menuIsOpen}\n aria-label={inputAriaLabel}\n aria-controls={menuId}\n readOnly={!searchable ? true : undefined}\n />\n );\n },\n [menuId, readOnly]\n );\n\n const SingleValue = useCallback(\n (props: CustomSingleValueProps) => (\n <SingleValueComponent\n {...props}\n readOnly={readOnly}\n Renderer={finalValueRenderer}\n selectedOption={selectedOptions[0]}\n singleValueWrapperClassName={singleValueWrapperClassName}\n />\n ),\n [finalValueRenderer, readOnly, selectedOptions, singleValueWrapperClassName]\n );\n\n const ClearIndicator = useCallback(\n (props: React.HTMLAttributes<HTMLElement> & { size?: SIZES_VALUES }) => (\n <ClearIndicatorComponent {...props} size={size} />\n ),\n [size]\n );\n\n const onOptionRemove = useMemo(() => {\n return function (optionValue: number, e: React.MouseEvent | React.KeyboardEvent) {\n if (customOnOptionRemove) {\n customOnOptionRemove(selectedOptionsMap[optionValue]);\n }\n const newSelectedOptions = Array.isArray(selectedOptions)\n ? selectedOptions.filter(option => option.value !== optionValue)\n : selectedOptions;\n\n if (customOnChange) {\n customOnChange(newSelectedOptions, e);\n }\n setSelected(newSelectedOptions);\n };\n }, [customOnChange, customOnOptionRemove, selectedOptions, selectedOptionsMap]);\n\n const customProps = useMemo(\n () => ({\n selectedOptions,\n onSelectedDelete: onOptionRemove,\n isMultiline: multiline,\n insideOverflowContainer,\n insideOverflowWithTransformContainer,\n controlRef,\n tooltipContent,\n popupsContainerSelector: insideLayerContext ? layerRef?.current : popupsContainerSelector,\n size,\n dialogClassName: multiValueDialogClassName\n }),\n [\n selectedOptions,\n onOptionRemove,\n multiline,\n insideOverflowContainer,\n insideOverflowWithTransformContainer,\n tooltipContent,\n layerRef,\n popupsContainerSelector,\n insideLayerContext,\n size,\n multiValueDialogClassName\n ]\n );\n const onChange = (option: DropdownOption | DropdownOption[], meta: ActionMeta<DropdownOption>) => {\n if (customOnChange) {\n customOnChange(option, meta);\n }\n\n switch (meta.action) {\n case \"select-option\": {\n const selectedOption = multi ? meta.option : option;\n\n if (onOptionSelect) {\n onOptionSelect(selectedOption);\n }\n\n if (!isControlled) {\n setSelected([...selectedOptions, selectedOption]);\n }\n break;\n }\n\n case \"clear\":\n if (onClear) {\n onClear();\n }\n\n if (!isControlled) {\n if (withMandatoryDefaultOptions) setSelected(overrideDefaultValue);\n else setSelected([]);\n }\n break;\n }\n };\n\n let DropDownComponent: React.ElementType = asyncOptions ? AsyncSelect : Select;\n\n // @ts-expect-error - We need to check if the default export is available\n DropDownComponent = DropDownComponent.default || DropDownComponent;\n\n const asyncAdditions = {\n ...(asyncOptions && {\n loadOptions: asyncOptions,\n cacheOptions,\n ...(defaultOptions && { defaultOptions })\n })\n };\n\n const additions = {\n ...(!asyncOptions && { options }),\n ...(multi && {\n isMulti: true\n })\n };\n\n const closeMenuOnScroll = useCallback(\n (event: React.FocusEvent) => {\n const scrolledElement = event.target;\n if (scrolledElement?.parentElement?.classList.contains(menuStyles.dropdownMenuWrapper)) {\n return false;\n }\n return customCloseMenuOnScroll || insideOverflowContainer || insideOverflowWithTransformContainer;\n },\n [insideOverflowContainer, insideOverflowWithTransformContainer, customCloseMenuOnScroll]\n );\n\n const calculatedPlaceholder = useMemo(\n () =>\n allowPlaceholderEllipsis ? (\n <Text type=\"text2\" color=\"inherit\">\n {placeholder}\n </Text>\n ) : (\n placeholder\n ),\n [allowPlaceholderEllipsis, placeholder]\n );\n\n return (\n <DropDownComponent\n className={cx(styles.dropdown, className)}\n selectProps={customProps}\n components={{\n DropdownIndicator,\n Menu,\n ClearIndicator,\n Input,\n Option,\n Control,\n SingleValue,\n ...(multi && {\n MultiValue: NOOP, // We need it for react-select to behave nice with \"multi\"\n ValueContainer: MultiValueContainer\n }),\n ...(isVirtualized && WindowedMenuList && { MenuList: WindowedMenuList })\n }}\n // When inside scroll we set the menu position by js and we can't follow the drop down location while use scrolling\n closeMenuOnScroll={closeMenuOnScroll}\n size={size}\n noOptionsMessage={noOptionsMessage}\n placeholder={calculatedPlaceholder}\n isDisabled={disabled}\n isClearable={!readOnly && clearable}\n isSearchable={!readOnly}\n readOnly={readOnly}\n aria-readonly={readOnly}\n aria-label={overrideAriaLabel}\n aria-details={tooltipContent}\n aria-haspopup=\"listbox\"\n defaultValue={defaultValue}\n value={value}\n onMenuOpen={onMenuOpen}\n onMenuClose={onMenuClose}\n onFocus={onFocus}\n onBlur={onBlur}\n onMenuScrollToBottom={onMenuScrollToBottom}\n captureMenuScroll={captureMenuScroll}\n onChange={onChange}\n onKeyDown={onKeyDown}\n onInputChange={onInputChange}\n openMenuOnFocus={openMenuOnFocus}\n openMenuOnClick={openMenuOnClick}\n focusedOptionId={focusedOptionId}\n isRtl={rtl}\n styles={inlineStyles}\n theme={customTheme}\n maxMenuHeight={maxMenuHeight}\n menuPortalTarget={overrideMenuPortalTarget}\n menuPlacement={menuPlacement}\n menuPosition={menuPosition}\n menuIsOpen={!readOnly && menuIsOpen}\n tabIndex={tabIndex}\n id={id}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.DROPDOWN, id)}\n data-vibe={ComponentVibeId.DROPDOWN}\n autoFocus={autoFocus}\n closeMenuOnSelect={closeMenuOnSelect}\n ref={ref as React.Ref<any>}\n withMandatoryDefaultOptions={withMandatoryDefaultOptions}\n isOptionSelected={isOptionSelected}\n isLoading={isLoading}\n loadingMessage={loadingMessage}\n tabSelectsValue={tabSelectsValue}\n filterOption={filterOption}\n inputValue={inputValue}\n blurInputOnSelect={blurInputOnSelect}\n {...asyncAdditions}\n {...additions}\n />\n );\n }\n);\n\ninterface DropdownStaticProps {\n sizes: typeof BaseSizes;\n chipColors: typeof DROPDOWN_CHIP_COLORS;\n menuPlacements: typeof DROPDOWN_MENU_PLACEMENT;\n menuPositions: typeof DROPDOWN_MENU_POSITION;\n createFilter: typeof createFilter;\n}\n\nexport default withStaticProps<DropdownComponentProps, DropdownStaticProps>(Dropdown, {\n sizes: BaseSizes,\n chipColors: DROPDOWN_CHIP_COLORS,\n menuPlacements: DROPDOWN_MENU_PLACEMENT,\n menuPositions: DROPDOWN_MENU_POSITION,\n createFilter\n});\n\nfunction isTestEnv() {\n try {\n return (\n typeof require === \"function\" &&\n typeof module !== \"undefined\" &&\n typeof process !== \"undefined\" &&\n process.env.NODE_ENV === \"test\"\n );\n } catch (e) {\n return false;\n }\n}\n"],"names":["withStaticProps","forwardRef","_ref","ref","className","optionWrapperClassName","singleValueWrapperClassName","dropdownMenuWrapperClassName","_ref$placeholder","placeholder","allowPlaceholderEllipsis","_ref$disabled","disabled","_ref$readOnly","readOnly","_ref$onMenuOpen","onMenuOpen","NOOP","_ref$onMenuClose","onMenuClose","_ref$onFocus","onFocus","_ref$onBlur","onBlur","_ref$onScroll","onScroll","_ref$onMenuScrollToBo","onMenuScrollToBottom","_ref$onChange","onChange","customOnChange","_ref$searchable","searchable","_ref$captureMenuScrol","captureMenuScroll","_ref$options","options","defaultValue","customValue","value","noOptionsMessage","openMenuOnFocus","openMenuOnClick","_ref$clearable","clearable","OptionRenderer","optionRenderer","ValueRenderer","valueRenderer","menuRenderer","_ref$menuPlacement","menuPlacement","rtl","_ref$size","size","asyncOptions","cacheOptions","defaultOptions","isVirtualized","menuPortalTarget","_ref$extraStyles","extraStyles","defaultCustomStyles","maxMenuHeight","menuIsOpen","_ref$tabIndex","tabIndex","_ref$id","id","DROPDOWN_ID","_ref$menuId","menuId","DROPDOWN_MENU_ID","_ref$menuAriaLabel","menuAriaLabel","DROPDOWN_MENU_ARIA_LABEL","_ref$inputAriaLabel","inputAriaLabel","DROPDOWN_INPUT_ARIA_LABEL","_ref$autoFocus","autoFocus","_ref$multi","multi","_ref$multiline","multiline","customOnOptionRemove","onOptionRemove","onOptionSelect","onClear","_ref$onInputChange","onInputChange","_ref$closeMenuOnSelec","closeMenuOnSelect","_ref$closeMenuOnScrol","closeMenuOnScroll","customCloseMenuOnScroll","_ref$withMandatoryDef","withMandatoryDefaultOptions","isOptionSelected","_ref$insideOverflowCo","insideOverflowContainer","_ref$insideOverflowWi","insideOverflowWithTransformContainer","_ref$insideLayerConte","insideLayerContext","_ref$tooltipContent","tooltipContent","_ref$onKeyDown","onKeyDown","_ref$isLoading","isLoading","loadingMessage","ariaLabel","_ref$tabSelectsValue","tabSelectsValue","popupsContainerSelector","filterOption","_ref$menuPosition","menuPosition","dataTestId","_ref$withGroupDivider","withGroupDivider","inputValue","blurInputOnSelect","multiValueDialogClassName","controlRef","useRef","layerRef","useContext","LayerContext","overrideMenuPortalTarget","current","document","querySelector","overrideDefaultValue","useMemo","Array","isArray","map","df","Object","assign","isMandatory","BaseSelect","prototype","renderLiveRegion","_useState","useState","_useState2","_slicedToArray","WindowedMenuList","setWindowedMenuList","useEffect","isClient","require","module","process","env","NODE_ENV","e","isTestEnv","import","then","_useState3","_useState4","selected","setSelected","_useState5","_useState6","focusedOptionId","setFocusedOptionId","finalOptionRenderer","finalValueRenderer","isControlled","selectedOptions","selectedOptionsMap","reduce","acc","option","_defineProperty","overrideAriaLabel","concat","o","label","join","inlineStyles","baseStyles","generateBaseStyles","customStyles","mergedStyles","entries","accumulator","_ref2","_ref3","stylesGroup","stylesFn","defaultStyles","state","providedFn","provided","ADD_AUTO_HEIGHT_COMPONENTS","forEach","component","original","height","originalValueContainer","valueContainer","paddingLeft","Menu","useCallback","props","React","createElement","MenuComponent","Renderer","DropdownIndicator","DropdownIndicatorComponent","Option","OptionComponent","Input","_props$selectProps","selectProps","components","role","undefined","SingleValue","SingleValueComponent","selectedOption","ClearIndicator","ClearIndicatorComponent","optionValue","newSelectedOptions","filter","customProps","onSelectedDelete","isMultiline","dialogClassName","DropDownComponent","AsyncSelect","Select","default","asyncAdditions","loadOptions","additions","isMulti","event","scrolledElement","target","parentElement","_a","classList","contains","menuStyles","dropdownMenuWrapper","calculatedPlaceholder","Text","type","color","cx","styles","dropdown","Control","MultiValue","ValueContainer","MultiValueContainer","MenuList","isDisabled","isClearable","isSearchable","meta","action","_toConsumableArray","isRtl","theme","customTheme","getTestId","ComponentDefaultTestId","DROPDOWN","ComponentVibeId","sizes","BaseSizes","chipColors","DROPDOWN_CHIP_COLORS","menuPlacements","DROPDOWN_MENU_PLACEMENT","menuPositions","DROPDOWN_MENU_POSITION","createFilter"],"mappings":"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"}
1
+ {"version":3,"file":"Dropdown.js","sources":["../../../../../src/components/Dropdown/Dropdown.tsx"],"sourcesContent":["import { ComponentDefaultTestId, getTestId } from \"../../tests/test-ids-utils\";\nimport cx from \"classnames\";\nimport { BaseSizes, type SIZES_VALUES } from \"../../constants\";\nimport React, { forwardRef, useCallback, useMemo, useRef, useState, useEffect, useContext } from \"react\";\nimport Select, { type InputProps, components, createFilter, type ActionMeta } from \"react-select\";\nimport AsyncSelect from \"react-select/async\";\nimport BaseSelect from \"react-select/base\";\nimport { noop as NOOP } from \"es-toolkit\";\nimport MenuComponent from \"./components/menu/menu\";\nimport DropdownIndicatorComponent from \"./components/DropdownIndicator/DropdownIndicator\";\nimport OptionComponent from \"./components/option/option\";\nimport SingleValueComponent from \"./components/singleValue/singleValue\";\nimport ClearIndicatorComponent from \"./components/ClearIndicator/ClearIndicator\";\nimport MultiValueContainer from \"./components/MultiValueContainer/MultiValueContainer\";\nimport { isClient } from \"../../utils/ssr-utils\";\nimport {\n ADD_AUTO_HEIGHT_COMPONENTS,\n defaultCustomStyles,\n DROPDOWN_CHIP_COLORS,\n DROPDOWN_ID,\n DROPDOWN_INPUT_ARIA_LABEL,\n DROPDOWN_MENU_ARIA_LABEL,\n DROPDOWN_MENU_ID,\n DROPDOWN_MENU_PLACEMENT,\n DROPDOWN_MENU_POSITION\n} from \"./DropdownConstants\";\nimport generateBaseStyles, { customTheme } from \"./Dropdown.styles\";\nimport Control from \"./components/Control/Control\";\nimport Text from \"../Text/Text\";\nimport menuStyles from \"./components/menu/menu.module.scss\";\nimport styles from \"./Dropdown.module.scss\";\nimport {\n type DropdownOption,\n type DropdownState,\n type CustomMenuProps,\n type CustomOptionProps,\n type CustomSingleValueProps,\n type DropdownComponentProps\n} from \"./Dropdown.types\";\nimport { withStaticProps } from \"../../types\";\nimport { ComponentVibeId } from \"../../tests/constants\";\nimport { LayerContext } from \"@vibe/layer\";\n\nconst Dropdown = forwardRef(\n (\n {\n className,\n optionWrapperClassName,\n singleValueWrapperClassName,\n dropdownMenuWrapperClassName,\n placeholder = \"\",\n allowPlaceholderEllipsis,\n disabled = false,\n readOnly = false,\n onMenuOpen = NOOP,\n onMenuClose = NOOP,\n onFocus = NOOP,\n onBlur = NOOP,\n onScroll = NOOP,\n onMenuScrollToBottom = NOOP,\n onChange: customOnChange = NOOP,\n searchable = true,\n captureMenuScroll = false,\n options = [],\n defaultValue,\n value: customValue,\n noOptionsMessage,\n openMenuOnFocus,\n openMenuOnClick,\n clearable = true,\n OptionRenderer,\n optionRenderer,\n ValueRenderer,\n valueRenderer,\n menuRenderer,\n menuPlacement = \"bottom\",\n rtl,\n size = \"medium\",\n asyncOptions,\n cacheOptions,\n defaultOptions,\n isVirtualized,\n menuPortalTarget,\n extraStyles = defaultCustomStyles,\n maxMenuHeight,\n menuIsOpen,\n tabIndex = \"0\",\n id = DROPDOWN_ID,\n menuId = DROPDOWN_MENU_ID,\n menuAriaLabel = DROPDOWN_MENU_ARIA_LABEL,\n inputAriaLabel = DROPDOWN_INPUT_ARIA_LABEL,\n autoFocus = false,\n multi = false,\n multiline = false,\n onOptionRemove: customOnOptionRemove,\n onOptionSelect,\n onClear,\n onInputChange = NOOP,\n closeMenuOnSelect = !multi,\n closeMenuOnScroll: customCloseMenuOnScroll = false,\n withMandatoryDefaultOptions = false,\n isOptionSelected,\n insideOverflowContainer = false,\n insideOverflowWithTransformContainer = false,\n insideLayerContext = false,\n tooltipContent = \"\",\n onKeyDown = NOOP,\n isLoading = false,\n loadingMessage,\n ariaLabel,\n tabSelectsValue = true,\n popupsContainerSelector,\n filterOption,\n menuPosition = \"absolute\",\n \"data-testid\": dataTestId,\n withGroupDivider = false,\n inputValue,\n blurInputOnSelect,\n multiValueDialogClassName\n }: DropdownComponentProps,\n ref: React.ForwardedRef<HTMLElement>\n ) => {\n const controlRef = useRef();\n const { layerRef } = useContext(LayerContext);\n const overrideMenuPortalTarget =\n (insideLayerContext && layerRef?.current) ||\n menuPortalTarget ||\n (popupsContainerSelector && document.querySelector(popupsContainerSelector));\n const overrideDefaultValue = useMemo(() => {\n if (defaultValue) {\n return Array.isArray(defaultValue)\n ? (defaultValue as DropdownOption[]).map(df => ({ ...df, isMandatory: true }))\n : { ...(defaultValue as DropdownOption), isMandatory: true };\n }\n\n return defaultValue;\n }, [defaultValue]);\n\n BaseSelect.prototype.renderLiveRegion = (): null => {\n return null;\n };\n\n // SSR support\n const [WindowedMenuList, setWindowedMenuList] = useState(null);\n useEffect(() => {\n if (isClient()) {\n if (isTestEnv()) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n setWindowedMenuList(() => require(\"react-windowed-select\").WindowedMenuList);\n } else {\n // Dynamically import the specific named export from react-windowed-select for SSR support\n import(\"react-windowed-select\").then(module => {\n setWindowedMenuList(() => module.WindowedMenuList);\n });\n }\n }\n }, []);\n\n const [selected, setSelected] = useState(overrideDefaultValue || []);\n const [focusedOptionId, setFocusedOptionId] = useState(\"\");\n const finalOptionRenderer = optionRenderer || OptionRenderer;\n const finalValueRenderer = valueRenderer || ValueRenderer;\n const isControlled = !!customValue;\n const selectedOptions = customValue ?? selected;\n const selectedOptionsMap = useMemo(() => {\n if (Array.isArray(selectedOptions)) {\n return selectedOptions.reduce((acc, option) => ({ ...acc, [option.value]: option }), {});\n }\n return {};\n }, [selectedOptions]);\n\n const overrideAriaLabel = useMemo(() => {\n return (\n ariaLabel ||\n `${readOnly ? \"Readonly \" : \"\"} ${tooltipContent} ${\n Array.isArray(selectedOptions) ? `Selected: ${selectedOptions.map(o => o.label).join(\", \")}` : \"Select\"\n }`\n );\n }, [ariaLabel, readOnly, selectedOptions, tooltipContent]);\n const value = multi ? selectedOptions : customValue;\n\n const inlineStyles = useMemo(() => {\n // We first want to get the default stylized groups (e.g. \"container\", \"menu\").\n const baseStyles = generateBaseStyles({\n size,\n rtl,\n insideOverflowContainer,\n controlRef,\n insideOverflowWithTransformContainer,\n withGroupDivider,\n searchable,\n allowPlaceholderEllipsis\n });\n\n type BaseStyles = typeof baseStyles;\n\n // Then we want to run the consumer's root-level custom styles with our \"base\" override groups.\n const customStyles = extraStyles(baseStyles);\n\n // Lastly, we create a style groups object that makes sure we run each custom group with our basic overrides.\n const mergedStyles: any = Object.entries(customStyles).reduce((accumulator, [stylesGroup, stylesFn]) => {\n return {\n ...accumulator,\n [stylesGroup]: (defaultStyles: BaseStyles, state: DropdownState) => {\n const providedFn = baseStyles[stylesGroup as keyof BaseStyles];\n const provided = providedFn ? providedFn(defaultStyles, state) : defaultStyles;\n\n return stylesFn(provided, state);\n }\n };\n }, {} as BaseStyles);\n\n if (multi) {\n if (multiline) {\n ADD_AUTO_HEIGHT_COMPONENTS.forEach((component: string) => {\n const original = mergedStyles[component];\n mergedStyles[component] = (provided: BaseStyles, state: DropdownState) => ({\n ...original(provided, state),\n height: \"auto\"\n });\n });\n }\n\n const originalValueContainer = mergedStyles.valueContainer;\n mergedStyles.valueContainer = (provided: BaseStyles, state: DropdownState) => ({\n ...originalValueContainer(provided, state),\n paddingLeft: 6\n });\n }\n\n return mergedStyles;\n }, [\n size,\n rtl,\n insideOverflowContainer,\n insideOverflowWithTransformContainer,\n allowPlaceholderEllipsis,\n extraStyles,\n multi,\n multiline\n ]);\n\n const Menu = useCallback(\n (props: CustomMenuProps) => (\n <MenuComponent\n {...props}\n id={menuId}\n ariaLabel={menuAriaLabel}\n Renderer={menuRenderer}\n dropdownMenuWrapperClassName={dropdownMenuWrapperClassName}\n onScroll={onScroll}\n />\n ),\n [dropdownMenuWrapperClassName, menuRenderer, menuId, menuAriaLabel, onScroll]\n );\n\n const DropdownIndicator = useCallback(\n (props: React.HTMLAttributes<HTMLElement> & { size?: SIZES_VALUES }) => (\n <DropdownIndicatorComponent {...props} size={size} />\n ),\n [size]\n );\n\n const Option = useCallback(\n (props: CustomOptionProps) => (\n <OptionComponent\n setFocusedOptionId={setFocusedOptionId}\n {...props}\n Renderer={finalOptionRenderer}\n optionWrapperClassName={optionWrapperClassName}\n />\n ),\n [finalOptionRenderer, optionWrapperClassName, setFocusedOptionId]\n );\n\n const Input = useCallback(\n (props: InputProps | any) => {\n const { focusedOptionId, menuIsOpen } = props.selectProps;\n const ariaActiveDescendant = focusedOptionId && menuIsOpen ? focusedOptionId : \"\";\n return (\n <components.Input\n {...props}\n aria-activedescendant={ariaActiveDescendant}\n role=\"combobox\"\n aria-expanded={!readOnly && menuIsOpen}\n aria-label={inputAriaLabel}\n aria-controls={menuId}\n readOnly={!searchable ? true : undefined}\n />\n );\n },\n [menuId, readOnly]\n );\n\n const SingleValue = useCallback(\n (props: CustomSingleValueProps) => (\n <SingleValueComponent\n {...props}\n readOnly={readOnly}\n Renderer={finalValueRenderer}\n selectedOption={selectedOptions[0]}\n singleValueWrapperClassName={singleValueWrapperClassName}\n />\n ),\n [finalValueRenderer, readOnly, selectedOptions, singleValueWrapperClassName]\n );\n\n const ClearIndicator = useCallback(\n (props: React.HTMLAttributes<HTMLElement> & { size?: SIZES_VALUES }) => (\n <ClearIndicatorComponent {...props} size={size} />\n ),\n [size]\n );\n\n const onOptionRemove = useMemo(() => {\n return function (optionValue: number, e: React.MouseEvent | React.KeyboardEvent) {\n if (customOnOptionRemove) {\n customOnOptionRemove(selectedOptionsMap[optionValue]);\n }\n const newSelectedOptions = Array.isArray(selectedOptions)\n ? selectedOptions.filter(option => option.value !== optionValue)\n : selectedOptions;\n\n if (customOnChange) {\n customOnChange(newSelectedOptions, e);\n }\n setSelected(newSelectedOptions);\n };\n }, [customOnChange, customOnOptionRemove, selectedOptions, selectedOptionsMap]);\n\n const customProps = useMemo(\n () => ({\n selectedOptions,\n onSelectedDelete: onOptionRemove,\n isMultiline: multiline,\n insideOverflowContainer,\n insideOverflowWithTransformContainer,\n controlRef,\n tooltipContent,\n popupsContainerSelector: insideLayerContext ? layerRef?.current : popupsContainerSelector,\n size,\n dialogClassName: multiValueDialogClassName\n }),\n [\n selectedOptions,\n onOptionRemove,\n multiline,\n insideOverflowContainer,\n insideOverflowWithTransformContainer,\n tooltipContent,\n layerRef,\n popupsContainerSelector,\n insideLayerContext,\n size,\n multiValueDialogClassName\n ]\n );\n const onChange = (option: DropdownOption | DropdownOption[], meta: ActionMeta<DropdownOption>) => {\n if (customOnChange) {\n customOnChange(option, meta);\n }\n\n switch (meta.action) {\n case \"select-option\": {\n const selectedOption = multi ? meta.option : option;\n\n if (onOptionSelect) {\n onOptionSelect(selectedOption);\n }\n\n if (!isControlled) {\n setSelected([...selectedOptions, selectedOption]);\n }\n break;\n }\n\n case \"clear\":\n if (onClear) {\n onClear();\n }\n\n if (!isControlled) {\n if (withMandatoryDefaultOptions) setSelected(overrideDefaultValue);\n else setSelected([]);\n }\n break;\n }\n };\n\n let DropDownComponent: React.ElementType = asyncOptions ? AsyncSelect : Select;\n\n // @ts-expect-error - We need to check if the default export is available\n DropDownComponent = DropDownComponent.default || DropDownComponent;\n\n const asyncAdditions = {\n ...(asyncOptions && {\n loadOptions: asyncOptions,\n cacheOptions,\n ...(defaultOptions && { defaultOptions })\n })\n };\n\n const additions = {\n ...(!asyncOptions && { options }),\n ...(multi && {\n isMulti: true\n })\n };\n\n const closeMenuOnScroll = useCallback(\n (event: React.FocusEvent) => {\n const scrolledElement = event.target;\n if (scrolledElement?.parentElement?.classList.contains(menuStyles.dropdownMenuWrapper)) {\n return false;\n }\n return customCloseMenuOnScroll || insideOverflowContainer || insideOverflowWithTransformContainer;\n },\n [insideOverflowContainer, insideOverflowWithTransformContainer, customCloseMenuOnScroll]\n );\n\n const calculatedPlaceholder = useMemo(\n () =>\n allowPlaceholderEllipsis ? (\n <Text type=\"text2\" color=\"inherit\">\n {placeholder}\n </Text>\n ) : (\n placeholder\n ),\n [allowPlaceholderEllipsis, placeholder]\n );\n\n return (\n <DropDownComponent\n className={cx(styles.dropdown, className)}\n selectProps={customProps}\n components={{\n DropdownIndicator,\n Menu,\n ClearIndicator,\n Input,\n Option,\n Control,\n SingleValue,\n ...(multi && {\n MultiValue: NOOP, // We need it for react-select to behave nice with \"multi\"\n ValueContainer: MultiValueContainer\n }),\n ...(isVirtualized && WindowedMenuList && { MenuList: WindowedMenuList })\n }}\n // When inside scroll we set the menu position by js and we can't follow the drop down location while use scrolling\n closeMenuOnScroll={closeMenuOnScroll}\n size={size}\n noOptionsMessage={noOptionsMessage}\n placeholder={calculatedPlaceholder}\n isDisabled={disabled}\n isClearable={!readOnly && clearable}\n isSearchable={!readOnly}\n readOnly={readOnly}\n aria-readonly={readOnly}\n aria-label={overrideAriaLabel}\n aria-details={tooltipContent}\n aria-haspopup=\"listbox\"\n defaultValue={defaultValue}\n value={value}\n onMenuOpen={onMenuOpen}\n onMenuClose={onMenuClose}\n onFocus={onFocus}\n onBlur={onBlur}\n onMenuScrollToBottom={onMenuScrollToBottom}\n captureMenuScroll={captureMenuScroll}\n onChange={onChange}\n onKeyDown={onKeyDown}\n onInputChange={onInputChange}\n openMenuOnFocus={openMenuOnFocus}\n openMenuOnClick={openMenuOnClick}\n focusedOptionId={focusedOptionId}\n isRtl={rtl}\n styles={inlineStyles}\n theme={customTheme}\n maxMenuHeight={maxMenuHeight}\n menuPortalTarget={overrideMenuPortalTarget}\n menuPlacement={menuPlacement}\n menuPosition={menuPosition}\n menuIsOpen={!readOnly && menuIsOpen}\n tabIndex={tabIndex}\n id={id}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.DROPDOWN, id)}\n data-vibe={ComponentVibeId.DROPDOWN}\n autoFocus={autoFocus}\n closeMenuOnSelect={closeMenuOnSelect}\n ref={ref as React.Ref<any>}\n withMandatoryDefaultOptions={withMandatoryDefaultOptions}\n isOptionSelected={isOptionSelected}\n isLoading={isLoading}\n loadingMessage={loadingMessage}\n tabSelectsValue={tabSelectsValue}\n filterOption={filterOption}\n inputValue={inputValue}\n blurInputOnSelect={blurInputOnSelect}\n {...asyncAdditions}\n {...additions}\n />\n );\n }\n);\n\ninterface DropdownStaticProps {\n sizes: typeof BaseSizes;\n chipColors: typeof DROPDOWN_CHIP_COLORS;\n menuPlacements: typeof DROPDOWN_MENU_PLACEMENT;\n menuPositions: typeof DROPDOWN_MENU_POSITION;\n createFilter: typeof createFilter;\n}\n\nexport default withStaticProps<DropdownComponentProps, DropdownStaticProps>(Dropdown, {\n sizes: BaseSizes,\n chipColors: DROPDOWN_CHIP_COLORS,\n menuPlacements: DROPDOWN_MENU_PLACEMENT,\n menuPositions: DROPDOWN_MENU_POSITION,\n createFilter\n});\n\nfunction isTestEnv() {\n try {\n return (\n typeof require === \"function\" &&\n typeof module !== \"undefined\" &&\n typeof process !== \"undefined\" &&\n process.env.NODE_ENV === \"test\"\n );\n } catch (e) {\n return false;\n }\n}\n"],"names":["withStaticProps","forwardRef","_ref","ref","className","optionWrapperClassName","singleValueWrapperClassName","dropdownMenuWrapperClassName","_ref$placeholder","placeholder","allowPlaceholderEllipsis","_ref$disabled","disabled","_ref$readOnly","readOnly","_ref$onMenuOpen","onMenuOpen","NOOP","_ref$onMenuClose","onMenuClose","_ref$onFocus","onFocus","_ref$onBlur","onBlur","_ref$onScroll","onScroll","_ref$onMenuScrollToBo","onMenuScrollToBottom","_ref$onChange","onChange","customOnChange","_ref$searchable","searchable","_ref$captureMenuScrol","captureMenuScroll","_ref$options","options","defaultValue","customValue","value","noOptionsMessage","openMenuOnFocus","openMenuOnClick","_ref$clearable","clearable","OptionRenderer","optionRenderer","ValueRenderer","valueRenderer","menuRenderer","_ref$menuPlacement","menuPlacement","rtl","_ref$size","size","asyncOptions","cacheOptions","defaultOptions","isVirtualized","menuPortalTarget","_ref$extraStyles","extraStyles","defaultCustomStyles","maxMenuHeight","menuIsOpen","_ref$tabIndex","tabIndex","_ref$id","id","DROPDOWN_ID","_ref$menuId","menuId","DROPDOWN_MENU_ID","_ref$menuAriaLabel","menuAriaLabel","DROPDOWN_MENU_ARIA_LABEL","_ref$inputAriaLabel","inputAriaLabel","DROPDOWN_INPUT_ARIA_LABEL","_ref$autoFocus","autoFocus","_ref$multi","multi","_ref$multiline","multiline","customOnOptionRemove","onOptionRemove","onOptionSelect","onClear","_ref$onInputChange","onInputChange","_ref$closeMenuOnSelec","closeMenuOnSelect","_ref$closeMenuOnScrol","closeMenuOnScroll","customCloseMenuOnScroll","_ref$withMandatoryDef","withMandatoryDefaultOptions","isOptionSelected","_ref$insideOverflowCo","insideOverflowContainer","_ref$insideOverflowWi","insideOverflowWithTransformContainer","_ref$insideLayerConte","insideLayerContext","_ref$tooltipContent","tooltipContent","_ref$onKeyDown","onKeyDown","_ref$isLoading","isLoading","loadingMessage","ariaLabel","_ref$tabSelectsValue","tabSelectsValue","popupsContainerSelector","filterOption","_ref$menuPosition","menuPosition","dataTestId","_ref$withGroupDivider","withGroupDivider","inputValue","blurInputOnSelect","multiValueDialogClassName","controlRef","useRef","layerRef","useContext","LayerContext","overrideMenuPortalTarget","current","document","querySelector","overrideDefaultValue","useMemo","Array","isArray","map","df","Object","assign","isMandatory","BaseSelect","prototype","renderLiveRegion","_useState","useState","_useState2","_slicedToArray","WindowedMenuList","setWindowedMenuList","useEffect","isClient","require","module","process","env","NODE_ENV","e","isTestEnv","import","then","_useState3","_useState4","selected","setSelected","_useState5","_useState6","focusedOptionId","setFocusedOptionId","finalOptionRenderer","finalValueRenderer","isControlled","selectedOptions","selectedOptionsMap","reduce","acc","option","_defineProperty","overrideAriaLabel","concat","o","label","join","inlineStyles","baseStyles","generateBaseStyles","customStyles","mergedStyles","entries","accumulator","_ref2","_ref3","stylesGroup","stylesFn","defaultStyles","state","providedFn","provided","ADD_AUTO_HEIGHT_COMPONENTS","forEach","component","original","height","originalValueContainer","valueContainer","paddingLeft","Menu","useCallback","props","React","createElement","MenuComponent","Renderer","DropdownIndicator","DropdownIndicatorComponent","Option","OptionComponent","Input","_props$selectProps","selectProps","components","role","undefined","SingleValue","SingleValueComponent","selectedOption","ClearIndicator","ClearIndicatorComponent","optionValue","newSelectedOptions","filter","customProps","onSelectedDelete","isMultiline","dialogClassName","DropDownComponent","AsyncSelect","Select","default","asyncAdditions","loadOptions","additions","isMulti","event","scrolledElement","target","parentElement","_a","classList","contains","menuStyles","dropdownMenuWrapper","calculatedPlaceholder","Text","type","color","cx","styles","dropdown","Control","MultiValue","ValueContainer","MultiValueContainer","MenuList","isDisabled","isClearable","isSearchable","meta","action","_toConsumableArray","isRtl","theme","customTheme","getTestId","ComponentDefaultTestId","DROPDOWN","ComponentVibeId","sizes","BaseSizes","chipColors","DROPDOWN_CHIP_COLORS","menuPlacements","DROPDOWN_MENU_PLACEMENT","menuPositions","DROPDOWN_MENU_POSITION","createFilter"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{slicedToArray as e,defineProperty as t}from"../../../_virtual/_rollupPluginBabelHelpers.js";import o,{forwardRef as n,useRef as l,useState as r,useEffect as a}from"react";import i from"classnames";import s from"../../hooks/useMergeRef.js";import u from"./EditableTypography.module.scss.js";import{keyCodes as c}from"../../constants/keyCodes.js";import"../../constants/sizes.js";import{useKeyboardButtonPressedFunc as p}from"../../hooks/useKeyboardButtonPressedFunc.js";import d from"../../hooks/usePrevious/index.js";import f from"../../hooks/ssr/useIsomorphicLayoutEffect.js";var m=n((function(n,m){var v=n.id,h=n.className,y=n["data-testid"],g=n.value,E=n.onChange,b=n.onClick,P=n.readOnly,C=void 0!==P&&P,x=n.ariaLabel,k=void 0===x?"":x,j=n.placeholder,w=n.clearable,N=n.typographyClassName,D=n.component,B=n.isEditMode,K=n.autoSelectTextOnEditMode,T=n.onEditModeChange,M=n.tooltipProps,R=n.type,S=n.weight,A=n.multiline,H=void 0!==A&&A,I=l(null),L=s(m,I),O=r(B||!1),_=e(O,2),z=_[0],F=_[1],q=r(g),G=e(q,2),J=G[0],Q=G[1],U=d(g),V=l(null),W=l(null);function X(e){C||z||(e.preventDefault(),Y(!0))}function Y(e){null==T||T(e),F(e)}function Z(){(Y(!1),g!==J)&&(J||w&&j?(Q(J),null==E||E(J)):Q(g))}function $(){Z()}function ee(e){if(!e.nativeEvent.isComposing){if(e.key===c.ENTER){if(H&&e.shiftKey)return;e.preventDefault(),e.stopPropagation(),Z()}e.key===c.ESCAPE&&(e.preventDefault(),e.stopPropagation(),Y(!1),Q(g))}}function te(e){Q(e.target.value)}a((function(){z||g===U||g===J||Q(g)}),[U,z,g,J]),a((function(){F(B)}),[B]);var oe=p(X);return a((function(){var e,t;z&&(!function(){var e,t;if(null===(t=null===(e=V.current)||void 0===e?void 0:e.focus)||void 0===t||t.call(e),V.current){var o=V.current,n=o.value.length;o.setSelectionRange(n,n)}}(),K&&(null===(t=null===(e=V.current)||void 0===e?void 0:e.select)||void 0===t||t.call(e)))}),[K,z]),f((function(){var e;if(W.current){var t=W.current.getBoundingClientRect();if(null===(e=null==V?void 0:V.current)||void 0===e||e.style.setProperty("--input-width","".concat(t.width,"px")),H){var o=null==V?void 0:V.current;null==o||o.style.setProperty("--input-height","auto"),null==o||o.style.setProperty("--input-height","".concat(o.scrollHeight+2,"px"))}}}),[J,z]),o.createElement("div",{ref:L,id:v,"aria-label":k,"data-testid":y,className:i(u.editableTypography,h),role:z?null:"button",onClick:function(e){null==b||b(e),X(e)},onKeyDown:oe},z&&(H?o.createElement("textarea",{ref:V,className:i(u.textarea,N),value:J,onChange:te,onKeyDown:ee,onBlur:$,"aria-label":k,placeholder:j,role:"textbox",rows:1}):o.createElement("input",{ref:V,className:i(u.input,N),value:J,onChange:te,onKeyDown:ee,onBlur:$,"aria-label":k,placeholder:j,role:"input"})),o.createElement(D,{ref:W,"aria-hidden":z,className:i(u.typography,N,t(t(t(t({},u.hidden,z),u.disabled,C),u.placeholder,!J&&j),u.multiline,!z&&H)),tabIndex:0,tooltipProps:M,weight:S,type:R,ellipsis:!H},J||j))}));export{m as default};
1
+ import{slicedToArray as e,defineProperty as t}from"../../../_virtual/_rollupPluginBabelHelpers.js";import o,{forwardRef as n,useRef as l,useState as r,useEffect as a}from"react";import i from"classnames";import s from"../../hooks/useMergeRef.js";import u from"./EditableTypography.module.scss.js";import{keyCodes as c}from"../../constants/keyCodes.js";import"../../constants/sizes.js";import{useKeyboardButtonPressedFunc as p}from"../../hooks/useKeyboardButtonPressedFunc.js";import d from"../../hooks/usePrevious/index.js";import f from"../../hooks/ssr/useIsomorphicLayoutEffect.js";var m=n((function(n,m){var v=n.id,h=n.className,y=n["data-testid"],g=n.value,E=n.onClick,b=n.onChange,P=n.readOnly,C=void 0!==P&&P,x=n.ariaLabel,k=void 0===x?"":x,j=n.placeholder,w=n.clearable,N=n.typographyClassName,D=n.component,B=n.isEditMode,K=n.autoSelectTextOnEditMode,T=n.onEditModeChange,M=n.tooltipProps,R=n.type,S=n.weight,A=n.multiline,H=void 0!==A&&A,I=l(null),L=s(m,I),O=r(B||!1),_=e(O,2),z=_[0],F=_[1],q=r(g),G=e(q,2),J=G[0],Q=G[1],U=d(g),V=l(null),W=l(null);function X(e){C||z||(e.preventDefault(),Y(!0))}function Y(e){null==T||T(e),F(e)}function Z(){(Y(!1),g!==J)&&(J||w&&j?(Q(J),null==b||b(J)):Q(g))}function $(){Z()}function ee(e){if(!e.nativeEvent.isComposing){if(e.key===c.ENTER){if(H&&e.shiftKey)return;e.preventDefault(),e.stopPropagation(),Z()}e.key===c.ESCAPE&&(e.preventDefault(),e.stopPropagation(),Y(!1),Q(g))}}function te(e){Q(e.target.value)}a((function(){z||g===U||g===J||Q(g)}),[U,z,g,J]),a((function(){F(B)}),[B]);var oe=p(X);return a((function(){var e,t;z&&(!function(){var e,t;if(null===(t=null===(e=V.current)||void 0===e?void 0:e.focus)||void 0===t||t.call(e),V.current){var o=V.current,n=o.value.length;o.setSelectionRange(n,n)}}(),K&&(null===(t=null===(e=V.current)||void 0===e?void 0:e.select)||void 0===t||t.call(e)))}),[K,z]),f((function(){var e;if(W.current){var t=W.current.getBoundingClientRect();if(null===(e=null==V?void 0:V.current)||void 0===e||e.style.setProperty("--input-width","".concat(t.width,"px")),H){var o=null==V?void 0:V.current;null==o||o.style.setProperty("--input-height","auto"),null==o||o.style.setProperty("--input-height","".concat(o.scrollHeight+2,"px"))}}}),[J,z]),o.createElement("div",{ref:L,id:v,"aria-label":k,"data-testid":y,className:i(u.editableTypography,h),role:z?null:"button",onClick:function(e){null==E||E(e),X(e)},onKeyDown:oe},z&&(H?o.createElement("textarea",{ref:V,className:i(u.textarea,N),value:J,onChange:te,onKeyDown:ee,onBlur:$,"aria-label":k,placeholder:j,role:"textbox",rows:1}):o.createElement("input",{ref:V,className:i(u.input,N),value:J,onChange:te,onKeyDown:ee,onBlur:$,"aria-label":k,placeholder:j,role:"input"})),o.createElement(D,{ref:W,"aria-hidden":z,className:i(u.typography,N,t(t(t(t({},u.hidden,z),u.disabled,C),u.placeholder,!J&&j),u.multiline,!z&&H)),tabIndex:0,tooltipProps:M,weight:S,type:R,ellipsis:!H},J||j))}));export{m as default};
2
2
  //# sourceMappingURL=EditableTypography.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditableTypography.js","sources":["../../../../../src/components/EditableTypography/EditableTypography.tsx"],"sourcesContent":["import React, { type ElementType, forwardRef, useEffect, useRef, useState } from \"react\";\nimport cx from \"classnames\";\nimport useMergeRef from \"../../hooks/useMergeRef\";\nimport { type VibeComponentProps } from \"../../types\";\nimport styles from \"./EditableTypography.module.scss\";\nimport { keyCodes } from \"../../constants\";\nimport { useKeyboardButtonPressedFunc } from \"../../hooks/useKeyboardButtonPressedFunc\";\nimport { type TooltipProps } from \"../Tooltip\";\nimport usePrevious from \"../../hooks/usePrevious\";\nimport { type TextType, type TextWeight } from \"../Text\";\nimport { type HeadingType, type HeadingWeight } from \"../Heading\";\nimport useIsomorphicLayoutEffect from \"../../hooks/ssr/useIsomorphicLayoutEffect\";\n\nexport interface EditableTypographyImplementationProps {\n /**\n * The current value of the text.\n */\n value: string;\n /**\n * Callback fired when the value changes.\n */\n onChange?: (value: string) => void;\n /**\n * Callback fired when the component is clicked.\n */\n onClick?: (event: React.KeyboardEvent | React.MouseEvent) => void;\n /**\n * If true, the text is read-only and cannot be edited.\n */\n readOnly?: boolean;\n /**\n * Placeholder text displayed when the value is empty.\n */\n placeholder?: string;\n /**\n * The label of the component for accessibility.\n */\n ariaLabel?: string;\n /**\n * Controls whether the component is in edit mode.\n */\n isEditMode?: boolean;\n /**\n * If true, automatically selects all text when entering edit mode.\n */\n autoSelectTextOnEditMode?: boolean;\n /**\n * Callback fired when the edit mode changes.\n */\n onEditModeChange?: (isEditMode: boolean) => void;\n /**\n * Props to customize the tooltip.\n */\n tooltipProps?: Partial<TooltipProps>;\n}\n\nexport interface EditableTypographyProps extends VibeComponentProps, EditableTypographyImplementationProps {\n /**\n * The typography component used in view mode.\n */\n component: ElementType;\n /**\n * Class name applied to the typography component.\n */\n typographyClassName: string;\n /**\n * If true, shows the placeholder when empty.\n */\n clearable?: boolean;\n /**\n * The text or heading type.\n */\n type?: TextType | HeadingType;\n /**\n * The text or heading weight.\n */\n weight?: TextWeight | HeadingWeight;\n /**\n * If true, enables multi-line editing.\n */\n multiline?: boolean;\n}\n\nconst PADDING_OFFSET = 2;\n\nconst EditableTypography = forwardRef(\n (\n {\n id,\n className,\n \"data-testid\": dataTestId,\n value,\n onChange,\n onClick,\n readOnly = false,\n ariaLabel = \"\",\n placeholder,\n clearable,\n typographyClassName,\n component: TypographyComponent,\n isEditMode,\n autoSelectTextOnEditMode,\n onEditModeChange,\n tooltipProps,\n type,\n weight,\n multiline = false\n }: EditableTypographyProps,\n ref: React.ForwardedRef<HTMLElement>\n ) => {\n const componentRef = useRef(null);\n const mergedRef = useMergeRef(ref, componentRef);\n\n const [isEditing, setIsEditing] = useState(isEditMode || false);\n const [inputValue, setInputValue] = useState(value);\n\n const prevValue = usePrevious(value);\n\n const inputRef = useRef(null);\n const typographyRef = useRef(null);\n\n useEffect(() => {\n if (!isEditing && value !== prevValue && value !== inputValue) {\n setInputValue(value);\n }\n }, [prevValue, isEditing, value, inputValue]);\n\n useEffect(() => {\n setIsEditing(isEditMode);\n }, [isEditMode]);\n\n function onTypographyClick(event: React.KeyboardEvent | React.MouseEvent) {\n onClick?.(event);\n toggleEditMode(event);\n }\n\n function toggleEditMode(event: React.KeyboardEvent | React.MouseEvent) {\n if (readOnly || isEditing) {\n return;\n }\n event.preventDefault();\n handleEditModeChange(true);\n }\n\n function handleEditModeChange(value: boolean) {\n onEditModeChange?.(value);\n setIsEditing(value);\n }\n\n function handleInputValueChange() {\n handleEditModeChange(false);\n\n if (value === inputValue) {\n return;\n }\n\n const shouldShowPlaceholderWhenEmpty = clearable && placeholder;\n if (!inputValue && !shouldShowPlaceholderWhenEmpty) {\n setInputValue(value);\n return;\n }\n setInputValue(inputValue);\n onChange?.(inputValue);\n }\n\n function handleBlur() {\n handleInputValueChange();\n }\n\n function handleKeyDown(event: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>) {\n if (event.nativeEvent.isComposing) {\n return;\n }\n\n if (event.key === keyCodes.ENTER) {\n if (multiline && event.shiftKey) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n handleInputValueChange();\n }\n if (event.key === keyCodes.ESCAPE) {\n event.preventDefault();\n event.stopPropagation();\n handleEditModeChange(false);\n setInputValue(value);\n }\n }\n\n function handleChange(event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) {\n setInputValue(event.target.value);\n }\n\n const toggleKeyboardEditMode = useKeyboardButtonPressedFunc(toggleEditMode);\n\n function focus() {\n inputRef.current?.focus?.();\n\n if (inputRef.current) {\n const inputElement = inputRef.current as HTMLInputElement | HTMLTextAreaElement;\n const textLength = inputElement.value.length;\n inputElement.setSelectionRange(textLength, textLength);\n }\n }\n\n function selectAllInputText() {\n inputRef.current?.select?.();\n }\n\n useEffect(() => {\n if (!isEditing) return;\n focus();\n if (autoSelectTextOnEditMode) {\n selectAllInputText();\n }\n }, [autoSelectTextOnEditMode, isEditing]);\n\n useIsomorphicLayoutEffect(() => {\n if (!typographyRef.current) {\n return;\n }\n\n const { width } = typographyRef.current.getBoundingClientRect();\n inputRef?.current?.style.setProperty(\"--input-width\", `${width}px`);\n\n if (multiline) {\n const textareaElement = inputRef?.current as HTMLTextAreaElement;\n textareaElement?.style.setProperty(\"--input-height\", \"auto\");\n textareaElement?.style.setProperty(\"--input-height\", `${textareaElement.scrollHeight + PADDING_OFFSET}px`);\n }\n }, [inputValue, isEditing]);\n\n return (\n <div\n ref={mergedRef}\n id={id}\n aria-label={ariaLabel}\n data-testid={dataTestId}\n className={cx(styles.editableTypography, className)}\n role={isEditing ? null : \"button\"}\n onClick={onTypographyClick}\n onKeyDown={toggleKeyboardEditMode}\n >\n {isEditing &&\n (multiline ? (\n <textarea\n ref={inputRef}\n className={cx(styles.textarea, typographyClassName)}\n value={inputValue}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n aria-label={ariaLabel}\n placeholder={placeholder}\n role=\"textbox\"\n rows={1}\n />\n ) : (\n <input\n ref={inputRef}\n className={cx(styles.input, typographyClassName)}\n value={inputValue}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n aria-label={ariaLabel}\n placeholder={placeholder}\n role=\"input\"\n />\n ))}\n <TypographyComponent\n ref={typographyRef}\n aria-hidden={isEditing}\n className={cx(styles.typography, typographyClassName, {\n [styles.hidden]: isEditing,\n [styles.disabled]: readOnly,\n [styles.placeholder]: !inputValue && placeholder,\n [styles.multiline]: !isEditing && multiline\n })}\n tabIndex={0}\n tooltipProps={tooltipProps}\n weight={weight}\n type={type}\n ellipsis={!multiline}\n >\n {inputValue || placeholder}\n </TypographyComponent>\n </div>\n );\n }\n);\n\nexport default EditableTypography;\n"],"names":["EditableTypography","forwardRef","_ref","ref","id","className","dataTestId","value","onChange","onClick","_ref$readOnly","readOnly","_ref$ariaLabel","ariaLabel","placeholder","clearable","typographyClassName","TypographyComponent","component","isEditMode","autoSelectTextOnEditMode","onEditModeChange","tooltipProps","type","weight","_ref$multiline","multiline","componentRef","useRef","mergedRef","useMergeRef","_useState","useState","_useState2","_slicedToArray","isEditing","setIsEditing","_useState3","_useState4","inputValue","setInputValue","prevValue","usePrevious","inputRef","typographyRef","toggleEditMode","event","preventDefault","handleEditModeChange","handleInputValueChange","handleBlur","handleKeyDown","nativeEvent","isComposing","key","keyCodes","ENTER","shiftKey","stopPropagation","ESCAPE","handleChange","target","useEffect","toggleKeyboardEditMode","useKeyboardButtonPressedFunc","_b","current","_a","focus","inputElement","textLength","length","setSelectionRange","select","useIsomorphicLayoutEffect","_typographyRef$curren","getBoundingClientRect","style","setProperty","concat","width","textareaElement","scrollHeight","React","createElement","cx","styles","editableTypography","role","onKeyDown","textarea","onBlur","rows","input","typography","_defineProperty","hidden","disabled","tabIndex","ellipsis"],"mappings":"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"}
1
+ {"version":3,"file":"EditableTypography.js","sources":["../../../../../src/components/EditableTypography/EditableTypography.tsx"],"sourcesContent":["import React, { type ElementType, forwardRef, useEffect, useRef, useState } from \"react\";\nimport cx from \"classnames\";\nimport useMergeRef from \"../../hooks/useMergeRef\";\nimport { type VibeComponentProps } from \"../../types\";\nimport styles from \"./EditableTypography.module.scss\";\nimport { keyCodes } from \"../../constants\";\nimport { useKeyboardButtonPressedFunc } from \"../../hooks/useKeyboardButtonPressedFunc\";\nimport { type TooltipProps } from \"../Tooltip\";\nimport usePrevious from \"../../hooks/usePrevious\";\nimport { type TextType, type TextWeight } from \"../Text\";\nimport { type HeadingType, type HeadingWeight } from \"../Heading\";\nimport useIsomorphicLayoutEffect from \"../../hooks/ssr/useIsomorphicLayoutEffect\";\n\nexport interface EditableTypographyImplementationProps {\n /**\n * The current value of the text.\n */\n value: string;\n /**\n * Callback fired when the value changes.\n */\n onChange?: (value: string) => void;\n /**\n * Callback fired when the component is clicked.\n */\n onClick?: (event: React.KeyboardEvent | React.MouseEvent) => void;\n /**\n * If true, the text is read-only and cannot be edited.\n */\n readOnly?: boolean;\n /**\n * Placeholder text displayed when the value is empty.\n */\n placeholder?: string;\n /**\n * The label of the component for accessibility.\n */\n ariaLabel?: string;\n /**\n * Controls whether the component is in edit mode.\n */\n isEditMode?: boolean;\n /**\n * If true, automatically selects all text when entering edit mode.\n */\n autoSelectTextOnEditMode?: boolean;\n /**\n * Callback fired when the edit mode changes.\n */\n onEditModeChange?: (isEditMode: boolean) => void;\n /**\n * Props to customize the tooltip.\n */\n tooltipProps?: Partial<TooltipProps>;\n}\n\nexport interface EditableTypographyProps extends VibeComponentProps, EditableTypographyImplementationProps {\n /**\n * The typography component used in view mode.\n */\n component: ElementType;\n /**\n * Class name applied to the typography component.\n */\n typographyClassName: string;\n /**\n * If true, shows the placeholder when empty.\n */\n clearable?: boolean;\n /**\n * The text or heading type.\n */\n type?: TextType | HeadingType;\n /**\n * The text or heading weight.\n */\n weight?: TextWeight | HeadingWeight;\n /**\n * If true, enables multi-line editing.\n */\n multiline?: boolean;\n}\n\nconst PADDING_OFFSET = 2;\n\nconst EditableTypography = forwardRef(\n (\n {\n id,\n className,\n \"data-testid\": dataTestId,\n value,\n onClick,\n onChange,\n readOnly = false,\n ariaLabel = \"\",\n placeholder,\n clearable,\n typographyClassName,\n component: TypographyComponent,\n isEditMode,\n autoSelectTextOnEditMode,\n onEditModeChange,\n tooltipProps,\n type,\n weight,\n multiline = false\n }: EditableTypographyProps,\n ref: React.ForwardedRef<HTMLElement>\n ) => {\n const componentRef = useRef(null);\n const mergedRef = useMergeRef(ref, componentRef);\n\n const [isEditing, setIsEditing] = useState(isEditMode || false);\n const [inputValue, setInputValue] = useState(value);\n\n const prevValue = usePrevious(value);\n\n const inputRef = useRef(null);\n const typographyRef = useRef(null);\n\n useEffect(() => {\n if (!isEditing && value !== prevValue && value !== inputValue) {\n setInputValue(value);\n }\n }, [prevValue, isEditing, value, inputValue]);\n\n useEffect(() => {\n setIsEditing(isEditMode);\n }, [isEditMode]);\n\n function onTypographyClick(event: React.KeyboardEvent | React.MouseEvent) {\n onClick?.(event);\n toggleEditMode(event);\n }\n\n function toggleEditMode(event: React.KeyboardEvent | React.MouseEvent) {\n if (readOnly || isEditing) {\n return;\n }\n event.preventDefault();\n handleEditModeChange(true);\n }\n\n function handleEditModeChange(value: boolean) {\n onEditModeChange?.(value);\n setIsEditing(value);\n }\n\n function handleInputValueChange() {\n handleEditModeChange(false);\n\n if (value === inputValue) {\n return;\n }\n\n const shouldShowPlaceholderWhenEmpty = clearable && placeholder;\n if (!inputValue && !shouldShowPlaceholderWhenEmpty) {\n setInputValue(value);\n return;\n }\n setInputValue(inputValue);\n onChange?.(inputValue);\n }\n\n function handleBlur() {\n handleInputValueChange();\n }\n\n function handleKeyDown(event: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>) {\n if (event.nativeEvent.isComposing) {\n return;\n }\n\n if (event.key === keyCodes.ENTER) {\n if (multiline && event.shiftKey) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n handleInputValueChange();\n }\n if (event.key === keyCodes.ESCAPE) {\n event.preventDefault();\n event.stopPropagation();\n handleEditModeChange(false);\n setInputValue(value);\n }\n }\n\n function handleChange(event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) {\n setInputValue(event.target.value);\n }\n\n const toggleKeyboardEditMode = useKeyboardButtonPressedFunc(toggleEditMode);\n\n function focus() {\n inputRef.current?.focus?.();\n\n if (inputRef.current) {\n const inputElement = inputRef.current as HTMLInputElement | HTMLTextAreaElement;\n const textLength = inputElement.value.length;\n inputElement.setSelectionRange(textLength, textLength);\n }\n }\n\n function selectAllInputText() {\n inputRef.current?.select?.();\n }\n\n useEffect(() => {\n if (!isEditing) return;\n focus();\n if (autoSelectTextOnEditMode) {\n selectAllInputText();\n }\n }, [autoSelectTextOnEditMode, isEditing]);\n\n useIsomorphicLayoutEffect(() => {\n if (!typographyRef.current) {\n return;\n }\n\n const { width } = typographyRef.current.getBoundingClientRect();\n inputRef?.current?.style.setProperty(\"--input-width\", `${width}px`);\n\n if (multiline) {\n const textareaElement = inputRef?.current as HTMLTextAreaElement;\n textareaElement?.style.setProperty(\"--input-height\", \"auto\");\n textareaElement?.style.setProperty(\"--input-height\", `${textareaElement.scrollHeight + PADDING_OFFSET}px`);\n }\n }, [inputValue, isEditing]);\n\n return (\n <div\n ref={mergedRef}\n id={id}\n aria-label={ariaLabel}\n data-testid={dataTestId}\n className={cx(styles.editableTypography, className)}\n role={isEditing ? null : \"button\"}\n onClick={onTypographyClick}\n onKeyDown={toggleKeyboardEditMode}\n >\n {isEditing &&\n (multiline ? (\n <textarea\n ref={inputRef}\n className={cx(styles.textarea, typographyClassName)}\n value={inputValue}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n aria-label={ariaLabel}\n placeholder={placeholder}\n role=\"textbox\"\n rows={1}\n />\n ) : (\n <input\n ref={inputRef}\n className={cx(styles.input, typographyClassName)}\n value={inputValue}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n aria-label={ariaLabel}\n placeholder={placeholder}\n role=\"input\"\n />\n ))}\n <TypographyComponent\n ref={typographyRef}\n aria-hidden={isEditing}\n className={cx(styles.typography, typographyClassName, {\n [styles.hidden]: isEditing,\n [styles.disabled]: readOnly,\n [styles.placeholder]: !inputValue && placeholder,\n [styles.multiline]: !isEditing && multiline\n })}\n tabIndex={0}\n tooltipProps={tooltipProps}\n weight={weight}\n type={type}\n ellipsis={!multiline}\n >\n {inputValue || placeholder}\n </TypographyComponent>\n </div>\n );\n }\n);\n\nexport default EditableTypography;\n"],"names":["EditableTypography","forwardRef","_ref","ref","id","className","dataTestId","value","onClick","onChange","_ref$readOnly","readOnly","_ref$ariaLabel","ariaLabel","placeholder","clearable","typographyClassName","TypographyComponent","component","isEditMode","autoSelectTextOnEditMode","onEditModeChange","tooltipProps","type","weight","_ref$multiline","multiline","componentRef","useRef","mergedRef","useMergeRef","_useState","useState","_useState2","_slicedToArray","isEditing","setIsEditing","_useState3","_useState4","inputValue","setInputValue","prevValue","usePrevious","inputRef","typographyRef","toggleEditMode","event","preventDefault","handleEditModeChange","handleInputValueChange","handleBlur","handleKeyDown","nativeEvent","isComposing","key","keyCodes","ENTER","shiftKey","stopPropagation","ESCAPE","handleChange","target","useEffect","toggleKeyboardEditMode","useKeyboardButtonPressedFunc","_b","current","_a","focus","inputElement","textLength","length","setSelectionRange","select","useIsomorphicLayoutEffect","_typographyRef$curren","getBoundingClientRect","style","setProperty","concat","width","textareaElement","scrollHeight","React","createElement","cx","styles","editableTypography","role","onKeyDown","textarea","onBlur","rows","input","typography","_defineProperty","hidden","disabled","tabIndex","ellipsis"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{slicedToArray as e,defineProperty as t}from"../../../_virtual/_rollupPluginBabelHelpers.js";import o,{useMemo as r,useCallback as i,cloneElement as l}from"react";import a from"react-dom";import n from"classnames";import{useA11yDialog as s}from"./a11yDialog.js";import d from"./LegacyModalContent/LegacyModalContent.js";import m from"./LegacyModalHeader/LegacyModalHeader.js";import c from"./useBodyScrollLock.js";import u from"./useShowHideModal.js";import{ModalWidth as f,validateTitleProp as p,isModalHeader as v,isModalContent as y,isModalFooter as g}from"./ModalHelper.js";import{NOOP as j}from"../../utils/function-utils.js";import{withStaticPropsWithoutForwardRef as h}from"../../types/withStaticProps.js";import"../../utils/colors-vars-map.js";import{getTestId as L}from"../../tests/testIds.js";import{ComponentDefaultTestId as M}from"../../tests/constants.js";import w from"./LegacyModal.module.scss.js";import{isClient as E}from"../../utils/ssr-utils.js";import C from"../../../components/layer/dist/LayerProvider/LayerProvider.js";var A=h((function(f){var h=f.classNames,A=void 0===h?{container:"",overlay:"",modal:""}:h,b=f.id,D=f.show,O=f.title,P=void 0===O?"":O,H=f.description,S=void 0===H?"":H,B=f.onClose,N=void 0===B?j:B,x=f.alertDialog,_=void 0!==x&&x,k=f.children,z=f.triggerElement,I=f.width,R=void 0===I?"default":I,T=f.closeButtonAriaLabel,V=void 0===T?"Close":T,Y=f.contentSpacing,$=void 0!==Y&&Y,q=f.zIndex,F=void 0===q?1e4:q,G=f.unmountOnClose,J=void 0===G||G,K=f["data-testid"],Q=r((function(){return k?o.Children.toArray(k):[]}),[k]);p(P,Q);var U=s({id:b,alertDialog:_}),W=e(U,2),X=W[0],Z=W[1],ee=i((function(){_||null==N||N()}),[_,N]);c({instance:X});var te=u({instance:X,show:D,triggerElement:z,onClose:N,alertDialog:_}).shouldShow,oe=r((function(){var e=Z.title.id,t=Q.find(v);return t?l(t,{id:e,closeModal:N}):o.createElement(m,{title:P,description:S,closeModal:N,id:e,closeButtonAriaLabel:V})}),[Z.title,Q,P,S,N,V]),re=r((function(){return Q.find(y)||o.createElement(d,null,Q.filter((function(e){return!v(e)&&!g(e)})))}),[Q]),ie=r((function(){return Q.find(g)||null}),[Q]),le="default"!==R&&"full-width"!==R,ae=o.createElement(C,{layerRef:{current:null==X?void 0:X.$el}},o.createElement("div",Object.assign({},Z.container,{className:n(w.container,A.container),"data-testid":K||L(M.MODAL,b),style:{"--monday-modal-z-index":F}}),o.createElement("div",{onClick:ee,className:n(w.overlay,A.overlay),"data-testid":M.MODAL_OVERLAY}),o.createElement("div",Object.assign({},Z.dialog,{className:n(w.dialog,A.modal,t(t(t({},w.default,"default"===R),w.full,"full-width"===R),w.spacing,$)),style:{width:le?R:null}}),oe,re,ie)));return J&&!te?null:E()?a.createPortal(ae,document.body):null}),{width:f});export{A as default};
1
+ import{slicedToArray as e,defineProperty as t}from"../../../_virtual/_rollupPluginBabelHelpers.js";import o,{useMemo as r,useCallback as i,cloneElement as l}from"react";import a from"react-dom";import n from"classnames";import{useA11yDialog as s}from"./a11yDialog.js";import d from"./LegacyModalContent/LegacyModalContent.js";import m from"./LegacyModalHeader/LegacyModalHeader.js";import c from"./useBodyScrollLock.js";import u from"./useShowHideModal.js";import{ModalWidth as f,validateTitleProp as p,isModalHeader as v,isModalContent as y,isModalFooter as g}from"./ModalHelper.js";import{NOOP as j}from"../../utils/function-utils.js";import{withStaticPropsWithoutForwardRef as h}from"../../types/withStaticProps.js";import"../../utils/colors-vars-map.js";import{getTestId as L}from"../../tests/testIds.js";import{ComponentDefaultTestId as M}from"../../tests/constants.js";import w from"./LegacyModal.module.scss.js";import{isClient as E}from"../../utils/ssr-utils.js";import C from"../../../components/layers/dist/LayerProvider/LayerProvider.js";var A=h((function(f){var h=f.classNames,A=void 0===h?{container:"",overlay:"",modal:""}:h,b=f.id,D=f.show,O=f.title,P=void 0===O?"":O,H=f.description,S=void 0===H?"":H,B=f.onClose,N=void 0===B?j:B,x=f.alertDialog,_=void 0!==x&&x,k=f.children,z=f.triggerElement,I=f.width,R=void 0===I?"default":I,T=f.closeButtonAriaLabel,V=void 0===T?"Close":T,Y=f.contentSpacing,$=void 0!==Y&&Y,q=f.zIndex,F=void 0===q?1e4:q,G=f.unmountOnClose,J=void 0===G||G,K=f["data-testid"],Q=r((function(){return k?o.Children.toArray(k):[]}),[k]);p(P,Q);var U=s({id:b,alertDialog:_}),W=e(U,2),X=W[0],Z=W[1],ee=i((function(){_||null==N||N()}),[_,N]);c({instance:X});var te=u({instance:X,show:D,triggerElement:z,onClose:N,alertDialog:_}).shouldShow,oe=r((function(){var e=Z.title.id,t=Q.find(v);return t?l(t,{id:e,closeModal:N}):o.createElement(m,{title:P,description:S,closeModal:N,id:e,closeButtonAriaLabel:V})}),[Z.title,Q,P,S,N,V]),re=r((function(){return Q.find(y)||o.createElement(d,null,Q.filter((function(e){return!v(e)&&!g(e)})))}),[Q]),ie=r((function(){return Q.find(g)||null}),[Q]),le="default"!==R&&"full-width"!==R,ae=o.createElement(C,{layerRef:{current:null==X?void 0:X.$el}},o.createElement("div",Object.assign({},Z.container,{className:n(w.container,A.container),"data-testid":K||L(M.MODAL,b),style:{"--monday-modal-z-index":F}}),o.createElement("div",{onClick:ee,className:n(w.overlay,A.overlay),"data-testid":M.MODAL_OVERLAY}),o.createElement("div",Object.assign({},Z.dialog,{className:n(w.dialog,A.modal,t(t(t({},w.default,"default"===R),w.full,"full-width"===R),w.spacing,$)),style:{width:le?R:null}}),oe,re,ie)));return J&&!te?null:E()?a.createPortal(ae,document.body):null}),{width:f});export{A as default};
2
2
  //# sourceMappingURL=LegacyModal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LegacyModal.js","sources":["../../../../../src/components/LegacyModal/LegacyModal.tsx"],"sourcesContent":["import React, { cloneElement, type ReactElement, useCallback, useMemo } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport cx from \"classnames\";\nimport { useA11yDialog } from \"./a11yDialog\";\nimport ModalContent from \"./LegacyModalContent/LegacyModalContent\";\nimport ModalHeader from \"./LegacyModalHeader/LegacyModalHeader\";\nimport useBodyScrollLock from \"./useBodyScrollLock\";\nimport useShowHideModal from \"./useShowHideModal\";\nimport {\n isModalContent,\n isModalFooter,\n isModalHeader,\n ModalWidth as ModalWidthEnum,\n validateTitleProp\n} from \"./ModalHelper\";\nimport { NOOP } from \"../../utils/function-utils\";\nimport { withStaticPropsWithoutForwardRef } from \"../../types\";\nimport { getTestId } from \"../../tests/test-ids-utils\";\nimport { ComponentDefaultTestId } from \"../../tests/constants\";\nimport styles from \"./LegacyModal.module.scss\";\nimport { type ModalWidth } from \"./LegacyModal.types\";\nimport { LayerProvider } from \"@vibe/layer\";\nimport { isClient } from \"../../utils/ssr-utils\";\n\nexport interface LegacyModalProps {\n /**\n * Id of the modal, used internally and for accessibility\n */\n id?: string;\n \"data-testid\"?: string;\n /**\n * Show/hide the Dialog\n */\n show: boolean;\n /**\n * Heading for the modal, mandatory when ModalHeader isn't provided in children\n */\n title?: string;\n /**\n * Description for the modal title\n */\n description?: string;\n /**\n * Called when the modal is closed (by close button/click outside/esc key)\n */\n onClose: () => void;\n /**\n * Makes the dialog behave like a modal (preventing closing on click outside of\n * ESC key)..\n */\n alertDialog?: boolean;\n /**\n * Used for the fromOrigin animation\n */\n triggerElement?: Element;\n /**\n * Set the modal's width. Can be one of the presets or any custom size\n */\n width?: ModalWidth | string;\n /**\n * Aria label for the close button\n */\n closeButtonAriaLabel?: string;\n /**\n * Add gaps between parts of the modal\n */\n contentSpacing?: boolean;\n /**\n * classNames for specific parts of the dialog\n */\n classNames?: {\n container?: string;\n overlay?: string;\n modal?: string;\n };\n /**\n * Dialog content\n */\n children?: ReactElement | ReactElement[];\n /**\n * z-index attribute of the container\n */\n zIndex?: number;\n /**\n * When `false`, the modal will remain in the DOM when closed\n */\n unmountOnClose?: boolean;\n}\n\nconst Modal = ({\n classNames = { container: \"\", overlay: \"\", modal: \"\" },\n id,\n show,\n title = \"\",\n description = \"\",\n onClose = NOOP,\n alertDialog = false,\n children,\n triggerElement,\n width = \"default\",\n closeButtonAriaLabel = \"Close\",\n contentSpacing = false,\n zIndex = 10000,\n unmountOnClose = true,\n \"data-testid\": dataTestId\n}: LegacyModalProps) => {\n const childrenArray: ReactElement[] = useMemo(\n () => (children ? (React.Children.toArray(children) as ReactElement[]) : []),\n [children]\n );\n validateTitleProp(title, childrenArray);\n\n const [instance, attr] = useA11yDialog({\n id,\n alertDialog\n });\n\n const closeIfNotAlertType = useCallback(() => {\n if (!alertDialog) {\n onClose?.();\n }\n }, [alertDialog, onClose]);\n\n // lock body scroll when modal is open\n useBodyScrollLock({ instance });\n\n // show/hide and animate the modal\n const { shouldShow } = useShowHideModal({\n instance,\n show,\n triggerElement,\n onClose,\n alertDialog\n });\n\n const header = useMemo(() => {\n const { id } = attr.title;\n const header = childrenArray.find(isModalHeader);\n if (header) {\n return cloneElement(header, { id, closeModal: onClose });\n }\n return (\n <ModalHeader\n title={title}\n description={description}\n closeModal={onClose}\n id={id}\n closeButtonAriaLabel={closeButtonAriaLabel}\n />\n );\n }, [attr.title, childrenArray, title, description, onClose, closeButtonAriaLabel]);\n\n const content = useMemo(() => {\n return (\n childrenArray.find(isModalContent) || (\n <ModalContent>{childrenArray.filter(child => !isModalHeader(child) && !isModalFooter(child))}</ModalContent>\n )\n );\n }, [childrenArray]);\n\n const footer = useMemo(() => {\n return childrenArray.find(isModalFooter) || null;\n }, [childrenArray]);\n\n const customWidth = width !== \"default\" && width !== \"full-width\";\n\n const dialog = (\n <LayerProvider layerRef={{ current: instance?.$el }}>\n <div\n {...attr.container}\n className={cx(styles.container, classNames.container)}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.MODAL, id)}\n style={{ \"--monday-modal-z-index\": zIndex }}\n >\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}\n <div\n onClick={closeIfNotAlertType}\n className={cx(styles.overlay, classNames.overlay)}\n data-testid={ComponentDefaultTestId.MODAL_OVERLAY}\n />\n <div\n {...attr.dialog}\n className={cx(styles.dialog, classNames.modal, {\n [styles.default]: width === \"default\",\n [styles.full]: width === \"full-width\",\n [styles.spacing]: contentSpacing\n })}\n style={{ width: customWidth ? width : null }}\n >\n {header}\n {content}\n {footer}\n </div>\n </div>\n </LayerProvider>\n );\n\n if (unmountOnClose && !shouldShow) {\n return null;\n }\n return isClient() ? ReactDOM.createPortal(dialog, document.body) : null;\n};\n\ninterface LegacyModalStaticProps {\n width: typeof ModalWidthEnum;\n}\n\nexport default withStaticPropsWithoutForwardRef<LegacyModalProps, LegacyModalStaticProps>(Modal, {\n width: ModalWidthEnum\n});\n"],"names":["withStaticPropsWithoutForwardRef","_ref","_ref$classNames","classNames","container","overlay","modal","id","show","_ref$title","title","_ref$description","description","_ref$onClose","onClose","NOOP","_ref$alertDialog","alertDialog","children","triggerElement","_ref$width","width","_ref$closeButtonAriaL","closeButtonAriaLabel","_ref$contentSpacing","contentSpacing","_ref$zIndex","zIndex","_ref$unmountOnClose","unmountOnClose","dataTestId","childrenArray","useMemo","React","Children","toArray","validateTitleProp","_useA11yDialog","useA11yDialog","_useA11yDialog2","_slicedToArray","instance","attr","closeIfNotAlertType","useCallback","useBodyScrollLock","shouldShow","useShowHideModal","header","find","isModalHeader","cloneElement","closeModal","createElement","ModalHeader","content","isModalContent","ModalContent","filter","child","isModalFooter","footer","customWidth","dialog","LayerProvider","layerRef","current","$el","Object","assign","className","cx","styles","getTestId","ComponentDefaultTestId","MODAL","style","onClick","MODAL_OVERLAY","_defineProperty","default","full","spacing","isClient","ReactDOM","createPortal","document","body","ModalWidthEnum"],"mappings":"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"}
1
+ {"version":3,"file":"LegacyModal.js","sources":["../../../../../src/components/LegacyModal/LegacyModal.tsx"],"sourcesContent":["import React, { cloneElement, type ReactElement, useCallback, useMemo } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport cx from \"classnames\";\nimport { useA11yDialog } from \"./a11yDialog\";\nimport ModalContent from \"./LegacyModalContent/LegacyModalContent\";\nimport ModalHeader from \"./LegacyModalHeader/LegacyModalHeader\";\nimport useBodyScrollLock from \"./useBodyScrollLock\";\nimport useShowHideModal from \"./useShowHideModal\";\nimport {\n isModalContent,\n isModalFooter,\n isModalHeader,\n ModalWidth as ModalWidthEnum,\n validateTitleProp\n} from \"./ModalHelper\";\nimport { NOOP } from \"../../utils/function-utils\";\nimport { withStaticPropsWithoutForwardRef } from \"../../types\";\nimport { getTestId } from \"../../tests/test-ids-utils\";\nimport { ComponentDefaultTestId } from \"../../tests/constants\";\nimport styles from \"./LegacyModal.module.scss\";\nimport { type ModalWidth } from \"./LegacyModal.types\";\nimport { LayerProvider } from \"@vibe/layer\";\nimport { isClient } from \"../../utils/ssr-utils\";\n\nexport interface LegacyModalProps {\n /**\n * Id of the modal, used internally and for accessibility\n */\n id?: string;\n \"data-testid\"?: string;\n /**\n * Show/hide the Dialog\n */\n show: boolean;\n /**\n * Heading for the modal, mandatory when ModalHeader isn't provided in children\n */\n title?: string;\n /**\n * Description for the modal title\n */\n description?: string;\n /**\n * Called when the modal is closed (by close button/click outside/esc key)\n */\n onClose: () => void;\n /**\n * Makes the dialog behave like a modal (preventing closing on click outside of\n * ESC key)..\n */\n alertDialog?: boolean;\n /**\n * Used for the fromOrigin animation\n */\n triggerElement?: Element;\n /**\n * Set the modal's width. Can be one of the presets or any custom size\n */\n width?: ModalWidth | string;\n /**\n * Aria label for the close button\n */\n closeButtonAriaLabel?: string;\n /**\n * Add gaps between parts of the modal\n */\n contentSpacing?: boolean;\n /**\n * classNames for specific parts of the dialog\n */\n classNames?: {\n container?: string;\n overlay?: string;\n modal?: string;\n };\n /**\n * Dialog content\n */\n children?: ReactElement | ReactElement[];\n /**\n * z-index attribute of the container\n */\n zIndex?: number;\n /**\n * When `false`, the modal will remain in the DOM when closed\n */\n unmountOnClose?: boolean;\n}\n\nconst Modal = ({\n classNames = { container: \"\", overlay: \"\", modal: \"\" },\n id,\n show,\n title = \"\",\n description = \"\",\n onClose = NOOP,\n alertDialog = false,\n children,\n triggerElement,\n width = \"default\",\n closeButtonAriaLabel = \"Close\",\n contentSpacing = false,\n zIndex = 10000,\n unmountOnClose = true,\n \"data-testid\": dataTestId\n}: LegacyModalProps) => {\n const childrenArray: ReactElement[] = useMemo(\n () => (children ? (React.Children.toArray(children) as ReactElement[]) : []),\n [children]\n );\n validateTitleProp(title, childrenArray);\n\n const [instance, attr] = useA11yDialog({\n id,\n alertDialog\n });\n\n const closeIfNotAlertType = useCallback(() => {\n if (!alertDialog) {\n onClose?.();\n }\n }, [alertDialog, onClose]);\n\n // lock body scroll when modal is open\n useBodyScrollLock({ instance });\n\n // show/hide and animate the modal\n const { shouldShow } = useShowHideModal({\n instance,\n show,\n triggerElement,\n onClose,\n alertDialog\n });\n\n const header = useMemo(() => {\n const { id } = attr.title;\n const header = childrenArray.find(isModalHeader);\n if (header) {\n return cloneElement(header, { id, closeModal: onClose });\n }\n return (\n <ModalHeader\n title={title}\n description={description}\n closeModal={onClose}\n id={id}\n closeButtonAriaLabel={closeButtonAriaLabel}\n />\n );\n }, [attr.title, childrenArray, title, description, onClose, closeButtonAriaLabel]);\n\n const content = useMemo(() => {\n return (\n childrenArray.find(isModalContent) || (\n <ModalContent>{childrenArray.filter(child => !isModalHeader(child) && !isModalFooter(child))}</ModalContent>\n )\n );\n }, [childrenArray]);\n\n const footer = useMemo(() => {\n return childrenArray.find(isModalFooter) || null;\n }, [childrenArray]);\n\n const customWidth = width !== \"default\" && width !== \"full-width\";\n\n const dialog = (\n <LayerProvider layerRef={{ current: instance?.$el }}>\n <div\n {...attr.container}\n className={cx(styles.container, classNames.container)}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.MODAL, id)}\n style={{ \"--monday-modal-z-index\": zIndex }}\n >\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}\n <div\n onClick={closeIfNotAlertType}\n className={cx(styles.overlay, classNames.overlay)}\n data-testid={ComponentDefaultTestId.MODAL_OVERLAY}\n />\n <div\n {...attr.dialog}\n className={cx(styles.dialog, classNames.modal, {\n [styles.default]: width === \"default\",\n [styles.full]: width === \"full-width\",\n [styles.spacing]: contentSpacing\n })}\n style={{ width: customWidth ? width : null }}\n >\n {header}\n {content}\n {footer}\n </div>\n </div>\n </LayerProvider>\n );\n\n if (unmountOnClose && !shouldShow) {\n return null;\n }\n return isClient() ? ReactDOM.createPortal(dialog, document.body) : null;\n};\n\ninterface LegacyModalStaticProps {\n width: typeof ModalWidthEnum;\n}\n\nexport default withStaticPropsWithoutForwardRef<LegacyModalProps, LegacyModalStaticProps>(Modal, {\n width: ModalWidthEnum\n});\n"],"names":["withStaticPropsWithoutForwardRef","_ref","_ref$classNames","classNames","container","overlay","modal","id","show","_ref$title","title","_ref$description","description","_ref$onClose","onClose","NOOP","_ref$alertDialog","alertDialog","children","triggerElement","_ref$width","width","_ref$closeButtonAriaL","closeButtonAriaLabel","_ref$contentSpacing","contentSpacing","_ref$zIndex","zIndex","_ref$unmountOnClose","unmountOnClose","dataTestId","childrenArray","useMemo","React","Children","toArray","validateTitleProp","_useA11yDialog","useA11yDialog","_useA11yDialog2","_slicedToArray","instance","attr","closeIfNotAlertType","useCallback","useBodyScrollLock","shouldShow","useShowHideModal","header","find","isModalHeader","cloneElement","closeModal","createElement","ModalHeader","content","isModalContent","ModalContent","filter","child","isModalFooter","footer","customWidth","dialog","LayerProvider","layerRef","current","$el","Object","assign","className","cx","styles","getTestId","ComponentDefaultTestId","MODAL","style","onClick","MODAL_OVERLAY","_defineProperty","default","full","spacing","isClient","ReactDOM","createPortal","document","body","ModalWidthEnum"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{slicedToArray as e,defineProperty as t}from"../../../../_virtual/_rollupPluginBabelHelpers.js";import o,{forwardRef as r,useRef as a,useState as i,useCallback as s,useMemo as n}from"react";import l from"classnames";import{RemoveScroll as m}from"react-remove-scroll";import c from"react-focus-lock";import{AnimatePresence as d,motion as u}from"framer-motion";import{getTestId as f}from"../../../tests/testIds.js";import{ComponentDefaultTestId as p,ComponentVibeId as v}from"../../../tests/constants.js";import y from"./Modal.module.scss.js";import E from"../ModalTopActions/ModalTopActions.js";import{getStyle as b}from"../../../helpers/typesciptCssModulesHelper.js";import{camelCase as j}from"es-toolkit";import{ModalProvider as A}from"../context/ModalContext.js";import{keyCodes as T}from"../../../constants/keyCodes.js";import"../../../constants/sizes.js";import{modalAnimationFullViewVariants as h,modalAnimationAnchorPopVariants as x,modalAnimationCenterPopVariants as M,modalAnimationOverlayVariants as L}from"../utils/animationVariants.js";import{createPortal as k}from"react-dom";import F from"../hooks/usePortalTarget/usePortalTarget.js";import P from"../hooks/useFocusEscapeTargets/useFocusEscapeTargets.js";import g from"../../../hooks/useMergeRef.js";import w from"../../../../components/layer/dist/LayerProvider/LayerProvider.js";var C=c.default||c,I=r((function(r,c){var I=r.id,N=r.show,z=r.size,D=void 0===z?"medium":z,H=r.renderHeaderAction,_=r.closeButtonTheme,B=r.closeButtonAriaLabel,O=r.onClose,R=void 0===O?function(){}:O,V=r.autoFocus,X=void 0===V||V,K=r.allowFocusEscapeTo,S=r.onFocusAttempt,Y=r.anchorElementRef,q=r.alertModal,G=r.container,J=void 0===G?document.body:G,Q=r.children,U=r.style,W=r.zIndex,Z=r.className,$=r["data-testid"],ee=r["aria-labelledby"],te=r["aria-describedby"],oe=F(J),re=a(null),ae=g(c,re),ie=a(null),se=i(),ne=e(se,2),le=ne[0],me=ne[1],ce=i(),de=e(ce,2),ue=de[0],fe=de[1],pe=s((function(e){ee||me(e)}),[ee]),ve=s((function(e){te||fe(e)}),[te]),ye=n((function(){return{modalId:I,setTitleId:pe,setDescriptionId:ve,autoFocus:X}}),[I,pe,ve,X]),Ee=s((function(e){N&&!q&&R(e)}),[N,q,R]),be=s((function(e){e.key===T.ESCAPE&&N&&!q&&R(e)}),[q,R,N]),je="full-view"===D?h:(null==Y?void 0:Y.current)?x:M,Ae=W?{"--monday-modal-z-index":W}:{},Te=P(K),he=s((function(e){if(S){var t=S(e);return!0===t||t instanceof HTMLElement&&(t.focus(),!1)}return!Te(e)}),[S,Te]);return o.createElement(d,null,N&&o.createElement(w,{layerRef:ie},o.createElement(A,{value:ye},k(o.createElement(C,{returnFocus:!0,autoFocus:X,whiteList:he},o.createElement("div",{ref:ie,className:y.container,style:Ae},o.createElement(u.div,{variants:L,initial:"initial",animate:"enter",exit:"exit","data-testid":f(p.MODAL_NEXT_OVERLAY,I),className:y.overlay,onClick:Ee,"aria-hidden":!0}),o.createElement(m,{forwardProps:!0,ref:ae},o.createElement(u.div,{variants:je,initial:"exit",animate:"enter",exit:"exit",custom:Y,className:l(y.modal,b(y,j("size-"+D)),t({},y.withHeaderAction,!!H),Z),id:I,"data-testid":$||f(p.MODAL_NEXT,I),"data-vibe":v.MODAL,role:"dialog","aria-modal":!0,"aria-labelledby":ee||le,"aria-describedby":te||ue,style:U,onKeyDown:be,tabIndex:-1},Q,o.createElement(E,{renderAction:H,theme:_,closeButtonAriaLabel:B,onClose:R}))))),oe))))}));export{I as default};
1
+ import{slicedToArray as e,defineProperty as t}from"../../../../_virtual/_rollupPluginBabelHelpers.js";import o,{forwardRef as r,useRef as a,useState as i,useCallback as s,useMemo as n}from"react";import l from"classnames";import{RemoveScroll as m}from"react-remove-scroll";import c from"react-focus-lock";import{AnimatePresence as d,motion as u}from"framer-motion";import{getTestId as f}from"../../../tests/testIds.js";import{ComponentDefaultTestId as p,ComponentVibeId as v}from"../../../tests/constants.js";import y from"./Modal.module.scss.js";import E from"../ModalTopActions/ModalTopActions.js";import{getStyle as b}from"../../../helpers/typesciptCssModulesHelper.js";import{camelCase as j}from"es-toolkit";import{ModalProvider as A}from"../context/ModalContext.js";import{keyCodes as T}from"../../../constants/keyCodes.js";import"../../../constants/sizes.js";import{modalAnimationFullViewVariants as h,modalAnimationAnchorPopVariants as x,modalAnimationCenterPopVariants as M,modalAnimationOverlayVariants as L}from"../utils/animationVariants.js";import{createPortal as k}from"react-dom";import F from"../hooks/usePortalTarget/usePortalTarget.js";import P from"../hooks/useFocusEscapeTargets/useFocusEscapeTargets.js";import g from"../../../hooks/useMergeRef.js";import w from"../../../../components/layers/dist/LayerProvider/LayerProvider.js";var C=c.default||c,I=r((function(r,c){var I=r.id,N=r.show,z=r.size,D=void 0===z?"medium":z,H=r.renderHeaderAction,_=r.closeButtonTheme,B=r.closeButtonAriaLabel,O=r.onClose,R=void 0===O?function(){}:O,V=r.autoFocus,X=void 0===V||V,K=r.allowFocusEscapeTo,S=r.onFocusAttempt,Y=r.anchorElementRef,q=r.alertModal,G=r.container,J=void 0===G?document.body:G,Q=r.children,U=r.style,W=r.zIndex,Z=r.className,$=r["data-testid"],ee=r["aria-labelledby"],te=r["aria-describedby"],oe=F(J),re=a(null),ae=g(c,re),ie=a(null),se=i(),ne=e(se,2),le=ne[0],me=ne[1],ce=i(),de=e(ce,2),ue=de[0],fe=de[1],pe=s((function(e){ee||me(e)}),[ee]),ve=s((function(e){te||fe(e)}),[te]),ye=n((function(){return{modalId:I,setTitleId:pe,setDescriptionId:ve,autoFocus:X}}),[I,pe,ve,X]),Ee=s((function(e){N&&!q&&R(e)}),[N,q,R]),be=s((function(e){e.key===T.ESCAPE&&N&&!q&&R(e)}),[q,R,N]),je="full-view"===D?h:(null==Y?void 0:Y.current)?x:M,Ae=W?{"--monday-modal-z-index":W}:{},Te=P(K),he=s((function(e){if(S){var t=S(e);return!0===t||t instanceof HTMLElement&&(t.focus(),!1)}return!Te(e)}),[S,Te]);return o.createElement(d,null,N&&o.createElement(w,{layerRef:ie},o.createElement(A,{value:ye},k(o.createElement(C,{returnFocus:!0,autoFocus:X,whiteList:he},o.createElement("div",{ref:ie,className:y.container,style:Ae},o.createElement(u.div,{variants:L,initial:"initial",animate:"enter",exit:"exit","data-testid":f(p.MODAL_NEXT_OVERLAY,I),className:y.overlay,onClick:Ee,"aria-hidden":!0}),o.createElement(m,{forwardProps:!0,ref:ae},o.createElement(u.div,{variants:je,initial:"exit",animate:"enter",exit:"exit",custom:Y,className:l(y.modal,b(y,j("size-"+D)),t({},y.withHeaderAction,!!H),Z),id:I,"data-testid":$||f(p.MODAL_NEXT,I),"data-vibe":v.MODAL,role:"dialog","aria-modal":!0,"aria-labelledby":ee||le,"aria-describedby":te||ue,style:U,onKeyDown:be,tabIndex:-1},Q,o.createElement(E,{renderAction:H,theme:_,closeButtonAriaLabel:B,onClose:R}))))),oe))))}));export{I as default};
2
2
  //# sourceMappingURL=Modal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","sources":["../../../../../../src/components/Modal/Modal/Modal.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useMemo, useRef, useState } from \"react\";\nimport cx from \"classnames\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport FocusLock from \"react-focus-lock\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport { getTestId } from \"../../../tests/test-ids-utils\";\nimport { ComponentDefaultTestId, ComponentVibeId } from \"../../../tests/constants\";\nimport styles from \"./Modal.module.scss\";\nimport { type ModalProps } from \"./Modal.types\";\nimport ModalTopActions from \"../ModalTopActions/ModalTopActions\";\nimport { getStyle } from \"../../../helpers/typesciptCssModulesHelper\";\nimport { camelCase } from \"es-toolkit\";\nimport { ModalProvider } from \"../context/ModalContext\";\nimport { type ModalProviderValue } from \"../context/ModalContext.types\";\nimport { keyCodes } from \"../../../constants\";\nimport {\n modalAnimationAnchorPopVariants,\n modalAnimationCenterPopVariants,\n modalAnimationFullViewVariants,\n modalAnimationOverlayVariants\n} from \"../utils/animationVariants\";\nimport { createPortal } from \"react-dom\";\nimport usePortalTarget from \"../hooks/usePortalTarget/usePortalTarget\";\nimport useFocusEscapeTargets from \"../hooks/useFocusEscapeTargets/useFocusEscapeTargets\";\nimport { LayerProvider } from \"@vibe/layer\";\nimport useMergeRef from \"../../../hooks/useMergeRef\";\n\n// @ts-expect-error This is a precaution to support all possible module systems (ESM/CJS)\nconst FocusLockComponent = (FocusLock.default || FocusLock) as typeof FocusLock;\n\nconst Modal = forwardRef(\n (\n {\n id,\n show,\n size = \"medium\",\n renderHeaderAction,\n closeButtonTheme,\n closeButtonAriaLabel,\n onClose = () => {},\n autoFocus = true,\n allowFocusEscapeTo,\n onFocusAttempt,\n anchorElementRef,\n alertModal,\n container = document.body,\n children,\n style,\n zIndex,\n className,\n \"data-testid\": dataTestId,\n \"aria-labelledby\": ariaLabelledby,\n \"aria-describedby\": ariaDescribedby\n }: ModalProps,\n ref: React.ForwardedRef<HTMLDivElement>\n ) => {\n const portalTargetElement = usePortalTarget(container);\n\n const modalRef = useRef<HTMLDivElement>(null);\n const modalMergedRef = useMergeRef<HTMLDivElement>(ref, modalRef);\n const containerRef = useRef<HTMLDivElement>(null);\n\n const [titleId, setTitleId] = useState<string>();\n const [descriptionId, setDescriptionId] = useState<string>();\n\n const setTitleIdCallback = useCallback(\n (newId: string) => {\n if (ariaLabelledby) return;\n setTitleId(newId);\n },\n [ariaLabelledby]\n );\n const setDescriptionIdCallback = useCallback(\n (newId: string) => {\n if (ariaDescribedby) return;\n setDescriptionId(newId);\n },\n [ariaDescribedby]\n );\n\n const contextValue = useMemo<ModalProviderValue>(\n () => ({\n modalId: id,\n setTitleId: setTitleIdCallback,\n setDescriptionId: setDescriptionIdCallback,\n autoFocus\n }),\n [id, setTitleIdCallback, setDescriptionIdCallback, autoFocus]\n );\n\n const onBackdropClick = useCallback<React.MouseEventHandler<HTMLDivElement>>(\n e => {\n if (!show || alertModal) return;\n onClose(e);\n },\n [show, alertModal, onClose]\n );\n\n const onModalKeyDown = useCallback<React.KeyboardEventHandler<HTMLDivElement>>(\n e => {\n if (e.key !== keyCodes.ESCAPE || !show || alertModal) return;\n onClose(e);\n },\n [alertModal, onClose, show]\n );\n\n const modalAnimationVariants =\n size === \"full-view\"\n ? modalAnimationFullViewVariants\n : anchorElementRef?.current\n ? modalAnimationAnchorPopVariants\n : modalAnimationCenterPopVariants;\n\n const zIndexStyle = zIndex ? ({ \"--monday-modal-z-index\": zIndex } as React.CSSProperties) : {};\n\n const shouldAllowFocusEscape = useFocusEscapeTargets(allowFocusEscapeTo);\n\n /**\n * Returning true means that the focus-lock is allowed to manage the element.\n * Returning false means that the focus-lock would surrender control to the element.\n */\n const handleFocusLockWhiteList = useCallback(\n (nextFocusedElement?: HTMLElement) => {\n if (onFocusAttempt) {\n const outcome = onFocusAttempt(nextFocusedElement);\n\n if (outcome === true) return true;\n\n if (outcome instanceof HTMLElement) {\n outcome.focus();\n return false;\n }\n\n return false;\n }\n\n return !shouldAllowFocusEscape(nextFocusedElement);\n },\n [onFocusAttempt, shouldAllowFocusEscape]\n );\n\n return (\n <AnimatePresence>\n {show && (\n <LayerProvider layerRef={containerRef}>\n <ModalProvider value={contextValue}>\n {createPortal(\n <FocusLockComponent returnFocus autoFocus={autoFocus} whiteList={handleFocusLockWhiteList}>\n <div ref={containerRef} className={styles.container} style={zIndexStyle}>\n <motion.div\n variants={modalAnimationOverlayVariants}\n initial=\"initial\"\n animate=\"enter\"\n exit=\"exit\"\n data-testid={getTestId(ComponentDefaultTestId.MODAL_NEXT_OVERLAY, id)}\n className={styles.overlay}\n onClick={onBackdropClick}\n aria-hidden\n />\n <RemoveScroll forwardProps ref={modalMergedRef}>\n <motion.div\n variants={modalAnimationVariants}\n initial=\"exit\"\n animate=\"enter\"\n exit=\"exit\"\n custom={anchorElementRef}\n className={cx(\n styles.modal,\n getStyle(styles, camelCase(\"size-\" + size)),\n { [styles.withHeaderAction]: !!renderHeaderAction },\n className\n )}\n id={id}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.MODAL_NEXT, id)}\n data-vibe={ComponentVibeId.MODAL}\n role=\"dialog\"\n aria-modal\n aria-labelledby={ariaLabelledby || titleId}\n aria-describedby={ariaDescribedby || descriptionId}\n style={style}\n onKeyDown={onModalKeyDown}\n tabIndex={-1}\n >\n {children}\n <ModalTopActions\n renderAction={renderHeaderAction}\n theme={closeButtonTheme}\n closeButtonAriaLabel={closeButtonAriaLabel}\n onClose={onClose}\n />\n </motion.div>\n </RemoveScroll>\n </div>\n </FocusLockComponent>,\n portalTargetElement\n )}\n </ModalProvider>\n </LayerProvider>\n )}\n </AnimatePresence>\n );\n }\n);\n\nexport default Modal;\n"],"names":["FocusLockComponent","FocusLock","default","Modal","forwardRef","_ref","ref","id","show","_ref$size","size","renderHeaderAction","closeButtonTheme","closeButtonAriaLabel","_ref$onClose","onClose","_ref$autoFocus","autoFocus","allowFocusEscapeTo","onFocusAttempt","anchorElementRef","alertModal","_ref$container","container","document","body","children","style","zIndex","className","dataTestId","ariaLabelledby","ariaDescribedby","portalTargetElement","usePortalTarget","modalRef","useRef","modalMergedRef","useMergeRef","containerRef","_useState","useState","_useState2","_slicedToArray","titleId","setTitleId","_useState3","_useState4","descriptionId","setDescriptionId","setTitleIdCallback","useCallback","newId","setDescriptionIdCallback","contextValue","useMemo","modalId","onBackdropClick","e","onModalKeyDown","key","keyCodes","ESCAPE","modalAnimationVariants","modalAnimationFullViewVariants","current","modalAnimationAnchorPopVariants","modalAnimationCenterPopVariants","zIndexStyle","shouldAllowFocusEscape","useFocusEscapeTargets","handleFocusLockWhiteList","nextFocusedElement","outcome","HTMLElement","focus","React","createElement","AnimatePresence","LayerProvider","layerRef","ModalProvider","value","createPortal","returnFocus","whiteList","styles","motion","div","variants","modalAnimationOverlayVariants","initial","animate","exit","getTestId","ComponentDefaultTestId","MODAL_NEXT_OVERLAY","overlay","onClick","RemoveScroll","forwardProps","custom","cx","modal","getStyle","camelCase","_defineProperty","withHeaderAction","MODAL_NEXT","ComponentVibeId","MODAL","role","onKeyDown","tabIndex","ModalTopActions","renderAction","theme"],"mappings":"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"}
1
+ {"version":3,"file":"Modal.js","sources":["../../../../../../src/components/Modal/Modal/Modal.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useMemo, useRef, useState } from \"react\";\nimport cx from \"classnames\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport FocusLock from \"react-focus-lock\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport { getTestId } from \"../../../tests/test-ids-utils\";\nimport { ComponentDefaultTestId, ComponentVibeId } from \"../../../tests/constants\";\nimport styles from \"./Modal.module.scss\";\nimport { type ModalProps } from \"./Modal.types\";\nimport ModalTopActions from \"../ModalTopActions/ModalTopActions\";\nimport { getStyle } from \"../../../helpers/typesciptCssModulesHelper\";\nimport { camelCase } from \"es-toolkit\";\nimport { ModalProvider } from \"../context/ModalContext\";\nimport { type ModalProviderValue } from \"../context/ModalContext.types\";\nimport { keyCodes } from \"../../../constants\";\nimport {\n modalAnimationAnchorPopVariants,\n modalAnimationCenterPopVariants,\n modalAnimationFullViewVariants,\n modalAnimationOverlayVariants\n} from \"../utils/animationVariants\";\nimport { createPortal } from \"react-dom\";\nimport usePortalTarget from \"../hooks/usePortalTarget/usePortalTarget\";\nimport useFocusEscapeTargets from \"../hooks/useFocusEscapeTargets/useFocusEscapeTargets\";\nimport { LayerProvider } from \"@vibe/layer\";\nimport useMergeRef from \"../../../hooks/useMergeRef\";\n\n// @ts-expect-error This is a precaution to support all possible module systems (ESM/CJS)\nconst FocusLockComponent = (FocusLock.default || FocusLock) as typeof FocusLock;\n\nconst Modal = forwardRef(\n (\n {\n id,\n show,\n size = \"medium\",\n renderHeaderAction,\n closeButtonTheme,\n closeButtonAriaLabel,\n onClose = () => {},\n autoFocus = true,\n allowFocusEscapeTo,\n onFocusAttempt,\n anchorElementRef,\n alertModal,\n container = document.body,\n children,\n style,\n zIndex,\n className,\n \"data-testid\": dataTestId,\n \"aria-labelledby\": ariaLabelledby,\n \"aria-describedby\": ariaDescribedby\n }: ModalProps,\n ref: React.ForwardedRef<HTMLDivElement>\n ) => {\n const portalTargetElement = usePortalTarget(container);\n\n const modalRef = useRef<HTMLDivElement>(null);\n const modalMergedRef = useMergeRef<HTMLDivElement>(ref, modalRef);\n const containerRef = useRef<HTMLDivElement>(null);\n\n const [titleId, setTitleId] = useState<string>();\n const [descriptionId, setDescriptionId] = useState<string>();\n\n const setTitleIdCallback = useCallback(\n (newId: string) => {\n if (ariaLabelledby) return;\n setTitleId(newId);\n },\n [ariaLabelledby]\n );\n const setDescriptionIdCallback = useCallback(\n (newId: string) => {\n if (ariaDescribedby) return;\n setDescriptionId(newId);\n },\n [ariaDescribedby]\n );\n\n const contextValue = useMemo<ModalProviderValue>(\n () => ({\n modalId: id,\n setTitleId: setTitleIdCallback,\n setDescriptionId: setDescriptionIdCallback,\n autoFocus\n }),\n [id, setTitleIdCallback, setDescriptionIdCallback, autoFocus]\n );\n\n const onBackdropClick = useCallback<React.MouseEventHandler<HTMLDivElement>>(\n e => {\n if (!show || alertModal) return;\n onClose(e);\n },\n [show, alertModal, onClose]\n );\n\n const onModalKeyDown = useCallback<React.KeyboardEventHandler<HTMLDivElement>>(\n e => {\n if (e.key !== keyCodes.ESCAPE || !show || alertModal) return;\n onClose(e);\n },\n [alertModal, onClose, show]\n );\n\n const modalAnimationVariants =\n size === \"full-view\"\n ? modalAnimationFullViewVariants\n : anchorElementRef?.current\n ? modalAnimationAnchorPopVariants\n : modalAnimationCenterPopVariants;\n\n const zIndexStyle = zIndex ? ({ \"--monday-modal-z-index\": zIndex } as React.CSSProperties) : {};\n\n const shouldAllowFocusEscape = useFocusEscapeTargets(allowFocusEscapeTo);\n\n /**\n * Returning true means that the focus-lock is allowed to manage the element.\n * Returning false means that the focus-lock would surrender control to the element.\n */\n const handleFocusLockWhiteList = useCallback(\n (nextFocusedElement?: HTMLElement) => {\n if (onFocusAttempt) {\n const outcome = onFocusAttempt(nextFocusedElement);\n\n if (outcome === true) return true;\n\n if (outcome instanceof HTMLElement) {\n outcome.focus();\n return false;\n }\n\n return false;\n }\n\n return !shouldAllowFocusEscape(nextFocusedElement);\n },\n [onFocusAttempt, shouldAllowFocusEscape]\n );\n\n return (\n <AnimatePresence>\n {show && (\n <LayerProvider layerRef={containerRef}>\n <ModalProvider value={contextValue}>\n {createPortal(\n <FocusLockComponent returnFocus autoFocus={autoFocus} whiteList={handleFocusLockWhiteList}>\n <div ref={containerRef} className={styles.container} style={zIndexStyle}>\n <motion.div\n variants={modalAnimationOverlayVariants}\n initial=\"initial\"\n animate=\"enter\"\n exit=\"exit\"\n data-testid={getTestId(ComponentDefaultTestId.MODAL_NEXT_OVERLAY, id)}\n className={styles.overlay}\n onClick={onBackdropClick}\n aria-hidden\n />\n <RemoveScroll forwardProps ref={modalMergedRef}>\n <motion.div\n variants={modalAnimationVariants}\n initial=\"exit\"\n animate=\"enter\"\n exit=\"exit\"\n custom={anchorElementRef}\n className={cx(\n styles.modal,\n getStyle(styles, camelCase(\"size-\" + size)),\n { [styles.withHeaderAction]: !!renderHeaderAction },\n className\n )}\n id={id}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.MODAL_NEXT, id)}\n data-vibe={ComponentVibeId.MODAL}\n role=\"dialog\"\n aria-modal\n aria-labelledby={ariaLabelledby || titleId}\n aria-describedby={ariaDescribedby || descriptionId}\n style={style}\n onKeyDown={onModalKeyDown}\n tabIndex={-1}\n >\n {children}\n <ModalTopActions\n renderAction={renderHeaderAction}\n theme={closeButtonTheme}\n closeButtonAriaLabel={closeButtonAriaLabel}\n onClose={onClose}\n />\n </motion.div>\n </RemoveScroll>\n </div>\n </FocusLockComponent>,\n portalTargetElement\n )}\n </ModalProvider>\n </LayerProvider>\n )}\n </AnimatePresence>\n );\n }\n);\n\nexport default Modal;\n"],"names":["FocusLockComponent","FocusLock","default","Modal","forwardRef","_ref","ref","id","show","_ref$size","size","renderHeaderAction","closeButtonTheme","closeButtonAriaLabel","_ref$onClose","onClose","_ref$autoFocus","autoFocus","allowFocusEscapeTo","onFocusAttempt","anchorElementRef","alertModal","_ref$container","container","document","body","children","style","zIndex","className","dataTestId","ariaLabelledby","ariaDescribedby","portalTargetElement","usePortalTarget","modalRef","useRef","modalMergedRef","useMergeRef","containerRef","_useState","useState","_useState2","_slicedToArray","titleId","setTitleId","_useState3","_useState4","descriptionId","setDescriptionId","setTitleIdCallback","useCallback","newId","setDescriptionIdCallback","contextValue","useMemo","modalId","onBackdropClick","e","onModalKeyDown","key","keyCodes","ESCAPE","modalAnimationVariants","modalAnimationFullViewVariants","current","modalAnimationAnchorPopVariants","modalAnimationCenterPopVariants","zIndexStyle","shouldAllowFocusEscape","useFocusEscapeTargets","handleFocusLockWhiteList","nextFocusedElement","outcome","HTMLElement","focus","React","createElement","AnimatePresence","LayerProvider","layerRef","ModalProvider","value","createPortal","returnFocus","whiteList","styles","motion","div","variants","modalAnimationOverlayVariants","initial","animate","exit","getTestId","ComponentDefaultTestId","MODAL_NEXT_OVERLAY","overlay","onClick","RemoveScroll","forwardProps","custom","cx","modal","getStyle","camelCase","_defineProperty","withHeaderAction","MODAL_NEXT","ComponentVibeId","MODAL","role","onKeyDown","tabIndex","ModalTopActions","renderAction","theme"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import"../style/dist/index.min.css.js";export{default as Accordion}from"./components/Accordion/Accordion/Accordion.js";export{default as AccordionItem}from"./components/Accordion/AccordionItem/AccordionItem.js";export{default as AlertBanner}from"./components/AlertBanner/AlertBanner.js";export{default as AlertBannerButton}from"./components/AlertBanner/AlertBannerButton/AlertBannerButton.js";export{default as AlertBannerLink}from"./components/AlertBanner/AlertBannerLink/AlertBannerLink.js";export{default as AlertBannerText}from"./components/AlertBanner/AlertBannerText/AlertBannerText.js";export{default as AttentionBox}from"./components/AttentionBox/AttentionBox.js";export{default as AttentionBoxLink}from"./components/AttentionBox/AttentionBoxLink/AttentionBoxLink.js";export{default as Avatar}from"./components/Avatar/Avatar.js";export{default as AvatarGroup}from"./components/AvatarGroup/AvatarGroup.js";export{default as Badge}from"./components/Badge/Badge.js";export{default as Box}from"./components/Box/Box.js";export{default as BreadcrumbsBar}from"./components/BreadcrumbsBar/BreadcrumbsBar.js";export{default as BreadcrumbItem}from"./components/BreadcrumbsBar/BreadcrumbItem/BreadcrumbItem.js";export{default as BreadcrumbMenu}from"./components/BreadcrumbsBar/BreadcrumbMenu/BreadcrumbMenu.js";export{default as BreadcrumbMenuItem}from"./components/BreadcrumbsBar/BreadcrumbMenu/BreadcrumbMenuItem/BreadcrumbMenuItem.js";export{default as ButtonGroup}from"./components/ButtonGroup/ButtonGroup.js";export{default as Checkbox}from"./components/Checkbox/Checkbox.js";export{default as Chips}from"./components/Chips/Chips.js";export{default as Clickable}from"./components/Clickable/Clickable.js";export{default as ColorPicker}from"./components/ColorPicker/ColorPicker.js";export{default as ColorPickerContent}from"./components/ColorPicker/components/ColorPickerContent/ColorPickerContent.js";export{default as Combobox}from"./components/Combobox/Combobox.js";export{default as Counter}from"./components/Counter/Counter.js";export{default as DatePicker}from"./components/DatePicker/DatePicker.js";export{default as Divider}from"./components/Divider/Divider.js";export{default as Dropdown}from"./components/Dropdown/Dropdown.js";export{default as DropdownMenu}from"./components/Dropdown/components/menu/menu.js";export{default as DropdownOption}from"./components/Dropdown/components/option/option.js";export{default as DropdownSingleValue}from"./components/Dropdown/components/singleValue/singleValue.js";export{default as EditableHeading}from"./components/EditableHeading/EditableHeading.js";export{default as EditableText}from"./components/EditableText/EditableText.js";export{default as EmptyState}from"./components/EmptyState/EmptyState.js";export{default as ExpandCollapse}from"./components/ExpandCollapse/ExpandCollapse.js";export{default as Flex}from"./components/Flex/Flex.js";export{default as FormattedNumber}from"./components/FormattedNumber/FormattedNumber.js";export{GridKeyboardNavigationContext,useGridKeyboardNavigationContext}from"./components/GridKeyboardNavigationContext/GridKeyboardNavigationContext.js";export{default as Heading}from"./components/Heading/Heading.js";export{default as HiddenText}from"./components/HiddenText/HiddenText.js";export{default as IconButton}from"./components/IconButton/IconButton.js";export{default as Info}from"./components/Info/Info.js";export{default as Label}from"./components/Label/Label.js";export{default as Link}from"./components/Link/Link.js";export{default as List}from"./components/List/List.js";export{default as ListItem}from"./components/ListItem/ListItem.js";export{default as ListItemAvatar}from"./components/ListItemAvatar/ListItemAvatar.js";export{default as ListItemIcon}from"./components/ListItemIcon/ListItemIcon.js";export{default as ListTitle}from"./components/ListTitle/ListTitle.js";export{default as Menu}from"./components/Menu/Menu/Menu.js";export{default as MenuItem}from"./components/Menu/MenuItem/MenuItem.js";export{default as MenuItemButton}from"./components/Menu/MenuItemButton/MenuItemButton.js";export{default as MenuDivider}from"./components/Menu/MenuDivider/MenuDivider.js";export{default as MenuTitle}from"./components/Menu/MenuTitle/MenuTitle.js";export{default as MenuGridItem}from"./components/Menu/MenuGridItem/MenuGridItem.js";export{default as MenuButton}from"./components/MenuButton/MenuButton.js";export{default as NumberField}from"./components/NumberField/NumberField.js";export{default as Modal}from"./components/LegacyModal/LegacyModal.js";export{default as ModalHeader}from"./components/LegacyModal/LegacyModalHeader/LegacyModalHeader.js";export{default as ModalContent}from"./components/LegacyModal/LegacyModalContent/LegacyModalContent.js";export{default as ModalFooter}from"./components/LegacyModal/LegacyModalFooter/LegacyModalFooter.js";export{default as ModalFooterButtons}from"./components/LegacyModal/LegacyModalFooter/LegacyModalFooterButtons/LegacyModalFooterButtons.js";export{default as MultiStepIndicator}from"./components/MultiStepIndicator/MultiStepIndicator.js";export{default as LinearProgressBar}from"./components/ProgressBars/LinearProgressBar/LinearProgressBar.js";export{default as RadioButton}from"./components/RadioButton/RadioButton.js";export{default as Search}from"./components/Search/Search.js";export{default as Skeleton}from"./components/Skeleton/Skeleton.js";export{default as Slider}from"./components/Slider/Slider.js";export{default as SplitButton}from"./components/SplitButton/SplitButton.js";export{default as SplitButtonMenu}from"./components/SplitButton/SplitButtonMenu/SplitButtonMenu.js";export{default as Steps}from"./components/Steps/Steps.js";export{default as Table}from"./components/Table/Table/Table.js";export{default as TableContainer}from"./components/Table/TableContainer/TableContainer.js";export{default as TableHeader}from"./components/Table/TableHeader/TableHeader.js";export{default as TableHeaderCell}from"./components/Table/TableHeaderCell/TableHeaderCell.js";export{default as TableBody}from"./components/Table/TableBody/TableBody.js";export{default as TableVirtualizedBody}from"./components/Table/TableVirtualizedBody/TableVirtualizedBody.js";export{default as TableRow}from"./components/Table/TableRow/TableRow.js";export{default as TableRowMenu}from"./components/Table/TableRowMenu/TableRowMenu.js";export{default as TableCell}from"./components/Table/TableCell/TableCell.js";export{default as Tab}from"./components/Tabs/Tab/Tab.js";export{default as TabList}from"./components/Tabs/TabList/TabList.js";export{default as TabPanel}from"./components/Tabs/TabPanel/TabPanel.js";export{default as TabsContext}from"./components/Tabs/TabsContext/TabsContext.js";export{default as TabPanels}from"./components/Tabs/TabPanels/TabPanels.js";export{default as Text}from"./components/Text/Text.js";export{default as TextArea}from"./components/TextArea/TextArea.js";export{default as TextField}from"./components/TextField/TextField.js";export{default as TextWithHighlight}from"./components/TextWithHighlight/TextWithHighlight.js";export{default as ThemeProvider}from"./components/ThemeProvider/ThemeProvider.js";export{default as Tipseen}from"./components/Tipseen/Tipseen.js";export{default as TipseenContent}from"./components/Tipseen/TipseenContent.js";export{default as TipseenWizard}from"./components/Tipseen/TipseenWizard.js";export{default as TipseenImage}from"./components/Tipseen/TipseenImage.js";export{default as TipseenMedia}from"./components/Tipseen/TipseenMedia/TipseenMedia.js";export{default as Toast}from"./components/Toast/Toast.js";export{default as ToastButton}from"./components/Toast/ToastButton/ToastButton.js";export{default as ToastLink}from"./components/Toast/ToastLink/ToastLink.js";export{default as Toggle}from"./components/Toggle/Toggle.js";export{default as Tooltip}from"./components/Tooltip/Tooltip.js";export{default as TransitionView}from"./components/TransitionView/TransitionView.js";export{default as VirtualizedGrid}from"./components/VirtualizedGrid/VirtualizedGrid.js";export{default as VirtualizedList}from"./components/VirtualizedList/VirtualizedList.js";export{default as ColorUtils}from"./utils/colors-utils.js";export{default as useKeyEvent}from"./hooks/useKeyEvent/index.js";export{default as useEventListener}from"./hooks/useEventListener/index.js";export{default as useDebounceEvent}from"./hooks/useDebounceEvent/index.js";export{default as useResizeObserver}from"./hooks/useResizeObserver.js";export{default as useAfterFirstRender}from"./hooks/useAfterFirstRender/index.js";export{default as useTimeout}from"./hooks/useTimeout/index.js";export{default as usePrevious}from"./hooks/usePrevious/index.js";export{default as useSetFocus}from"./hooks/useSetFocus/index.js";export{default as useMergeRefs}from"./hooks/useMergeRefs.js";export{default as useIsMouseOver}from"./hooks/useIsMouseOver.js";export{default as useHover}from"./hooks/useHover/useHover.js";export{default as useGridKeyboardNavigation}from"./hooks/useGridKeyboardNavigation/useGridKeyboardNavigation.js";export{default as useIsOverflowing}from"./hooks/useIsOverflowing/useIsOverflowing.js";export{default as useActiveDescendantListFocus}from"./hooks/useActiveDescendantListFocus/index.js";export{useMediaQuery}from"./hooks/useMediaQuery/index.js";export{default as useVibeMediaQuery}from"./hooks/useVibeMediaQuery/index.js";export{default as useListenFocusTriggers}from"./hooks/useListenFocusTriggers/index.js";export{default as useClickableProps}from"./hooks/useClickableProps/useClickableProps.js";export{default as useSwitch}from"./hooks/useSwitch/index.js";export{default as useElementsOverflowingIndex}from"./hooks/useElementsOverflowingIndex.js";export{default as useWizard}from"./hooks/useWizard/useWizard.js";export{withStaticProps,withStaticPropsWithoutForwardRef}from"./types/withStaticProps.js";export{getElementColor}from"./types/Colors.js";export{default as Dialog}from"../components/dialog/dist/Dialog/Dialog.js";export{default as DialogContentContainer}from"../components/dialog/dist/DialogContentContainer/DialogContentContainer.js";export{default as LayerProvider}from"../components/layer/dist/LayerProvider/LayerProvider.js";export{default as Button}from"../components/button/dist/Button/Button.js";export{default as Icon}from"../components/icon/dist/Icon/Icon.js";export{default as CustomSvgIcon}from"../components/icon/dist/Icon/CustomSvgIcon/CustomSvgIcon.js";export{default as Loader}from"../components/loader/dist/Loader/Loader.js";export{default as useClickOutside}from"../hooks/dist/useClickOutside/index.js";
1
+ import"../style/dist/index.min.css.js";export{default as Accordion}from"./components/Accordion/Accordion/Accordion.js";export{default as AccordionItem}from"./components/Accordion/AccordionItem/AccordionItem.js";export{default as AlertBanner}from"./components/AlertBanner/AlertBanner.js";export{default as AlertBannerButton}from"./components/AlertBanner/AlertBannerButton/AlertBannerButton.js";export{default as AlertBannerLink}from"./components/AlertBanner/AlertBannerLink/AlertBannerLink.js";export{default as AlertBannerText}from"./components/AlertBanner/AlertBannerText/AlertBannerText.js";export{default as AttentionBox}from"./components/AttentionBox/AttentionBox.js";export{default as AttentionBoxLink}from"./components/AttentionBox/AttentionBoxLink/AttentionBoxLink.js";export{default as Avatar}from"./components/Avatar/Avatar.js";export{default as AvatarGroup}from"./components/AvatarGroup/AvatarGroup.js";export{default as Badge}from"./components/Badge/Badge.js";export{default as Box}from"./components/Box/Box.js";export{default as BreadcrumbsBar}from"./components/BreadcrumbsBar/BreadcrumbsBar.js";export{default as BreadcrumbItem}from"./components/BreadcrumbsBar/BreadcrumbItem/BreadcrumbItem.js";export{default as BreadcrumbMenu}from"./components/BreadcrumbsBar/BreadcrumbMenu/BreadcrumbMenu.js";export{default as BreadcrumbMenuItem}from"./components/BreadcrumbsBar/BreadcrumbMenu/BreadcrumbMenuItem/BreadcrumbMenuItem.js";export{default as ButtonGroup}from"./components/ButtonGroup/ButtonGroup.js";export{default as Checkbox}from"./components/Checkbox/Checkbox.js";export{default as Chips}from"./components/Chips/Chips.js";export{default as Clickable}from"./components/Clickable/Clickable.js";export{default as ColorPicker}from"./components/ColorPicker/ColorPicker.js";export{default as ColorPickerContent}from"./components/ColorPicker/components/ColorPickerContent/ColorPickerContent.js";export{default as Combobox}from"./components/Combobox/Combobox.js";export{default as Counter}from"./components/Counter/Counter.js";export{default as DatePicker}from"./components/DatePicker/DatePicker.js";export{default as Divider}from"./components/Divider/Divider.js";export{default as Dropdown}from"./components/Dropdown/Dropdown.js";export{default as DropdownMenu}from"./components/Dropdown/components/menu/menu.js";export{default as DropdownOption}from"./components/Dropdown/components/option/option.js";export{default as DropdownSingleValue}from"./components/Dropdown/components/singleValue/singleValue.js";export{default as EditableHeading}from"./components/EditableHeading/EditableHeading.js";export{default as EditableText}from"./components/EditableText/EditableText.js";export{default as EmptyState}from"./components/EmptyState/EmptyState.js";export{default as ExpandCollapse}from"./components/ExpandCollapse/ExpandCollapse.js";export{default as Flex}from"./components/Flex/Flex.js";export{default as FormattedNumber}from"./components/FormattedNumber/FormattedNumber.js";export{GridKeyboardNavigationContext,useGridKeyboardNavigationContext}from"./components/GridKeyboardNavigationContext/GridKeyboardNavigationContext.js";export{default as Heading}from"./components/Heading/Heading.js";export{default as HiddenText}from"./components/HiddenText/HiddenText.js";export{default as IconButton}from"./components/IconButton/IconButton.js";export{default as Info}from"./components/Info/Info.js";export{default as Label}from"./components/Label/Label.js";export{default as Link}from"./components/Link/Link.js";export{default as List}from"./components/List/List.js";export{default as ListItem}from"./components/ListItem/ListItem.js";export{default as ListItemAvatar}from"./components/ListItemAvatar/ListItemAvatar.js";export{default as ListItemIcon}from"./components/ListItemIcon/ListItemIcon.js";export{default as ListTitle}from"./components/ListTitle/ListTitle.js";export{default as Menu}from"./components/Menu/Menu/Menu.js";export{default as MenuItem}from"./components/Menu/MenuItem/MenuItem.js";export{default as MenuItemButton}from"./components/Menu/MenuItemButton/MenuItemButton.js";export{default as MenuDivider}from"./components/Menu/MenuDivider/MenuDivider.js";export{default as MenuTitle}from"./components/Menu/MenuTitle/MenuTitle.js";export{default as MenuGridItem}from"./components/Menu/MenuGridItem/MenuGridItem.js";export{default as MenuButton}from"./components/MenuButton/MenuButton.js";export{default as NumberField}from"./components/NumberField/NumberField.js";export{default as Modal}from"./components/LegacyModal/LegacyModal.js";export{default as ModalHeader}from"./components/LegacyModal/LegacyModalHeader/LegacyModalHeader.js";export{default as ModalContent}from"./components/LegacyModal/LegacyModalContent/LegacyModalContent.js";export{default as ModalFooter}from"./components/LegacyModal/LegacyModalFooter/LegacyModalFooter.js";export{default as ModalFooterButtons}from"./components/LegacyModal/LegacyModalFooter/LegacyModalFooterButtons/LegacyModalFooterButtons.js";export{default as MultiStepIndicator}from"./components/MultiStepIndicator/MultiStepIndicator.js";export{default as LinearProgressBar}from"./components/ProgressBars/LinearProgressBar/LinearProgressBar.js";export{default as RadioButton}from"./components/RadioButton/RadioButton.js";export{default as Search}from"./components/Search/Search.js";export{default as Skeleton}from"./components/Skeleton/Skeleton.js";export{default as Slider}from"./components/Slider/Slider.js";export{default as SplitButton}from"./components/SplitButton/SplitButton.js";export{default as SplitButtonMenu}from"./components/SplitButton/SplitButtonMenu/SplitButtonMenu.js";export{default as Steps}from"./components/Steps/Steps.js";export{default as Table}from"./components/Table/Table/Table.js";export{default as TableContainer}from"./components/Table/TableContainer/TableContainer.js";export{default as TableHeader}from"./components/Table/TableHeader/TableHeader.js";export{default as TableHeaderCell}from"./components/Table/TableHeaderCell/TableHeaderCell.js";export{default as TableBody}from"./components/Table/TableBody/TableBody.js";export{default as TableVirtualizedBody}from"./components/Table/TableVirtualizedBody/TableVirtualizedBody.js";export{default as TableRow}from"./components/Table/TableRow/TableRow.js";export{default as TableRowMenu}from"./components/Table/TableRowMenu/TableRowMenu.js";export{default as TableCell}from"./components/Table/TableCell/TableCell.js";export{default as Tab}from"./components/Tabs/Tab/Tab.js";export{default as TabList}from"./components/Tabs/TabList/TabList.js";export{default as TabPanel}from"./components/Tabs/TabPanel/TabPanel.js";export{default as TabsContext}from"./components/Tabs/TabsContext/TabsContext.js";export{default as TabPanels}from"./components/Tabs/TabPanels/TabPanels.js";export{default as Text}from"./components/Text/Text.js";export{default as TextArea}from"./components/TextArea/TextArea.js";export{default as TextField}from"./components/TextField/TextField.js";export{default as TextWithHighlight}from"./components/TextWithHighlight/TextWithHighlight.js";export{default as ThemeProvider}from"./components/ThemeProvider/ThemeProvider.js";export{default as Tipseen}from"./components/Tipseen/Tipseen.js";export{default as TipseenContent}from"./components/Tipseen/TipseenContent.js";export{default as TipseenWizard}from"./components/Tipseen/TipseenWizard.js";export{default as TipseenImage}from"./components/Tipseen/TipseenImage.js";export{default as TipseenMedia}from"./components/Tipseen/TipseenMedia/TipseenMedia.js";export{default as Toast}from"./components/Toast/Toast.js";export{default as ToastButton}from"./components/Toast/ToastButton/ToastButton.js";export{default as ToastLink}from"./components/Toast/ToastLink/ToastLink.js";export{default as Toggle}from"./components/Toggle/Toggle.js";export{default as Tooltip}from"./components/Tooltip/Tooltip.js";export{default as TransitionView}from"./components/TransitionView/TransitionView.js";export{default as VirtualizedGrid}from"./components/VirtualizedGrid/VirtualizedGrid.js";export{default as VirtualizedList}from"./components/VirtualizedList/VirtualizedList.js";export{default as ColorUtils}from"./utils/colors-utils.js";export{default as useKeyEvent}from"./hooks/useKeyEvent/index.js";export{default as useEventListener}from"./hooks/useEventListener/index.js";export{default as useDebounceEvent}from"./hooks/useDebounceEvent/index.js";export{default as useResizeObserver}from"./hooks/useResizeObserver.js";export{default as useAfterFirstRender}from"./hooks/useAfterFirstRender/index.js";export{default as useTimeout}from"./hooks/useTimeout/index.js";export{default as usePrevious}from"./hooks/usePrevious/index.js";export{default as useSetFocus}from"./hooks/useSetFocus/index.js";export{default as useMergeRefs}from"./hooks/useMergeRefs.js";export{default as useIsMouseOver}from"./hooks/useIsMouseOver.js";export{default as useHover}from"./hooks/useHover/useHover.js";export{default as useGridKeyboardNavigation}from"./hooks/useGridKeyboardNavigation/useGridKeyboardNavigation.js";export{default as useIsOverflowing}from"./hooks/useIsOverflowing/useIsOverflowing.js";export{default as useActiveDescendantListFocus}from"./hooks/useActiveDescendantListFocus/index.js";export{useMediaQuery}from"./hooks/useMediaQuery/index.js";export{default as useVibeMediaQuery}from"./hooks/useVibeMediaQuery/index.js";export{default as useListenFocusTriggers}from"./hooks/useListenFocusTriggers/index.js";export{default as useClickableProps}from"./hooks/useClickableProps/useClickableProps.js";export{default as useSwitch}from"./hooks/useSwitch/index.js";export{default as useElementsOverflowingIndex}from"./hooks/useElementsOverflowingIndex.js";export{default as useWizard}from"./hooks/useWizard/useWizard.js";export{withStaticProps,withStaticPropsWithoutForwardRef}from"./types/withStaticProps.js";export{getElementColor}from"./types/Colors.js";export{default as Dialog}from"../components/dialog/dist/Dialog/Dialog.js";export{default as DialogContentContainer}from"../components/dialog/dist/DialogContentContainer/DialogContentContainer.js";export{default as LayerProvider}from"../components/layers/dist/LayerProvider/LayerProvider.js";export{default as Button}from"../components/button/dist/Button/Button.js";export{default as Icon}from"../components/icon/dist/Icon/Icon.js";export{default as CustomSvgIcon}from"../components/icon/dist/Icon/CustomSvgIcon/CustomSvgIcon.js";export{default as Loader}from"../components/loader/dist/Loader/Loader.js";export{default as useClickOutside}from"../hooks/dist/useClickOutside/index.js";
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- import{slicedToArray as e,defineProperty as n,toConsumableArray as o}from"../../../_virtual/_rollupPluginBabelHelpers.js";import{getTestId as t,ComponentDefaultTestId as r}from"../../tests/testIds.js";import i from"classnames";import{BaseSizes as a}from"../../constants/sizes.js";import s,{forwardRef as l,useRef as u,useContext as c,useMemo as d,useState as p,useEffect as m,useCallback as f}from"react";import v,{createFilter as O,components as b}from"react-select";import g from"react-select/async";import j from"react-select/base";import{noop as C}from"es-toolkit";import y from"./components/menu/menu.js";import M from"./components/DropdownIndicator/DropdownIndicator.js";import h from"./components/option/option.js";import w from"./components/singleValue/singleValue.js";import S from"./components/ClearIndicator/ClearIndicator.js";import I from"./components/MultiValueContainer/MultiValueContainer.js";import{isClient as D}from"../../utils/ssr-utils.js";import{DROPDOWN_CHIP_COLORS as V,DROPDOWN_MENU_PLACEMENT as P,DROPDOWN_MENU_POSITION as R,ADD_AUTO_HEIGHT_COMPONENTS as L,defaultCustomStyles as x,DROPDOWN_ID as E,DROPDOWN_MENU_ID as N,DROPDOWN_MENU_ARIA_LABEL as W,DROPDOWN_INPUT_ARIA_LABEL as A}from"./DropdownConstants.js";import T,{customTheme as z}from"./Dropdown.styles.js";import F from"./components/Control/Control.js";import B from"../Text/Text.js";import k from"./components/menu/menu.module.scss.js";import q from"./Dropdown.module.scss.js";import{withStaticProps as H}from"../../types/withStaticProps.js";import"../../utils/colors-vars-map.js";import{ComponentVibeId as _}from"../../tests/constants.js";import G from"../../../components/layer/dist/LayerProvider/LayerContext.js";var K=H(l((function(a,l){var O=a.className,V=a.optionWrapperClassName,P=a.singleValueWrapperClassName,R=a.dropdownMenuWrapperClassName,H=a.placeholder,K=void 0===H?"":H,J=a.allowPlaceholderEllipsis,Q=a.disabled,U=void 0!==Q&&Q,X=a.readOnly,Y=void 0!==X&&X,Z=a.onMenuOpen,$=void 0===Z?C:Z,ee=a.onMenuClose,ne=void 0===ee?C:ee,oe=a.onFocus,te=void 0===oe?C:oe,re=a.onBlur,ie=void 0===re?C:re,ae=a.onScroll,se=void 0===ae?C:ae,le=a.onMenuScrollToBottom,ue=void 0===le?C:le,ce=a.onChange,de=void 0===ce?C:ce,pe=a.searchable,me=void 0===pe||pe,fe=a.captureMenuScroll,ve=void 0!==fe&&fe,Oe=a.options,be=void 0===Oe?[]:Oe,ge=a.defaultValue,je=a.value,Ce=a.noOptionsMessage,ye=a.openMenuOnFocus,Me=a.openMenuOnClick,he=a.clearable,we=void 0===he||he,Se=a.OptionRenderer,Ie=a.optionRenderer,De=a.ValueRenderer,Ve=a.valueRenderer,Pe=a.menuRenderer,Re=a.menuPlacement,Le=void 0===Re?"bottom":Re,xe=a.rtl,Ee=a.size,Ne=void 0===Ee?"medium":Ee,We=a.asyncOptions,Ae=a.cacheOptions,Te=a.defaultOptions,ze=a.isVirtualized,Fe=a.menuPortalTarget,Be=a.extraStyles,ke=void 0===Be?x:Be,qe=a.maxMenuHeight,He=a.menuIsOpen,_e=a.tabIndex,Ge=void 0===_e?"0":_e,Ke=a.id,Je=void 0===Ke?E:Ke,Qe=a.menuId,Ue=void 0===Qe?N:Qe,Xe=a.menuAriaLabel,Ye=void 0===Xe?W:Xe,Ze=a.inputAriaLabel,$e=void 0===Ze?A:Ze,en=a.autoFocus,nn=void 0!==en&&en,on=a.multi,tn=void 0!==on&&on,rn=a.multiline,an=void 0!==rn&&rn,sn=a.onOptionRemove,ln=a.onOptionSelect,un=a.onClear,cn=a.onInputChange,dn=void 0===cn?C:cn,pn=a.closeMenuOnSelect,mn=void 0===pn?!tn:pn,fn=a.closeMenuOnScroll,vn=void 0!==fn&&fn,On=a.withMandatoryDefaultOptions,bn=void 0!==On&&On,gn=a.isOptionSelected,jn=a.insideOverflowContainer,Cn=void 0!==jn&&jn,yn=a.insideOverflowWithTransformContainer,Mn=void 0!==yn&&yn,hn=a.insideLayerContext,wn=void 0!==hn&&hn,Sn=a.tooltipContent,In=void 0===Sn?"":Sn,Dn=a.onKeyDown,Vn=void 0===Dn?C:Dn,Pn=a.isLoading,Rn=void 0!==Pn&&Pn,Ln=a.loadingMessage,xn=a.ariaLabel,En=a.tabSelectsValue,Nn=void 0===En||En,Wn=a.popupsContainerSelector,An=a.filterOption,Tn=a.menuPosition,zn=void 0===Tn?"absolute":Tn,Fn=a["data-testid"],Bn=a.withGroupDivider,kn=void 0!==Bn&&Bn,qn=a.inputValue,Hn=a.blurInputOnSelect,_n=a.multiValueDialogClassName,Gn=u(),Kn=c(G).layerRef,Jn=wn&&(null==Kn?void 0:Kn.current)||Fe||Wn&&document.querySelector(Wn),Qn=d((function(){return ge?Array.isArray(ge)?ge.map((function(e){return Object.assign(Object.assign({},e),{isMandatory:!0})})):Object.assign(Object.assign({},ge),{isMandatory:!0}):ge}),[ge]);j.prototype.renderLiveRegion=function(){return null};var Un=p(null),Xn=e(Un,2),Yn=Xn[0],Zn=Xn[1];m((function(){D()&&(!function(){try{return"function"==typeof require&&"undefined"!=typeof module&&"undefined"!=typeof process&&"test"===process.env.NODE_ENV}catch(e){return!1}}()?import("react-windowed-select").then((function(e){Zn((function(){return e.WindowedMenuList}))})):Zn((function(){return require("react-windowed-select").WindowedMenuList})))}),[]);var $n=p(Qn||[]),eo=e($n,2),no=eo[0],oo=eo[1],to=p(""),ro=e(to,2),io=ro[0],ao=ro[1],so=Ie||Se,lo=Ve||De,uo=!!je,co=null!=je?je:no,po=d((function(){return Array.isArray(co)?co.reduce((function(e,o){return Object.assign(Object.assign({},e),n({},o.value,o))}),{}):{}}),[co]),mo=d((function(){return xn||"".concat(Y?"Readonly ":""," ").concat(In," ").concat(Array.isArray(co)?"Selected: ".concat(co.map((function(e){return e.label})).join(", ")):"Select")}),[xn,Y,co,In]),fo=tn?co:je,vo=d((function(){var o=T({size:Ne,rtl:xe,insideOverflowContainer:Cn,controlRef:Gn,insideOverflowWithTransformContainer:Mn,withGroupDivider:kn,searchable:me,allowPlaceholderEllipsis:J}),t=ke(o),r=Object.entries(t).reduce((function(t,r){var i=e(r,2),a=i[0],s=i[1];return Object.assign(Object.assign({},t),n({},a,(function(e,n){var t=o[a],r=t?t(e,n):e;return s(r,n)})))}),{});if(tn){an&&L.forEach((function(e){var n=r[e];r[e]=function(e,o){return Object.assign(Object.assign({},n(e,o)),{height:"auto"})}}));var i=r.valueContainer;r.valueContainer=function(e,n){return Object.assign(Object.assign({},i(e,n)),{paddingLeft:6})}}return r}),[Ne,xe,Cn,Mn,J,ke,tn,an]),Oo=f((function(e){return s.createElement(y,Object.assign({},e,{id:Ue,ariaLabel:Ye,Renderer:Pe,dropdownMenuWrapperClassName:R,onScroll:se}))}),[R,Pe,Ue,Ye,se]),bo=f((function(e){return s.createElement(M,Object.assign({},e,{size:Ne}))}),[Ne]),go=f((function(e){return s.createElement(h,Object.assign({setFocusedOptionId:ao},e,{Renderer:so,optionWrapperClassName:V}))}),[so,V,ao]),jo=f((function(e){var n=e.selectProps,o=n.focusedOptionId,t=n.menuIsOpen;return s.createElement(b.Input,Object.assign({},e,{"aria-activedescendant":o&&t?o:"",role:"combobox","aria-expanded":!Y&&t,"aria-label":$e,"aria-controls":Ue,readOnly:!me||void 0}))}),[Ue,Y]),Co=f((function(e){return s.createElement(w,Object.assign({},e,{readOnly:Y,Renderer:lo,selectedOption:co[0],singleValueWrapperClassName:P}))}),[lo,Y,co,P]),yo=f((function(e){return s.createElement(S,Object.assign({},e,{size:Ne}))}),[Ne]),Mo=d((function(){return function(e,n){sn&&sn(po[e]);var o=Array.isArray(co)?co.filter((function(n){return n.value!==e})):co;de&&de(o,n),oo(o)}}),[de,sn,co,po]),ho=d((function(){return{selectedOptions:co,onSelectedDelete:Mo,isMultiline:an,insideOverflowContainer:Cn,insideOverflowWithTransformContainer:Mn,controlRef:Gn,tooltipContent:In,popupsContainerSelector:wn?null==Kn?void 0:Kn.current:Wn,size:Ne,dialogClassName:_n}}),[co,Mo,an,Cn,Mn,In,Kn,Wn,wn,Ne,_n]),wo=We?g:v;wo=wo.default||wo;var So=Object.assign({},We&&Object.assign({loadOptions:We,cacheOptions:Ae},Te&&{defaultOptions:Te})),Io=Object.assign(Object.assign({},!We&&{options:be}),tn&&{isMulti:!0}),Do=f((function(e){var n,o=e.target;return!(null===(n=null==o?void 0:o.parentElement)||void 0===n?void 0:n.classList.contains(k.dropdownMenuWrapper))&&(vn||Cn||Mn)}),[Cn,Mn,vn]),Vo=d((function(){return J?s.createElement(B,{type:"text2",color:"inherit"},K):K}),[J,K]);return s.createElement(wo,Object.assign({className:i(q.dropdown,O),selectProps:ho,components:Object.assign(Object.assign({DropdownIndicator:bo,Menu:Oo,ClearIndicator:yo,Input:jo,Option:go,Control:F,SingleValue:Co},tn&&{MultiValue:C,ValueContainer:I}),ze&&Yn&&{MenuList:Yn}),closeMenuOnScroll:Do,size:Ne,noOptionsMessage:Ce,placeholder:Vo,isDisabled:U,isClearable:!Y&&we,isSearchable:!Y,readOnly:Y,"aria-readonly":Y,"aria-label":mo,"aria-details":In,"aria-haspopup":"listbox",defaultValue:ge,value:fo,onMenuOpen:$,onMenuClose:ne,onFocus:te,onBlur:ie,onMenuScrollToBottom:ue,captureMenuScroll:ve,onChange:function(e,n){switch(de&&de(e,n),n.action){case"select-option":var t=tn?n.option:e;ln&&ln(t),uo||oo([].concat(o(co),[t]));break;case"clear":un&&un(),uo||oo(bn?Qn:[])}},onKeyDown:Vn,onInputChange:dn,openMenuOnFocus:ye,openMenuOnClick:Me,focusedOptionId:io,isRtl:xe,styles:vo,theme:z,maxMenuHeight:qe,menuPortalTarget:Jn,menuPlacement:Le,menuPosition:zn,menuIsOpen:!Y&&He,tabIndex:Ge,id:Je,"data-testid":Fn||t(r.DROPDOWN,Je),"data-vibe":_.DROPDOWN,autoFocus:nn,closeMenuOnSelect:mn,ref:l,withMandatoryDefaultOptions:bn,isOptionSelected:gn,isLoading:Rn,loadingMessage:Ln,tabSelectsValue:Nn,filterOption:An,inputValue:qn,blurInputOnSelect:Hn},So,Io))})),{sizes:a,chipColors:V,menuPlacements:P,menuPositions:R,createFilter:O});export{K as default};
1
+ import{slicedToArray as e,defineProperty as n,toConsumableArray as o}from"../../../_virtual/_rollupPluginBabelHelpers.js";import{getTestId as t,ComponentDefaultTestId as r}from"../../tests/testIds.js";import i from"classnames";import{BaseSizes as a}from"../../constants/sizes.js";import s,{forwardRef as l,useRef as u,useContext as c,useMemo as d,useState as p,useEffect as m,useCallback as f}from"react";import v,{createFilter as O,components as b}from"react-select";import g from"react-select/async";import j from"react-select/base";import{noop as C}from"es-toolkit";import y from"./components/menu/menu.js";import M from"./components/DropdownIndicator/DropdownIndicator.js";import h from"./components/option/option.js";import w from"./components/singleValue/singleValue.js";import S from"./components/ClearIndicator/ClearIndicator.js";import I from"./components/MultiValueContainer/MultiValueContainer.js";import{isClient as D}from"../../utils/ssr-utils.js";import{DROPDOWN_CHIP_COLORS as V,DROPDOWN_MENU_PLACEMENT as P,DROPDOWN_MENU_POSITION as R,ADD_AUTO_HEIGHT_COMPONENTS as L,defaultCustomStyles as x,DROPDOWN_ID as E,DROPDOWN_MENU_ID as N,DROPDOWN_MENU_ARIA_LABEL as W,DROPDOWN_INPUT_ARIA_LABEL as A}from"./DropdownConstants.js";import T,{customTheme as z}from"./Dropdown.styles.js";import F from"./components/Control/Control.js";import B from"../Text/Text.js";import k from"./components/menu/menu.module.scss.js";import q from"./Dropdown.module.scss.js";import{withStaticProps as H}from"../../types/withStaticProps.js";import"../../utils/colors-vars-map.js";import{ComponentVibeId as _}from"../../tests/constants.js";import G from"../../../components/layers/dist/LayerProvider/LayerContext.js";var K=H(l((function(a,l){var O=a.className,V=a.optionWrapperClassName,P=a.singleValueWrapperClassName,R=a.dropdownMenuWrapperClassName,H=a.placeholder,K=void 0===H?"":H,J=a.allowPlaceholderEllipsis,Q=a.disabled,U=void 0!==Q&&Q,X=a.readOnly,Y=void 0!==X&&X,Z=a.onMenuOpen,$=void 0===Z?C:Z,ee=a.onMenuClose,ne=void 0===ee?C:ee,oe=a.onFocus,te=void 0===oe?C:oe,re=a.onBlur,ie=void 0===re?C:re,ae=a.onScroll,se=void 0===ae?C:ae,le=a.onMenuScrollToBottom,ue=void 0===le?C:le,ce=a.onChange,de=void 0===ce?C:ce,pe=a.searchable,me=void 0===pe||pe,fe=a.captureMenuScroll,ve=void 0!==fe&&fe,Oe=a.options,be=void 0===Oe?[]:Oe,ge=a.defaultValue,je=a.value,Ce=a.noOptionsMessage,ye=a.openMenuOnFocus,Me=a.openMenuOnClick,he=a.clearable,we=void 0===he||he,Se=a.OptionRenderer,Ie=a.optionRenderer,De=a.ValueRenderer,Ve=a.valueRenderer,Pe=a.menuRenderer,Re=a.menuPlacement,Le=void 0===Re?"bottom":Re,xe=a.rtl,Ee=a.size,Ne=void 0===Ee?"medium":Ee,We=a.asyncOptions,Ae=a.cacheOptions,Te=a.defaultOptions,ze=a.isVirtualized,Fe=a.menuPortalTarget,Be=a.extraStyles,ke=void 0===Be?x:Be,qe=a.maxMenuHeight,He=a.menuIsOpen,_e=a.tabIndex,Ge=void 0===_e?"0":_e,Ke=a.id,Je=void 0===Ke?E:Ke,Qe=a.menuId,Ue=void 0===Qe?N:Qe,Xe=a.menuAriaLabel,Ye=void 0===Xe?W:Xe,Ze=a.inputAriaLabel,$e=void 0===Ze?A:Ze,en=a.autoFocus,nn=void 0!==en&&en,on=a.multi,tn=void 0!==on&&on,rn=a.multiline,an=void 0!==rn&&rn,sn=a.onOptionRemove,ln=a.onOptionSelect,un=a.onClear,cn=a.onInputChange,dn=void 0===cn?C:cn,pn=a.closeMenuOnSelect,mn=void 0===pn?!tn:pn,fn=a.closeMenuOnScroll,vn=void 0!==fn&&fn,On=a.withMandatoryDefaultOptions,bn=void 0!==On&&On,gn=a.isOptionSelected,jn=a.insideOverflowContainer,Cn=void 0!==jn&&jn,yn=a.insideOverflowWithTransformContainer,Mn=void 0!==yn&&yn,hn=a.insideLayerContext,wn=void 0!==hn&&hn,Sn=a.tooltipContent,In=void 0===Sn?"":Sn,Dn=a.onKeyDown,Vn=void 0===Dn?C:Dn,Pn=a.isLoading,Rn=void 0!==Pn&&Pn,Ln=a.loadingMessage,xn=a.ariaLabel,En=a.tabSelectsValue,Nn=void 0===En||En,Wn=a.popupsContainerSelector,An=a.filterOption,Tn=a.menuPosition,zn=void 0===Tn?"absolute":Tn,Fn=a["data-testid"],Bn=a.withGroupDivider,kn=void 0!==Bn&&Bn,qn=a.inputValue,Hn=a.blurInputOnSelect,_n=a.multiValueDialogClassName,Gn=u(),Kn=c(G).layerRef,Jn=wn&&(null==Kn?void 0:Kn.current)||Fe||Wn&&document.querySelector(Wn),Qn=d((function(){return ge?Array.isArray(ge)?ge.map((function(e){return Object.assign(Object.assign({},e),{isMandatory:!0})})):Object.assign(Object.assign({},ge),{isMandatory:!0}):ge}),[ge]);j.prototype.renderLiveRegion=function(){return null};var Un=p(null),Xn=e(Un,2),Yn=Xn[0],Zn=Xn[1];m((function(){D()&&(!function(){try{return"function"==typeof require&&"undefined"!=typeof module&&"undefined"!=typeof process&&"test"===process.env.NODE_ENV}catch(e){return!1}}()?import("react-windowed-select").then((function(e){Zn((function(){return e.WindowedMenuList}))})):Zn((function(){return require("react-windowed-select").WindowedMenuList})))}),[]);var $n=p(Qn||[]),eo=e($n,2),no=eo[0],oo=eo[1],to=p(""),ro=e(to,2),io=ro[0],ao=ro[1],so=Ie||Se,lo=Ve||De,uo=!!je,co=null!=je?je:no,po=d((function(){return Array.isArray(co)?co.reduce((function(e,o){return Object.assign(Object.assign({},e),n({},o.value,o))}),{}):{}}),[co]),mo=d((function(){return xn||"".concat(Y?"Readonly ":""," ").concat(In," ").concat(Array.isArray(co)?"Selected: ".concat(co.map((function(e){return e.label})).join(", ")):"Select")}),[xn,Y,co,In]),fo=tn?co:je,vo=d((function(){var o=T({size:Ne,rtl:xe,insideOverflowContainer:Cn,controlRef:Gn,insideOverflowWithTransformContainer:Mn,withGroupDivider:kn,searchable:me,allowPlaceholderEllipsis:J}),t=ke(o),r=Object.entries(t).reduce((function(t,r){var i=e(r,2),a=i[0],s=i[1];return Object.assign(Object.assign({},t),n({},a,(function(e,n){var t=o[a],r=t?t(e,n):e;return s(r,n)})))}),{});if(tn){an&&L.forEach((function(e){var n=r[e];r[e]=function(e,o){return Object.assign(Object.assign({},n(e,o)),{height:"auto"})}}));var i=r.valueContainer;r.valueContainer=function(e,n){return Object.assign(Object.assign({},i(e,n)),{paddingLeft:6})}}return r}),[Ne,xe,Cn,Mn,J,ke,tn,an]),Oo=f((function(e){return s.createElement(y,Object.assign({},e,{id:Ue,ariaLabel:Ye,Renderer:Pe,dropdownMenuWrapperClassName:R,onScroll:se}))}),[R,Pe,Ue,Ye,se]),bo=f((function(e){return s.createElement(M,Object.assign({},e,{size:Ne}))}),[Ne]),go=f((function(e){return s.createElement(h,Object.assign({setFocusedOptionId:ao},e,{Renderer:so,optionWrapperClassName:V}))}),[so,V,ao]),jo=f((function(e){var n=e.selectProps,o=n.focusedOptionId,t=n.menuIsOpen;return s.createElement(b.Input,Object.assign({},e,{"aria-activedescendant":o&&t?o:"",role:"combobox","aria-expanded":!Y&&t,"aria-label":$e,"aria-controls":Ue,readOnly:!me||void 0}))}),[Ue,Y]),Co=f((function(e){return s.createElement(w,Object.assign({},e,{readOnly:Y,Renderer:lo,selectedOption:co[0],singleValueWrapperClassName:P}))}),[lo,Y,co,P]),yo=f((function(e){return s.createElement(S,Object.assign({},e,{size:Ne}))}),[Ne]),Mo=d((function(){return function(e,n){sn&&sn(po[e]);var o=Array.isArray(co)?co.filter((function(n){return n.value!==e})):co;de&&de(o,n),oo(o)}}),[de,sn,co,po]),ho=d((function(){return{selectedOptions:co,onSelectedDelete:Mo,isMultiline:an,insideOverflowContainer:Cn,insideOverflowWithTransformContainer:Mn,controlRef:Gn,tooltipContent:In,popupsContainerSelector:wn?null==Kn?void 0:Kn.current:Wn,size:Ne,dialogClassName:_n}}),[co,Mo,an,Cn,Mn,In,Kn,Wn,wn,Ne,_n]),wo=We?g:v;wo=wo.default||wo;var So=Object.assign({},We&&Object.assign({loadOptions:We,cacheOptions:Ae},Te&&{defaultOptions:Te})),Io=Object.assign(Object.assign({},!We&&{options:be}),tn&&{isMulti:!0}),Do=f((function(e){var n,o=e.target;return!(null===(n=null==o?void 0:o.parentElement)||void 0===n?void 0:n.classList.contains(k.dropdownMenuWrapper))&&(vn||Cn||Mn)}),[Cn,Mn,vn]),Vo=d((function(){return J?s.createElement(B,{type:"text2",color:"inherit"},K):K}),[J,K]);return s.createElement(wo,Object.assign({className:i(q.dropdown,O),selectProps:ho,components:Object.assign(Object.assign({DropdownIndicator:bo,Menu:Oo,ClearIndicator:yo,Input:jo,Option:go,Control:F,SingleValue:Co},tn&&{MultiValue:C,ValueContainer:I}),ze&&Yn&&{MenuList:Yn}),closeMenuOnScroll:Do,size:Ne,noOptionsMessage:Ce,placeholder:Vo,isDisabled:U,isClearable:!Y&&we,isSearchable:!Y,readOnly:Y,"aria-readonly":Y,"aria-label":mo,"aria-details":In,"aria-haspopup":"listbox",defaultValue:ge,value:fo,onMenuOpen:$,onMenuClose:ne,onFocus:te,onBlur:ie,onMenuScrollToBottom:ue,captureMenuScroll:ve,onChange:function(e,n){switch(de&&de(e,n),n.action){case"select-option":var t=tn?n.option:e;ln&&ln(t),uo||oo([].concat(o(co),[t]));break;case"clear":un&&un(),uo||oo(bn?Qn:[])}},onKeyDown:Vn,onInputChange:dn,openMenuOnFocus:ye,openMenuOnClick:Me,focusedOptionId:io,isRtl:xe,styles:vo,theme:z,maxMenuHeight:qe,menuPortalTarget:Jn,menuPlacement:Le,menuPosition:zn,menuIsOpen:!Y&&He,tabIndex:Ge,id:Je,"data-testid":Fn||t(r.DROPDOWN,Je),"data-vibe":_.DROPDOWN,autoFocus:nn,closeMenuOnSelect:mn,ref:l,withMandatoryDefaultOptions:bn,isOptionSelected:gn,isLoading:Rn,loadingMessage:Ln,tabSelectsValue:Nn,filterOption:An,inputValue:qn,blurInputOnSelect:Hn},So,Io))})),{sizes:a,chipColors:V,menuPlacements:P,menuPositions:R,createFilter:O});export{K as default};
2
2
  //# sourceMappingURL=Dropdown.js.map