@skbkontur/react-ui 6.1.7-41945.0 → 6.1.7-4c72d.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.
@@ -7,7 +7,7 @@ export declare const getStyles: import("../../lib/theming/Emotion.js").StylesGet
7
7
  itemMedium(t: Theme): string;
8
8
  itemLarge(t: Theme): string;
9
9
  itemValue(): string;
10
- itemLabel(t: Theme): string;
11
- itemLabelDisabled(t: Theme): string;
10
+ itemLabel(): string;
11
+ itemLabelColor(t: Theme): string;
12
12
  itemLabelHover(t: Theme): string;
13
13
  }>;
@@ -27,11 +27,11 @@ export var getStyles = memoizeGetStyles(function (_a) {
27
27
  itemValue: function () {
28
28
  return css(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n "], ["\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n "])));
29
29
  },
30
- itemLabel: function (t) {
31
- return css(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n color: ", ";\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n "], ["\n color: ", ";\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n "])), t.menuItemCommentColor);
30
+ itemLabel: function () {
31
+ return css(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n "], ["\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n "])));
32
32
  },
33
- itemLabelDisabled: function (t) {
34
- return css(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n color: ", ";\n "], ["\n color: ", ";\n "])), t.menuItemDisabledColor);
33
+ itemLabelColor: function (t) {
34
+ return css(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n color: ", ";\n "], ["\n color: ", ";\n "])), t.menuItemCommentColor);
35
35
  },
36
36
  itemLabelHover: function (t) {
37
37
  return css(templateObject_10 || (templateObject_10 = __makeTemplateObject(["\n color: ", ";\n "], ["\n color: ", ";\n "])), t.menuItemCommentColorHover);
@@ -1 +1 @@
1
- {"version":3,"file":"TimePicker.styles.js","sourceRoot":"","sources":["TimePicker.styles.ts"],"names":[],"mappings":";;;;AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGhE,MAAM,CAAC,IAAM,SAAS,GAAG,gBAAgB,CAAC,UAAC,EAAgB;QAAd,GAAG,SAAA;IAAgB,OAAA,CAAC;QAC/D,IAAI;YACF,OAAO,GAAG,gKAAA,6FAIT,KAAC;QACJ,CAAC;QAED,KAAK,YAAC,CAAQ;YACZ,OAAO,GAAG,6NAAA,sBACM,EAAmB,0BAChB,EAA6B,uBAChC,EAAuB,6EAGtC,KALe,CAAC,CAAC,iBAAiB,EAChB,CAAC,CAAC,2BAA2B,EAChC,CAAC,CAAC,qBAAqB,EAGrC;QACJ,CAAC;QAED,IAAI;YACF,OAAO,GAAG,4LAAA,yHAKT,KAAC;QACJ,CAAC;QAED,SAAS,YAAC,CAAQ;YAChB,OAAO,GAAG,6FAAA,eACD,EAAwB,SAChC,KADQ,CAAC,CAAC,sBAAsB,EAC/B;QACJ,CAAC;QAED,UAAU,YAAC,CAAQ;YACjB,OAAO,GAAG,6FAAA,eACD,EAAyB,SACjC,KADQ,CAAC,CAAC,uBAAuB,EAChC;QACJ,CAAC;QAED,SAAS,YAAC,CAAQ;YAChB,OAAO,GAAG,6FAAA,eACD,EAAwB,SAChC,KADQ,CAAC,CAAC,sBAAsB,EAC/B;QACJ,CAAC;QAED,SAAS;YACP,OAAO,GAAG,kJAAA,+EAGT,KAAC;QACJ,CAAC;QAED,SAAS,YAAC,CAAQ;YAChB,OAAO,GAAG,sKAAA,iBACC,EAAsB,gFAGhC,KAHU,CAAC,CAAC,oBAAoB,EAG/B;QACJ,CAAC;QAED,iBAAiB,YAAC,CAAQ;YACxB,OAAO,GAAG,+FAAA,iBACC,EAAuB,SACjC,KADU,CAAC,CAAC,qBAAqB,EAChC;QACJ,CAAC;QAED,cAAc,YAAC,CAAQ;YACrB,OAAO,GAAG,iGAAA,iBACC,EAA2B,SACrC,KADU,CAAC,CAAC,yBAAyB,EACpC;QACJ,CAAC;KACF,CAAC;AAxE8D,CAwE9D,CAAC,CAAC","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { memoizeGetStyles } from '../../lib/theming/Emotion.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\n\nexport const getStyles = memoizeGetStyles(({ css }: Emotion) => ({\n root() {\n return css`\n display: inline-block;\n position: relative;\n line-height: normal;\n `;\n },\n\n popup(t: Theme) {\n return css`\n background: ${t.timePickerPopupBg};\n border-radius: ${t.timePickerPopupBorderRadius};\n box-shadow: ${t.timePickerPopupShadow};\n font-variant-numeric: tabular-nums;\n overflow: hidden;\n `;\n },\n\n item() {\n return css`\n display: flex;\n align-items: center;\n width: 100%;\n font-variant-numeric: tabular-nums;\n `;\n },\n\n itemSmall(t: Theme) {\n return css`\n gap: ${t.timePickerItemGapSmall};\n `;\n },\n\n itemMedium(t: Theme) {\n return css`\n gap: ${t.timePickerItemGapMedium};\n `;\n },\n\n itemLarge(t: Theme) {\n return css`\n gap: ${t.timePickerItemGapLarge};\n `;\n },\n\n itemValue() {\n return css`\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n `;\n },\n\n itemLabel(t: Theme) {\n return css`\n color: ${t.menuItemCommentColor};\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n `;\n },\n\n itemLabelDisabled(t: Theme) {\n return css`\n color: ${t.menuItemDisabledColor};\n `;\n },\n\n itemLabelHover(t: Theme) {\n return css`\n color: ${t.menuItemCommentColorHover};\n `;\n },\n}));\n"]}
1
+ {"version":3,"file":"TimePicker.styles.js","sourceRoot":"","sources":["TimePicker.styles.ts"],"names":[],"mappings":";;;;AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGhE,MAAM,CAAC,IAAM,SAAS,GAAG,gBAAgB,CAAC,UAAC,EAAgB;QAAd,GAAG,SAAA;IAAgB,OAAA,CAAC;QAC/D,IAAI;YACF,OAAO,GAAG,gKAAA,6FAIT,KAAC;QACJ,CAAC;QAED,KAAK,YAAC,CAAQ;YACZ,OAAO,GAAG,6NAAA,sBACM,EAAmB,0BAChB,EAA6B,uBAChC,EAAuB,6EAGtC,KALe,CAAC,CAAC,iBAAiB,EAChB,CAAC,CAAC,2BAA2B,EAChC,CAAC,CAAC,qBAAqB,EAGrC;QACJ,CAAC;QAED,IAAI;YACF,OAAO,GAAG,4LAAA,yHAKT,KAAC;QACJ,CAAC;QAED,SAAS,YAAC,CAAQ;YAChB,OAAO,GAAG,6FAAA,eACD,EAAwB,SAChC,KADQ,CAAC,CAAC,sBAAsB,EAC/B;QACJ,CAAC;QAED,UAAU,YAAC,CAAQ;YACjB,OAAO,GAAG,6FAAA,eACD,EAAyB,SACjC,KADQ,CAAC,CAAC,uBAAuB,EAChC;QACJ,CAAC;QAED,SAAS,YAAC,CAAQ;YAChB,OAAO,GAAG,6FAAA,eACD,EAAwB,SAChC,KADQ,CAAC,CAAC,sBAAsB,EAC/B;QACJ,CAAC;QAED,SAAS;YACP,OAAO,GAAG,kJAAA,+EAGT,KAAC;QACJ,CAAC;QAED,SAAS;YACP,OAAO,GAAG,kJAAA,+EAGT,KAAC;QACJ,CAAC;QAED,cAAc,YAAC,CAAQ;YACrB,OAAO,GAAG,+FAAA,iBACC,EAAsB,SAChC,KADU,CAAC,CAAC,oBAAoB,EAC/B;QACJ,CAAC;QAED,cAAc,YAAC,CAAQ;YACrB,OAAO,GAAG,iGAAA,iBACC,EAA2B,SACrC,KADU,CAAC,CAAC,yBAAyB,EACpC;QACJ,CAAC;KACF,CAAC;AAvE8D,CAuE9D,CAAC,CAAC","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { memoizeGetStyles } from '../../lib/theming/Emotion.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\n\nexport const getStyles = memoizeGetStyles(({ css }: Emotion) => ({\n root() {\n return css`\n display: inline-block;\n position: relative;\n line-height: normal;\n `;\n },\n\n popup(t: Theme) {\n return css`\n background: ${t.timePickerPopupBg};\n border-radius: ${t.timePickerPopupBorderRadius};\n box-shadow: ${t.timePickerPopupShadow};\n font-variant-numeric: tabular-nums;\n overflow: hidden;\n `;\n },\n\n item() {\n return css`\n display: flex;\n align-items: center;\n width: 100%;\n font-variant-numeric: tabular-nums;\n `;\n },\n\n itemSmall(t: Theme) {\n return css`\n gap: ${t.timePickerItemGapSmall};\n `;\n },\n\n itemMedium(t: Theme) {\n return css`\n gap: ${t.timePickerItemGapMedium};\n `;\n },\n\n itemLarge(t: Theme) {\n return css`\n gap: ${t.timePickerItemGapLarge};\n `;\n },\n\n itemValue() {\n return css`\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n `;\n },\n\n itemLabel() {\n return css`\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n `;\n },\n\n itemLabelColor(t: Theme) {\n return css`\n color: ${t.menuItemCommentColor};\n `;\n },\n\n itemLabelHover(t: Theme) {\n return css`\n color: ${t.menuItemCommentColorHover};\n `;\n },\n}));\n"]}
@@ -20,11 +20,10 @@ var __rest = (this && this.__rest) || function (s, e) {
20
20
  }
21
21
  return t;
22
22
  };
23
- import { cx } from '@emotion/css';
24
23
  import React, { useContext } from 'react';
25
24
  import { Menu } from '../../internal/Menu/index.js';
26
25
  import { MenuMessage } from '../../internal/MenuMessage/index.js';
27
- import { useStyles } from '../../lib/renderEnvironment/index.js';
26
+ import { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';
28
27
  import { ThemeContext } from '../../lib/theming/ThemeContext.js';
29
28
  import { isMenuFooter } from '../MenuFooter/index.js';
30
29
  import { isMenuHeader } from '../MenuHeader/index.js';
@@ -55,6 +54,7 @@ var ItemRoot = React.forwardRef(function (_a, ref) {
55
54
  export var TimePickerItems = function (props) {
56
55
  var itemIdPrefix = props.itemIdPrefix, format = props.format, size = props.size, resolvedItems = props.resolvedItems, renderItem = props.renderItem, highlightedItemIndex = props.highlightedItemIndex, selectedValue = props.selectedValue, itemRefs = props.itemRefs, maxHeight = props.maxHeight, disableScrollContainer = props.disableScrollContainer, isLoading = props.isLoading, isFailed = props.isFailed, errorNetworkButton = props.errorNetworkButton, errorNetworkMessage = props.errorNetworkMessage, onRetry = props.onRetry, onSelectItem = props.onSelectItem;
57
56
  var theme = useContext(ThemeContext);
57
+ var cx = useEmotion().cx;
58
58
  var styles = useStyles(getStyles);
59
59
  var itemSizeClassName = getItemSizeClassName(styles, theme, size);
60
60
  if (isFailed) {
@@ -108,9 +108,9 @@ export var TimePickerItems = function (props) {
108
108
  }
109
109
  } }, renderItem ? (renderItem(resolvedItem.item, activeState !== null && activeState !== void 0 ? activeState : null)) : (React.createElement(React.Fragment, null,
110
110
  React.createElement("span", { className: styles.itemValue() }, normalizedItem),
111
- resolvedItem.label && (React.createElement("span", { className: cx(styles.itemLabel(theme), (_a = {},
112
- _a[styles.itemLabelDisabled(theme)] = resolvedItem.disabled,
113
- _a[styles.itemLabelHover(theme)] = activeState === 'hover',
111
+ resolvedItem.label && (React.createElement("span", { className: cx(styles.itemLabel(), (_a = {},
112
+ _a[styles.itemLabelColor(theme)] = !resolvedItem.disabled,
113
+ _a[styles.itemLabelHover(theme)] = !resolvedItem.disabled && activeState === 'hover',
114
114
  _a)) }, resolvedItem.label))))));
115
115
  }));
116
116
  })));
@@ -1 +1 @@
1
- {"version":3,"file":"TimePickerItems.js","sourceRoot":"","sources":["TimePickerItems.tsx"],"names":[],"mappings":"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","sourcesContent":["import { cx } from '@emotion/css';\nimport React, { useContext } from 'react';\n\nimport { Menu } from '../../internal/Menu/index.js';\nimport { MenuMessage } from '../../internal/MenuMessage/index.js';\nimport { useStyles } from '../../lib/renderEnvironment/index.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { isMenuFooter } from '../MenuFooter/index.js';\nimport { isMenuHeader } from '../MenuHeader/index.js';\nimport { isMenuItem, MenuItem, type MenuItemProps, type MenuItemState } from '../MenuItem/index.js';\nimport { Spinner } from '../Spinner/index.js';\nimport { TimePickerDataTids } from './helpers/TimePicker.constants.js';\nimport {\n isNavigableMenuElement,\n isTimeMenuItem,\n type TimeFormat,\n type TimeItemValue,\n type TimePickerMenuItem,\n} from './helpers/TimePicker.shared.js';\nimport { normalizeTimeValue } from './helpers/TimePicker.value.js';\nimport { getStyles } from './TimePicker.styles.js';\n\nconst getItemSizeClassName = (styles: ReturnType<typeof getStyles>, theme: Theme, size: SizeProp): string => {\n switch (size) {\n case 'large':\n return styles.itemLarge(theme);\n case 'medium':\n return styles.itemMedium(theme);\n case 'small':\n default:\n return styles.itemSmall(theme);\n }\n};\n\nconst ItemRoot = React.forwardRef<\n HTMLElement,\n React.HTMLAttributes<HTMLElement> & { disabled?: boolean; state?: MenuItemState }\n>(({ disabled = false, state: _state, ...props }, ref) => {\n if (disabled) {\n return <div {...props} ref={ref as React.Ref<HTMLDivElement>} />;\n }\n\n return <button {...props} ref={ref as React.Ref<HTMLButtonElement>} type={'button'} />;\n});\n\ninterface TimePickerItemsProps<T extends TimeItemValue> {\n itemIdPrefix?: string;\n format: TimeFormat;\n size: SizeProp;\n resolvedItems: Array<TimePickerMenuItem<T>>;\n renderItem?: (item: T, state: MenuItemState) => React.ReactNode;\n highlightedItemIndex: number | null;\n selectedValue: string;\n itemRefs?: React.RefObject<Map<number, HTMLSpanElement>>;\n maxHeight?: React.CSSProperties['maxHeight'];\n disableScrollContainer?: boolean;\n isLoading?: boolean;\n isFailed: boolean;\n errorNetworkButton: string;\n errorNetworkMessage: string;\n onRetry(): void;\n onSelectItem(item: T): void;\n}\n\nexport const TimePickerItems = <T extends TimeItemValue>(props: TimePickerItemsProps<T>) => {\n const {\n itemIdPrefix,\n format,\n size,\n resolvedItems,\n renderItem,\n highlightedItemIndex,\n selectedValue,\n itemRefs,\n maxHeight,\n disableScrollContainer,\n isLoading,\n isFailed,\n errorNetworkButton,\n errorNetworkMessage,\n onRetry,\n onSelectItem,\n } = props;\n\n const theme = useContext(ThemeContext);\n const styles = useStyles(getStyles);\n const itemSizeClassName = getItemSizeClassName(styles, theme, size);\n\n if (isFailed) {\n return (\n <Menu\n hasMargin={false}\n width={'100%'}\n maxHeight={maxHeight}\n disableScrollContainer={disableScrollContainer}\n data-tid={TimePickerDataTids.failed}\n >\n <MenuMessage size={size} as={'div'}>\n <div style={{ maxWidth: 300, whiteSpace: 'normal' }}>{errorNetworkMessage}</div>\n </MenuMessage>\n <MenuItem onClick={onRetry} size={size} isMobile={disableScrollContainer}>\n {errorNetworkButton}\n </MenuItem>\n </Menu>\n );\n }\n\n if (isLoading && resolvedItems.length === 0) {\n return (\n <Menu\n hasMargin={false}\n width={'100%'}\n maxHeight={maxHeight}\n disableScrollContainer={disableScrollContainer}\n data-tid={TimePickerDataTids.loading}\n >\n <MenuMessage size={size} as={'div'}>\n <Spinner size={'small'} dimmed />\n </MenuMessage>\n </Menu>\n );\n }\n\n return (\n <Menu hasMargin={false} width={'100%'} maxHeight={maxHeight} disableScrollContainer={disableScrollContainer}>\n {resolvedItems.map((resolvedItem, index) => {\n if (!isTimeMenuItem(resolvedItem)) {\n const element = typeof resolvedItem === 'function' ? resolvedItem() : resolvedItem;\n const key = element.key ?? index;\n\n if (isMenuItem(element)) {\n const menuItemProps = element.props as MenuItemProps;\n // Навигация смотрит на исходный элемент источника, поэтому пункт-функция в нее не попадает:\n // выглядеть как доступная опция он не должен.\n const isNavigable = isNavigableMenuElement(resolvedItem);\n const isHighlighted = isNavigable && highlightedItemIndex === index;\n\n return React.cloneElement(element, {\n key,\n isMobile: disableScrollContainer,\n size,\n id: menuItemProps.id ?? (isNavigable && itemIdPrefix ? `${itemIdPrefix}-item-${index}` : undefined),\n role: menuItemProps.role ?? 'option',\n 'aria-selected': menuItemProps['aria-selected'] ?? false,\n 'aria-disabled': menuItemProps['aria-disabled'] ?? (isNavigable ? undefined : true),\n ...(isHighlighted ? { state: 'hover' } : null),\n } as MenuItemProps);\n }\n\n if (isMenuHeader(element) || isMenuFooter(element)) {\n return React.cloneElement(element, { key, size });\n }\n\n return React.cloneElement(element, { key });\n }\n\n const normalizedItem = normalizeTimeValue(resolvedItem.value, format);\n\n let state: 'hover' | 'selected' | undefined;\n\n if (highlightedItemIndex === index) {\n state = 'hover';\n } else if (normalizedItem === selectedValue) {\n state = 'selected';\n }\n\n return (\n <MenuItem\n key={`${resolvedItem.value}-${index}`}\n id={itemIdPrefix ? `${itemIdPrefix}-item-${index}` : undefined}\n role={'option'}\n aria-selected={normalizedItem === selectedValue}\n aria-disabled={resolvedItem.disabled || undefined}\n component={ItemRoot}\n disabled={resolvedItem.disabled}\n isNotSelectable={resolvedItem.disabled}\n size={size}\n state={state}\n onClick={resolvedItem.disabled ? undefined : () => onSelectItem(resolvedItem.item)}\n >\n {(activeState) => (\n <span\n data-tid={TimePickerDataTids.item}\n className={cx(styles.item(), itemSizeClassName)}\n ref={(node) => {\n if (!itemRefs) {\n return;\n }\n\n if (node) {\n itemRefs.current.set(index, node);\n } else {\n itemRefs.current.delete(index);\n }\n }}\n >\n {renderItem ? (\n renderItem(resolvedItem.item, activeState ?? null)\n ) : (\n <>\n <span className={styles.itemValue()}>{normalizedItem}</span>\n {resolvedItem.label && (\n <span\n className={cx(styles.itemLabel(theme), {\n [styles.itemLabelDisabled(theme)]: resolvedItem.disabled,\n [styles.itemLabelHover(theme)]: activeState === 'hover',\n })}\n >\n {resolvedItem.label}\n </span>\n )}\n </>\n )}\n </span>\n )}\n </MenuItem>\n );\n })}\n </Menu>\n );\n};\n"]}
1
+ {"version":3,"file":"TimePickerItems.js","sourceRoot":"","sources":["TimePickerItems.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAE7E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEjE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAA0C,MAAM,sBAAsB,CAAC;AACpG,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EACL,sBAAsB,EACtB,cAAc,GAIf,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,IAAM,oBAAoB,GAAG,UAAC,MAAoC,EAAE,KAAY,EAAE,IAAc;IAC9F,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACjC,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAClC,KAAK,OAAO,CAAC;QACb;YACE,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;AACH,CAAC,CAAC;AAEF,IAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAG/B,UAAC,EAA6C,EAAE,GAAG;IAAhD,IAAA,gBAAgB,EAAhB,QAAQ,mBAAG,KAAK,KAAA,EAAS,MAAM,WAAA,EAAK,KAAK,cAA3C,qBAA6C,CAAF;IAC5C,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,wCAAS,KAAK,IAAE,GAAG,EAAE,GAAgC,IAAI,CAAC;IACnE,CAAC;IAED,OAAO,2CAAY,KAAK,IAAE,GAAG,EAAE,GAAmC,EAAE,IAAI,EAAE,QAAQ,IAAI,CAAC;AACzF,CAAC,CAAC,CAAC;AAqBH,MAAM,CAAC,IAAM,eAAe,GAAG,UAA0B,KAA8B;IAEnF,IAAA,YAAY,GAgBV,KAAK,aAhBK,EACZ,MAAM,GAeJ,KAAK,OAfD,EACN,IAAI,GAcF,KAAK,KAdH,EACJ,aAAa,GAaX,KAAK,cAbM,EACb,UAAU,GAYR,KAAK,WAZG,EACV,oBAAoB,GAWlB,KAAK,qBAXa,EACpB,aAAa,GAUX,KAAK,cAVM,EACb,QAAQ,GASN,KAAK,SATC,EACR,SAAS,GAQP,KAAK,UARE,EACT,sBAAsB,GAOpB,KAAK,uBAPe,EACtB,SAAS,GAMP,KAAK,UANE,EACT,QAAQ,GAKN,KAAK,SALC,EACR,kBAAkB,GAIhB,KAAK,mBAJW,EAClB,mBAAmB,GAGjB,KAAK,oBAHY,EACnB,OAAO,GAEL,KAAK,QAFA,EACP,YAAY,GACV,KAAK,aADK,CACJ;IAEV,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;IACpC,IAAM,iBAAiB,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAEpE,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CACL,oBAAC,IAAI,IACH,SAAS,EAAE,KAAK,EAChB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,SAAS,EACpB,sBAAsB,EAAE,sBAAsB,cACpC,kBAAkB,CAAC,MAAM;YAEnC,oBAAC,WAAW,IAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK;gBAChC,6BAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAG,mBAAmB,CAAO,CACpE;YACd,oBAAC,QAAQ,IAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,sBAAsB,IACrE,kBAAkB,CACV,CACN,CACR,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5C,OAAO,CACL,oBAAC,IAAI,IACH,SAAS,EAAE,KAAK,EAChB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,SAAS,EACpB,sBAAsB,EAAE,sBAAsB,cACpC,kBAAkB,CAAC,OAAO;YAEpC,oBAAC,WAAW,IAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK;gBAChC,oBAAC,OAAO,IAAC,IAAI,EAAE,OAAO,EAAE,MAAM,SAAG,CACrB,CACT,CACR,CAAC;IACJ,CAAC;IAED,OAAO,CACL,oBAAC,IAAI,IAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,sBAAsB,EAAE,sBAAsB,IACxG,aAAa,CAAC,GAAG,CAAC,UAAC,YAAY,EAAE,KAAK;;QACrC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC;YAClC,IAAM,OAAO,GAAG,OAAO,YAAY,KAAK,UAAU,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;YACnF,IAAM,GAAG,GAAG,MAAA,OAAO,CAAC,GAAG,mCAAI,KAAK,CAAC;YAEjC,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxB,IAAM,aAAa,GAAG,OAAO,CAAC,KAAsB,CAAC;gBACrD,4FAA4F;gBAC5F,8CAA8C;gBAC9C,IAAM,WAAW,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAAC;gBACzD,IAAM,aAAa,GAAG,WAAW,IAAI,oBAAoB,KAAK,KAAK,CAAC;gBAEpE,OAAO,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,WACjC,GAAG,KAAA,EACH,QAAQ,EAAE,sBAAsB,EAChC,IAAI,MAAA,EACJ,EAAE,EAAE,MAAA,aAAa,CAAC,EAAE,mCAAI,CAAC,WAAW,IAAI,YAAY,CAAC,CAAC,CAAC,UAAG,YAAY,mBAAS,KAAK,CAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EACnG,IAAI,EAAE,MAAA,aAAa,CAAC,IAAI,mCAAI,QAAQ,EACpC,eAAe,EAAE,MAAA,aAAa,CAAC,eAAe,CAAC,mCAAI,KAAK,EACxD,eAAe,EAAE,MAAA,aAAa,CAAC,eAAe,CAAC,mCAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAChF,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAC9B,CAAC,CAAC;YACtB,CAAC;YAED,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnD,OAAO,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,GAAG,KAAA,EAAE,IAAI,MAAA,EAAE,CAAC,CAAC;YACpD,CAAC;YAED,OAAO,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,GAAG,KAAA,EAAE,CAAC,CAAC;QAC9C,CAAC;QAED,IAAM,cAAc,GAAG,kBAAkB,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAEtE,IAAI,KAAuC,CAAC;QAE5C,IAAI,oBAAoB,KAAK,KAAK,EAAE,CAAC;YACnC,KAAK,GAAG,OAAO,CAAC;QAClB,CAAC;aAAM,IAAI,cAAc,KAAK,aAAa,EAAE,CAAC;YAC5C,KAAK,GAAG,UAAU,CAAC;QACrB,CAAC;QAED,OAAO,CACL,oBAAC,QAAQ,IACP,GAAG,EAAE,UAAG,YAAY,CAAC,KAAK,cAAI,KAAK,CAAE,EACrC,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,UAAG,YAAY,mBAAS,KAAK,CAAE,CAAC,CAAC,CAAC,SAAS,EAC9D,IAAI,EAAE,QAAQ,mBACC,cAAc,KAAK,aAAa,mBAChC,YAAY,CAAC,QAAQ,IAAI,SAAS,EACjD,SAAS,EAAE,QAAQ,EACnB,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAC/B,eAAe,EAAE,YAAY,CAAC,QAAQ,EACtC,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAM,OAAA,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,EAA/B,CAA+B,IAEjF,UAAC,WAAW;;YAAK,OAAA,CAChB,0CACY,kBAAkB,CAAC,IAAI,EACjC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,iBAAiB,CAAC,EAC/C,GAAG,EAAE,UAAC,IAAI;oBACR,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACd,OAAO;oBACT,CAAC;oBAED,IAAI,IAAI,EAAE,CAAC;wBACT,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oBACpC,CAAC;yBAAM,CAAC;wBACN,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACjC,CAAC;gBACH,CAAC,IAEA,UAAU,CAAC,CAAC,CAAC,CACZ,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,IAAI,CAAC,CACnD,CAAC,CAAC,CAAC,CACF;gBACE,8BAAM,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,IAAG,cAAc,CAAQ;gBAC3D,YAAY,CAAC,KAAK,IAAI,CACrB,8BACE,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE;wBAC9B,GAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,IAAG,CAAC,YAAY,CAAC,QAAQ;wBACtD,GAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,IAAG,CAAC,YAAY,CAAC,QAAQ,IAAI,WAAW,KAAK,OAAO;4BACjF,IAED,YAAY,CAAC,KAAK,CACd,CACR,CACA,CACJ,CACI,CACR;QAlCiB,CAkCjB,CACQ,CACZ,CAAC;IACJ,CAAC,CAAC,CACG,CACR,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import React, { useContext } from 'react';\n\nimport { Menu } from '../../internal/Menu/index.js';\nimport { MenuMessage } from '../../internal/MenuMessage/index.js';\nimport { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { isMenuFooter } from '../MenuFooter/index.js';\nimport { isMenuHeader } from '../MenuHeader/index.js';\nimport { isMenuItem, MenuItem, type MenuItemProps, type MenuItemState } from '../MenuItem/index.js';\nimport { Spinner } from '../Spinner/index.js';\nimport { TimePickerDataTids } from './helpers/TimePicker.constants.js';\nimport {\n isNavigableMenuElement,\n isTimeMenuItem,\n type TimeFormat,\n type TimeItemValue,\n type TimePickerMenuItem,\n} from './helpers/TimePicker.shared.js';\nimport { normalizeTimeValue } from './helpers/TimePicker.value.js';\nimport { getStyles } from './TimePicker.styles.js';\n\nconst getItemSizeClassName = (styles: ReturnType<typeof getStyles>, theme: Theme, size: SizeProp): string => {\n switch (size) {\n case 'large':\n return styles.itemLarge(theme);\n case 'medium':\n return styles.itemMedium(theme);\n case 'small':\n default:\n return styles.itemSmall(theme);\n }\n};\n\nconst ItemRoot = React.forwardRef<\n HTMLElement,\n React.HTMLAttributes<HTMLElement> & { disabled?: boolean; state?: MenuItemState }\n>(({ disabled = false, state: _state, ...props }, ref) => {\n if (disabled) {\n return <div {...props} ref={ref as React.Ref<HTMLDivElement>} />;\n }\n\n return <button {...props} ref={ref as React.Ref<HTMLButtonElement>} type={'button'} />;\n});\n\ninterface TimePickerItemsProps<T extends TimeItemValue> {\n itemIdPrefix?: string;\n format: TimeFormat;\n size: SizeProp;\n resolvedItems: Array<TimePickerMenuItem<T>>;\n renderItem?: (item: T, state: MenuItemState) => React.ReactNode;\n highlightedItemIndex: number | null;\n selectedValue: string;\n itemRefs?: React.RefObject<Map<number, HTMLSpanElement>>;\n maxHeight?: React.CSSProperties['maxHeight'];\n disableScrollContainer?: boolean;\n isLoading?: boolean;\n isFailed: boolean;\n errorNetworkButton: string;\n errorNetworkMessage: string;\n onRetry(): void;\n onSelectItem(item: T): void;\n}\n\nexport const TimePickerItems = <T extends TimeItemValue>(props: TimePickerItemsProps<T>) => {\n const {\n itemIdPrefix,\n format,\n size,\n resolvedItems,\n renderItem,\n highlightedItemIndex,\n selectedValue,\n itemRefs,\n maxHeight,\n disableScrollContainer,\n isLoading,\n isFailed,\n errorNetworkButton,\n errorNetworkMessage,\n onRetry,\n onSelectItem,\n } = props;\n\n const theme = useContext(ThemeContext);\n const { cx } = useEmotion();\n const styles = useStyles(getStyles);\n const itemSizeClassName = getItemSizeClassName(styles, theme, size);\n\n if (isFailed) {\n return (\n <Menu\n hasMargin={false}\n width={'100%'}\n maxHeight={maxHeight}\n disableScrollContainer={disableScrollContainer}\n data-tid={TimePickerDataTids.failed}\n >\n <MenuMessage size={size} as={'div'}>\n <div style={{ maxWidth: 300, whiteSpace: 'normal' }}>{errorNetworkMessage}</div>\n </MenuMessage>\n <MenuItem onClick={onRetry} size={size} isMobile={disableScrollContainer}>\n {errorNetworkButton}\n </MenuItem>\n </Menu>\n );\n }\n\n if (isLoading && resolvedItems.length === 0) {\n return (\n <Menu\n hasMargin={false}\n width={'100%'}\n maxHeight={maxHeight}\n disableScrollContainer={disableScrollContainer}\n data-tid={TimePickerDataTids.loading}\n >\n <MenuMessage size={size} as={'div'}>\n <Spinner size={'small'} dimmed />\n </MenuMessage>\n </Menu>\n );\n }\n\n return (\n <Menu hasMargin={false} width={'100%'} maxHeight={maxHeight} disableScrollContainer={disableScrollContainer}>\n {resolvedItems.map((resolvedItem, index) => {\n if (!isTimeMenuItem(resolvedItem)) {\n const element = typeof resolvedItem === 'function' ? resolvedItem() : resolvedItem;\n const key = element.key ?? index;\n\n if (isMenuItem(element)) {\n const menuItemProps = element.props as MenuItemProps;\n // Навигация смотрит на исходный элемент источника, поэтому пункт-функция в нее не попадает:\n // выглядеть как доступная опция он не должен.\n const isNavigable = isNavigableMenuElement(resolvedItem);\n const isHighlighted = isNavigable && highlightedItemIndex === index;\n\n return React.cloneElement(element, {\n key,\n isMobile: disableScrollContainer,\n size,\n id: menuItemProps.id ?? (isNavigable && itemIdPrefix ? `${itemIdPrefix}-item-${index}` : undefined),\n role: menuItemProps.role ?? 'option',\n 'aria-selected': menuItemProps['aria-selected'] ?? false,\n 'aria-disabled': menuItemProps['aria-disabled'] ?? (isNavigable ? undefined : true),\n ...(isHighlighted ? { state: 'hover' } : null),\n } as MenuItemProps);\n }\n\n if (isMenuHeader(element) || isMenuFooter(element)) {\n return React.cloneElement(element, { key, size });\n }\n\n return React.cloneElement(element, { key });\n }\n\n const normalizedItem = normalizeTimeValue(resolvedItem.value, format);\n\n let state: 'hover' | 'selected' | undefined;\n\n if (highlightedItemIndex === index) {\n state = 'hover';\n } else if (normalizedItem === selectedValue) {\n state = 'selected';\n }\n\n return (\n <MenuItem\n key={`${resolvedItem.value}-${index}`}\n id={itemIdPrefix ? `${itemIdPrefix}-item-${index}` : undefined}\n role={'option'}\n aria-selected={normalizedItem === selectedValue}\n aria-disabled={resolvedItem.disabled || undefined}\n component={ItemRoot}\n disabled={resolvedItem.disabled}\n isNotSelectable={resolvedItem.disabled}\n size={size}\n state={state}\n onClick={resolvedItem.disabled ? undefined : () => onSelectItem(resolvedItem.item)}\n >\n {(activeState) => (\n <span\n data-tid={TimePickerDataTids.item}\n className={cx(styles.item(), itemSizeClassName)}\n ref={(node) => {\n if (!itemRefs) {\n return;\n }\n\n if (node) {\n itemRefs.current.set(index, node);\n } else {\n itemRefs.current.delete(index);\n }\n }}\n >\n {renderItem ? (\n renderItem(resolvedItem.item, activeState ?? null)\n ) : (\n <>\n <span className={styles.itemValue()}>{normalizedItem}</span>\n {resolvedItem.label && (\n <span\n className={cx(styles.itemLabel(), {\n [styles.itemLabelColor(theme)]: !resolvedItem.disabled,\n [styles.itemLabelHover(theme)]: !resolvedItem.disabled && activeState === 'hover',\n })}\n >\n {resolvedItem.label}\n </span>\n )}\n </>\n )}\n </span>\n )}\n </MenuItem>\n );\n })}\n </Menu>\n );\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skbkontur/react-ui",
3
- "version": "6.1.7-41945.0",
3
+ "version": "6.1.7-4c72d.0",
4
4
  "description": "UI Components",
5
5
  "homepage": "https://tech.skbkontur.ru/kontur-ui",
6
6
  "bugs": {