@foxford/ui 2.53.0 → 2.54.0-beta-1aa2896-20241202
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_virtual/index5.mjs +1 -1
- package/_virtual/index6.mjs +1 -1
- package/components/Arrow/Arrow.js +1 -1
- package/components/Arrow/Arrow.js.map +1 -1
- package/components/Arrow/Arrow.mjs +1 -1
- package/components/Arrow/Arrow.mjs.map +1 -1
- package/components/Arrow/style.js +1 -1
- package/components/Arrow/style.js.map +1 -1
- package/components/Arrow/style.mjs +1 -1
- package/components/Arrow/style.mjs.map +1 -1
- package/components/Button/style.js +1 -1
- package/components/Button/style.js.map +1 -1
- package/components/Button/style.mjs +1 -1
- package/components/Button/style.mjs.map +1 -1
- package/components/Dropdown/Dropdown.js +1 -1
- package/components/Dropdown/Dropdown.js.map +1 -1
- package/components/Dropdown/Dropdown.mjs +1 -1
- package/components/Dropdown/Dropdown.mjs.map +1 -1
- package/components/Input/Input.js +1 -1
- package/components/Input/Input.js.map +1 -1
- package/components/Input/Input.mjs +1 -1
- package/components/Input/Input.mjs.map +1 -1
- package/components/Textarea/Textarea.js +1 -1
- package/components/Textarea/Textarea.js.map +1 -1
- package/components/Textarea/Textarea.mjs +1 -1
- package/components/Textarea/Textarea.mjs.map +1 -1
- package/dts/index.d.ts +400 -142
- package/external/.pnpm/@foxford_icon-pack@0.10.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@foxford/icon-pack/icons/LoaderFill/index.mjs +1 -1
- package/external/.pnpm/@foxford_icon-pack@0.10.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@foxford/icon-pack/icons/NotifFill/index.mjs +1 -1
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.mjs","sources":["../../../../src/components/Button/style.ts"],"sourcesContent":["import styled, { css, keyframes } from 'styled-components'\nimport tinycolor from 'tinycolor2'\nimport { LoaderFill } from '@foxford/icon-pack'\nimport { property, responsiveNamedProperty } from 'mixins/responsive-property'\nimport { color } from 'mixins/color'\nimport type { PossibleValues, CalcProperty } from 'mixins/responsive-property'\nimport { createShouldForwardProp } from 'shared/utils/style'\nimport { focus } from 'mixins/focus'\nimport { responsiveSize } from 'mixins/responsive-size'\nimport {\n responsiveFluidPropKeyRegExp,\n responsiveWidthPropKeyRegExp,\n responsivePaddingPropKeyRegExp,\n responsiveFontSizePropKeyRegExp,\n responsiveHeightPropKeyRegExp,\n} from 'shared/regexp'\nimport type { CSSColor } from 'shared/types'\nimport type { StyledButtonProps, ButtonPalette } from './types'\n\nconst shouldForwardButtonProp = createShouldForwardProp(\n (propKey) =>\n ![\n 'fluid',\n 'width',\n 'display',\n 'padding',\n 'paddingTop',\n 'paddingRight',\n 'paddingBottom',\n 'paddingLeft',\n 'fontSize',\n 'height',\n 'inline',\n 'round',\n 'success',\n 'loading',\n 'black',\n 'danger',\n 'onColored',\n 'clear',\n 'base',\n 'outline',\n 'autoRel',\n 'noSpacing',\n 'primary',\n 'secondary',\n 'inverted',\n 'rounded',\n 'basic',\n ].includes(propKey),\n (propKey) =>\n !responsiveFluidPropKeyRegExp.test(propKey) &&\n !responsiveWidthPropKeyRegExp.test(propKey) &&\n !responsivePaddingPropKeyRegExp.test(propKey) &&\n !responsiveFontSizePropKeyRegExp.test(propKey) &&\n !responsiveHeightPropKeyRegExp.test(propKey)\n)\n\nconst WIDTHS: Record<string, number> = {\n xl: 320,\n l: 280,\n m: 245,\n s: 180,\n xs: 140,\n}\n\nconst loadingAnimation = keyframes`\n 0% {\n background-position: 0 0;\n }\n 100% {\n background-position: 50px 50px;\n }\n`\n\nconst spinAnimation = keyframes`\n 100% {\n transform: rotate(360deg);\n }\n`\n\nconst defaultLoadingStyles = css`\n background-image: linear-gradient(\n -45deg,\n rgba(255, 255, 255, 0.2) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.2) 50%,\n rgba(255, 255, 255, 0.2) 75%,\n transparent 75%,\n transparent\n );\n background-size: 25px 25px;\n animation: ${loadingAnimation} 2s linear infinite;\n cursor: progress;\n`\n\nconst getWidth = (width: PossibleValues): PossibleValues => {\n if (width === 'auto') return 'auto'\n if (typeof width === 'number') return width\n if (typeof width === 'boolean') return width\n\n if (width && WIDTHS[width]) return WIDTHS[width]\n\n return 'auto'\n}\n\nconst fluidStyles: CalcProperty = () => css`\n min-width: initial;\n width: 100%;\n`\n\nconst template = (palette: ButtonPalette) => `\n color: ${palette.color};\n background-color: ${palette.backgroundColor};\n border-color: ${palette.borderColor};\n &::before {\n box-shadow: inset 0px 4px 0px ${palette.shadowColor};\n }\n &:hover {\n color: ${palette.colorHover};\n background-color: ${palette.backgroundColorHover};\n border-color: ${palette.borderColorHover};\n }\n &:active {\n color: ${palette.colorActive};\n background-color: ${palette.backgroundColorActive};\n border-color: ${palette.borderColorActive};\n }\n &:disabled {\n color: ${palette.colorDisabled};\n background-color: ${palette.backgroundColorDisabled};\n border-color: ${palette.borderColorDisabled};\n }\n`\n\nconst COLOR_SCHEMA = {\n onColored: {\n clear: css<StyledButtonProps>`\n ${(props) =>\n template({\n color: props.theme.colors['content-oncolor-primary'],\n backgroundColor: props.theme.colors.transparent,\n borderColor: props.theme.colors.transparent,\n colorHover: props.theme.colors['content-oncolor-primary'],\n backgroundColorHover: props.theme.colors['bg-oncontrast-hover'],\n borderColorHover: props.theme.colors.transparent,\n colorActive: props.theme.colors['content-oncolor-primary'],\n backgroundColorActive: props.theme.colors['bg-oncontrast-hover'],\n borderColorActive: props.theme.colors.transparent,\n colorDisabled: props.loading\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-oncolor-disabled'],\n backgroundColorDisabled: props.theme.colors.transparent,\n borderColorDisabled: props.theme.colors.transparent,\n shadowColor: props.theme.colors['bg-oncontrast-hover'],\n ...props.palette,\n })}\n `,\n base: css<StyledButtonProps>`\n ${(props) =>\n template({\n color: props.success ? props.theme.colors['alert-success'] : props.theme.colors['content-oncolor-primary'],\n backgroundColor: props.success\n ? props.theme.colors['bg-oncolor-primary']\n : props.theme.colors['bg-oncolor-secondary'],\n borderColor: props.theme.colors.transparent,\n colorHover: props.success\n ? props.theme.colors['alert-success']\n : props.theme.colors['content-oncolor-primary'],\n backgroundColorHover: props.success\n ? (tinycolor(props.theme.colors['bg-oncolor-primary']).darken(2).toString() as CSSColor)\n : (tinycolor(props.theme.colors['bg-oncolor-secondary']).darken(4).toString() as CSSColor),\n borderColorHover: props.theme.colors.transparent,\n colorActive: props.success\n ? props.theme.colors['alert-success']\n : props.theme.colors['content-oncolor-primary'],\n backgroundColorActive: props.success\n ? (tinycolor(props.theme.colors['bg-oncolor-primary']).darken(2).toString() as CSSColor)\n : (tinycolor(props.theme.colors['bg-oncolor-secondary']).darken(4).toString() as CSSColor),\n borderColorActive: props.theme.colors.transparent,\n colorDisabled: props.loading\n ? props.theme.colors['content-oncolor-constant']\n : props.theme.colors['content-oncolor-disabled'],\n backgroundColorDisabled: props.loading\n ? props.theme.colors['bg-oncolor-primary']\n : props.theme.colors['bg-oncolor-disabled'],\n borderColorDisabled: props.theme.colors.transparent,\n shadowColor: props.theme.colors['bg-oncolor-hover'],\n ...props.palette,\n })}\n `,\n outline: css<StyledButtonProps>`\n ${(props) =>\n template({\n color: props.success\n ? props.theme.colors['alert-success']\n : props.loading\n ? props.theme.colors['content-oncolor-constant']\n : props.theme.colors['content-oncolor-primary'],\n backgroundColor:\n props.success || props.loading ? props.theme.colors['bg-oncolor-primary'] : props.theme.colors.transparent,\n borderColor:\n props.success || props.loading\n ? props.theme.colors.transparent\n : props.theme.colors['border-oncolor-default'],\n colorHover: props.success\n ? props.theme.colors['alert-success']\n : props.theme.colors['content-oncolor-constant'],\n backgroundColorHover: props.success\n ? (tinycolor(props.theme.colors['bg-oncolor-primary']).darken(2).toString() as CSSColor)\n : props.theme.colors['bg-oncolor-primary'],\n borderColorHover: props.theme.colors.transparent,\n colorActive: props.success\n ? props.theme.colors['alert-success']\n : props.theme.colors['content-oncolor-constant'],\n backgroundColorActive: props.success\n ? (tinycolor(props.theme.colors['bg-oncolor-primary']).darken(2).toString() as CSSColor)\n : props.theme.colors['bg-oncolor-primary'],\n borderColorActive: props.theme.colors.transparent,\n colorDisabled: props.loading\n ? props.theme.colors['content-oncolor-constant']\n : props.theme.colors['content-oncolor-disabled'],\n backgroundColorDisabled: props.loading\n ? props.theme.colors['bg-oncolor-primary']\n : props.theme.colors['bg-oncolor-disabled'],\n borderColorDisabled: props.theme.colors.transparent,\n shadowColor: props.theme.colors['bg-oncolor-hover'],\n ...props.palette,\n })}\n `,\n default: css<StyledButtonProps>`\n ${(props) =>\n template({\n color: props.success ? props.theme.colors['alert-success'] : props.theme.colors['content-oncolor-constant'],\n backgroundColor: props.theme.colors['bg-oncolor-primary'],\n borderColor: props.theme.colors.transparent,\n colorHover: props.success\n ? props.theme.colors['alert-success']\n : props.theme.colors['content-oncolor-constant'],\n backgroundColorHover: tinycolor(props.theme.colors['bg-oncolor-primary']).darken(2).toString() as CSSColor,\n borderColorHover: props.theme.colors.transparent,\n colorActive: props.success\n ? props.theme.colors['alert-success']\n : props.theme.colors['content-oncolor-constant'],\n backgroundColorActive: tinycolor(props.theme.colors['bg-oncolor-primary']).darken(2).toString() as CSSColor,\n borderColorActive: props.theme.colors.transparent,\n colorDisabled: props.loading\n ? props.theme.colors['content-oncolor-constant']\n : props.theme.colors['content-oncolor-disabled'],\n backgroundColorDisabled: props.loading\n ? props.theme.colors['bg-oncolor-primary']\n : props.theme.colors['bg-oncolor-disabled'],\n borderColorDisabled: props.theme.colors.transparent,\n shadowColor: props.theme.colors['bg-oncolor-hover'],\n ...props.palette,\n })}\n `,\n },\n danger: {\n clear: css<StyledButtonProps>`\n ${(props) =>\n template({\n color: props.success ? props.theme.colors['alert-success'] : props.theme.colors['alert-error'],\n backgroundColor: props.theme.colors.transparent,\n borderColor: props.theme.colors.transparent,\n colorHover: props.success ? props.theme.colors['alert-success'] : props.theme.colors['alert-error'],\n backgroundColorHover: props.theme.colors['bg-oncolor-hover'],\n borderColorHover: props.theme.colors.transparent,\n colorActive: props.success ? props.theme.colors['alert-success'] : props.theme.colors['alert-error'],\n backgroundColorActive: props.theme.colors['bg-oncolor-hover'],\n borderColorActive: props.theme.colors.transparent,\n colorDisabled: props.loading ? props.theme.colors['alert-error'] : props.theme.colors['content-disabled'],\n backgroundColorDisabled: props.theme.colors.transparent,\n borderColorDisabled: props.theme.colors.transparent,\n shadowColor: props.theme.colors['bg-oncolor-hover'],\n ...props.palette,\n })}\n `,\n base: css<StyledButtonProps>`\n ${(props) =>\n template({\n color: props.success ? props.theme.colors['content-oncolor-primary'] : props.theme.colors['alert-error'],\n backgroundColor: props.success\n ? props.theme.colors['alert-bg-success-500']\n : props.theme.colors['bg-onmain-tertiary'],\n borderColor: props.theme.colors.transparent,\n colorHover: props.success ? props.theme.colors['content-oncolor-primary'] : props.theme.colors['alert-error'],\n backgroundColorHover: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).darken(2).toString() as CSSColor)\n : (tinycolor(props.theme.colors['bg-onmain-tertiary']).darken(2).toString() as CSSColor),\n borderColorHover: props.theme.colors.transparent,\n colorActive: props.success\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['alert-error'],\n backgroundColorActive: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).darken(2).toString() as CSSColor)\n : (tinycolor(props.theme.colors['bg-onmain-tertiary']).darken(2).toString() as CSSColor),\n borderColorActive: props.theme.colors.transparent,\n colorDisabled: props.loading ? props.theme.colors['alert-error'] : props.theme.colors['content-disabled'],\n backgroundColorDisabled: props.loading\n ? props.theme.colors['bg-onmain-tertiary']\n : props.theme.colors['bg-disabled-large'],\n borderColorDisabled: props.theme.colors.transparent,\n shadowColor: props.theme.colors['bg-oncolor-hover'],\n ...props.palette,\n })}\n `,\n outline: css<StyledButtonProps>`\n ${(props) =>\n template({\n color:\n props.success || props.loading\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['alert-error'],\n backgroundColor: props.success\n ? props.theme.colors['alert-bg-success-500']\n : props.loading\n ? props.theme.colors['alert-bg-error-500']\n : props.theme.colors.transparent,\n borderColor:\n props.success || props.loading ? props.theme.colors.transparent : props.theme.colors['alert-bg-error-500'],\n colorHover: props.theme.colors['content-oncolor-primary'],\n backgroundColorHover: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).darken(2).toString() as CSSColor)\n : props.theme.colors['alert-bg-error-500'],\n borderColorHover: props.theme.colors.transparent,\n colorActive: props.theme.colors['content-oncolor-primary'],\n backgroundColorActive: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).darken(2).toString() as CSSColor)\n : (tinycolor(props.theme.colors['alert-bg-error-500']).darken(2).toString() as CSSColor),\n borderColorActive: props.theme.colors.transparent,\n colorDisabled: props.loading\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-disabled'],\n backgroundColorDisabled: props.loading\n ? props.theme.colors['alert-bg-error-500']\n : props.theme.colors['bg-disabled-large'],\n borderColorDisabled: props.theme.colors.transparent,\n shadowColor: props.theme.colors['bg-oncolor-hover'],\n ...props.palette,\n })}\n `,\n default: css<StyledButtonProps>`\n ${(props) =>\n template({\n color: props.theme.colors['content-oncolor-primary'],\n backgroundColor: props.success\n ? props.theme.colors['alert-bg-success-500']\n : props.theme.colors['alert-bg-error-500'],\n borderColor: props.theme.colors.transparent,\n colorHover: props.theme.colors['content-oncolor-primary'],\n backgroundColorHover: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).darken(2).toString() as CSSColor)\n : (tinycolor(props.theme.colors['alert-bg-error-500']).darken(2).toString() as CSSColor),\n borderColorHover: props.theme.colors.transparent,\n colorActive: props.theme.colors['content-oncolor-primary'],\n backgroundColorActive: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).darken(2).toString() as CSSColor)\n : (tinycolor(props.theme.colors['alert-bg-error-500']).darken(2).toString() as CSSColor),\n borderColorActive: props.theme.colors.transparent,\n colorDisabled: props.loading\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-disabled'],\n backgroundColorDisabled: props.loading\n ? props.theme.colors['alert-bg-error-500']\n : props.theme.colors['bg-disabled-large'],\n borderColorDisabled: props.theme.colors.transparent,\n shadowColor: props.theme.colors['bg-oncolor-hover'],\n ...props.palette,\n })}\n `,\n },\n black: {\n clear: css<StyledButtonProps>`\n ${(props) =>\n template({\n color: props.success ? props.theme.colors['alert-success'] : props.theme.colors['content-oncolor-inverse'],\n backgroundColor: props.theme.colors.transparent,\n borderColor: props.theme.colors.transparent,\n colorHover: props.theme.colors['content-oncolor-inverse'],\n backgroundColorHover: props.theme.colors['bg-oncolor-hover'],\n borderColorHover: props.theme.colors.transparent,\n colorActive: props.theme.colors['content-oncolor-inverse'],\n backgroundColorActive: props.theme.colors['bg-oncolor-hover'],\n borderColorActive: props.theme.colors.transparent,\n colorDisabled: props.theme.colors['content-disabled'],\n backgroundColorDisabled: props.theme.colors.transparent,\n borderColorDisabled: props.theme.colors.transparent,\n shadowColor: props.theme.colors['bg-oncolor-hover'],\n ...props.palette,\n })}\n `,\n base: css<StyledButtonProps>`\n ${(props) =>\n template({\n color: props.success\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-oncolor-inverse'],\n backgroundColor: props.success\n ? props.theme.colors['alert-bg-success-500']\n : props.theme.colors['bg-onmain-tertiary'],\n borderColor: props.theme.colors.transparent,\n colorHover: props.success\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-oncolor-inverse'],\n backgroundColorHover: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).lighten(4).toString() as CSSColor)\n : (tinycolor(props.theme.colors['bg-onmain-tertiary']).darken(4).toString() as CSSColor),\n borderColorHover: props.theme.colors.transparent,\n colorActive: props.success\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-oncolor-inverse'],\n backgroundColorActive: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).lighten(4).toString() as CSSColor)\n : (tinycolor(props.theme.colors['bg-onmain-tertiary']).darken(4).toString() as CSSColor),\n borderColorActive: props.theme.colors.transparent,\n colorDisabled: props.theme.colors['content-disabled'],\n backgroundColorDisabled: props.theme.colors['bg-disabled-large'],\n borderColorDisabled: props.theme.colors.transparent,\n shadowColor: props.theme.colors['bg-oncolor-hover'],\n ...props.palette,\n })}\n `,\n outline: css<StyledButtonProps>`\n ${(props) =>\n template({\n color: props.success\n ? props.theme.colors['content-oncolor-primary']\n : props.loading\n ? props.theme.colors['content-onmain-inverse']\n : props.theme.colors['content-oncolor-inverse'],\n backgroundColor: props.success\n ? props.theme.colors['alert-bg-success-500']\n : props.loading\n ? props.theme.colors['bg-onmain-inverse']\n : props.theme.colors.transparent,\n borderColor:\n props.success || props.loading\n ? props.theme.colors.transparent\n : props.theme.colors['border-onmain-contrast'],\n colorHover: props.success\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-onmain-inverse'],\n backgroundColorHover: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).lighten(4).toString() as CSSColor)\n : props.theme.colors['bg-onmain-inverse'],\n borderColorHover: props.theme.colors.transparent,\n colorActive: props.success\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-onmain-inverse'],\n backgroundColorActive: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).lighten(4).toString() as CSSColor)\n : (tinycolor(props.theme.colors['bg-onmain-inverse']).lighten(4).toString() as CSSColor),\n borderColorActive: props.theme.colors.transparent,\n colorDisabled: props.theme.colors['content-disabled'],\n backgroundColorDisabled: props.theme.colors['bg-disabled-large'],\n borderColorDisabled: props.theme.colors.transparent,\n shadowColor: props.theme.colors['bg-oncolor-hover'],\n ...props.palette,\n })}\n `,\n default: css<StyledButtonProps>`\n ${(props) =>\n template({\n color: props.success\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-onmain-inverse'],\n backgroundColor: props.success\n ? props.theme.colors['alert-bg-success-500']\n : props.theme.colors['bg-onmain-inverse'],\n borderColor: props.theme.colors.transparent,\n colorHover: props.success\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-onmain-inverse'],\n backgroundColorHover: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).lighten(4).toString() as CSSColor)\n : (tinycolor(props.theme.colors['bg-onmain-inverse']).lighten(4).toString() as CSSColor),\n borderColorHover: props.theme.colors.transparent,\n colorActive: props.success\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-onmain-inverse'],\n backgroundColorActive: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).lighten(4).toString() as CSSColor)\n : (tinycolor(props.theme.colors['bg-onmain-inverse']).lighten(4).toString() as CSSColor),\n borderColorActive: props.theme.colors.transparent,\n colorDisabled: props.theme.colors['content-disabled'],\n backgroundColorDisabled: props.theme.colors['bg-disabled-large'],\n borderColorDisabled: props.theme.colors.transparent,\n shadowColor: props.theme.colors['bg-oncolor-hover'],\n ...props.palette,\n })}\n `,\n },\n default: {\n clear: css<StyledButtonProps>`\n ${(props) =>\n template({\n color: props.success ? props.theme.colors['alert-success'] : props.theme.colors['content-brand-primary'],\n backgroundColor: props.theme.colors.transparent,\n borderColor: props.theme.colors.transparent,\n colorHover: props.success ? props.theme.colors['alert-success'] : props.theme.colors['content-brand-primary'],\n backgroundColorHover: props.theme.colors['bg-oncolor-hover'],\n borderColorHover: props.theme.colors.transparent,\n colorActive: props.success\n ? props.theme.colors['alert-success']\n : props.theme.colors['content-brand-primary'],\n backgroundColorActive: props.theme.colors['bg-oncolor-hover'],\n borderColorActive: props.theme.colors.transparent,\n colorDisabled: props.loading\n ? props.theme.colors['content-brand-primary']\n : props.theme.colors['content-disabled'],\n backgroundColorDisabled: props.theme.colors.transparent,\n borderColorDisabled: props.theme.colors.transparent,\n shadowColor: props.theme.colors['bg-oncolor-hover'],\n ...props.palette,\n })}\n `,\n base: css<StyledButtonProps>`\n ${(props) =>\n template({\n color: props.success\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-brand-primary'],\n backgroundColor: props.success\n ? props.theme.colors['alert-bg-success-500']\n : props.theme.colors['bg-onmain-tertiary'],\n borderColor: props.theme.colors.transparent,\n colorHover: props.success\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-brand-primary'],\n backgroundColorHover: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).darken(2).toString() as CSSColor)\n : (tinycolor(props.theme.colors['bg-onmain-tertiary']).darken(2).toString() as CSSColor),\n borderColorHover: props.theme.colors.transparent,\n colorActive: props.success\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-brand-primary'],\n backgroundColorActive: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).darken(2).toString() as CSSColor)\n : (tinycolor(props.theme.colors['bg-onmain-tertiary']).darken(2).toString() as CSSColor),\n borderColorActive: props.theme.colors.transparent,\n colorDisabled: props.loading\n ? props.theme.colors['content-brand-primary']\n : props.theme.colors['content-disabled'],\n backgroundColorDisabled: props.loading\n ? props.theme.colors['bg-onmain-tertiary']\n : props.theme.colors['bg-disabled-large'],\n borderColorDisabled: props.theme.colors.transparent,\n shadowColor: props.theme.colors['bg-oncolor-hover'],\n ...props.palette,\n })}\n `,\n outline: css<StyledButtonProps>`\n ${(props) =>\n template({\n color:\n props.success || props.loading\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-brand-primary'],\n backgroundColor: props.success\n ? props.theme.colors['alert-bg-success-500']\n : props.loading\n ? props.theme.colors['bg-brand-primary-basic']\n : props.theme.colors.transparent,\n borderColor:\n props.success || props.loading\n ? props.theme.colors.transparent\n : props.theme.colors['border-brand-primary'],\n colorHover: props.theme.colors['content-oncolor-primary'],\n backgroundColorHover: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).darken(2).toString() as CSSColor)\n : props.theme.colors['bg-brand-primary-basic'],\n borderColorHover: props.theme.colors.transparent,\n colorActive: props.theme.colors['content-oncolor-primary'],\n backgroundColorActive: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).darken(2).toString() as CSSColor)\n : (tinycolor(props.theme.colors['bg-brand-primary-basic']).darken(2).toString() as CSSColor),\n borderColorActive: props.theme.colors.transparent,\n colorDisabled: props.loading\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-disabled'],\n backgroundColorDisabled: props.loading\n ? props.theme.colors['bg-brand-primary-basic']\n : props.theme.colors['bg-disabled-large'],\n borderColorDisabled: props.theme.colors.transparent,\n shadowColor: props.theme.colors['bg-oncolor-hover'],\n ...props.palette,\n })}\n `,\n default: css<StyledButtonProps>`\n ${(props) =>\n template({\n color: props.theme.colors['content-oncolor-primary'],\n backgroundColor: props.success\n ? props.theme.colors['alert-bg-success-500']\n : props.theme.colors['bg-brand-primary-basic'],\n borderColor: props.theme.colors.transparent,\n colorHover: props.theme.colors['content-oncolor-primary'],\n backgroundColorHover: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).darken(2).toString() as CSSColor)\n : (tinycolor(props.theme.colors['bg-brand-primary-basic']).darken(2).toString() as CSSColor),\n borderColorHover: props.theme.colors.transparent,\n colorActive: props.theme.colors['content-oncolor-primary'],\n backgroundColorActive: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).darken(2).toString() as CSSColor)\n : (tinycolor(props.theme.colors['bg-brand-primary-basic']).darken(2).toString() as CSSColor),\n borderColorActive: props.theme.colors.transparent,\n colorDisabled: props.loading\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-disabled'],\n backgroundColorDisabled: props.loading\n ? props.theme.colors['bg-brand-primary-basic']\n : props.theme.colors['bg-disabled-large'],\n borderColorDisabled: props.theme.colors.transparent,\n shadowColor: props.theme.colors['bg-oncolor-hover'],\n ...props.palette,\n })}\n `,\n },\n}\n\nconst defaultStyles = css<StyledButtonProps>`\n ${(props) => {\n if (props.disabled || props.loading) return ''\n\n return `\n &:active {\n box-shadow: inset 0 4px 0px 0px rgba(0, 0, 0, 0.14);\n }\n &:hover {\n color: ${props.fontColor};\n background-color: ${tinycolor(props.theme.colors[props.color]).saturate(-5).lighten(-8).toString()};\n }\n ${\n props.inverted || props.basic || props.outline\n ? `\n &:not(:hover) {\n border: 1px solid ${props.theme.colors[props.color]};\n }\n &:hover {\n border: 1px solid ${props.theme.colors[props.color]};\n }\n `\n : ''\n }\n `\n }}\n\n ${(props) => (props.loading ? defaultLoadingStyles : '')}\n\n ${(props) => {\n let cssProperty = 'background-color'\n if (props.inverted || props.basic || props.outline) cssProperty = 'color'\n\n return color(props.color, cssProperty)\n }}\n\n ${(props) => {\n let cssProperty = 'color'\n if (props.inverted || props.basic || props.outline) cssProperty = 'background-color'\n\n return color(props.fontColor, cssProperty)\n }}\n\n ${(props) => {\n if (!props.disabled) return ''\n\n return `\n cursor: not-allowed;\n background-color: ${props.theme.colors.mercury};\n color: ${props.theme.colors.silver};\n `\n }}\n\n ${(props) => (props.basic || props.outline ? 'background-color: transparent;' : '')}\n`\n\nexport const Root = styled.button\n .withConfig<StyledButtonProps>({\n shouldForwardProp: shouldForwardButtonProp,\n })\n .attrs<StyledButtonProps>(\n (props): Required<Pick<StyledButtonProps, 'dynamicSizeDeclaration'>> => ({\n dynamicSizeDeclaration: (size, sizeUnits) => {\n return {\n fontSize: typeof size === 'string' ? size : `${size}${sizeUnits}`,\n height: '2.8em',\n width: props.round ? '2.8em' : undefined,\n paddingRight: props.round ? undefined : '1.6em',\n paddingLeft: props.round ? undefined : '1.6em',\n }\n },\n })\n )`\n ${(props) => {\n let display = props.inline ? 'inline-flex' : 'flex'\n if (props.display) display = props.display\n\n let borderRadius = '0px'\n if (props.rounded) borderRadius = props.preset === 'brand' ? '48px' : '5px'\n if (props.round) borderRadius = '50%'\n\n let cursor = 'pointer'\n if (props.disabled) cursor = 'not-allowed'\n if (props.loading) cursor = 'wait'\n\n return `\n display: ${display};\n border-radius: ${borderRadius};\n cursor: ${cursor};\n box-sizing: border-box;\n position: relative;\n isolation: isolate;\n justify-content: center;\n align-items: center;\n user-select: none;\n border: none;\n text-decoration: none;\n appearance: none;\n white-space: nowrap;\n text-align: center;\n vertical-align: top;\n ${\n props.preset === 'brand'\n ? `\n border: 1px solid transparent;\n transition-property: background-color; \n transition-duration: 250ms;\n &::before {\n transition-property: opacity; \n transition-duration: 150ms;\n transition-timing-function: ease-in;\n }\n &::before {\n content: '';\n position: absolute;\n top: -1px;\n left: -1px;\n width: calc(100% + 2px);\n height: calc(100% + 2px);\n border-radius: inherit;\n opacity: 0;\n }\n &:active:not(:disabled)::before {\n opacity: 1;\n }`\n : `\n border: none;\n overflow: hidden;\n transition-property: background-color, color;\n transition-duration: 200ms;`\n }\n `\n }}\n\n ${(props) => {\n if (props.preset === 'default') return defaultStyles\n\n let schema = COLOR_SCHEMA.default\n\n if (props.black) schema = COLOR_SCHEMA.black\n if (props.danger) schema = COLOR_SCHEMA.danger\n if (props.onColored) schema = COLOR_SCHEMA.onColored\n\n if (props.clear) return schema.clear\n if (props.base) return schema.base\n if (props.outline) return schema.outline\n\n return schema.default\n }}\n\n ${focus}\n ${responsiveSize}\n\n ${(props) => (props.padding ? property(props.padding, 'padding') : null)}\n ${(props) => (props.paddingTop ? property(props.paddingTop, 'padding-top') : null)}\n ${(props) => (props.paddingRight ? property(props.paddingRight, 'padding-right') : null)}\n ${(props) => (props.paddingBottom ? property(props.paddingBottom, 'padding-bottom') : null)}\n ${(props) => (props.paddingLeft ? property(props.paddingLeft, 'padding-left') : null)}\n\n ${(props) => (props.margin ? property(props.margin, 'margin') : null)}\n ${(props) => (props.marginTop ? property(props.marginTop, 'margin-top') : null)}\n ${(props) => (props.marginRight ? property(props.marginRight, 'margin-right') : null)}\n ${(props) => (props.marginBottom ? property(props.marginBottom, 'margin-bottom') : null)}\n ${(props) => (props.marginLeft ? property(props.marginLeft, 'margin-left') : null)}\n\n ${(props) => (props.fontSize ? property(props.fontSize, 'font-size') : null)}\n\n ${(props) => (props.height ? property(props.height, 'height') : null)}\n\n ${(props) => {\n const cssProperty = props.fluid && props.width !== 'auto' ? 'max-width' : 'width'\n return props.width ? property(getWidth(props.width), cssProperty) : null\n }}\n\n ${({ paddingXS, paddingS, paddingM, paddingL, paddingXL }) => {\n return responsiveNamedProperty({\n sizes: { paddingXS, paddingS, paddingM, paddingL, paddingXL },\n cssProperty: 'padding',\n })\n }}\n ${({ paddingTopXS, paddingTopS, paddingTopM, paddingTopL, paddingTopXL }) => {\n return responsiveNamedProperty({\n sizes: { paddingTopXS, paddingTopS, paddingTopM, paddingTopL, paddingTopXL },\n cssProperty: 'padding-top',\n })\n }}\n ${({ paddingRightXS, paddingRightS, paddingRightM, paddingRightL, paddingRightXL }) => {\n return responsiveNamedProperty({\n sizes: { paddingRightXS, paddingRightS, paddingRightM, paddingRightL, paddingRightXL },\n cssProperty: 'padding-right',\n })\n }}\n ${({ paddingBottomXS, paddingBottomS, paddingBottomM, paddingBottomL, paddingBottomXL }) => {\n return responsiveNamedProperty({\n sizes: { paddingBottomXS, paddingBottomS, paddingBottomM, paddingBottomL, paddingBottomXL },\n cssProperty: 'padding-bottom',\n })\n }}\n ${({ paddingLeftXS, paddingLeftS, paddingLeftM, paddingLeftL, paddingLeftXL }) => {\n return responsiveNamedProperty({\n sizes: { paddingLeftXS, paddingLeftS, paddingLeftM, paddingLeftL, paddingLeftXL },\n cssProperty: 'padding-left',\n })\n }}\n\n ${({ marginXS, marginS, marginM, marginL, marginXL }) => {\n return responsiveNamedProperty({ sizes: { marginXS, marginS, marginM, marginL, marginXL }, cssProperty: 'margin' })\n }}\n ${({ marginTopXS, marginTopS, marginTopM, marginTopL, marginTopXL }) => {\n return responsiveNamedProperty({\n sizes: { marginTopXS, marginTopS, marginTopM, marginTopL, marginTopXL },\n cssProperty: 'margin-top',\n })\n }}\n ${({ marginRightXS, marginRightS, marginRightM, marginRightL, marginRightXL }) => {\n return responsiveNamedProperty({\n sizes: { marginRightXS, marginRightS, marginRightM, marginRightL, marginRightXL },\n cssProperty: 'margin-right',\n })\n }}\n ${({ marginBottomXS, marginBottomS, marginBottomM, marginBottomL, marginBottomXL }) => {\n return responsiveNamedProperty({\n sizes: { marginBottomXS, marginBottomS, marginBottomM, marginBottomL, marginBottomXL },\n cssProperty: 'margin-bottom',\n })\n }}\n ${({ marginLeftXS, marginLeftS, marginLeftM, marginLeftL, marginLeftXL }) => {\n return responsiveNamedProperty({\n sizes: { marginLeftXS, marginLeftS, marginLeftM, marginLeftL, marginLeftXL },\n cssProperty: 'margin-left',\n })\n }}\n\n ${({ fontSizeXS, fontSizeS, fontSizeM, fontSizeL, fontSizeXL }) => {\n return responsiveNamedProperty({\n sizes: { fontSizeXS, fontSizeS, fontSizeM, fontSizeL, fontSizeXL },\n cssProperty: 'font-size',\n })\n }}\n\n ${({ heightXS, heightS, heightM, heightL, heightXL }) => {\n return responsiveNamedProperty({\n sizes: { heightXS, heightS, heightM, heightL, heightXL },\n cssProperty: 'height',\n })\n }}\n\n ${({ widthXS, widthS, widthM, widthL, widthXL, fluid, width }) => {\n return responsiveNamedProperty({\n sizes: { widthXS, widthS, widthM, widthL, widthXL },\n cssProperty: fluid && width !== 'auto' ? 'max-width' : 'width',\n customSizeHandler: getWidth,\n })\n }}\n\n ${(props) => (props.fluid ? property(props.fluid, fluidStyles) : null)}\n ${({ fluidXS, fluidS, fluidM, fluidL, fluidXL }) => {\n return responsiveNamedProperty({\n sizes: { fluidXS, fluidS, fluidM, fluidL, fluidXL },\n cssProperty: fluidStyles,\n })\n }}\n`\n\nexport const LoaderIcon = styled(LoaderFill)`\n transform-origin: center;\n animation: ${spinAnimation} 1600ms infinite linear;\n`\n"],"names":["shouldForwardButtonProp","createShouldForwardProp","propKey","includes","responsiveFluidPropKeyRegExp","test","responsiveWidthPropKeyRegExp","responsivePaddingPropKeyRegExp","responsiveFontSizePropKeyRegExp","responsiveHeightPropKeyRegExp","WIDTHS","xl","l","m","s","xs","loadingAnimation","keyframes","spinAnimation","defaultLoadingStyles","css","getWidth","width","fluidStyles","template","palette","color","backgroundColor","borderColor","shadowColor","colorHover","backgroundColorHover","borderColorHover","colorActive","backgroundColorActive","borderColorActive","colorDisabled","backgroundColorDisabled","borderColorDisabled","COLOR_SCHEMA","onColored","clear","props","theme","colors","transparent","loading","base","success","tinycolor","darken","toString","outline","default","danger","black","lighten","defaultStyles","disabled","fontColor","saturate","inverted","basic","cssProperty","mercury","silver","Root","styled","button","withConfig","shouldForwardProp","attrs","dynamicSizeDeclaration","size","sizeUnits","fontSize","height","round","undefined","paddingRight","paddingLeft","displayName","componentId","display","inline","borderRadius","rounded","preset","cursor","schema","focus","responsiveSize","padding","property","paddingTop","paddingBottom","margin","marginTop","marginRight","marginBottom","marginLeft","fluid","paddingXS","paddingS","paddingM","paddingL","paddingXL","responsiveNamedProperty","sizes","paddingTopXS","paddingTopS","paddingTopM","paddingTopL","paddingTopXL","paddingRightXS","paddingRightS","paddingRightM","paddingRightL","paddingRightXL","paddingBottomXS","paddingBottomS","paddingBottomM","paddingBottomL","paddingBottomXL","paddingLeftXS","paddingLeftS","paddingLeftM","paddingLeftL","paddingLeftXL","marginXS","marginS","marginM","marginL","marginXL","marginTopXS","marginTopS","marginTopM","marginTopL","marginTopXL","marginRightXS","marginRightS","marginRightM","marginRightL","marginRightXL","marginBottomXS","marginBottomS","marginBottomM","marginBottomL","marginBottomXL","marginLeftXS","marginLeftS","marginLeftM","marginLeftL","marginLeftXL","fontSizeXS","fontSizeS","fontSizeM","fontSizeL","fontSizeXL","heightXS","heightS","heightM","heightL","heightXL","widthXS","widthS","widthM","widthL","widthXL","customSizeHandler","fluidXS","fluidS","fluidM","fluidL","fluidXL","LoaderIcon","LoaderFill"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"style.mjs","sources":["../../../../src/components/Button/style.ts"],"sourcesContent":["import styled, { css, keyframes } from 'styled-components'\nimport tinycolor from 'tinycolor2'\nimport { LoaderFill } from '@foxford/icon-pack'\nimport { property, responsiveNamedProperty } from 'mixins/responsive-property'\nimport { color } from 'mixins/color'\nimport type { PossibleValues, CalcProperty } from 'mixins/responsive-property'\nimport { createShouldForwardProp } from 'shared/utils/style'\nimport { focus } from 'mixins/focus'\nimport { responsiveSize } from 'mixins/responsive-size'\nimport {\n responsiveFluidPropKeyRegExp,\n responsiveWidthPropKeyRegExp,\n responsivePaddingPropKeyRegExp,\n responsiveFontSizePropKeyRegExp,\n responsiveHeightPropKeyRegExp,\n} from 'shared/regexp'\nimport type { CSSColor } from 'shared/types'\nimport type { StyledButtonProps, ButtonPalette } from './types'\n\nconst shouldForwardButtonProp = createShouldForwardProp(\n (propKey) =>\n ![\n 'fluid',\n 'width',\n 'display',\n 'padding',\n 'paddingTop',\n 'paddingRight',\n 'paddingBottom',\n 'paddingLeft',\n 'fontSize',\n 'height',\n 'inline',\n 'round',\n 'success',\n 'loading',\n 'black',\n 'danger',\n 'onColored',\n 'clear',\n 'base',\n 'outline',\n 'autoRel',\n 'noSpacing',\n 'primary',\n 'secondary',\n 'inverted',\n 'rounded',\n 'basic',\n ].includes(propKey),\n (propKey) =>\n !responsiveFluidPropKeyRegExp.test(propKey) &&\n !responsiveWidthPropKeyRegExp.test(propKey) &&\n !responsivePaddingPropKeyRegExp.test(propKey) &&\n !responsiveFontSizePropKeyRegExp.test(propKey) &&\n !responsiveHeightPropKeyRegExp.test(propKey)\n)\n\nconst WIDTHS: Record<string, number> = {\n xl: 320,\n l: 280,\n m: 245,\n s: 180,\n xs: 140,\n}\n\nconst loadingAnimation = keyframes`\n 0% {\n background-position: 0 0;\n }\n 100% {\n background-position: 50px 50px;\n }\n`\n\nconst spinAnimation = keyframes`\n 100% {\n transform: rotate(360deg);\n }\n`\n\nconst defaultLoadingStyles = css`\n background-image: linear-gradient(\n -45deg,\n rgba(255, 255, 255, 0.2) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.2) 50%,\n rgba(255, 255, 255, 0.2) 75%,\n transparent 75%,\n transparent\n );\n background-size: 25px 25px;\n animation: ${loadingAnimation} 2s linear infinite;\n cursor: progress;\n`\n\nconst getWidth = (width: PossibleValues): PossibleValues => {\n if (width === 'auto') return 'auto'\n if (typeof width === 'number') return width\n if (typeof width === 'boolean') return width\n\n if (width && WIDTHS[width]) return WIDTHS[width]\n\n return 'auto'\n}\n\nconst fluidStyles: CalcProperty = () => css`\n min-width: initial;\n width: 100%;\n`\n\nconst template = (palette: ButtonPalette) => `\n color: ${palette.color};\n background-color: ${palette.backgroundColor};\n border-color: ${palette.borderColor};\n &::before {\n box-shadow: inset 0px 4px 0px ${palette.shadowColor};\n }\n &:hover {\n color: ${palette.colorHover};\n background-color: ${palette.backgroundColorHover};\n border-color: ${palette.borderColorHover};\n }\n &:active {\n color: ${palette.colorActive};\n background-color: ${palette.backgroundColorActive};\n border-color: ${palette.borderColorActive};\n }\n &:disabled {\n color: ${palette.colorDisabled};\n background-color: ${palette.backgroundColorDisabled};\n border-color: ${palette.borderColorDisabled};\n }\n`\n\nconst COLOR_SCHEMA = {\n contrast: {\n clear: css<StyledButtonProps>`\n ${(props) =>\n template({\n color: props.theme.colors['content-oncolor-primary'],\n backgroundColor: props.theme.colors.transparent,\n borderColor: props.theme.colors.transparent,\n colorHover: props.theme.colors['content-oncolor-primary'],\n backgroundColorHover: props.theme.colors['bg-oncontrast-hover'],\n borderColorHover: props.theme.colors.transparent,\n colorActive: props.theme.colors['content-oncolor-primary'],\n backgroundColorActive: props.theme.colors['bg-oncontrast-hover'],\n borderColorActive: props.theme.colors.transparent,\n colorDisabled: props.loading\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-oncolor-disabled'],\n backgroundColorDisabled: props.theme.colors.transparent,\n borderColorDisabled: props.theme.colors.transparent,\n shadowColor: props.theme.colors['bg-oncontrast-hover'],\n ...props.palette,\n })}\n `,\n base: css<StyledButtonProps>`\n ${(props) =>\n template({\n color: props.success ? props.theme.colors['alert-success'] : props.theme.colors['content-oncolor-primary'],\n backgroundColor: props.success\n ? props.theme.colors['bg-oncolor-primary']\n : props.theme.colors['bg-oncolor-secondary'],\n borderColor: props.theme.colors.transparent,\n colorHover: props.success\n ? props.theme.colors['alert-success']\n : props.theme.colors['content-oncolor-primary'],\n backgroundColorHover: props.success\n ? (tinycolor(props.theme.colors['bg-oncolor-primary']).darken(2).toString() as CSSColor)\n : (tinycolor(props.theme.colors['bg-oncolor-secondary']).darken(4).toString() as CSSColor),\n borderColorHover: props.theme.colors.transparent,\n colorActive: props.success\n ? props.theme.colors['alert-success']\n : props.theme.colors['content-oncolor-primary'],\n backgroundColorActive: props.success\n ? (tinycolor(props.theme.colors['bg-oncolor-primary']).darken(2).toString() as CSSColor)\n : (tinycolor(props.theme.colors['bg-oncolor-secondary']).darken(4).toString() as CSSColor),\n borderColorActive: props.theme.colors.transparent,\n colorDisabled: props.loading\n ? props.theme.colors['content-oncolor-constant']\n : props.theme.colors['content-oncolor-disabled'],\n backgroundColorDisabled: props.loading\n ? props.theme.colors['bg-oncolor-primary']\n : props.theme.colors['bg-oncolor-disabled'],\n borderColorDisabled: props.theme.colors.transparent,\n shadowColor: props.theme.colors['bg-oncolor-hover'],\n ...props.palette,\n })}\n `,\n outline: css<StyledButtonProps>`\n ${(props) =>\n template({\n color: props.success\n ? props.theme.colors['alert-success']\n : props.loading\n ? props.theme.colors['content-oncolor-constant']\n : props.theme.colors['content-oncolor-primary'],\n backgroundColor:\n props.success || props.loading ? props.theme.colors['bg-oncolor-primary'] : props.theme.colors.transparent,\n borderColor:\n props.success || props.loading\n ? props.theme.colors.transparent\n : props.theme.colors['border-oncolor-default'],\n colorHover: props.success\n ? props.theme.colors['alert-success']\n : props.theme.colors['content-oncolor-constant'],\n backgroundColorHover: props.success\n ? (tinycolor(props.theme.colors['bg-oncolor-primary']).darken(2).toString() as CSSColor)\n : props.theme.colors['bg-oncolor-primary'],\n borderColorHover: props.theme.colors.transparent,\n colorActive: props.success\n ? props.theme.colors['alert-success']\n : props.theme.colors['content-oncolor-constant'],\n backgroundColorActive: props.success\n ? (tinycolor(props.theme.colors['bg-oncolor-primary']).darken(2).toString() as CSSColor)\n : props.theme.colors['bg-oncolor-primary'],\n borderColorActive: props.theme.colors.transparent,\n colorDisabled: props.loading\n ? props.theme.colors['content-oncolor-constant']\n : props.theme.colors['content-oncolor-disabled'],\n backgroundColorDisabled: props.loading\n ? props.theme.colors['bg-oncolor-primary']\n : props.theme.colors['bg-oncolor-disabled'],\n borderColorDisabled: props.theme.colors.transparent,\n shadowColor: props.theme.colors['bg-oncolor-hover'],\n ...props.palette,\n })}\n `,\n default: css<StyledButtonProps>`\n ${(props) =>\n template({\n color: props.success ? props.theme.colors['alert-success'] : props.theme.colors['content-oncolor-constant'],\n backgroundColor: props.theme.colors['bg-oncolor-primary'],\n borderColor: props.theme.colors.transparent,\n colorHover: props.success\n ? props.theme.colors['alert-success']\n : props.theme.colors['content-oncolor-constant'],\n backgroundColorHover: tinycolor(props.theme.colors['bg-oncolor-primary']).darken(2).toString() as CSSColor,\n borderColorHover: props.theme.colors.transparent,\n colorActive: props.success\n ? props.theme.colors['alert-success']\n : props.theme.colors['content-oncolor-constant'],\n backgroundColorActive: tinycolor(props.theme.colors['bg-oncolor-primary']).darken(2).toString() as CSSColor,\n borderColorActive: props.theme.colors.transparent,\n colorDisabled: props.loading\n ? props.theme.colors['content-oncolor-constant']\n : props.theme.colors['content-oncolor-disabled'],\n backgroundColorDisabled: props.loading\n ? props.theme.colors['bg-oncolor-primary']\n : props.theme.colors['bg-oncolor-disabled'],\n borderColorDisabled: props.theme.colors.transparent,\n shadowColor: props.theme.colors['bg-oncolor-hover'],\n ...props.palette,\n })}\n `,\n },\n danger: {\n clear: css<StyledButtonProps>`\n ${(props) =>\n template({\n color: props.success ? props.theme.colors['alert-success'] : props.theme.colors['alert-error'],\n backgroundColor: props.theme.colors.transparent,\n borderColor: props.theme.colors.transparent,\n colorHover: props.success ? props.theme.colors['alert-success'] : props.theme.colors['alert-error'],\n backgroundColorHover: props.theme.colors['bg-oncolor-hover'],\n borderColorHover: props.theme.colors.transparent,\n colorActive: props.success ? props.theme.colors['alert-success'] : props.theme.colors['alert-error'],\n backgroundColorActive: props.theme.colors['bg-oncolor-hover'],\n borderColorActive: props.theme.colors.transparent,\n colorDisabled: props.loading ? props.theme.colors['alert-error'] : props.theme.colors['content-disabled'],\n backgroundColorDisabled: props.theme.colors.transparent,\n borderColorDisabled: props.theme.colors.transparent,\n shadowColor: props.theme.colors['bg-oncolor-hover'],\n ...props.palette,\n })}\n `,\n base: css<StyledButtonProps>`\n ${(props) =>\n template({\n color: props.success ? props.theme.colors['content-oncolor-primary'] : props.theme.colors['alert-error'],\n backgroundColor: props.success\n ? props.theme.colors['alert-bg-success-500']\n : props.theme.colors['bg-onmain-tertiary'],\n borderColor: props.theme.colors.transparent,\n colorHover: props.success ? props.theme.colors['content-oncolor-primary'] : props.theme.colors['alert-error'],\n backgroundColorHover: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).darken(2).toString() as CSSColor)\n : (tinycolor(props.theme.colors['bg-onmain-tertiary']).darken(2).toString() as CSSColor),\n borderColorHover: props.theme.colors.transparent,\n colorActive: props.success\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['alert-error'],\n backgroundColorActive: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).darken(2).toString() as CSSColor)\n : (tinycolor(props.theme.colors['bg-onmain-tertiary']).darken(2).toString() as CSSColor),\n borderColorActive: props.theme.colors.transparent,\n colorDisabled: props.loading ? props.theme.colors['alert-error'] : props.theme.colors['content-disabled'],\n backgroundColorDisabled: props.loading\n ? props.theme.colors['bg-onmain-tertiary']\n : props.theme.colors['bg-disabled-large'],\n borderColorDisabled: props.theme.colors.transparent,\n shadowColor: props.theme.colors['bg-oncolor-hover'],\n ...props.palette,\n })}\n `,\n outline: css<StyledButtonProps>`\n ${(props) =>\n template({\n color:\n props.success || props.loading\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['alert-error'],\n backgroundColor: props.success\n ? props.theme.colors['alert-bg-success-500']\n : props.loading\n ? props.theme.colors['alert-bg-error-500']\n : props.theme.colors.transparent,\n borderColor:\n props.success || props.loading ? props.theme.colors.transparent : props.theme.colors['alert-bg-error-500'],\n colorHover: props.theme.colors['content-oncolor-primary'],\n backgroundColorHover: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).darken(2).toString() as CSSColor)\n : props.theme.colors['alert-bg-error-500'],\n borderColorHover: props.theme.colors.transparent,\n colorActive: props.theme.colors['content-oncolor-primary'],\n backgroundColorActive: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).darken(2).toString() as CSSColor)\n : (tinycolor(props.theme.colors['alert-bg-error-500']).darken(2).toString() as CSSColor),\n borderColorActive: props.theme.colors.transparent,\n colorDisabled: props.loading\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-disabled'],\n backgroundColorDisabled: props.loading\n ? props.theme.colors['alert-bg-error-500']\n : props.theme.colors['bg-disabled-large'],\n borderColorDisabled: props.theme.colors.transparent,\n shadowColor: props.theme.colors['bg-oncolor-hover'],\n ...props.palette,\n })}\n `,\n default: css<StyledButtonProps>`\n ${(props) =>\n template({\n color: props.theme.colors['content-oncolor-primary'],\n backgroundColor: props.success\n ? props.theme.colors['alert-bg-success-500']\n : props.theme.colors['alert-bg-error-500'],\n borderColor: props.theme.colors.transparent,\n colorHover: props.theme.colors['content-oncolor-primary'],\n backgroundColorHover: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).darken(2).toString() as CSSColor)\n : (tinycolor(props.theme.colors['alert-bg-error-500']).darken(2).toString() as CSSColor),\n borderColorHover: props.theme.colors.transparent,\n colorActive: props.theme.colors['content-oncolor-primary'],\n backgroundColorActive: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).darken(2).toString() as CSSColor)\n : (tinycolor(props.theme.colors['alert-bg-error-500']).darken(2).toString() as CSSColor),\n borderColorActive: props.theme.colors.transparent,\n colorDisabled: props.loading\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-disabled'],\n backgroundColorDisabled: props.loading\n ? props.theme.colors['alert-bg-error-500']\n : props.theme.colors['bg-disabled-large'],\n borderColorDisabled: props.theme.colors.transparent,\n shadowColor: props.theme.colors['bg-oncolor-hover'],\n ...props.palette,\n })}\n `,\n },\n black: {\n clear: css<StyledButtonProps>`\n ${(props) =>\n template({\n color: props.success ? props.theme.colors['alert-success'] : props.theme.colors['content-oncolor-inverse'],\n backgroundColor: props.theme.colors.transparent,\n borderColor: props.theme.colors.transparent,\n colorHover: props.theme.colors['content-oncolor-inverse'],\n backgroundColorHover: props.theme.colors['bg-oncolor-hover'],\n borderColorHover: props.theme.colors.transparent,\n colorActive: props.theme.colors['content-oncolor-inverse'],\n backgroundColorActive: props.theme.colors['bg-oncolor-hover'],\n borderColorActive: props.theme.colors.transparent,\n colorDisabled: props.theme.colors['content-disabled'],\n backgroundColorDisabled: props.theme.colors.transparent,\n borderColorDisabled: props.theme.colors.transparent,\n shadowColor: props.theme.colors['bg-oncolor-hover'],\n ...props.palette,\n })}\n `,\n base: css<StyledButtonProps>`\n ${(props) =>\n template({\n color: props.success\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-oncolor-inverse'],\n backgroundColor: props.success\n ? props.theme.colors['alert-bg-success-500']\n : props.theme.colors['bg-onmain-tertiary'],\n borderColor: props.theme.colors.transparent,\n colorHover: props.success\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-oncolor-inverse'],\n backgroundColorHover: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).lighten(4).toString() as CSSColor)\n : (tinycolor(props.theme.colors['bg-onmain-tertiary']).darken(4).toString() as CSSColor),\n borderColorHover: props.theme.colors.transparent,\n colorActive: props.success\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-oncolor-inverse'],\n backgroundColorActive: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).lighten(4).toString() as CSSColor)\n : (tinycolor(props.theme.colors['bg-onmain-tertiary']).darken(4).toString() as CSSColor),\n borderColorActive: props.theme.colors.transparent,\n colorDisabled: props.theme.colors['content-disabled'],\n backgroundColorDisabled: props.theme.colors['bg-disabled-large'],\n borderColorDisabled: props.theme.colors.transparent,\n shadowColor: props.theme.colors['bg-oncolor-hover'],\n ...props.palette,\n })}\n `,\n outline: css<StyledButtonProps>`\n ${(props) =>\n template({\n color: props.success\n ? props.theme.colors['content-oncolor-primary']\n : props.loading\n ? props.theme.colors['content-onmain-inverse']\n : props.theme.colors['content-oncolor-inverse'],\n backgroundColor: props.success\n ? props.theme.colors['alert-bg-success-500']\n : props.loading\n ? props.theme.colors['bg-onmain-inverse']\n : props.theme.colors.transparent,\n borderColor:\n props.success || props.loading\n ? props.theme.colors.transparent\n : props.theme.colors['border-onmain-contrast'],\n colorHover: props.success\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-onmain-inverse'],\n backgroundColorHover: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).lighten(4).toString() as CSSColor)\n : props.theme.colors['bg-onmain-inverse'],\n borderColorHover: props.theme.colors.transparent,\n colorActive: props.success\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-onmain-inverse'],\n backgroundColorActive: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).lighten(4).toString() as CSSColor)\n : (tinycolor(props.theme.colors['bg-onmain-inverse']).lighten(4).toString() as CSSColor),\n borderColorActive: props.theme.colors.transparent,\n colorDisabled: props.theme.colors['content-disabled'],\n backgroundColorDisabled: props.theme.colors['bg-disabled-large'],\n borderColorDisabled: props.theme.colors.transparent,\n shadowColor: props.theme.colors['bg-oncolor-hover'],\n ...props.palette,\n })}\n `,\n default: css<StyledButtonProps>`\n ${(props) =>\n template({\n color: props.success\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-onmain-inverse'],\n backgroundColor: props.success\n ? props.theme.colors['alert-bg-success-500']\n : props.theme.colors['bg-onmain-inverse'],\n borderColor: props.theme.colors.transparent,\n colorHover: props.success\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-onmain-inverse'],\n backgroundColorHover: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).lighten(4).toString() as CSSColor)\n : (tinycolor(props.theme.colors['bg-onmain-inverse']).lighten(4).toString() as CSSColor),\n borderColorHover: props.theme.colors.transparent,\n colorActive: props.success\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-onmain-inverse'],\n backgroundColorActive: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).lighten(4).toString() as CSSColor)\n : (tinycolor(props.theme.colors['bg-onmain-inverse']).lighten(4).toString() as CSSColor),\n borderColorActive: props.theme.colors.transparent,\n colorDisabled: props.theme.colors['content-disabled'],\n backgroundColorDisabled: props.theme.colors['bg-disabled-large'],\n borderColorDisabled: props.theme.colors.transparent,\n shadowColor: props.theme.colors['bg-oncolor-hover'],\n ...props.palette,\n })}\n `,\n },\n default: {\n clear: css<StyledButtonProps>`\n ${(props) =>\n template({\n color: props.success ? props.theme.colors['alert-success'] : props.theme.colors['content-brand-primary'],\n backgroundColor: props.theme.colors.transparent,\n borderColor: props.theme.colors.transparent,\n colorHover: props.success ? props.theme.colors['alert-success'] : props.theme.colors['content-brand-primary'],\n backgroundColorHover: props.theme.colors['bg-oncolor-hover'],\n borderColorHover: props.theme.colors.transparent,\n colorActive: props.success\n ? props.theme.colors['alert-success']\n : props.theme.colors['content-brand-primary'],\n backgroundColorActive: props.theme.colors['bg-oncolor-hover'],\n borderColorActive: props.theme.colors.transparent,\n colorDisabled: props.loading\n ? props.theme.colors['content-brand-primary']\n : props.theme.colors['content-disabled'],\n backgroundColorDisabled: props.theme.colors.transparent,\n borderColorDisabled: props.theme.colors.transparent,\n shadowColor: props.theme.colors['bg-oncolor-hover'],\n ...props.palette,\n })}\n `,\n base: css<StyledButtonProps>`\n ${(props) =>\n template({\n color: props.success\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-brand-primary'],\n backgroundColor: props.success\n ? props.theme.colors['alert-bg-success-500']\n : props.theme.colors['bg-onmain-tertiary'],\n borderColor: props.theme.colors.transparent,\n colorHover: props.success\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-brand-primary'],\n backgroundColorHover: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).darken(2).toString() as CSSColor)\n : (tinycolor(props.theme.colors['bg-onmain-tertiary']).darken(2).toString() as CSSColor),\n borderColorHover: props.theme.colors.transparent,\n colorActive: props.success\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-brand-primary'],\n backgroundColorActive: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).darken(2).toString() as CSSColor)\n : (tinycolor(props.theme.colors['bg-onmain-tertiary']).darken(2).toString() as CSSColor),\n borderColorActive: props.theme.colors.transparent,\n colorDisabled: props.loading\n ? props.theme.colors['content-brand-primary']\n : props.theme.colors['content-disabled'],\n backgroundColorDisabled: props.loading\n ? props.theme.colors['bg-onmain-tertiary']\n : props.theme.colors['bg-disabled-large'],\n borderColorDisabled: props.theme.colors.transparent,\n shadowColor: props.theme.colors['bg-oncolor-hover'],\n ...props.palette,\n })}\n `,\n outline: css<StyledButtonProps>`\n ${(props) =>\n template({\n color:\n props.success || props.loading\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-brand-primary'],\n backgroundColor: props.success\n ? props.theme.colors['alert-bg-success-500']\n : props.loading\n ? props.theme.colors['bg-brand-primary-basic']\n : props.theme.colors.transparent,\n borderColor:\n props.success || props.loading\n ? props.theme.colors.transparent\n : props.theme.colors['border-brand-primary'],\n colorHover: props.theme.colors['content-oncolor-primary'],\n backgroundColorHover: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).darken(2).toString() as CSSColor)\n : props.theme.colors['bg-brand-primary-basic'],\n borderColorHover: props.theme.colors.transparent,\n colorActive: props.theme.colors['content-oncolor-primary'],\n backgroundColorActive: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).darken(2).toString() as CSSColor)\n : (tinycolor(props.theme.colors['bg-brand-primary-basic']).darken(2).toString() as CSSColor),\n borderColorActive: props.theme.colors.transparent,\n colorDisabled: props.loading\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-disabled'],\n backgroundColorDisabled: props.loading\n ? props.theme.colors['bg-brand-primary-basic']\n : props.theme.colors['bg-disabled-large'],\n borderColorDisabled: props.theme.colors.transparent,\n shadowColor: props.theme.colors['bg-oncolor-hover'],\n ...props.palette,\n })}\n `,\n default: css<StyledButtonProps>`\n ${(props) =>\n template({\n color: props.theme.colors['content-oncolor-primary'],\n backgroundColor: props.success\n ? props.theme.colors['alert-bg-success-500']\n : props.theme.colors['bg-brand-primary-basic'],\n borderColor: props.theme.colors.transparent,\n colorHover: props.theme.colors['content-oncolor-primary'],\n backgroundColorHover: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).darken(2).toString() as CSSColor)\n : (tinycolor(props.theme.colors['bg-brand-primary-basic']).darken(2).toString() as CSSColor),\n borderColorHover: props.theme.colors.transparent,\n colorActive: props.theme.colors['content-oncolor-primary'],\n backgroundColorActive: props.success\n ? (tinycolor(props.theme.colors['alert-bg-success-500']).darken(2).toString() as CSSColor)\n : (tinycolor(props.theme.colors['bg-brand-primary-basic']).darken(2).toString() as CSSColor),\n borderColorActive: props.theme.colors.transparent,\n colorDisabled: props.loading\n ? props.theme.colors['content-oncolor-primary']\n : props.theme.colors['content-disabled'],\n backgroundColorDisabled: props.loading\n ? props.theme.colors['bg-brand-primary-basic']\n : props.theme.colors['bg-disabled-large'],\n borderColorDisabled: props.theme.colors.transparent,\n shadowColor: props.theme.colors['bg-oncolor-hover'],\n ...props.palette,\n })}\n `,\n },\n}\n\nconst defaultStyles = css<StyledButtonProps>`\n ${(props) => {\n if (props.disabled || props.loading) return ''\n\n return `\n &:active {\n box-shadow: inset 0 4px 0px 0px rgba(0, 0, 0, 0.14);\n }\n &:hover {\n color: ${props.fontColor};\n background-color: ${tinycolor(props.theme.colors[props.color]).saturate(-5).lighten(-8).toString()};\n }\n ${\n props.inverted || props.basic || props.outline\n ? `\n &:not(:hover) {\n border: 1px solid ${props.theme.colors[props.color]};\n }\n &:hover {\n border: 1px solid ${props.theme.colors[props.color]};\n }\n `\n : ''\n }\n `\n }}\n\n ${(props) => (props.loading ? defaultLoadingStyles : '')}\n\n ${(props) => {\n let cssProperty = 'background-color'\n if (props.inverted || props.basic || props.outline) cssProperty = 'color'\n\n return color(props.color, cssProperty)\n }}\n\n ${(props) => {\n let cssProperty = 'color'\n if (props.inverted || props.basic || props.outline) cssProperty = 'background-color'\n\n return color(props.fontColor, cssProperty)\n }}\n\n ${(props) => {\n if (!props.disabled) return ''\n\n return `\n cursor: not-allowed;\n background-color: ${props.theme.colors.mercury};\n color: ${props.theme.colors.silver};\n `\n }}\n\n ${(props) => (props.basic || props.outline ? 'background-color: transparent;' : '')}\n`\n\nexport const Root = styled.button\n .withConfig<StyledButtonProps>({\n shouldForwardProp: shouldForwardButtonProp,\n })\n .attrs<StyledButtonProps>(\n (props): Required<Pick<StyledButtonProps, 'dynamicSizeDeclaration'>> => ({\n dynamicSizeDeclaration: (size, sizeUnits) => {\n return {\n fontSize: typeof size === 'string' ? size : `${size}${sizeUnits}`,\n height: '2.8em',\n width: props.round ? '2.8em' : undefined,\n paddingRight: props.round ? undefined : '1.6em',\n paddingLeft: props.round ? undefined : '1.6em',\n }\n },\n })\n )`\n ${(props) => {\n let display = props.inline ? 'inline-flex' : 'flex'\n if (props.display) display = props.display\n\n let borderRadius = '0px'\n if (props.rounded) borderRadius = props.preset === 'brand' ? '48px' : '5px'\n if (props.round) borderRadius = '50%'\n\n let cursor = 'pointer'\n if (props.disabled) cursor = 'not-allowed'\n if (props.loading) cursor = 'wait'\n\n return `\n display: ${display};\n border-radius: ${borderRadius};\n cursor: ${cursor};\n box-sizing: border-box;\n position: relative;\n isolation: isolate;\n justify-content: center;\n align-items: center;\n user-select: none;\n border: none;\n text-decoration: none;\n appearance: none;\n white-space: nowrap;\n text-align: center;\n vertical-align: top;\n ${\n props.preset === 'brand'\n ? `\n border: 1px solid transparent;\n transition-property: background-color; \n transition-duration: 250ms;\n &::before {\n transition-property: opacity; \n transition-duration: 150ms;\n transition-timing-function: ease-in;\n }\n &::before {\n content: '';\n position: absolute;\n top: -1px;\n left: -1px;\n width: calc(100% + 2px);\n height: calc(100% + 2px);\n border-radius: inherit;\n opacity: 0;\n }\n &:active:not(:disabled)::before {\n opacity: 1;\n }`\n : `\n border: none;\n overflow: hidden;\n transition-property: background-color, color;\n transition-duration: 200ms;`\n }\n `\n }}\n\n ${(props) => {\n if (props.preset === 'default') return defaultStyles\n\n let schema = COLOR_SCHEMA.default\n\n if (props.black) schema = COLOR_SCHEMA.black\n if (props.danger) schema = COLOR_SCHEMA.danger\n if (props.contrast || props.onColored) schema = COLOR_SCHEMA.contrast\n\n if (props.clear) return schema.clear\n if (props.base) return schema.base\n if (props.outline) return schema.outline\n\n return schema.default\n }}\n\n ${focus}\n ${responsiveSize}\n\n ${(props) => (props.padding ? property(props.padding, 'padding') : null)}\n ${(props) => (props.paddingTop ? property(props.paddingTop, 'padding-top') : null)}\n ${(props) => (props.paddingRight ? property(props.paddingRight, 'padding-right') : null)}\n ${(props) => (props.paddingBottom ? property(props.paddingBottom, 'padding-bottom') : null)}\n ${(props) => (props.paddingLeft ? property(props.paddingLeft, 'padding-left') : null)}\n\n ${(props) => (props.margin ? property(props.margin, 'margin') : null)}\n ${(props) => (props.marginTop ? property(props.marginTop, 'margin-top') : null)}\n ${(props) => (props.marginRight ? property(props.marginRight, 'margin-right') : null)}\n ${(props) => (props.marginBottom ? property(props.marginBottom, 'margin-bottom') : null)}\n ${(props) => (props.marginLeft ? property(props.marginLeft, 'margin-left') : null)}\n\n ${(props) => (props.fontSize ? property(props.fontSize, 'font-size') : null)}\n\n ${(props) => (props.height ? property(props.height, 'height') : null)}\n\n ${(props) => {\n const cssProperty = props.fluid && props.width !== 'auto' ? 'max-width' : 'width'\n return props.width ? property(getWidth(props.width), cssProperty) : null\n }}\n\n ${({ paddingXS, paddingS, paddingM, paddingL, paddingXL }) => {\n return responsiveNamedProperty({\n sizes: { paddingXS, paddingS, paddingM, paddingL, paddingXL },\n cssProperty: 'padding',\n })\n }}\n ${({ paddingTopXS, paddingTopS, paddingTopM, paddingTopL, paddingTopXL }) => {\n return responsiveNamedProperty({\n sizes: { paddingTopXS, paddingTopS, paddingTopM, paddingTopL, paddingTopXL },\n cssProperty: 'padding-top',\n })\n }}\n ${({ paddingRightXS, paddingRightS, paddingRightM, paddingRightL, paddingRightXL }) => {\n return responsiveNamedProperty({\n sizes: { paddingRightXS, paddingRightS, paddingRightM, paddingRightL, paddingRightXL },\n cssProperty: 'padding-right',\n })\n }}\n ${({ paddingBottomXS, paddingBottomS, paddingBottomM, paddingBottomL, paddingBottomXL }) => {\n return responsiveNamedProperty({\n sizes: { paddingBottomXS, paddingBottomS, paddingBottomM, paddingBottomL, paddingBottomXL },\n cssProperty: 'padding-bottom',\n })\n }}\n ${({ paddingLeftXS, paddingLeftS, paddingLeftM, paddingLeftL, paddingLeftXL }) => {\n return responsiveNamedProperty({\n sizes: { paddingLeftXS, paddingLeftS, paddingLeftM, paddingLeftL, paddingLeftXL },\n cssProperty: 'padding-left',\n })\n }}\n\n ${({ marginXS, marginS, marginM, marginL, marginXL }) => {\n return responsiveNamedProperty({ sizes: { marginXS, marginS, marginM, marginL, marginXL }, cssProperty: 'margin' })\n }}\n ${({ marginTopXS, marginTopS, marginTopM, marginTopL, marginTopXL }) => {\n return responsiveNamedProperty({\n sizes: { marginTopXS, marginTopS, marginTopM, marginTopL, marginTopXL },\n cssProperty: 'margin-top',\n })\n }}\n ${({ marginRightXS, marginRightS, marginRightM, marginRightL, marginRightXL }) => {\n return responsiveNamedProperty({\n sizes: { marginRightXS, marginRightS, marginRightM, marginRightL, marginRightXL },\n cssProperty: 'margin-right',\n })\n }}\n ${({ marginBottomXS, marginBottomS, marginBottomM, marginBottomL, marginBottomXL }) => {\n return responsiveNamedProperty({\n sizes: { marginBottomXS, marginBottomS, marginBottomM, marginBottomL, marginBottomXL },\n cssProperty: 'margin-bottom',\n })\n }}\n ${({ marginLeftXS, marginLeftS, marginLeftM, marginLeftL, marginLeftXL }) => {\n return responsiveNamedProperty({\n sizes: { marginLeftXS, marginLeftS, marginLeftM, marginLeftL, marginLeftXL },\n cssProperty: 'margin-left',\n })\n }}\n\n ${({ fontSizeXS, fontSizeS, fontSizeM, fontSizeL, fontSizeXL }) => {\n return responsiveNamedProperty({\n sizes: { fontSizeXS, fontSizeS, fontSizeM, fontSizeL, fontSizeXL },\n cssProperty: 'font-size',\n })\n }}\n\n ${({ heightXS, heightS, heightM, heightL, heightXL }) => {\n return responsiveNamedProperty({\n sizes: { heightXS, heightS, heightM, heightL, heightXL },\n cssProperty: 'height',\n })\n }}\n\n ${({ widthXS, widthS, widthM, widthL, widthXL, fluid, width }) => {\n return responsiveNamedProperty({\n sizes: { widthXS, widthS, widthM, widthL, widthXL },\n cssProperty: fluid && width !== 'auto' ? 'max-width' : 'width',\n customSizeHandler: getWidth,\n })\n }}\n\n ${(props) => (props.fluid ? property(props.fluid, fluidStyles) : null)}\n ${({ fluidXS, fluidS, fluidM, fluidL, fluidXL }) => {\n return responsiveNamedProperty({\n sizes: { fluidXS, fluidS, fluidM, fluidL, fluidXL },\n cssProperty: fluidStyles,\n })\n }}\n`\n\nexport const LoaderIcon = styled(LoaderFill)`\n transform-origin: center;\n animation: ${spinAnimation} 1600ms infinite linear;\n`\n"],"names":["shouldForwardButtonProp","createShouldForwardProp","propKey","includes","responsiveFluidPropKeyRegExp","test","responsiveWidthPropKeyRegExp","responsivePaddingPropKeyRegExp","responsiveFontSizePropKeyRegExp","responsiveHeightPropKeyRegExp","WIDTHS","xl","l","m","s","xs","loadingAnimation","keyframes","spinAnimation","defaultLoadingStyles","css","getWidth","width","fluidStyles","template","palette","color","backgroundColor","borderColor","shadowColor","colorHover","backgroundColorHover","borderColorHover","colorActive","backgroundColorActive","borderColorActive","colorDisabled","backgroundColorDisabled","borderColorDisabled","COLOR_SCHEMA","contrast","clear","props","theme","colors","transparent","loading","base","success","tinycolor","darken","toString","outline","default","danger","black","lighten","defaultStyles","disabled","fontColor","saturate","inverted","basic","cssProperty","mercury","silver","Root","styled","button","withConfig","shouldForwardProp","attrs","dynamicSizeDeclaration","size","sizeUnits","fontSize","height","round","undefined","paddingRight","paddingLeft","displayName","componentId","display","inline","borderRadius","rounded","preset","cursor","schema","onColored","focus","responsiveSize","padding","property","paddingTop","paddingBottom","margin","marginTop","marginRight","marginBottom","marginLeft","fluid","paddingXS","paddingS","paddingM","paddingL","paddingXL","responsiveNamedProperty","sizes","paddingTopXS","paddingTopS","paddingTopM","paddingTopL","paddingTopXL","paddingRightXS","paddingRightS","paddingRightM","paddingRightL","paddingRightXL","paddingBottomXS","paddingBottomS","paddingBottomM","paddingBottomL","paddingBottomXL","paddingLeftXS","paddingLeftS","paddingLeftM","paddingLeftL","paddingLeftXL","marginXS","marginS","marginM","marginL","marginXL","marginTopXS","marginTopS","marginTopM","marginTopL","marginTopXL","marginRightXS","marginRightS","marginRightM","marginRightL","marginRightXL","marginBottomXS","marginBottomS","marginBottomM","marginBottomL","marginBottomXL","marginLeftXS","marginLeftS","marginLeftM","marginLeftL","marginLeftXL","fontSizeXS","fontSizeS","fontSizeM","fontSizeL","fontSizeXL","heightXS","heightS","heightM","heightL","heightXL","widthXS","widthS","widthM","widthL","widthXL","customSizeHandler","fluidXS","fluidS","fluidM","fluidL","fluidXL","LoaderIcon","LoaderFill"],"mappings":"wzBAmBA,MAAMA,wBAA0BC,yBAC7BC,IACE,CACC,QACA,QACA,UACA,UACA,aACA,eACA,gBACA,cACA,WACA,SACA,SACA,QACA,UACA,UACA,QACA,SACA,YACA,QACA,OACA,UACA,UACA,YACA,UACA,YACA,WACA,UACA,SACAC,SAASD,KACZA,KACEE,6BAA6BC,KAAKH,IAClCI,6BAA6BD,KAAKH,IAClCK,+BAA+BF,KAAKH,IACpCM,gCAAgCH,KAAKH,IACrCO,8BAA8BJ,KAAKH,MAGxC,MAAMQ,OAAiC,CACrCC,GAAI,IACJC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,GAAI,KAGN,MAAMC,iBAAmBC,UAOxB,CAAA,qEAED,MAAMC,cAAgBD,UAIrB,CAAA,oCAED,MAAME,qBAAuBC,IAAG,CAAA,4NAAA,wCAYjBJ,kBAIf,MAAMK,SAAYC,GACZA,IAAU,OAAe,cAClBA,GAAU,iBACVA,GAAU,UADiBA,EAGlCA,GAASZ,OAAOY,GAAeZ,OAAOY,GAEnC,OAGT,MAAMC,YAA4BA,IAAMH,IAGvC,CAAA,kCAED,MAAMI,SAAYC,GAA2B,cAClCA,EAAQC,+BACGD,EAAQE,qCACZF,EAAQG,kEAEUH,EAAQI,8CAG/BJ,EAAQK,sCACGL,EAAQM,4CACZN,EAAQO,oDAGfP,EAAQQ,uCACGR,EAAQS,6CACZT,EAAQU,uDAGfV,EAAQW,yCACGX,EAAQY,+CACZZ,EAAQa,8BAI5B,MAAMC,aAAe,CACnBC,SAAU,CACRC,MAAOrB,IAAG,CAAA,GAAA,KACLsB,GACDlB,SAAS,CACPE,MAAOgB,EAAMC,MAAMC,OAAO,2BAC1BjB,gBAAiBe,EAAMC,MAAMC,OAAOC,YACpCjB,YAAac,EAAMC,MAAMC,OAAOC,YAChCf,WAAYY,EAAMC,MAAMC,OAAO,2BAC/Bb,qBAAsBW,EAAMC,MAAMC,OAAO,uBACzCZ,iBAAkBU,EAAMC,MAAMC,OAAOC,YACrCZ,YAAaS,EAAMC,MAAMC,OAAO,2BAChCV,sBAAuBQ,EAAMC,MAAMC,OAAO,uBAC1CT,kBAAmBO,EAAMC,MAAMC,OAAOC,YACtCT,cAAeM,EAAMI,QACjBJ,EAAMC,MAAMC,OAAO,2BACnBF,EAAMC,MAAMC,OAAO,4BACvBP,wBAAyBK,EAAMC,MAAMC,OAAOC,YAC5CP,oBAAqBI,EAAMC,MAAMC,OAAOC,YACxChB,YAAaa,EAAMC,MAAMC,OAAO,0BAC7BF,EAAMjB,YAGfsB,KAAM3B,IAAG,CAAA,GAAA,KACJsB,GACDlB,SAAS,CACPE,MAAOgB,EAAMM,QAAUN,EAAMC,MAAMC,OAAO,iBAAmBF,EAAMC,MAAMC,OAAO,2BAChFjB,gBAAiBe,EAAMM,QACnBN,EAAMC,MAAMC,OAAO,sBACnBF,EAAMC,MAAMC,OAAO,wBACvBhB,YAAac,EAAMC,MAAMC,OAAOC,YAChCf,WAAYY,EAAMM,QACdN,EAAMC,MAAMC,OAAO,iBACnBF,EAAMC,MAAMC,OAAO,2BACvBb,qBAAsBW,EAAMM,QACvBC,UAAUP,EAAMC,MAAMC,OAAO,uBAAuBM,OAAO,GAAGC,WAC9DF,UAAUP,EAAMC,MAAMC,OAAO,yBAAyBM,OAAO,GAAGC,WACrEnB,iBAAkBU,EAAMC,MAAMC,OAAOC,YACrCZ,YAAaS,EAAMM,QACfN,EAAMC,MAAMC,OAAO,iBACnBF,EAAMC,MAAMC,OAAO,2BACvBV,sBAAuBQ,EAAMM,QACxBC,UAAUP,EAAMC,MAAMC,OAAO,uBAAuBM,OAAO,GAAGC,WAC9DF,UAAUP,EAAMC,MAAMC,OAAO,yBAAyBM,OAAO,GAAGC,WACrEhB,kBAAmBO,EAAMC,MAAMC,OAAOC,YACtCT,cAAeM,EAAMI,QACjBJ,EAAMC,MAAMC,OAAO,4BACnBF,EAAMC,MAAMC,OAAO,4BACvBP,wBAAyBK,EAAMI,QAC3BJ,EAAMC,MAAMC,OAAO,sBACnBF,EAAMC,MAAMC,OAAO,uBACvBN,oBAAqBI,EAAMC,MAAMC,OAAOC,YACxChB,YAAaa,EAAMC,MAAMC,OAAO,uBAC7BF,EAAMjB,YAGf2B,QAAShC,IAAG,CAAA,GAAA,KACPsB,GACDlB,SAAS,CACPE,MAAOgB,EAAMM,QACTN,EAAMC,MAAMC,OAAO,iBACnBF,EAAMI,QACNJ,EAAMC,MAAMC,OAAO,4BACnBF,EAAMC,MAAMC,OAAO,2BACvBjB,gBACEe,EAAMM,SAAWN,EAAMI,QAAUJ,EAAMC,MAAMC,OAAO,sBAAwBF,EAAMC,MAAMC,OAAOC,YACjGjB,YACEc,EAAMM,SAAWN,EAAMI,QACnBJ,EAAMC,MAAMC,OAAOC,YACnBH,EAAMC,MAAMC,OAAO,0BACzBd,WAAYY,EAAMM,QACdN,EAAMC,MAAMC,OAAO,iBACnBF,EAAMC,MAAMC,OAAO,4BACvBb,qBAAsBW,EAAMM,QACvBC,UAAUP,EAAMC,MAAMC,OAAO,uBAAuBM,OAAO,GAAGC,WAC/DT,EAAMC,MAAMC,OAAO,sBACvBZ,iBAAkBU,EAAMC,MAAMC,OAAOC,YACrCZ,YAAaS,EAAMM,QACfN,EAAMC,MAAMC,OAAO,iBACnBF,EAAMC,MAAMC,OAAO,4BACvBV,sBAAuBQ,EAAMM,QACxBC,UAAUP,EAAMC,MAAMC,OAAO,uBAAuBM,OAAO,GAAGC,WAC/DT,EAAMC,MAAMC,OAAO,sBACvBT,kBAAmBO,EAAMC,MAAMC,OAAOC,YACtCT,cAAeM,EAAMI,QACjBJ,EAAMC,MAAMC,OAAO,4BACnBF,EAAMC,MAAMC,OAAO,4BACvBP,wBAAyBK,EAAMI,QAC3BJ,EAAMC,MAAMC,OAAO,sBACnBF,EAAMC,MAAMC,OAAO,uBACvBN,oBAAqBI,EAAMC,MAAMC,OAAOC,YACxChB,YAAaa,EAAMC,MAAMC,OAAO,uBAC7BF,EAAMjB,YAGf4B,QAASjC,IAAG,CAAA,GAAA,KACPsB,GACDlB,SAAS,CACPE,MAAOgB,EAAMM,QAAUN,EAAMC,MAAMC,OAAO,iBAAmBF,EAAMC,MAAMC,OAAO,4BAChFjB,gBAAiBe,EAAMC,MAAMC,OAAO,sBACpChB,YAAac,EAAMC,MAAMC,OAAOC,YAChCf,WAAYY,EAAMM,QACdN,EAAMC,MAAMC,OAAO,iBACnBF,EAAMC,MAAMC,OAAO,4BACvBb,qBAAsBkB,UAAUP,EAAMC,MAAMC,OAAO,uBAAuBM,OAAO,GAAGC,WACpFnB,iBAAkBU,EAAMC,MAAMC,OAAOC,YACrCZ,YAAaS,EAAMM,QACfN,EAAMC,MAAMC,OAAO,iBACnBF,EAAMC,MAAMC,OAAO,4BACvBV,sBAAuBe,UAAUP,EAAMC,MAAMC,OAAO,uBAAuBM,OAAO,GAAGC,WACrFhB,kBAAmBO,EAAMC,MAAMC,OAAOC,YACtCT,cAAeM,EAAMI,QACjBJ,EAAMC,MAAMC,OAAO,4BACnBF,EAAMC,MAAMC,OAAO,4BACvBP,wBAAyBK,EAAMI,QAC3BJ,EAAMC,MAAMC,OAAO,sBACnBF,EAAMC,MAAMC,OAAO,uBACvBN,oBAAqBI,EAAMC,MAAMC,OAAOC,YACxChB,YAAaa,EAAMC,MAAMC,OAAO,uBAC7BF,EAAMjB,aAIjB6B,OAAQ,CACNb,MAAOrB,IAAG,CAAA,GAAA,KACLsB,GACDlB,SAAS,CACPE,MAAOgB,EAAMM,QAAUN,EAAMC,MAAMC,OAAO,iBAAmBF,EAAMC,MAAMC,OAAO,eAChFjB,gBAAiBe,EAAMC,MAAMC,OAAOC,YACpCjB,YAAac,EAAMC,MAAMC,OAAOC,YAChCf,WAAYY,EAAMM,QAAUN,EAAMC,MAAMC,OAAO,iBAAmBF,EAAMC,MAAMC,OAAO,eACrFb,qBAAsBW,EAAMC,MAAMC,OAAO,oBACzCZ,iBAAkBU,EAAMC,MAAMC,OAAOC,YACrCZ,YAAaS,EAAMM,QAAUN,EAAMC,MAAMC,OAAO,iBAAmBF,EAAMC,MAAMC,OAAO,eACtFV,sBAAuBQ,EAAMC,MAAMC,OAAO,oBAC1CT,kBAAmBO,EAAMC,MAAMC,OAAOC,YACtCT,cAAeM,EAAMI,QAAUJ,EAAMC,MAAMC,OAAO,eAAiBF,EAAMC,MAAMC,OAAO,oBACtFP,wBAAyBK,EAAMC,MAAMC,OAAOC,YAC5CP,oBAAqBI,EAAMC,MAAMC,OAAOC,YACxChB,YAAaa,EAAMC,MAAMC,OAAO,uBAC7BF,EAAMjB,YAGfsB,KAAM3B,IAAG,CAAA,GAAA,KACJsB,GACDlB,SAAS,CACPE,MAAOgB,EAAMM,QAAUN,EAAMC,MAAMC,OAAO,2BAA6BF,EAAMC,MAAMC,OAAO,eAC1FjB,gBAAiBe,EAAMM,QACnBN,EAAMC,MAAMC,OAAO,wBACnBF,EAAMC,MAAMC,OAAO,sBACvBhB,YAAac,EAAMC,MAAMC,OAAOC,YAChCf,WAAYY,EAAMM,QAAUN,EAAMC,MAAMC,OAAO,2BAA6BF,EAAMC,MAAMC,OAAO,eAC/Fb,qBAAsBW,EAAMM,QACvBC,UAAUP,EAAMC,MAAMC,OAAO,yBAAyBM,OAAO,GAAGC,WAChEF,UAAUP,EAAMC,MAAMC,OAAO,uBAAuBM,OAAO,GAAGC,WACnEnB,iBAAkBU,EAAMC,MAAMC,OAAOC,YACrCZ,YAAaS,EAAMM,QACfN,EAAMC,MAAMC,OAAO,2BACnBF,EAAMC,MAAMC,OAAO,eACvBV,sBAAuBQ,EAAMM,QACxBC,UAAUP,EAAMC,MAAMC,OAAO,yBAAyBM,OAAO,GAAGC,WAChEF,UAAUP,EAAMC,MAAMC,OAAO,uBAAuBM,OAAO,GAAGC,WACnEhB,kBAAmBO,EAAMC,MAAMC,OAAOC,YACtCT,cAAeM,EAAMI,QAAUJ,EAAMC,MAAMC,OAAO,eAAiBF,EAAMC,MAAMC,OAAO,oBACtFP,wBAAyBK,EAAMI,QAC3BJ,EAAMC,MAAMC,OAAO,sBACnBF,EAAMC,MAAMC,OAAO,qBACvBN,oBAAqBI,EAAMC,MAAMC,OAAOC,YACxChB,YAAaa,EAAMC,MAAMC,OAAO,uBAC7BF,EAAMjB,YAGf2B,QAAShC,IAAG,CAAA,GAAA,KACPsB,GACDlB,SAAS,CACPE,MACEgB,EAAMM,SAAWN,EAAMI,QACnBJ,EAAMC,MAAMC,OAAO,2BACnBF,EAAMC,MAAMC,OAAO,eACzBjB,gBAAiBe,EAAMM,QACnBN,EAAMC,MAAMC,OAAO,wBACnBF,EAAMI,QACNJ,EAAMC,MAAMC,OAAO,sBACnBF,EAAMC,MAAMC,OAAOC,YACvBjB,YACEc,EAAMM,SAAWN,EAAMI,QAAUJ,EAAMC,MAAMC,OAAOC,YAAcH,EAAMC,MAAMC,OAAO,sBACvFd,WAAYY,EAAMC,MAAMC,OAAO,2BAC/Bb,qBAAsBW,EAAMM,QACvBC,UAAUP,EAAMC,MAAMC,OAAO,yBAAyBM,OAAO,GAAGC,WACjET,EAAMC,MAAMC,OAAO,sBACvBZ,iBAAkBU,EAAMC,MAAMC,OAAOC,YACrCZ,YAAaS,EAAMC,MAAMC,OAAO,2BAChCV,sBAAuBQ,EAAMM,QACxBC,UAAUP,EAAMC,MAAMC,OAAO,yBAAyBM,OAAO,GAAGC,WAChEF,UAAUP,EAAMC,MAAMC,OAAO,uBAAuBM,OAAO,GAAGC,WACnEhB,kBAAmBO,EAAMC,MAAMC,OAAOC,YACtCT,cAAeM,EAAMI,QACjBJ,EAAMC,MAAMC,OAAO,2BACnBF,EAAMC,MAAMC,OAAO,oBACvBP,wBAAyBK,EAAMI,QAC3BJ,EAAMC,MAAMC,OAAO,sBACnBF,EAAMC,MAAMC,OAAO,qBACvBN,oBAAqBI,EAAMC,MAAMC,OAAOC,YACxChB,YAAaa,EAAMC,MAAMC,OAAO,uBAC7BF,EAAMjB,YAGf4B,QAASjC,IAAG,CAAA,GAAA,KACPsB,GACDlB,SAAS,CACPE,MAAOgB,EAAMC,MAAMC,OAAO,2BAC1BjB,gBAAiBe,EAAMM,QACnBN,EAAMC,MAAMC,OAAO,wBACnBF,EAAMC,MAAMC,OAAO,sBACvBhB,YAAac,EAAMC,MAAMC,OAAOC,YAChCf,WAAYY,EAAMC,MAAMC,OAAO,2BAC/Bb,qBAAsBW,EAAMM,QACvBC,UAAUP,EAAMC,MAAMC,OAAO,yBAAyBM,OAAO,GAAGC,WAChEF,UAAUP,EAAMC,MAAMC,OAAO,uBAAuBM,OAAO,GAAGC,WACnEnB,iBAAkBU,EAAMC,MAAMC,OAAOC,YACrCZ,YAAaS,EAAMC,MAAMC,OAAO,2BAChCV,sBAAuBQ,EAAMM,QACxBC,UAAUP,EAAMC,MAAMC,OAAO,yBAAyBM,OAAO,GAAGC,WAChEF,UAAUP,EAAMC,MAAMC,OAAO,uBAAuBM,OAAO,GAAGC,WACnEhB,kBAAmBO,EAAMC,MAAMC,OAAOC,YACtCT,cAAeM,EAAMI,QACjBJ,EAAMC,MAAMC,OAAO,2BACnBF,EAAMC,MAAMC,OAAO,oBACvBP,wBAAyBK,EAAMI,QAC3BJ,EAAMC,MAAMC,OAAO,sBACnBF,EAAMC,MAAMC,OAAO,qBACvBN,oBAAqBI,EAAMC,MAAMC,OAAOC,YACxChB,YAAaa,EAAMC,MAAMC,OAAO,uBAC7BF,EAAMjB,aAIjB8B,MAAO,CACLd,MAAOrB,IAAG,CAAA,GAAA,KACLsB,GACDlB,SAAS,CACPE,MAAOgB,EAAMM,QAAUN,EAAMC,MAAMC,OAAO,iBAAmBF,EAAMC,MAAMC,OAAO,2BAChFjB,gBAAiBe,EAAMC,MAAMC,OAAOC,YACpCjB,YAAac,EAAMC,MAAMC,OAAOC,YAChCf,WAAYY,EAAMC,MAAMC,OAAO,2BAC/Bb,qBAAsBW,EAAMC,MAAMC,OAAO,oBACzCZ,iBAAkBU,EAAMC,MAAMC,OAAOC,YACrCZ,YAAaS,EAAMC,MAAMC,OAAO,2BAChCV,sBAAuBQ,EAAMC,MAAMC,OAAO,oBAC1CT,kBAAmBO,EAAMC,MAAMC,OAAOC,YACtCT,cAAeM,EAAMC,MAAMC,OAAO,oBAClCP,wBAAyBK,EAAMC,MAAMC,OAAOC,YAC5CP,oBAAqBI,EAAMC,MAAMC,OAAOC,YACxChB,YAAaa,EAAMC,MAAMC,OAAO,uBAC7BF,EAAMjB,YAGfsB,KAAM3B,IAAG,CAAA,GAAA,KACJsB,GACDlB,SAAS,CACPE,MAAOgB,EAAMM,QACTN,EAAMC,MAAMC,OAAO,2BACnBF,EAAMC,MAAMC,OAAO,2BACvBjB,gBAAiBe,EAAMM,QACnBN,EAAMC,MAAMC,OAAO,wBACnBF,EAAMC,MAAMC,OAAO,sBACvBhB,YAAac,EAAMC,MAAMC,OAAOC,YAChCf,WAAYY,EAAMM,QACdN,EAAMC,MAAMC,OAAO,2BACnBF,EAAMC,MAAMC,OAAO,2BACvBb,qBAAsBW,EAAMM,QACvBC,UAAUP,EAAMC,MAAMC,OAAO,yBAAyBY,QAAQ,GAAGL,WACjEF,UAAUP,EAAMC,MAAMC,OAAO,uBAAuBM,OAAO,GAAGC,WACnEnB,iBAAkBU,EAAMC,MAAMC,OAAOC,YACrCZ,YAAaS,EAAMM,QACfN,EAAMC,MAAMC,OAAO,2BACnBF,EAAMC,MAAMC,OAAO,2BACvBV,sBAAuBQ,EAAMM,QACxBC,UAAUP,EAAMC,MAAMC,OAAO,yBAAyBY,QAAQ,GAAGL,WACjEF,UAAUP,EAAMC,MAAMC,OAAO,uBAAuBM,OAAO,GAAGC,WACnEhB,kBAAmBO,EAAMC,MAAMC,OAAOC,YACtCT,cAAeM,EAAMC,MAAMC,OAAO,oBAClCP,wBAAyBK,EAAMC,MAAMC,OAAO,qBAC5CN,oBAAqBI,EAAMC,MAAMC,OAAOC,YACxChB,YAAaa,EAAMC,MAAMC,OAAO,uBAC7BF,EAAMjB,YAGf2B,QAAShC,IAAG,CAAA,GAAA,KACPsB,GACDlB,SAAS,CACPE,MAAOgB,EAAMM,QACTN,EAAMC,MAAMC,OAAO,2BACnBF,EAAMI,QACNJ,EAAMC,MAAMC,OAAO,0BACnBF,EAAMC,MAAMC,OAAO,2BACvBjB,gBAAiBe,EAAMM,QACnBN,EAAMC,MAAMC,OAAO,wBACnBF,EAAMI,QACNJ,EAAMC,MAAMC,OAAO,qBACnBF,EAAMC,MAAMC,OAAOC,YACvBjB,YACEc,EAAMM,SAAWN,EAAMI,QACnBJ,EAAMC,MAAMC,OAAOC,YACnBH,EAAMC,MAAMC,OAAO,0BACzBd,WAAYY,EAAMM,QACdN,EAAMC,MAAMC,OAAO,2BACnBF,EAAMC,MAAMC,OAAO,0BACvBb,qBAAsBW,EAAMM,QACvBC,UAAUP,EAAMC,MAAMC,OAAO,yBAAyBY,QAAQ,GAAGL,WAClET,EAAMC,MAAMC,OAAO,qBACvBZ,iBAAkBU,EAAMC,MAAMC,OAAOC,YACrCZ,YAAaS,EAAMM,QACfN,EAAMC,MAAMC,OAAO,2BACnBF,EAAMC,MAAMC,OAAO,0BACvBV,sBAAuBQ,EAAMM,QACxBC,UAAUP,EAAMC,MAAMC,OAAO,yBAAyBY,QAAQ,GAAGL,WACjEF,UAAUP,EAAMC,MAAMC,OAAO,sBAAsBY,QAAQ,GAAGL,WACnEhB,kBAAmBO,EAAMC,MAAMC,OAAOC,YACtCT,cAAeM,EAAMC,MAAMC,OAAO,oBAClCP,wBAAyBK,EAAMC,MAAMC,OAAO,qBAC5CN,oBAAqBI,EAAMC,MAAMC,OAAOC,YACxChB,YAAaa,EAAMC,MAAMC,OAAO,uBAC7BF,EAAMjB,YAGf4B,QAASjC,IAAG,CAAA,GAAA,KACPsB,GACDlB,SAAS,CACPE,MAAOgB,EAAMM,QACTN,EAAMC,MAAMC,OAAO,2BACnBF,EAAMC,MAAMC,OAAO,0BACvBjB,gBAAiBe,EAAMM,QACnBN,EAAMC,MAAMC,OAAO,wBACnBF,EAAMC,MAAMC,OAAO,qBACvBhB,YAAac,EAAMC,MAAMC,OAAOC,YAChCf,WAAYY,EAAMM,QACdN,EAAMC,MAAMC,OAAO,2BACnBF,EAAMC,MAAMC,OAAO,0BACvBb,qBAAsBW,EAAMM,QACvBC,UAAUP,EAAMC,MAAMC,OAAO,yBAAyBY,QAAQ,GAAGL,WACjEF,UAAUP,EAAMC,MAAMC,OAAO,sBAAsBY,QAAQ,GAAGL,WACnEnB,iBAAkBU,EAAMC,MAAMC,OAAOC,YACrCZ,YAAaS,EAAMM,QACfN,EAAMC,MAAMC,OAAO,2BACnBF,EAAMC,MAAMC,OAAO,0BACvBV,sBAAuBQ,EAAMM,QACxBC,UAAUP,EAAMC,MAAMC,OAAO,yBAAyBY,QAAQ,GAAGL,WACjEF,UAAUP,EAAMC,MAAMC,OAAO,sBAAsBY,QAAQ,GAAGL,WACnEhB,kBAAmBO,EAAMC,MAAMC,OAAOC,YACtCT,cAAeM,EAAMC,MAAMC,OAAO,oBAClCP,wBAAyBK,EAAMC,MAAMC,OAAO,qBAC5CN,oBAAqBI,EAAMC,MAAMC,OAAOC,YACxChB,YAAaa,EAAMC,MAAMC,OAAO,uBAC7BF,EAAMjB,aAIjB4B,QAAS,CACPZ,MAAOrB,IAAG,CAAA,GAAA,KACLsB,GACDlB,SAAS,CACPE,MAAOgB,EAAMM,QAAUN,EAAMC,MAAMC,OAAO,iBAAmBF,EAAMC,MAAMC,OAAO,yBAChFjB,gBAAiBe,EAAMC,MAAMC,OAAOC,YACpCjB,YAAac,EAAMC,MAAMC,OAAOC,YAChCf,WAAYY,EAAMM,QAAUN,EAAMC,MAAMC,OAAO,iBAAmBF,EAAMC,MAAMC,OAAO,yBACrFb,qBAAsBW,EAAMC,MAAMC,OAAO,oBACzCZ,iBAAkBU,EAAMC,MAAMC,OAAOC,YACrCZ,YAAaS,EAAMM,QACfN,EAAMC,MAAMC,OAAO,iBACnBF,EAAMC,MAAMC,OAAO,yBACvBV,sBAAuBQ,EAAMC,MAAMC,OAAO,oBAC1CT,kBAAmBO,EAAMC,MAAMC,OAAOC,YACtCT,cAAeM,EAAMI,QACjBJ,EAAMC,MAAMC,OAAO,yBACnBF,EAAMC,MAAMC,OAAO,oBACvBP,wBAAyBK,EAAMC,MAAMC,OAAOC,YAC5CP,oBAAqBI,EAAMC,MAAMC,OAAOC,YACxChB,YAAaa,EAAMC,MAAMC,OAAO,uBAC7BF,EAAMjB,YAGfsB,KAAM3B,IAAG,CAAA,GAAA,KACJsB,GACDlB,SAAS,CACPE,MAAOgB,EAAMM,QACTN,EAAMC,MAAMC,OAAO,2BACnBF,EAAMC,MAAMC,OAAO,yBACvBjB,gBAAiBe,EAAMM,QACnBN,EAAMC,MAAMC,OAAO,wBACnBF,EAAMC,MAAMC,OAAO,sBACvBhB,YAAac,EAAMC,MAAMC,OAAOC,YAChCf,WAAYY,EAAMM,QACdN,EAAMC,MAAMC,OAAO,2BACnBF,EAAMC,MAAMC,OAAO,yBACvBb,qBAAsBW,EAAMM,QACvBC,UAAUP,EAAMC,MAAMC,OAAO,yBAAyBM,OAAO,GAAGC,WAChEF,UAAUP,EAAMC,MAAMC,OAAO,uBAAuBM,OAAO,GAAGC,WACnEnB,iBAAkBU,EAAMC,MAAMC,OAAOC,YACrCZ,YAAaS,EAAMM,QACfN,EAAMC,MAAMC,OAAO,2BACnBF,EAAMC,MAAMC,OAAO,yBACvBV,sBAAuBQ,EAAMM,QACxBC,UAAUP,EAAMC,MAAMC,OAAO,yBAAyBM,OAAO,GAAGC,WAChEF,UAAUP,EAAMC,MAAMC,OAAO,uBAAuBM,OAAO,GAAGC,WACnEhB,kBAAmBO,EAAMC,MAAMC,OAAOC,YACtCT,cAAeM,EAAMI,QACjBJ,EAAMC,MAAMC,OAAO,yBACnBF,EAAMC,MAAMC,OAAO,oBACvBP,wBAAyBK,EAAMI,QAC3BJ,EAAMC,MAAMC,OAAO,sBACnBF,EAAMC,MAAMC,OAAO,qBACvBN,oBAAqBI,EAAMC,MAAMC,OAAOC,YACxChB,YAAaa,EAAMC,MAAMC,OAAO,uBAC7BF,EAAMjB,YAGf2B,QAAShC,IAAG,CAAA,GAAA,KACPsB,GACDlB,SAAS,CACPE,MACEgB,EAAMM,SAAWN,EAAMI,QACnBJ,EAAMC,MAAMC,OAAO,2BACnBF,EAAMC,MAAMC,OAAO,yBACzBjB,gBAAiBe,EAAMM,QACnBN,EAAMC,MAAMC,OAAO,wBACnBF,EAAMI,QACNJ,EAAMC,MAAMC,OAAO,0BACnBF,EAAMC,MAAMC,OAAOC,YACvBjB,YACEc,EAAMM,SAAWN,EAAMI,QACnBJ,EAAMC,MAAMC,OAAOC,YACnBH,EAAMC,MAAMC,OAAO,wBACzBd,WAAYY,EAAMC,MAAMC,OAAO,2BAC/Bb,qBAAsBW,EAAMM,QACvBC,UAAUP,EAAMC,MAAMC,OAAO,yBAAyBM,OAAO,GAAGC,WACjET,EAAMC,MAAMC,OAAO,0BACvBZ,iBAAkBU,EAAMC,MAAMC,OAAOC,YACrCZ,YAAaS,EAAMC,MAAMC,OAAO,2BAChCV,sBAAuBQ,EAAMM,QACxBC,UAAUP,EAAMC,MAAMC,OAAO,yBAAyBM,OAAO,GAAGC,WAChEF,UAAUP,EAAMC,MAAMC,OAAO,2BAA2BM,OAAO,GAAGC,WACvEhB,kBAAmBO,EAAMC,MAAMC,OAAOC,YACtCT,cAAeM,EAAMI,QACjBJ,EAAMC,MAAMC,OAAO,2BACnBF,EAAMC,MAAMC,OAAO,oBACvBP,wBAAyBK,EAAMI,QAC3BJ,EAAMC,MAAMC,OAAO,0BACnBF,EAAMC,MAAMC,OAAO,qBACvBN,oBAAqBI,EAAMC,MAAMC,OAAOC,YACxChB,YAAaa,EAAMC,MAAMC,OAAO,uBAC7BF,EAAMjB,YAGf4B,QAASjC,IAAG,CAAA,GAAA,KACPsB,GACDlB,SAAS,CACPE,MAAOgB,EAAMC,MAAMC,OAAO,2BAC1BjB,gBAAiBe,EAAMM,QACnBN,EAAMC,MAAMC,OAAO,wBACnBF,EAAMC,MAAMC,OAAO,0BACvBhB,YAAac,EAAMC,MAAMC,OAAOC,YAChCf,WAAYY,EAAMC,MAAMC,OAAO,2BAC/Bb,qBAAsBW,EAAMM,QACvBC,UAAUP,EAAMC,MAAMC,OAAO,yBAAyBM,OAAO,GAAGC,WAChEF,UAAUP,EAAMC,MAAMC,OAAO,2BAA2BM,OAAO,GAAGC,WACvEnB,iBAAkBU,EAAMC,MAAMC,OAAOC,YACrCZ,YAAaS,EAAMC,MAAMC,OAAO,2BAChCV,sBAAuBQ,EAAMM,QACxBC,UAAUP,EAAMC,MAAMC,OAAO,yBAAyBM,OAAO,GAAGC,WAChEF,UAAUP,EAAMC,MAAMC,OAAO,2BAA2BM,OAAO,GAAGC,WACvEhB,kBAAmBO,EAAMC,MAAMC,OAAOC,YACtCT,cAAeM,EAAMI,QACjBJ,EAAMC,MAAMC,OAAO,2BACnBF,EAAMC,MAAMC,OAAO,oBACvBP,wBAAyBK,EAAMI,QAC3BJ,EAAMC,MAAMC,OAAO,0BACnBF,EAAMC,MAAMC,OAAO,qBACvBN,oBAAqBI,EAAMC,MAAMC,OAAOC,YACxChB,YAAaa,EAAMC,MAAMC,OAAO,uBAC7BF,EAAMjB,cAMnB,MAAMgC,cAAgBrC,IAAG,CAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KACpBsB,GACGA,EAAMgB,UAAYhB,EAAMI,QAAgB,GAErC,8HAKMJ,EAAMiB,yCACKV,UAAUP,EAAMC,MAAMC,OAAOF,EAAMhB,QAAQkC,UAAU,GAAGJ,SAAS,GAAGL,+BAGxFT,EAAMmB,UAAYnB,EAAMoB,OAASpB,EAAMU,QACnC,sEAEwBV,EAAMC,MAAMC,OAAOF,EAAMhB,wFAGzBgB,EAAMC,MAAMC,OAAOF,EAAMhB,yCAGjD,aAKPgB,GAAWA,EAAMI,QAAU3B,qBAAuB,KAElDuB,IACD,IAAIqB,EAAc,mBAGlB,OAFIrB,EAAMmB,UAAYnB,EAAMoB,OAASpB,EAAMU,WAASW,EAAc,SAE3DrC,MAAMgB,EAAMhB,MAAOqC,EAAY,IAGrCrB,IACD,IAAIqB,EAAc,QAGlB,OAFIrB,EAAMmB,UAAYnB,EAAMoB,OAASpB,EAAMU,WAASW,EAAc,oBAE3DrC,MAAMgB,EAAMiB,UAAWI,EAAY,IAGzCrB,GACIA,EAAMgB,SAEJ,yDAEehB,EAAMC,MAAMC,OAAOoB,0BAC9BtB,EAAMC,MAAMC,OAAOqB,gBALF,KAS3BvB,GAAWA,EAAMoB,OAASpB,EAAMU,QAAU,iCAAmC,KAG3E,MAAMc,KAAOC,OAAOC,OACxBC,WAA8B,CAC7BC,kBAAmBtE,0BAEpBuE,OACE7B,IAAwE,CACvE8B,uBAAwBA,CAACC,EAAMC,KACtB,CACLC,gBAAiBF,GAAS,SAAWA,EAAO,GAAGA,IAAOC,IACtDE,OAAQ,QACRtD,MAAOoB,EAAMmC,MAAQ,aAAUC,EAC/BC,aAAcrC,EAAMmC,WAAQC,EAAY,QACxCE,YAAatC,EAAMmC,WAAQC,EAAY,cAI9CT,WAAA,CAAAY,YAAA,eAAAC,YAAA,oBAhBiBf,CAgBjB,CAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KACEzB,IACD,IAAIyC,EAAUzC,EAAM0C,OAAS,cAAgB,OACzC1C,EAAMyC,UAASA,EAAUzC,EAAMyC,SAEnC,IAAIE,EAAe,MACf3C,EAAM4C,UAASD,EAAe3C,EAAM6C,SAAW,QAAU,OAAS,OAClE7C,EAAMmC,QAAOQ,EAAe,OAEhC,IAAIG,EAAS,UAIb,OAHI9C,EAAMgB,WAAU8B,EAAS,eACzB9C,EAAMI,UAAS0C,EAAS,QAErB,oBACML,4BACME,qBACPG,uVAcR9C,EAAM6C,SAAW,QACb,0sBAsBA,wKAMP,IAGA7C,IACD,GAAIA,EAAM6C,SAAW,UAAW,OAAO9B,cAEvC,IAAIgC,EAASlD,aAAac,QAM1B,OAJIX,EAAMa,QAAOkC,EAASlD,aAAagB,OACnCb,EAAMY,SAAQmC,EAASlD,aAAae,SACpCZ,EAAMF,UAAYE,EAAMgD,aAAWD,EAASlD,aAAaC,UAEzDE,EAAMD,MAAcgD,EAAOhD,MAC3BC,EAAMK,KAAa0C,EAAO1C,KAC1BL,EAAMU,QAAgBqC,EAAOrC,QAE1BqC,EAAOpC,OAAO,GAGrBsC,MACAC,gBAEClD,GAAWA,EAAMmD,QAAUC,SAASpD,EAAMmD,QAAS,WAAa,OAChEnD,GAAWA,EAAMqD,WAAaD,SAASpD,EAAMqD,WAAY,eAAiB,OAC1ErD,GAAWA,EAAMqC,aAAee,SAASpD,EAAMqC,aAAc,iBAAmB,OAChFrC,GAAWA,EAAMsD,cAAgBF,SAASpD,EAAMsD,cAAe,kBAAoB,OACnFtD,GAAWA,EAAMsC,YAAcc,SAASpD,EAAMsC,YAAa,gBAAkB,OAE7EtC,GAAWA,EAAMuD,OAASH,SAASpD,EAAMuD,OAAQ,UAAY,OAC7DvD,GAAWA,EAAMwD,UAAYJ,SAASpD,EAAMwD,UAAW,cAAgB,OACvExD,GAAWA,EAAMyD,YAAcL,SAASpD,EAAMyD,YAAa,gBAAkB,OAC7EzD,GAAWA,EAAM0D,aAAeN,SAASpD,EAAM0D,aAAc,iBAAmB,OAChF1D,GAAWA,EAAM2D,WAAaP,SAASpD,EAAM2D,WAAY,eAAiB,OAE1E3D,GAAWA,EAAMiC,SAAWmB,SAASpD,EAAMiC,SAAU,aAAe,OAEpEjC,GAAWA,EAAMkC,OAASkB,SAASpD,EAAMkC,OAAQ,UAAY,OAE7DlC,IACD,MAAMqB,EAAcrB,EAAM4D,OAAS5D,EAAMpB,QAAU,OAAS,YAAc,QAC1E,OAAOoB,EAAMpB,MAAQwE,SAASzE,SAASqB,EAAMpB,OAAQyC,GAAe,IAAI,IAGxE,EAAGwC,YAAWC,WAAUC,WAAUC,WAAUC,eACrCC,wBAAwB,CAC7BC,MAAO,CAAEN,YAAWC,WAAUC,WAAUC,WAAUC,aAClD5C,YAAa,cAGf,EAAG+C,eAAcC,cAAaC,cAAaC,cAAaC,kBACjDN,wBAAwB,CAC7BC,MAAO,CAAEC,eAAcC,cAAaC,cAAaC,cAAaC,gBAC9DnD,YAAa,kBAGf,EAAGoD,iBAAgBC,gBAAeC,gBAAeC,gBAAeC,oBACzDX,wBAAwB,CAC7BC,MAAO,CAAEM,iBAAgBC,gBAAeC,gBAAeC,gBAAeC,kBACtExD,YAAa,oBAGf,EAAGyD,kBAAiBC,iBAAgBC,iBAAgBC,iBAAgBC,qBAC7DhB,wBAAwB,CAC7BC,MAAO,CAAEW,kBAAiBC,iBAAgBC,iBAAgBC,iBAAgBC,mBAC1E7D,YAAa,qBAGf,EAAG8D,gBAAeC,eAAcC,eAAcC,eAAcC,mBACrDrB,wBAAwB,CAC7BC,MAAO,CAAEgB,gBAAeC,eAAcC,eAAcC,eAAcC,iBAClElE,YAAa,mBAIf,EAAGmE,WAAUC,UAASC,UAASC,UAASC,cACjC1B,wBAAwB,CAAEC,MAAO,CAAEqB,WAAUC,UAASC,UAASC,UAASC,YAAYvE,YAAa,aAExG,EAAGwE,cAAaC,aAAYC,aAAYC,aAAYC,iBAC7C/B,wBAAwB,CAC7BC,MAAO,CAAE0B,cAAaC,aAAYC,aAAYC,aAAYC,eAC1D5E,YAAa,iBAGf,EAAG6E,gBAAeC,eAAcC,eAAcC,eAAcC,mBACrDpC,wBAAwB,CAC7BC,MAAO,CAAE+B,gBAAeC,eAAcC,eAAcC,eAAcC,iBAClEjF,YAAa,mBAGf,EAAGkF,iBAAgBC,gBAAeC,gBAAeC,gBAAeC,oBACzDzC,wBAAwB,CAC7BC,MAAO,CAAEoC,iBAAgBC,gBAAeC,gBAAeC,gBAAeC,kBACtEtF,YAAa,oBAGf,EAAGuF,eAAcC,cAAaC,cAAaC,cAAaC,kBACjD9C,wBAAwB,CAC7BC,MAAO,CAAEyC,eAAcC,cAAaC,cAAaC,cAAaC,gBAC9D3F,YAAa,kBAIf,EAAG4F,aAAYC,YAAWC,YAAWC,YAAWC,gBACzCnD,wBAAwB,CAC7BC,MAAO,CAAE8C,aAAYC,YAAWC,YAAWC,YAAWC,cACtDhG,YAAa,gBAIf,EAAGiG,WAAUC,UAASC,UAASC,UAASC,cACjCxD,wBAAwB,CAC7BC,MAAO,CAAEmD,WAAUC,UAASC,UAASC,UAASC,YAC9CrG,YAAa,aAIf,EAAGsG,UAASC,SAAQC,SAAQC,SAAQC,UAASnE,QAAOhF,WAC7CsF,wBAAwB,CAC7BC,MAAO,CAAEwD,UAASC,SAAQC,SAAQC,SAAQC,WAC1C1G,YAAauC,GAAShF,IAAU,OAAS,YAAc,QACvDoJ,kBAAmBrJ,aAIpBqB,GAAWA,EAAM4D,MAAQR,SAASpD,EAAM4D,MAAO/E,aAAe,OAC/D,EAAGoJ,UAASC,SAAQC,SAAQC,SAAQC,aAC7BnE,wBAAwB,CAC7BC,MAAO,CAAE8D,UAASC,SAAQC,SAAQC,SAAQC,WAC1ChH,YAAaxC,gBAKZ,MAAMyJ,WAAa7G,OAAO8G,cAAW5G,WAAA,CAAAY,YAAA,qBAAAC,YAAA,oBAAlBf,CAAkB,CAAA,qCAAA,4BAE7BjD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var React=require('react');var fuse=require('../../external/.pnpm/fuse.js@7.0.0/node_modules/fuse.js/dist/fuse.js');var index_browser=require('../../external/.pnpm/nanoid@5.0.7/node_modules/nanoid/index.browser.js');var withMergedProps=require('../../hocs/withMergedProps.js');var dom=require('../../shared/utils/dom.js');var constants$1=require('../../shared/constants.js');var DropdownMenu=require('./DropdownMenu.js');var DropdownMenuNoOptions=require('./DropdownMenuNoOptions.js');var constants=require('./constants.js');var utils=require('./utils.js');var style=require('./style.js');var require$$0=require('react/jsx-runtime');var FormInputLabel=require('../FormInputLabel/FormInputLabel.js');var FormInput=require('../FormInput/FormInput.js');var Chip=require('../Chip/Chip.js');var MenuList=require('../MenuList/MenuList.js');var ListItem=require('../ListItem/ListItem.js');var InputCheckbox=require('../InputCheckbox/InputCheckbox.js');var MenuDivider=require('../MenuDivider/MenuDivider.js');const Dropdown=withMergedProps.withMergedProps(React.forwardRef(((e,t)=>{const{size:o="m",name:r="fox-dropdown",labelPosition:n="dynamic",searchable:s=!0,optionsMultiToggle:a=!0,loading:i=!1,iconProps:c={},menuProps:u={},loadingIconProps:l={},optionsEmptyIconProps:d={},autoFocus:p,closeMenuOnScroll:b,contrast:g,selectedOption:v,defaultSelectedOption:m,icon:x,inputMode:f,loadingMessage:C,loadingIcon:h,maxLength:k,multiple:I,onCloseMenu:w,onOpenMenu:y,onSelectOption:$,options:D,groupSelectedOptions:q,optionsMultiToggleCaption:M,optionsEmptyMessage:j,optionsEmptyIcon:S,palette:L,placeholder:R,readOnly:P,required:E,status:F,sizeXXS:T,sizeXS:z,sizeS:O,sizeM:K,sizeL:B,sizeXL:X,form:N,..._}=e;const H={size:o,sizeXXS:T,sizeXS:z,sizeS:O,sizeM:K,sizeL:B,sizeXL:X};const Z={sizes:constants.SIZES_ICON,color:_.disabled?'content-disabled':'content-onmain-tertiary'};const A=React.useMemo((()=>index_browser.nanoid()),[]);const U=React.useMemo((()=>{const e=new fuse.default(D,{threshold:.4,ignoreLocation:!0,keys:[constants.FuseSearchKeys.text,constants.FuseSearchKeys.label,constants.FuseSearchKeys.tags]});return t=>t.length===0?D:e.search(t).map((e=>e.item))}),[D]);const[G,J]=React.useState((()=>utils.getDropdownSelectedOption(v!==void 0?v:m,I)));const[Q,V]=React.useState((()=>utils.getDropdownInputText(G,I)));const[W,Y]=React.useState(!1);const[ee,te]=React.useState((()=>U(Q)));const[oe,re]=React.useState(!1);const ne=I?utils.groupDropdownOptions(D,G):[[],[]];const se=oe&&!_.disabled;const ae=ee.length===0||i;const ie=Q===utils.getDropdownInputText(G);const ce=E&&G.length===0;const ue=Boolean(se||Q);const le=ne[0].length>0&&ne[1].length===0;const de=ne[0].length>0&&ne[1].length>0;const pe=React.useRef(null);const be=React.useRef(null);const ge=React.useRef(null);const ve=React.useRef(null);const me=React.useRef(Q);const xe=React.useRef(se);return React.useEffect((()=>(Q===me.current?te(U(Q)):(me.current=Q,ve.current=setTimeout((()=>{te(U(Q))}),150)),()=>{ve.current&&clearTimeout(ve.current)})),[U,Q]),React.useLayoutEffect((()=>{v!==void 0&&(I||V(utils.getDropdownInputText(v)),J(utils.getDropdownSelectedOption(v,I)))}),[I,v]),React.useEffect((()=>{se!==xe.current&&(se&&y&&y(),se||(Y(!1),w&&w()),xe.current=se)}),[se,w,y]),React.useEffect((()=>{const handleScroll=e=>{pe.current?.focus(),re(!1),e.currentTarget&&e.currentTarget.removeEventListener(e.type,handleScroll)};return b&&se&&document.addEventListener('scroll',handleScroll),()=>{document.removeEventListener('scroll',handleScroll)}}),[b,se]),require$$0.jsx(FormInputLabel.FormInputLabel,{..._,...H,ref:t,labelId:A,labelPosition:n,active:ue,onColored:g,error:F==='error',success:F==='success',icon:[x,require$$0.jsx(style.ChevronIcon,{up:se},'chevron')],iconProps:{...H,...Z,...c},palette:{color:_.disabled?L.labelColorDisabled:L.labelColor,backgroundColor:_.disabled?L.backgroundColorDisabled:L.backgroundColor,backgroundColorHover:_.disabled?L.backgroundColorDisabled:L.backgroundColorHover,borderColor:_.disabled?L.borderColorDisabled:L.borderColor},onClick:e=>{_.onClick&&_.onClick(e),_.disabled||(pe.current?.focus(),se?be.current&&e.target instanceof Node&&!be.current.contains(e.target)&&re(!1):re(!0))},onKeyUp:e=>{_.onKeyUp&&_.onKeyUp(e),constants$1.keyboardKeys.Esc.validate(e.key)&&(pe.current?.focus(),re(!1))},onPointerDown:e=>{_.onPointerDown&&_.onPointerDown(e),e.target!==pe.current&&e.target instanceof Node&&e.currentTarget.contains(e.target)&&e.preventDefault()},onBlur:e=>{_.onBlur&&_.onBlur(e),e.currentTarget.contains(e.relatedTarget)||(V(utils.getDropdownInputText(G,I)),re(!1))},input:require$$0.jsxs(require$$0.Fragment,{children:[ce&&!s&&!P&&require$$0.jsx(style.InputMimic,{required:!0,type:"text",inputMode:"none",form:N,tabIndex:-1,onFocus:()=>{pe.current?.focus()}}),require$$0.jsx(FormInput.FormInput,{ref:pe,"aria-labelledby":_.label?A:void 0,type:"text",autoComplete:"off",autoCapitalize:"off",autoCorrect:"off",spellCheck:"false",form:N,autoFocus:p,inputMode:s?f:'none',maxLength:k,placeholder:R,readOnly:P||!s,required:ce,disabled:_.disabled,value:Q,palette:{color:L.color,colorDisabled:L.colorDisabled,placeholderColor:L.placeholderColor,placeholderColorDisabled:L.placeholderColorDisabled},onClick:e=>{se&&e.currentTarget.selectionStart!==e.currentTarget.selectionEnd&&e.stopPropagation()},onChange:e=>{V(e.currentTarget.value),Y(!0),re(!0)},onKeyDown:e=>{constants$1.keyboardKeys.Enter.validate(e.key)&&(V(utils.getDropdownInputText(G,I)),re(!1)),!constants$1.keyboardKeys.Space.validate(e.key)||se&&e.currentTarget.selectionStart!==0||(e.preventDefault(),re((e=>!e))),constants$1.keyboardKeys.ArrowDown.validate(e.key)&&ge.current&&(e.preventDefault(),dom.focusFirstFocusable(ge.current))}}),G.map((e=>require$$0.jsx("input",{type:"hidden",name:r,value:e.value,form:N,disabled:_.disabled},e.value)))]}),addon:I&&G.length>0?require$$0.jsx(Chip.Chip,{size:"xs",active:!0,black:!0,marginLeft:12,disabled:_.disabled,cursor:_.disabled?'not-allowed':void 0,text:G.length,textProps:{appearance:'caption',size:'xs'},palette:_.disabled?{color:'content-disabled',colorHover:'content-disabled',backgroundColor:'bg-disabled-small',backgroundColorHover:'bg-disabled-small'}:void 0,onPointerDown:e=>{e.preventDefault()},discardButtonProps:{contrast:!_.disabled,onKeyDown:e=>{constants$1.keyboardKeys.ArrowDown.validate(e.key)&&ge.current&&(e.preventDefault(),dom.focusFirstFocusable(ge.current))},onClick:e=>{e.stopPropagation(),P||(v===void 0&&J([]),$&&$([]),pe.current?.focus(),re(!0))}}}):void 0,dropdown:se?require$$0.jsx(DropdownMenu.DropdownMenu,{...u,ref:be,tabIndex:ae?void 0:0,secondary:!g,elevated:g,disableAutoFocus:!0,palette:{backgroundColor:L.menuBackgroundColor,borderColor:L.menuBorderColor},onFocus:e=>{ge.current&&e.target===e.currentTarget&&(ge.current.contains(e.relatedTarget)?pe.current?.focus():dom.focusFirstFocusable(ge.current))},onKeyDown:e=>{constants$1.keyboardKeys.Enter.validate(e.key)&&(pe.current?.focus(),V(utils.getDropdownInputText(G,I)),re(!1))},children:ae?require$$0.jsx(DropdownMenuNoOptions.DropdownMenuNoOptions,{loading:i,loadingMessage:C,loadingIcon:h,loadingIconProps:{...H,...Z,...l},emptyMessage:j,emptyIcon:S,emptyIconProps:{...H,...Z,...d}}):require$$0.jsx(MenuList.MenuList,I?{ref:ge,children:Q.length===0?require$$0.jsxs(require$$0.Fragment,{children:[a&&require$$0.jsx(ListItem.ListItem,{...H,text:M,disabled:_.disabled,borderRadius:8,ellipsis:!1,textProps:{wordBreak:'break-word'},onClick:e=>{e.stopPropagation()},control:require$$0.jsx(InputCheckbox.InputCheckbox,{sizes:constants.SIZES_CHECKBOX,form:"none",name:r,checked:le,indeterminate:de,error:(le||de)&&F==='error',success:(le||de)&&F==='success',onChange:()=>{if(!P){const e=le||de?[]:[...D];v===void 0&&J(e),$&&$(e)}}})}),a&&require$$0.jsx(MenuDivider.MenuDivider,{}),q&&ne[0].map((e=>{const t=e.status??F;const o=t==='error';const n=t==='success';return React.createElement(ListItem.ListItem,{...H,key:e.value,active:!0,text:e.text,danger:o,success:n,disabled:_.disabled,borderRadius:8,ellipsis:!1,textProps:{wordBreak:'break-word'},onClick:e=>{e.stopPropagation(),pe.current?.focus()},control:require$$0.jsx(InputCheckbox.InputCheckbox,{sizes:constants.SIZES_CHECKBOX,form:"none",name:r,value:e.value,checked:!0,error:o,success:n,onChange:e=>{if(!P){const t=G.filter((t=>t.value!==e.currentTarget.value));v===void 0&&J(t),$&&$(t)}}})})})),q&&ne[0].length>0&&ne[1].length>0&&require$$0.jsx(MenuDivider.MenuDivider,{}),q&&ne[1].map((e=>React.createElement(ListItem.ListItem,{...H,key:e.value,text:e.text,disabled:_.disabled,borderRadius:8,ellipsis:!1,textProps:{wordBreak:'break-word'},onClick:e=>{e.stopPropagation(),pe.current?.focus()},control:require$$0.jsx(InputCheckbox.InputCheckbox,{sizes:constants.SIZES_CHECKBOX,form:"none",name:r,value:e.value,checked:!1,onChange:()=>{if(!P){const t=[...G,e];v===void 0&&J(t),$&&$(t)}}})}))),!q&&D.map((e=>{const t=G.findIndex((t=>t.value===e.value))!==-1;const o=e.status??F;const n=t&&o==='error';const s=t&&o==='success';return React.createElement(ListItem.ListItem,{...H,key:e.value,text:e.text,danger:n,success:s,disabled:_.disabled,active:t,borderRadius:8,ellipsis:!1,textProps:{wordBreak:'break-word'},onClick:e=>{e.stopPropagation()},control:require$$0.jsx(InputCheckbox.InputCheckbox,{sizes:constants.SIZES_CHECKBOX,form:"none",name:r,value:e.value,checked:t,error:n,success:s,onChange:o=>{if(!P){const r=t?G.filter((e=>e.value!==o.currentTarget.value)):[...G,e];v===void 0&&J(r),$&&$(r)}}})})}))]}):require$$0.jsx(require$$0.Fragment,{children:ee.map((e=>{const t=G.findIndex((t=>t.value===e.value))!==-1;const o=e.status??F;const n=t&&o==='error';const s=t&&o==='success';return React.createElement(ListItem.ListItem,{...H,key:e.value,text:e.text,danger:n,success:s,disabled:_.disabled,active:t,borderRadius:8,ellipsis:!1,textProps:{wordBreak:'break-word'},onClick:e=>{e.stopPropagation()},control:require$$0.jsx(InputCheckbox.InputCheckbox,{sizes:constants.SIZES_CHECKBOX,form:"none",name:r,value:e.value,checked:t,error:n,success:s,onChange:o=>{if(!P){const r=t?G.filter((e=>e.value!==o.currentTarget.value)):[...G,e];v===void 0&&J(r),$&&$(r)}}})})}))})}:{ref:ge,children:(ie&&!W?D:ee).map(((e,t,o)=>{const r=G.findIndex((t=>t.value===e.value))!==-1;return React.createElement(ListItem.ListItem,{...H,key:e.value,text:e.text,active:r,danger:r&&F==='error',success:r&&F==='success',disabled:_.disabled,borderRadius:8,ellipsis:!1,textProps:{wordBreak:'break-word'},onClick:t=>{if(t.stopPropagation(),!P){const t=r?null:e;v===void 0&&(V(utils.getDropdownInputText(t)),J(utils.getDropdownSelectedOption(t))),$&&$(t),(t||o===ee)&&pe.current?.focus(),re(!t)}}})}))})}):void 0})})),{sizes:constants.SIZES,displayName:"Dropdown"});exports.COMPONENT_NAME="Dropdown",exports.Dropdown=Dropdown;
|
|
1
|
+
'use strict';var React=require('react');var fuse=require('../../external/.pnpm/fuse.js@7.0.0/node_modules/fuse.js/dist/fuse.js');var index_browser=require('../../external/.pnpm/nanoid@5.0.7/node_modules/nanoid/index.browser.js');var withMergedProps=require('../../hocs/withMergedProps.js');var dom=require('../../shared/utils/dom.js');var constants$1=require('../../shared/constants.js');var DropdownMenu=require('./DropdownMenu.js');var DropdownMenuNoOptions=require('./DropdownMenuNoOptions.js');var constants=require('./constants.js');var utils=require('./utils.js');var style=require('./style.js');var require$$0=require('react/jsx-runtime');var FormInputLabel=require('../FormInputLabel/FormInputLabel.js');var FormInput=require('../FormInput/FormInput.js');var Chip=require('../Chip/Chip.js');var MenuList=require('../MenuList/MenuList.js');var ListItem=require('../ListItem/ListItem.js');var InputCheckbox=require('../InputCheckbox/InputCheckbox.js');var MenuDivider=require('../MenuDivider/MenuDivider.js');const Dropdown=withMergedProps.withMergedProps(React.forwardRef(((e,t)=>{const{size:o="m",name:r="fox-dropdown",labelPosition:n="dynamic",searchable:s=!0,primary:a=!0,optionsMultiToggle:c=!0,loading:i=!1,iconProps:u={},menuProps:l={},loadingIconProps:d={},optionsEmptyIconProps:p={},autoFocus:b,disableAutoScrollToSelectedOption:g,closeMenuOnScroll:m,contrast:v,selectedOption:f,defaultSelectedOption:x,icon:C,inputMode:h,loadingMessage:k,loadingIcon:I,maxLength:w,multiple:y,onCloseMenu:$,onOpenMenu:D,onSelectOption:q,options:M,groupSelectedOptions:R,optionsMultiToggleCaption:j,optionsEmptyMessage:S,optionsEmptyIcon:L,palette:E,placeholder:P,readOnly:F,required:T,status:O,sizeXXS:z,sizeXS:B,sizeS:K,sizeM:X,sizeL:N,sizeXL:_,form:H,...Z}=e;const A={size:o,sizeXXS:z,sizeXS:B,sizeS:K,sizeM:X,sizeL:N,sizeXL:_};const U={sizes:constants.SIZES_ICON,color:Z.disabled?'content-disabled':'content-onmain-tertiary'};const G=React.useMemo((()=>index_browser.nanoid()),[]);const J=React.useMemo((()=>{const e=new fuse.default(M,{threshold:.4,ignoreLocation:!0,keys:[constants.FuseSearchKeys.text,constants.FuseSearchKeys.label,constants.FuseSearchKeys.tags]});return t=>t.length===0?M:e.search(t).map((e=>e.item))}),[M]);const[Q,V]=React.useState((()=>utils.getDropdownSelectedOption(f!==void 0?f:x,y)));const[W,Y]=React.useState((()=>utils.getDropdownInputText(Q,y)));const[ee,te]=React.useState(!1);const[oe,re]=React.useState((()=>J(W)));const[ne,se]=React.useState(!1);const ae=y?utils.groupDropdownOptions(M,Q):[[],[]];const ce=ne&&!Z.disabled;const ie=oe.length===0||i;const ue=W===utils.getDropdownInputText(Q);const le=T&&Q.length===0;const de=Boolean(ce||W||ee);const pe=ae[0].length>0&&ae[1].length===0;const be=ae[0].length>0&&ae[1].length>0;const ge=React.useRef(null);const me=React.useRef(null);const ve=React.useRef(null);const fe=React.useRef(null);const xe=React.useRef(null);const Ce=React.useRef(W);const he=React.useRef(ce);return React.useEffect((()=>(W===Ce.current?re(J(W)):(Ce.current=W,xe.current=setTimeout((()=>{re(J(W))}),150)),()=>{xe.current&&clearTimeout(xe.current)})),[J,W]),React.useLayoutEffect((()=>{f!==void 0&&(y||Y(utils.getDropdownInputText(f)),V(utils.getDropdownSelectedOption(f,y)))}),[y,f]),React.useEffect((()=>{ce!==he.current&&(ce&&D&&D(),!ce&&$&&$(),he.current=ce)}),[ce,$,D]),React.useEffect((()=>{if(!y&&!g&&ce&&me.current&&fe.current){const e=me.current.getBoundingClientRect();const t=fe.current.getBoundingClientRect();(t.top<e.top||t.bottom>e.bottom)&&me.current.scrollTo(0,fe.current.offsetTop)}}),[y,g,ce]),React.useEffect((()=>{const handleScroll=e=>{ge.current?.focus(),se(!1),e.currentTarget&&e.currentTarget.removeEventListener(e.type,handleScroll)};return m&&ce&&document.addEventListener('scroll',handleScroll),()=>{document.removeEventListener('scroll',handleScroll)}}),[m,ce]),require$$0.jsx(FormInputLabel.FormInputLabel,{...Z,...A,ref:t,labelId:G,labelPosition:n,active:de,onColored:v,primary:a,error:O==='error',success:O==='success',icon:[C,require$$0.jsx(style.ChevronIcon,{up:ce},'chevron')],iconProps:{...A,...U,...u},palette:{color:Z.disabled?E.labelColorDisabled:E.labelColor,backgroundColor:Z.disabled?E.backgroundColorDisabled:E.backgroundColor,backgroundColorHover:Z.disabled?E.backgroundColorDisabled:E.backgroundColorHover,borderColor:Z.disabled?E.borderColorDisabled:E.borderColor},onClick:e=>{Z.onClick&&Z.onClick(e),Z.disabled||(ge.current?.focus(),ce?me.current&&e.target instanceof Node&&!me.current.contains(e.target)&&se(!1):(se(!0),s&&!y&&ue&&(Y(''),re(J('')))))},onKeyUp:e=>{Z.onKeyUp&&Z.onKeyUp(e),constants$1.keyboardKeys.Esc.validate(e.key)&&(ge.current?.focus(),se(!1))},onPointerDown:e=>{Z.onPointerDown&&Z.onPointerDown(e),e.target!==ge.current&&e.target instanceof Node&&e.currentTarget.contains(e.target)&&e.preventDefault()},onFocus:e=>{Z.onFocus&&Z.onFocus(e),ge.current&&e.target===ge.current&&(te(!0),s&&!y&&ue&&!ce&&(Y(''),re(J(''))))},onBlur:e=>{Z.onBlur&&Z.onBlur(e),ge.current&&e.target===ge.current&&te(!1),e.currentTarget.contains(e.relatedTarget)||(Y(utils.getDropdownInputText(Q,y)),se(!1))},input:require$$0.jsxs(require$$0.Fragment,{children:[le&&!s&&!F&&require$$0.jsx(style.InputMimic,{required:!0,type:"text",inputMode:"none",form:H,tabIndex:-1,onFocus:()=>{ge.current?.focus()}}),require$$0.jsx(FormInput.FormInput,{ref:ge,"aria-labelledby":Z.label?G:void 0,type:"text",autoComplete:"off",autoCapitalize:"off",autoCorrect:"off",spellCheck:"false",form:H,autoFocus:b,inputMode:s?h:'none',maxLength:w,placeholder:P,readOnly:F||!s,required:le,disabled:Z.disabled,value:W,palette:{color:E.color,colorDisabled:E.colorDisabled,placeholderColor:E.placeholderColor,placeholderColorDisabled:E.placeholderColorDisabled},onClick:e=>{ce&&e.currentTarget.selectionStart!==e.currentTarget.selectionEnd&&e.stopPropagation()},onChange:e=>{Y(e.currentTarget.value),se(!0)},onKeyDown:e=>{constants$1.keyboardKeys.Enter.validate(e.key)&&(Y(utils.getDropdownInputText(Q,y)),se(!1)),!constants$1.keyboardKeys.Space.validate(e.key)||ce&&e.currentTarget.selectionStart!==0||(e.preventDefault(),s&&!y&&ue&&!ce&&(Y(''),re(J(''))),se((e=>!e))),constants$1.keyboardKeys.ArrowDown.validate(e.key)&&ve.current&&(e.preventDefault(),dom.focusFirstFocusable(ve.current))}}),Q.map((e=>require$$0.jsx("input",{type:"hidden",name:r,value:e.value,form:H,disabled:Z.disabled},e.value)))]}),addon:y&&Q.length>0?require$$0.jsx(Chip.Chip,{size:"xs",active:!0,black:!0,marginLeft:12,disabled:Z.disabled,cursor:Z.disabled?'not-allowed':void 0,text:Q.length,textProps:{appearance:'caption',size:'xs'},palette:Z.disabled?{color:'content-disabled',colorHover:'content-disabled',backgroundColor:'bg-disabled-small',backgroundColorHover:'bg-disabled-small'}:void 0,onPointerDown:e=>{e.preventDefault()},discardButtonProps:{contrast:!Z.disabled,onKeyDown:e=>{constants$1.keyboardKeys.ArrowDown.validate(e.key)&&ve.current&&(e.preventDefault(),dom.focusFirstFocusable(ve.current))},onClick:e=>{e.stopPropagation(),F||(f===void 0&&V([]),q&&q([]),ge.current?.focus(),se(!0))}}}):void 0,dropdown:ce?require$$0.jsx(DropdownMenu.DropdownMenu,{...l,ref:me,tabIndex:ie?void 0:0,secondary:!v,elevated:v,disableAutoFocus:!0,palette:{backgroundColor:E.menuBackgroundColor,borderColor:E.menuBorderColor},onFocus:e=>{ve.current&&e.target===e.currentTarget&&(ve.current.contains(e.relatedTarget)?ge.current?.focus():dom.focusFirstFocusable(ve.current))},onKeyDown:e=>{constants$1.keyboardKeys.Enter.validate(e.key)&&(ge.current?.focus(),Y(utils.getDropdownInputText(Q,y)),se(!1))},children:ie?require$$0.jsx(DropdownMenuNoOptions.DropdownMenuNoOptions,{loading:i,loadingMessage:k,loadingIcon:I,loadingIconProps:{...A,...U,...d},emptyMessage:S,emptyIcon:L,emptyIconProps:{...A,...U,...p}}):require$$0.jsx(MenuList.MenuList,y?{ref:ve,children:W.length===0?require$$0.jsxs(require$$0.Fragment,{children:[c&&require$$0.jsx(ListItem.ListItem,{...A,text:j,disabled:Z.disabled,borderRadius:8,ellipsis:!1,textProps:{wordBreak:'break-word'},onClick:e=>{e.stopPropagation()},control:require$$0.jsx(InputCheckbox.InputCheckbox,{sizes:constants.SIZES_CHECKBOX,form:"none",name:r,checked:pe,indeterminate:be,error:(pe||be)&&O==='error',success:(pe||be)&&O==='success',onChange:()=>{if(!F){const e=pe||be?[]:[...M];f===void 0&&V(e),q&&q(e)}}})}),c&&require$$0.jsx(MenuDivider.MenuDivider,{}),R&&ae[0].map((e=>{const t=e.status??O;const o=t==='error';const n=t==='success';return React.createElement(ListItem.ListItem,{...A,key:e.value,active:!0,text:e.text,danger:o,success:n,disabled:Z.disabled,borderRadius:8,ellipsis:!1,textProps:{wordBreak:'break-word'},onClick:e=>{e.stopPropagation(),ge.current?.focus()},control:require$$0.jsx(InputCheckbox.InputCheckbox,{sizes:constants.SIZES_CHECKBOX,form:"none",name:r,value:e.value,checked:!0,error:o,success:n,onChange:e=>{if(!F){const t=Q.filter((t=>t.value!==e.currentTarget.value));f===void 0&&V(t),q&&q(t)}}})})})),R&&ae[0].length>0&&ae[1].length>0&&require$$0.jsx(MenuDivider.MenuDivider,{}),R&&ae[1].map((e=>React.createElement(ListItem.ListItem,{...A,key:e.value,text:e.text,disabled:Z.disabled,borderRadius:8,ellipsis:!1,textProps:{wordBreak:'break-word'},onClick:e=>{e.stopPropagation(),ge.current?.focus()},control:require$$0.jsx(InputCheckbox.InputCheckbox,{sizes:constants.SIZES_CHECKBOX,form:"none",name:r,value:e.value,checked:!1,onChange:()=>{if(!F){const t=[...Q,e];f===void 0&&V(t),q&&q(t)}}})}))),!R&&M.map((e=>{const t=Q.findIndex((t=>t.value===e.value))!==-1;const o=e.status??O;const n=t&&o==='error';const s=t&&o==='success';return React.createElement(ListItem.ListItem,{...A,key:e.value,text:e.text,danger:n,success:s,disabled:Z.disabled,active:t,borderRadius:8,ellipsis:!1,textProps:{wordBreak:'break-word'},onClick:e=>{e.stopPropagation()},control:require$$0.jsx(InputCheckbox.InputCheckbox,{sizes:constants.SIZES_CHECKBOX,form:"none",name:r,value:e.value,checked:t,error:n,success:s,onChange:o=>{if(!F){const r=t?Q.filter((e=>e.value!==o.currentTarget.value)):[...Q,e];f===void 0&&V(r),q&&q(r)}}})})}))]}):require$$0.jsx(require$$0.Fragment,{children:oe.map((e=>{const t=Q.findIndex((t=>t.value===e.value))!==-1;const o=e.status??O;const n=t&&o==='error';const s=t&&o==='success';return React.createElement(ListItem.ListItem,{...A,key:e.value,text:e.text,danger:n,success:s,disabled:Z.disabled,active:t,borderRadius:8,ellipsis:!1,textProps:{wordBreak:'break-word'},onClick:e=>{e.stopPropagation()},control:require$$0.jsx(InputCheckbox.InputCheckbox,{sizes:constants.SIZES_CHECKBOX,form:"none",name:r,value:e.value,checked:t,error:n,success:s,onChange:o=>{if(!F){const r=t?Q.filter((e=>e.value!==o.currentTarget.value)):[...Q,e];f===void 0&&V(r),q&&q(r)}}})})}))})}:{ref:ve,children:(s?oe:M).map(((e,t,o)=>{const r=Q.findIndex((t=>t.value===e.value))!==-1;return React.createElement(ListItem.ListItem,{...A,ref:r?fe:void 0,key:e.value,text:e.text,active:r,danger:r&&O==='error',success:r&&O==='success',disabled:Z.disabled,borderRadius:8,ellipsis:!1,textProps:{wordBreak:'break-word'},onClick:t=>{if(t.stopPropagation(),!F){const t=r?null:e;f===void 0&&(Y(utils.getDropdownInputText(t)),V(utils.getDropdownSelectedOption(t))),q&&q(t),(t||o===oe)&&ge.current?.focus(),se(!t)}}})}))})}):void 0})})),{sizes:constants.SIZES,displayName:"Dropdown"});exports.COMPONENT_NAME="Dropdown",exports.Dropdown=Dropdown;
|
|
2
2
|
//# sourceMappingURL=Dropdown.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dropdown.js","sources":["../../../../src/components/Dropdown/Dropdown.tsx"],"sourcesContent":["import { forwardRef, useState, useRef, useEffect, useLayoutEffect, useMemo } from 'react'\nimport Fuse from 'fuse.js'\nimport { nanoid } from 'nanoid'\nimport { withMergedProps } from 'hocs/withMergedProps'\nimport { focusFirstFocusable } from 'shared/utils/dom'\nimport { keyboardKeys } from 'shared/constants'\nimport { FormInput } from 'components/FormInput'\nimport { FormInputLabel } from 'components/FormInputLabel'\nimport { MenuList } from 'components/MenuList'\nimport { MenuDivider } from 'components/MenuDivider'\nimport { ListItem } from 'components/ListItem'\nimport { InputCheckbox } from 'components/InputCheckbox'\nimport { Chip } from 'components/Chip'\nimport type { IconProps } from 'components/Icon'\nimport { DropdownMenu } from './DropdownMenu'\nimport { DropdownMenuNoOptions } from './DropdownMenuNoOptions'\nimport { SIZES, SIZES_CHECKBOX, SIZES_ICON, FuseSearchKeys } from './constants'\nimport { getDropdownInputText, getDropdownSelectedOption, groupDropdownOptions } from './utils'\nimport * as Styled from './style'\nimport type { DropdownProps, DropdownOption } from './types'\n\nconst COMPONENT_NAME = 'Dropdown'\n\n/**\n *\n * Компонент поддерживает все атрибуты \\<div\\> элемента.\n *\n * Можно передать \"ref\", который будет ассоциирован с рутовым элементом.\n *\n * Поддерживаются пропсы определения размеров и внешних отступов в зависимости от ширины вьюпорта.\n *\n * Полный интерфейс можно посмотреть [тут](https://github.com/foxford/ui/blob/master/src/components/Dropdown/types.ts).\n */\nconst Dropdown: React.ForwardRefExoticComponent<DropdownProps> = withMergedProps<DropdownProps, HTMLDivElement>(\n forwardRef((props, ref) => {\n const {\n size = 'm',\n name = 'fox-dropdown',\n labelPosition = 'dynamic',\n searchable = true,\n optionsMultiToggle = true,\n loading = false,\n iconProps = {},\n menuProps = {},\n loadingIconProps = {},\n optionsEmptyIconProps = {},\n autoFocus,\n closeMenuOnScroll,\n contrast,\n selectedOption,\n defaultSelectedOption,\n icon,\n inputMode,\n loadingMessage,\n loadingIcon,\n maxLength,\n multiple,\n onCloseMenu,\n onOpenMenu,\n onSelectOption,\n options,\n groupSelectedOptions,\n optionsMultiToggleCaption,\n optionsEmptyMessage,\n optionsEmptyIcon,\n palette,\n placeholder,\n readOnly,\n required,\n status,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n form,\n ...rootProps\n } = props\n\n const sizeProps = {\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n }\n\n const iconBaseProps: IconProps = {\n sizes: SIZES_ICON,\n color: rootProps.disabled ? 'content-disabled' : 'content-onmain-tertiary',\n }\n\n const inputLabelId = useMemo(() => nanoid(), [])\n\n const getRelevantOptions = useMemo(() => {\n const fuse = new Fuse<DropdownOption>(options, {\n threshold: 0.4,\n ignoreLocation: true,\n keys: [FuseSearchKeys.text, FuseSearchKeys.label, FuseSearchKeys.tags],\n })\n\n return (pattern: string): DropdownOption[] =>\n pattern.length === 0 ? options : fuse.search(pattern).map((result) => result.item)\n }, [options])\n\n const [dropdownSelectedOption, setDropdownSelectedOption] = useState<DropdownOption[]>(() =>\n getDropdownSelectedOption(selectedOption !== undefined ? selectedOption : defaultSelectedOption, multiple)\n )\n\n const [inputText, setInputText] = useState<string>(() => getDropdownInputText(dropdownSelectedOption, multiple))\n\n const [inputSearched, setInputSearched] = useState<boolean>(false)\n\n const [menuRelevantOptions, setMenuRelevantOptions] = useState<DropdownOption[]>(() =>\n getRelevantOptions(inputText)\n )\n\n const [menuOpenRequest, setMenuOpenRequest] = useState<boolean>(false)\n\n const menuOptionsGroups: ReturnType<typeof groupDropdownOptions> = multiple\n ? groupDropdownOptions(options, dropdownSelectedOption)\n : [[], []]\n\n const menuOpen = menuOpenRequest && !rootProps.disabled\n const menuNoRelevantOptions = menuRelevantOptions.length === 0 || loading\n\n const inputSynced = inputText === getDropdownInputText(dropdownSelectedOption)\n const inputRequired = required && dropdownSelectedOption.length === 0\n const inputActive = Boolean(menuOpen || inputText)\n\n const multiToggleChecked = menuOptionsGroups[0].length > 0 && menuOptionsGroups[1].length === 0\n const multiToggleIndeterminate = menuOptionsGroups[0].length > 0 && menuOptionsGroups[1].length > 0\n\n const inputRef = useRef<HTMLInputElement | null>(null)\n const menuRef = useRef<HTMLDivElement | null>(null)\n const menuListRef = useRef<HTMLUListElement | null>(null)\n\n const timeoutIdRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n const inputTextPrevRef = useRef<string>(inputText)\n const menuOpenPrevRef = useRef<boolean>(menuOpen)\n\n useEffect(() => {\n if (inputText === inputTextPrevRef.current) {\n setMenuRelevantOptions(getRelevantOptions(inputText))\n } else {\n inputTextPrevRef.current = inputText\n timeoutIdRef.current = setTimeout(() => {\n setMenuRelevantOptions(getRelevantOptions(inputText))\n }, 150)\n }\n\n return () => {\n if (timeoutIdRef.current) {\n clearTimeout(timeoutIdRef.current)\n }\n }\n }, [getRelevantOptions, inputText])\n\n useLayoutEffect(() => {\n if (selectedOption === undefined) return\n\n if (!multiple) setInputText(getDropdownInputText(selectedOption))\n setDropdownSelectedOption(getDropdownSelectedOption(selectedOption, multiple))\n }, [multiple, selectedOption])\n\n useEffect(() => {\n if (menuOpen === menuOpenPrevRef.current) return\n\n if (menuOpen && onOpenMenu) onOpenMenu()\n\n if (!menuOpen) {\n setInputSearched(false)\n if (onCloseMenu) onCloseMenu()\n }\n\n menuOpenPrevRef.current = menuOpen\n }, [menuOpen, onCloseMenu, onOpenMenu])\n\n useEffect(() => {\n const handleScroll = (evt: Event) => {\n inputRef.current?.focus()\n setMenuOpenRequest(false)\n\n if (evt.currentTarget) {\n evt.currentTarget.removeEventListener(evt.type, handleScroll)\n }\n }\n\n if (closeMenuOnScroll && menuOpen) {\n document.addEventListener('scroll', handleScroll)\n }\n\n return () => {\n document.removeEventListener('scroll', handleScroll)\n }\n }, [closeMenuOnScroll, menuOpen])\n\n return (\n <FormInputLabel\n {...rootProps}\n {...sizeProps}\n ref={ref}\n labelId={inputLabelId}\n labelPosition={labelPosition}\n active={inputActive}\n onColored={contrast}\n error={status === 'error'}\n success={status === 'success'}\n icon={[icon, <Styled.ChevronIcon key='chevron' up={menuOpen} />]}\n iconProps={{\n ...sizeProps,\n ...iconBaseProps,\n ...iconProps,\n }}\n palette={{\n color: rootProps.disabled ? palette.labelColorDisabled : palette.labelColor,\n backgroundColor: rootProps.disabled ? palette.backgroundColorDisabled : palette.backgroundColor,\n backgroundColorHover: rootProps.disabled ? palette.backgroundColorDisabled : palette.backgroundColorHover,\n borderColor: rootProps.disabled ? palette.borderColorDisabled : palette.borderColor,\n }}\n onClick={(evt) => {\n if (rootProps.onClick) rootProps.onClick(evt)\n\n if (rootProps.disabled) return\n\n inputRef.current?.focus()\n\n if (!menuOpen) {\n setMenuOpenRequest(true)\n } else if (menuRef.current && evt.target instanceof Node && !menuRef.current.contains(evt.target)) {\n setMenuOpenRequest(false)\n }\n }}\n onKeyUp={(evt) => {\n if (rootProps.onKeyUp) rootProps.onKeyUp(evt)\n\n if (keyboardKeys.Esc.validate(evt.key)) {\n inputRef.current?.focus()\n setMenuOpenRequest(false)\n }\n }}\n onPointerDown={(evt) => {\n if (rootProps.onPointerDown) rootProps.onPointerDown(evt)\n\n if (evt.target !== inputRef.current && evt.target instanceof Node && evt.currentTarget.contains(evt.target)) {\n evt.preventDefault()\n }\n }}\n onBlur={(evt) => {\n if (rootProps.onBlur) rootProps.onBlur(evt)\n\n if (!evt.currentTarget.contains(evt.relatedTarget)) {\n setInputText(getDropdownInputText(dropdownSelectedOption, multiple))\n setMenuOpenRequest(false)\n }\n }}\n input={\n <>\n {inputRequired && !searchable && !readOnly && (\n <Styled.InputMimic\n required\n type='text'\n inputMode='none'\n form={form}\n tabIndex={-1}\n onFocus={() => {\n inputRef.current?.focus()\n }}\n />\n )}\n <FormInput\n ref={inputRef}\n aria-labelledby={rootProps.label ? inputLabelId : undefined}\n type='text'\n autoComplete='off'\n autoCapitalize='off'\n autoCorrect='off'\n spellCheck='false'\n form={form}\n autoFocus={autoFocus}\n inputMode={searchable ? inputMode : 'none'}\n maxLength={maxLength}\n placeholder={placeholder}\n readOnly={readOnly || !searchable}\n required={inputRequired}\n disabled={rootProps.disabled}\n value={inputText}\n palette={{\n color: palette.color,\n colorDisabled: palette.colorDisabled,\n placeholderColor: palette.placeholderColor,\n placeholderColorDisabled: palette.placeholderColorDisabled,\n }}\n onClick={(evt) => {\n if (menuOpen && evt.currentTarget.selectionStart !== evt.currentTarget.selectionEnd) {\n evt.stopPropagation()\n }\n }}\n onChange={(evt) => {\n setInputText(evt.currentTarget.value)\n setInputSearched(true)\n setMenuOpenRequest(true)\n }}\n onKeyDown={(evt) => {\n if (keyboardKeys.Enter.validate(evt.key)) {\n setInputText(getDropdownInputText(dropdownSelectedOption, multiple))\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.Space.validate(evt.key) && (!menuOpen || evt.currentTarget.selectionStart === 0)) {\n evt.preventDefault()\n setMenuOpenRequest((prev) => !prev)\n }\n\n if (keyboardKeys.ArrowDown.validate(evt.key) && menuListRef.current) {\n evt.preventDefault()\n focusFirstFocusable(menuListRef.current)\n }\n }}\n />\n {dropdownSelectedOption.map((item) => (\n <input\n key={item.value}\n type='hidden'\n name={name}\n value={item.value}\n form={form}\n disabled={rootProps.disabled}\n />\n ))}\n </>\n }\n addon={\n multiple && dropdownSelectedOption.length > 0 ? (\n <Chip\n size='xs'\n active\n black\n marginLeft={12}\n disabled={rootProps.disabled}\n cursor={rootProps.disabled ? 'not-allowed' : undefined}\n text={dropdownSelectedOption.length}\n textProps={{\n appearance: 'caption',\n size: 'xs',\n }}\n palette={\n rootProps.disabled\n ? {\n color: 'content-disabled',\n colorHover: 'content-disabled',\n backgroundColor: 'bg-disabled-small',\n backgroundColorHover: 'bg-disabled-small',\n }\n : undefined\n }\n onPointerDown={(evt) => {\n evt.preventDefault()\n }}\n discardButtonProps={{\n contrast: !rootProps.disabled,\n onKeyDown: (evt) => {\n if (keyboardKeys.ArrowDown.validate(evt.key) && menuListRef.current) {\n evt.preventDefault()\n focusFirstFocusable(menuListRef.current)\n }\n },\n onClick: (evt) => {\n evt.stopPropagation()\n\n if (!readOnly) {\n if (selectedOption === undefined) {\n setDropdownSelectedOption([])\n }\n\n if (onSelectOption) onSelectOption([])\n\n inputRef.current?.focus()\n setMenuOpenRequest(true)\n }\n },\n }}\n />\n ) : undefined\n }\n dropdown={\n menuOpen ? (\n <DropdownMenu\n {...menuProps}\n ref={menuRef}\n tabIndex={menuNoRelevantOptions ? undefined : 0}\n secondary={!contrast}\n elevated={contrast}\n disableAutoFocus\n palette={{\n backgroundColor: palette.menuBackgroundColor,\n borderColor: palette.menuBorderColor,\n }}\n onFocus={(evt) => {\n if (!menuListRef.current) return\n\n if (evt.target === evt.currentTarget) {\n if (menuListRef.current.contains(evt.relatedTarget)) {\n inputRef.current?.focus()\n } else {\n focusFirstFocusable(menuListRef.current)\n }\n }\n }}\n onKeyDown={(evt) => {\n if (keyboardKeys.Enter.validate(evt.key)) {\n inputRef.current?.focus()\n setInputText(getDropdownInputText(dropdownSelectedOption, multiple))\n setMenuOpenRequest(false)\n }\n }}\n >\n {menuNoRelevantOptions ? (\n <DropdownMenuNoOptions\n loading={loading}\n loadingMessage={loadingMessage}\n loadingIcon={loadingIcon}\n loadingIconProps={{\n ...sizeProps,\n ...iconBaseProps,\n ...loadingIconProps,\n }}\n emptyMessage={optionsEmptyMessage}\n emptyIcon={optionsEmptyIcon}\n emptyIconProps={{\n ...sizeProps,\n ...iconBaseProps,\n ...optionsEmptyIconProps,\n }}\n />\n ) : multiple ? (\n <MenuList ref={menuListRef}>\n {inputText.length === 0 ? (\n <>\n {optionsMultiToggle && (\n <ListItem\n {...sizeProps}\n text={optionsMultiToggleCaption}\n disabled={rootProps.disabled}\n borderRadius={8}\n ellipsis={false}\n textProps={{ wordBreak: 'break-word' }}\n onClick={(evt) => {\n evt.stopPropagation()\n }}\n control={\n <InputCheckbox\n sizes={SIZES_CHECKBOX}\n form='none'\n name={name}\n checked={multiToggleChecked}\n indeterminate={multiToggleIndeterminate}\n error={(multiToggleChecked || multiToggleIndeterminate) && status === 'error'}\n success={(multiToggleChecked || multiToggleIndeterminate) && status === 'success'}\n onChange={() => {\n if (!readOnly) {\n const update = multiToggleChecked || multiToggleIndeterminate ? [] : [...options]\n\n if (selectedOption === undefined) {\n setDropdownSelectedOption(update)\n }\n\n if (onSelectOption) onSelectOption(update)\n }\n }}\n />\n }\n />\n )}\n {optionsMultiToggle && <MenuDivider />}\n {groupSelectedOptions &&\n menuOptionsGroups[0].map((option) => {\n const optionStatus = option.status ?? status\n const optionErrorStatus = optionStatus === 'error'\n const optionSuccessStatus = optionStatus === 'success'\n\n return (\n <ListItem\n {...sizeProps}\n key={option.value}\n active\n text={option.text}\n danger={optionErrorStatus}\n success={optionSuccessStatus}\n disabled={rootProps.disabled}\n borderRadius={8}\n ellipsis={false}\n textProps={{ wordBreak: 'break-word' }}\n onClick={(evt) => {\n evt.stopPropagation()\n inputRef.current?.focus()\n }}\n control={\n <InputCheckbox\n sizes={SIZES_CHECKBOX}\n form='none'\n name={name}\n value={option.value}\n checked\n error={optionErrorStatus}\n success={optionSuccessStatus}\n onChange={(evt) => {\n if (!readOnly) {\n const update = dropdownSelectedOption.filter(\n (item) => item.value !== evt.currentTarget.value\n )\n\n if (selectedOption === undefined) {\n setDropdownSelectedOption(update)\n }\n\n if (onSelectOption) onSelectOption(update)\n }\n }}\n />\n }\n />\n )\n })}\n {groupSelectedOptions && menuOptionsGroups[0].length > 0 && menuOptionsGroups[1].length > 0 && (\n <MenuDivider />\n )}\n {groupSelectedOptions &&\n menuOptionsGroups[1].map((option) => (\n <ListItem\n {...sizeProps}\n key={option.value}\n text={option.text}\n disabled={rootProps.disabled}\n borderRadius={8}\n ellipsis={false}\n textProps={{ wordBreak: 'break-word' }}\n onClick={(evt) => {\n evt.stopPropagation()\n inputRef.current?.focus()\n }}\n control={\n <InputCheckbox\n sizes={SIZES_CHECKBOX}\n form='none'\n name={name}\n value={option.value}\n checked={false}\n onChange={() => {\n if (!readOnly) {\n const update = [...dropdownSelectedOption, option]\n\n if (selectedOption === undefined) {\n setDropdownSelectedOption(update)\n }\n\n if (onSelectOption) onSelectOption(update)\n }\n }}\n />\n }\n />\n ))}\n {!groupSelectedOptions &&\n options.map((option) => {\n const selected =\n dropdownSelectedOption.findIndex((item) => item.value === option.value) !== -1\n\n const optionStatus = option.status ?? status\n const optionErrorStatus = selected && optionStatus === 'error'\n const optionSuccessStatus = selected && optionStatus === 'success'\n\n return (\n <ListItem\n {...sizeProps}\n key={option.value}\n text={option.text}\n danger={optionErrorStatus}\n success={optionSuccessStatus}\n disabled={rootProps.disabled}\n active={selected}\n borderRadius={8}\n ellipsis={false}\n textProps={{ wordBreak: 'break-word' }}\n onClick={(evt) => {\n evt.stopPropagation()\n }}\n control={\n <InputCheckbox\n sizes={SIZES_CHECKBOX}\n form='none'\n name={name}\n value={option.value}\n checked={selected}\n error={optionErrorStatus}\n success={optionSuccessStatus}\n onChange={(evt) => {\n if (!readOnly) {\n const update = selected\n ? dropdownSelectedOption.filter(\n (item) => item.value !== evt.currentTarget.value\n )\n : [...dropdownSelectedOption, option]\n\n if (selectedOption === undefined) {\n setDropdownSelectedOption(update)\n }\n\n if (onSelectOption) onSelectOption(update)\n }\n }}\n />\n }\n />\n )\n })}\n </>\n ) : (\n <>\n {menuRelevantOptions.map((option) => {\n const selected = dropdownSelectedOption.findIndex((item) => item.value === option.value) !== -1\n\n const optionStatus = option.status ?? status\n const optionErrorStatus = selected && optionStatus === 'error'\n const optionSuccessStatus = selected && optionStatus === 'success'\n\n return (\n <ListItem\n {...sizeProps}\n key={option.value}\n text={option.text}\n danger={optionErrorStatus}\n success={optionSuccessStatus}\n disabled={rootProps.disabled}\n active={selected}\n borderRadius={8}\n ellipsis={false}\n textProps={{ wordBreak: 'break-word' }}\n onClick={(evt) => {\n evt.stopPropagation()\n }}\n control={\n <InputCheckbox\n sizes={SIZES_CHECKBOX}\n form='none'\n name={name}\n value={option.value}\n checked={selected}\n error={optionErrorStatus}\n success={optionSuccessStatus}\n onChange={(evt) => {\n if (!readOnly) {\n const update = selected\n ? dropdownSelectedOption.filter((item) => item.value !== evt.currentTarget.value)\n : [...dropdownSelectedOption, option]\n\n if (selectedOption === undefined) {\n setDropdownSelectedOption(update)\n }\n\n if (onSelectOption) onSelectOption(update)\n }\n }}\n />\n }\n />\n )\n })}\n </>\n )}\n </MenuList>\n ) : (\n <MenuList ref={menuListRef}>\n {(inputSynced && !inputSearched ? options : menuRelevantOptions).map((option, _, optionsRendered) => {\n const selected = dropdownSelectedOption.findIndex((item) => item.value === option.value) !== -1\n\n return (\n <ListItem\n {...sizeProps}\n key={option.value}\n text={option.text}\n active={selected}\n danger={selected && status === 'error'}\n success={selected && status === 'success'}\n disabled={rootProps.disabled}\n borderRadius={8}\n ellipsis={false}\n textProps={{ wordBreak: 'break-word' }}\n onClick={(evt) => {\n evt.stopPropagation()\n\n if (!readOnly) {\n const update = selected ? null : option\n\n if (selectedOption === undefined) {\n setInputText(getDropdownInputText(update))\n setDropdownSelectedOption(getDropdownSelectedOption(update))\n }\n\n if (onSelectOption) onSelectOption(update)\n\n if (update || optionsRendered === menuRelevantOptions) {\n inputRef.current?.focus()\n }\n\n setMenuOpenRequest(!update)\n }\n }}\n />\n )\n })}\n </MenuList>\n )}\n </DropdownMenu>\n ) : undefined\n }\n />\n )\n }),\n {\n sizes: SIZES,\n displayName: COMPONENT_NAME,\n }\n)\n\nexport { Dropdown, COMPONENT_NAME }\n"],"names":["Dropdown","withMergedProps","forwardRef","props","ref","size","name","labelPosition","searchable","optionsMultiToggle","loading","iconProps","menuProps","loadingIconProps","optionsEmptyIconProps","autoFocus","closeMenuOnScroll","contrast","selectedOption","defaultSelectedOption","icon","inputMode","loadingMessage","loadingIcon","maxLength","multiple","onCloseMenu","onOpenMenu","onSelectOption","options","groupSelectedOptions","optionsMultiToggleCaption","optionsEmptyMessage","optionsEmptyIcon","palette","placeholder","readOnly","required","status","sizeXXS","sizeXS","sizeS","sizeM","sizeL","sizeXL","form","rootProps","sizeProps","iconBaseProps","sizes","SIZES_ICON","color","disabled","inputLabelId","useMemo","nanoid","getRelevantOptions","fuse","Fuse","default","threshold","ignoreLocation","keys","FuseSearchKeys","text","label","tags","pattern","length","search","map","result","item","dropdownSelectedOption","setDropdownSelectedOption","useState","getDropdownSelectedOption","undefined","inputText","setInputText","getDropdownInputText","inputSearched","setInputSearched","menuRelevantOptions","setMenuRelevantOptions","menuOpenRequest","setMenuOpenRequest","menuOptionsGroups","groupDropdownOptions","menuOpen","menuNoRelevantOptions","inputSynced","inputRequired","inputActive","Boolean","multiToggleChecked","multiToggleIndeterminate","inputRef","useRef","menuRef","menuListRef","timeoutIdRef","inputTextPrevRef","menuOpenPrevRef","useEffect","current","setTimeout","clearTimeout","useLayoutEffect","handleScroll","evt","focus","currentTarget","removeEventListener","type","document","addEventListener","_jsx","FormInputLabel","labelId","active","onColored","error","success","jsx","Styled","up","labelColorDisabled","labelColor","backgroundColor","backgroundColorDisabled","backgroundColorHover","borderColor","borderColorDisabled","onClick","target","Node","contains","onKeyUp","keyboardKeys","Esc","validate","key","onPointerDown","preventDefault","onBlur","relatedTarget","input","_jsxs","jsxs","_Fragment","children","tabIndex","onFocus","FormInput","autoComplete","autoCapitalize","autoCorrect","spellCheck","value","colorDisabled","placeholderColor","placeholderColorDisabled","selectionStart","selectionEnd","stopPropagation","onChange","onKeyDown","Enter","Space","prev","ArrowDown","focusFirstFocusable","addon","Chip","black","marginLeft","cursor","textProps","appearance","colorHover","discardButtonProps","dropdown","DropdownMenu","secondary","elevated","disableAutoFocus","menuBackgroundColor","menuBorderColor","DropdownMenuNoOptions","emptyMessage","emptyIcon","emptyIconProps","MenuList","ListItem","borderRadius","ellipsis","wordBreak","control","InputCheckbox","SIZES_CHECKBOX","checked","indeterminate","update","MenuDivider","option","optionStatus","optionErrorStatus","optionSuccessStatus","_createElement","danger","filter","createElement","selected","findIndex","_","optionsRendered","SIZES","displayName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Dropdown.js","sources":["../../../../src/components/Dropdown/Dropdown.tsx"],"sourcesContent":["import { forwardRef, useState, useRef, useEffect, useLayoutEffect, useMemo } from 'react'\nimport Fuse from 'fuse.js'\nimport { nanoid } from 'nanoid'\nimport { withMergedProps } from 'hocs/withMergedProps'\nimport { focusFirstFocusable } from 'shared/utils/dom'\nimport { keyboardKeys } from 'shared/constants'\nimport { FormInput } from 'components/FormInput'\nimport { FormInputLabel } from 'components/FormInputLabel'\nimport { MenuList } from 'components/MenuList'\nimport { MenuDivider } from 'components/MenuDivider'\nimport { ListItem } from 'components/ListItem'\nimport { InputCheckbox } from 'components/InputCheckbox'\nimport { Chip } from 'components/Chip'\nimport type { IconProps } from 'components/Icon'\nimport { DropdownMenu } from './DropdownMenu'\nimport { DropdownMenuNoOptions } from './DropdownMenuNoOptions'\nimport { SIZES, SIZES_CHECKBOX, SIZES_ICON, FuseSearchKeys } from './constants'\nimport { getDropdownInputText, getDropdownSelectedOption, groupDropdownOptions } from './utils'\nimport * as Styled from './style'\nimport type { DropdownProps, DropdownOption } from './types'\n\nconst COMPONENT_NAME = 'Dropdown'\n\n/**\n *\n * Компонент поддерживает все атрибуты \\<div\\> элемента.\n *\n * Можно передать \"ref\", который будет ассоциирован с рутовым элементом.\n *\n * Поддерживаются пропсы определения размеров и внешних отступов в зависимости от ширины вьюпорта.\n *\n * Полный интерфейс можно посмотреть [тут](https://github.com/foxford/ui/blob/master/src/components/Dropdown/types.ts).\n */\nconst Dropdown: React.ForwardRefExoticComponent<DropdownProps> = withMergedProps<DropdownProps, HTMLDivElement>(\n forwardRef((props, ref) => {\n const {\n size = 'm',\n name = 'fox-dropdown',\n labelPosition = 'dynamic',\n searchable = true,\n primary = true,\n optionsMultiToggle = true,\n loading = false,\n iconProps = {},\n menuProps = {},\n loadingIconProps = {},\n optionsEmptyIconProps = {},\n autoFocus,\n disableAutoScrollToSelectedOption,\n closeMenuOnScroll,\n contrast,\n selectedOption,\n defaultSelectedOption,\n icon,\n inputMode,\n loadingMessage,\n loadingIcon,\n maxLength,\n multiple,\n onCloseMenu,\n onOpenMenu,\n onSelectOption,\n options,\n groupSelectedOptions,\n optionsMultiToggleCaption,\n optionsEmptyMessage,\n optionsEmptyIcon,\n palette,\n placeholder,\n readOnly,\n required,\n status,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n form,\n ...rootProps\n } = props\n\n const sizeProps = {\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n }\n\n const iconBaseProps: IconProps = {\n sizes: SIZES_ICON,\n color: rootProps.disabled ? 'content-disabled' : 'content-onmain-tertiary',\n }\n\n const inputLabelId = useMemo(() => nanoid(), [])\n\n const getRelevantOptions = useMemo(() => {\n const fuse = new Fuse<DropdownOption>(options, {\n threshold: 0.4,\n ignoreLocation: true,\n keys: [FuseSearchKeys.text, FuseSearchKeys.label, FuseSearchKeys.tags],\n })\n\n return (pattern: string): DropdownOption[] =>\n pattern.length === 0 ? options : fuse.search(pattern).map((result) => result.item)\n }, [options])\n\n const [dropdownSelectedOption, setDropdownSelectedOption] = useState<DropdownOption[]>(() =>\n getDropdownSelectedOption(selectedOption !== undefined ? selectedOption : defaultSelectedOption, multiple)\n )\n\n const [inputText, setInputText] = useState<string>(() => getDropdownInputText(dropdownSelectedOption, multiple))\n\n const [inputFocused, setInputFocused] = useState<boolean>(false)\n\n const [menuRelevantOptions, setMenuRelevantOptions] = useState<DropdownOption[]>(() =>\n getRelevantOptions(inputText)\n )\n\n const [menuOpenRequest, setMenuOpenRequest] = useState<boolean>(false)\n\n const menuOptionsGroups: ReturnType<typeof groupDropdownOptions> = multiple\n ? groupDropdownOptions(options, dropdownSelectedOption)\n : [[], []]\n\n const menuOpen = menuOpenRequest && !rootProps.disabled\n const menuNoRelevantOptions = menuRelevantOptions.length === 0 || loading\n\n const inputSynced = inputText === getDropdownInputText(dropdownSelectedOption)\n const inputRequired = required && dropdownSelectedOption.length === 0\n const inputActive = Boolean(menuOpen || inputText || inputFocused)\n\n const multiToggleChecked = menuOptionsGroups[0].length > 0 && menuOptionsGroups[1].length === 0\n const multiToggleIndeterminate = menuOptionsGroups[0].length > 0 && menuOptionsGroups[1].length > 0\n\n const inputRef = useRef<HTMLInputElement | null>(null)\n const menuRef = useRef<HTMLDivElement | null>(null)\n const menuListRef = useRef<HTMLUListElement | null>(null)\n const selectedOptionRef = useRef<HTMLElement | null>(null)\n\n const timeoutIdRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n const inputTextPrevRef = useRef<string>(inputText)\n const menuOpenPrevRef = useRef<boolean>(menuOpen)\n\n useEffect(() => {\n if (inputText === inputTextPrevRef.current) {\n setMenuRelevantOptions(getRelevantOptions(inputText))\n } else {\n inputTextPrevRef.current = inputText\n timeoutIdRef.current = setTimeout(() => {\n setMenuRelevantOptions(getRelevantOptions(inputText))\n }, 150)\n }\n\n return () => {\n if (timeoutIdRef.current) {\n clearTimeout(timeoutIdRef.current)\n }\n }\n }, [getRelevantOptions, inputText])\n\n useLayoutEffect(() => {\n if (selectedOption === undefined) return\n\n if (!multiple) setInputText(getDropdownInputText(selectedOption))\n setDropdownSelectedOption(getDropdownSelectedOption(selectedOption, multiple))\n }, [multiple, selectedOption])\n\n useEffect(() => {\n if (menuOpen === menuOpenPrevRef.current) return\n\n if (menuOpen && onOpenMenu) onOpenMenu()\n if (!menuOpen && onCloseMenu) onCloseMenu()\n\n menuOpenPrevRef.current = menuOpen\n }, [menuOpen, onCloseMenu, onOpenMenu])\n\n useEffect(() => {\n if (!multiple && !disableAutoScrollToSelectedOption && menuOpen && menuRef.current && selectedOptionRef.current) {\n const menuRect = menuRef.current.getBoundingClientRect()\n const selectedOptionRect = selectedOptionRef.current.getBoundingClientRect()\n\n if (selectedOptionRect.top < menuRect.top || selectedOptionRect.bottom > menuRect.bottom) {\n menuRef.current.scrollTo(0, selectedOptionRef.current.offsetTop)\n }\n }\n }, [multiple, disableAutoScrollToSelectedOption, menuOpen])\n\n useEffect(() => {\n const handleScroll = (evt: Event) => {\n inputRef.current?.focus()\n setMenuOpenRequest(false)\n\n if (evt.currentTarget) {\n evt.currentTarget.removeEventListener(evt.type, handleScroll)\n }\n }\n\n if (closeMenuOnScroll && menuOpen) {\n document.addEventListener('scroll', handleScroll)\n }\n\n return () => {\n document.removeEventListener('scroll', handleScroll)\n }\n }, [closeMenuOnScroll, menuOpen])\n\n return (\n <FormInputLabel\n {...rootProps}\n {...sizeProps}\n ref={ref}\n labelId={inputLabelId}\n labelPosition={labelPosition}\n active={inputActive}\n onColored={contrast}\n primary={primary}\n error={status === 'error'}\n success={status === 'success'}\n icon={[icon, <Styled.ChevronIcon key='chevron' up={menuOpen} />]}\n iconProps={{\n ...sizeProps,\n ...iconBaseProps,\n ...iconProps,\n }}\n palette={{\n color: rootProps.disabled ? palette.labelColorDisabled : palette.labelColor,\n backgroundColor: rootProps.disabled ? palette.backgroundColorDisabled : palette.backgroundColor,\n backgroundColorHover: rootProps.disabled ? palette.backgroundColorDisabled : palette.backgroundColorHover,\n borderColor: rootProps.disabled ? palette.borderColorDisabled : palette.borderColor,\n }}\n onClick={(evt) => {\n if (rootProps.onClick) rootProps.onClick(evt)\n\n if (rootProps.disabled) return\n\n inputRef.current?.focus()\n\n if (!menuOpen) {\n setMenuOpenRequest(true)\n\n if (searchable && !multiple && inputSynced) {\n setInputText('')\n setMenuRelevantOptions(getRelevantOptions(''))\n }\n } else if (menuRef.current && evt.target instanceof Node && !menuRef.current.contains(evt.target)) {\n setMenuOpenRequest(false)\n }\n }}\n onKeyUp={(evt) => {\n if (rootProps.onKeyUp) rootProps.onKeyUp(evt)\n\n if (keyboardKeys.Esc.validate(evt.key)) {\n inputRef.current?.focus()\n setMenuOpenRequest(false)\n }\n }}\n onPointerDown={(evt) => {\n if (rootProps.onPointerDown) rootProps.onPointerDown(evt)\n\n if (evt.target !== inputRef.current && evt.target instanceof Node && evt.currentTarget.contains(evt.target)) {\n evt.preventDefault()\n }\n }}\n onFocus={(evt) => {\n if (rootProps.onFocus) rootProps.onFocus(evt)\n\n if (inputRef.current && evt.target === inputRef.current) {\n setInputFocused(true)\n\n if (searchable && !multiple && inputSynced && !menuOpen) {\n setInputText('')\n setMenuRelevantOptions(getRelevantOptions(''))\n }\n }\n }}\n onBlur={(evt) => {\n if (rootProps.onBlur) rootProps.onBlur(evt)\n\n if (inputRef.current && evt.target === inputRef.current) {\n setInputFocused(false)\n }\n\n if (!evt.currentTarget.contains(evt.relatedTarget)) {\n setInputText(getDropdownInputText(dropdownSelectedOption, multiple))\n setMenuOpenRequest(false)\n }\n }}\n input={\n <>\n {inputRequired && !searchable && !readOnly && (\n <Styled.InputMimic\n required\n type='text'\n inputMode='none'\n form={form}\n tabIndex={-1}\n onFocus={() => {\n inputRef.current?.focus()\n }}\n />\n )}\n <FormInput\n ref={inputRef}\n aria-labelledby={rootProps.label ? inputLabelId : undefined}\n type='text'\n autoComplete='off'\n autoCapitalize='off'\n autoCorrect='off'\n spellCheck='false'\n form={form}\n autoFocus={autoFocus}\n inputMode={searchable ? inputMode : 'none'}\n maxLength={maxLength}\n placeholder={placeholder}\n readOnly={readOnly || !searchable}\n required={inputRequired}\n disabled={rootProps.disabled}\n value={inputText}\n palette={{\n color: palette.color,\n colorDisabled: palette.colorDisabled,\n placeholderColor: palette.placeholderColor,\n placeholderColorDisabled: palette.placeholderColorDisabled,\n }}\n onClick={(evt) => {\n if (menuOpen && evt.currentTarget.selectionStart !== evt.currentTarget.selectionEnd) {\n evt.stopPropagation()\n }\n }}\n onChange={(evt) => {\n setInputText(evt.currentTarget.value)\n setMenuOpenRequest(true)\n }}\n onKeyDown={(evt) => {\n if (keyboardKeys.Enter.validate(evt.key)) {\n setInputText(getDropdownInputText(dropdownSelectedOption, multiple))\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.Space.validate(evt.key) && (!menuOpen || evt.currentTarget.selectionStart === 0)) {\n evt.preventDefault()\n\n if (searchable && !multiple && inputSynced && !menuOpen) {\n setInputText('')\n setMenuRelevantOptions(getRelevantOptions(''))\n }\n\n setMenuOpenRequest((prev) => !prev)\n }\n\n if (keyboardKeys.ArrowDown.validate(evt.key) && menuListRef.current) {\n evt.preventDefault()\n focusFirstFocusable(menuListRef.current)\n }\n }}\n />\n {dropdownSelectedOption.map((item) => (\n <input\n key={item.value}\n type='hidden'\n name={name}\n value={item.value}\n form={form}\n disabled={rootProps.disabled}\n />\n ))}\n </>\n }\n addon={\n multiple && dropdownSelectedOption.length > 0 ? (\n <Chip\n size='xs'\n active\n black\n marginLeft={12}\n disabled={rootProps.disabled}\n cursor={rootProps.disabled ? 'not-allowed' : undefined}\n text={dropdownSelectedOption.length}\n textProps={{\n appearance: 'caption',\n size: 'xs',\n }}\n palette={\n rootProps.disabled\n ? {\n color: 'content-disabled',\n colorHover: 'content-disabled',\n backgroundColor: 'bg-disabled-small',\n backgroundColorHover: 'bg-disabled-small',\n }\n : undefined\n }\n onPointerDown={(evt) => {\n evt.preventDefault()\n }}\n discardButtonProps={{\n contrast: !rootProps.disabled,\n onKeyDown: (evt) => {\n if (keyboardKeys.ArrowDown.validate(evt.key) && menuListRef.current) {\n evt.preventDefault()\n focusFirstFocusable(menuListRef.current)\n }\n },\n onClick: (evt) => {\n evt.stopPropagation()\n\n if (!readOnly) {\n if (selectedOption === undefined) {\n setDropdownSelectedOption([])\n }\n\n if (onSelectOption) onSelectOption([])\n\n inputRef.current?.focus()\n setMenuOpenRequest(true)\n }\n },\n }}\n />\n ) : undefined\n }\n dropdown={\n menuOpen ? (\n <DropdownMenu\n {...menuProps}\n ref={menuRef}\n tabIndex={menuNoRelevantOptions ? undefined : 0}\n secondary={!contrast}\n elevated={contrast}\n disableAutoFocus\n palette={{\n backgroundColor: palette.menuBackgroundColor,\n borderColor: palette.menuBorderColor,\n }}\n onFocus={(evt) => {\n if (!menuListRef.current) return\n\n if (evt.target === evt.currentTarget) {\n if (menuListRef.current.contains(evt.relatedTarget)) {\n inputRef.current?.focus()\n } else {\n focusFirstFocusable(menuListRef.current)\n }\n }\n }}\n onKeyDown={(evt) => {\n if (keyboardKeys.Enter.validate(evt.key)) {\n inputRef.current?.focus()\n setInputText(getDropdownInputText(dropdownSelectedOption, multiple))\n setMenuOpenRequest(false)\n }\n }}\n >\n {menuNoRelevantOptions ? (\n <DropdownMenuNoOptions\n loading={loading}\n loadingMessage={loadingMessage}\n loadingIcon={loadingIcon}\n loadingIconProps={{\n ...sizeProps,\n ...iconBaseProps,\n ...loadingIconProps,\n }}\n emptyMessage={optionsEmptyMessage}\n emptyIcon={optionsEmptyIcon}\n emptyIconProps={{\n ...sizeProps,\n ...iconBaseProps,\n ...optionsEmptyIconProps,\n }}\n />\n ) : multiple ? (\n <MenuList ref={menuListRef}>\n {inputText.length === 0 ? (\n <>\n {optionsMultiToggle && (\n <ListItem\n {...sizeProps}\n text={optionsMultiToggleCaption}\n disabled={rootProps.disabled}\n borderRadius={8}\n ellipsis={false}\n textProps={{ wordBreak: 'break-word' }}\n onClick={(evt) => {\n evt.stopPropagation()\n }}\n control={\n <InputCheckbox\n sizes={SIZES_CHECKBOX}\n form='none'\n name={name}\n checked={multiToggleChecked}\n indeterminate={multiToggleIndeterminate}\n error={(multiToggleChecked || multiToggleIndeterminate) && status === 'error'}\n success={(multiToggleChecked || multiToggleIndeterminate) && status === 'success'}\n onChange={() => {\n if (!readOnly) {\n const update = multiToggleChecked || multiToggleIndeterminate ? [] : [...options]\n\n if (selectedOption === undefined) {\n setDropdownSelectedOption(update)\n }\n\n if (onSelectOption) onSelectOption(update)\n }\n }}\n />\n }\n />\n )}\n {optionsMultiToggle && <MenuDivider />}\n {groupSelectedOptions &&\n menuOptionsGroups[0].map((option) => {\n const optionStatus = option.status ?? status\n const optionErrorStatus = optionStatus === 'error'\n const optionSuccessStatus = optionStatus === 'success'\n\n return (\n <ListItem\n {...sizeProps}\n key={option.value}\n active\n text={option.text}\n danger={optionErrorStatus}\n success={optionSuccessStatus}\n disabled={rootProps.disabled}\n borderRadius={8}\n ellipsis={false}\n textProps={{ wordBreak: 'break-word' }}\n onClick={(evt) => {\n evt.stopPropagation()\n inputRef.current?.focus()\n }}\n control={\n <InputCheckbox\n sizes={SIZES_CHECKBOX}\n form='none'\n name={name}\n value={option.value}\n checked\n error={optionErrorStatus}\n success={optionSuccessStatus}\n onChange={(evt) => {\n if (!readOnly) {\n const update = dropdownSelectedOption.filter(\n (item) => item.value !== evt.currentTarget.value\n )\n\n if (selectedOption === undefined) {\n setDropdownSelectedOption(update)\n }\n\n if (onSelectOption) onSelectOption(update)\n }\n }}\n />\n }\n />\n )\n })}\n {groupSelectedOptions && menuOptionsGroups[0].length > 0 && menuOptionsGroups[1].length > 0 && (\n <MenuDivider />\n )}\n {groupSelectedOptions &&\n menuOptionsGroups[1].map((option) => (\n <ListItem\n {...sizeProps}\n key={option.value}\n text={option.text}\n disabled={rootProps.disabled}\n borderRadius={8}\n ellipsis={false}\n textProps={{ wordBreak: 'break-word' }}\n onClick={(evt) => {\n evt.stopPropagation()\n inputRef.current?.focus()\n }}\n control={\n <InputCheckbox\n sizes={SIZES_CHECKBOX}\n form='none'\n name={name}\n value={option.value}\n checked={false}\n onChange={() => {\n if (!readOnly) {\n const update = [...dropdownSelectedOption, option]\n\n if (selectedOption === undefined) {\n setDropdownSelectedOption(update)\n }\n\n if (onSelectOption) onSelectOption(update)\n }\n }}\n />\n }\n />\n ))}\n {!groupSelectedOptions &&\n options.map((option) => {\n const selected =\n dropdownSelectedOption.findIndex((item) => item.value === option.value) !== -1\n\n const optionStatus = option.status ?? status\n const optionErrorStatus = selected && optionStatus === 'error'\n const optionSuccessStatus = selected && optionStatus === 'success'\n\n return (\n <ListItem\n {...sizeProps}\n key={option.value}\n text={option.text}\n danger={optionErrorStatus}\n success={optionSuccessStatus}\n disabled={rootProps.disabled}\n active={selected}\n borderRadius={8}\n ellipsis={false}\n textProps={{ wordBreak: 'break-word' }}\n onClick={(evt) => {\n evt.stopPropagation()\n }}\n control={\n <InputCheckbox\n sizes={SIZES_CHECKBOX}\n form='none'\n name={name}\n value={option.value}\n checked={selected}\n error={optionErrorStatus}\n success={optionSuccessStatus}\n onChange={(evt) => {\n if (!readOnly) {\n const update = selected\n ? dropdownSelectedOption.filter(\n (item) => item.value !== evt.currentTarget.value\n )\n : [...dropdownSelectedOption, option]\n\n if (selectedOption === undefined) {\n setDropdownSelectedOption(update)\n }\n\n if (onSelectOption) onSelectOption(update)\n }\n }}\n />\n }\n />\n )\n })}\n </>\n ) : (\n <>\n {menuRelevantOptions.map((option) => {\n const selected = dropdownSelectedOption.findIndex((item) => item.value === option.value) !== -1\n\n const optionStatus = option.status ?? status\n const optionErrorStatus = selected && optionStatus === 'error'\n const optionSuccessStatus = selected && optionStatus === 'success'\n\n return (\n <ListItem\n {...sizeProps}\n key={option.value}\n text={option.text}\n danger={optionErrorStatus}\n success={optionSuccessStatus}\n disabled={rootProps.disabled}\n active={selected}\n borderRadius={8}\n ellipsis={false}\n textProps={{ wordBreak: 'break-word' }}\n onClick={(evt) => {\n evt.stopPropagation()\n }}\n control={\n <InputCheckbox\n sizes={SIZES_CHECKBOX}\n form='none'\n name={name}\n value={option.value}\n checked={selected}\n error={optionErrorStatus}\n success={optionSuccessStatus}\n onChange={(evt) => {\n if (!readOnly) {\n const update = selected\n ? dropdownSelectedOption.filter((item) => item.value !== evt.currentTarget.value)\n : [...dropdownSelectedOption, option]\n\n if (selectedOption === undefined) {\n setDropdownSelectedOption(update)\n }\n\n if (onSelectOption) onSelectOption(update)\n }\n }}\n />\n }\n />\n )\n })}\n </>\n )}\n </MenuList>\n ) : (\n <MenuList ref={menuListRef}>\n {(searchable ? menuRelevantOptions : options).map((option, _, optionsRendered) => {\n const selected = dropdownSelectedOption.findIndex((item) => item.value === option.value) !== -1\n\n return (\n <ListItem\n {...sizeProps}\n ref={selected ? selectedOptionRef : undefined}\n key={option.value}\n text={option.text}\n active={selected}\n danger={selected && status === 'error'}\n success={selected && status === 'success'}\n disabled={rootProps.disabled}\n borderRadius={8}\n ellipsis={false}\n textProps={{ wordBreak: 'break-word' }}\n onClick={(evt) => {\n evt.stopPropagation()\n\n if (!readOnly) {\n const update = selected ? null : option\n\n if (selectedOption === undefined) {\n setInputText(getDropdownInputText(update))\n setDropdownSelectedOption(getDropdownSelectedOption(update))\n }\n\n if (onSelectOption) onSelectOption(update)\n\n if (update || optionsRendered === menuRelevantOptions) {\n inputRef.current?.focus()\n }\n\n setMenuOpenRequest(!update)\n }\n }}\n />\n )\n })}\n </MenuList>\n )}\n </DropdownMenu>\n ) : undefined\n }\n />\n )\n }),\n {\n sizes: SIZES,\n displayName: COMPONENT_NAME,\n }\n)\n\nexport { Dropdown, COMPONENT_NAME }\n"],"names":["Dropdown","withMergedProps","forwardRef","props","ref","size","name","labelPosition","searchable","primary","optionsMultiToggle","loading","iconProps","menuProps","loadingIconProps","optionsEmptyIconProps","autoFocus","disableAutoScrollToSelectedOption","closeMenuOnScroll","contrast","selectedOption","defaultSelectedOption","icon","inputMode","loadingMessage","loadingIcon","maxLength","multiple","onCloseMenu","onOpenMenu","onSelectOption","options","groupSelectedOptions","optionsMultiToggleCaption","optionsEmptyMessage","optionsEmptyIcon","palette","placeholder","readOnly","required","status","sizeXXS","sizeXS","sizeS","sizeM","sizeL","sizeXL","form","rootProps","sizeProps","iconBaseProps","sizes","SIZES_ICON","color","disabled","inputLabelId","useMemo","nanoid","getRelevantOptions","fuse","Fuse","default","threshold","ignoreLocation","keys","FuseSearchKeys","text","label","tags","pattern","length","search","map","result","item","dropdownSelectedOption","setDropdownSelectedOption","useState","getDropdownSelectedOption","undefined","inputText","setInputText","getDropdownInputText","inputFocused","setInputFocused","menuRelevantOptions","setMenuRelevantOptions","menuOpenRequest","setMenuOpenRequest","menuOptionsGroups","groupDropdownOptions","menuOpen","menuNoRelevantOptions","inputSynced","inputRequired","inputActive","Boolean","multiToggleChecked","multiToggleIndeterminate","inputRef","useRef","menuRef","menuListRef","selectedOptionRef","timeoutIdRef","inputTextPrevRef","menuOpenPrevRef","useEffect","current","setTimeout","clearTimeout","useLayoutEffect","menuRect","getBoundingClientRect","selectedOptionRect","top","bottom","scrollTo","offsetTop","handleScroll","evt","focus","currentTarget","removeEventListener","type","document","addEventListener","_jsx","FormInputLabel","labelId","active","onColored","error","success","jsx","Styled","up","labelColorDisabled","labelColor","backgroundColor","backgroundColorDisabled","backgroundColorHover","borderColor","borderColorDisabled","onClick","target","Node","contains","onKeyUp","keyboardKeys","Esc","validate","key","onPointerDown","preventDefault","onFocus","onBlur","relatedTarget","input","_jsxs","jsxs","_Fragment","children","tabIndex","FormInput","autoComplete","autoCapitalize","autoCorrect","spellCheck","value","colorDisabled","placeholderColor","placeholderColorDisabled","selectionStart","selectionEnd","stopPropagation","onChange","onKeyDown","Enter","Space","prev","ArrowDown","focusFirstFocusable","addon","Chip","black","marginLeft","cursor","textProps","appearance","colorHover","discardButtonProps","dropdown","DropdownMenu","secondary","elevated","disableAutoFocus","menuBackgroundColor","menuBorderColor","DropdownMenuNoOptions","emptyMessage","emptyIcon","emptyIconProps","MenuList","ListItem","borderRadius","ellipsis","wordBreak","control","InputCheckbox","SIZES_CHECKBOX","checked","indeterminate","update","MenuDivider","option","optionStatus","optionErrorStatus","optionSuccessStatus","_createElement","danger","filter","createElement","selected","findIndex","_","optionsRendered","SIZES","displayName"],"mappings":"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"}
|