@skbkontur/react-ui 3.8.3 → 3.8.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/cjs/components/Center/Center.d.ts +4 -8
  3. package/cjs/components/Center/Center.js +1 -6
  4. package/cjs/components/Center/Center.js.map +1 -1
  5. package/cjs/components/Center/Center.md +24 -3
  6. package/cjs/components/Checkbox/Checkbox.d.ts +31 -14
  7. package/cjs/components/Checkbox/Checkbox.js +24 -5
  8. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  9. package/cjs/components/Checkbox/Checkbox.md +92 -51
  10. package/cjs/components/DateInput/DateInput.js +3 -1
  11. package/cjs/components/DateInput/DateInput.js.map +1 -1
  12. package/cjs/components/DateInput/DateInput.styles.d.ts +2 -0
  13. package/cjs/components/DateInput/DateInput.styles.js +13 -1
  14. package/cjs/components/DateInput/DateInput.styles.js.map +1 -1
  15. package/cjs/components/Hint/Hint.d.ts +33 -0
  16. package/cjs/components/Hint/Hint.js +34 -1
  17. package/cjs/components/Hint/Hint.js.map +1 -1
  18. package/cjs/components/Hint/Hint.md +40 -1
  19. package/cjs/components/Link/Link.d.ts +28 -10
  20. package/cjs/components/Link/Link.js +22 -4
  21. package/cjs/components/Link/Link.js.map +1 -1
  22. package/cjs/components/Link/Link.md +73 -7
  23. package/cjs/components/MenuItem/MenuItem.d.ts +42 -7
  24. package/cjs/components/MenuItem/MenuItem.js +30 -0
  25. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  26. package/cjs/components/RadioGroup/RadioGroup.d.ts +51 -61
  27. package/cjs/components/RadioGroup/RadioGroup.js +25 -71
  28. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  29. package/cjs/components/Select/Select.js +6 -1
  30. package/cjs/components/Select/Select.js.map +1 -1
  31. package/cjs/components/Select/Select.styles.d.ts +1 -0
  32. package/cjs/components/Select/Select.styles.js +15 -9
  33. package/cjs/components/Select/Select.styles.js.map +1 -1
  34. package/cjs/components/Select/selectTheme.js +5 -1
  35. package/cjs/components/Select/selectTheme.js.map +1 -1
  36. package/cjs/components/SidePage/SidePage.d.ts +0 -1
  37. package/cjs/components/SidePage/SidePage.js +2 -16
  38. package/cjs/components/SidePage/SidePage.js.map +1 -1
  39. package/cjs/components/SidePage/SidePage.styles.d.ts +5 -1
  40. package/cjs/components/SidePage/SidePage.styles.js +52 -27
  41. package/cjs/components/SidePage/SidePage.styles.js.map +1 -1
  42. package/cjs/components/SidePage/SidePageFooter.js +1 -1
  43. package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
  44. package/cjs/components/SidePage/SidePageHeader.js +1 -1
  45. package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
  46. package/cjs/components/TokenInput/TokenInputMenu.js +1 -1
  47. package/cjs/components/TokenInput/TokenInputMenu.js.map +1 -1
  48. package/cjs/components/Tooltip/Tooltip.d.ts +3 -2
  49. package/cjs/components/Tooltip/Tooltip.js +1 -0
  50. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  51. package/cjs/internal/Calendar/Calendar.js +1 -1
  52. package/cjs/internal/Calendar/Calendar.js.map +1 -1
  53. package/cjs/internal/CustomComboBox/ComboBoxMenu.js +1 -1
  54. package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  55. package/cjs/internal/Popup/Popup.js +9 -3
  56. package/cjs/internal/Popup/Popup.js.map +1 -1
  57. package/cjs/internal/PopupMenu/PopupMenu.d.ts +0 -1
  58. package/cjs/internal/PopupMenu/PopupMenu.js +1 -2
  59. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  60. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  61. package/cjs/internal/themes/DefaultTheme.d.ts +4 -0
  62. package/cjs/internal/themes/DefaultTheme.js +12 -0
  63. package/cjs/internal/themes/DefaultTheme.js.map +1 -1
  64. package/components/Center/Center/Center.js +1 -2
  65. package/components/Center/Center/Center.js.map +1 -1
  66. package/components/Center/Center.d.ts +4 -8
  67. package/components/Center/Center.md +24 -3
  68. package/components/Checkbox/Checkbox/Checkbox.js +3 -5
  69. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  70. package/components/Checkbox/Checkbox.d.ts +31 -14
  71. package/components/Checkbox/Checkbox.md +92 -51
  72. package/components/DateInput/DateInput/DateInput.js +7 -3
  73. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  74. package/components/DateInput/DateInput.styles/DateInput.styles.js +7 -1
  75. package/components/DateInput/DateInput.styles/DateInput.styles.js.map +1 -1
  76. package/components/DateInput/DateInput.styles.d.ts +2 -0
  77. package/components/Hint/Hint/Hint.js +4 -0
  78. package/components/Hint/Hint/Hint.js.map +1 -1
  79. package/components/Hint/Hint.d.ts +33 -0
  80. package/components/Hint/Hint.md +40 -1
  81. package/components/Link/Link/Link.js +1 -4
  82. package/components/Link/Link/Link.js.map +1 -1
  83. package/components/Link/Link.d.ts +28 -10
  84. package/components/Link/Link.md +73 -7
  85. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  86. package/components/MenuItem/MenuItem.d.ts +42 -7
  87. package/components/RadioGroup/RadioGroup/RadioGroup.js +0 -72
  88. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  89. package/components/RadioGroup/RadioGroup.d.ts +51 -61
  90. package/components/Select/Select/Select.js +2 -2
  91. package/components/Select/Select/Select.js.map +1 -1
  92. package/components/Select/Select.styles/Select.styles.js +12 -9
  93. package/components/Select/Select.styles/Select.styles.js.map +1 -1
  94. package/components/Select/Select.styles.d.ts +1 -0
  95. package/components/Select/selectTheme/selectTheme.js +4 -1
  96. package/components/Select/selectTheme/selectTheme.js.map +1 -1
  97. package/components/SidePage/SidePage/SidePage.js +8 -24
  98. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  99. package/components/SidePage/SidePage.d.ts +0 -1
  100. package/components/SidePage/SidePage.styles/SidePage.styles.js +39 -27
  101. package/components/SidePage/SidePage.styles/SidePage.styles.js.map +1 -1
  102. package/components/SidePage/SidePage.styles.d.ts +5 -1
  103. package/components/SidePage/SidePageFooter/SidePageFooter.js +1 -0
  104. package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
  105. package/components/SidePage/SidePageHeader/SidePageHeader.js +2 -1
  106. package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
  107. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js +1 -1
  108. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js.map +1 -1
  109. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  110. package/components/Tooltip/Tooltip.d.ts +3 -2
  111. package/internal/Calendar/Calendar/Calendar.js +2 -1
  112. package/internal/Calendar/Calendar/Calendar.js.map +1 -1
  113. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +4 -2
  114. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
  115. package/internal/Popup/Popup/Popup.js +6 -4
  116. package/internal/Popup/Popup/Popup.js.map +1 -1
  117. package/internal/PopupMenu/PopupMenu/PopupMenu.js +0 -1
  118. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  119. package/internal/PopupMenu/PopupMenu.d.ts +0 -1
  120. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  121. package/internal/themes/DefaultTheme/DefaultTheme.js +20 -0
  122. package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
  123. package/internal/themes/DefaultTheme.d.ts +4 -0
  124. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["RadioGroup.tsx"],"names":["React","PropTypes","invariant","getRandomID","Radio","createPropsGetter","FocusTrap","ThemeContext","CommonWrapper","cx","styles","Prevent","RadioGroup","props","theme","node","name","getProps","defaultProps","getValue","isControlled","value","state","activeItem","getName","handleSelect","setState","onValueChange","renderRadio","itemValue","data","index","itemProps","key","className","item","itemFirst","itemInline","inline","renderItem","ref","element","defaultValue","getChildContext","onSelect","disabled","error","warning","render","renderMain","width","onMouseLeave","onMouseOver","onMouseEnter","onBlur","style","handlers","root","renderChildren","focus","radio","querySelector","items","children","mapItems","Component","__KONTUR_REACT_UI__","childContextTypes","bool","string","any","func","propTypes","oneOfType","number","_value","fn","result","entry","normalizeEntry","push","Array","isArray"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport invariant from 'invariant';\n\nimport { getRandomID } from '../../lib/utils';\nimport { Radio } from '../Radio';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable } from '../../typings/utility-types';\nimport { FocusTrap } from '../../internal/FocusTrap';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './RadioGroup.styles';\nimport { Prevent } from './Prevent';\n\nexport interface RadioGroupProps<T = string | number> extends CommonProps {\n defaultValue?: T;\n value?: T;\n items?: T[] | [T, React.ReactNode][];\n name?: string;\n disabled?: boolean;\n warning?: boolean;\n error?: boolean;\n inline?: boolean;\n width?: React.CSSProperties['width'];\n renderItem?: (itemValue: T, data: React.ReactNode) => React.ReactNode;\n /** Вызывается при изменении `value` */\n onValueChange?: (value: T) => void;\n onBlur?: (event: FocusEvent) => void;\n onMouseLeave?: () => any;\n onMouseOver?: () => any;\n onMouseEnter?: () => any;\n}\n\nexport interface RadioGroupState<T> {\n activeItem?: T;\n}\n\nexport class RadioGroup<T> extends React.Component<RadioGroupProps<T>, RadioGroupState<T>> {\n public static __KONTUR_REACT_UI__ = 'RadioGroup';\n\n public static childContextTypes = {\n error: PropTypes.bool,\n name: PropTypes.string,\n warning: PropTypes.bool,\n disabled: PropTypes.bool,\n activeItem: PropTypes.any,\n onSelect: PropTypes.func,\n };\n\n public static propTypes = {\n /**\n * Может быть использовано, если не передан параметр `items`\n *\n * `children` может содержать любую разметку с компонентами Radio.\n * Каждому компоненту Radio нужно указать параметр `value`, такого же типа\n * как и параметр `value` самой радиогруппы.\n *\n * Значения активного элемента сравниваются по строгому равенству `===`\n */\n children: PropTypes.node,\n\n /**\n * Значение по умолчанию. Должно быть одним из значений дочерних радиокнопок\n * или значей из параметра `items`\n */\n defaultValue: PropTypes.any,\n\n /**\n * Дизейблит все радиокнопки\n */\n disabled: PropTypes.bool,\n\n /**\n * Переводит все радиокнопки в состоянии ошибки\n */\n error: PropTypes.bool,\n\n /**\n * Выравнивает элементы в строку. Не работает с `children`\n */\n inline: PropTypes.bool,\n\n /**\n * Может быть использовано, если не передан параметр `children`\n *\n * Массив параметров радиокнопок. Может быть типа `Array<Value>` или\n * `Array<[Value, Data]>`, где тип `Value` — значение радиокнопки, а `Data`\n * — значение которое будет использовано вторым параметром в `renderItem`.\n * Если тип `items: Array<Value>`, то он будет приведен к типу\n * `Array<[Value, Value]>`\n */\n items: PropTypes.any,\n\n /**\n * Аттрибут name для вложенных радиокнопок. Если не указан, то сгенерируется\n * случайное имя по алгоритму\n * [uuid v1](https://github.com/kelektiv/node-uuid#version-1)\n */\n name: PropTypes.string,\n\n /**\n * Метод отрисовки контента радиокнопки. Не работает с `children`.\n *\n * Принимает два аргумента: `(value: Value, data: Data) => React.Node`\n */\n renderItem: PropTypes.func,\n\n /**\n * Значение радиогруппы. Должно быть одним из значений радиокнопок.\n * Если не указано, то компонент будет работать, как неконтроллируемый\n */\n value: PropTypes.any,\n\n /**\n * Переводит все радиокнопки в состоянии предупреждения\n */\n warning: PropTypes.bool,\n\n /**\n * Ширина радиогруппы. Не работает с `children`\n */\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * Обработчик события при переключении радиокнопок.\n * Имеет тип\n * `(value: Value) => any`\n */\n onValueChange: PropTypes.func,\n\n onBlur: PropTypes.func,\n\n onMouseEnter: PropTypes.func,\n\n onMouseLeave: PropTypes.func,\n\n onMouseOver: PropTypes.func,\n };\n\n public static defaultProps = {\n renderItem,\n };\n\n public static Prevent = Prevent;\n\n private theme!: Theme;\n\n private node: Nullable<HTMLSpanElement>;\n private name = getRandomID();\n private getProps = createPropsGetter(RadioGroup.defaultProps);\n\n constructor(props: RadioGroupProps<T>) {\n super(props);\n\n this.state = {\n activeItem: this.props.defaultValue,\n };\n }\n\n public getChildContext() {\n return {\n activeItem: this.getValue(),\n onSelect: this.handleSelect,\n name: this.getName(),\n disabled: this.props.disabled,\n error: this.props.error,\n warning: this.props.warning,\n };\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n const { width, onMouseLeave, onMouseOver, onMouseEnter, onBlur } = this.props;\n const style = {\n width: width != null ? width : 'auto',\n };\n const handlers = {\n onMouseOver,\n onMouseEnter,\n onMouseLeave,\n };\n\n return (\n <CommonWrapper {...this.props}>\n <FocusTrap onBlur={onBlur}>\n <span ref={this.ref} style={style} className={styles.root()} {...handlers}>\n {this.renderChildren()}\n </span>\n </FocusTrap>\n </CommonWrapper>\n );\n }\n\n /**\n * @public\n */\n public focus() {\n const node = this.node;\n if (!node) {\n return;\n }\n\n let radio = node.querySelector('input[type=\"radio\"]:checked') as Nullable<HTMLInputElement>;\n\n // If no checked radios, try get first radio\n if (!radio || radio.disabled) {\n radio = node.querySelector('input[type=\"radio\"]:not([disabled])') as Nullable<HTMLInputElement>;\n }\n\n if (radio) {\n radio.focus();\n }\n }\n\n private getValue = () => (this.isControlled() ? this.props.value : this.state.activeItem);\n\n private getName = () => this.props.name || this.name;\n\n private isControlled = () => this.props.value != null;\n\n private handleSelect = (value: T) => {\n if (!this.isControlled()) {\n this.setState({ activeItem: value });\n }\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private renderChildren() {\n const { items, children } = this.props;\n invariant((!items && children) || (items && !children), 'Either items or children must be passed, not both');\n return items ? mapItems<T>(this.renderRadio, items) : children;\n }\n\n private renderRadio = (itemValue: T, data: React.ReactNode, index: number): JSX.Element => {\n const itemProps = {\n key: typeof itemValue === 'string' || typeof itemValue === 'number' ? itemValue : index,\n className: cx({\n [styles.item(this.theme)]: true,\n [styles.itemFirst()]: index === 0,\n [styles.itemInline()]: !!this.props.inline,\n }),\n };\n\n return (\n <span {...itemProps}>\n <Radio value={itemValue}>{this.getProps().renderItem<T>(itemValue, data)}</Radio>\n </span>\n );\n };\n\n private ref = (element: HTMLSpanElement) => {\n this.node = element;\n };\n}\n\nfunction renderItem<T>(_value: T, data: React.ReactNode) {\n return data;\n}\n\nfunction mapItems<T>(\n fn: (value: T, data: React.ReactNode, index: number) => React.ReactNode,\n items: T[] | [T, React.ReactNode][],\n) {\n const result: React.ReactNode[] = [];\n let index = 0;\n for (const entry of items) {\n const [value, data] = normalizeEntry<T>(entry);\n result.push(fn(value, data, index));\n ++index;\n }\n return result;\n}\n\nfunction normalizeEntry<T>(entry: T | [T, React.ReactNode]): [T, React.ReactNode] {\n if (!Array.isArray(entry)) {\n return [entry, entry];\n }\n return entry;\n}\n"]}
1
+ {"version":3,"sources":["RadioGroup.tsx"],"names":["React","PropTypes","invariant","getRandomID","Radio","createPropsGetter","FocusTrap","ThemeContext","CommonWrapper","cx","styles","Prevent","RadioGroup","props","theme","node","name","getProps","defaultProps","getValue","isControlled","value","state","activeItem","getName","handleSelect","setState","onValueChange","renderRadio","itemValue","data","index","itemProps","key","className","item","itemFirst","itemInline","inline","renderItem","ref","element","defaultValue","getChildContext","onSelect","disabled","error","warning","render","renderMain","width","onMouseLeave","onMouseOver","onMouseEnter","onBlur","style","handlers","root","renderChildren","focus","radio","querySelector","items","children","mapItems","Component","__KONTUR_REACT_UI__","childContextTypes","bool","string","any","func","propTypes","oneOfType","number","_value","fn","result","entry","normalizeEntry","push","Array","isArray"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport invariant from 'invariant';\n\nimport { getRandomID } from '../../lib/utils';\nimport { Radio } from '../Radio';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable } from '../../typings/utility-types';\nimport { FocusTrap } from '../../internal/FocusTrap';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './RadioGroup.styles';\nimport { Prevent } from './Prevent';\n\nexport interface RadioGroupProps<T = string | number> extends CommonProps {\n /**\n * Значение по умолчанию. Должно быть одним из значений дочерних радиокнопок\n * или значений из параметра `items`\n */\n defaultValue?: T;\n /**\n * Значение радиогруппы. Должно быть одним из значений радиокнопок.\n * Если не указано, то компонент будет работать, как неконтроллируемый\n */\n value?: T;\n /**\n * Может быть использовано, если не передан параметр `children`\n *\n * Массив параметров радиокнопок. Может быть типа `Array<Value>` или\n * `Array<[Value, Data]>`, где тип `Value` — значение радиокнопки, а `Data`\n * — значение которое будет использовано вторым параметром в `renderItem`.\n * Если тип `items: Array<Value>`, то он будет приведен к типу\n * `Array<[Value, Value]>`\n */\n items?: T[] | [T, React.ReactNode][];\n /**\n * Аттрибут name для вложенных радиокнопок. Если не указан, то сгенерируется\n * случайное имя\n */\n name?: string;\n /**\n * Дизейблит все радиокнопки\n */\n disabled?: boolean;\n /**\n * Переводит все радиокнопки в состояние предупреждения\n */\n warning?: boolean;\n /**\n * Переводит все радиокнопки в состояние ошибки\n */\n error?: boolean;\n /**\n * Выравнивает элементы в строку. Не работает с `children`\n */\n inline?: boolean;\n /**\n * Ширина радиогруппы. Не работает с `children`\n */\n width?: React.CSSProperties['width'];\n /**\n * Метод отрисовки контента радиокнопки. Не работает с `children`.\n *\n * Принимает два аргумента: `(value: Value, data: Data) => React.Node`\n */\n renderItem?: (itemValue: T, data: React.ReactNode) => React.ReactNode;\n /** Вызывается при изменении `value` */\n onValueChange?: (value: T) => void;\n onBlur?: (event: FocusEvent) => void;\n onMouseLeave?: () => any;\n onMouseOver?: () => any;\n onMouseEnter?: () => any;\n /**\n * Может быть использовано, если не передан параметр `items`\n *\n * `children` может содержать любую разметку с компонентами Radio.\n * Каждому компоненту Radio нужно указать параметр `value`, такого же типа\n * как и параметр `value` самой радиогруппы.\n *\n * Значения активного элемента сравниваются по строгому равенству `===`\n */\n children?: React.ReactNode;\n}\n\nexport interface RadioGroupState<T> {\n activeItem?: T;\n}\n\nexport class RadioGroup<T> extends React.Component<RadioGroupProps<T>, RadioGroupState<T>> {\n public static __KONTUR_REACT_UI__ = 'RadioGroup';\n\n public static childContextTypes = {\n error: PropTypes.bool,\n name: PropTypes.string,\n warning: PropTypes.bool,\n disabled: PropTypes.bool,\n activeItem: PropTypes.any,\n onSelect: PropTypes.func,\n };\n\n public static propTypes = {\n children: PropTypes.node,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n inline: PropTypes.bool,\n name: PropTypes.string,\n warning: PropTypes.bool,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n onBlur: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOver: PropTypes.func,\n };\n\n public static defaultProps = {\n renderItem,\n };\n\n public static Prevent = Prevent;\n\n private theme!: Theme;\n\n private node: Nullable<HTMLSpanElement>;\n private name = getRandomID();\n private getProps = createPropsGetter(RadioGroup.defaultProps);\n\n constructor(props: RadioGroupProps<T>) {\n super(props);\n\n this.state = {\n activeItem: this.props.defaultValue,\n };\n }\n\n public getChildContext() {\n return {\n activeItem: this.getValue(),\n onSelect: this.handleSelect,\n name: this.getName(),\n disabled: this.props.disabled,\n error: this.props.error,\n warning: this.props.warning,\n };\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n const { width, onMouseLeave, onMouseOver, onMouseEnter, onBlur } = this.props;\n const style = {\n width: width != null ? width : 'auto',\n };\n const handlers = {\n onMouseOver,\n onMouseEnter,\n onMouseLeave,\n };\n\n return (\n <CommonWrapper {...this.props}>\n <FocusTrap onBlur={onBlur}>\n <span ref={this.ref} style={style} className={styles.root()} {...handlers}>\n {this.renderChildren()}\n </span>\n </FocusTrap>\n </CommonWrapper>\n );\n }\n\n /**\n * @public\n */\n public focus() {\n const node = this.node;\n if (!node) {\n return;\n }\n\n let radio = node.querySelector('input[type=\"radio\"]:checked') as Nullable<HTMLInputElement>;\n\n // If no checked radios, try get first radio\n if (!radio || radio.disabled) {\n radio = node.querySelector('input[type=\"radio\"]:not([disabled])') as Nullable<HTMLInputElement>;\n }\n\n if (radio) {\n radio.focus();\n }\n }\n\n private getValue = () => (this.isControlled() ? this.props.value : this.state.activeItem);\n\n private getName = () => this.props.name || this.name;\n\n private isControlled = () => this.props.value != null;\n\n private handleSelect = (value: T) => {\n if (!this.isControlled()) {\n this.setState({ activeItem: value });\n }\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private renderChildren() {\n const { items, children } = this.props;\n invariant((!items && children) || (items && !children), 'Either items or children must be passed, not both');\n return items ? mapItems<T>(this.renderRadio, items) : children;\n }\n\n private renderRadio = (itemValue: T, data: React.ReactNode, index: number): JSX.Element => {\n const itemProps = {\n key: typeof itemValue === 'string' || typeof itemValue === 'number' ? itemValue : index,\n className: cx({\n [styles.item(this.theme)]: true,\n [styles.itemFirst()]: index === 0,\n [styles.itemInline()]: !!this.props.inline,\n }),\n };\n\n return (\n <span {...itemProps}>\n <Radio value={itemValue}>{this.getProps().renderItem<T>(itemValue, data)}</Radio>\n </span>\n );\n };\n\n private ref = (element: HTMLSpanElement) => {\n this.node = element;\n };\n}\n\nfunction renderItem<T>(_value: T, data: React.ReactNode) {\n return data;\n}\n\nfunction mapItems<T>(\n fn: (value: T, data: React.ReactNode, index: number) => React.ReactNode,\n items: T[] | [T, React.ReactNode][],\n) {\n const result: React.ReactNode[] = [];\n let index = 0;\n for (const entry of items) {\n const [value, data] = normalizeEntry<T>(entry);\n result.push(fn(value, data, index));\n ++index;\n }\n return result;\n}\n\nfunction normalizeEntry<T>(entry: T | [T, React.ReactNode]): [T, React.ReactNode] {\n if (!Array.isArray(entry)) {\n return [entry, entry];\n }\n return entry;\n}\n"]}
@@ -3,15 +3,56 @@ import PropTypes from 'prop-types';
3
3
  import { CommonProps } from '../../internal/CommonWrapper';
4
4
  import { Prevent } from './Prevent';
5
5
  export interface RadioGroupProps<T = string | number> extends CommonProps {
6
+ /**
7
+ * Значение по умолчанию. Должно быть одним из значений дочерних радиокнопок
8
+ * или значений из параметра `items`
9
+ */
6
10
  defaultValue?: T;
11
+ /**
12
+ * Значение радиогруппы. Должно быть одним из значений радиокнопок.
13
+ * Если не указано, то компонент будет работать, как неконтроллируемый
14
+ */
7
15
  value?: T;
16
+ /**
17
+ * Может быть использовано, если не передан параметр `children`
18
+ *
19
+ * Массив параметров радиокнопок. Может быть типа `Array<Value>` или
20
+ * `Array<[Value, Data]>`, где тип `Value` — значение радиокнопки, а `Data`
21
+ * — значение которое будет использовано вторым параметром в `renderItem`.
22
+ * Если тип `items: Array<Value>`, то он будет приведен к типу
23
+ * `Array<[Value, Value]>`
24
+ */
8
25
  items?: T[] | [T, React.ReactNode][];
26
+ /**
27
+ * Аттрибут name для вложенных радиокнопок. Если не указан, то сгенерируется
28
+ * случайное имя
29
+ */
9
30
  name?: string;
31
+ /**
32
+ * Дизейблит все радиокнопки
33
+ */
10
34
  disabled?: boolean;
35
+ /**
36
+ * Переводит все радиокнопки в состояние предупреждения
37
+ */
11
38
  warning?: boolean;
39
+ /**
40
+ * Переводит все радиокнопки в состояние ошибки
41
+ */
12
42
  error?: boolean;
43
+ /**
44
+ * Выравнивает элементы в строку. Не работает с `children`
45
+ */
13
46
  inline?: boolean;
47
+ /**
48
+ * Ширина радиогруппы. Не работает с `children`
49
+ */
14
50
  width?: React.CSSProperties['width'];
51
+ /**
52
+ * Метод отрисовки контента радиокнопки. Не работает с `children`.
53
+ *
54
+ * Принимает два аргумента: `(value: Value, data: Data) => React.Node`
55
+ */
15
56
  renderItem?: (itemValue: T, data: React.ReactNode) => React.ReactNode;
16
57
  /** Вызывается при изменении `value` */
17
58
  onValueChange?: (value: T) => void;
@@ -19,6 +60,16 @@ export interface RadioGroupProps<T = string | number> extends CommonProps {
19
60
  onMouseLeave?: () => any;
20
61
  onMouseOver?: () => any;
21
62
  onMouseEnter?: () => any;
63
+ /**
64
+ * Может быть использовано, если не передан параметр `items`
65
+ *
66
+ * `children` может содержать любую разметку с компонентами Radio.
67
+ * Каждому компоненту Radio нужно указать параметр `value`, такого же типа
68
+ * как и параметр `value` самой радиогруппы.
69
+ *
70
+ * Значения активного элемента сравниваются по строгому равенству `===`
71
+ */
72
+ children?: React.ReactNode;
22
73
  }
23
74
  export interface RadioGroupState<T> {
24
75
  activeItem?: T;
@@ -34,74 +85,13 @@ export declare class RadioGroup<T> extends React.Component<RadioGroupProps<T>, R
34
85
  onSelect: PropTypes.Requireable<(...args: any[]) => any>;
35
86
  };
36
87
  static propTypes: {
37
- /**
38
- * Может быть использовано, если не передан параметр `items`
39
- *
40
- * `children` может содержать любую разметку с компонентами Radio.
41
- * Каждому компоненту Radio нужно указать параметр `value`, такого же типа
42
- * как и параметр `value` самой радиогруппы.
43
- *
44
- * Значения активного элемента сравниваются по строгому равенству `===`
45
- */
46
88
  children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
47
- /**
48
- * Значение по умолчанию. Должно быть одним из значений дочерних радиокнопок
49
- * или значей из параметра `items`
50
- */
51
- defaultValue: PropTypes.Requireable<any>;
52
- /**
53
- * Дизейблит все радиокнопки
54
- */
55
89
  disabled: PropTypes.Requireable<boolean>;
56
- /**
57
- * Переводит все радиокнопки в состоянии ошибки
58
- */
59
90
  error: PropTypes.Requireable<boolean>;
60
- /**
61
- * Выравнивает элементы в строку. Не работает с `children`
62
- */
63
91
  inline: PropTypes.Requireable<boolean>;
64
- /**
65
- * Может быть использовано, если не передан параметр `children`
66
- *
67
- * Массив параметров радиокнопок. Может быть типа `Array<Value>` или
68
- * `Array<[Value, Data]>`, где тип `Value` — значение радиокнопки, а `Data`
69
- * — значение которое будет использовано вторым параметром в `renderItem`.
70
- * Если тип `items: Array<Value>`, то он будет приведен к типу
71
- * `Array<[Value, Value]>`
72
- */
73
- items: PropTypes.Requireable<any>;
74
- /**
75
- * Аттрибут name для вложенных радиокнопок. Если не указан, то сгенерируется
76
- * случайное имя по алгоритму
77
- * [uuid v1](https://github.com/kelektiv/node-uuid#version-1)
78
- */
79
92
  name: PropTypes.Requireable<string>;
80
- /**
81
- * Метод отрисовки контента радиокнопки. Не работает с `children`.
82
- *
83
- * Принимает два аргумента: `(value: Value, data: Data) => React.Node`
84
- */
85
- renderItem: PropTypes.Requireable<(...args: any[]) => any>;
86
- /**
87
- * Значение радиогруппы. Должно быть одним из значений радиокнопок.
88
- * Если не указано, то компонент будет работать, как неконтроллируемый
89
- */
90
- value: PropTypes.Requireable<any>;
91
- /**
92
- * Переводит все радиокнопки в состоянии предупреждения
93
- */
94
93
  warning: PropTypes.Requireable<boolean>;
95
- /**
96
- * Ширина радиогруппы. Не работает с `children`
97
- */
98
94
  width: PropTypes.Requireable<string | number>;
99
- /**
100
- * Обработчик события при переключении радиокнопок.
101
- * Имеет тип
102
- * `(value: Value) => any`
103
- */
104
- onValueChange: PropTypes.Requireable<(...args: any[]) => any>;
105
95
  onBlur: PropTypes.Requireable<(...args: any[]) => any>;
106
96
  onMouseEnter: PropTypes.Requireable<(...args: any[]) => any>;
107
97
  onMouseLeave: PropTypes.Requireable<(...args: any[]) => any>;
@@ -322,7 +322,7 @@ export var Select = (_dec = locale('Select', SelectLocaleHelper), _dec(_class =
322
322
  };
323
323
 
324
324
  _proto.renderDefaultButton = function renderDefaultButton(params) {
325
- var _cx;
325
+ var _cx, _cx2;
326
326
 
327
327
  var buttonProps = _extends({}, filterProps(this.props, PASS_BUTTON_PROPS), {
328
328
  align: 'left',
@@ -345,7 +345,7 @@ export var Select = (_dec = locale('Select', SelectLocaleHelper), _dec(_class =
345
345
  }, this.props._icon && /*#__PURE__*/React.createElement("div", {
346
346
  className: this.getLeftIconClass(this.props.size)
347
347
  }, this.props._icon), /*#__PURE__*/React.createElement("span", labelProps, params.label), /*#__PURE__*/React.createElement("div", {
348
- className: cx(styles.arrowWrap(this.theme), useIsCustom && styles.customUseArrow())
348
+ className: cx(styles.arrowWrap(this.theme), (_cx2 = {}, _cx2[styles.arrowDisabled(this.theme)] = this.props.disabled, _cx2[styles.customUseArrow()] = useIsCustom, _cx2))
349
349
  }, /*#__PURE__*/React.createElement(ArrowChevronDownIcon, null))));
350
350
  };
351
351
 
@@ -1 +1 @@
1
- {"version":3,"sources":["Select.tsx"],"names":["React","PropTypes","ReactDOM","invariant","isKeyArrowDown","isKeyArrowUp","isKeyArrowVertical","isKeyEnter","isKeyEscape","isKeySpace","locale","reactGetTextContent","Button","DropdownContainer","filterProps","Input","Menu","MenuItem","MenuSeparator","RenderLayer","createPropsGetter","isFunction","ThemeContext","CommonWrapper","ArrowChevronDownIcon","cx","Item","SelectLocaleHelper","styles","getSelectTheme","PASS_BUTTON_PROPS","disabled","error","use","size","warning","onMouseEnter","onMouseLeave","onMouseOver","Select","state","opened","value","props","defaultValue","searchPattern","theme","menu","buttonElement","getProps","defaultProps","open","setState","onOpen","close","onClose","focus","dropdownContainerGetParent","findDOMNode","focusInput","input","setTimeout","refMenu","toggle","handleKey","e","preventDefault","up","down","enter","onKeyDown","handleSearch","buttonRef","element","getButton","buttonParams","button","_renderButton","renderDefaultButton","Children","only","isValidElement","cloneElement","ref","onFocus","onBlur","componentDidUpdate","_prevProps","prevState","window","addEventListener","removeEventListener","render","renderMain","renderLabel","label","isPlaceholder","onClick","style","width","maxWidth","undefined","root","renderMenu","getValue","item","getItemByValue","renderValue","placeholder","getLeftIconClass","leftIconLink","leftIconLarge","leftIconMedium","leftIconSmall","params","buttonProps","align","active","labelProps","className","customUsePlaceholder","placeholderDisabled","paddingRight","getSelectIconGap","useIsCustom","selectButtonContainer","_icon","arrowWrap","customUseArrow","getArrowPadding","selectIconGapLarge","selectIconGapMedium","selectIconGapSmall","arrowLeftPadding","parseFloat","search","menuAlign","disablePortal","menuWidth","maxMenuHeight","mapItems","iValue","i","comment","key","areValuesEqual","select","bind","renderItem","onValueChange","fn","items","pattern","toLowerCase","result","index","entry","normalizeEntry","filterItem","push","itemValue","Component","__KONTUR_REACT_UI__","propTypes","func","any","bool","oneOfType","array","object","number","string","node","SEP","value1","value2","Array","isArray","toString","indexOf"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport invariant from 'invariant';\n\nimport {\n isKeyArrowDown,\n isKeyArrowUp,\n isKeyArrowVertical,\n isKeyEnter,\n isKeyEscape,\n isKeySpace,\n} from '../../lib/events/keyboard/identifiers';\nimport { locale } from '../../lib/locale/decorators';\nimport { reactGetTextContent } from '../../lib/reactGetTextContent';\nimport { Button, ButtonProps, ButtonSize, ButtonUse } from '../Button';\nimport { DropdownContainer } from '../../internal/DropdownContainer';\nimport { filterProps } from '../../lib/filterProps';\nimport { Input } from '../Input';\nimport { Menu } from '../../internal/Menu';\nimport { MenuItem } from '../MenuItem';\nimport { MenuSeparator } from '../MenuSeparator';\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable } from '../../typings/utility-types';\nimport { isFunction } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { ArrowChevronDownIcon } from '../../internal/icons/16px';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { Item } from './Item';\nimport { SelectLocale, SelectLocaleHelper } from './locale';\nimport { styles } from './Select.styles';\nimport { getSelectTheme } from './selectTheme';\n\nexport interface ButtonParams {\n disabled?: boolean;\n label: React.ReactNode;\n onClick: () => void;\n onKeyDown: (event: React.KeyboardEvent<HTMLElement>) => void;\n opened: boolean;\n isPlaceholder: boolean;\n}\n\nconst PASS_BUTTON_PROPS = {\n disabled: true,\n error: true,\n use: true,\n size: true,\n warning: true,\n\n onMouseEnter: true,\n onMouseLeave: true,\n onMouseOver: true,\n};\n\nexport interface SelectProps<TValue, TItem> extends CommonProps {\n /** @ignore */\n _icon?: React.ReactNode;\n /** @ignore */\n _renderButton?: (params: ButtonParams) => React.ReactNode;\n defaultValue?: TValue;\n /**\n * Отключает использование портала\n */\n disablePortal?: boolean;\n disabled?: boolean;\n /**\n * Визуально показать наличие ошибки.\n */\n error?: boolean;\n filterItem?: (value: TValue, item: TItem, pattern: string) => boolean;\n /**\n * Набор значений. Поддерживаются любые перечисляемые типы, в том числе\n * `Array`, `Map`, `Immutable.Map`.\n *\n * Элементы воспринимаются следующим образом: если элемент — это массив, то\n * первый элемент является значением, второй — отображается в списке,\n * а третий – комментарий;\n * если элемент не является массивом, то он используется и для отображения,\n * и для значения.\n *\n * Для вставки разделителя можно использовать `Select.SEP`.\n *\n * Вставить невыделяемый элемент со своей разметкой можно так:\n * ```\n * <Select ...\n * items={[Select.static(() => <div>My Element</div>)]}\n * />\n * ```\n *\n * Чтобы добавить стандартный отступ для статического элемента:\n * ```\n * <Select.Item>My Element</Select.Item>\n * ```\n */\n items?: Array<[TValue, TItem, React.ReactNode?] | TItem | React.ReactElement | (() => React.ReactElement)>;\n maxMenuHeight?: number;\n maxWidth?: React.CSSProperties['maxWidth'];\n menuAlign?: 'left' | 'right';\n menuWidth?: React.CSSProperties['width'];\n onValueChange?: (value: TValue) => void;\n onClose?: () => void;\n onMouseEnter?: (e: React.MouseEvent<HTMLElement>) => void;\n onMouseLeave?: (e: React.MouseEvent<HTMLElement>) => void;\n onMouseOver?: (e: React.MouseEvent<HTMLElement>) => void;\n onKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\n onOpen?: () => void;\n placeholder?: React.ReactNode;\n /**\n * Функция для отрисовки элемента в выпадающем списке. Аргументы — *value*,\n * *item*.\n */\n renderItem?: (value: TValue, item?: TItem) => React.ReactNode;\n /**\n * Функция для отрисовки выбранного элемента. Аргументы — *value*, *item*.\n */\n renderValue?: (value: TValue, item?: TItem) => React.ReactNode;\n /**\n * Функция для сравнения `value` с элементом из `items`\n */\n areValuesEqual?: (value1: TValue, value2: TValue) => boolean;\n /**\n * Показывать строку поиска в списке.\n */\n search?: boolean;\n value?: TValue;\n width?: number | string;\n warning?: boolean;\n use?: ButtonUse;\n size?: ButtonSize;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n}\n\nexport interface SelectState<TValue> {\n opened: boolean;\n searchPattern: string;\n value: Nullable<TValue>;\n}\n\ninterface FocusableReactElement extends React.ReactElement<any> {\n focus: (event?: any) => void;\n}\n\n@locale('Select', SelectLocaleHelper)\nexport class Select<TValue = {}, TItem = {}> extends React.Component<SelectProps<TValue, TItem>, SelectState<TValue>> {\n public static __KONTUR_REACT_UI__ = 'Select';\n\n public static propTypes = {\n areValuesEqual: PropTypes.func,\n defaultValue: PropTypes.any,\n disablePortal: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n filterItem: PropTypes.func,\n items: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n maxMenuHeight: PropTypes.number,\n maxWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n placeholder: PropTypes.node,\n renderItem: PropTypes.func,\n renderValue: PropTypes.func,\n search: PropTypes.bool,\n value: PropTypes.any,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n onValueChange: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOver: PropTypes.func,\n onKeyDown: PropTypes.func,\n };\n\n public static defaultProps = {\n renderValue,\n renderItem,\n areValuesEqual,\n filterItem,\n use: 'default',\n };\n\n public static Item = Item;\n public static SEP = () => <MenuSeparator />;\n\n public static static = (element: React.ReactElement | (() => React.ReactElement)) => {\n invariant(\n React.isValidElement(element) || typeof element === 'function',\n 'Select.static(element) expects element to be a valid react element.',\n );\n return element;\n };\n\n public state: SelectState<TValue> = {\n opened: false,\n value: this.props.defaultValue,\n searchPattern: '',\n };\n\n private theme!: Theme;\n private readonly locale!: SelectLocale;\n private menu: Nullable<Menu>;\n private buttonElement: FocusableReactElement | null = null;\n private getProps = createPropsGetter(Select.defaultProps);\n\n public componentDidUpdate(_prevProps: SelectProps<TValue, TItem>, prevState: SelectState<TValue>) {\n if (!prevState.opened && this.state.opened) {\n window.addEventListener('popstate', this.close);\n }\n if (prevState.opened && !this.state.opened) {\n window.removeEventListener('popstate', this.close);\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider value={getSelectTheme(theme, this.props)}>{this.renderMain()}</ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public open = () => {\n if (!this.state.opened) {\n this.setState({ opened: true });\n\n if (this.props.onOpen) {\n this.props.onOpen();\n }\n }\n };\n\n /**\n * @public\n */\n public close = () => {\n if (this.state.opened) {\n this.setState({ opened: false, searchPattern: '' });\n\n if (this.props.onClose) {\n this.props.onClose();\n }\n }\n };\n\n /**\n * @public\n */\n public focus = () => {\n if (this.buttonElement && this.buttonElement.focus) {\n this.buttonElement.focus();\n }\n };\n\n private renderMain() {\n const { label, isPlaceholder } = this.renderLabel();\n\n const buttonParams: ButtonParams = {\n opened: this.state.opened,\n label,\n isPlaceholder,\n onClick: this.toggle,\n onKeyDown: this.handleKey,\n };\n\n const style = {\n width: this.props.width,\n maxWidth: this.props.maxWidth || undefined,\n };\n\n const button = this.getButton(buttonParams);\n\n return (\n <CommonWrapper {...this.props}>\n <RenderLayer onClickOutside={this.close} onFocusOutside={this.close} active={this.state.opened}>\n <span className={styles.root()} style={style}>\n {button}\n {!this.props.disabled && this.state.opened && this.renderMenu()}\n </span>\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n private renderLabel() {\n const value = this.getValue();\n const item = this.getItemByValue(value);\n\n if (item != null || value != null) {\n return {\n label: this.getProps().renderValue(value, item),\n isPlaceholder: false,\n };\n }\n\n return {\n label: <span>{this.props.placeholder || this.locale.placeholder}</span>,\n isPlaceholder: true,\n };\n }\n\n private getLeftIconClass(size: ButtonSize | undefined) {\n if (this.props.use === 'link') {\n return styles.leftIconLink(this.theme);\n }\n\n switch (size) {\n case 'large':\n return styles.leftIconLarge(this.theme);\n case 'medium':\n return styles.leftIconMedium(this.theme);\n case 'small':\n default:\n return styles.leftIconSmall(this.theme);\n }\n }\n\n private renderDefaultButton(params: ButtonParams) {\n const buttonProps: ButtonProps = {\n ...filterProps(this.props, PASS_BUTTON_PROPS),\n align: 'left' as React.CSSProperties['textAlign'],\n disabled: this.props.disabled,\n width: '100%',\n onClick: params.onClick,\n onKeyDown: params.onKeyDown,\n active: params.opened,\n };\n\n const labelProps = {\n className: cx({\n [styles.label()]: this.props.use !== 'link',\n [styles.placeholder(this.theme)]: params.isPlaceholder,\n [styles.customUsePlaceholder()]: params.isPlaceholder && this.props.use !== 'default',\n [styles.placeholderDisabled(this.theme)]: params.isPlaceholder && this.props.disabled,\n }),\n style: {\n paddingRight: this.getSelectIconGap(),\n },\n };\n\n const useIsCustom = this.props.use !== 'default';\n\n return (\n <Button {...buttonProps}>\n <div className={styles.selectButtonContainer()}>\n {this.props._icon && <div className={this.getLeftIconClass(this.props.size)}>{this.props._icon}</div>}\n <span {...labelProps}>{params.label}</span>\n\n <div className={cx(styles.arrowWrap(this.theme), useIsCustom && styles.customUseArrow())}>\n <ArrowChevronDownIcon />\n </div>\n </div>\n </Button>\n );\n }\n\n private getSelectIconGap(): number {\n const getArrowPadding = () => {\n switch (this.props.size) {\n case 'large':\n return this.theme.selectIconGapLarge;\n case 'medium':\n return this.theme.selectIconGapMedium;\n case 'small':\n default:\n return this.theme.selectIconGapSmall;\n }\n };\n const arrowLeftPadding = parseFloat(getArrowPadding()) || 0;\n\n return arrowLeftPadding;\n }\n\n private renderMenu(): React.ReactNode {\n const search = this.props.search ? (\n <div className={styles.search()}>\n <Input ref={this.focusInput} onValueChange={this.handleSearch} width=\"100%\" />\n </div>\n ) : null;\n\n const value = this.getValue();\n\n return (\n <DropdownContainer\n getParent={this.dropdownContainerGetParent}\n offsetY={-1}\n align={this.props.menuAlign}\n disablePortal={this.props.disablePortal}\n >\n <Menu\n ref={this.refMenu}\n width={this.props.menuWidth}\n onItemClick={this.close}\n maxHeight={this.props.maxMenuHeight}\n >\n {search}\n {this.mapItems(\n (iValue: TValue, item: TItem | (() => React.ReactNode), i: number, comment: Nullable<React.ReactNode>) => {\n if (isFunction(item)) {\n const element = item();\n\n if (React.isValidElement(element)) {\n return React.cloneElement(element, { key: i });\n }\n\n return null;\n }\n\n if (React.isValidElement(item)) {\n return React.cloneElement(item, { key: i });\n }\n\n return (\n <MenuItem\n key={i}\n state={this.getProps().areValuesEqual(iValue, value) ? 'selected' : null}\n onClick={this.select.bind(this, iValue)}\n comment={comment}\n >\n {this.getProps().renderItem(iValue, item)}\n </MenuItem>\n );\n },\n )}\n </Menu>\n </DropdownContainer>\n );\n }\n\n private dropdownContainerGetParent = () => {\n return ReactDOM.findDOMNode(this);\n };\n\n private focusInput = (input: Input) => {\n // fix cases when an Input is rendered in portal\n setTimeout(() => input?.focus(), 0);\n };\n\n private refMenu = (menu: Menu) => {\n this.menu = menu;\n };\n\n private toggle = () => {\n if (this.state.opened) {\n this.close();\n } else {\n this.open();\n }\n };\n\n private handleKey = (e: React.KeyboardEvent<HTMLElement>) => {\n if (!this.state.opened) {\n if (isKeySpace(e) || isKeyArrowVertical(e)) {\n e.preventDefault();\n this.open();\n }\n } else {\n switch (true) {\n case isKeyEscape(e):\n this.focus();\n this.close();\n break;\n case isKeyArrowUp(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.up();\n }\n break;\n case isKeyArrowDown(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.down();\n }\n break;\n case isKeyEnter(e):\n e.preventDefault(); // To prevent form submission.\n if (this.menu) {\n this.menu.enter(e);\n }\n break;\n }\n }\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n };\n\n private handleSearch = (value: string) => {\n this.setState({ searchPattern: value });\n };\n\n private select(value: TValue) {\n this.focus();\n this.setState({ opened: false, value });\n\n if (this.props.onValueChange && !this.getProps().areValuesEqual(this.getValue(), value)) {\n this.props.onValueChange(value);\n }\n }\n\n private getValue() {\n if (this.props.value !== undefined) {\n return this.props.value;\n }\n return this.state.value;\n }\n\n private mapItems(fn: (value: TValue, item: TItem, index: number, comment?: string) => React.ReactNode) {\n const { items } = this.props;\n if (!items) {\n return [];\n }\n const pattern = this.state.searchPattern && this.state.searchPattern.toLowerCase();\n\n const result: React.ReactNodeArray = [];\n let index = 0;\n for (const entry of items) {\n const [value, item, comment] = normalizeEntry(entry as TItem);\n\n if (!pattern || this.getProps().filterItem(value, item, pattern)) {\n result.push(fn(value, item, index, comment));\n ++index;\n }\n }\n\n return result;\n }\n\n private getItemByValue(value?: Nullable<TValue>) {\n if (value === null || value === undefined) {\n return null;\n }\n\n const items = this.props.items || [];\n\n for (const entry of items) {\n const [itemValue, item] = normalizeEntry(entry);\n\n if (this.getProps().areValuesEqual(itemValue, value)) {\n return item;\n }\n }\n return null;\n }\n\n private buttonRef = (element: FocusableReactElement | null) => {\n this.buttonElement = element;\n };\n\n private getButton = (buttonParams: ButtonParams) => {\n const button = this.props._renderButton\n ? this.props._renderButton(buttonParams)\n : this.renderDefaultButton(buttonParams);\n\n const buttonElement = React.Children.only(button);\n\n return React.isValidElement(buttonElement)\n ? React.cloneElement(buttonElement as React.ReactElement, {\n ref: this.buttonRef,\n onFocus: this.props.onFocus,\n onBlur: this.props.onBlur,\n })\n : buttonElement;\n };\n}\n\nfunction renderValue(value: any, item: any) {\n return item;\n}\n\nfunction renderItem(value: any, item: any) {\n return item;\n}\n\nfunction areValuesEqual(value1: any, value2: any) {\n return value1 === value2;\n}\n\nfunction normalizeEntry(entry: any) {\n if (Array.isArray(entry)) {\n return entry;\n } else {\n return [entry, entry, undefined];\n }\n}\n\nfunction filterItem(value: any, item: any, pattern: string) {\n if (item === Select.SEP) {\n return false;\n }\n if (React.isValidElement(item) || (isFunction(item) && React.isValidElement((item = item())))) {\n item = reactGetTextContent(item);\n }\n if (typeof item === 'number') {\n item = item.toString(10);\n }\n if (typeof item !== 'string') {\n return false;\n }\n return item.toLowerCase().indexOf(pattern) !== -1;\n}\n"]}
1
+ {"version":3,"sources":["Select.tsx"],"names":["React","PropTypes","ReactDOM","invariant","isKeyArrowDown","isKeyArrowUp","isKeyArrowVertical","isKeyEnter","isKeyEscape","isKeySpace","locale","reactGetTextContent","Button","DropdownContainer","filterProps","Input","Menu","MenuItem","MenuSeparator","RenderLayer","createPropsGetter","isFunction","ThemeContext","CommonWrapper","ArrowChevronDownIcon","cx","Item","SelectLocaleHelper","styles","getSelectTheme","PASS_BUTTON_PROPS","disabled","error","use","size","warning","onMouseEnter","onMouseLeave","onMouseOver","Select","state","opened","value","props","defaultValue","searchPattern","theme","menu","buttonElement","getProps","defaultProps","open","setState","onOpen","close","onClose","focus","dropdownContainerGetParent","findDOMNode","focusInput","input","setTimeout","refMenu","toggle","handleKey","e","preventDefault","up","down","enter","onKeyDown","handleSearch","buttonRef","element","getButton","buttonParams","button","_renderButton","renderDefaultButton","Children","only","isValidElement","cloneElement","ref","onFocus","onBlur","componentDidUpdate","_prevProps","prevState","window","addEventListener","removeEventListener","render","renderMain","renderLabel","label","isPlaceholder","onClick","style","width","maxWidth","undefined","root","renderMenu","getValue","item","getItemByValue","renderValue","placeholder","getLeftIconClass","leftIconLink","leftIconLarge","leftIconMedium","leftIconSmall","params","buttonProps","align","active","labelProps","className","customUsePlaceholder","placeholderDisabled","paddingRight","getSelectIconGap","useIsCustom","selectButtonContainer","_icon","arrowWrap","arrowDisabled","customUseArrow","getArrowPadding","selectIconGapLarge","selectIconGapMedium","selectIconGapSmall","arrowLeftPadding","parseFloat","search","menuAlign","disablePortal","menuWidth","maxMenuHeight","mapItems","iValue","i","comment","key","areValuesEqual","select","bind","renderItem","onValueChange","fn","items","pattern","toLowerCase","result","index","entry","normalizeEntry","filterItem","push","itemValue","Component","__KONTUR_REACT_UI__","propTypes","func","any","bool","oneOfType","array","object","number","string","node","SEP","value1","value2","Array","isArray","toString","indexOf"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport invariant from 'invariant';\n\nimport {\n isKeyArrowDown,\n isKeyArrowUp,\n isKeyArrowVertical,\n isKeyEnter,\n isKeyEscape,\n isKeySpace,\n} from '../../lib/events/keyboard/identifiers';\nimport { locale } from '../../lib/locale/decorators';\nimport { reactGetTextContent } from '../../lib/reactGetTextContent';\nimport { Button, ButtonProps, ButtonSize, ButtonUse } from '../Button';\nimport { DropdownContainer } from '../../internal/DropdownContainer';\nimport { filterProps } from '../../lib/filterProps';\nimport { Input } from '../Input';\nimport { Menu } from '../../internal/Menu';\nimport { MenuItem } from '../MenuItem';\nimport { MenuSeparator } from '../MenuSeparator';\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable } from '../../typings/utility-types';\nimport { isFunction } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { ArrowChevronDownIcon } from '../../internal/icons/16px';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { Item } from './Item';\nimport { SelectLocale, SelectLocaleHelper } from './locale';\nimport { styles } from './Select.styles';\nimport { getSelectTheme } from './selectTheme';\n\nexport interface ButtonParams {\n disabled?: boolean;\n label: React.ReactNode;\n onClick: () => void;\n onKeyDown: (event: React.KeyboardEvent<HTMLElement>) => void;\n opened: boolean;\n isPlaceholder: boolean;\n}\n\nconst PASS_BUTTON_PROPS = {\n disabled: true,\n error: true,\n use: true,\n size: true,\n warning: true,\n\n onMouseEnter: true,\n onMouseLeave: true,\n onMouseOver: true,\n};\n\nexport interface SelectProps<TValue, TItem> extends CommonProps {\n /** @ignore */\n _icon?: React.ReactNode;\n /** @ignore */\n _renderButton?: (params: ButtonParams) => React.ReactNode;\n defaultValue?: TValue;\n /**\n * Отключает использование портала\n */\n disablePortal?: boolean;\n disabled?: boolean;\n /**\n * Визуально показать наличие ошибки.\n */\n error?: boolean;\n filterItem?: (value: TValue, item: TItem, pattern: string) => boolean;\n /**\n * Набор значений. Поддерживаются любые перечисляемые типы, в том числе\n * `Array`, `Map`, `Immutable.Map`.\n *\n * Элементы воспринимаются следующим образом: если элемент — это массив, то\n * первый элемент является значением, второй — отображается в списке,\n * а третий – комментарий;\n * если элемент не является массивом, то он используется и для отображения,\n * и для значения.\n *\n * Для вставки разделителя можно использовать `Select.SEP`.\n *\n * Вставить невыделяемый элемент со своей разметкой можно так:\n * ```\n * <Select ...\n * items={[Select.static(() => <div>My Element</div>)]}\n * />\n * ```\n *\n * Чтобы добавить стандартный отступ для статического элемента:\n * ```\n * <Select.Item>My Element</Select.Item>\n * ```\n */\n items?: Array<[TValue, TItem, React.ReactNode?] | TItem | React.ReactElement | (() => React.ReactElement)>;\n maxMenuHeight?: number;\n maxWidth?: React.CSSProperties['maxWidth'];\n menuAlign?: 'left' | 'right';\n menuWidth?: React.CSSProperties['width'];\n onValueChange?: (value: TValue) => void;\n onClose?: () => void;\n onMouseEnter?: (e: React.MouseEvent<HTMLElement>) => void;\n onMouseLeave?: (e: React.MouseEvent<HTMLElement>) => void;\n onMouseOver?: (e: React.MouseEvent<HTMLElement>) => void;\n onKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\n onOpen?: () => void;\n placeholder?: React.ReactNode;\n /**\n * Функция для отрисовки элемента в выпадающем списке. Аргументы — *value*,\n * *item*.\n */\n renderItem?: (value: TValue, item?: TItem) => React.ReactNode;\n /**\n * Функция для отрисовки выбранного элемента. Аргументы — *value*, *item*.\n */\n renderValue?: (value: TValue, item?: TItem) => React.ReactNode;\n /**\n * Функция для сравнения `value` с элементом из `items`\n */\n areValuesEqual?: (value1: TValue, value2: TValue) => boolean;\n /**\n * Показывать строку поиска в списке.\n */\n search?: boolean;\n value?: TValue;\n width?: number | string;\n warning?: boolean;\n use?: ButtonUse;\n size?: ButtonSize;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n}\n\nexport interface SelectState<TValue> {\n opened: boolean;\n searchPattern: string;\n value: Nullable<TValue>;\n}\n\ninterface FocusableReactElement extends React.ReactElement<any> {\n focus: (event?: any) => void;\n}\n\n@locale('Select', SelectLocaleHelper)\nexport class Select<TValue = {}, TItem = {}> extends React.Component<SelectProps<TValue, TItem>, SelectState<TValue>> {\n public static __KONTUR_REACT_UI__ = 'Select';\n\n public static propTypes = {\n areValuesEqual: PropTypes.func,\n defaultValue: PropTypes.any,\n disablePortal: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n filterItem: PropTypes.func,\n items: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n maxMenuHeight: PropTypes.number,\n maxWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n placeholder: PropTypes.node,\n renderItem: PropTypes.func,\n renderValue: PropTypes.func,\n search: PropTypes.bool,\n value: PropTypes.any,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n onValueChange: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOver: PropTypes.func,\n onKeyDown: PropTypes.func,\n };\n\n public static defaultProps = {\n renderValue,\n renderItem,\n areValuesEqual,\n filterItem,\n use: 'default',\n };\n\n public static Item = Item;\n public static SEP = () => <MenuSeparator />;\n\n public static static = (element: React.ReactElement | (() => React.ReactElement)) => {\n invariant(\n React.isValidElement(element) || typeof element === 'function',\n 'Select.static(element) expects element to be a valid react element.',\n );\n return element;\n };\n\n public state: SelectState<TValue> = {\n opened: false,\n value: this.props.defaultValue,\n searchPattern: '',\n };\n\n private theme!: Theme;\n private readonly locale!: SelectLocale;\n private menu: Nullable<Menu>;\n private buttonElement: FocusableReactElement | null = null;\n private getProps = createPropsGetter(Select.defaultProps);\n\n public componentDidUpdate(_prevProps: SelectProps<TValue, TItem>, prevState: SelectState<TValue>) {\n if (!prevState.opened && this.state.opened) {\n window.addEventListener('popstate', this.close);\n }\n if (prevState.opened && !this.state.opened) {\n window.removeEventListener('popstate', this.close);\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider value={getSelectTheme(theme, this.props)}>{this.renderMain()}</ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public open = () => {\n if (!this.state.opened) {\n this.setState({ opened: true });\n\n if (this.props.onOpen) {\n this.props.onOpen();\n }\n }\n };\n\n /**\n * @public\n */\n public close = () => {\n if (this.state.opened) {\n this.setState({ opened: false, searchPattern: '' });\n\n if (this.props.onClose) {\n this.props.onClose();\n }\n }\n };\n\n /**\n * @public\n */\n public focus = () => {\n if (this.buttonElement && this.buttonElement.focus) {\n this.buttonElement.focus();\n }\n };\n\n private renderMain() {\n const { label, isPlaceholder } = this.renderLabel();\n\n const buttonParams: ButtonParams = {\n opened: this.state.opened,\n label,\n isPlaceholder,\n onClick: this.toggle,\n onKeyDown: this.handleKey,\n };\n\n const style = {\n width: this.props.width,\n maxWidth: this.props.maxWidth || undefined,\n };\n\n const button = this.getButton(buttonParams);\n\n return (\n <CommonWrapper {...this.props}>\n <RenderLayer onClickOutside={this.close} onFocusOutside={this.close} active={this.state.opened}>\n <span className={styles.root()} style={style}>\n {button}\n {!this.props.disabled && this.state.opened && this.renderMenu()}\n </span>\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n private renderLabel() {\n const value = this.getValue();\n const item = this.getItemByValue(value);\n\n if (item != null || value != null) {\n return {\n label: this.getProps().renderValue(value, item),\n isPlaceholder: false,\n };\n }\n\n return {\n label: <span>{this.props.placeholder || this.locale.placeholder}</span>,\n isPlaceholder: true,\n };\n }\n\n private getLeftIconClass(size: ButtonSize | undefined) {\n if (this.props.use === 'link') {\n return styles.leftIconLink(this.theme);\n }\n\n switch (size) {\n case 'large':\n return styles.leftIconLarge(this.theme);\n case 'medium':\n return styles.leftIconMedium(this.theme);\n case 'small':\n default:\n return styles.leftIconSmall(this.theme);\n }\n }\n\n private renderDefaultButton(params: ButtonParams) {\n const buttonProps: ButtonProps = {\n ...filterProps(this.props, PASS_BUTTON_PROPS),\n align: 'left' as React.CSSProperties['textAlign'],\n disabled: this.props.disabled,\n width: '100%',\n onClick: params.onClick,\n onKeyDown: params.onKeyDown,\n active: params.opened,\n };\n\n const labelProps = {\n className: cx({\n [styles.label()]: this.props.use !== 'link',\n [styles.placeholder(this.theme)]: params.isPlaceholder,\n [styles.customUsePlaceholder()]: params.isPlaceholder && this.props.use !== 'default',\n [styles.placeholderDisabled(this.theme)]: params.isPlaceholder && this.props.disabled,\n }),\n style: {\n paddingRight: this.getSelectIconGap(),\n },\n };\n\n const useIsCustom = this.props.use !== 'default';\n\n return (\n <Button {...buttonProps}>\n <div className={styles.selectButtonContainer()}>\n {this.props._icon && <div className={this.getLeftIconClass(this.props.size)}>{this.props._icon}</div>}\n <span {...labelProps}>{params.label}</span>\n\n <div\n className={cx(styles.arrowWrap(this.theme), {\n [styles.arrowDisabled(this.theme)]: this.props.disabled,\n [styles.customUseArrow()]: useIsCustom,\n })}\n >\n <ArrowChevronDownIcon />\n </div>\n </div>\n </Button>\n );\n }\n\n private getSelectIconGap(): number {\n const getArrowPadding = () => {\n switch (this.props.size) {\n case 'large':\n return this.theme.selectIconGapLarge;\n case 'medium':\n return this.theme.selectIconGapMedium;\n case 'small':\n default:\n return this.theme.selectIconGapSmall;\n }\n };\n const arrowLeftPadding = parseFloat(getArrowPadding()) || 0;\n\n return arrowLeftPadding;\n }\n\n private renderMenu(): React.ReactNode {\n const search = this.props.search ? (\n <div className={styles.search()}>\n <Input ref={this.focusInput} onValueChange={this.handleSearch} width=\"100%\" />\n </div>\n ) : null;\n\n const value = this.getValue();\n\n return (\n <DropdownContainer\n getParent={this.dropdownContainerGetParent}\n offsetY={-1}\n align={this.props.menuAlign}\n disablePortal={this.props.disablePortal}\n >\n <Menu\n ref={this.refMenu}\n width={this.props.menuWidth}\n onItemClick={this.close}\n maxHeight={this.props.maxMenuHeight}\n >\n {search}\n {this.mapItems(\n (iValue: TValue, item: TItem | (() => React.ReactNode), i: number, comment: Nullable<React.ReactNode>) => {\n if (isFunction(item)) {\n const element = item();\n\n if (React.isValidElement(element)) {\n return React.cloneElement(element, { key: i });\n }\n\n return null;\n }\n\n if (React.isValidElement(item)) {\n return React.cloneElement(item, { key: i });\n }\n\n return (\n <MenuItem\n key={i}\n state={this.getProps().areValuesEqual(iValue, value) ? 'selected' : null}\n onClick={this.select.bind(this, iValue)}\n comment={comment}\n >\n {this.getProps().renderItem(iValue, item)}\n </MenuItem>\n );\n },\n )}\n </Menu>\n </DropdownContainer>\n );\n }\n\n private dropdownContainerGetParent = () => {\n return ReactDOM.findDOMNode(this);\n };\n\n private focusInput = (input: Input) => {\n // fix cases when an Input is rendered in portal\n setTimeout(() => input?.focus(), 0);\n };\n\n private refMenu = (menu: Menu) => {\n this.menu = menu;\n };\n\n private toggle = () => {\n if (this.state.opened) {\n this.close();\n } else {\n this.open();\n }\n };\n\n private handleKey = (e: React.KeyboardEvent<HTMLElement>) => {\n if (!this.state.opened) {\n if (isKeySpace(e) || isKeyArrowVertical(e)) {\n e.preventDefault();\n this.open();\n }\n } else {\n switch (true) {\n case isKeyEscape(e):\n this.focus();\n this.close();\n break;\n case isKeyArrowUp(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.up();\n }\n break;\n case isKeyArrowDown(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.down();\n }\n break;\n case isKeyEnter(e):\n e.preventDefault(); // To prevent form submission.\n if (this.menu) {\n this.menu.enter(e);\n }\n break;\n }\n }\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n };\n\n private handleSearch = (value: string) => {\n this.setState({ searchPattern: value });\n };\n\n private select(value: TValue) {\n this.focus();\n this.setState({ opened: false, value });\n\n if (this.props.onValueChange && !this.getProps().areValuesEqual(this.getValue(), value)) {\n this.props.onValueChange(value);\n }\n }\n\n private getValue() {\n if (this.props.value !== undefined) {\n return this.props.value;\n }\n return this.state.value;\n }\n\n private mapItems(fn: (value: TValue, item: TItem, index: number, comment?: string) => React.ReactNode) {\n const { items } = this.props;\n if (!items) {\n return [];\n }\n const pattern = this.state.searchPattern && this.state.searchPattern.toLowerCase();\n\n const result: React.ReactNodeArray = [];\n let index = 0;\n for (const entry of items) {\n const [value, item, comment] = normalizeEntry(entry as TItem);\n\n if (!pattern || this.getProps().filterItem(value, item, pattern)) {\n result.push(fn(value, item, index, comment));\n ++index;\n }\n }\n\n return result;\n }\n\n private getItemByValue(value?: Nullable<TValue>) {\n if (value === null || value === undefined) {\n return null;\n }\n\n const items = this.props.items || [];\n\n for (const entry of items) {\n const [itemValue, item] = normalizeEntry(entry);\n\n if (this.getProps().areValuesEqual(itemValue, value)) {\n return item;\n }\n }\n return null;\n }\n\n private buttonRef = (element: FocusableReactElement | null) => {\n this.buttonElement = element;\n };\n\n private getButton = (buttonParams: ButtonParams) => {\n const button = this.props._renderButton\n ? this.props._renderButton(buttonParams)\n : this.renderDefaultButton(buttonParams);\n\n const buttonElement = React.Children.only(button);\n\n return React.isValidElement(buttonElement)\n ? React.cloneElement(buttonElement as React.ReactElement, {\n ref: this.buttonRef,\n onFocus: this.props.onFocus,\n onBlur: this.props.onBlur,\n })\n : buttonElement;\n };\n}\n\nfunction renderValue(value: any, item: any) {\n return item;\n}\n\nfunction renderItem(value: any, item: any) {\n return item;\n}\n\nfunction areValuesEqual(value1: any, value2: any) {\n return value1 === value2;\n}\n\nfunction normalizeEntry(entry: any) {\n if (Array.isArray(entry)) {\n return entry;\n } else {\n return [entry, entry, undefined];\n }\n}\n\nfunction filterItem(value: any, item: any, pattern: string) {\n if (item === Select.SEP) {\n return false;\n }\n if (React.isValidElement(item) || (isFunction(item) && React.isValidElement((item = item())))) {\n item = reactGetTextContent(item);\n }\n if (typeof item === 'number') {\n item = item.toString(10);\n }\n if (typeof item !== 'string') {\n return false;\n }\n return item.toLowerCase().indexOf(pattern) !== -1;\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTemplateLiteralLoose";
2
2
 
3
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13;
3
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14;
4
4
 
5
5
  import { css, memoizeStyle } from "../../../lib/theming/Emotion";
6
6
  export var styles = memoizeStyle({
@@ -19,28 +19,31 @@ export var styles = memoizeStyle({
19
19
  arrowWrap: function arrowWrap(t) {
20
20
  return css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteralLoose(["\n color: ", ";\n flex-shrink: 0;\n "])), t.selectMenuArrowColor);
21
21
  },
22
+ arrowDisabled: function arrowDisabled(t) {
23
+ return css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteralLoose(["\n color: ", ";\n "])), t.selectMenuArrowColorDisabled);
24
+ },
22
25
  customUseArrow: function customUseArrow() {
23
- return css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteralLoose(["\n color: inherit;\n opacity: 0.7;\n "])));
26
+ return css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteralLoose(["\n color: inherit;\n opacity: 0.7;\n "])));
24
27
  },
25
28
  label: function label() {
26
- return css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteralLoose(["\n flex: 1 1 auto;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n "])));
29
+ return css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteralLoose(["\n flex: 1 1 auto;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n "])));
27
30
  },
28
31
  search: function search() {
29
- return css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteralLoose(["\n margin: 1px 4px 4px;\n "])));
32
+ return css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteralLoose(["\n margin: 1px 4px 4px;\n "])));
30
33
  },
31
34
  leftIconSmall: function leftIconSmall(t) {
32
- return css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteralLoose(["\n padding-right: ", ";\n width: ", ";\n "])), t.selectIconGapSmall, t.btnIconSizeSmall);
35
+ return css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteralLoose(["\n padding-right: ", ";\n width: ", ";\n "])), t.selectIconGapSmall, t.btnIconSizeSmall);
33
36
  },
34
37
  leftIconMedium: function leftIconMedium(t) {
35
- return css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteralLoose(["\n padding-right: ", ";\n width: ", ";\n "])), t.selectIconGapMedium, t.btnIconSizeMedium);
38
+ return css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteralLoose(["\n padding-right: ", ";\n width: ", ";\n "])), t.selectIconGapMedium, t.btnIconSizeMedium);
36
39
  },
37
40
  leftIconLarge: function leftIconLarge(t) {
38
- return css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteralLoose(["\n padding-right: ", ";\n width: ", ";\n "])), t.selectIconGapLarge, t.btnIconSizeLarge);
41
+ return css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteralLoose(["\n padding-right: ", ";\n width: ", ";\n "])), t.selectIconGapLarge, t.btnIconSizeLarge);
39
42
  },
40
43
  leftIconLink: function leftIconLink(t) {
41
- return css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteralLoose(["\n padding-right: ", ";\n "])), t.btnLinkIconMarginRight);
44
+ return css(_templateObject13 || (_templateObject13 = _taggedTemplateLiteralLoose(["\n padding-right: ", ";\n "])), t.btnLinkIconMarginRight);
42
45
  },
43
46
  selectButtonContainer: function selectButtonContainer() {
44
- return css(_templateObject13 || (_templateObject13 = _taggedTemplateLiteralLoose(["\n width: 100%;\n display: inline-flex;\n justify-content: space-between;\n "])));
47
+ return css(_templateObject14 || (_templateObject14 = _taggedTemplateLiteralLoose(["\n width: 100%;\n display: inline-flex;\n justify-content: space-between;\n "])));
45
48
  }
46
49
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["Select.styles.ts"],"names":["css","memoizeStyle","styles","root","placeholder","t","selectPlaceholderColor","placeholderDisabled","selectPlaceholderColorDisabled","customUsePlaceholder","arrowWrap","selectMenuArrowColor","customUseArrow","label","search","leftIconSmall","selectIconGapSmall","btnIconSizeSmall","leftIconMedium","selectIconGapMedium","btnIconSizeMedium","leftIconLarge","selectIconGapLarge","btnIconSizeLarge","leftIconLink","btnLinkIconMarginRight","selectButtonContainer"],"mappings":"gVAAA,SAASA,GAAT,EAAcC,YAAd,QAAkC,2BAAlC;;;AAGA,OAAO,IAAMC,MAAM,GAAGD,YAAY,CAAC;AACjCE,EAAAA,IADiC,kBAC1B;AACL,WAAOH,GAAP;;;;AAID,GANgC;;AAQjCI,EAAAA,WARiC,uBAQrBC,CARqB,EAQX;AACpB,WAAOL,GAAP;AACWK,IAAAA,CAAC,CAACC,sBADb;;;AAID,GAbgC;;AAejCC,EAAAA,mBAfiC,+BAebF,CAfa,EAeH;AAC5B,WAAOL,GAAP;AACWK,IAAAA,CAAC,CAACG,8BADb;;AAGD,GAnBgC;;AAqBjCC,EAAAA,oBArBiC,kCAqBV;AACrB,WAAOT,GAAP;;;;AAID,GA1BgC;;AA4BjCU,EAAAA,SA5BiC,qBA4BvBL,CA5BuB,EA4Bb;AAClB,WAAOL,GAAP;AACWK,IAAAA,CAAC,CAACM,oBADb;;;AAID,GAjCgC;;AAmCjCC,EAAAA,cAnCiC,4BAmChB;AACf,WAAOZ,GAAP;;;;AAID,GAxCgC;;AA0CjCa,EAAAA,KA1CiC,mBA0CzB;AACN,WAAOb,GAAP;;;;;;AAMD,GAjDgC;;AAmDjCc,EAAAA,MAnDiC,oBAmDxB;AACP,WAAOd,GAAP;;;AAGD,GAvDgC;;AAyDjCe,EAAAA,aAzDiC,yBAyDnBV,CAzDmB,EAyDT;AACtB,WAAOL,GAAP;AACmBK,IAAAA,CAAC,CAACW,kBADrB;AAEWX,IAAAA,CAAC,CAACY,gBAFb;;AAID,GA9DgC;;AAgEjCC,EAAAA,cAhEiC,0BAgElBb,CAhEkB,EAgER;AACvB,WAAOL,GAAP;AACmBK,IAAAA,CAAC,CAACc,mBADrB;AAEWd,IAAAA,CAAC,CAACe,iBAFb;;AAID,GArEgC;;AAuEjCC,EAAAA,aAvEiC,yBAuEnBhB,CAvEmB,EAuET;AACtB,WAAOL,GAAP;AACmBK,IAAAA,CAAC,CAACiB,kBADrB;AAEWjB,IAAAA,CAAC,CAACkB,gBAFb;;AAID,GA5EgC;;AA8EjCC,EAAAA,YA9EiC,wBA8EpBnB,CA9EoB,EA8EV;AACrB,WAAOL,GAAP;AACmBK,IAAAA,CAAC,CAACoB,sBADrB;;AAGD,GAlFgC;;AAoFjCC,EAAAA,qBApFiC,mCAoFT;AACtB,WAAO1B,GAAP;;;;;AAKD,GA1FgC,EAAD,CAA3B","sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const styles = memoizeStyle({\n root() {\n return css`\n display: inline-block;\n position: relative;\n `;\n },\n\n placeholder(t: Theme) {\n return css`\n color: ${t.selectPlaceholderColor};\n text-overflow: ellipsis;\n `;\n },\n\n placeholderDisabled(t: Theme) {\n return css`\n color: ${t.selectPlaceholderColorDisabled};\n `;\n },\n\n customUsePlaceholder() {\n return css`\n color: inherit;\n opacity: 0.7;\n `;\n },\n\n arrowWrap(t: Theme) {\n return css`\n color: ${t.selectMenuArrowColor};\n flex-shrink: 0;\n `;\n },\n\n customUseArrow() {\n return css`\n color: inherit;\n opacity: 0.7;\n `;\n },\n\n label() {\n return css`\n flex: 1 1 auto;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n `;\n },\n\n search() {\n return css`\n margin: 1px 4px 4px;\n `;\n },\n\n leftIconSmall(t: Theme) {\n return css`\n padding-right: ${t.selectIconGapSmall};\n width: ${t.btnIconSizeSmall};\n `;\n },\n\n leftIconMedium(t: Theme) {\n return css`\n padding-right: ${t.selectIconGapMedium};\n width: ${t.btnIconSizeMedium};\n `;\n },\n\n leftIconLarge(t: Theme) {\n return css`\n padding-right: ${t.selectIconGapLarge};\n width: ${t.btnIconSizeLarge};\n `;\n },\n\n leftIconLink(t: Theme) {\n return css`\n padding-right: ${t.btnLinkIconMarginRight};\n `;\n },\n\n selectButtonContainer() {\n return css`\n width: 100%;\n display: inline-flex;\n justify-content: space-between;\n `;\n },\n});\n"]}
1
+ {"version":3,"sources":["Select.styles.ts"],"names":["css","memoizeStyle","styles","root","placeholder","t","selectPlaceholderColor","placeholderDisabled","selectPlaceholderColorDisabled","customUsePlaceholder","arrowWrap","selectMenuArrowColor","arrowDisabled","selectMenuArrowColorDisabled","customUseArrow","label","search","leftIconSmall","selectIconGapSmall","btnIconSizeSmall","leftIconMedium","selectIconGapMedium","btnIconSizeMedium","leftIconLarge","selectIconGapLarge","btnIconSizeLarge","leftIconLink","btnLinkIconMarginRight","selectButtonContainer"],"mappings":"mWAAA,SAASA,GAAT,EAAcC,YAAd,QAAkC,2BAAlC;;;AAGA,OAAO,IAAMC,MAAM,GAAGD,YAAY,CAAC;AACjCE,EAAAA,IADiC,kBAC1B;AACL,WAAOH,GAAP;;;;AAID,GANgC;;AAQjCI,EAAAA,WARiC,uBAQrBC,CARqB,EAQX;AACpB,WAAOL,GAAP;AACWK,IAAAA,CAAC,CAACC,sBADb;;;AAID,GAbgC;;AAejCC,EAAAA,mBAfiC,+BAebF,CAfa,EAeH;AAC5B,WAAOL,GAAP;AACWK,IAAAA,CAAC,CAACG,8BADb;;AAGD,GAnBgC;;AAqBjCC,EAAAA,oBArBiC,kCAqBV;AACrB,WAAOT,GAAP;;;;AAID,GA1BgC;;AA4BjCU,EAAAA,SA5BiC,qBA4BvBL,CA5BuB,EA4Bb;AAClB,WAAOL,GAAP;AACWK,IAAAA,CAAC,CAACM,oBADb;;;AAID,GAjCgC;;AAmCjCC,EAAAA,aAnCiC,yBAmCnBP,CAnCmB,EAmCT;AACtB,WAAOL,GAAP;AACWK,IAAAA,CAAC,CAACQ,4BADb;;AAGD,GAvCgC;;AAyCjCC,EAAAA,cAzCiC,4BAyChB;AACf,WAAOd,GAAP;;;;AAID,GA9CgC;;AAgDjCe,EAAAA,KAhDiC,mBAgDzB;AACN,WAAOf,GAAP;;;;;;AAMD,GAvDgC;;AAyDjCgB,EAAAA,MAzDiC,oBAyDxB;AACP,WAAOhB,GAAP;;;AAGD,GA7DgC;;AA+DjCiB,EAAAA,aA/DiC,yBA+DnBZ,CA/DmB,EA+DT;AACtB,WAAOL,GAAP;AACmBK,IAAAA,CAAC,CAACa,kBADrB;AAEWb,IAAAA,CAAC,CAACc,gBAFb;;AAID,GApEgC;;AAsEjCC,EAAAA,cAtEiC,0BAsElBf,CAtEkB,EAsER;AACvB,WAAOL,GAAP;AACmBK,IAAAA,CAAC,CAACgB,mBADrB;AAEWhB,IAAAA,CAAC,CAACiB,iBAFb;;AAID,GA3EgC;;AA6EjCC,EAAAA,aA7EiC,yBA6EnBlB,CA7EmB,EA6ET;AACtB,WAAOL,GAAP;AACmBK,IAAAA,CAAC,CAACmB,kBADrB;AAEWnB,IAAAA,CAAC,CAACoB,gBAFb;;AAID,GAlFgC;;AAoFjCC,EAAAA,YApFiC,wBAoFpBrB,CApFoB,EAoFV;AACrB,WAAOL,GAAP;AACmBK,IAAAA,CAAC,CAACsB,sBADrB;;AAGD,GAxFgC;;AA0FjCC,EAAAA,qBA1FiC,mCA0FT;AACtB,WAAO5B,GAAP;;;;;AAKD,GAhGgC,EAAD,CAA3B","sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const styles = memoizeStyle({\n root() {\n return css`\n display: inline-block;\n position: relative;\n `;\n },\n\n placeholder(t: Theme) {\n return css`\n color: ${t.selectPlaceholderColor};\n text-overflow: ellipsis;\n `;\n },\n\n placeholderDisabled(t: Theme) {\n return css`\n color: ${t.selectPlaceholderColorDisabled};\n `;\n },\n\n customUsePlaceholder() {\n return css`\n color: inherit;\n opacity: 0.7;\n `;\n },\n\n arrowWrap(t: Theme) {\n return css`\n color: ${t.selectMenuArrowColor};\n flex-shrink: 0;\n `;\n },\n\n arrowDisabled(t: Theme) {\n return css`\n color: ${t.selectMenuArrowColorDisabled};\n `;\n },\n\n customUseArrow() {\n return css`\n color: inherit;\n opacity: 0.7;\n `;\n },\n\n label() {\n return css`\n flex: 1 1 auto;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n `;\n },\n\n search() {\n return css`\n margin: 1px 4px 4px;\n `;\n },\n\n leftIconSmall(t: Theme) {\n return css`\n padding-right: ${t.selectIconGapSmall};\n width: ${t.btnIconSizeSmall};\n `;\n },\n\n leftIconMedium(t: Theme) {\n return css`\n padding-right: ${t.selectIconGapMedium};\n width: ${t.btnIconSizeMedium};\n `;\n },\n\n leftIconLarge(t: Theme) {\n return css`\n padding-right: ${t.selectIconGapLarge};\n width: ${t.btnIconSizeLarge};\n `;\n },\n\n leftIconLink(t: Theme) {\n return css`\n padding-right: ${t.btnLinkIconMarginRight};\n `;\n },\n\n selectButtonContainer() {\n return css`\n width: 100%;\n display: inline-flex;\n justify-content: space-between;\n `;\n },\n});\n"]}
@@ -5,6 +5,7 @@ export declare const styles: {
5
5
  placeholderDisabled(t: Theme): string;
6
6
  customUsePlaceholder(): string;
7
7
  arrowWrap(t: Theme): string;
8
+ arrowDisabled(t: Theme): string;
8
9
  customUseArrow(): string;
9
10
  label(): string;
10
11
  search(): string;
@@ -21,6 +21,9 @@ export var getSelectTheme = function getSelectTheme(theme, props) {
21
21
  btnPaddingXLarge: props._icon ? theme.btnPaddingXLarge : theme.selectPaddingXLarge,
22
22
  btnPaddingYLarge: theme.selectPaddingYLarge,
23
23
  btnIconSizeLarge: theme.selectIconSizeLarge,
24
- btnBorderRadiusLarge: theme.selectBorderRadiusLarge
24
+ btnBorderRadiusLarge: theme.selectBorderRadiusLarge,
25
+ btnDisabledBg: theme.selectBgDisabled,
26
+ btnDisabledBorderColor: theme.selectBorderColorDisabled,
27
+ btnDisabledTextColor: theme.selectTextColorDisabled
25
28
  }, theme);
26
29
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["selectTheme.ts"],"names":["ThemeFactory","getSelectTheme","theme","props","create","btnBorderWidth","selectBorderWidth","btnOutlineWidth","selectOutlineWidth","btnLineHeightSmall","selectLineHeightSmall","btnFontSizeSmall","selectFontSizeSmall","btnPaddingXSmall","_icon","selectPaddingXSmall","btnPaddingYSmall","selectPaddingYSmall","btnIconSizeSmall","selectIconSizeSmall","btnBorderRadiusSmall","selectBorderRadiusSmall","btnLinkHoverTextDecoration","btnLineHeightMedium","selectLineHeightMedium","btnFontSizeMedium","selectFontSizeMedium","btnPaddingXMedium","selectPaddingXMedium","btnPaddingYMedium","selectPaddingYMedium","btnIconSizeMedium","selectIconSizeMedium","btnBorderRadiusMedium","selectBorderRadiusMedium","btnLineHeightLarge","selectLineHeightLarge","btnFontSizeLarge","selectFontSizeLarge","btnPaddingXLarge","selectPaddingXLarge","btnPaddingYLarge","selectPaddingYLarge","btnIconSizeLarge","selectIconSizeLarge","btnBorderRadiusLarge","selectBorderRadiusLarge"],"mappings":"AAAA,SAASA,YAAT,QAA6B,gCAA7B;;;;;AAKA,OAAO,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAACC,KAAD,EAAeC,KAAf,EAAuD;AACnF,SAAOH,YAAY,CAACI,MAAb;AACL;AACEC,IAAAA,cAAc,EAAEH,KAAK,CAACI,iBADxB;AAEEC,IAAAA,eAAe,EAAEL,KAAK,CAACM,kBAFzB;;AAIEC,IAAAA,kBAAkB,EAAEP,KAAK,CAACQ,qBAJ5B;AAKEC,IAAAA,gBAAgB,EAAET,KAAK,CAACU,mBAL1B;AAMEC,IAAAA,gBAAgB,EAAEV,KAAK,CAACW,KAAN,GAAcZ,KAAK,CAACW,gBAApB,GAAuCX,KAAK,CAACa,mBANjE;AAOEC,IAAAA,gBAAgB,EAAEd,KAAK,CAACe,mBAP1B;AAQEC,IAAAA,gBAAgB,EAAEhB,KAAK,CAACiB,mBAR1B;AASEC,IAAAA,oBAAoB,EAAElB,KAAK,CAACmB,uBAT9B;;AAWEC,IAAAA,0BAA0B,EAAE,MAX9B;;AAaEC,IAAAA,mBAAmB,EAAErB,KAAK,CAACsB,sBAb7B;AAcEC,IAAAA,iBAAiB,EAAEvB,KAAK,CAACwB,oBAd3B;AAeEC,IAAAA,iBAAiB,EAAExB,KAAK,CAACW,KAAN,GAAcZ,KAAK,CAACyB,iBAApB,GAAwCzB,KAAK,CAAC0B,oBAfnE;AAgBEC,IAAAA,iBAAiB,EAAE3B,KAAK,CAAC4B,oBAhB3B;AAiBEC,IAAAA,iBAAiB,EAAE7B,KAAK,CAAC8B,oBAjB3B;AAkBEC,IAAAA,qBAAqB,EAAE/B,KAAK,CAACgC,wBAlB/B;;AAoBEC,IAAAA,kBAAkB,EAAEjC,KAAK,CAACkC,qBApB5B;AAqBEC,IAAAA,gBAAgB,EAAEnC,KAAK,CAACoC,mBArB1B;AAsBEC,IAAAA,gBAAgB,EAAEpC,KAAK,CAACW,KAAN,GAAcZ,KAAK,CAACqC,gBAApB,GAAuCrC,KAAK,CAACsC,mBAtBjE;AAuBEC,IAAAA,gBAAgB,EAAEvC,KAAK,CAACwC,mBAvB1B;AAwBEC,IAAAA,gBAAgB,EAAEzC,KAAK,CAAC0C,mBAxB1B;AAyBEC,IAAAA,oBAAoB,EAAE3C,KAAK,CAAC4C,uBAzB9B,EADK;;AA4BL5C,EAAAA,KA5BK,CAAP;;AA8BD,CA/BM","sourcesContent":["import { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { Theme } from '../../lib/theming/Theme';\n\nimport { SelectProps } from './Select';\n\nexport const getSelectTheme = (theme: Theme, props: SelectProps<any, any>): Theme => {\n return ThemeFactory.create(\n {\n btnBorderWidth: theme.selectBorderWidth,\n btnOutlineWidth: theme.selectOutlineWidth,\n\n btnLineHeightSmall: theme.selectLineHeightSmall,\n btnFontSizeSmall: theme.selectFontSizeSmall,\n btnPaddingXSmall: props._icon ? theme.btnPaddingXSmall : theme.selectPaddingXSmall,\n btnPaddingYSmall: theme.selectPaddingYSmall,\n btnIconSizeSmall: theme.selectIconSizeSmall,\n btnBorderRadiusSmall: theme.selectBorderRadiusSmall,\n\n btnLinkHoverTextDecoration: 'none',\n\n btnLineHeightMedium: theme.selectLineHeightMedium,\n btnFontSizeMedium: theme.selectFontSizeMedium,\n btnPaddingXMedium: props._icon ? theme.btnPaddingXMedium : theme.selectPaddingXMedium,\n btnPaddingYMedium: theme.selectPaddingYMedium,\n btnIconSizeMedium: theme.selectIconSizeMedium,\n btnBorderRadiusMedium: theme.selectBorderRadiusMedium,\n\n btnLineHeightLarge: theme.selectLineHeightLarge,\n btnFontSizeLarge: theme.selectFontSizeLarge,\n btnPaddingXLarge: props._icon ? theme.btnPaddingXLarge : theme.selectPaddingXLarge,\n btnPaddingYLarge: theme.selectPaddingYLarge,\n btnIconSizeLarge: theme.selectIconSizeLarge,\n btnBorderRadiusLarge: theme.selectBorderRadiusLarge,\n },\n theme,\n );\n};\n"]}
1
+ {"version":3,"sources":["selectTheme.ts"],"names":["ThemeFactory","getSelectTheme","theme","props","create","btnBorderWidth","selectBorderWidth","btnOutlineWidth","selectOutlineWidth","btnLineHeightSmall","selectLineHeightSmall","btnFontSizeSmall","selectFontSizeSmall","btnPaddingXSmall","_icon","selectPaddingXSmall","btnPaddingYSmall","selectPaddingYSmall","btnIconSizeSmall","selectIconSizeSmall","btnBorderRadiusSmall","selectBorderRadiusSmall","btnLinkHoverTextDecoration","btnLineHeightMedium","selectLineHeightMedium","btnFontSizeMedium","selectFontSizeMedium","btnPaddingXMedium","selectPaddingXMedium","btnPaddingYMedium","selectPaddingYMedium","btnIconSizeMedium","selectIconSizeMedium","btnBorderRadiusMedium","selectBorderRadiusMedium","btnLineHeightLarge","selectLineHeightLarge","btnFontSizeLarge","selectFontSizeLarge","btnPaddingXLarge","selectPaddingXLarge","btnPaddingYLarge","selectPaddingYLarge","btnIconSizeLarge","selectIconSizeLarge","btnBorderRadiusLarge","selectBorderRadiusLarge","btnDisabledBg","selectBgDisabled","btnDisabledBorderColor","selectBorderColorDisabled","btnDisabledTextColor","selectTextColorDisabled"],"mappings":"AAAA,SAASA,YAAT,QAA6B,gCAA7B;;;;;AAKA,OAAO,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAACC,KAAD,EAAeC,KAAf,EAAuD;AACnF,SAAOH,YAAY,CAACI,MAAb;AACL;AACEC,IAAAA,cAAc,EAAEH,KAAK,CAACI,iBADxB;AAEEC,IAAAA,eAAe,EAAEL,KAAK,CAACM,kBAFzB;;AAIEC,IAAAA,kBAAkB,EAAEP,KAAK,CAACQ,qBAJ5B;AAKEC,IAAAA,gBAAgB,EAAET,KAAK,CAACU,mBAL1B;AAMEC,IAAAA,gBAAgB,EAAEV,KAAK,CAACW,KAAN,GAAcZ,KAAK,CAACW,gBAApB,GAAuCX,KAAK,CAACa,mBANjE;AAOEC,IAAAA,gBAAgB,EAAEd,KAAK,CAACe,mBAP1B;AAQEC,IAAAA,gBAAgB,EAAEhB,KAAK,CAACiB,mBAR1B;AASEC,IAAAA,oBAAoB,EAAElB,KAAK,CAACmB,uBAT9B;;AAWEC,IAAAA,0BAA0B,EAAE,MAX9B;;AAaEC,IAAAA,mBAAmB,EAAErB,KAAK,CAACsB,sBAb7B;AAcEC,IAAAA,iBAAiB,EAAEvB,KAAK,CAACwB,oBAd3B;AAeEC,IAAAA,iBAAiB,EAAExB,KAAK,CAACW,KAAN,GAAcZ,KAAK,CAACyB,iBAApB,GAAwCzB,KAAK,CAAC0B,oBAfnE;AAgBEC,IAAAA,iBAAiB,EAAE3B,KAAK,CAAC4B,oBAhB3B;AAiBEC,IAAAA,iBAAiB,EAAE7B,KAAK,CAAC8B,oBAjB3B;AAkBEC,IAAAA,qBAAqB,EAAE/B,KAAK,CAACgC,wBAlB/B;;AAoBEC,IAAAA,kBAAkB,EAAEjC,KAAK,CAACkC,qBApB5B;AAqBEC,IAAAA,gBAAgB,EAAEnC,KAAK,CAACoC,mBArB1B;AAsBEC,IAAAA,gBAAgB,EAAEpC,KAAK,CAACW,KAAN,GAAcZ,KAAK,CAACqC,gBAApB,GAAuCrC,KAAK,CAACsC,mBAtBjE;AAuBEC,IAAAA,gBAAgB,EAAEvC,KAAK,CAACwC,mBAvB1B;AAwBEC,IAAAA,gBAAgB,EAAEzC,KAAK,CAAC0C,mBAxB1B;AAyBEC,IAAAA,oBAAoB,EAAE3C,KAAK,CAAC4C,uBAzB9B;;AA2BEC,IAAAA,aAAa,EAAE7C,KAAK,CAAC8C,gBA3BvB;AA4BEC,IAAAA,sBAAsB,EAAE/C,KAAK,CAACgD,yBA5BhC;AA6BEC,IAAAA,oBAAoB,EAAEjD,KAAK,CAACkD,uBA7B9B,EADK;;AAgCLlD,EAAAA,KAhCK,CAAP;;AAkCD,CAnCM","sourcesContent":["import { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { Theme } from '../../lib/theming/Theme';\n\nimport { SelectProps } from './Select';\n\nexport const getSelectTheme = (theme: Theme, props: SelectProps<any, any>): Theme => {\n return ThemeFactory.create(\n {\n btnBorderWidth: theme.selectBorderWidth,\n btnOutlineWidth: theme.selectOutlineWidth,\n\n btnLineHeightSmall: theme.selectLineHeightSmall,\n btnFontSizeSmall: theme.selectFontSizeSmall,\n btnPaddingXSmall: props._icon ? theme.btnPaddingXSmall : theme.selectPaddingXSmall,\n btnPaddingYSmall: theme.selectPaddingYSmall,\n btnIconSizeSmall: theme.selectIconSizeSmall,\n btnBorderRadiusSmall: theme.selectBorderRadiusSmall,\n\n btnLinkHoverTextDecoration: 'none',\n\n btnLineHeightMedium: theme.selectLineHeightMedium,\n btnFontSizeMedium: theme.selectFontSizeMedium,\n btnPaddingXMedium: props._icon ? theme.btnPaddingXMedium : theme.selectPaddingXMedium,\n btnPaddingYMedium: theme.selectPaddingYMedium,\n btnIconSizeMedium: theme.selectIconSizeMedium,\n btnBorderRadiusMedium: theme.selectBorderRadiusMedium,\n\n btnLineHeightLarge: theme.selectLineHeightLarge,\n btnFontSizeLarge: theme.selectFontSizeLarge,\n btnPaddingXLarge: props._icon ? theme.btnPaddingXLarge : theme.selectPaddingXLarge,\n btnPaddingYLarge: theme.selectPaddingYLarge,\n btnIconSizeLarge: theme.selectIconSizeLarge,\n btnBorderRadiusLarge: theme.selectBorderRadiusLarge,\n\n btnDisabledBg: theme.selectBgDisabled,\n btnDisabledBorderColor: theme.selectBorderColorDisabled,\n btnDisabledTextColor: theme.selectTextColorDisabled,\n },\n theme,\n );\n};\n"]}
@@ -78,7 +78,7 @@ export var SidePage = /*#__PURE__*/function (_React$Component) {
78
78
  return 'auto';
79
79
  }
80
80
 
81
- return _this.layoutRef.getBoundingClientRect().width;
81
+ return _this.layoutRef.clientWidth;
82
82
  };
83
83
 
84
84
  _this.handleStackChange = function (stack) {
@@ -235,24 +235,22 @@ export var SidePage = /*#__PURE__*/function (_React$Component) {
235
235
  style: {
236
236
  width: width || (blockBackground ? 800 : 500)
237
237
  }
238
+ }, /*#__PURE__*/React.createElement(FocusLock, {
239
+ disabled: disableFocusLock || !blockBackground,
240
+ autoFocus: false,
241
+ className: styles.focusLock()
238
242
  }, /*#__PURE__*/React.createElement(RenderLayer, {
239
243
  onClickOutside: this.handleClickOutside,
240
244
  active: true
241
245
  }, /*#__PURE__*/React.createElement("div", {
242
246
  "data-tid": "SidePage__container",
243
- className: cx(styles.wrapper(this.theme), (_cx2 = {}, _cx2[styles.shadow(this.theme)] = this.state.hasShadow, _cx2[styles.wrapperLeft()] = fromLeft, _cx2)),
244
- style: this.getSidebarStyle()
245
- }, /*#__PURE__*/React.createElement(FocusLock, {
246
- disabled: disableFocusLock || !blockBackground,
247
- autoFocus: false
248
- }, /*#__PURE__*/React.createElement("div", {
247
+ className: cx(styles.wrapper(this.theme), (_cx2 = {}, _cx2[styles.wrapperLeft()] = fromLeft, _cx2[styles.wrapperMarginLeft()] = this.state.hasMargin && fromLeft, _cx2[styles.wrapperMarginRight()] = this.state.hasMargin && !fromLeft, _cx2[styles.shadow(this.theme)] = this.state.hasShadow, _cx2)),
249
248
  ref: function ref(_) {
250
249
  return _this3.layoutRef = _;
251
- },
252
- className: styles.layout()
250
+ }
253
251
  }, /*#__PURE__*/React.createElement(SidePageContext.Provider, {
254
252
  value: this.getSidePageContextProps()
255
- }, this.props.children))))));
253
+ }, this.props.children)))));
256
254
  };
257
255
 
258
256
  _proto.renderShadow = function renderShadow() {
@@ -270,20 +268,6 @@ export var SidePage = /*#__PURE__*/function (_React$Component) {
270
268
  }));
271
269
  };
272
270
 
273
- _proto.getSidebarStyle = function getSidebarStyle() {
274
- var sidePageStyle = {};
275
-
276
- if (this.state.hasMargin) {
277
- if (this.props.fromLeft) {
278
- sidePageStyle.marginLeft = 20;
279
- } else {
280
- sidePageStyle.marginRight = 20;
281
- }
282
- }
283
-
284
- return sidePageStyle;
285
- };
286
-
287
271
  _proto.getTransitionNames = function getTransitionNames() {
288
272
  var transition = this.props.fromLeft ? styles.transitionRight : styles.transitionLeft;
289
273
  return {