@skbkontur/react-ui 6.1.4-05b51.0 → 6.1.4-35aaa.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/Button/Button.classes.d.ts +8 -0
- package/components/Button/Button.classes.js +10 -0
- package/components/Button/Button.classes.js.map +1 -0
- package/components/Button/Button.mixins.js +1 -1
- package/components/Button/Button.mixins.js.map +1 -1
- package/components/Button/Button.styles.d.ts +2 -8
- package/components/Button/Button.styles.js +3 -9
- package/components/Button/Button.styles.js.map +1 -1
- package/components/Calendar/Calendar.d.ts +2 -8
- package/components/Calendar/Calendar.js +2 -7
- package/components/Calendar/Calendar.js.map +1 -1
- package/components/Calendar/CalendarDay.js +1 -1
- package/components/Calendar/CalendarDay.js.map +1 -1
- package/components/Calendar/MonthView.js +1 -1
- package/components/Calendar/MonthView.js.map +1 -1
- package/components/Calendar/MonthViewModel.js +1 -2
- package/components/Calendar/MonthViewModel.js.map +1 -1
- package/components/Calendar/tids.d.ts +7 -0
- package/components/Calendar/tids.js +8 -0
- package/components/Calendar/tids.js.map +1 -0
- package/components/Group/Group.js +2 -3
- package/components/Group/Group.js.map +1 -1
- package/components/Input/Input.d.ts +1 -1
- package/components/Input/Input.js.map +1 -1
- package/components/MenuItem/MenuItem.mixins.d.ts +1 -0
- package/components/MenuItem/MenuItem.mixins.js +6 -1
- package/components/MenuItem/MenuItem.mixins.js.map +1 -1
- package/components/MenuItem/MenuItem.styles.d.ts +2 -1
- package/components/MenuItem/MenuItem.styles.js +2 -7
- package/components/MenuItem/MenuItem.styles.js.map +1 -1
- package/components/MiniModal/MiniModal.d.ts +2 -7
- package/components/MiniModal/MiniModal.js +2 -7
- package/components/MiniModal/MiniModal.js.map +1 -1
- package/components/MiniModal/MiniModalBody.js +1 -1
- package/components/MiniModal/MiniModalBody.js.map +1 -1
- package/components/MiniModal/MiniModalFooter.js +1 -1
- package/components/MiniModal/MiniModalFooter.js.map +1 -1
- package/components/MiniModal/MiniModalHeader.js +1 -1
- package/components/MiniModal/MiniModalHeader.js.map +1 -1
- package/components/MiniModal/MiniModalIndent.js +1 -1
- package/components/MiniModal/MiniModalIndent.js.map +1 -1
- package/components/MiniModal/tids.d.ts +7 -0
- package/components/MiniModal/tids.js +8 -0
- package/components/MiniModal/tids.js.map +1 -0
- package/components/Modal/Modal.constants.d.ts +9 -0
- package/components/Modal/Modal.constants.js +10 -0
- package/components/Modal/Modal.constants.js.map +1 -0
- package/components/Modal/Modal.d.ts +2 -10
- package/components/Modal/Modal.js +2 -9
- package/components/Modal/Modal.js.map +1 -1
- package/components/Modal/ModalBody.js +1 -1
- package/components/Modal/ModalBody.js.map +1 -1
- package/components/Modal/ModalClose.js +1 -1
- package/components/Modal/ModalClose.js.map +1 -1
- package/components/Toggle/Toggle.classes.d.ts +8 -0
- package/components/Toggle/Toggle.classes.js +10 -0
- package/components/Toggle/Toggle.classes.js.map +1 -0
- package/components/Toggle/Toggle.mixins.js +1 -1
- package/components/Toggle/Toggle.mixins.js.map +1 -1
- package/components/Toggle/Toggle.styles.d.ts +2 -8
- package/components/Toggle/Toggle.styles.js +3 -9
- package/components/Toggle/Toggle.styles.js.map +1 -1
- package/components/TokenInput/TokenInput.d.ts +7 -3
- package/components/TokenInput/TokenInput.js +0 -1
- package/components/TokenInput/TokenInput.js.map +1 -1
- package/index.d.ts +0 -1
- package/index.js +0 -1
- package/index.js.map +1 -1
- package/internal/Popup/PopupPin.js +8 -6
- package/internal/Popup/PopupPin.js.map +1 -1
- package/internal/themes/BasicTheme.d.ts +162 -34
- package/internal/themes/BasicTheme.js +162 -96
- package/internal/themes/BasicTheme.js.map +1 -1
- package/lib/date/InternalDateValidator.js +1 -2
- package/lib/date/InternalDateValidator.js.map +1 -1
- package/lib/locale/types.d.ts +0 -2
- package/lib/locale/types.js.map +1 -1
- package/lib/utils.d.ts +0 -2
- package/lib/utils.js +0 -1
- package/lib/utils.js.map +1 -1
- package/package.json +1 -9
- package/components/TimePicker/TimeClockIcon.d.ts +0 -3
- package/components/TimePicker/TimeClockIcon.js +0 -11
- package/components/TimePicker/TimeClockIcon.js.map +0 -1
- package/components/TimePicker/TimePicker.d.ts +0 -79
- package/components/TimePicker/TimePicker.js +0 -513
- package/components/TimePicker/TimePicker.js.map +0 -1
- package/components/TimePicker/TimePicker.styles.d.ts +0 -11
- package/components/TimePicker/TimePicker.styles.js +0 -36
- package/components/TimePicker/TimePicker.styles.js.map +0 -1
- package/components/TimePicker/TimePickerItems.d.ts +0 -17
- package/components/TimePicker/TimePickerItems.js +0 -80
- package/components/TimePicker/TimePickerItems.js.map +0 -1
- package/components/TimePicker/TimePickerMobilePopup.d.ts +0 -38
- package/components/TimePicker/TimePickerMobilePopup.js +0 -21
- package/components/TimePicker/TimePickerMobilePopup.js.map +0 -1
- package/components/TimePicker/TimePickerPopup.d.ts +0 -20
- package/components/TimePicker/TimePickerPopup.js +0 -18
- package/components/TimePicker/TimePickerPopup.js.map +0 -1
- package/components/TimePicker/helpers/TimePicker.constants.d.ts +0 -22
- package/components/TimePicker/helpers/TimePicker.constants.js +0 -31
- package/components/TimePicker/helpers/TimePicker.constants.js.map +0 -1
- package/components/TimePicker/helpers/TimePicker.editing.d.ts +0 -23
- package/components/TimePicker/helpers/TimePicker.editing.js +0 -101
- package/components/TimePicker/helpers/TimePicker.editing.js.map +0 -1
- package/components/TimePicker/helpers/TimePicker.layout.d.ts +0 -6
- package/components/TimePicker/helpers/TimePicker.layout.js +0 -49
- package/components/TimePicker/helpers/TimePicker.layout.js.map +0 -1
- package/components/TimePicker/helpers/TimePicker.selection.d.ts +0 -5
- package/components/TimePicker/helpers/TimePicker.selection.js +0 -23
- package/components/TimePicker/helpers/TimePicker.selection.js.map +0 -1
- package/components/TimePicker/helpers/TimePicker.shared.d.ts +0 -47
- package/components/TimePicker/helpers/TimePicker.shared.js +0 -70
- package/components/TimePicker/helpers/TimePicker.shared.js.map +0 -1
- package/components/TimePicker/helpers/TimePicker.value.d.ts +0 -30
- package/components/TimePicker/helpers/TimePicker.value.js +0 -96
- package/components/TimePicker/helpers/TimePicker.value.js.map +0 -1
- package/components/TimePicker/helpers/scrollSelectedItemIntoView.d.ts +0 -4
- package/components/TimePicker/helpers/scrollSelectedItemIntoView.js +0 -24
- package/components/TimePicker/helpers/scrollSelectedItemIntoView.js.map +0 -1
- package/components/TimePicker/helpers/validateTimePicker.d.ts +0 -8
- package/components/TimePicker/helpers/validateTimePicker.js +0 -16
- package/components/TimePicker/helpers/validateTimePicker.js.map +0 -1
- package/components/TimePicker/hooks/useTimePickerDropdown.d.ts +0 -17
- package/components/TimePicker/hooks/useTimePickerDropdown.js +0 -62
- package/components/TimePicker/hooks/useTimePickerDropdown.js.map +0 -1
- package/components/TimePicker/hooks/useTimePickerSelection.d.ts +0 -18
- package/components/TimePicker/hooks/useTimePickerSelection.js +0 -66
- package/components/TimePicker/hooks/useTimePickerSelection.js.map +0 -1
- package/components/TimePicker/hooks/useTimePickerValue.d.ts +0 -18
- package/components/TimePicker/hooks/useTimePickerValue.js +0 -59
- package/components/TimePicker/hooks/useTimePickerValue.js.map +0 -1
- package/components/TimePicker/index.d.ts +0 -2
- package/components/TimePicker/index.js +0 -2
- package/components/TimePicker/index.js.map +0 -1
- package/components/TimePicker/locale/index.d.ts +0 -4
- package/components/TimePicker/locale/index.js +0 -9
- package/components/TimePicker/locale/index.js.map +0 -1
- package/components/TimePicker/locale/locales/en.d.ts +0 -2
- package/components/TimePicker/locale/locales/en.js +0 -5
- package/components/TimePicker/locale/locales/en.js.map +0 -1
- package/components/TimePicker/locale/locales/ru.d.ts +0 -2
- package/components/TimePicker/locale/locales/ru.js +0 -5
- package/components/TimePicker/locale/locales/ru.js.map +0 -1
- package/components/TimePicker/locale/types.d.ts +0 -4
- package/components/TimePicker/locale/types.js +0 -2
- package/components/TimePicker/locale/types.js.map +0 -1
- package/internal/NativeTimeInput/NativeTimeInput.d.ts +0 -16
- package/internal/NativeTimeInput/NativeTimeInput.js +0 -25
- package/internal/NativeTimeInput/NativeTimeInput.js.map +0 -1
- package/internal/NativeTimeInput/NativeTimeInput.styles.d.ts +0 -3
- package/internal/NativeTimeInput/NativeTimeInput.styles.js +0 -15
- package/internal/NativeTimeInput/NativeTimeInput.styles.js.map +0 -1
- package/internal/NativeTimeInput/NativeTimeInput.utils.d.ts +0 -7
- package/internal/NativeTimeInput/NativeTimeInput.utils.js +0 -28
- package/internal/NativeTimeInput/NativeTimeInput.utils.js.map +0 -1
- package/internal/NativeTimeInput/index.d.ts +0 -1
- package/internal/NativeTimeInput/index.js +0 -2
- package/internal/NativeTimeInput/index.js.map +0 -1
- package/internal/TimeInput/TimeFragments.d.ts +0 -15
- package/internal/TimeInput/TimeFragments.js +0 -72
- package/internal/TimeInput/TimeFragments.js.map +0 -1
- package/internal/TimeInput/TimeFragments.styles.d.ts +0 -12
- package/internal/TimeInput/TimeFragments.styles.js +0 -43
- package/internal/TimeInput/TimeFragments.styles.js.map +0 -1
- package/internal/TimeInput/TimeInput.d.ts +0 -22
- package/internal/TimeInput/TimeInput.js +0 -103
- package/internal/TimeInput/TimeInput.js.map +0 -1
- package/internal/TimeInput/TimeInput.styles.d.ts +0 -6
- package/internal/TimeInput/TimeInput.styles.js +0 -21
- package/internal/TimeInput/TimeInput.styles.js.map +0 -1
- package/internal/TimeInput/index.d.ts +0 -1
- package/internal/TimeInput/index.js +0 -2
- package/internal/TimeInput/index.js.map +0 -1
- package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.d.ts +0 -2
- package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.js +0 -20
- package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.js.map +0 -1
- package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.d.ts +0 -2
- package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.js +0 -20
- package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.js.map +0 -1
- package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.d.ts +0 -2
- package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.js +0 -20
- package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MonthViewModel.js","sourceRoot":"","sources":["MonthViewModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"MonthViewModel.js","sourceRoot":"","sources":["MonthViewModel.ts"],"names":[],"mappings":"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","sourcesContent":["import { memo } from '../../lib/memo.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { themeConfig } from './config.js';\nimport { DayCellViewModel } from './DayCellViewModel.js';\n\nconst getCurrentYear = (month: number, year: number) => {\n if (month < 0) {\n return year - Math.ceil(-month / 12);\n }\n\n if (month > 11) {\n return year + Math.floor(month / 12);\n }\n\n return year;\n};\n\nconst getCurrentMonth = (month: number) => {\n if (month < 0) {\n return 12 + (month % 12);\n }\n\n if (month > 11) {\n return month % 12;\n }\n\n return month;\n};\n\nexport class MonthViewModel {\n public static create = memo((month: number, year: number): MonthViewModel => new MonthViewModel(month, year));\n\n public readonly daysCount: number;\n\n public readonly offset: number;\n\n public readonly month: number;\n\n public readonly year: number;\n\n public readonly days: DayCellViewModel[];\n\n // FIXME: shouldbe readonly\n public isLastInYear: boolean;\n\n // FIXME: shouldbe readonly\n public isFirstInYear: boolean;\n\n public getHeight(theme: Theme): number {\n const { DAY_HEIGHT, MONTH_TITLE_OFFSET_HEIGHT, MONTH_BOTTOM_MARGIN, CALENDAR_GRID_ROW_SPACING } =\n themeConfig(theme);\n return getMonthHeight(\n this.daysCount,\n this.offset,\n DAY_HEIGHT,\n MONTH_TITLE_OFFSET_HEIGHT,\n MONTH_BOTTOM_MARGIN,\n CALENDAR_GRID_ROW_SPACING,\n );\n }\n\n private constructor(month: number, year: number) {\n const currentYear = getCurrentYear(month, year);\n const currentMonth = getCurrentMonth(month);\n\n const daysCount = getMonthsDays(currentMonth, currentYear);\n const offset = getMonthOffset(currentMonth, currentYear);\n this.daysCount = daysCount;\n this.offset = offset;\n this.month = currentMonth;\n this.year = currentYear;\n this.isLastInYear = currentMonth === 11;\n this.isFirstInYear = currentMonth === 0;\n this.days = Array.from({ length: daysCount }, (_, i) => {\n const isWeekend = (i + getMonthOffset(currentMonth, currentYear)) % 7 >= 5;\n return DayCellViewModel.create(i + 1, currentMonth, currentYear, isWeekend);\n });\n }\n}\n\nconst getMonthHeight = memo(\n (\n daysCount: number,\n offset: number,\n dayHeight: number,\n titleHeight: number,\n marginBottom: number,\n rowSpacing: number,\n ) => {\n const weeks = Math.ceil((daysCount + offset) / 7);\n return weeks * dayHeight + titleHeight + marginBottom + rowSpacing * 2 + rowSpacing * (weeks - 1);\n },\n);\nconst getMonthsDays = memo((month: number, year: number) => new Date(year, month + 1, 0).getDate());\n\nconst getMonthOffset = memo((month: number, year: number) => {\n const day = new Date(year, month, 1).getDay() - 1;\n if (day === -1) {\n return 6;\n }\n return day;\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tids.js","sourceRoot":"","sources":["tids.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,gBAAgB;IACtB,KAAK,EAAE,kBAAkB;IACzB,OAAO,EAAE,mBAAmB;IAC5B,WAAW,EAAE,wBAAwB;IACrC,UAAU,EAAE,uBAAuB;CAC3B,CAAC","sourcesContent":["export const CalendarDataTids = {\n root: 'Calendar__root',\n month: 'MonthView__month',\n dayCell: 'DayCellView__root',\n headerMonth: 'MonthView__headerMonth',\n headerYear: 'MonthView__headerYear',\n} as const;\n"]}
|
|
@@ -34,7 +34,7 @@ import React from 'react';
|
|
|
34
34
|
import { CommonWrapper } from '../../internal/CommonWrapper/index.js';
|
|
35
35
|
import { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';
|
|
36
36
|
import { rootNode } from '../../lib/rootNode/index.js';
|
|
37
|
-
import { isAutocomplete, isButton, isCurrencyInput, isDropdown, isDropdownMenu, isFxInput, isHint, isInput, isPasswordInput, isSelect, isTooltip,
|
|
37
|
+
import { isAutocomplete, isButton, isCurrencyInput, isDropdown, isDropdownMenu, isFxInput, isHint, isInput, isPasswordInput, isSelect, isTooltip, } from '../../lib/utils.js';
|
|
38
38
|
import { getStyles } from './Group.styles.js';
|
|
39
39
|
var getFirstChild = function (children) {
|
|
40
40
|
if (!Array.isArray(children)) {
|
|
@@ -79,8 +79,7 @@ var tryPassCorners = function (child, isFirstChild, isLastChild) {
|
|
|
79
79
|
isCurrencyInput(child) ||
|
|
80
80
|
isSelect(child) ||
|
|
81
81
|
isDropdown(child) ||
|
|
82
|
-
isDropdownMenu(child)
|
|
83
|
-
isTimePicker(child)) {
|
|
82
|
+
isDropdownMenu(child)) {
|
|
84
83
|
return React.cloneElement(child, { corners: __assign(__assign({}, corners), child.props.corners) });
|
|
85
84
|
}
|
|
86
85
|
return child;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Group.js","sourceRoot":"","sources":["Group.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport React from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport {\n isAutocomplete,\n isButton,\n isCurrencyInput,\n isDropdown,\n isDropdownMenu,\n isFxInput,\n isHint,\n isInput,\n isPasswordInput,\n isSelect,\n isTooltip,\n isTimePicker,\n} from '../../lib/utils.js';\nimport { getStyles } from './Group.styles.js';\n\nexport interface GroupProps extends CommonProps {\n /** Ширина компонента. */\n width?: React.CSSProperties['width'];\n}\n\ninterface GroupChildProps extends CommonProps {\n width?: React.CSSProperties['width'];\n corners?: number;\n}\n\nconst getFirstChild = (children: React.ReactNode) => {\n if (!Array.isArray(children)) {\n return children;\n }\n\n return children?.[0] as React.ReactNode;\n};\n\nconst getLastChild = (children: React.ReactNode) => {\n if (!Array.isArray(children)) {\n return children;\n }\n\n const numberOfChildren = React.Children.count(children);\n\n return children?.[numberOfChildren - 1] as React.ReactNode;\n};\n\nexport const getButtonCorners = (isFirstChild: boolean, isLastChild: boolean): React.CSSProperties => {\n if (isFirstChild && isLastChild) {\n return {};\n }\n\n if (isFirstChild) {\n return {\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n };\n }\n\n if (isLastChild) {\n return {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n };\n }\n\n return {\n borderRadius: 0,\n };\n};\n\nconst tryPassCorners = (child: React.ReactNode, isFirstChild: boolean, isLastChild: boolean) => {\n const corners = getButtonCorners(isFirstChild, isLastChild);\n\n if (\n isButton(child) ||\n isInput(child) ||\n isFxInput(child) ||\n isAutocomplete(child) ||\n isPasswordInput(child) ||\n isCurrencyInput(child) ||\n isSelect(child) ||\n isDropdown(child) ||\n isDropdownMenu(child) ||\n isTimePicker(child)\n ) {\n return React.cloneElement<(typeof child)['props']>(child, { corners: { ...corners, ...child.props.corners } });\n }\n\n return child;\n};\n\nconst hasWidthInPercent = (child: React.ReactElement<GroupChildProps>) => String(child.props.width).includes('%');\n\nexport const GroupDataTids = {\n root: 'Group__root',\n} as const;\n\n/**\n * Контейнер используется для создания логически сгруппированных элементов, выровненных по горизонтали.\n */\n@withRenderEnvironment\n@rootNode\nexport class Group extends React.Component<GroupProps> {\n public static __KONTUR_REACT_UI__ = 'Group';\n public static displayName = 'Group';\n\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n\n public render(): React.JSX.Element {\n const style: React.CSSProperties = {\n width: this.props.width,\n };\n\n const childrenArray = React.Children.toArray(this.props.children);\n const firstChild = getFirstChild(childrenArray);\n const lastChild = getLastChild(childrenArray);\n this.styles = getStyles(this.emotion);\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <span data-tid={GroupDataTids.root} className={this.styles.root()} style={style}>\n {React.Children.map(childrenArray, (child) => {\n if (!child || !React.isValidElement<GroupChildProps>(child)) {\n return null;\n }\n\n const isFirstChild = child === firstChild;\n const isLastChild = child === lastChild;\n\n if (isHint(child) || isTooltip(child)) {\n return this.renderWrappedChildren(child, isFirstChild, isLastChild);\n }\n\n return this.renderChild(child, isFirstChild, isLastChild, hasWidthInPercent(child));\n })}\n </span>\n </CommonWrapper>\n );\n }\n\n private renderChild = (\n child: React.ReactNode,\n isFirstChild: boolean,\n isLastChild: boolean,\n isWidthInPercent: boolean,\n ) => (\n <div\n className={this.cx({\n [this.styles.fixed()]: !isWidthInPercent,\n [this.styles.stretch()]: isWidthInPercent,\n })}\n >\n <div\n className={this.cx({\n [this.styles.item()]: true,\n [this.styles.itemFirst()]: isFirstChild,\n })}\n >\n {tryPassCorners(child, isFirstChild, isLastChild)}\n </div>\n </div>\n );\n\n private renderWrappedChildren(\n parent: React.ReactElement<GroupChildProps>,\n isParentFirst: boolean,\n isParentLast: boolean,\n ): React.ReactNode {\n let shouldStretchParent = false;\n const nestedChildren = React.Children.toArray(parent.props.children);\n\n const modifiedChildren = nestedChildren.map((nestedChild, index) => {\n if (!nestedChild || !React.isValidElement<GroupChildProps>(nestedChild)) {\n return null;\n }\n\n const isFirstChild = isParentFirst && index === 0;\n const isLastChild = isParentLast && index === nestedChildren.length - 1;\n if (hasWidthInPercent(nestedChild)) {\n shouldStretchParent = true;\n }\n\n return this.renderChild(nestedChild, isFirstChild, isLastChild, hasWidthInPercent(nestedChild));\n });\n\n const wrappedChildren = (\n <div className={this.cx(this.styles.wrappedChildren(), { [this.styles.stretch()]: shouldStretchParent })}>\n {modifiedChildren}\n </div>\n );\n\n return React.cloneElement<GroupChildProps>(parent, {\n children: wrappedChildren,\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Group.js","sourceRoot":"","sources":["Group.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport React from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport {\n isAutocomplete,\n isButton,\n isCurrencyInput,\n isDropdown,\n isDropdownMenu,\n isFxInput,\n isHint,\n isInput,\n isPasswordInput,\n isSelect,\n isTooltip,\n} from '../../lib/utils.js';\nimport { getStyles } from './Group.styles.js';\n\nexport interface GroupProps extends CommonProps {\n /** Ширина компонента. */\n width?: React.CSSProperties['width'];\n}\n\ninterface GroupChildProps extends CommonProps {\n width?: React.CSSProperties['width'];\n corners?: number;\n}\n\nconst getFirstChild = (children: React.ReactNode) => {\n if (!Array.isArray(children)) {\n return children;\n }\n\n return children?.[0] as React.ReactNode;\n};\n\nconst getLastChild = (children: React.ReactNode) => {\n if (!Array.isArray(children)) {\n return children;\n }\n\n const numberOfChildren = React.Children.count(children);\n\n return children?.[numberOfChildren - 1] as React.ReactNode;\n};\n\nexport const getButtonCorners = (isFirstChild: boolean, isLastChild: boolean): React.CSSProperties => {\n if (isFirstChild && isLastChild) {\n return {};\n }\n\n if (isFirstChild) {\n return {\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n };\n }\n\n if (isLastChild) {\n return {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n };\n }\n\n return {\n borderRadius: 0,\n };\n};\n\nconst tryPassCorners = (child: React.ReactNode, isFirstChild: boolean, isLastChild: boolean) => {\n const corners = getButtonCorners(isFirstChild, isLastChild);\n\n if (\n isButton(child) ||\n isInput(child) ||\n isFxInput(child) ||\n isAutocomplete(child) ||\n isPasswordInput(child) ||\n isCurrencyInput(child) ||\n isSelect(child) ||\n isDropdown(child) ||\n isDropdownMenu(child)\n ) {\n return React.cloneElement<(typeof child)['props']>(child, { corners: { ...corners, ...child.props.corners } });\n }\n\n return child;\n};\n\nconst hasWidthInPercent = (child: React.ReactElement<GroupChildProps>) => String(child.props.width).includes('%');\n\nexport const GroupDataTids = {\n root: 'Group__root',\n} as const;\n\n/**\n * Контейнер используется для создания логически сгруппированных элементов, выровненных по горизонтали.\n */\n@withRenderEnvironment\n@rootNode\nexport class Group extends React.Component<GroupProps> {\n public static __KONTUR_REACT_UI__ = 'Group';\n public static displayName = 'Group';\n\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n\n public render(): React.JSX.Element {\n const style: React.CSSProperties = {\n width: this.props.width,\n };\n\n const childrenArray = React.Children.toArray(this.props.children);\n const firstChild = getFirstChild(childrenArray);\n const lastChild = getLastChild(childrenArray);\n this.styles = getStyles(this.emotion);\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <span data-tid={GroupDataTids.root} className={this.styles.root()} style={style}>\n {React.Children.map(childrenArray, (child) => {\n if (!child || !React.isValidElement<GroupChildProps>(child)) {\n return null;\n }\n\n const isFirstChild = child === firstChild;\n const isLastChild = child === lastChild;\n\n if (isHint(child) || isTooltip(child)) {\n return this.renderWrappedChildren(child, isFirstChild, isLastChild);\n }\n\n return this.renderChild(child, isFirstChild, isLastChild, hasWidthInPercent(child));\n })}\n </span>\n </CommonWrapper>\n );\n }\n\n private renderChild = (\n child: React.ReactNode,\n isFirstChild: boolean,\n isLastChild: boolean,\n isWidthInPercent: boolean,\n ) => (\n <div\n className={this.cx({\n [this.styles.fixed()]: !isWidthInPercent,\n [this.styles.stretch()]: isWidthInPercent,\n })}\n >\n <div\n className={this.cx({\n [this.styles.item()]: true,\n [this.styles.itemFirst()]: isFirstChild,\n })}\n >\n {tryPassCorners(child, isFirstChild, isLastChild)}\n </div>\n </div>\n );\n\n private renderWrappedChildren(\n parent: React.ReactElement<GroupChildProps>,\n isParentFirst: boolean,\n isParentLast: boolean,\n ): React.ReactNode {\n let shouldStretchParent = false;\n const nestedChildren = React.Children.toArray(parent.props.children);\n\n const modifiedChildren = nestedChildren.map((nestedChild, index) => {\n if (!nestedChild || !React.isValidElement<GroupChildProps>(nestedChild)) {\n return null;\n }\n\n const isFirstChild = isParentFirst && index === 0;\n const isLastChild = isParentLast && index === nestedChildren.length - 1;\n if (hasWidthInPercent(nestedChild)) {\n shouldStretchParent = true;\n }\n\n return this.renderChild(nestedChild, isFirstChild, isLastChild, hasWidthInPercent(nestedChild));\n });\n\n const wrappedChildren = (\n <div className={this.cx(this.styles.wrappedChildren(), { [this.styles.stretch()]: shouldStretchParent })}>\n {modifiedChildren}\n </div>\n );\n\n return React.cloneElement<GroupChildProps>(parent, {\n children: wrappedChildren,\n });\n }\n}\n"]}
|
|
@@ -18,7 +18,7 @@ export declare const calculateClearCrossShowedState: ({ showClearIcon, notEmptyV
|
|
|
18
18
|
focused?: boolean;
|
|
19
19
|
hovered?: boolean;
|
|
20
20
|
}) => boolean;
|
|
21
|
-
export interface InputProps extends CommonProps, Pick<HTMLAttributes<unknown>, 'role'>, Pick<AriaAttributes, 'aria-describedby' | 'aria-controls' | 'aria-label'
|
|
21
|
+
export interface InputProps extends CommonProps, Pick<HTMLAttributes<unknown>, 'role'>, Pick<AriaAttributes, 'aria-describedby' | 'aria-controls' | 'aria-label'>, Override<React.InputHTMLAttributes<HTMLInputElement>, {
|
|
22
22
|
/** Показывает иконку очистки значения в заполненном поле.
|
|
23
23
|
* @default never */
|
|
24
24
|
showClearIcon?: ShowClearIcon;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Input.js","sourceRoot":"","sources":["Input.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport invariant from 'invariant';\nimport type { AriaAttributes, ClassAttributes, HTMLAttributes, JSX, ReactElement, ReactNode } from 'react';\nimport React, { createRef } from 'react';\nimport warning from 'warning';\n\nimport { ClearCrossIcon } from '../../internal/ClearCrossIcon/ClearCrossIcon.js';\nimport type { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper/index.js';\nimport { RenderLayer } from '../../internal/RenderLayer/index.js';\nimport { blink } from '../../lib/blink.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { isKeyBackspace, isKeyDelete, someKeys } from '../../lib/events/keyboard/identifiers.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { getRootNode, rootNode } from '../../lib/rootNode/index.js';\nimport { withSize } from '../../lib/size/SizeDecorator.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { catchUnreachableWarning } from '../../lib/typeGuards.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport type { Override } from '../../typings/utility-types.js';\nimport { getStyles } from './Input.styles.js';\nimport type { InputElement, InputElementProps } from './Input.typings.js';\nimport { InputLayout } from './InputLayout/InputLayout.js';\n\nexport const inputTypes = ['password', 'text', 'number', 'tel', 'search', 'time', 'date', 'url', 'email'] as const;\n\nexport type InputAlign = 'left' | 'center' | 'right';\nexport type ShowClearIcon = 'auto' | 'always' | 'never';\nexport type InputType = (typeof inputTypes)[number];\nexport type InputIconType = React.ReactNode | (() => React.ReactNode);\n\nexport const selectionAllowedTypes: InputType[] = ['text', 'password', 'tel', 'search', 'url'];\nexport const selectionErrorMessage = (type: InputType, allowedTypes: InputType[] = selectionAllowedTypes): string => {\n return `<Input />. Selection is not supported by the type \"${type}\". Types that support selection: ${allowedTypes\n .map((i) => `\"${i}\"`)\n .join(', ')}. Reason: https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange.`;\n};\n\nexport const calculateClearCrossShowedState = ({\n showClearIcon,\n notEmptyValue,\n focused,\n hovered,\n}: {\n showClearIcon: ShowClearIcon;\n notEmptyValue: boolean;\n focused?: boolean;\n hovered?: boolean;\n}): boolean => {\n switch (showClearIcon) {\n case 'always':\n return notEmptyValue;\n case 'auto':\n return Boolean((focused || hovered) && notEmptyValue);\n case 'never':\n return false;\n default:\n return catchUnreachableWarning(showClearIcon, false);\n }\n};\n\nexport interface InputProps\n extends\n CommonProps,\n Pick<HTMLAttributes<unknown>, 'role'>,\n Pick<\n AriaAttributes,\n | 'aria-describedby'\n | 'aria-controls'\n | 'aria-label'\n | 'aria-haspopup'\n | 'aria-expanded'\n | 'aria-activedescendant'\n | 'aria-placeholder'\n >,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /** Показывает иконку очистки значения в заполненном поле.\n * @default never */\n showClearIcon?: ShowClearIcon;\n\n /** Добавляет иконку слева.\n * При использовании `ReactNode` применяются дефолтные стили для иконки.\n * При использовании `() => ReactNode` применяются только стили для позиционирования. */\n leftIcon?: InputIconType;\n\n /** Добавляет иконку справа.\n * При использовании `ReactNode` применяются дефолтные стили для иконки.\n * При использовании `() => ReactNode` применяются только стили для позиционирования. */\n rightIcon?: InputIconType;\n\n /** Переводит поле в состояние ошибки. */\n error?: boolean;\n\n /** Переводит поле в состояние предупреждения. */\n warning?: boolean;\n\n /** Убирает обводку поля. */\n borderless?: boolean;\n\n /** Выравнивает контент внутри поля. */\n align?: InputAlign;\n\n /** Размер поля.\n * @default small\n */\n size?: SizeProp;\n\n /** Событие изменения значения `value` в поле. */\n onValueChange?: (value: string) => void;\n\n /** @ignore */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n\n /** @ignore */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n\n /** @ignore */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n\n /** Тип поля ввода. */\n type?: InputType;\n\n /** Значение внутри поля. */\n value?: string;\n\n /** Устанавливает префикс `ReactNode` перед значением, но после иконки. */\n prefix?: React.ReactNode;\n\n /** Устанавливает суффикс `ReactNode` после значения, но перед правой иконкой. */\n suffix?: React.ReactNode;\n\n /** Выделяет введённое значение при фокусе в поле. Работает с типами `text`, `password`, `tel`, `search`, `url`. */\n selectAllOnFocus?: boolean;\n\n /** Отображает счётчик введённых символов. */\n showLengthCounter?: boolean;\n\n /** Допустимое количество символов в поле. Отображается в счётчике символов.\n * @default maxLength */\n lengthCounter?: number;\n\n /** Подсказка для счётчика символов.\n *\n * Если передать `ReactNode`, рисует тултип со встроенной иконкой.\n * Если передать функцию, рисует произвольный элемент.\n * @example\n * ```\n * counterHelp={() => <Hint text=\"...\"><Icon /></Hint>}\n * ``` */\n counterHelp?: ReactNode | (() => ReactNode);\n\n /** Устанавливает обработчик на случай некорректного ввода.\n * Если передан onUnexpectedInput, он будет вызван при ошибке, а эффект мигания можно запустить вручную через публичный метод blink.\n * @param {string} value - значение поля. */\n onUnexpectedInput?: (value: string) => void;\n\n /** Устанавливает радиус скруглений углов.\n * @ignore */\n corners?: Partial<\n Pick<\n React.CSSProperties,\n 'borderTopRightRadius' | 'borderBottomRightRadius' | 'borderBottomLeftRadius' | 'borderTopLeftRadius'\n >\n >;\n\n /** Устанавливает элемент, заменяющий нативный input. Должен иметь пропсы `InputElementProps` и тип `InputElement`. */\n element?: ReactElement<InputElementProps>;\n }\n > {}\n\nexport interface InputState {\n focused: boolean;\n hovered: boolean;\n clearCrossShowed: boolean;\n isCounterVisible: boolean;\n}\n\nexport const InputDataTids = {\n root: 'Input__root',\n clearCross: 'Input__clearCross',\n counter: 'Input__counter',\n counterHelpIcon: 'Input__counterHelpIcon',\n} as const;\n\ntype DefaultProps = Required<Pick<InputProps, 'type' | 'showClearIcon'>>;\n\n/**\n * Поле ввода позволяет ввести или отредактировать значение.\n */\n@withRenderEnvironment\n@rootNode\n@withSize\nexport class Input extends React.Component<InputProps, InputState> {\n public static __KONTUR_REACT_UI__ = 'Input';\n public static displayName = 'Input';\n\n public static defaultProps: DefaultProps = {\n type: 'text',\n showClearIcon: 'never',\n };\n private size!: SizeProp;\n\n private getProps = createPropsGetter(Input.defaultProps);\n\n private selectAllId: number | null = null;\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n public input: HTMLInputElement | null = null;\n public labelRef = createRef<HTMLLabelElement>();\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n private getClearCrossShowed = ({\n focused,\n hovered,\n hasInitialValue,\n }: {\n focused?: boolean;\n hovered?: boolean;\n hasInitialValue?: boolean;\n }): boolean => {\n if (this.props.disabled) {\n return false;\n }\n return calculateClearCrossShowedState({\n showClearIcon: this.getProps().showClearIcon,\n notEmptyValue: Boolean(this.input?.value || hasInitialValue),\n focused,\n hovered,\n });\n };\n\n public state: InputState = {\n focused: false,\n hovered: false,\n isCounterVisible: false,\n clearCrossShowed: this.getClearCrossShowed({\n focused: false,\n hasInitialValue: Boolean(this.props.value || this.props.defaultValue),\n }),\n };\n\n public componentWillUnmount() {\n this.cancelDelayedSelectAll();\n }\n\n /** Программно устанавливает фокус на поле.\n * Появляется фокусная рамка, элемент получает клавиатурные события и воспринимается как текущий элемент для чтения скринридерами.\n * @public\n */\n public focus(): void {\n invariant(this.input, 'Cannot call \"focus\" because Input is not mounted');\n this.input.focus();\n }\n\n /** Программно снимает фокус с поля.\n * @public\n */\n public blur(): void {\n invariant(this.input, 'Cannot call \"blur\" because Input is not mounted');\n this.input.blur();\n }\n\n /** Возвращает DOM-узел поля ввода.\n * @public\n */\n public getNode(): HTMLInputElement | null {\n return this.input;\n }\n\n /** Кратковременно визуально подсвечивает поле ввода, чтобы привлечь внимание пользователя.\n * @public\n */\n public blink(): void {\n blink({ el: this.labelRef.current, blinkColor: this.theme.inputBlinkColor });\n }\n\n /** start - инициирует последовательное изменение числового значения: начинает повторяющееся увеличение/уменьшение, обычно используется при удерживании кнопки «+» или «−» для числового Input. end - останавливает ранее запущенное числоизменение, инициируемое numberStart.\n * [Документация](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange)\n * @public\n * @param {number} start\n * @param {number} end\n */\n public setSelectionRange(start: number, end: number): void {\n // https://github.com/facebook/react/issues/7769\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n if (!selectionAllowedTypes.includes(this.getProps().type)) {\n warning(false, selectionErrorMessage(this.getProps().type));\n\n return;\n }\n\n if (!this.input) {\n warning(false, 'Cannot call \"setSelectionRange\" on unmounted Input');\n return;\n }\n\n if (this.globalObject.document?.activeElement !== this.input) {\n this.focus();\n }\n\n this.input?.setSelectionRange(start, end);\n }\n\n public render(): JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.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 /**\n * Переводит фокус в поле (если ещё не в фокусе) и выделяет весь текст в нём.\n * Работает с типами `text`, `password`, `tel`, `search`, `url`.\n * @public\n */\n public selectAll = (): void => this._selectAll();\n\n public delaySelectAll = (): number | null => {\n return (this.selectAllId = this.globalObject.requestAnimationFrame?.(this._selectAll) ?? null);\n };\n\n private _selectAll = (): void => {\n if (this.input) {\n this.setSelectionRange(0, this.input.value.length);\n }\n };\n\n private cancelDelayedSelectAll = (): void => {\n if (this.selectAllId) {\n this.globalObject.cancelAnimationFrame?.(this.selectAllId);\n this.selectAllId = null;\n }\n };\n\n private getInput = (inputProps: InputElementProps & ClassAttributes<HTMLInputElement>) => {\n if (this.props.element) {\n return React.cloneElement(this.props.element, inputProps);\n }\n\n return React.createElement('input', inputProps);\n };\n\n private renderMain = (props: CommonWrapperRestProps<InputProps>) => {\n const {\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onKeyDown,\n onKeyPress,\n onValueChange,\n width,\n error,\n role,\n warning,\n leftIcon,\n rightIcon,\n borderless,\n value,\n align,\n type,\n size,\n placeholder,\n selectAllOnFocus,\n showLengthCounter,\n lengthCounter,\n counterHelp,\n disabled,\n onUnexpectedInput,\n prefix,\n suffix,\n corners,\n 'aria-describedby': ariaDescribedby,\n 'aria-controls': ariaControls,\n 'aria-label': ariaLabel,\n element,\n showClearIcon,\n ...rest\n } = props;\n\n const { focused, isCounterVisible } = this.state;\n\n const labelProps = {\n className: this.cx(this.styles.root(this.theme), this.getSizeClassName(), {\n [this.styles.focus(this.theme)]: focused && !warning && !error,\n [this.styles.hovering(this.theme)]: !focused && !disabled && !warning && !error && !borderless,\n [this.styles.borderless()]: borderless && !focused,\n [this.styles.disabled(this.theme)]: disabled,\n [this.styles.warning(this.theme)]: warning,\n [this.styles.error(this.theme)]: error,\n }),\n 'aria-controls': ariaControls,\n style: { width, ...corners },\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n onMouseOver,\n ref: this.labelRef,\n };\n\n const inputProps: InputElementProps & ClassAttributes<HTMLInputElement> = {\n ...rest,\n className: this.cx(this.styles.input(this.theme), {\n [this.styles.inputFocus(this.theme)]: focused,\n [this.styles.inputDisabled(this.theme)]: disabled,\n }),\n value,\n role,\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onKeyDown: this.handleKeyDown,\n onKeyPress: this.handleKeyPress,\n onBlur: this.handleBlur,\n style: { textAlign: align },\n ref: this.refInput,\n type,\n placeholder,\n disabled,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n };\n\n const input = (\n <FocusControlWrapper onBlurWhenDisabled={this.resetFocus}>{this.getInput(inputProps)}</FocusControlWrapper>\n );\n\n const getRightIcon = () => {\n return this.state.clearCrossShowed ? (\n <ClearCrossIcon data-tid={InputDataTids.clearCross} size={this.size} onClick={this.handleClearInput} />\n ) : (\n rightIcon\n );\n };\n return (\n <RenderLayer\n onFocusOutside={this.handleCloseCounterHelp}\n onClickOutside={this.handleCloseCounterHelp}\n active={isCounterVisible}\n >\n <InputLayout\n leftIcon={leftIcon}\n rightIcon={getRightIcon()}\n prefix={prefix}\n suffix={suffix}\n value={value}\n showLengthCounter={showLengthCounter}\n isCounterVisible={isCounterVisible}\n lengthCounter={lengthCounter}\n counterHelp={counterHelp}\n onCloseCounterHelp={this.handleCloseCounterHelp}\n maxLength={this.props.maxLength}\n size={this.size}\n labelProps={labelProps}\n context={{ disabled: Boolean(disabled), focused, size: this.size }}\n >\n {input}\n </InputLayout>\n </RenderLayer>\n );\n };\n\n private handleCloseCounterHelp = () => this.setState({ isCounterVisible: false });\n\n private getSizeClassName() {\n switch (this.size) {\n case 'large':\n return this.cx({\n [this.styles.sizeLarge(this.theme)]: true,\n });\n case 'medium':\n return this.cx({\n [this.styles.sizeMedium(this.theme)]: true,\n });\n case 'small':\n default:\n return this.cx({\n [this.styles.sizeSmall(this.theme)]: true,\n });\n }\n }\n\n private refInput = (element: HTMLInputElement | InputElement | null) => {\n if (element && 'input' in element) {\n this.input = element.input;\n } else {\n this.input = element;\n }\n };\n\n private handleClearInput = () => {\n if (this.input) {\n this.input.value = '';\n }\n\n this.setState({ clearCrossShowed: false });\n\n if (this.props.onValueChange) {\n this.props.onValueChange('');\n }\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(event.target.value);\n }\n\n if (this.props.onChange) {\n this.props.onChange(event);\n }\n\n const clearCrossShowed = this.getClearCrossShowed({ focused: this.state.focused, hovered: this.state.hovered });\n\n if (this.state.clearCrossShowed !== clearCrossShowed) {\n this.setState({\n clearCrossShowed,\n });\n }\n };\n\n private handleMouseEnter = (e: React.MouseEvent<HTMLLabelElement, MouseEvent>) => {\n this.setState({\n hovered: true,\n clearCrossShowed: this.getClearCrossShowed({ focused: this.state.focused, hovered: true }),\n });\n if (this.props.onMouseEnter) {\n this.props.onMouseEnter(e);\n }\n };\n private handleMouseLeave = (e: React.MouseEvent<HTMLLabelElement, MouseEvent>) => {\n this.setState({\n hovered: false,\n clearCrossShowed: this.getClearCrossShowed({ focused: this.state.focused, hovered: false }),\n });\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(e);\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n this.setState({\n focused: true,\n isCounterVisible: true,\n clearCrossShowed: this.getClearCrossShowed({ focused: true, hovered: this.state.hovered }),\n });\n\n if (this.props.selectAllOnFocus) {\n this.input && this.selectAll();\n }\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n\n const isDeleteKey = someKeys(isKeyBackspace, isKeyDelete)(e);\n\n if (!e.currentTarget.value && isDeleteKey && !e.repeat) {\n this.handleUnexpectedInput();\n }\n };\n\n private handleKeyPress = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyPress) {\n this.props.onKeyPress(event);\n }\n\n if (this.props.maxLength === event.currentTarget.value.length) {\n this.handleUnexpectedInput(event.currentTarget.value);\n }\n };\n\n private handleUnexpectedInput = (value: string = this.props.value || '') => {\n if (this.props.onUnexpectedInput) {\n this.props.onUnexpectedInput(value);\n } else {\n this.blink();\n }\n };\n\n private resetFocus = () => this.setState({ focused: false });\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n const showClearIcon = this.props.showClearIcon;\n if (showClearIcon && getRootNode(this)?.contains(event.relatedTarget)) {\n this.setState({ focused: false });\n } else {\n const clearCrossShowed = this.getClearCrossShowed({ focused: false, hovered: this.state.hovered });\n this.setState({\n focused: false,\n clearCrossShowed,\n });\n this.props.onBlur?.(event);\n }\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Input.js","sourceRoot":"","sources":["Input.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport invariant from 'invariant';\nimport type { AriaAttributes, ClassAttributes, HTMLAttributes, JSX, ReactElement, ReactNode } from 'react';\nimport React, { createRef } from 'react';\nimport warning from 'warning';\n\nimport { ClearCrossIcon } from '../../internal/ClearCrossIcon/ClearCrossIcon.js';\nimport type { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper/index.js';\nimport { RenderLayer } from '../../internal/RenderLayer/index.js';\nimport { blink } from '../../lib/blink.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { isKeyBackspace, isKeyDelete, someKeys } from '../../lib/events/keyboard/identifiers.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { getRootNode, rootNode } from '../../lib/rootNode/index.js';\nimport { withSize } from '../../lib/size/SizeDecorator.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { catchUnreachableWarning } from '../../lib/typeGuards.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport type { Override } from '../../typings/utility-types.js';\nimport { getStyles } from './Input.styles.js';\nimport type { InputElement, InputElementProps } from './Input.typings.js';\nimport { InputLayout } from './InputLayout/InputLayout.js';\n\nexport const inputTypes = ['password', 'text', 'number', 'tel', 'search', 'time', 'date', 'url', 'email'] as const;\n\nexport type InputAlign = 'left' | 'center' | 'right';\nexport type ShowClearIcon = 'auto' | 'always' | 'never';\nexport type InputType = (typeof inputTypes)[number];\nexport type InputIconType = React.ReactNode | (() => React.ReactNode);\n\nexport const selectionAllowedTypes: InputType[] = ['text', 'password', 'tel', 'search', 'url'];\nexport const selectionErrorMessage = (type: InputType, allowedTypes: InputType[] = selectionAllowedTypes): string => {\n return `<Input />. Selection is not supported by the type \"${type}\". Types that support selection: ${allowedTypes\n .map((i) => `\"${i}\"`)\n .join(', ')}. Reason: https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange.`;\n};\n\nexport const calculateClearCrossShowedState = ({\n showClearIcon,\n notEmptyValue,\n focused,\n hovered,\n}: {\n showClearIcon: ShowClearIcon;\n notEmptyValue: boolean;\n focused?: boolean;\n hovered?: boolean;\n}): boolean => {\n switch (showClearIcon) {\n case 'always':\n return notEmptyValue;\n case 'auto':\n return Boolean((focused || hovered) && notEmptyValue);\n case 'never':\n return false;\n default:\n return catchUnreachableWarning(showClearIcon, false);\n }\n};\n\nexport interface InputProps\n extends\n CommonProps,\n Pick<HTMLAttributes<unknown>, 'role'>,\n Pick<AriaAttributes, 'aria-describedby' | 'aria-controls' | 'aria-label'>,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /** Показывает иконку очистки значения в заполненном поле.\n * @default never */\n showClearIcon?: ShowClearIcon;\n\n /** Добавляет иконку слева.\n * При использовании `ReactNode` применяются дефолтные стили для иконки.\n * При использовании `() => ReactNode` применяются только стили для позиционирования. */\n leftIcon?: InputIconType;\n\n /** Добавляет иконку справа.\n * При использовании `ReactNode` применяются дефолтные стили для иконки.\n * При использовании `() => ReactNode` применяются только стили для позиционирования. */\n rightIcon?: InputIconType;\n\n /** Переводит поле в состояние ошибки. */\n error?: boolean;\n\n /** Переводит поле в состояние предупреждения. */\n warning?: boolean;\n\n /** Убирает обводку поля. */\n borderless?: boolean;\n\n /** Выравнивает контент внутри поля. */\n align?: InputAlign;\n\n /** Размер поля.\n * @default small\n */\n size?: SizeProp;\n\n /** Событие изменения значения `value` в поле. */\n onValueChange?: (value: string) => void;\n\n /** @ignore */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n\n /** @ignore */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n\n /** @ignore */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n\n /** Тип поля ввода. */\n type?: InputType;\n\n /** Значение внутри поля. */\n value?: string;\n\n /** Устанавливает префикс `ReactNode` перед значением, но после иконки. */\n prefix?: React.ReactNode;\n\n /** Устанавливает суффикс `ReactNode` после значения, но перед правой иконкой. */\n suffix?: React.ReactNode;\n\n /** Выделяет введённое значение при фокусе в поле. Работает с типами `text`, `password`, `tel`, `search`, `url`. */\n selectAllOnFocus?: boolean;\n\n /** Отображает счётчик введённых символов. */\n showLengthCounter?: boolean;\n\n /** Допустимое количество символов в поле. Отображается в счётчике символов.\n * @default maxLength */\n lengthCounter?: number;\n\n /** Подсказка для счётчика символов.\n *\n * Если передать `ReactNode`, рисует тултип со встроенной иконкой.\n * Если передать функцию, рисует произвольный элемент.\n * @example\n * ```\n * counterHelp={() => <Hint text=\"...\"><Icon /></Hint>}\n * ``` */\n counterHelp?: ReactNode | (() => ReactNode);\n\n /** Устанавливает обработчик на случай некорректного ввода.\n * Если передан onUnexpectedInput, он будет вызван при ошибке, а эффект мигания можно запустить вручную через публичный метод blink.\n * @param {string} value - значение поля. */\n onUnexpectedInput?: (value: string) => void;\n\n /** Устанавливает радиус скруглений углов.\n * @ignore */\n corners?: Partial<\n Pick<\n React.CSSProperties,\n 'borderTopRightRadius' | 'borderBottomRightRadius' | 'borderBottomLeftRadius' | 'borderTopLeftRadius'\n >\n >;\n\n /** Устанавливает элемент, заменяющий нативный input. Должен иметь пропсы `InputElementProps` и тип `InputElement`. */\n element?: ReactElement<InputElementProps>;\n }\n > {}\n\nexport interface InputState {\n focused: boolean;\n hovered: boolean;\n clearCrossShowed: boolean;\n isCounterVisible: boolean;\n}\n\nexport const InputDataTids = {\n root: 'Input__root',\n clearCross: 'Input__clearCross',\n counter: 'Input__counter',\n counterHelpIcon: 'Input__counterHelpIcon',\n} as const;\n\ntype DefaultProps = Required<Pick<InputProps, 'type' | 'showClearIcon'>>;\n\n/**\n * Поле ввода позволяет ввести или отредактировать значение.\n */\n@withRenderEnvironment\n@rootNode\n@withSize\nexport class Input extends React.Component<InputProps, InputState> {\n public static __KONTUR_REACT_UI__ = 'Input';\n public static displayName = 'Input';\n\n public static defaultProps: DefaultProps = {\n type: 'text',\n showClearIcon: 'never',\n };\n private size!: SizeProp;\n\n private getProps = createPropsGetter(Input.defaultProps);\n\n private selectAllId: number | null = null;\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n public input: HTMLInputElement | null = null;\n public labelRef = createRef<HTMLLabelElement>();\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n private getClearCrossShowed = ({\n focused,\n hovered,\n hasInitialValue,\n }: {\n focused?: boolean;\n hovered?: boolean;\n hasInitialValue?: boolean;\n }): boolean => {\n if (this.props.disabled) {\n return false;\n }\n return calculateClearCrossShowedState({\n showClearIcon: this.getProps().showClearIcon,\n notEmptyValue: Boolean(this.input?.value || hasInitialValue),\n focused,\n hovered,\n });\n };\n\n public state: InputState = {\n focused: false,\n hovered: false,\n isCounterVisible: false,\n clearCrossShowed: this.getClearCrossShowed({\n focused: false,\n hasInitialValue: Boolean(this.props.value || this.props.defaultValue),\n }),\n };\n\n public componentWillUnmount() {\n this.cancelDelayedSelectAll();\n }\n\n /** Программно устанавливает фокус на поле.\n * Появляется фокусная рамка, элемент получает клавиатурные события и воспринимается как текущий элемент для чтения скринридерами.\n * @public\n */\n public focus(): void {\n invariant(this.input, 'Cannot call \"focus\" because Input is not mounted');\n this.input.focus();\n }\n\n /** Программно снимает фокус с поля.\n * @public\n */\n public blur(): void {\n invariant(this.input, 'Cannot call \"blur\" because Input is not mounted');\n this.input.blur();\n }\n\n /** Возвращает DOM-узел поля ввода.\n * @public\n */\n public getNode(): HTMLInputElement | null {\n return this.input;\n }\n\n /** Кратковременно визуально подсвечивает поле ввода, чтобы привлечь внимание пользователя.\n * @public\n */\n public blink(): void {\n blink({ el: this.labelRef.current, blinkColor: this.theme.inputBlinkColor });\n }\n\n /** start - инициирует последовательное изменение числового значения: начинает повторяющееся увеличение/уменьшение, обычно используется при удерживании кнопки «+» или «−» для числового Input. end - останавливает ранее запущенное числоизменение, инициируемое numberStart.\n * [Документация](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange)\n * @public\n * @param {number} start\n * @param {number} end\n */\n public setSelectionRange(start: number, end: number): void {\n // https://github.com/facebook/react/issues/7769\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n if (!selectionAllowedTypes.includes(this.getProps().type)) {\n warning(false, selectionErrorMessage(this.getProps().type));\n\n return;\n }\n\n if (!this.input) {\n warning(false, 'Cannot call \"setSelectionRange\" on unmounted Input');\n return;\n }\n\n if (this.globalObject.document?.activeElement !== this.input) {\n this.focus();\n }\n\n this.input?.setSelectionRange(start, end);\n }\n\n public render(): JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.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 /**\n * Переводит фокус в поле (если ещё не в фокусе) и выделяет весь текст в нём.\n * Работает с типами `text`, `password`, `tel`, `search`, `url`.\n * @public\n */\n public selectAll = (): void => this._selectAll();\n\n public delaySelectAll = (): number | null => {\n return (this.selectAllId = this.globalObject.requestAnimationFrame?.(this._selectAll) ?? null);\n };\n\n private _selectAll = (): void => {\n if (this.input) {\n this.setSelectionRange(0, this.input.value.length);\n }\n };\n\n private cancelDelayedSelectAll = (): void => {\n if (this.selectAllId) {\n this.globalObject.cancelAnimationFrame?.(this.selectAllId);\n this.selectAllId = null;\n }\n };\n\n private getInput = (inputProps: InputElementProps & ClassAttributes<HTMLInputElement>) => {\n if (this.props.element) {\n return React.cloneElement(this.props.element, inputProps);\n }\n\n return React.createElement('input', inputProps);\n };\n\n private renderMain = (props: CommonWrapperRestProps<InputProps>) => {\n const {\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onKeyDown,\n onKeyPress,\n onValueChange,\n width,\n error,\n role,\n warning,\n leftIcon,\n rightIcon,\n borderless,\n value,\n align,\n type,\n size,\n placeholder,\n selectAllOnFocus,\n showLengthCounter,\n lengthCounter,\n counterHelp,\n disabled,\n onUnexpectedInput,\n prefix,\n suffix,\n corners,\n 'aria-describedby': ariaDescribedby,\n 'aria-controls': ariaControls,\n 'aria-label': ariaLabel,\n element,\n showClearIcon,\n ...rest\n } = props;\n\n const { focused, isCounterVisible } = this.state;\n\n const labelProps = {\n className: this.cx(this.styles.root(this.theme), this.getSizeClassName(), {\n [this.styles.focus(this.theme)]: focused && !warning && !error,\n [this.styles.hovering(this.theme)]: !focused && !disabled && !warning && !error && !borderless,\n [this.styles.borderless()]: borderless && !focused,\n [this.styles.disabled(this.theme)]: disabled,\n [this.styles.warning(this.theme)]: warning,\n [this.styles.error(this.theme)]: error,\n }),\n 'aria-controls': ariaControls,\n style: { width, ...corners },\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n onMouseOver,\n ref: this.labelRef,\n };\n\n const inputProps: InputElementProps & ClassAttributes<HTMLInputElement> = {\n ...rest,\n className: this.cx(this.styles.input(this.theme), {\n [this.styles.inputFocus(this.theme)]: focused,\n [this.styles.inputDisabled(this.theme)]: disabled,\n }),\n value,\n role,\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onKeyDown: this.handleKeyDown,\n onKeyPress: this.handleKeyPress,\n onBlur: this.handleBlur,\n style: { textAlign: align },\n ref: this.refInput,\n type,\n placeholder,\n disabled,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n };\n\n const input = (\n <FocusControlWrapper onBlurWhenDisabled={this.resetFocus}>{this.getInput(inputProps)}</FocusControlWrapper>\n );\n\n const getRightIcon = () => {\n return this.state.clearCrossShowed ? (\n <ClearCrossIcon data-tid={InputDataTids.clearCross} size={this.size} onClick={this.handleClearInput} />\n ) : (\n rightIcon\n );\n };\n return (\n <RenderLayer\n onFocusOutside={this.handleCloseCounterHelp}\n onClickOutside={this.handleCloseCounterHelp}\n active={isCounterVisible}\n >\n <InputLayout\n leftIcon={leftIcon}\n rightIcon={getRightIcon()}\n prefix={prefix}\n suffix={suffix}\n value={value}\n showLengthCounter={showLengthCounter}\n isCounterVisible={isCounterVisible}\n lengthCounter={lengthCounter}\n counterHelp={counterHelp}\n onCloseCounterHelp={this.handleCloseCounterHelp}\n maxLength={this.props.maxLength}\n size={this.size}\n labelProps={labelProps}\n context={{ disabled: Boolean(disabled), focused, size: this.size }}\n >\n {input}\n </InputLayout>\n </RenderLayer>\n );\n };\n\n private handleCloseCounterHelp = () => this.setState({ isCounterVisible: false });\n\n private getSizeClassName() {\n switch (this.size) {\n case 'large':\n return this.cx({\n [this.styles.sizeLarge(this.theme)]: true,\n });\n case 'medium':\n return this.cx({\n [this.styles.sizeMedium(this.theme)]: true,\n });\n case 'small':\n default:\n return this.cx({\n [this.styles.sizeSmall(this.theme)]: true,\n });\n }\n }\n\n private refInput = (element: HTMLInputElement | InputElement | null) => {\n if (element && 'input' in element) {\n this.input = element.input;\n } else {\n this.input = element;\n }\n };\n\n private handleClearInput = () => {\n if (this.input) {\n this.input.value = '';\n }\n\n this.setState({ clearCrossShowed: false });\n\n if (this.props.onValueChange) {\n this.props.onValueChange('');\n }\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(event.target.value);\n }\n\n if (this.props.onChange) {\n this.props.onChange(event);\n }\n\n const clearCrossShowed = this.getClearCrossShowed({ focused: this.state.focused, hovered: this.state.hovered });\n\n if (this.state.clearCrossShowed !== clearCrossShowed) {\n this.setState({\n clearCrossShowed,\n });\n }\n };\n\n private handleMouseEnter = (e: React.MouseEvent<HTMLLabelElement, MouseEvent>) => {\n this.setState({\n hovered: true,\n clearCrossShowed: this.getClearCrossShowed({ focused: this.state.focused, hovered: true }),\n });\n if (this.props.onMouseEnter) {\n this.props.onMouseEnter(e);\n }\n };\n private handleMouseLeave = (e: React.MouseEvent<HTMLLabelElement, MouseEvent>) => {\n this.setState({\n hovered: false,\n clearCrossShowed: this.getClearCrossShowed({ focused: this.state.focused, hovered: false }),\n });\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(e);\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n this.setState({\n focused: true,\n isCounterVisible: true,\n clearCrossShowed: this.getClearCrossShowed({ focused: true, hovered: this.state.hovered }),\n });\n\n if (this.props.selectAllOnFocus) {\n this.input && this.selectAll();\n }\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n\n const isDeleteKey = someKeys(isKeyBackspace, isKeyDelete)(e);\n\n if (!e.currentTarget.value && isDeleteKey && !e.repeat) {\n this.handleUnexpectedInput();\n }\n };\n\n private handleKeyPress = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyPress) {\n this.props.onKeyPress(event);\n }\n\n if (this.props.maxLength === event.currentTarget.value.length) {\n this.handleUnexpectedInput(event.currentTarget.value);\n }\n };\n\n private handleUnexpectedInput = (value: string = this.props.value || '') => {\n if (this.props.onUnexpectedInput) {\n this.props.onUnexpectedInput(value);\n } else {\n this.blink();\n }\n };\n\n private resetFocus = () => this.setState({ focused: false });\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n const showClearIcon = this.props.showClearIcon;\n if (showClearIcon && getRootNode(this)?.contains(event.relatedTarget)) {\n this.setState({ focused: false });\n } else {\n const clearCrossShowed = this.getClearCrossShowed({ focused: false, hovered: this.state.hovered });\n this.setState({\n focused: false,\n clearCrossShowed,\n });\n this.props.onBlur?.(event);\n }\n };\n}\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export declare const getMenuItemPaddings: ({ menuItemPaddingX, menuItemPaddingY, }: Record<"menuItemPaddingX" | "menuItemPaddingY", string>) => Record<"paddingX" | "paddingY", string>;
|
|
1
2
|
export declare const menuItemSizeMixin: (menuItemPaddingX: string, menuItemPaddingY: string, menuItemLineHeight: string, menuItemFontSize: string) => string;
|
|
2
3
|
export declare const iconSizeMixin: (menuItemIconWidth: string, menuItemPaddingX: string) => string;
|
|
3
4
|
export declare const withIconSizeMixin: (menuItemPaddingForIcon: string) => string;
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
export var getMenuItemPaddings = function (_a) {
|
|
2
|
+
var menuItemPaddingX = _a.menuItemPaddingX, menuItemPaddingY = _a.menuItemPaddingY;
|
|
3
|
+
var paddingX = menuItemPaddingX;
|
|
4
|
+
var paddingY = menuItemPaddingY;
|
|
5
|
+
return { paddingX: paddingX, paddingY: paddingY };
|
|
6
|
+
};
|
|
2
7
|
export var menuItemSizeMixin = function (menuItemPaddingX, menuItemPaddingY, menuItemLineHeight, menuItemFontSize) {
|
|
3
8
|
var _a = getMenuItemPaddings({
|
|
4
9
|
menuItemPaddingX: menuItemPaddingX,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuItem.mixins.js","sourceRoot":"","sources":["MenuItem.mixins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"MenuItem.mixins.js","sourceRoot":"","sources":["MenuItem.mixins.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,mBAAmB,GAAG,UAAC,EAGsB;QAFxD,gBAAgB,sBAAA,EAChB,gBAAgB,sBAAA;IAEhB,IAAM,QAAQ,GAAG,gBAAgB,CAAC;IAClC,IAAM,QAAQ,GAAG,gBAAgB,CAAC;IAElC,OAAO,EAAE,QAAQ,UAAA,EAAE,QAAQ,UAAA,EAAE,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,iBAAiB,GAAG,UAC/B,gBAAwB,EACxB,gBAAwB,EACxB,kBAA0B,EAC1B,gBAAwB;IAElB,IAAA,KAAyB,mBAAmB,CAAC;QACjD,gBAAgB,kBAAA;QAChB,gBAAgB,kBAAA;KACjB,CAAC,EAHM,QAAQ,cAAA,EAAE,QAAQ,cAGxB,CAAC;IAEH,OAAO,6BACU,kBAAkB,+BACpB,gBAAgB,6BAClB,gBAAgB,cAAI,QAAQ,cAAI,QAAQ,cAAI,gBAAgB,UACxE,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,aAAa,GAAG,UAAC,iBAAyB,EAAE,gBAAwB;IAC/E,OAAO,uBACI,iBAAiB,0BAClB,QAAQ,CAAC,gBAAgB,CAAC,YACnC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,iBAAiB,GAAG,UAAC,sBAA8B;IAC9D,OAAO,8BACW,sBAAsB,UACvC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["export const getMenuItemPaddings = ({\n menuItemPaddingX,\n menuItemPaddingY,\n}: Record<'menuItemPaddingX' | 'menuItemPaddingY', string>): Record<'paddingX' | 'paddingY', string> => {\n const paddingX = menuItemPaddingX;\n const paddingY = menuItemPaddingY;\n\n return { paddingX, paddingY };\n};\n\nexport const menuItemSizeMixin = (\n menuItemPaddingX: string,\n menuItemPaddingY: string,\n menuItemLineHeight: string,\n menuItemFontSize: string,\n): string => {\n const { paddingX, paddingY } = getMenuItemPaddings({\n menuItemPaddingX,\n menuItemPaddingY,\n });\n\n return `\n line-height: ${menuItemLineHeight};\n font-size: ${menuItemFontSize};\n padding: ${menuItemPaddingY} ${paddingX} ${paddingY} ${menuItemPaddingX};\n `;\n};\n\nexport const iconSizeMixin = (menuItemIconWidth: string, menuItemPaddingX: string): string => {\n return `\n width: ${menuItemIconWidth};\n left: ${parseInt(menuItemPaddingX)}px;\n `;\n};\n\nexport const withIconSizeMixin = (menuItemPaddingForIcon: string): string => {\n return `\n padding-left: ${menuItemPaddingForIcon};\n `;\n};\n"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Theme } from '../../lib/theming/Theme.js';
|
|
2
|
-
|
|
2
|
+
import { getMenuItemPaddings } from './MenuItem.mixins.js';
|
|
3
|
+
export { getMenuItemPaddings };
|
|
3
4
|
export declare const getStyles: import("../../lib/theming/Emotion.js").StylesGetter<{
|
|
4
5
|
root(t: Theme): string;
|
|
5
6
|
rootSmall(t: Theme): string;
|
|
@@ -4,13 +4,8 @@ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cook
|
|
|
4
4
|
};
|
|
5
5
|
import { resetButton } from '../../lib/styles/Mixins.js';
|
|
6
6
|
import { memoizeGetStyles } from '../../lib/theming/Emotion.js';
|
|
7
|
-
import { iconSizeMixin, menuItemSizeMixin, withIconSizeMixin } from './MenuItem.mixins.js';
|
|
8
|
-
export
|
|
9
|
-
var menuItemPaddingX = _a.menuItemPaddingX, menuItemPaddingY = _a.menuItemPaddingY;
|
|
10
|
-
var paddingX = menuItemPaddingX;
|
|
11
|
-
var paddingY = menuItemPaddingY;
|
|
12
|
-
return { paddingX: paddingX, paddingY: paddingY };
|
|
13
|
-
};
|
|
7
|
+
import { getMenuItemPaddings, iconSizeMixin, menuItemSizeMixin, withIconSizeMixin } from './MenuItem.mixins.js';
|
|
8
|
+
export { getMenuItemPaddings };
|
|
14
9
|
export var getStyles = memoizeGetStyles(function (_a) {
|
|
15
10
|
var css = _a.css;
|
|
16
11
|
return ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuItem.styles.js","sourceRoot":"","sources":["MenuItem.styles.ts"],"names":[],"mappings":";;;;AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"MenuItem.styles.js","sourceRoot":"","sources":["MenuItem.styles.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { resetButton } from '../../lib/styles/Mixins.js';\nimport { memoizeGetStyles } from '../../lib/theming/Emotion.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { getMenuItemPaddings, iconSizeMixin, menuItemSizeMixin, withIconSizeMixin } from './MenuItem.mixins.js';\n\nexport { getMenuItemPaddings };\n\nexport const getStyles = memoizeGetStyles(({ css }: Emotion) => ({\n root(t: Theme) {\n return css`\n ${resetButton()};\n\n cursor: pointer;\n display: ${t.menuItemDisplay};\n position: relative;\n text-decoration: none;\n color: ${t.menuItemTextColor};\n border-radius: ${t.menuItemBorderRadius};\n\n button& {\n min-width: 100%;\n }\n\n &:nth-last-of-type(n + 2) {\n margin-bottom: ${t.menuItemGap};\n }\n `;\n },\n\n rootSmall(t: Theme) {\n return css`\n ${menuItemSizeMixin(\n t.menuItemPaddingXSmall,\n t.menuItemPaddingYSmall,\n t.menuItemLineHeightSmall,\n t.menuItemFontSizeSmall,\n )};\n `;\n },\n rootMedium(t: Theme) {\n return css`\n ${menuItemSizeMixin(\n t.menuItemPaddingXMedium,\n t.menuItemPaddingYMedium,\n t.menuItemLineHeightMedium,\n t.menuItemFontSizeMedium,\n )};\n `;\n },\n rootLarge(t: Theme) {\n return css`\n ${menuItemSizeMixin(\n t.menuItemPaddingXLarge,\n t.menuItemPaddingYLarge,\n t.menuItemLineHeightLarge,\n t.menuItemFontSizeLarge,\n )};\n `;\n },\n\n rootMobile(t: Theme) {\n return css`\n font-size: ${t.menuItemFontSizeMobile};\n line-height: ${t.menuItemLineHeightMobile};\n padding: ${t.menuItemPaddingMobile};\n `;\n },\n\n rootMobileLarge(t: Theme) {\n return css`\n font-size: ${t.mobileMenuItemFontSizeLarge};\n line-height: ${t.mobileMenuItemLineHeightLarge};\n padding: ${t.mobileMenuItemPaddingLarge};\n `;\n },\n rootMobileMedium(t: Theme) {\n return css`\n font-size: ${t.mobileMenuItemFontSizeMedium};\n line-height: ${t.mobileMenuItemLineHeightMedium};\n padding: ${t.mobileMenuItemPaddingMedium};\n `;\n },\n rootMobileSmall(t: Theme) {\n return css`\n font-size: ${t.mobileMenuItemFontSizeSmall};\n line-height: ${t.mobileMenuItemLineHeightSmall};\n padding: ${t.mobileMenuItemPaddingSmall};\n `;\n },\n\n hover(t: Theme) {\n // Color with !important in purpose to override `a:hover`\n return css`\n background: ${t.menuItemHoverBg} !important;\n color: ${t.menuItemHoverColor} !important;\n `;\n },\n selected(t: Theme) {\n return css`\n background: ${t.menuItemSelectedBg} !important;\n `;\n },\n disabled(t: Theme) {\n return css`\n background: ${t.menuItemDisabledBg};\n color: ${t.menuItemDisabledColor};\n cursor: default;\n `;\n },\n nonSelectable() {\n return css`\n cursor: default;\n `;\n },\n loose() {\n return css`\n padding-left: 15px;\n `;\n },\n withIconSmall(t: Theme) {\n return css`\n ${withIconSizeMixin(t.menuItemPaddingForIconSmall)}\n `;\n },\n withIconMedium(t: Theme) {\n return css`\n ${withIconSizeMixin(t.menuItemPaddingForIconMedium)}\n `;\n },\n withIconLarge(t: Theme) {\n return css`\n ${withIconSizeMixin(t.menuItemPaddingForIconLarge)}\n `;\n },\n comment(t: Theme) {\n return css`\n color: ${t.menuItemCommentColor};\n opacity: ${t.menuItemCommentOpacity};\n white-space: normal;\n padding-top: 4px;\n `;\n },\n commentHover(t: Theme) {\n return css`\n color: ${t.menuItemCommentColorHover};\n opacity: ${t.menuItemCommentOpacityHover};\n `;\n },\n icon() {\n return css`\n display: inline-block;\n position: absolute;\n transform: translateY(0px); // icon shifts one pixel up in firefox on medium size without this property\n `;\n },\n iconSmall(t: Theme) {\n return css`\n ${iconSizeMixin(t.menuItemIconWidthSmall, t.menuItemPaddingXSmall)};\n `;\n },\n iconMedium(t: Theme) {\n return css`\n ${iconSizeMixin(t.menuItemIconWidthMedium, t.menuItemPaddingXMedium)};\n `;\n },\n iconLarge(t: Theme) {\n return css`\n ${iconSizeMixin(t.menuItemIconWidthLarge, t.menuItemPaddingXLarge)};\n `;\n },\n mobileContentWithIcon() {\n return css`\n margin-left: 8px;\n `;\n },\n}));\n"]}
|
|
@@ -4,13 +4,8 @@ import { MiniModalBody } from './MiniModalBody.js';
|
|
|
4
4
|
import { MiniModalFooter } from './MiniModalFooter.js';
|
|
5
5
|
import { MiniModalHeader } from './MiniModalHeader.js';
|
|
6
6
|
import { MiniModalIndent } from './MiniModalIndent.js';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
readonly title: "MiniModal__title";
|
|
10
|
-
readonly description: "MiniModal__description";
|
|
11
|
-
readonly actions: "MiniModal__actions";
|
|
12
|
-
readonly indent: "MiniModal__indent";
|
|
13
|
-
};
|
|
7
|
+
import { MiniModalDataTids } from './tids.js';
|
|
8
|
+
export { MiniModalDataTids };
|
|
14
9
|
/**
|
|
15
10
|
* Модальное диалоговое окно, которое предполагает обязательный отклик пользователя по одному из доступных действий. Обёртка над Modal.
|
|
16
11
|
*
|
|
@@ -29,13 +29,8 @@ import { MiniModalBody } from './MiniModalBody.js';
|
|
|
29
29
|
import { MiniModalFooter } from './MiniModalFooter.js';
|
|
30
30
|
import { MiniModalHeader } from './MiniModalHeader.js';
|
|
31
31
|
import { MiniModalIndent } from './MiniModalIndent.js';
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
title: 'MiniModal__title',
|
|
35
|
-
description: 'MiniModal__description',
|
|
36
|
-
actions: 'MiniModal__actions',
|
|
37
|
-
indent: 'MiniModal__indent',
|
|
38
|
-
};
|
|
32
|
+
import { MiniModalDataTids } from './tids.js';
|
|
33
|
+
export { MiniModalDataTids };
|
|
39
34
|
/**
|
|
40
35
|
* Модальное диалоговое окно, которое предполагает обязательный отклик пользователя по одному из доступных действий. Обёртка над Modal.
|
|
41
36
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MiniModal.js","sourceRoot":"","sources":["MiniModal.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"MiniModal.js","sourceRoot":"","sources":["MiniModal.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,IAAM,SAAS,GAAG,iBAAiB,CASxC,WAAW,EAAE,UAAC,EAAiE,EAAE,GAAG;IAApE,IAAA,QAAQ,cAAA,EAAS,UAAU,WAAA,EAAE,gBAAgB,sBAAA,EAAE,KAAK,WAAA,EAAK,IAAI,cAA/D,kDAAiE,CAAF;IAC7E,IAAM,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAE9C,OAAO,CACL,oBAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,iBAAiB,CAAC,YAAY,EAAE,UAAU,CAAC;QACvE,oBAAC,KAAK,aAAC,KAAK,EAAE,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,GAAG,EAAE,gBAAgB,EAAE,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,QAAQ,EAAE,OAAO,QAAC,GAAG,EAAE,GAAG,IAAM,IAAI,GACnG,QAAQ,CACH,CACc,CACzB,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,MAAM,GAAG,eAAe,CAAC;AACnC,SAAS,CAAC,MAAM,GAAG,eAAe,CAAC;AACnC,SAAS,CAAC,MAAM,GAAG,eAAe,CAAC;AACnC,SAAS,CAAC,IAAI,GAAG,aAAa,CAAC","sourcesContent":["import React, { useContext } from 'react';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { Modal } from '../Modal/index.js';\nimport type { ModalProps } from '../Modal/index.js';\nimport { getMiniModalTheme } from './getMiniModalTheme.js';\nimport { MiniModalBody } from './MiniModalBody.js';\nimport { MiniModalFooter } from './MiniModalFooter.js';\nimport { MiniModalHeader } from './MiniModalHeader.js';\nimport { MiniModalIndent } from './MiniModalIndent.js';\nimport { MiniModalDataTids } from './tids.js';\n\nexport { MiniModalDataTids };\n\n/**\n * Модальное диалоговое окно, которое предполагает обязательный отклик пользователя по одному из доступных действий. Обёртка над Modal.\n *\n * Состоит из набора подкомпонентов:\n * - `MiniModal.Header`\n * - `MiniModal.Body`\n * - `MiniModal.Footer`\n * - `MiniModal.Indent`\n *\n * Тот же набор доступен как `MiniModalHeader`, `MiniModalBody`, `MiniModalFooter`, `MiniModalIndent`.\n *\n */\nexport const MiniModal = forwardRefAndName<\n Modal,\n ModalProps,\n {\n Header: typeof MiniModalHeader;\n Indent: typeof MiniModalIndent;\n Footer: typeof MiniModalFooter;\n Body: typeof MiniModalBody;\n }\n>('MiniModal', ({ children, theme: propsTheme, mobileAppearance, width, ...rest }, ref) => {\n const contextTheme = useContext(ThemeContext);\n\n return (\n <ThemeContext.Provider value={getMiniModalTheme(contextTheme, propsTheme)}>\n <Modal width={width ?? 400} mobileAppearance={mobileAppearance ?? 'center'} noClose ref={ref} {...rest}>\n {children}\n </Modal>\n </ThemeContext.Provider>\n );\n});\n\nMiniModal.Header = MiniModalHeader;\nMiniModal.Footer = MiniModalFooter;\nMiniModal.Indent = MiniModalIndent;\nMiniModal.Body = MiniModalBody;\n"]}
|
|
@@ -25,8 +25,8 @@ import { forwardRefAndName } from '../../lib/forwardRefAndName.js';
|
|
|
25
25
|
import { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';
|
|
26
26
|
import { ThemeContext } from '../../lib/theming/ThemeContext.js';
|
|
27
27
|
import { Modal } from '../Modal/index.js';
|
|
28
|
-
import { MiniModalDataTids } from './MiniModal.js';
|
|
29
28
|
import { getStyles } from './MiniModal.styles.js';
|
|
29
|
+
import { MiniModalDataTids } from './tids.js';
|
|
30
30
|
/**
|
|
31
31
|
* Текстовый блок пояснения в мини-модалке.
|
|
32
32
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MiniModalBody.js","sourceRoot":"","sources":["MiniModalBody.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"MiniModalBody.js","sourceRoot":"","sources":["MiniModalBody.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C;;;;GAIG;AACH,MAAM,CAAC,IAAM,aAAa,GAAG,iBAAiB,CAC5C,eAAe,EACf,UAAC,EAAqB,EAAE,GAAG;IAAxB,IAAA,QAAQ,cAAA,EAAK,IAAI,cAAnB,YAAqB,CAAF;IACV,IAAA,EAAE,GAAK,UAAU,EAAE,GAAjB,CAAkB;IAC5B,IAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAEpC,OAAO,CACL,oBAAC,KAAK,CAAC,IAAI,eAAK,IAAI;QAClB,oBAAC,YAAY,CAAC,QAAQ,QACnB,UAAC,KAAK;YACL,OAAO,CACL,yCAAe,iBAAiB,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAC7F,QAAQ,CACL,CACP,CAAC;QACJ,CAAC,CACqB,CACb,CACd,CAAC;AACJ,CAAC,CACF,CAAC","sourcesContent":["import React from 'react';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { Modal } from '../Modal/index.js';\nimport type { ModalBodyProps } from '../Modal/index.js';\nimport { getStyles } from './MiniModal.styles.js';\nimport { MiniModalDataTids } from './tids.js';\n\n/**\n * Текстовый блок пояснения в мини-модалке.\n *\n * @visibleName MiniModal.Body\n */\nexport const MiniModalBody = forwardRefAndName<HTMLDivElement, ModalBodyProps>(\n 'MiniModalBody',\n ({ children, ...rest }, ref) => {\n const { cx } = useEmotion();\n const styles = useStyles(getStyles);\n\n return (\n <Modal.Body {...rest}>\n <ThemeContext.Consumer>\n {(theme) => {\n return (\n <div data-tid={MiniModalDataTids.description} ref={ref} className={cx(styles.description(theme))}>\n {children}\n </div>\n );\n }}\n </ThemeContext.Consumer>\n </Modal.Body>\n );\n },\n);\n"]}
|
|
@@ -25,8 +25,8 @@ import { forwardRefAndName } from '../../lib/forwardRefAndName.js';
|
|
|
25
25
|
import { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';
|
|
26
26
|
import { ThemeContext } from '../../lib/theming/ThemeContext.js';
|
|
27
27
|
import { Modal } from '../Modal/index.js';
|
|
28
|
-
import { MiniModalDataTids } from './MiniModal.js';
|
|
29
28
|
import { getStyles } from './MiniModal.styles.js';
|
|
29
|
+
import { MiniModalDataTids } from './tids.js';
|
|
30
30
|
/**
|
|
31
31
|
* Футер мини-модалки: зона действий с раскладкой кнопок.
|
|
32
32
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MiniModalFooter.js","sourceRoot":"","sources":["MiniModalFooter.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"MiniModalFooter.js","sourceRoot":"","sources":["MiniModalFooter.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAQ9C;;;;GAIG;AACH,MAAM,CAAC,IAAM,eAAe,GAAG,iBAAiB,CAC9C,iBAAiB,EACjB,UAAC,EAAwC,EAAE,GAAG;IAA3C,IAAA,iBAAiB,EAAjB,SAAS,mBAAG,KAAK,KAAA,EAAE,QAAQ,cAAA,EAAK,IAAI,cAAtC,yBAAwC,CAAF;IACrC,IAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAC/B,IAAA,EAAE,GAAK,UAAU,EAAE,GAAjB,CAAkB;IAC5B,IAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAEpC,IAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAM,UAAU,GAAG,aAAa,GAAG,CAAC,IAAI,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAEnF,OAAO,CACL,oBAAC,KAAK,CAAC,MAAM,eAAK,IAAI;QACpB,6BACE,GAAG,EAAE,GAAG,cACE,iBAAiB,CAAC,OAAO,EACnC,SAAS,EAAE,EAAE,CACX,MAAM,CAAC,OAAO,EAAE,EAChB,UAAU,KAAK,KAAK,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,EAChD,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CACvD,IAEA,QAAQ,CACL,CACO,CAChB,CAAC;AACJ,CAAC,CACF,CAAC","sourcesContent":["import React, { useContext } from 'react';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { Modal } from '../Modal/index.js';\nimport type { ModalFooterProps } from '../Modal/index.js';\nimport { getStyles } from './MiniModal.styles.js';\nimport { MiniModalDataTids } from './tids.js';\n\ninterface MiniModalFooterProps extends ModalFooterProps {\n /** Задает направление позиционирования кнопок. `row` работает только для 2 элементов, в других случаях автоматически включиться `column`.\n * @default row */\n direction?: 'row' | 'column';\n}\n\n/**\n * Футер мини-модалки: зона действий с раскладкой кнопок.\n *\n * @visibleName MiniModal.Footer\n */\nexport const MiniModalFooter = forwardRefAndName<HTMLDivElement, MiniModalFooterProps>(\n 'MiniModalFooter',\n ({ direction = 'row', children, ...rest }, ref) => {\n const theme = useContext(ThemeContext);\n const { cx } = useEmotion();\n const styles = useStyles(getStyles);\n\n const childrenCount = React.Children.count(children);\n const _direction = childrenCount > 2 || childrenCount === 1 ? 'column' : direction;\n\n return (\n <Modal.Footer {...rest}>\n <div\n ref={ref}\n data-tid={MiniModalDataTids.actions}\n className={cx(\n styles.actions(),\n _direction === 'row' && styles.actionsRow(theme),\n _direction === 'column' && styles.actionsColumn(theme),\n )}\n >\n {children}\n </div>\n </Modal.Footer>\n );\n },\n);\n"]}
|
|
@@ -26,8 +26,8 @@ import { forwardRefAndName } from '../../lib/forwardRefAndName.js';
|
|
|
26
26
|
import { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';
|
|
27
27
|
import { ThemeContext } from '../../lib/theming/ThemeContext.js';
|
|
28
28
|
import { Modal } from '../Modal/index.js';
|
|
29
|
-
import { MiniModalDataTids } from './MiniModal.js';
|
|
30
29
|
import { getStyles } from './MiniModal.styles.js';
|
|
30
|
+
import { MiniModalDataTids } from './tids.js';
|
|
31
31
|
/**
|
|
32
32
|
* Шапка мини-модалки: заголовок и опциональная иконка.
|
|
33
33
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MiniModalHeader.js","sourceRoot":"","sources":["MiniModalHeader.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,oEAAoE,CAAC;AAC7G,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"MiniModalHeader.js","sourceRoot":"","sources":["MiniModalHeader.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,oEAAoE,CAAC;AAC7G,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAQ9C;;;;GAIG;AACH,MAAM,CAAC,IAAM,eAAe,GAAG,iBAAiB,CAC9C,iBAAiB,EACjB,UAAC,EAAyD,EAAE,GAAG;;IAA5D,IAAA,YAAkC,EAAlC,IAAI,mBAAG,oBAAC,uBAAuB,OAAG,KAAA,EAAE,QAAQ,cAAA,EAAK,IAAI,cAAvD,oBAAyD,CAAF;IACtD,IAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAC/B,IAAA,EAAE,GAAK,UAAU,EAAE,GAAjB,CAAkB;IAC5B,IAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAEpC,OAAO,CACL,oBAAC,KAAK,CAAC,MAAM,eAAK,IAAI;QACpB,6BAAK,GAAG,EAAE,GAAG;YACV,IAAI,IAAI,CACP,yCAAe,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,IAC5D,IAAI,CACD,CACP;YACA,QAAQ,IAAI,CACX,yCACY,iBAAiB,CAAC,KAAK,EACjC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE;oBAC1B,GAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAG,CAAC,CAAC,IAAI;wBACrC,IAED,QAAQ,CACL,CACP,CACG,CACO,CAChB,CAAC;AACJ,CAAC,CACF,CAAC","sourcesContent":["import React, { useContext } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { InfoCircleIcon64Regular } from '../../internal/icons2022/InfoCircleIcon/InfoCircleIcon64Regular.js';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { Modal } from '../Modal/index.js';\nimport type { ModalHeaderProps } from '../Modal/index.js';\nimport { getStyles } from './MiniModal.styles.js';\nimport { MiniModalDataTids } from './tids.js';\n\ninterface MiniModalHeaderProps extends ModalHeaderProps {\n /** Задает иконку в шапку компонента.\n * @default InfoCircleIcon64Regular */\n icon?: ReactNode;\n}\n\n/**\n * Шапка мини-модалки: заголовок и опциональная иконка.\n *\n * @visibleName MiniModal.Header\n */\nexport const MiniModalHeader = forwardRefAndName<HTMLDivElement, MiniModalHeaderProps>(\n 'MiniModalHeader',\n ({ icon = <InfoCircleIcon64Regular />, children, ...rest }, ref) => {\n const theme = useContext(ThemeContext);\n const { cx } = useEmotion();\n const styles = useStyles(getStyles);\n\n return (\n <Modal.Header {...rest}>\n <div ref={ref}>\n {icon && (\n <div data-tid={MiniModalDataTids.icon} className={styles.icon()}>\n {icon}\n </div>\n )}\n {children && (\n <div\n data-tid={MiniModalDataTids.title}\n className={cx(styles.title(), {\n [styles.titleWithIcon(theme)]: !!icon,\n })}\n >\n {children}\n </div>\n )}\n </div>\n </Modal.Header>\n );\n },\n);\n"]}
|
|
@@ -24,8 +24,8 @@ import React, { useContext } from 'react';
|
|
|
24
24
|
import { forwardRefAndName } from '../../lib/forwardRefAndName.js';
|
|
25
25
|
import { useStyles } from '../../lib/renderEnvironment/index.js';
|
|
26
26
|
import { ThemeContext } from '../../lib/theming/ThemeContext.js';
|
|
27
|
-
import { MiniModalDataTids } from './MiniModal.js';
|
|
28
27
|
import { getStyles } from './MiniModal.styles.js';
|
|
28
|
+
import { MiniModalDataTids } from './tids.js';
|
|
29
29
|
/**
|
|
30
30
|
* Вертикальный отступ между группами элементов в зоне футера мини-модалки.
|
|
31
31
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MiniModalIndent.js","sourceRoot":"","sources":["MiniModalIndent.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"MiniModalIndent.js","sourceRoot":"","sources":["MiniModalIndent.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C;;;;GAIG;AACH,MAAM,CAAC,IAAM,eAAe,GAAG,iBAAiB,CAC9C,iBAAiB,EACjB,UAAC,EAAqB,EAAE,GAAG;IAAxB,IAAA,QAAQ,cAAA,EAAK,IAAI,cAAnB,YAAqB,CAAF;IAClB,IAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IACpC,IAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAEvC,OAAO,kDAAe,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAM,IAAI,EAAI,CAAC;AACjH,CAAC,CACF,CAAC","sourcesContent":["import React, { useContext } from 'react';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { useStyles } from '../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { getStyles } from './MiniModal.styles.js';\nimport { MiniModalDataTids } from './tids.js';\n\n/**\n * Вертикальный отступ между группами элементов в зоне футера мини-модалки.\n *\n * @visibleName MiniModal.Indent\n */\nexport const MiniModalIndent = forwardRefAndName<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n 'MiniModalIndent',\n ({ children, ...rest }, ref) => {\n const styles = useStyles(getStyles);\n const theme = useContext(ThemeContext);\n\n return <div data-tid={MiniModalDataTids.indent} ref={ref} className={styles.actionsIndent(theme)} {...rest} />;\n },\n);\n"]}
|