@alfalab/core-components-picker-button 11.2.0 → 11.3.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.
Files changed (121) hide show
  1. package/Component-0816e61d.d.ts +5 -0
  2. package/Component-72dda473.d.ts +53 -0
  3. package/Component-c44170fe.d.ts +281 -0
  4. package/Component.desktop-785df74d.d.ts +1 -1
  5. package/Component.desktop.d.ts +1 -1
  6. package/Component.desktop.js +3 -2
  7. package/Component.mobile-d7e9f69d.d.ts +1 -1
  8. package/Component.mobile.d.ts +3 -3
  9. package/Component.responsive.d.ts +5 -7
  10. package/Component.responsive.js +1 -0
  11. package/consts-f777ba1a.d.ts +2 -0
  12. package/cssm/Component-0816e61d.d.ts +5 -0
  13. package/cssm/Component-72dda473.d.ts +53 -0
  14. package/cssm/Component-c44170fe.d.ts +281 -0
  15. package/cssm/Component.desktop-785df74d.d.ts +1 -1
  16. package/cssm/Component.desktop.d.ts +1 -1
  17. package/cssm/Component.desktop.js +2 -1
  18. package/cssm/Component.mobile-d7e9f69d.d.ts +1 -1
  19. package/cssm/Component.mobile.d.ts +3 -3
  20. package/cssm/Component.responsive.d.ts +5 -7
  21. package/cssm/Component.responsive.js +1 -0
  22. package/cssm/consts-f777ba1a.d.ts +2 -0
  23. package/cssm/desktop/index.js +1 -0
  24. package/cssm/field/Component.d.ts +3 -837
  25. package/cssm/field/index.module.css +2 -2
  26. package/cssm/{index-5cb54b98.d.ts → index-081223cb.d.ts} +8 -2
  27. package/cssm/index-785df74d.d.ts +2 -0
  28. package/{esm/Component.responsive-3109f463.d.ts → cssm/index-c44170fe.d.ts} +2 -10
  29. package/cssm/index-d7e9f69d.d.ts +2 -0
  30. package/cssm/index-ebda875c.d.ts +80 -0
  31. package/cssm/index.js +1 -0
  32. package/cssm/types-1b036d4b.d.ts +13 -0
  33. package/cssm/types-1c79e231.d.ts +113 -0
  34. package/cssm/typings-0816e61d.d.ts +1320 -0
  35. package/cssm/useSkeleton-1b036d4b.d.ts +40 -0
  36. package/cssm/utils-d2597f31.d.ts +41 -0
  37. package/desktop/index.js +1 -0
  38. package/esm/Component-0816e61d.d.ts +5 -0
  39. package/esm/Component-72dda473.d.ts +53 -0
  40. package/esm/Component-c44170fe.d.ts +281 -0
  41. package/esm/Component.desktop-785df74d.d.ts +1 -1
  42. package/esm/Component.desktop.d.ts +1 -1
  43. package/esm/Component.desktop.js +3 -2
  44. package/esm/Component.mobile-d7e9f69d.d.ts +1 -1
  45. package/esm/Component.mobile.d.ts +3 -3
  46. package/esm/Component.responsive.d.ts +5 -7
  47. package/esm/Component.responsive.js +1 -0
  48. package/esm/consts-f777ba1a.d.ts +2 -0
  49. package/esm/desktop/index.js +1 -0
  50. package/esm/field/Component.d.ts +3 -837
  51. package/esm/field/Component.js +1 -1
  52. package/esm/field/index.css +8 -8
  53. package/esm/{index-5cb54b98.d.ts → index-081223cb.d.ts} +8 -2
  54. package/esm/index-785df74d.d.ts +2 -0
  55. package/{Component.responsive-3109f463.d.ts → esm/index-c44170fe.d.ts} +2 -10
  56. package/esm/index-d7e9f69d.d.ts +2 -0
  57. package/esm/index-ebda875c.d.ts +80 -0
  58. package/esm/index.css +5 -5
  59. package/esm/index.js +1 -0
  60. package/esm/option/Component.js +1 -1
  61. package/esm/option/index.css +4 -4
  62. package/esm/types-1b036d4b.d.ts +13 -0
  63. package/esm/types-1c79e231.d.ts +113 -0
  64. package/esm/typings-0816e61d.d.ts +1320 -0
  65. package/esm/useSkeleton-1b036d4b.d.ts +40 -0
  66. package/esm/utils-d2597f31.d.ts +41 -0
  67. package/field/Component.d.ts +3 -837
  68. package/field/Component.js +1 -1
  69. package/field/index.css +8 -8
  70. package/{index-5cb54b98.d.ts → index-081223cb.d.ts} +8 -2
  71. package/index-785df74d.d.ts +2 -0
  72. package/{modern/Component.responsive-3109f463.d.ts → index-c44170fe.d.ts} +2 -10
  73. package/index-d7e9f69d.d.ts +2 -0
  74. package/index-ebda875c.d.ts +80 -0
  75. package/index.css +5 -5
  76. package/index.js +1 -0
  77. package/modern/Component-0816e61d.d.ts +5 -0
  78. package/modern/Component-72dda473.d.ts +53 -0
  79. package/modern/Component-c44170fe.d.ts +281 -0
  80. package/modern/Component.desktop-785df74d.d.ts +1 -1
  81. package/modern/Component.desktop.d.ts +1 -1
  82. package/modern/Component.desktop.js +3 -2
  83. package/modern/Component.mobile-d7e9f69d.d.ts +1 -1
  84. package/modern/Component.mobile.d.ts +3 -3
  85. package/modern/Component.responsive.d.ts +5 -7
  86. package/modern/Component.responsive.js +1 -0
  87. package/modern/consts-f777ba1a.d.ts +2 -0
  88. package/modern/desktop/index.js +1 -0
  89. package/modern/field/Component.d.ts +3 -837
  90. package/modern/field/Component.js +1 -1
  91. package/modern/field/index.css +8 -8
  92. package/modern/{index-5cb54b98.d.ts → index-081223cb.d.ts} +8 -2
  93. package/modern/index-785df74d.d.ts +2 -0
  94. package/{cssm/Component.responsive-3109f463.d.ts → modern/index-c44170fe.d.ts} +2 -10
  95. package/modern/index-d7e9f69d.d.ts +2 -0
  96. package/modern/index-ebda875c.d.ts +80 -0
  97. package/modern/index.css +5 -5
  98. package/modern/index.js +1 -0
  99. package/modern/option/Component.js +1 -1
  100. package/modern/option/index.css +4 -4
  101. package/modern/types-1b036d4b.d.ts +13 -0
  102. package/modern/types-1c79e231.d.ts +113 -0
  103. package/modern/typings-0816e61d.d.ts +1320 -0
  104. package/modern/useSkeleton-1b036d4b.d.ts +40 -0
  105. package/modern/utils-d2597f31.d.ts +41 -0
  106. package/option/Component.js +1 -1
  107. package/option/index.css +4 -4
  108. package/package.json +4 -3
  109. package/src/Component.desktop.tsx +3 -0
  110. package/src/Component.mobile.tsx +3 -1
  111. package/src/Component.responsive.tsx +6 -6
  112. package/src/field/index.module.css +1 -1
  113. package/types-1b036d4b.d.ts +13 -0
  114. package/types-1c79e231.d.ts +113 -0
  115. package/typings-0816e61d.d.ts +1320 -0
  116. package/useSkeleton-1b036d4b.d.ts +40 -0
  117. package/utils-d2597f31.d.ts +41 -0
  118. /package/{Component-5cb54b98.d.ts → Component-081223cb.d.ts} +0 -0
  119. /package/cssm/{Component-5cb54b98.d.ts → Component-081223cb.d.ts} +0 -0
  120. /package/esm/{Component-5cb54b98.d.ts → Component-081223cb.d.ts} +0 -0
  121. /package/modern/{Component-5cb54b98.d.ts → Component-081223cb.d.ts} +0 -0
@@ -0,0 +1,40 @@
1
+ /// <reference types="react" />
2
+ import React from "react";
3
+ import { ReactNode } from "react";
4
+ import { TextSkeletonProps } from "./types-1b036d4b";
5
+ type SkeletonProps = {
6
+ /**
7
+ * Флаг, явно задающий состояние, при котором контент закрывается прелоадером
8
+ */
9
+ visible?: boolean;
10
+ /**
11
+ * Флаг явного включения анимации скелета
12
+ */
13
+ animate?: boolean;
14
+ /**
15
+ * Дополнительный класс
16
+ */
17
+ className?: string;
18
+ /**
19
+ * Дополнительные инлайн стили
20
+ */
21
+ style?: React.CSSProperties;
22
+ /**
23
+ * Идентификатор для систем автоматизированного тестирования
24
+ */
25
+ dataTestId?: string;
26
+ /**
27
+ * Дочерние элементы.
28
+ */
29
+ children?: ReactNode;
30
+ };
31
+ declare const Skeleton: React.FC<SkeletonProps>;
32
+ type SkeletonProps$0 = {
33
+ wrapperClassName?: string;
34
+ dataTestId?: string;
35
+ };
36
+ declare function useSkeleton(showSkeleton?: boolean, skeletonProps?: TextSkeletonProps): {
37
+ renderSkeleton: (props: SkeletonProps$0) => React.JSX.Element | null;
38
+ textRef: React.RefObject<HTMLElement>;
39
+ };
40
+ export { SkeletonProps, Skeleton, useSkeleton };
@@ -0,0 +1,41 @@
1
+ import { ReactNode, RefObject } from 'react';
2
+ import { BaseSelectProps, GroupShape, OptionShape } from "./typings-0816e61d";
3
+ declare const isGroup: (item: OptionShape | GroupShape) => item is GroupShape;
4
+ declare const isOptionShape: (item: OptionShape | string | null) => item is OptionShape;
5
+ declare const joinOptions: ({ selected, selectedMultiple, }: {
6
+ selected?: OptionShape | undefined;
7
+ selectedMultiple?: OptionShape[] | undefined;
8
+ }) => ReactNode[] | null;
9
+ declare function processOptions(options: BaseSelectProps['options'], selected?: BaseSelectProps['selected'], filterFn?: (option: OptionShape) => boolean): {
10
+ filteredOptions: (OptionShape | GroupShape)[];
11
+ flatOptions: OptionShape[];
12
+ selectedOptions: OptionShape[];
13
+ };
14
+ type useVisibleOptionsArgs = {
15
+ /**
16
+ * Количество видимых пунктов
17
+ */
18
+ visibleOptions: number;
19
+ /**
20
+ * Реф на контейнер с пунтами меню
21
+ */
22
+ listRef: RefObject<HTMLElement>;
23
+ /**
24
+ * Реф на контейнер, которому нужно установить высоту
25
+ */
26
+ styleTargetRef?: RefObject<HTMLElement>;
27
+ /**
28
+ * Флаг открытия меню
29
+ */
30
+ open?: boolean;
31
+ /**
32
+ * Позволяет вызвать пересчет высоты
33
+ */
34
+ invalidate?: unknown;
35
+ };
36
+ declare function useVisibleOptions({ visibleOptions, listRef, styleTargetRef, open, invalidate, }: useVisibleOptionsArgs): void;
37
+ declare function defaultFilterFn(optionText: string, search: string): boolean;
38
+ declare function defaultAccessor(option: OptionShape): string;
39
+ declare function usePrevious<T>(value: T): T | undefined;
40
+ declare const lastIndexOf: <T>(array: T[], predicate: (item: T) => boolean) => number;
41
+ export { isGroup, isOptionShape, joinOptions, processOptions, useVisibleOptions, defaultFilterFn, defaultAccessor, usePrevious, lastIndexOf };
@@ -10,7 +10,7 @@ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'defau
10
10
 
11
11
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
12
12
 
13
- var styles = {"container":"picker-button__container_17ijm","icon":"picker-button__icon_17ijm","content":"picker-button__content_17ijm"};
13
+ var styles = {"container":"picker-button__container_xxpve","icon":"picker-button__icon_xxpve","content":"picker-button__content_xxpve"};
14
14
  require('./index.css')
15
15
 
16
16
  var Option = function (_a) {
package/option/index.css CHANGED
@@ -1,4 +1,4 @@
1
- /* hash: 1e4ss */
1
+ /* hash: 1dusi */
2
2
  :root {
3
3
  } /* deprecated */ :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
4
4
  } :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
@@ -15,13 +15,13 @@
15
15
  --gap-s: 12px;
16
16
  } :root {
17
17
  } :root {
18
- } .picker-button__container_17ijm {
18
+ } .picker-button__container_xxpve {
19
19
  display: flex;
20
20
  align-items: center;
21
- } .picker-button__icon_17ijm {
21
+ } .picker-button__icon_xxpve {
22
22
  display: flex;
23
23
  margin-right: var(--gap-s);
24
- } .picker-button__content_17ijm {
24
+ } .picker-button__content_xxpve {
25
25
  overflow: hidden;
26
26
  flex: 1;
27
27
  text-overflow: ellipsis;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alfalab/core-components-picker-button",
3
- "version": "11.2.0",
3
+ "version": "11.3.0",
4
4
  "description": "Picker button component",
5
5
  "keywords": [],
6
6
  "license": "MIT",
@@ -15,8 +15,9 @@
15
15
  "react-dom": "^16.9.0 || ^17.0.1 || ^18.0.0"
16
16
  },
17
17
  "dependencies": {
18
- "@alfalab/core-components-button": "^9.1.0",
19
- "@alfalab/core-components-select": "^15.3.0",
18
+ "@alfalab/core-components-button": "^10.0.0",
19
+ "@alfalab/core-components-select": "^16.0.0",
20
+ "@alfalab/core-components-popover": "^6.1.0",
20
21
  "@alfalab/hooks": "^1.13.0",
21
22
  "@alfalab/icons-glyph": "^2.108.0",
22
23
  "classnames": "^2.3.1",
@@ -2,6 +2,7 @@ import React, { FC, forwardRef, SVGProps } from 'react';
2
2
  import cn from 'classnames';
3
3
 
4
4
  import type { ButtonProps } from '@alfalab/core-components-button';
5
+ import { Popover } from '@alfalab/core-components-popover';
5
6
  import {
6
7
  BaseSelect,
7
8
  BaseSelectProps,
@@ -101,6 +102,8 @@ export const PickerButtonDesktop = forwardRef<HTMLInputElement, PickerButtonDesk
101
102
  return (
102
103
  <BaseSelect
103
104
  {...restProps}
105
+ Popover={Popover}
106
+ view='desktop'
104
107
  optionProps={{ Checkmark: null }}
105
108
  ref={ref}
106
109
  Option={Option}
@@ -3,6 +3,7 @@ import React, { forwardRef } from 'react';
3
3
  import { SelectMobile } from '@alfalab/core-components-select/mobile';
4
4
  import {
5
5
  AdditionalMobileProps,
6
+ BottomSheetSelectMobileProps,
6
7
  Optgroup as DefaultOptgroup,
7
8
  } from '@alfalab/core-components-select/shared';
8
9
 
@@ -14,7 +15,8 @@ export type PickerButtonMobileProps = Omit<
14
15
  PickerButtonDesktopProps,
15
16
  'OptionsList' | 'Checkmark' | 'onScroll'
16
17
  > &
17
- AdditionalMobileProps & {
18
+ AdditionalMobileProps &
19
+ BottomSheetSelectMobileProps & {
18
20
  /**
19
21
  * Контрольная точка для кнопки, с нее начинается desktop версия
20
22
  * @default 1024
@@ -1,17 +1,17 @@
1
1
  import React, { forwardRef } from 'react';
2
2
 
3
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
4
- import { ButtonProps } from '@alfalab/core-components-button';
5
- import type { AdditionalMobileProps } from '@alfalab/core-components-select/shared';
3
+ import type {
4
+ AdditionalMobileProps,
5
+ BottomSheetSelectMobileProps,
6
+ } from '@alfalab/core-components-select/shared';
6
7
  import { useMedia } from '@alfalab/hooks';
7
8
 
8
9
  import { PickerButtonDesktop, PickerButtonDesktopProps } from './desktop';
9
10
  import { PickerButtonMobile } from './mobile';
10
11
 
11
- export type PickerButtonMatchMedia = 'desktop' | 'mobile';
12
-
13
12
  export type PickerButtonResponsiveProps = PickerButtonDesktopProps &
14
- AdditionalMobileProps & {
13
+ AdditionalMobileProps &
14
+ BottomSheetSelectMobileProps & {
15
15
  /**
16
16
  * Контрольная точка, с нее начинается desktop версия
17
17
  * @default 1024
@@ -18,5 +18,5 @@
18
18
  }
19
19
 
20
20
  .linkOpen:not(:hover) {
21
- background-color: var(--color-light-specialbg-secondary-transparent);
21
+ background-color: var(--color-light-neutral-translucent-100);
22
22
  }
@@ -0,0 +1,13 @@
1
+ type TextElementType = HTMLParagraphElement | HTMLSpanElement | HTMLDivElement;
2
+ type WidthUnit = number | string;
3
+ type TextSkeletonProps = {
4
+ /**
5
+ * Кол-во строк текста
6
+ */
7
+ rows?: number;
8
+ /**
9
+ * Ширина строки
10
+ */
11
+ width?: WidthUnit | WidthUnit[];
12
+ };
13
+ export { TextElementType, TextSkeletonProps };
@@ -0,0 +1,113 @@
1
+ /// <reference types="react" />
2
+ import React from 'react';
3
+ import { ReactNode } from "react";
4
+ import { CloserProps } from "./index-ebda875c";
5
+ type NavigationBarProps = {
6
+ /**
7
+ * Контент шапки
8
+ */
9
+ children?: ReactNode;
10
+ /**
11
+ * Заголовок шапки
12
+ */
13
+ title?: string;
14
+ /**
15
+ * Подзаголовок (доступен только в мобильной версии)
16
+ */
17
+ subtitle?: ReactNode;
18
+ /**
19
+ * Размер заголовка (compact доступен только в мобильной версии)
20
+ */
21
+ titleSize?: 'default' | 'compact';
22
+ /**
23
+ * Доп. класс для аддонов
24
+ */
25
+ addonClassName?: string;
26
+ /**
27
+ * Слот слева
28
+ */
29
+ leftAddons?: ReactNode;
30
+ /**
31
+ * Слот справа
32
+ */
33
+ rightAddons?: ReactNode;
34
+ /**
35
+ * Дополнительный класс для closer
36
+ */
37
+ closerClassName?: string;
38
+ /**
39
+ * Слот снизу
40
+ */
41
+ bottomAddons?: ReactNode;
42
+ /**
43
+ * Наличие компонента крестика
44
+ */
45
+ hasCloser?: boolean;
46
+ /**
47
+ * Наличие кнопки "Назад"
48
+ */
49
+ hasBackButton?: boolean;
50
+ /**
51
+ * Дополнительный класс для правого аддона
52
+ */
53
+ backButtonClassName?: string;
54
+ /**
55
+ * Дополнительный класс
56
+ */
57
+ className?: string;
58
+ /**
59
+ * Дополнительный класс для контента
60
+ */
61
+ contentClassName?: string;
62
+ /**
63
+ * Дополнительный класс для нижнего аддона
64
+ */
65
+ bottomAddonsClassName?: string;
66
+ /**
67
+ * Выравнивание заголовка
68
+ */
69
+ align?: 'left' | 'center';
70
+ /**
71
+ * Обрезать ли заголовок
72
+ */
73
+ trim?: boolean;
74
+ /**
75
+ * Фиксирует шапку
76
+ */
77
+ sticky?: boolean;
78
+ /**
79
+ * Идентификатор для систем автоматизированного тестирования
80
+ */
81
+ dataTestId?: string;
82
+ /**
83
+ * Фоновое изображение
84
+ */
85
+ imageUrl?: string;
86
+ /**
87
+ * Иконка closer.
88
+ */
89
+ closerIcon?: React.ElementType;
90
+ /**
91
+ * Обработчик закрытия
92
+ */
93
+ onClose?: CloserProps['onClose'];
94
+ /**
95
+ * обработчик клика по кнопке "назад"
96
+ */
97
+ onBack?: () => void;
98
+ /**
99
+ * Вид шапки - мобильный или десктоп
100
+ */
101
+ view: 'desktop' | 'mobile';
102
+ /**
103
+ * Ссылка на родительскую ноду overflow: auto
104
+ */
105
+ scrollableParentRef?: React.RefObject<HTMLDivElement>;
106
+ };
107
+ type ContentParams = {
108
+ extraClassName?: string;
109
+ wrapperRef?: React.RefObject<HTMLDivElement>;
110
+ style?: React.CSSProperties;
111
+ hidden?: boolean;
112
+ };
113
+ export { NavigationBarProps, ContentParams };