@skbkontur/react-ui 4.21.0 → 4.21.2
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/CHANGELOG.md +24 -0
- package/cjs/components/Button/Button.d.ts +5 -1
- package/cjs/components/Button/Button.js +10 -9
- package/cjs/components/Button/Button.js.map +1 -1
- package/cjs/components/Button/Button.md +40 -32
- package/cjs/components/Button/Button.mixins.d.ts +1 -1
- package/cjs/components/Button/Button.mixins.js +3 -1
- package/cjs/components/Button/Button.mixins.js.map +1 -1
- package/cjs/components/Button/Button.styles.d.ts +0 -6
- package/cjs/components/Button/Button.styles.js +40 -62
- package/cjs/components/Button/Button.styles.js.map +1 -1
- package/cjs/components/Button/ButtonIcon.d.ts +4 -3
- package/cjs/components/Button/ButtonIcon.js +36 -15
- package/cjs/components/Button/ButtonIcon.js.map +1 -1
- package/cjs/components/Button/ButtonIcon.styles.d.ts +16 -0
- package/cjs/components/Button/ButtonIcon.styles.js +89 -0
- package/cjs/components/Button/ButtonIcon.styles.js.map +1 -0
- package/cjs/components/Button/LoadingButtonIcon.d.ts +7 -0
- package/cjs/components/Button/LoadingButtonIcon.js +25 -0
- package/cjs/components/Button/LoadingButtonIcon.js.map +1 -0
- package/cjs/components/ComboBox/ComboBox.md +4 -5
- package/cjs/components/DatePicker/DatePicker.d.ts +1 -1
- package/cjs/components/DatePicker/DatePicker.js +1 -1
- package/cjs/components/DatePicker/DatePicker.js.map +1 -1
- package/cjs/components/Link/Link.d.ts +6 -2
- package/cjs/components/Link/Link.js +15 -11
- package/cjs/components/Link/Link.js.map +1 -1
- package/cjs/components/Link/Link.md +14 -9
- package/cjs/components/Link/Link.styles.d.ts +3 -1
- package/cjs/components/Link/Link.styles.js +14 -3
- package/cjs/components/Link/Link.styles.js.map +1 -1
- package/cjs/components/Link/LinkIcon.d.ts +6 -0
- package/cjs/components/Link/LinkIcon.js +29 -0
- package/cjs/components/Link/LinkIcon.js.map +1 -0
- package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +1 -0
- package/cjs/internal/CustomComboBox/CustomComboBox.js +22 -1
- package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
- package/cjs/internal/CustomComboBox/CustomComboBoxReducer.d.ts +1 -0
- package/cjs/internal/CustomComboBox/CustomComboBoxReducer.js +27 -1
- package/cjs/internal/CustomComboBox/CustomComboBoxReducer.js.map +1 -1
- package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/cjs/internal/themes/DefaultTheme.d.ts +24 -0
- package/cjs/internal/themes/DefaultTheme.js +34 -2
- package/cjs/internal/themes/DefaultTheme.js.map +1 -1
- package/cjs/internal/themes/Theme2022.d.ts +15 -0
- package/cjs/internal/themes/Theme2022.js +28 -1
- package/cjs/internal/themes/Theme2022.js.map +1 -1
- package/cjs/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +38 -0
- package/cjs/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +1 -0
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +3 -1
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
- package/components/Button/Button/Button.js +25 -29
- package/components/Button/Button/Button.js.map +1 -1
- package/components/Button/Button.d.ts +5 -1
- package/components/Button/Button.md +40 -32
- package/components/Button/Button.mixins/Button.mixins.js +2 -2
- package/components/Button/Button.mixins/Button.mixins.js.map +1 -1
- package/components/Button/Button.mixins.d.ts +1 -1
- package/components/Button/Button.styles/Button.styles.js +23 -44
- package/components/Button/Button.styles/Button.styles.js.map +1 -1
- package/components/Button/Button.styles.d.ts +0 -6
- package/components/Button/ButtonIcon/ButtonIcon.js +30 -17
- package/components/Button/ButtonIcon/ButtonIcon.js.map +1 -1
- package/components/Button/ButtonIcon.d.ts +4 -3
- package/components/Button/ButtonIcon.styles/ButtonIcon.styles.js +49 -0
- package/components/Button/ButtonIcon.styles/ButtonIcon.styles.js.map +1 -0
- package/components/Button/ButtonIcon.styles/package.json +6 -0
- package/components/Button/ButtonIcon.styles.d.ts +16 -0
- package/components/Button/LoadingButtonIcon/LoadingButtonIcon.js +23 -0
- package/components/Button/LoadingButtonIcon/LoadingButtonIcon.js.map +1 -0
- package/components/Button/LoadingButtonIcon/package.json +6 -0
- package/components/Button/LoadingButtonIcon.d.ts +7 -0
- package/components/ComboBox/ComboBox.md +4 -5
- package/components/DatePicker/DatePicker/DatePicker.js +1 -1
- package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
- package/components/DatePicker/DatePicker.d.ts +1 -1
- package/components/Link/Link/Link.js +15 -15
- package/components/Link/Link/Link.js.map +1 -1
- package/components/Link/Link.d.ts +6 -2
- package/components/Link/Link.md +14 -9
- package/components/Link/Link.styles/Link.styles.js +9 -3
- package/components/Link/Link.styles/Link.styles.js.map +1 -1
- package/components/Link/Link.styles.d.ts +3 -1
- package/components/Link/LinkIcon/LinkIcon.js +19 -0
- package/components/Link/LinkIcon/LinkIcon.js.map +1 -0
- package/components/Link/LinkIcon/package.json +6 -0
- package/components/Link/LinkIcon.d.ts +6 -0
- package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +10 -5
- package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
- package/internal/CustomComboBox/CustomComboBox.d.ts +1 -0
- package/internal/CustomComboBox/CustomComboBoxReducer/CustomComboBoxReducer.js +24 -0
- package/internal/CustomComboBox/CustomComboBoxReducer/CustomComboBoxReducer.js.map +1 -1
- package/internal/CustomComboBox/CustomComboBoxReducer.d.ts +1 -0
- package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/internal/themes/DefaultTheme/DefaultTheme.js +31 -0
- package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
- package/internal/themes/DefaultTheme.d.ts +24 -0
- package/internal/themes/Theme2022/Theme2022.js +38 -0
- package/internal/themes/Theme2022/Theme2022.js.map +1 -1
- package/internal/themes/Theme2022.d.ts +15 -0
- package/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +38 -0
- package/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +1 -0
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js +2 -1
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["DatePicker.tsx"],"names":["PropTypes","React","LocaleContext","locale","InternalDateGetter","ArrowAUpIcon16Light","isTheme2022","cx","ThemeFactory","InternalDate","MAX_FULLDATE","MIN_FULLDATE","InternalDateOrder","InternalDateSeparator","InternalDateValidateCheck","DateInput","DropdownContainer","filterProps","CommonWrapper","isMobile","NativeDateInput","getRootNode","rootNode","isNonNullable","createPropsGetter","Calendar","ThemeContext","Button","getTodayDate","styles","DatePickerLocaleHelper","INPUT_PASS_PROPS","autoFocus","disabled","warning","error","size","onKeyDown","MIN_WIDTH","DatePickerDataTids","root","input","label","pickerRoot","pickerTodayWrapper","DatePicker","getProps","defaultProps","calendar","state","opened","canUseMobileNativeDatePicker","today","focused","renderMain","props","picker","minDate","maxDate","months","dayCellChooseDateAriaLabel","selectMonthAriaLabel","selectYearAriaLabel","selectChosenAriaLabel","menuPos","getParent","parseInt","theme","datePickerMenuOffsetY","menuAlign","calendarWrapper","e","preventDefault","c","parseValueToDate","handleValueChange","isHoliday","value","enableTodayLink","renderTodayLink","getRootStyle","onMouseEnter","onMouseLeave","onMouseOver","getInputRef","handleBlur","handleFocus","onValueChange","handleSelectToday","handleSelect","month","year","scrollToMonth","width","minWidth","ref","setState","onFocus","close","onBlur","blur","componentDidMount","useMobileNativeDatePicker","focus","componentDidUpdate","render","create","calendarBottomSeparatorBorder","setRootNode","undefined","date","validate","checks","NotNull","Native","toString","withPad","order","separator","setComponents","getTodayComponents","withSeparator","margin","todayAriaLabel","todayLinkWrapper","PureComponent","__KONTUR_REACT_UI__","propTypes","bool","string","isRequired","oneOf","oneOfType","number","func","range","internalDate","DMY","Dot","setRangeStart","setRangeEnd","parseValue","Number","Limits","Range"],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { LocaleContext } from '../../lib/locale';\nimport { locale } from '../../lib/locale/decorators';\nimport { InternalDateGetter } from '../../lib/date/InternalDateGetter';\nimport { ArrowAUpIcon16Light } from '../../internal/icons2022/ArrowAUpIcon/ArrowAUp16Light';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { cx } from '../../lib/theming/Emotion';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { MAX_FULLDATE, MIN_FULLDATE } from '../../lib/date/constants';\nimport { InternalDateOrder, InternalDateSeparator, InternalDateValidateCheck } from '../../lib/date/types';\nimport { Nullable } from '../../typings/utility-types';\nimport { DateInput } from '../DateInput';\nimport { DropdownContainer, DropdownContainerProps } from '../../internal/DropdownContainer';\nimport { filterProps } from '../../lib/filterProps';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { isMobile } from '../../lib/client';\nimport { NativeDateInput } from '../../internal/NativeDateInput';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { isNonNullable } from '../../lib/utils';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Calendar, CalendarDateShape, CalendarProps } from '../Calendar';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { Button } from '../Button';\nimport { getTodayDate } from '../Calendar/CalendarUtils';\nimport { SizeProp } from '../../lib/types/props';\n\nimport { styles } from './DatePicker.styles';\nimport { DatePickerLocale, DatePickerLocaleHelper } from './locale';\n\nconst INPUT_PASS_PROPS = {\n autoFocus: true,\n disabled: true,\n warning: true,\n error: true,\n size: true,\n onKeyDown: true,\n};\n\nexport const MIN_WIDTH = 120;\n\nexport interface DatePickerProps\n extends Pick<DropdownContainerProps, 'menuPos'>,\n Pick<CalendarProps, 'isHoliday' | 'minDate' | 'maxDate'>,\n CommonProps {\n autoFocus?: boolean;\n disabled?: boolean;\n /**\n * Отвечает за отображение кнопки \"Сегодня\".\n */\n enableTodayLink?: boolean;\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n menuAlign?: 'left' | 'right';\n size?: SizeProp;\n value?: string | null;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n width?: number | string;\n onBlur?: () => void;\n /**\n * Вызывается при изменении `value`\n *\n * @param value - строка в формате `dd.mm.yyyy`.\n */\n onValueChange: (value: string) => void;\n onFocus?: () => void;\n onKeyDown?: (e: React.KeyboardEvent<any>) => void;\n onMouseEnter?: (e: React.MouseEvent<any>) => void;\n onMouseLeave?: (e: React.MouseEvent<any>) => void;\n onMouseOver?: (e: React.MouseEvent<any>) => void;\n /**\n * Использовать на мобильных устройствах нативный календарь для выбора дат.\n *\n * - На iOS нативный календарь не умеет работать с minDate и maxDate\n */\n useMobileNativeDatePicker?: boolean;\n}\n\nexport interface DatePickerState {\n opened: boolean;\n canUseMobileNativeDatePicker: boolean;\n today: CalendarDateShape;\n}\n\nexport const DatePickerDataTids = {\n root: 'DatePicker__root',\n input: 'DatePicker__input',\n label: 'DatePicker__label',\n pickerRoot: 'Picker__root',\n pickerTodayWrapper: 'Picker__todayWrapper',\n} as const;\n\ntype DefaultProps = Required<Pick<DatePickerProps, 'minDate' | 'maxDate'>>;\n\n@rootNode\n@locale('DatePicker', DatePickerLocaleHelper)\nexport class DatePicker extends React.PureComponent<DatePickerProps, DatePickerState> {\n public static __KONTUR_REACT_UI__ = 'DatePicker';\n\n public static propTypes = {\n autoFocus: PropTypes.bool,\n\n disabled: PropTypes.bool,\n\n /**\n * Включает кнопку сегодня в календаре\n */\n enableTodayLink: PropTypes.bool,\n\n error: PropTypes.bool,\n\n /**\n * Максимальная дата в календаре.\n */\n maxDate: PropTypes.string.isRequired,\n\n menuAlign: PropTypes.oneOf(['left', 'right']),\n\n /**\n * Минимальная дата в календаре.\n */\n minDate: PropTypes.string.isRequired,\n\n /**\n * Строка формата `dd.mm.yyyy`\n */\n value: PropTypes.string,\n\n warning: PropTypes.bool,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n\n onBlur: PropTypes.func,\n\n onValueChange: PropTypes.func.isRequired,\n\n onFocus: PropTypes.func,\n\n onKeyDown: PropTypes.func,\n\n onMouseEnter: PropTypes.func,\n\n onMouseLeave: PropTypes.func,\n\n onMouseOver: PropTypes.func,\n\n isHoliday: PropTypes.func,\n };\n\n public static defaultProps: DefaultProps = {\n minDate: MIN_FULLDATE,\n maxDate: MAX_FULLDATE,\n };\n\n private getProps = createPropsGetter(DatePicker.defaultProps);\n private theme!: Theme;\n private calendar: Calendar | null = null;\n private readonly locale!: DatePickerLocale;\n\n public static validate = (value: Nullable<string>, range: { minDate?: string; maxDate?: string } = {}) => {\n if (!value) {\n return false;\n }\n\n const { minDate = MIN_FULLDATE, maxDate = MAX_FULLDATE } = range;\n const internalDate = new InternalDate({\n order: InternalDateOrder.DMY,\n separator: InternalDateSeparator.Dot,\n })\n .setRangeStart(new InternalDate({ value: minDate }))\n .setRangeEnd(new InternalDate({ value: maxDate }))\n .parseValue(value);\n\n return internalDate.validate({\n checks: [\n InternalDateValidateCheck.NotNull,\n InternalDateValidateCheck.Number,\n InternalDateValidateCheck.Native,\n InternalDateValidateCheck.Limits,\n InternalDateValidateCheck.Range,\n ],\n });\n };\n\n public state: DatePickerState = { opened: false, canUseMobileNativeDatePicker: false, today: getTodayDate() };\n\n private input: DateInput | null = null;\n private focused = false;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n if (this.props.useMobileNativeDatePicker && isMobile) {\n this.setState({\n canUseMobileNativeDatePicker: true,\n });\n }\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public componentDidUpdate() {\n const { disabled } = this.props;\n const { opened } = this.state;\n if (disabled && opened) {\n this.close();\n }\n }\n\n /**\n * @public\n */\n public blur() {\n if (this.input) {\n this.input.blur();\n }\n this.handleBlur();\n }\n\n /**\n * @public\n */\n public focus() {\n if (this.props.disabled) {\n return;\n }\n if (this.input) {\n this.input.focus();\n }\n this.handleFocus();\n }\n\n /**\n * Закрывает выпадашку выбора дня\n * @public\n */\n public close() {\n this.setState({ opened: false });\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n\n return (\n <ThemeContext.Provider value={ThemeFactory.create({ calendarBottomSeparatorBorder: 'none' }, theme)}>\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain = (props: CommonWrapperRestProps<DatePickerProps>) => {\n let picker = null;\n\n const { minDate, maxDate } = this.getProps();\n\n if (this.state.opened) {\n picker = (\n <LocaleContext.Provider\n value={{\n locale: {\n Calendar: {\n months: this.locale.months,\n dayCellChooseDateAriaLabel: this.locale.dayCellChooseDateAriaLabel,\n selectMonthAriaLabel: this.locale.selectMonthAriaLabel,\n selectYearAriaLabel: this.locale.selectYearAriaLabel,\n selectChosenAriaLabel: this.locale.selectChosenAriaLabel,\n },\n },\n }}\n >\n <DropdownContainer\n menuPos={this.props.menuPos}\n data-tid={DatePickerDataTids.root}\n getParent={this.getParent}\n offsetY={parseInt(this.theme.datePickerMenuOffsetY)}\n align={this.props.menuAlign}\n >\n <div\n data-tid={DatePickerDataTids.pickerRoot}\n className={styles.calendarWrapper(this.theme)}\n onMouseDown={(e) => e.preventDefault()}\n >\n <Calendar\n ref={(c) => (this.calendar = c)}\n maxDate={this.parseValueToDate(maxDate)}\n minDate={this.parseValueToDate(minDate)}\n onValueChange={this.handleValueChange}\n isHoliday={this.props.isHoliday}\n value={this.parseValueToDate(this.props.value)}\n />\n {this.props.enableTodayLink && this.renderTodayLink()}{' '}\n </div>\n </DropdownContainer>\n </LocaleContext.Provider>\n );\n }\n\n return (\n <label\n className={styles.root()}\n style={this.getRootStyle()}\n onMouseEnter={this.props.onMouseEnter}\n onMouseLeave={this.props.onMouseLeave}\n onMouseOver={this.props.onMouseOver}\n data-tid={DatePickerDataTids.label}\n >\n <DateInput\n {...filterProps(props, INPUT_PASS_PROPS)}\n ref={this.getInputRef}\n value={this.props.value || ''}\n width=\"100%\"\n withIcon\n minDate={minDate}\n maxDate={maxDate}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onValueChange={this.props.onValueChange}\n data-tid={DatePickerDataTids.input}\n />\n {this.state.canUseMobileNativeDatePicker && (\n <NativeDateInput\n onValueChange={this.props.onValueChange}\n value={this.props.value || ''}\n minDate={minDate}\n maxDate={maxDate}\n disabled={this.props.disabled}\n />\n )}\n {!this.state.canUseMobileNativeDatePicker && picker}\n </label>\n );\n };\n\n private parseValueToDate(value?: Nullable<string>): string | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n\n const date = new InternalDate({ value });\n if (date.validate({ checks: [InternalDateValidateCheck.NotNull, InternalDateValidateCheck.Native] })) {\n return date.toString({ withPad: true });\n }\n\n return undefined;\n }\n\n private renderTodayLink() {\n const { order, separator } = this.locale;\n const today = new InternalDate({ order, separator })\n .setComponents(InternalDateGetter.getTodayComponents())\n .toString({ withPad: true, withSeparator: true });\n\n if (isTheme2022(this.theme)) {\n return (\n <div style={{ margin: 8 }}>\n <Button\n aria-label={this.locale.todayAriaLabel}\n data-tid={DatePickerDataTids.pickerTodayWrapper}\n width=\"100%\"\n onClick={this.handleSelectToday(today)}\n icon={<ArrowAUpIcon16Light />}\n >\n {this.locale.today}\n </Button>\n </div>\n );\n }\n\n return (\n <button\n aria-label={this.locale.todayAriaLabel}\n data-tid={DatePickerDataTids.pickerTodayWrapper}\n className={cx({\n [styles.todayLinkWrapper(this.theme)]: true,\n })}\n onClick={this.handleSelectToday(today)}\n tabIndex={-1}\n >\n {`${this.locale.today} ${today}`}\n </button>\n );\n }\n\n private handleSelectToday = (today: string) => () => {\n this.handleSelect(today);\n\n if (this.calendar) {\n const { month, year } = this.state.today;\n this.calendar.scrollToMonth(month, year);\n }\n };\n\n public getParent = () => {\n return getRootNode(this);\n };\n\n private getRootStyle = () => {\n const { width } = this.props;\n return isNonNullable(width) ? { width } : { minWidth: MIN_WIDTH };\n };\n\n private getInputRef = (ref: DateInput | null) => {\n this.input = ref;\n };\n\n private handleFocus = () => {\n if (this.focused) {\n return;\n }\n\n this.focused = true;\n\n this.setState({ opened: true });\n\n if (this.props.onFocus) {\n this.props.onFocus();\n }\n };\n\n private handleBlur = () => {\n if (!this.focused) {\n return;\n }\n\n this.focused = false;\n this.close();\n\n if (this.props.onBlur) {\n this.props.onBlur();\n }\n };\n\n private handleValueChange = (value: string) => {\n this.handleSelect(value);\n this.blur();\n };\n\n private handleSelect = (value: string | null) => {\n if (!value) {\n return null;\n }\n\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["DatePicker.tsx"],"names":["PropTypes","React","LocaleContext","locale","InternalDateGetter","ArrowAUpIcon16Light","isTheme2022","cx","ThemeFactory","InternalDate","MAX_FULLDATE","MIN_FULLDATE","InternalDateOrder","InternalDateSeparator","InternalDateValidateCheck","DateInput","DropdownContainer","filterProps","CommonWrapper","isMobile","NativeDateInput","getRootNode","rootNode","isNonNullable","createPropsGetter","Calendar","ThemeContext","Button","getTodayDate","styles","DatePickerLocaleHelper","INPUT_PASS_PROPS","autoFocus","disabled","warning","error","size","onKeyDown","MIN_WIDTH","DatePickerDataTids","root","input","label","pickerRoot","pickerTodayWrapper","DatePicker","getProps","defaultProps","calendar","state","opened","canUseMobileNativeDatePicker","today","focused","renderMain","props","picker","minDate","maxDate","months","dayCellChooseDateAriaLabel","selectMonthAriaLabel","selectYearAriaLabel","selectChosenAriaLabel","menuPos","getParent","parseInt","theme","datePickerMenuOffsetY","menuAlign","calendarWrapper","e","preventDefault","c","parseValueToDate","handleValueChange","isHoliday","value","enableTodayLink","renderTodayLink","getRootStyle","onMouseEnter","onMouseLeave","onMouseOver","getInputRef","handleBlur","handleFocus","onValueChange","handleSelectToday","handleSelect","month","year","scrollToMonth","width","minWidth","ref","setState","onFocus","close","onBlur","blur","componentDidMount","useMobileNativeDatePicker","focus","componentDidUpdate","render","create","calendarBottomSeparatorBorder","setRootNode","undefined","date","validate","checks","NotNull","Native","toString","withPad","order","separator","setComponents","getTodayComponents","withSeparator","margin","todayAriaLabel","todayLinkWrapper","PureComponent","__KONTUR_REACT_UI__","propTypes","bool","string","isRequired","oneOf","oneOfType","number","func","range","internalDate","DMY","Dot","setRangeStart","setRangeEnd","parseValue","Number","Limits","Range"],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { LocaleContext } from '../../lib/locale';\nimport { locale } from '../../lib/locale/decorators';\nimport { InternalDateGetter } from '../../lib/date/InternalDateGetter';\nimport { ArrowAUpIcon16Light } from '../../internal/icons2022/ArrowAUpIcon/ArrowAUp16Light';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { cx } from '../../lib/theming/Emotion';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { MAX_FULLDATE, MIN_FULLDATE } from '../../lib/date/constants';\nimport { InternalDateOrder, InternalDateSeparator, InternalDateValidateCheck } from '../../lib/date/types';\nimport { Nullable } from '../../typings/utility-types';\nimport { DateInput } from '../DateInput';\nimport { DropdownContainer, DropdownContainerProps } from '../../internal/DropdownContainer';\nimport { filterProps } from '../../lib/filterProps';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { isMobile } from '../../lib/client';\nimport { NativeDateInput } from '../../internal/NativeDateInput';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { isNonNullable } from '../../lib/utils';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Calendar, CalendarDateShape, CalendarProps } from '../Calendar';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { Button } from '../Button';\nimport { getTodayDate } from '../Calendar/CalendarUtils';\nimport { SizeProp } from '../../lib/types/props';\n\nimport { styles } from './DatePicker.styles';\nimport { DatePickerLocale, DatePickerLocaleHelper } from './locale';\n\nconst INPUT_PASS_PROPS = {\n autoFocus: true,\n disabled: true,\n warning: true,\n error: true,\n size: true,\n onKeyDown: true,\n};\n\nexport const MIN_WIDTH = 120;\n\nexport interface DatePickerProps\n extends Pick<DropdownContainerProps, 'menuPos'>,\n Pick<CalendarProps, 'isHoliday' | 'minDate' | 'maxDate'>,\n CommonProps {\n autoFocus?: boolean;\n disabled?: boolean;\n /**\n * Отвечает за отображение кнопки \"Сегодня\".\n */\n enableTodayLink?: boolean;\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n menuAlign?: 'left' | 'right';\n size?: SizeProp;\n value?: string | null;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n width?: number | string;\n onBlur?: () => void;\n /**\n * Вызывается при изменении `value`\n *\n * @param value - строка в формате `dd.mm.yyyy`.\n */\n onValueChange: (value: string) => void;\n onFocus?: () => void;\n onKeyDown?: (e: React.KeyboardEvent<any>) => void;\n onMouseEnter?: (e: React.MouseEvent<any>) => void;\n onMouseLeave?: (e: React.MouseEvent<any>) => void;\n onMouseOver?: (e: React.MouseEvent<any>) => void;\n /**\n * Использовать на мобильных устройствах нативный календарь для выбора дат.\n *\n * - На iOS нативный календарь не умеет работать с minDate и maxDate\n */\n useMobileNativeDatePicker?: boolean;\n}\n\nexport interface DatePickerState {\n opened: boolean;\n canUseMobileNativeDatePicker: boolean;\n today: CalendarDateShape;\n}\n\nexport const DatePickerDataTids = {\n root: 'DatePicker__root',\n input: 'DatePicker__input',\n label: 'DatePicker__label',\n pickerRoot: 'Picker__root',\n pickerTodayWrapper: 'Picker__todayWrapper',\n} as const;\n\ntype DefaultProps = Required<Pick<DatePickerProps, 'minDate' | 'maxDate'>>;\n\n@rootNode\n@locale('DatePicker', DatePickerLocaleHelper)\nexport class DatePicker extends React.PureComponent<DatePickerProps, DatePickerState> {\n public static __KONTUR_REACT_UI__ = 'DatePicker';\n\n public static propTypes = {\n autoFocus: PropTypes.bool,\n\n disabled: PropTypes.bool,\n\n /**\n * Включает кнопку сегодня в календаре\n */\n enableTodayLink: PropTypes.bool,\n\n error: PropTypes.bool,\n\n /**\n * Максимальная дата в календаре.\n */\n maxDate: PropTypes.string.isRequired,\n\n menuAlign: PropTypes.oneOf(['left', 'right']),\n\n /**\n * Минимальная дата в календаре.\n */\n minDate: PropTypes.string.isRequired,\n\n /**\n * Строка формата `dd.mm.yyyy`\n */\n value: PropTypes.string,\n\n warning: PropTypes.bool,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n onBlur: PropTypes.func,\n\n onValueChange: PropTypes.func.isRequired,\n\n onFocus: PropTypes.func,\n\n onKeyDown: PropTypes.func,\n\n onMouseEnter: PropTypes.func,\n\n onMouseLeave: PropTypes.func,\n\n onMouseOver: PropTypes.func,\n\n isHoliday: PropTypes.func,\n };\n\n public static defaultProps: DefaultProps = {\n minDate: MIN_FULLDATE,\n maxDate: MAX_FULLDATE,\n };\n\n private getProps = createPropsGetter(DatePicker.defaultProps);\n private theme!: Theme;\n private calendar: Calendar | null = null;\n private readonly locale!: DatePickerLocale;\n\n public static validate = (value: Nullable<string>, range: { minDate?: string; maxDate?: string } = {}) => {\n if (!value) {\n return false;\n }\n\n const { minDate = MIN_FULLDATE, maxDate = MAX_FULLDATE } = range;\n const internalDate = new InternalDate({\n order: InternalDateOrder.DMY,\n separator: InternalDateSeparator.Dot,\n })\n .setRangeStart(new InternalDate({ value: minDate }))\n .setRangeEnd(new InternalDate({ value: maxDate }))\n .parseValue(value);\n\n return internalDate.validate({\n checks: [\n InternalDateValidateCheck.NotNull,\n InternalDateValidateCheck.Number,\n InternalDateValidateCheck.Native,\n InternalDateValidateCheck.Limits,\n InternalDateValidateCheck.Range,\n ],\n });\n };\n\n public state: DatePickerState = { opened: false, canUseMobileNativeDatePicker: false, today: getTodayDate() };\n\n private input: DateInput | null = null;\n private focused = false;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n if (this.props.useMobileNativeDatePicker && isMobile) {\n this.setState({\n canUseMobileNativeDatePicker: true,\n });\n }\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public componentDidUpdate() {\n const { disabled } = this.props;\n const { opened } = this.state;\n if (disabled && opened) {\n this.close();\n }\n }\n\n /**\n * @public\n */\n public blur() {\n if (this.input) {\n this.input.blur();\n }\n this.handleBlur();\n }\n\n /**\n * @public\n */\n public focus() {\n if (this.props.disabled) {\n return;\n }\n if (this.input) {\n this.input.focus();\n }\n this.handleFocus();\n }\n\n /**\n * Закрывает выпадашку выбора дня\n * @public\n */\n public close() {\n this.setState({ opened: false });\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n\n return (\n <ThemeContext.Provider value={ThemeFactory.create({ calendarBottomSeparatorBorder: 'none' }, theme)}>\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain = (props: CommonWrapperRestProps<DatePickerProps>) => {\n let picker = null;\n\n const { minDate, maxDate } = this.getProps();\n\n if (this.state.opened) {\n picker = (\n <LocaleContext.Provider\n value={{\n locale: {\n Calendar: {\n months: this.locale.months,\n dayCellChooseDateAriaLabel: this.locale.dayCellChooseDateAriaLabel,\n selectMonthAriaLabel: this.locale.selectMonthAriaLabel,\n selectYearAriaLabel: this.locale.selectYearAriaLabel,\n selectChosenAriaLabel: this.locale.selectChosenAriaLabel,\n },\n },\n }}\n >\n <DropdownContainer\n menuPos={this.props.menuPos}\n data-tid={DatePickerDataTids.root}\n getParent={this.getParent}\n offsetY={parseInt(this.theme.datePickerMenuOffsetY)}\n align={this.props.menuAlign}\n >\n <div\n data-tid={DatePickerDataTids.pickerRoot}\n className={styles.calendarWrapper(this.theme)}\n onMouseDown={(e) => e.preventDefault()}\n >\n <Calendar\n ref={(c) => (this.calendar = c)}\n maxDate={this.parseValueToDate(maxDate)}\n minDate={this.parseValueToDate(minDate)}\n onValueChange={this.handleValueChange}\n isHoliday={this.props.isHoliday}\n value={this.parseValueToDate(this.props.value)}\n />\n {this.props.enableTodayLink && this.renderTodayLink()}{' '}\n </div>\n </DropdownContainer>\n </LocaleContext.Provider>\n );\n }\n\n return (\n <label\n className={styles.root()}\n style={this.getRootStyle()}\n onMouseEnter={this.props.onMouseEnter}\n onMouseLeave={this.props.onMouseLeave}\n onMouseOver={this.props.onMouseOver}\n data-tid={DatePickerDataTids.label}\n >\n <DateInput\n {...filterProps(props, INPUT_PASS_PROPS)}\n ref={this.getInputRef}\n value={this.props.value || ''}\n width=\"100%\"\n withIcon\n minDate={minDate}\n maxDate={maxDate}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onValueChange={this.props.onValueChange}\n data-tid={DatePickerDataTids.input}\n />\n {this.state.canUseMobileNativeDatePicker && (\n <NativeDateInput\n onValueChange={this.props.onValueChange}\n value={this.props.value || ''}\n minDate={minDate}\n maxDate={maxDate}\n disabled={this.props.disabled}\n />\n )}\n {!this.state.canUseMobileNativeDatePicker && picker}\n </label>\n );\n };\n\n private parseValueToDate(value?: Nullable<string>): string | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n\n const date = new InternalDate({ value });\n if (date.validate({ checks: [InternalDateValidateCheck.NotNull, InternalDateValidateCheck.Native] })) {\n return date.toString({ withPad: true });\n }\n\n return undefined;\n }\n\n private renderTodayLink() {\n const { order, separator } = this.locale;\n const today = new InternalDate({ order, separator })\n .setComponents(InternalDateGetter.getTodayComponents())\n .toString({ withPad: true, withSeparator: true });\n\n if (isTheme2022(this.theme)) {\n return (\n <div style={{ margin: 8 }}>\n <Button\n aria-label={this.locale.todayAriaLabel}\n data-tid={DatePickerDataTids.pickerTodayWrapper}\n width=\"100%\"\n onClick={this.handleSelectToday(today)}\n icon={<ArrowAUpIcon16Light />}\n >\n {this.locale.today}\n </Button>\n </div>\n );\n }\n\n return (\n <button\n aria-label={this.locale.todayAriaLabel}\n data-tid={DatePickerDataTids.pickerTodayWrapper}\n className={cx({\n [styles.todayLinkWrapper(this.theme)]: true,\n })}\n onClick={this.handleSelectToday(today)}\n tabIndex={-1}\n >\n {`${this.locale.today} ${today}`}\n </button>\n );\n }\n\n private handleSelectToday = (today: string) => () => {\n this.handleSelect(today);\n\n if (this.calendar) {\n const { month, year } = this.state.today;\n this.calendar.scrollToMonth(month, year);\n }\n };\n\n public getParent = () => {\n return getRootNode(this);\n };\n\n private getRootStyle = () => {\n const { width } = this.props;\n return isNonNullable(width) ? { width } : { minWidth: MIN_WIDTH };\n };\n\n private getInputRef = (ref: DateInput | null) => {\n this.input = ref;\n };\n\n private handleFocus = () => {\n if (this.focused) {\n return;\n }\n\n this.focused = true;\n\n this.setState({ opened: true });\n\n if (this.props.onFocus) {\n this.props.onFocus();\n }\n };\n\n private handleBlur = () => {\n if (!this.focused) {\n return;\n }\n\n this.focused = false;\n this.close();\n\n if (this.props.onBlur) {\n this.props.onBlur();\n }\n };\n\n private handleValueChange = (value: string) => {\n this.handleSelect(value);\n this.blur();\n };\n\n private handleSelect = (value: string | null) => {\n if (!value) {\n return null;\n }\n\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n}\n"]}
|
|
@@ -81,7 +81,7 @@ export declare class DatePicker extends React.PureComponent<DatePickerProps, Dat
|
|
|
81
81
|
*/
|
|
82
82
|
value: PropTypes.Requireable<string>;
|
|
83
83
|
warning: PropTypes.Requireable<boolean>;
|
|
84
|
-
width: PropTypes.
|
|
84
|
+
width: PropTypes.Requireable<string | number>;
|
|
85
85
|
onBlur: PropTypes.Requireable<(...args: any[]) => any>;
|
|
86
86
|
onValueChange: PropTypes.Validator<(...args: any[]) => any>;
|
|
87
87
|
onFocus: PropTypes.Requireable<(...args: any[]) => any>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
3
|
import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
|
|
4
|
-
var _excluded = ["disabled", "href", "icon", "use", "loading", "_button", "_buttonOpened", "rel", "as", "focused"];
|
|
4
|
+
var _excluded = ["disabled", "href", "icon", "rightIcon", "use", "loading", "_button", "_buttonOpened", "rel", "as", "focused"];
|
|
5
5
|
|
|
6
6
|
var _class, _class2, _temp;
|
|
7
7
|
|
|
@@ -11,7 +11,6 @@ import { globalObject } from '@skbkontur/global-object';
|
|
|
11
11
|
import { keyListener } from "../../../lib/events/keyListener";
|
|
12
12
|
import { ThemeContext } from "../../../lib/theming/ThemeContext";
|
|
13
13
|
import { isExternalLink } from "../../../lib/utils";
|
|
14
|
-
import { Spinner } from "../../Spinner";
|
|
15
14
|
import { CommonWrapper } from "../../../internal/CommonWrapper";
|
|
16
15
|
import { cx } from "../../../lib/theming/Emotion";
|
|
17
16
|
import { rootNode } from "../../../lib/rootNode";
|
|
@@ -20,6 +19,7 @@ import { ThemeFactory } from "../../../lib/theming/ThemeFactory";
|
|
|
20
19
|
import { isDarkTheme, isTheme2022 } from "../../../lib/theming/ThemeHelpers";
|
|
21
20
|
import { isIE11 } from "../../../lib/client";
|
|
22
21
|
import { globalClasses, styles } from "../Link.styles";
|
|
22
|
+
import { LinkIcon } from "../LinkIcon";
|
|
23
23
|
export var LinkDataTids = {
|
|
24
24
|
root: 'Link__root'
|
|
25
25
|
};
|
|
@@ -47,6 +47,7 @@ var Link = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Co
|
|
|
47
47
|
var disabled = props.disabled,
|
|
48
48
|
href = props.href,
|
|
49
49
|
icon = props.icon,
|
|
50
|
+
rightIcon = props.rightIcon,
|
|
50
51
|
use = props.use,
|
|
51
52
|
loading = props.loading,
|
|
52
53
|
_button = props._button,
|
|
@@ -59,18 +60,6 @@ var Link = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Co
|
|
|
59
60
|
|
|
60
61
|
var _isTheme2022 = isTheme2022(_this.theme);
|
|
61
62
|
|
|
62
|
-
var iconElement = null;
|
|
63
|
-
|
|
64
|
-
if (icon) {
|
|
65
|
-
iconElement = /*#__PURE__*/React.createElement("span", {
|
|
66
|
-
className: styles.icon(_this.theme)
|
|
67
|
-
}, loading ? /*#__PURE__*/React.createElement(Spinner, {
|
|
68
|
-
caption: null,
|
|
69
|
-
dimmed: true,
|
|
70
|
-
inline: true
|
|
71
|
-
}) : icon);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
63
|
var arrow = null;
|
|
75
64
|
|
|
76
65
|
if (_button) {
|
|
@@ -86,6 +75,17 @@ var Link = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Co
|
|
|
86
75
|
}
|
|
87
76
|
|
|
88
77
|
var isFocused = !disabled && (_this.state.focusedByTab || focused);
|
|
78
|
+
var leftIconElement = icon && /*#__PURE__*/React.createElement(LinkIcon, {
|
|
79
|
+
icon: icon,
|
|
80
|
+
loading: loading,
|
|
81
|
+
position: "left"
|
|
82
|
+
});
|
|
83
|
+
var rightIconElement = rightIcon && /*#__PURE__*/React.createElement(LinkIcon, {
|
|
84
|
+
hasBothIcons: !!icon && !!rightIcon,
|
|
85
|
+
icon: rightIcon,
|
|
86
|
+
loading: loading,
|
|
87
|
+
position: "right"
|
|
88
|
+
});
|
|
89
89
|
var linkProps = {
|
|
90
90
|
className: cx(styles.useRoot(), use === 'default' && styles.useDefault(_this.theme), use === 'success' && styles.useSuccess(_this.theme), use === 'danger' && styles.useDanger(_this.theme), use === 'grayed' && styles.useGrayed(_this.theme), !!_button && styles.button(_this.theme), !!_buttonOpened && styles.buttonOpened(_this.theme), _this.getLinkClassName(isFocused, Boolean(disabled || loading), _isTheme2022)),
|
|
91
91
|
href: href,
|
|
@@ -110,7 +110,7 @@ var Link = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Co
|
|
|
110
110
|
|
|
111
111
|
return /*#__PURE__*/React.createElement(Component, _extends({
|
|
112
112
|
"data-tid": LinkDataTids.root
|
|
113
|
-
}, rest, linkProps),
|
|
113
|
+
}, rest, linkProps), leftIconElement, child, rightIconElement, arrow);
|
|
114
114
|
};
|
|
115
115
|
|
|
116
116
|
_this.handleFocus = function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Link.tsx"],"names":["React","PropTypes","globalObject","keyListener","ThemeContext","isExternalLink","Spinner","CommonWrapper","cx","rootNode","createPropsGetter","ThemeFactory","isDarkTheme","isTheme2022","isIE11","globalClasses","styles","LinkDataTids","root","Link","getProps","defaultProps","state","focusedByTab","renderMain","props","disabled","href","icon","use","loading","_button","_buttonOpened","relOrigin","rel","Component","as","focused","rest","_isTheme2022","theme","iconElement","arrow","isFocused","linkProps","className","useRoot","useDefault","useSuccess","useDanger","useGrayed","button","buttonOpened","getLinkClassName","Boolean","onClick","handleClick","onFocus","handleFocus","onBlur","handleBlur","tabIndex","child","children","lineTextWrapper","lineTextWrapperFocused","text","lineText","lineTextIE11","requestAnimationFrame","isTabPressed","setState","event","preventDefault","render","create","setRootNode","isBorderBottom","parseInt","linkLineBorderBottomWidth","focus","useGrayedFocus","lineRoot","disabledDark22Theme","lineFocus","lineFocusSuccess","lineFocusDanger","lineFocusGrayed","__KONTUR_REACT_UI__","propTypes","bool","string","node","oneOf"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\nimport PropTypes from 'prop-types';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { Override } from '../../typings/utility-types';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme, ThemeIn } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { isExternalLink } from '../../lib/utils';\nimport { Spinner } from '../Spinner';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter, DefaultizedProps } from '../../lib/createPropsGetter';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { isDarkTheme, isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { isIE11 } from '../../lib/client';\n\nimport { globalClasses, styles } from './Link.styles';\n\nexport interface LinkProps\n extends Pick<AriaAttributes, 'aria-label'>,\n CommonProps,\n Override<\n React.AnchorHTMLAttributes<HTMLAnchorElement>,\n {\n /**\n * Отключенное состояние.\n */\n disabled?: boolean;\n /**\n * HTML-атрибут `href`.\n */\n href?: string;\n /**\n * Добавляет ссылке иконку.\n */\n icon?: React.ReactElement<any>;\n /**\n * Тема ссылки.\n */\n use?: 'default' | 'success' | 'danger' | 'grayed';\n /**\n * @ignore\n */\n _button?: boolean;\n /**\n * @ignore\n */\n _buttonOpened?: boolean;\n /**\n * HTML-атрибут `tabindex`.\n */\n tabIndex?: number;\n /**\n * Переводит ссылку в состояние загрузки.\n */\n loading?: boolean;\n /**\n * HTML-событие `onclick`.\n */\n onClick?: (event: React.MouseEvent<HTMLAnchorElement>) => void;\n\n /**\n * Обычный объект с переменными темы.\n * Он будет объединён с темой из контекста.\n */\n theme?: ThemeIn;\n /**\n * Компонент, используемый в качестве корневого узла.\n * @ignore\n */\n as?: React.ElementType | keyof React.ReactHTML;\n /**\n * @ignore\n */\n focused?: boolean;\n }\n > {}\n\nexport interface LinkState {\n focusedByTab: boolean;\n}\n\nexport const LinkDataTids = {\n root: 'Link__root',\n} as const;\n\ntype DefaultProps = Required<Pick<LinkProps, 'href' | 'use' | 'as'>>;\ntype DefaultizedLinkProps = DefaultizedProps<LinkProps, DefaultProps>;\n\n/**\n * Элемент ссылки из HTML.\n */\n@rootNode\nexport class Link extends React.Component<LinkProps, LinkState> {\n public static __KONTUR_REACT_UI__ = 'Link';\n\n public static propTypes = {\n disabled: PropTypes.bool,\n\n href: PropTypes.string,\n\n icon: PropTypes.node,\n\n use: PropTypes.oneOf(['default', 'success', 'danger', 'grayed']),\n };\n\n public static defaultProps: DefaultProps = {\n href: '',\n use: 'default',\n as: 'a',\n };\n\n private getProps = createPropsGetter(Link.defaultProps);\n\n public state: LinkState = {\n focusedByTab: false,\n };\n\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = this.props.theme ? ThemeFactory.create(this.props.theme as Theme, theme) : theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.getProps()}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain = (props: CommonWrapperRestProps<DefaultizedLinkProps>) => {\n const {\n disabled,\n href,\n icon,\n use,\n loading,\n _button,\n _buttonOpened,\n rel: relOrigin,\n as: Component,\n focused = false,\n ...rest\n } = props;\n const _isTheme2022 = isTheme2022(this.theme);\n\n let iconElement = null;\n if (icon) {\n iconElement = (\n <span className={styles.icon(this.theme)}>{loading ? <Spinner caption={null} dimmed inline /> : icon}</span>\n );\n }\n\n let arrow = null;\n if (_button) {\n arrow = <span className={styles.arrow()} />;\n }\n\n let rel = relOrigin;\n if (typeof rel === 'undefined' && href) {\n rel = `noopener${isExternalLink(href) ? ' noreferrer' : ''}`;\n }\n\n const isFocused = !disabled && (this.state.focusedByTab || focused);\n\n const linkProps = {\n className: cx(\n styles.useRoot(),\n use === 'default' && styles.useDefault(this.theme),\n use === 'success' && styles.useSuccess(this.theme),\n use === 'danger' && styles.useDanger(this.theme),\n use === 'grayed' && styles.useGrayed(this.theme),\n !!_button && styles.button(this.theme),\n !!_buttonOpened && styles.buttonOpened(this.theme),\n this.getLinkClassName(isFocused, Boolean(disabled || loading), _isTheme2022),\n ),\n href,\n rel,\n onClick: this.handleClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n tabIndex: disabled || loading ? -1 : this.props.tabIndex,\n };\n\n let child = this.props.children;\n if (_isTheme2022) {\n // lineTextWrapper нужен для реализации transition у подчеркивания\n child = (\n <span\n className={cx(styles.lineTextWrapper(this.theme), {\n [styles.lineTextWrapperFocused(this.theme)]: isFocused,\n })}\n >\n <span\n className={cx(globalClasses.text, {\n [styles.lineText(this.theme)]: !isIE11,\n [styles.lineTextIE11(this.theme)]: isIE11,\n })}\n >\n {this.props.children}\n </span>\n </span>\n );\n }\n\n return (\n <Component data-tid={LinkDataTids.root} {...rest} {...linkProps}>\n {iconElement}\n {child}\n {arrow}\n </Component>\n );\n };\n\n private handleFocus = () => {\n if (!this.props.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n }\n };\n\n private handleBlur = () => {\n this.setState({ focusedByTab: false });\n };\n\n private handleClick = (event: React.MouseEvent<HTMLAnchorElement>) => {\n const { onClick, disabled, loading } = this.props;\n const href = this.getProps().href;\n if (!href) {\n event.preventDefault();\n }\n if (onClick && !disabled && !loading) {\n onClick(event);\n }\n };\n\n private getLinkClassName(focused: boolean, disabled: boolean, _isTheme2022: boolean): string {\n const { use } = this.getProps();\n const isBorderBottom = parseInt(this.theme.linkLineBorderBottomWidth) > 0;\n const isFocused = focused && !disabled;\n\n return !isBorderBottom\n ? cx(\n styles.root(this.theme),\n isFocused && styles.focus(this.theme),\n disabled && styles.disabled(this.theme),\n use === 'grayed' && focused && styles.useGrayedFocus(this.theme),\n )\n : cx(\n styles.lineRoot(),\n disabled && styles.disabled(this.theme),\n disabled && _isTheme2022 && isDarkTheme(this.theme) && styles.disabledDark22Theme(this.theme),\n isFocused && use === 'default' && styles.lineFocus(this.theme),\n isFocused && use === 'success' && styles.lineFocusSuccess(this.theme),\n isFocused && use === 'danger' && styles.lineFocusDanger(this.theme),\n isFocused && use === 'grayed' && styles.lineFocusGrayed(this.theme),\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["Link.tsx"],"names":["React","PropTypes","globalObject","keyListener","ThemeContext","isExternalLink","CommonWrapper","cx","rootNode","createPropsGetter","ThemeFactory","isDarkTheme","isTheme2022","isIE11","globalClasses","styles","LinkIcon","LinkDataTids","root","Link","getProps","defaultProps","state","focusedByTab","renderMain","props","disabled","href","icon","rightIcon","use","loading","_button","_buttonOpened","relOrigin","rel","Component","as","focused","rest","_isTheme2022","theme","arrow","isFocused","leftIconElement","rightIconElement","linkProps","className","useRoot","useDefault","useSuccess","useDanger","useGrayed","button","buttonOpened","getLinkClassName","Boolean","onClick","handleClick","onFocus","handleFocus","onBlur","handleBlur","tabIndex","child","children","lineTextWrapper","lineTextWrapperFocused","text","lineText","lineTextIE11","requestAnimationFrame","isTabPressed","setState","event","preventDefault","render","create","setRootNode","isBorderBottom","parseInt","linkLineBorderBottomWidth","focus","useGrayedFocus","lineRoot","disabledDark22Theme","lineFocus","lineFocusSuccess","lineFocusDanger","lineFocusGrayed","__KONTUR_REACT_UI__","propTypes","bool","string","node","oneOf"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\nimport PropTypes from 'prop-types';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { Override } from '../../typings/utility-types';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme, ThemeIn } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { isExternalLink } from '../../lib/utils';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter, DefaultizedProps } from '../../lib/createPropsGetter';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { isDarkTheme, isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { isIE11 } from '../../lib/client';\n\nimport { globalClasses, styles } from './Link.styles';\nimport { LinkIcon } from './LinkIcon';\n\nexport interface LinkProps\n extends Pick<AriaAttributes, 'aria-label'>,\n CommonProps,\n Override<\n React.AnchorHTMLAttributes<HTMLAnchorElement>,\n {\n /**\n * Отключенное состояние.\n */\n disabled?: boolean;\n /**\n * HTML-атрибут `href`.\n */\n href?: string;\n /**\n * Добавляет ссылке иконку слева.\n */\n icon?: React.ReactElement;\n /**\n * Добавляет ссылке иконку справа.\n */\n rightIcon?: React.ReactElement;\n /**\n * Тема ссылки.\n */\n use?: 'default' | 'success' | 'danger' | 'grayed';\n /**\n * @ignore\n */\n _button?: boolean;\n /**\n * @ignore\n */\n _buttonOpened?: boolean;\n /**\n * HTML-атрибут `tabindex`.\n */\n tabIndex?: number;\n /**\n * Переводит ссылку в состояние загрузки.\n */\n loading?: boolean;\n /**\n * HTML-событие `onclick`.\n */\n onClick?: (event: React.MouseEvent<HTMLAnchorElement>) => void;\n\n /**\n * Обычный объект с переменными темы.\n * Он будет объединён с темой из контекста.\n */\n theme?: ThemeIn;\n /**\n * Компонент, используемый в качестве корневого узла.\n * @ignore\n */\n as?: React.ElementType | keyof React.ReactHTML;\n /**\n * @ignore\n */\n focused?: boolean;\n }\n > {}\n\nexport interface LinkState {\n focusedByTab: boolean;\n}\n\nexport const LinkDataTids = {\n root: 'Link__root',\n} as const;\n\ntype DefaultProps = Required<Pick<LinkProps, 'href' | 'use' | 'as'>>;\ntype DefaultizedLinkProps = DefaultizedProps<LinkProps, DefaultProps>;\n\n/**\n * Элемент ссылки из HTML.\n */\n@rootNode\nexport class Link extends React.Component<LinkProps, LinkState> {\n public static __KONTUR_REACT_UI__ = 'Link';\n\n public static propTypes = {\n disabled: PropTypes.bool,\n\n href: PropTypes.string,\n\n icon: PropTypes.node,\n\n use: PropTypes.oneOf(['default', 'success', 'danger', 'grayed']),\n };\n\n public static defaultProps: DefaultProps = {\n href: '',\n use: 'default',\n as: 'a',\n };\n\n private getProps = createPropsGetter(Link.defaultProps);\n\n public state: LinkState = {\n focusedByTab: false,\n };\n\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = this.props.theme ? ThemeFactory.create(this.props.theme as Theme, theme) : theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.getProps()}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain = (props: CommonWrapperRestProps<DefaultizedLinkProps>) => {\n const {\n disabled,\n href,\n icon,\n rightIcon,\n use,\n loading,\n _button,\n _buttonOpened,\n rel: relOrigin,\n as: Component,\n focused = false,\n ...rest\n } = props;\n const _isTheme2022 = isTheme2022(this.theme);\n\n let arrow = null;\n if (_button) {\n arrow = <span className={styles.arrow()} />;\n }\n\n let rel = relOrigin;\n if (typeof rel === 'undefined' && href) {\n rel = `noopener${isExternalLink(href) ? ' noreferrer' : ''}`;\n }\n\n const isFocused = !disabled && (this.state.focusedByTab || focused);\n\n const leftIconElement = icon && <LinkIcon icon={icon} loading={loading} position=\"left\" />;\n const rightIconElement = rightIcon && (\n <LinkIcon hasBothIcons={!!icon && !!rightIcon} icon={rightIcon} loading={loading} position=\"right\" />\n );\n\n const linkProps = {\n className: cx(\n styles.useRoot(),\n use === 'default' && styles.useDefault(this.theme),\n use === 'success' && styles.useSuccess(this.theme),\n use === 'danger' && styles.useDanger(this.theme),\n use === 'grayed' && styles.useGrayed(this.theme),\n !!_button && styles.button(this.theme),\n !!_buttonOpened && styles.buttonOpened(this.theme),\n this.getLinkClassName(isFocused, Boolean(disabled || loading), _isTheme2022),\n ),\n href,\n rel,\n onClick: this.handleClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n tabIndex: disabled || loading ? -1 : this.props.tabIndex,\n };\n\n let child = this.props.children;\n if (_isTheme2022) {\n // lineTextWrapper нужен для реализации transition у подчеркивания\n child = (\n <span\n className={cx(styles.lineTextWrapper(this.theme), {\n [styles.lineTextWrapperFocused(this.theme)]: isFocused,\n })}\n >\n <span\n className={cx(globalClasses.text, {\n [styles.lineText(this.theme)]: !isIE11,\n [styles.lineTextIE11(this.theme)]: isIE11,\n })}\n >\n {this.props.children}\n </span>\n </span>\n );\n }\n\n return (\n <Component data-tid={LinkDataTids.root} {...rest} {...linkProps}>\n {leftIconElement}\n {child}\n {rightIconElement}\n {arrow}\n </Component>\n );\n };\n\n private handleFocus = () => {\n if (!this.props.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n }\n };\n\n private handleBlur = () => {\n this.setState({ focusedByTab: false });\n };\n\n private handleClick = (event: React.MouseEvent<HTMLAnchorElement>) => {\n const { onClick, disabled, loading } = this.props;\n const href = this.getProps().href;\n if (!href) {\n event.preventDefault();\n }\n if (onClick && !disabled && !loading) {\n onClick(event);\n }\n };\n\n private getLinkClassName(focused: boolean, disabled: boolean, _isTheme2022: boolean): string {\n const { use } = this.getProps();\n const isBorderBottom = parseInt(this.theme.linkLineBorderBottomWidth) > 0;\n const isFocused = focused && !disabled;\n\n return !isBorderBottom\n ? cx(\n styles.root(this.theme),\n isFocused && styles.focus(this.theme),\n disabled && styles.disabled(this.theme),\n use === 'grayed' && focused && styles.useGrayedFocus(this.theme),\n )\n : cx(\n styles.lineRoot(),\n disabled && styles.disabled(this.theme),\n disabled && _isTheme2022 && isDarkTheme(this.theme) && styles.disabledDark22Theme(this.theme),\n isFocused && use === 'default' && styles.lineFocus(this.theme),\n isFocused && use === 'success' && styles.lineFocusSuccess(this.theme),\n isFocused && use === 'danger' && styles.lineFocusDanger(this.theme),\n isFocused && use === 'grayed' && styles.lineFocusGrayed(this.theme),\n );\n }\n}\n"]}
|
|
@@ -13,9 +13,13 @@ export interface LinkProps extends Pick<AriaAttributes, 'aria-label'>, CommonPro
|
|
|
13
13
|
*/
|
|
14
14
|
href?: string;
|
|
15
15
|
/**
|
|
16
|
-
* Добавляет ссылке
|
|
16
|
+
* Добавляет ссылке иконку слева.
|
|
17
17
|
*/
|
|
18
|
-
icon?: React.ReactElement
|
|
18
|
+
icon?: React.ReactElement;
|
|
19
|
+
/**
|
|
20
|
+
* Добавляет ссылке иконку справа.
|
|
21
|
+
*/
|
|
22
|
+
rightIcon?: React.ReactElement;
|
|
19
23
|
/**
|
|
20
24
|
* Тема ссылки.
|
|
21
25
|
*/
|
package/components/Link/Link.md
CHANGED
|
@@ -21,9 +21,14 @@ import { Gapped } from '@skbkontur/react-ui';
|
|
|
21
21
|
Пример ссылки с иконкой.
|
|
22
22
|
|
|
23
23
|
```jsx harmony
|
|
24
|
-
import
|
|
24
|
+
import { Gapped } from '@skbkontur/react-ui';
|
|
25
|
+
import { CheckAIcon16Light } from '@skbkontur/icons/CheckAIcon16Light';
|
|
25
26
|
|
|
26
|
-
<
|
|
27
|
+
<Gapped gap={20}>
|
|
28
|
+
<Link icon={<CheckAIcon16Light />}>Ссылка с иконкой слева</Link>
|
|
29
|
+
<Link icon={<CheckAIcon16Light />} rightIcon={<CheckAIcon16Light />}>Ссылка с двумя иконками</Link>
|
|
30
|
+
<Link rightIcon={<CheckAIcon16Light />}>Ссылка с иконкой справа</Link>
|
|
31
|
+
</Gapped>
|
|
27
32
|
```
|
|
28
33
|
|
|
29
34
|
Пример ссылок ведущих на внешние ресурсы.
|
|
@@ -49,20 +54,20 @@ import { Gapped } from '@skbkontur/react-ui';
|
|
|
49
54
|
|
|
50
55
|
Ссылка в состоянии загрузки.
|
|
51
56
|
|
|
52
|
-
**Поведение**:
|
|
53
|
-
|
|
54
|
-
Если у ссылки есть иконка, она заменяется на спиннер.
|
|
57
|
+
**Поведение**: если у ссылки есть иконка, она заменяется на спиннер, когда иконки две заменяется только левая.
|
|
55
58
|
|
|
56
59
|
```jsx harmony
|
|
57
60
|
import { Gapped, Button } from '@skbkontur/react-ui';
|
|
58
|
-
import
|
|
61
|
+
import { CheckAIcon16Light } from '@skbkontur/icons/CheckAIcon16Light';
|
|
59
62
|
|
|
60
63
|
const [isLoading, setIsLoading] = React.useState(false);
|
|
61
64
|
|
|
62
65
|
<Gapped vertical gap={15}>
|
|
63
66
|
<Button onClick={() => setIsLoading(!isLoading)}>{isLoading ? "Прекратить загрузку!" : "Начать загрузку!"}</Button>
|
|
64
67
|
<Gapped gap={20}>
|
|
65
|
-
<Link loading={isLoading} icon={<
|
|
68
|
+
<Link loading={isLoading} icon={<CheckAIcon16Light />}>С иконкой слева</Link>
|
|
69
|
+
<Link loading={isLoading} icon={<CheckAIcon16Light />} rightIcon={<CheckAIcon16Light />}>С двумя иконками</Link>
|
|
70
|
+
<Link loading={isLoading} rightIcon={<CheckAIcon16Light />}>С иконкой справа</Link>
|
|
66
71
|
<Link loading={isLoading}>Без иконки</Link>
|
|
67
72
|
</Gapped>
|
|
68
73
|
</Gapped>
|
|
@@ -92,7 +97,7 @@ import { Link, Gapped } from '@skbkontur/react-ui';
|
|
|
92
97
|
|
|
93
98
|
```jsx harmony
|
|
94
99
|
import { Toast, Button } from "@skbkontur/react-ui";
|
|
95
|
-
import {
|
|
100
|
+
import { CopyIcon16Regular } from "@skbkontur/icons/CopyIcon16Regular"
|
|
96
101
|
|
|
97
102
|
const textDecorationStyles = {
|
|
98
103
|
linkLineBorderBottomWidth: '0',
|
|
@@ -136,7 +141,7 @@ const renderExampleRow = (title, styles, index) => {
|
|
|
136
141
|
<td style={tdStyle}>
|
|
137
142
|
<div style={{display: 'flex'}}>
|
|
138
143
|
<div style={{width: '80%', whiteSpace: 'pre-line'}}>{stringify(styles).replace(/, /g, '\n')}</div>
|
|
139
|
-
<Button icon={<
|
|
144
|
+
<Button icon={<CopyIcon16Regular />} use={'text'} onClick={() => copyStyles(styles)}/>
|
|
140
145
|
</div>
|
|
141
146
|
</td>
|
|
142
147
|
</tr>
|
|
@@ -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, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21, _templateObject22, _templateObject23, _templateObject24, _templateObject25;
|
|
3
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21, _templateObject22, _templateObject23, _templateObject24, _templateObject25, _templateObject26, _templateObject27;
|
|
4
4
|
|
|
5
5
|
import { css, keyframes, memoizeStyle, prefix } from "../../../lib/theming/Emotion";
|
|
6
6
|
import { linkMixin, linkDisabledMixin, linkUseColorsMixin, linkUseLineHovered } from "../Link.mixins";
|
|
@@ -86,7 +86,13 @@ export var styles = memoizeStyle({
|
|
|
86
86
|
disabledDark22Theme: function disabledDark22Theme(t) {
|
|
87
87
|
return css(_templateObject24 || (_templateObject24 = _taggedTemplateLiteralLoose(["\n .", " {\n ", "\n }\n "])), globalClasses.text, linkUseLineHovered(t.linkLineHoverBorderBottomStyle));
|
|
88
88
|
},
|
|
89
|
-
icon: function icon(
|
|
90
|
-
return css(_templateObject25 || (_templateObject25 = _taggedTemplateLiteralLoose(["\n display: inline-block;\n
|
|
89
|
+
icon: function icon() {
|
|
90
|
+
return css(_templateObject25 || (_templateObject25 = _taggedTemplateLiteralLoose(["\n display: inline-block;\n "])));
|
|
91
|
+
},
|
|
92
|
+
iconLeft: function iconLeft(t) {
|
|
93
|
+
return css(_templateObject26 || (_templateObject26 = _taggedTemplateLiteralLoose(["\n margin-right: ", ";\n "])), t.linkIconMarginRight);
|
|
94
|
+
},
|
|
95
|
+
iconRight: function iconRight(t) {
|
|
96
|
+
return css(_templateObject27 || (_templateObject27 = _taggedTemplateLiteralLoose(["\n margin-left: ", ";\n "])), t.linkIconMarginLeft);
|
|
91
97
|
}
|
|
92
98
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Link.styles.ts"],"names":["css","keyframes","memoizeStyle","prefix","linkMixin","linkDisabledMixin","linkUseColorsMixin","linkUseLineHovered","globalClasses","text","line","oldLineText","t","delay","parseFloat","linkLineBorderBottomOpacity","linkLineBorderBottomStyle","linkLineBorderBottomWidth","styles","root","linkHoverTextDecoration","lineRoot","lineTextWrapper","linkLineBorderBottomColor","transitionDuration","transitionTimingFunction","lineTextWrapperFocused","lineText","lineTextIE11","lineFocus","linkHoverColor","linkLineHoverBorderBottomStyle","lineFocusSuccess","linkSuccessHoverColor","lineFocusDanger","linkDangerHoverColor","lineFocusGrayed","linkGrayedHoverColor","button","linkButtonLineHeight","linkButtonPaddingX","buttonOpened","btnDefaultActiveBg","arrow","useRoot","useDefault","linkColor","linkActiveColor","useSuccess","linkSuccessColor","linkSuccessActiveColor","useDanger","linkDangerColor","linkDangerActiveColor","useGrayed","linkGrayedColor","linkGrayedActiveColor","useGrayedFocus","linkDisabledColor","focus","disabled","disabledDark22Theme","icon","linkIconMarginRight"],"mappings":"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","sourcesContent":["import { css, keyframes, memoizeStyle, prefix } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nimport { linkMixin, linkDisabledMixin, linkUseColorsMixin, linkUseLineHovered } from './Link.mixins';\n\nexport const globalClasses = prefix('link')({\n text: 'text',\n});\n\nconst line = keyframes`\n 0% {\n border-bottom-color: inherit;\n }\n 100% {\n border-bottom-color: transparent;\n }\n`;\n\nconst oldLineText = function (t: Theme) {\n const delay = parseFloat(t.linkLineBorderBottomOpacity) - 1;\n return css`\n border-bottom-style: ${t.linkLineBorderBottomStyle};\n border-bottom-width: ${t.linkLineBorderBottomWidth};\n animation: ${line} 1s linear !important; // override creevey\n animation-play-state: paused !important;\n animation-delay: ${delay}s !important;\n animation-fill-mode: forwards !important;\n `;\n};\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n return css`\n ${linkMixin(t.linkHoverTextDecoration)};\n position: relative;\n `;\n },\n\n lineRoot() {\n return css`\n border-radius: 1px;\n outline: none;\n text-decoration: none;\n &:hover .${globalClasses.text} {\n border-bottom-color: currentColor !important;\n }\n `;\n },\n\n lineTextWrapper(t: Theme) {\n // При hover'е подчеркивание из прозрачного переходит в currentColor.\n // За счет наложения этого цвета на подчеркивание lineText (currentColor с половинной прозрачностью)\n // достигается эффект перехода currentColor с половинной прозрачностью до currentColor.\n\n // Планировалось добавить transition и color-mix(in srgb, currentColor 50%, transparent) в lineText.\n // Однако, в chrome и edge сочетание transition, color-mix и currentColor вызывает моргание при transition.\n return css`\n @supports (border-bottom-color: ${t.linkLineBorderBottomColor}) {\n transition: border-bottom-color ${t.transitionDuration} ${t.transitionTimingFunction};\n border-bottom-style: ${t.linkLineBorderBottomStyle};\n border-bottom-width: ${t.linkLineBorderBottomWidth};\n border-bottom-color: transparent;\n }\n `;\n },\n\n lineTextWrapperFocused(t: Theme) {\n return css`\n @supports (border-bottom-color: ${t.linkLineBorderBottomColor}) {\n border-bottom-color: currentColor;\n }\n `;\n },\n\n lineText(t: Theme) {\n return css`\n @supports (border-bottom-color: ${t.linkLineBorderBottomColor}) {\n border-bottom-style: ${t.linkLineBorderBottomStyle};\n border-bottom-width: ${t.linkLineBorderBottomWidth};\n border-bottom-color: ${t.linkLineBorderBottomColor};\n }\n @supports not (border-bottom-color: ${t.linkLineBorderBottomColor}) {\n ${oldLineText(t)};\n }\n `;\n },\n\n lineTextIE11(t: Theme) {\n return css`\n ${oldLineText(t)};\n `;\n },\n\n lineFocus(t: Theme) {\n return css`\n color: ${t.linkHoverColor};\n .${globalClasses.text} {\n ${linkUseLineHovered(t.linkLineHoverBorderBottomStyle)}\n }\n `;\n },\n\n lineFocusSuccess(t: Theme) {\n return css`\n color: ${t.linkSuccessHoverColor} !important;\n .${globalClasses.text} {\n ${linkUseLineHovered(t.linkLineHoverBorderBottomStyle)}\n }\n `;\n },\n\n lineFocusDanger(t: Theme) {\n return css`\n color: ${t.linkDangerHoverColor} !important;\n .${globalClasses.text} {\n ${linkUseLineHovered(t.linkLineHoverBorderBottomStyle)}\n }\n `;\n },\n\n lineFocusGrayed(t: Theme) {\n return css`\n color: ${t.linkGrayedHoverColor} !important;\n .${globalClasses.text} {\n ${linkUseLineHovered(t.linkLineHoverBorderBottomStyle)}\n }\n `;\n },\n\n button(t: Theme) {\n return css`\n display: inline-block;\n line-height: ${t.linkButtonLineHeight};\n padding-left: ${t.linkButtonPaddingX};\n padding-right: ${t.linkButtonPaddingX};\n `;\n },\n\n buttonOpened(t: Theme) {\n return css`\n background: ${t.btnDefaultActiveBg};\n `;\n },\n\n arrow() {\n return css`\n border: 4px solid transparent;\n border-bottom-width: 0;\n border-top-color: #a0a0a0;\n display: inline-block;\n margin-bottom: 3px;\n margin-left: 3px;\n vertical-align: middle;\n `;\n },\n\n useRoot() {\n return css`\n border-bottom-color: currentColor;\n `;\n },\n useDefault(t: Theme) {\n return css`\n ${linkUseColorsMixin(t.linkColor, t.linkHoverColor, t.linkActiveColor)};\n .${globalClasses.text} {\n :hover {\n ${linkUseLineHovered(t.linkLineHoverBorderBottomStyle)}\n }\n }\n `;\n },\n\n useSuccess(t: Theme) {\n return css`\n ${linkUseColorsMixin(t.linkSuccessColor, t.linkSuccessHoverColor, t.linkSuccessActiveColor)};\n .${globalClasses.text} {\n :hover {\n ${linkUseLineHovered(t.linkLineHoverBorderBottomStyle)}\n }\n }\n `;\n },\n\n useDanger(t: Theme) {\n return css`\n ${linkUseColorsMixin(t.linkDangerColor, t.linkDangerHoverColor, t.linkDangerActiveColor)};\n .${globalClasses.text} {\n :hover {\n ${linkUseLineHovered(t.linkLineHoverBorderBottomStyle)}\n }\n }\n `;\n },\n\n useGrayed(t: Theme) {\n return css`\n ${linkUseColorsMixin(t.linkGrayedColor, t.linkGrayedHoverColor, t.linkGrayedActiveColor)};\n .${globalClasses.text} {\n :hover {\n ${linkUseLineHovered(t.linkLineHoverBorderBottomStyle)}\n }\n }\n `;\n },\n\n useGrayedFocus(t: Theme) {\n return css`\n color: ${t.linkDisabledColor};\n `;\n },\n\n focus(t: Theme) {\n return css`\n text-decoration: ${t.linkHoverTextDecoration};\n `;\n },\n\n disabled(t: Theme) {\n return css`\n ${linkDisabledMixin()};\n\n color: ${t.linkDisabledColor} !important; // override root color\n\n &:hover {\n color: ${t.linkDisabledColor};\n }\n `;\n },\n\n disabledDark22Theme(t: Theme) {\n return css`\n .${globalClasses.text} {\n ${linkUseLineHovered(t.linkLineHoverBorderBottomStyle)}\n }\n `;\n },\n\n icon(t: Theme) {\n return css`\n display: inline-block;\n margin-right: ${t.linkIconMarginRight};\n `;\n },\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["Link.styles.ts"],"names":["css","keyframes","memoizeStyle","prefix","linkMixin","linkDisabledMixin","linkUseColorsMixin","linkUseLineHovered","globalClasses","text","line","oldLineText","t","delay","parseFloat","linkLineBorderBottomOpacity","linkLineBorderBottomStyle","linkLineBorderBottomWidth","styles","root","linkHoverTextDecoration","lineRoot","lineTextWrapper","linkLineBorderBottomColor","transitionDuration","transitionTimingFunction","lineTextWrapperFocused","lineText","lineTextIE11","lineFocus","linkHoverColor","linkLineHoverBorderBottomStyle","lineFocusSuccess","linkSuccessHoverColor","lineFocusDanger","linkDangerHoverColor","lineFocusGrayed","linkGrayedHoverColor","button","linkButtonLineHeight","linkButtonPaddingX","buttonOpened","btnDefaultActiveBg","arrow","useRoot","useDefault","linkColor","linkActiveColor","useSuccess","linkSuccessColor","linkSuccessActiveColor","useDanger","linkDangerColor","linkDangerActiveColor","useGrayed","linkGrayedColor","linkGrayedActiveColor","useGrayedFocus","linkDisabledColor","focus","disabled","disabledDark22Theme","icon","iconLeft","linkIconMarginRight","iconRight","linkIconMarginLeft"],"mappings":"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","sourcesContent":["import { css, keyframes, memoizeStyle, prefix } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nimport { linkMixin, linkDisabledMixin, linkUseColorsMixin, linkUseLineHovered } from './Link.mixins';\n\nexport const globalClasses = prefix('link')({\n text: 'text',\n});\n\nconst line = keyframes`\n 0% {\n border-bottom-color: inherit;\n }\n 100% {\n border-bottom-color: transparent;\n }\n`;\n\nconst oldLineText = function (t: Theme) {\n const delay = parseFloat(t.linkLineBorderBottomOpacity) - 1;\n return css`\n border-bottom-style: ${t.linkLineBorderBottomStyle};\n border-bottom-width: ${t.linkLineBorderBottomWidth};\n animation: ${line} 1s linear !important; // override creevey\n animation-play-state: paused !important;\n animation-delay: ${delay}s !important;\n animation-fill-mode: forwards !important;\n `;\n};\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n return css`\n ${linkMixin(t.linkHoverTextDecoration)};\n position: relative;\n `;\n },\n\n lineRoot() {\n return css`\n border-radius: 1px;\n outline: none;\n text-decoration: none;\n &:hover .${globalClasses.text} {\n border-bottom-color: currentColor !important;\n }\n `;\n },\n\n lineTextWrapper(t: Theme) {\n // При hover'е подчеркивание из прозрачного переходит в currentColor.\n // За счет наложения этого цвета на подчеркивание lineText (currentColor с половинной прозрачностью)\n // достигается эффект перехода currentColor с половинной прозрачностью до currentColor.\n\n // Планировалось добавить transition и color-mix(in srgb, currentColor 50%, transparent) в lineText.\n // Однако, в chrome и edge сочетание transition, color-mix и currentColor вызывает моргание при transition.\n return css`\n @supports (border-bottom-color: ${t.linkLineBorderBottomColor}) {\n transition: border-bottom-color ${t.transitionDuration} ${t.transitionTimingFunction};\n border-bottom-style: ${t.linkLineBorderBottomStyle};\n border-bottom-width: ${t.linkLineBorderBottomWidth};\n border-bottom-color: transparent;\n }\n `;\n },\n\n lineTextWrapperFocused(t: Theme) {\n return css`\n @supports (border-bottom-color: ${t.linkLineBorderBottomColor}) {\n border-bottom-color: currentColor;\n }\n `;\n },\n\n lineText(t: Theme) {\n return css`\n @supports (border-bottom-color: ${t.linkLineBorderBottomColor}) {\n border-bottom-style: ${t.linkLineBorderBottomStyle};\n border-bottom-width: ${t.linkLineBorderBottomWidth};\n border-bottom-color: ${t.linkLineBorderBottomColor};\n }\n @supports not (border-bottom-color: ${t.linkLineBorderBottomColor}) {\n ${oldLineText(t)};\n }\n `;\n },\n\n lineTextIE11(t: Theme) {\n return css`\n ${oldLineText(t)};\n `;\n },\n\n lineFocus(t: Theme) {\n return css`\n color: ${t.linkHoverColor};\n .${globalClasses.text} {\n ${linkUseLineHovered(t.linkLineHoverBorderBottomStyle)}\n }\n `;\n },\n\n lineFocusSuccess(t: Theme) {\n return css`\n color: ${t.linkSuccessHoverColor} !important;\n .${globalClasses.text} {\n ${linkUseLineHovered(t.linkLineHoverBorderBottomStyle)}\n }\n `;\n },\n\n lineFocusDanger(t: Theme) {\n return css`\n color: ${t.linkDangerHoverColor} !important;\n .${globalClasses.text} {\n ${linkUseLineHovered(t.linkLineHoverBorderBottomStyle)}\n }\n `;\n },\n\n lineFocusGrayed(t: Theme) {\n return css`\n color: ${t.linkGrayedHoverColor} !important;\n .${globalClasses.text} {\n ${linkUseLineHovered(t.linkLineHoverBorderBottomStyle)}\n }\n `;\n },\n\n button(t: Theme) {\n return css`\n display: inline-block;\n line-height: ${t.linkButtonLineHeight};\n padding-left: ${t.linkButtonPaddingX};\n padding-right: ${t.linkButtonPaddingX};\n `;\n },\n\n buttonOpened(t: Theme) {\n return css`\n background: ${t.btnDefaultActiveBg};\n `;\n },\n\n arrow() {\n return css`\n border: 4px solid transparent;\n border-bottom-width: 0;\n border-top-color: #a0a0a0;\n display: inline-block;\n margin-bottom: 3px;\n margin-left: 3px;\n vertical-align: middle;\n `;\n },\n\n useRoot() {\n return css`\n border-bottom-color: currentColor;\n `;\n },\n useDefault(t: Theme) {\n return css`\n ${linkUseColorsMixin(t.linkColor, t.linkHoverColor, t.linkActiveColor)};\n .${globalClasses.text} {\n :hover {\n ${linkUseLineHovered(t.linkLineHoverBorderBottomStyle)}\n }\n }\n `;\n },\n\n useSuccess(t: Theme) {\n return css`\n ${linkUseColorsMixin(t.linkSuccessColor, t.linkSuccessHoverColor, t.linkSuccessActiveColor)};\n .${globalClasses.text} {\n :hover {\n ${linkUseLineHovered(t.linkLineHoverBorderBottomStyle)}\n }\n }\n `;\n },\n\n useDanger(t: Theme) {\n return css`\n ${linkUseColorsMixin(t.linkDangerColor, t.linkDangerHoverColor, t.linkDangerActiveColor)};\n .${globalClasses.text} {\n :hover {\n ${linkUseLineHovered(t.linkLineHoverBorderBottomStyle)}\n }\n }\n `;\n },\n\n useGrayed(t: Theme) {\n return css`\n ${linkUseColorsMixin(t.linkGrayedColor, t.linkGrayedHoverColor, t.linkGrayedActiveColor)};\n .${globalClasses.text} {\n :hover {\n ${linkUseLineHovered(t.linkLineHoverBorderBottomStyle)}\n }\n }\n `;\n },\n\n useGrayedFocus(t: Theme) {\n return css`\n color: ${t.linkDisabledColor};\n `;\n },\n\n focus(t: Theme) {\n return css`\n text-decoration: ${t.linkHoverTextDecoration};\n `;\n },\n\n disabled(t: Theme) {\n return css`\n ${linkDisabledMixin()};\n\n color: ${t.linkDisabledColor} !important; // override root color\n\n &:hover {\n color: ${t.linkDisabledColor};\n }\n `;\n },\n\n disabledDark22Theme(t: Theme) {\n return css`\n .${globalClasses.text} {\n ${linkUseLineHovered(t.linkLineHoverBorderBottomStyle)}\n }\n `;\n },\n\n icon() {\n return css`\n display: inline-block;\n `;\n },\n\n iconLeft(t: Theme) {\n return css`\n margin-right: ${t.linkIconMarginRight};\n `;\n },\n\n iconRight(t: Theme) {\n return css`\n margin-left: ${t.linkIconMarginLeft};\n `;\n },\n});\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React, { useContext } from 'react';
|
|
2
|
+
import { cx } from "../../../lib/theming/Emotion";
|
|
3
|
+
import { ThemeContext } from "../../../lib/theming/ThemeContext";
|
|
4
|
+
import { Spinner } from "../../Spinner";
|
|
5
|
+
import { styles } from "../Link.styles";
|
|
6
|
+
export var LinkIcon = function LinkIcon(_ref) {
|
|
7
|
+
var icon = _ref.icon,
|
|
8
|
+
loading = _ref.loading,
|
|
9
|
+
hasBothIcons = _ref.hasBothIcons,
|
|
10
|
+
position = _ref.position;
|
|
11
|
+
var theme = useContext(ThemeContext);
|
|
12
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
13
|
+
className: cx(styles.icon(), position === 'left' && styles.iconLeft(theme), position === 'right' && styles.iconRight(theme))
|
|
14
|
+
}, loading && !hasBothIcons ? /*#__PURE__*/React.createElement(Spinner, {
|
|
15
|
+
caption: null,
|
|
16
|
+
dimmed: true,
|
|
17
|
+
inline: true
|
|
18
|
+
}) : icon);
|
|
19
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["LinkIcon.tsx"],"names":["React","useContext","cx","ThemeContext","Spinner","styles","LinkIcon","icon","loading","hasBothIcons","position","theme","iconLeft","iconRight"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;;AAEA,SAASC,EAAT,QAAmB,2BAAnB;AACA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAASC,OAAT,QAAwB,YAAxB;;;AAGA,SAASC,MAAT,QAAuB,eAAvB;;;;;;;AAOA,OAAO,IAAMC,QAAQ,GAAG,SAAXA,QAAW,OAA8D,KAA3DC,IAA2D,QAA3DA,IAA2D,CAArDC,OAAqD,QAArDA,OAAqD,CAA5CC,YAA4C,QAA5CA,YAA4C,CAA9BC,QAA8B,QAA9BA,QAA8B;AACpF,MAAMC,KAAK,GAAGV,UAAU,CAACE,YAAD,CAAxB;;AAEA;AACE;AACE,MAAA,SAAS,EAAED,EAAE;AACXG,MAAAA,MAAM,CAACE,IAAP,EADW;AAEXG,MAAAA,QAAQ,KAAK,MAAb,IAAuBL,MAAM,CAACO,QAAP,CAAgBD,KAAhB,CAFZ;AAGXD,MAAAA,QAAQ,KAAK,OAAb,IAAwBL,MAAM,CAACQ,SAAP,CAAiBF,KAAjB,CAHb,CADf;;;AAOGH,IAAAA,OAAO,IAAI,CAACC,YAAZ,gBAA2B,oBAAC,OAAD,IAAS,OAAO,EAAE,IAAlB,EAAwB,MAAM,MAA9B,EAA+B,MAAM,MAArC,GAA3B,GAAsEF,IAPzE,CADF;;;AAWD,CAdM","sourcesContent":["import React, { useContext } from 'react';\n\nimport { cx } from '../../lib/theming/Emotion';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Spinner } from '../Spinner';\n\nimport { LinkProps } from './Link';\nimport { styles } from './Link.styles';\n\nexport interface LinkIconProps extends Pick<LinkProps, 'icon' | 'loading'> {\n position?: 'left' | 'right';\n hasBothIcons?: boolean;\n}\n\nexport const LinkIcon = ({ icon, loading, hasBothIcons, position }: LinkIconProps) => {\n const theme = useContext(ThemeContext);\n\n return (\n <span\n className={cx(\n styles.icon(),\n position === 'left' && styles.iconLeft(theme),\n position === 'right' && styles.iconRight(theme),\n )}\n >\n {loading && !hasBothIcons ? <Spinner caption={null} dimmed inline /> : icon}\n </span>\n );\n};\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { LinkProps } from './Link';
|
|
2
|
+
export interface LinkIconProps extends Pick<LinkProps, 'icon' | 'loading'> {
|
|
3
|
+
position?: 'left' | 'right';
|
|
4
|
+
hasBothIcons?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare const LinkIcon: ({ icon, loading, hasBothIcons, position }: LinkIconProps) => JSX.Element;
|
|
@@ -14,6 +14,7 @@ import { fixClickFocusIE } from "../../../lib/events/fixClickFocusIE";
|
|
|
14
14
|
import { CommonWrapper } from "../../CommonWrapper";
|
|
15
15
|
import { responsiveLayout } from "../../../components/ResponsiveLayout/decorator";
|
|
16
16
|
import { rootNode } from "../../../lib/rootNode";
|
|
17
|
+
import { ReactUIFeatureFlagsContext, getFullReactUIFlagsContext } from "../../../lib/featureFlagsContext";
|
|
17
18
|
import { ComboBoxRequestStatus } from "../CustomComboBoxTypes";
|
|
18
19
|
import { reducer } from "../CustomComboBoxReducer";
|
|
19
20
|
import { ComboBoxView } from "../ComboBoxView";
|
|
@@ -430,10 +431,13 @@ export var CustomComboBox = responsiveLayout(_class = rootNode(_class = (_temp =
|
|
|
430
431
|
_this3.inputLikeText = inputLikeText;
|
|
431
432
|
}
|
|
432
433
|
};
|
|
433
|
-
return /*#__PURE__*/React.createElement(
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
434
|
+
return /*#__PURE__*/React.createElement(ReactUIFeatureFlagsContext.Consumer, null, function (flags) {
|
|
435
|
+
_this3.featureFlags = getFullReactUIFlagsContext(flags);
|
|
436
|
+
return /*#__PURE__*/React.createElement(CommonWrapper, _this3.props, /*#__PURE__*/React.createElement(ComboBoxView, _extends({}, viewProps, {
|
|
437
|
+
size: _this3.props.size,
|
|
438
|
+
ref: _this3.setRootNode
|
|
439
|
+
})));
|
|
440
|
+
});
|
|
437
441
|
};
|
|
438
442
|
|
|
439
443
|
_proto.componentDidMount = function componentDidMount() {
|
|
@@ -454,7 +458,8 @@ export var CustomComboBox = responsiveLayout(_class = rootNode(_class = (_temp =
|
|
|
454
458
|
this.dispatch({
|
|
455
459
|
type: 'DidUpdate',
|
|
456
460
|
prevProps: prevProps,
|
|
457
|
-
prevState: prevState
|
|
461
|
+
prevState: prevState,
|
|
462
|
+
fixValueChange: this.featureFlags.comboBoxAllowValueChangeInEditingState
|
|
458
463
|
}, false);
|
|
459
464
|
}
|
|
460
465
|
/**
|