@sima-land/ui-nucleons 45.0.0-alpha.51 → 45.0.0-alpha.53

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.
@@ -22,7 +22,7 @@
22
22
  }
23
23
 
24
24
  @mixin color-primary {
25
- --button-color: #fff;
25
+ --button-color: #{colors.$basic-white};
26
26
  --button-background: #{colors.$basic-blue};
27
27
  --button-hover-background: #{colors.$additional-unlit-blue};
28
28
  --button-disabled-color: #{colors.$basic-gray24};
@@ -38,7 +38,7 @@
38
38
  }
39
39
 
40
40
  @mixin color-success {
41
- --button-color: #fff;
41
+ --button-color: #{colors.$basic-white};
42
42
  --button-background: #{colors.$additional-teal};
43
43
  --button-hover-background: #{colors.$additional-dark-teal};
44
44
  --button-disabled-color: #{colors.$basic-gray24};
@@ -15,10 +15,10 @@ const cx = bind_1.default.bind(button_m_scss_1.default);
15
15
  * @param props Свойства.
16
16
  * @return Элемент.
17
17
  */
18
- exports.Button = (0, react_1.forwardRef)(function Button({ viewType = 'primary', icon: Icon, iconPosition = 'start', size = 'm', loading, disabled, className, children, 'data-testid': testId = 'button', ...restProps }, ref) {
18
+ exports.Button = (0, react_1.forwardRef)(function Button({ viewType = 'primary', theme = 'light', icon: Icon, iconPosition = 'start', size = 'm', loading, disabled, className, children, 'data-testid': testId = 'button', ...restProps }, ref) {
19
19
  const hasIcon = Boolean(Icon);
20
20
  const hasText = Boolean(children);
21
- const rootClassName = cx('root', `size-${size}`, viewType !== 'unset' && `view-${viewType}`, loading && 'loading', disabled && 'disabled', hasIcon && !hasText && 'icon-only', hasText && hasIcon && iconPosition === 'start' && 'icon-start', hasText && hasIcon && iconPosition === 'end' && 'icon-end', className);
21
+ const rootClassName = cx('root', `size-${size}`, viewType !== 'unset' && `view-${viewType}`, theme !== 'unset' && `theme-${theme}`, loading && 'loading', disabled && 'disabled', hasIcon && !hasText && 'icon-only', hasText && hasIcon && iconPosition === 'start' && 'icon-start', hasText && hasIcon && iconPosition === 'end' && 'icon-end', className);
22
22
  const spinnerColor = (0, react_1.useMemo)(() => {
23
23
  if (disabled) {
24
24
  return 'basic-gray38';
@@ -1 +1 @@
1
- {"version":3,"file":"button.js","sourceRoot":"","sources":["../../src/button/button.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"button.js","sourceRoot":"","sources":["../../src/button/button.tsx"],"names":[],"mappings":";;;;;;;AAAA,iCAA0D;AAE1D,wCAAwC;AACxC,2DAAyC;AACzC,oEAAqC;AAGrC,MAAM,EAAE,GAAG,cAAU,CAAC,IAAI,CAAC,uBAAM,CAAC,CAAC;AAEnC;;;;GAIG;AACU,QAAA,MAAM,GAAG,IAAA,kBAAU,EAAmB,SAAS,MAAM,CAChE,EACE,QAAQ,GAAG,SAAS,EACpB,KAAK,GAAG,OAAO,EACf,IAAI,EAAE,IAAI,EACV,YAAY,GAAG,OAAO,EACtB,IAAI,GAAG,GAAG,EACV,OAAO,EACP,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,aAAa,EAAE,MAAM,GAAG,QAAQ,EAChC,GAAG,SAAS,EACb,EACD,GAAG;IAEH,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAElC,MAAM,aAAa,GAAG,EAAE,CACtB,MAAM,EACN,QAAQ,IAAI,EAAE,EACd,QAAQ,KAAK,OAAO,IAAI,QAAQ,QAAQ,EAAE,EAC1C,KAAK,KAAK,OAAO,IAAI,SAAS,KAAK,EAAE,EACrC,OAAO,IAAI,SAAS,EACpB,QAAQ,IAAI,UAAU,EACtB,OAAO,IAAI,CAAC,OAAO,IAAI,WAAW,EAClC,OAAO,IAAI,OAAO,IAAI,YAAY,KAAK,OAAO,IAAI,YAAY,EAC9D,OAAO,IAAI,OAAO,IAAI,YAAY,KAAK,KAAK,IAAI,UAAU,EAC1D,SAAS,CACV,CAAC;IAEF,MAAM,YAAY,GAAG,IAAA,eAAO,EAAoB,GAAG,EAAE;QACnD,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,cAAc,CAAC;QACxB,CAAC;QAED,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,OAAO,aAAa,CAAC;YACvB,CAAC;YACD,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,OAAO,cAAc,CAAC;YACxB,CAAC;YACD,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,OAAO,aAAa,CAAC;YACvB,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,OAAO,sBAAsB,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEzB,MAAM,OAAO,GAAG,CACd,6DAEG,IAAI,IAAI,YAAY,KAAK,OAAO,IAAI,uBAAC,IAAI,IAAC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,GAAI,EACnE,QAAQ,EACR,IAAI,IAAI,YAAY,KAAK,KAAK,IAAI,uBAAC,IAAI,IAAC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,GAAI,EAEjE,OAAO,IAAI,uBAAC,oBAAU,IAAC,IAAI,EAAC,GAAG,EAAC,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,GAAI,IACjF,CACJ,CAAC;IAEF,IAAI,MAAM,GAAwB,IAAI,CAAC;IAEvC,IAAI,SAAS,CAAC,UAAU,KAAK,WAAW,EAAE,CAAC;QACzC,MAAM,GAAG,CACP,mCAAS,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,EAAC,QAAQ,iBAAc,MAAM,YACtF,OAAO,GACJ,CACP,CAAC;IACJ,CAAC;SAAM,IAAI,SAAS,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;QAC3C,MAAM,GAAG,CACP,iCAAO,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,iBAAe,MAAM,YACtE,OAAO,GACN,CACL,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,CACP,sCACM,SAAS,EACb,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,QAAQ,iBACL,MAAM,YAElB,OAAO,GACD,CACV,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC,CAAC"}
@@ -88,18 +88,38 @@
88
88
  // view variants
89
89
  .view-primary {
90
90
  @include button-util.color-primary;
91
+ &.theme-dark {
92
+ --button-hover-background: #{colors.$additional-deep-blue};
93
+ --button-disabled-background: #{colors.$basic-gray76};
94
+ --button-disabled-color: #{colors.$basic-gray54};
95
+ }
91
96
  }
92
97
 
93
98
  .view-secondary {
94
99
  @include button-util.color-secondary;
100
+ &.theme-dark {
101
+ --button-color: #{colors.$basic-white};
102
+ --button-background: #{colors.$basic-gray76};
103
+ --button-hover-background: #{colors.$basic-gray66};
104
+ --button-disabled-background: #{colors.$basic-gray76};
105
+ --button-disabled-color: #{colors.$basic-gray54};
106
+ }
95
107
  }
96
108
 
97
109
  .view-success {
98
110
  @include button-util.color-success;
111
+ &.theme-dark {
112
+ --button-disabled-background: #{colors.$basic-gray76};
113
+ --button-disabled-color: #{colors.$basic-gray54};
114
+ }
99
115
  }
100
116
 
101
117
  .view-info {
102
118
  @include button-util.color-info;
119
+ &.theme-dark {
120
+ --button-disabled-background: #{colors.$basic-gray76};
121
+ --button-disabled-color: #{colors.$basic-gray54};
122
+ }
103
123
  }
104
124
 
105
125
  // icons
@@ -1,5 +1,5 @@
1
1
  import type { AnchorHTMLAttributes, ButtonHTMLAttributes, CSSProperties, ElementType, HTMLAttributes, SVGAttributes } from 'react';
2
- import type { WithTestId } from '../types';
2
+ import type { Theme, WithTestId } from '../types';
3
3
  export type ButtonSize = 'xs' | 's' | 'm';
4
4
  export type ButtonViewType = 'primary' | 'secondary' | 'success' | 'info' | 'unset';
5
5
  export type ButtonAppearance = 'button' | 'link' | 'container';
@@ -12,9 +12,11 @@ export interface ButtonStyle extends CSSProperties {
12
12
  '--button-disabled-color'?: string;
13
13
  '--button-disabled-background'?: string;
14
14
  }
15
- interface CommonProps<T extends ButtonAppearance = ButtonAppearance> extends WithTestId {
15
+ export interface CommonProps<T extends ButtonAppearance = ButtonAppearance> extends WithTestId {
16
16
  /** Определяет внешний вид кнопки. */
17
17
  viewType?: ButtonViewType;
18
+ /** Тема. */
19
+ theme?: Theme;
18
20
  /** Определяет тип корневого элемента. */
19
21
  appearance?: T;
20
22
  /** Иконка. */
@@ -2,9 +2,12 @@ import { RefObject } from 'react';
2
2
  import { autoUpdate, UseFloatingReturn } from '@floating-ui/react';
3
3
  /**
4
4
  * Возвращает конфигурацию для `useFloating` по дизайн-гайдам.
5
+ * @param options Опции.
5
6
  * @return Конфигурация для `useFloating` по дизайн-гайдам.
6
7
  */
7
- export declare function dropdownFloatingConfig(): {
8
+ export declare function dropdownFloatingConfig(options?: {
9
+ offset?: number;
10
+ }): {
8
11
  whileElementsMounted: typeof autoUpdate;
9
12
  placement: "bottom-start";
10
13
  middleware: {
@@ -10,13 +10,15 @@ const context_1 = require("../context");
10
10
  const helpers_1 = require("../helpers");
11
11
  /**
12
12
  * Возвращает конфигурацию для `useFloating` по дизайн-гайдам.
13
+ * @param options Опции.
13
14
  * @return Конфигурация для `useFloating` по дизайн-гайдам.
14
15
  */
15
- function dropdownFloatingConfig() {
16
+ function dropdownFloatingConfig(options) {
16
17
  return {
17
18
  whileElementsMounted: react_2.autoUpdate,
18
19
  placement: 'bottom-start',
19
20
  middleware: [
21
+ (0, react_2.offset)(options?.offset ?? 0),
20
22
  // @todo в будущем с дизайнерами можем решить использовать autoPlacement
21
23
  // но есть сложности: https://github.com/floating-ui/floating-ui/discussions/2155
22
24
  (0, react_2.flip)({
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/dropdown/utils.ts"],"names":[],"mappings":";;AAUA,wDAeC;AAOD,4DAwDC;AAMD,8CAyBC;AAvHD,iCAAoF;AACpF,8CAAgF;AAChF,4CAA4C;AAC5C,wCAAmD;AACnD,wCAAgC;AAEhC;;;GAGG;AACH,SAAgB,sBAAsB;IACpC,OAAO;QACL,oBAAoB,EAAE,kBAAU;QAChC,SAAS,EAAE,cAAuB;QAClC,UAAU,EAAE;YACV,wEAAwE;YACxE,iFAAiF;YACjF,IAAA,YAAI,EAAC;gBACH,OAAO,EAAE,EAAE;aACZ,CAAC;YACF,IAAA,aAAK,EAAC;gBACJ,OAAO,EAAE,EAAE;aACZ,CAAC;SACH;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAgB,wBAAwB,CAAC,EACvC,QAAQ,EACR,CAAC,EACD,CAAC,EACD,IAAI,GACqD;IACzD,MAAM,KAAK,GAAG,IAAA,gBAAQ,GAAE,CAAC;IAEzB,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAC5C,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,qBAAqB,EAAE,CAAC,KAAK,IAAI,IAAI,CACpE,CAAC;IAEF,MAAM,EAAE,oBAAoB,EAAE,GAAG,IAAA,kBAAU,EAAC,+BAAqB,CAAC,CAAC;IAEnE,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QAEtC,IAAI,CAAC,CAAC,MAAM,YAAY,OAAO,CAAC,EAAE,CAAC;YACjC,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,EAAE;YACzC,cAAc,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,cAAc,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC,CAAC;QAErD,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEzB,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,UAAU,EAAE,CAAC;QACxB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAEnD,OAAO,IAAA,eAAO,EAAC,GAAG,EAAE;QAClB,MAAM,IAAI,GAAG;YACX,QAAQ,EAAE,QAAQ;YAClB,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,KAAK,GAAG,CAAC;SAClB,CAAC;QAEF,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YACpC,OAAO;gBACL,GAAG,IAAI;gBAEP,QAAQ,EAAE,GAAG,WAAW,IAAI;gBAE5B,gEAAgE;gBAChE,yGAAyG;gBACzG,gBAAgB,EAAE,GAAG,WAAW,IAAI;aACrC,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACH,SAAgB,iBAAiB,CAC/B,GAAwB,EACxB,QAAsB;IAEtB,MAAM,WAAW,GAAG,IAAA,cAAM,EAAC,QAAQ,CAAC,CAAC;IAErC,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;IAE/B,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAE5B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,OAAO,IAAA,YAAE,EAAa,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE;YAC7C,IACE,KAAK,CAAC,MAAM,YAAY,WAAW;gBACnC,OAAO,KAAK,KAAK,CAAC,MAAM;gBACxB,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAC/B,CAAC;gBACD,WAAW,CAAC,OAAO,EAAE,CAAC;YACxB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/dropdown/utils.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@ export declare function BreakpointProvider({ children }: {
11
11
  /**
12
12
  * Хук обработки медиа-запроса на основе breakpoint'а дизайн-системы.
13
13
  * @param query Запрос, например "xs+".
14
- * @param initialMatch Начальное значение соответствия медиа-запросу при первом рендере в браузере.
14
+ * @param initialMatch Начальное значение соответствия медиа-запросу при первом рендере.
15
15
  * @return Соответствует ли ширина экрана заданному запросу.
16
16
  */
17
17
  export declare function useBreakpoint(query: string, initialMatch?: boolean): boolean;
@@ -26,7 +26,7 @@ function BreakpointProvider({ children }) {
26
26
  /**
27
27
  * Хук обработки медиа-запроса на основе breakpoint'а дизайн-системы.
28
28
  * @param query Запрос, например "xs+".
29
- * @param initialMatch Начальное значение соответствия медиа-запросу при первом рендере в браузере.
29
+ * @param initialMatch Начальное значение соответствия медиа-запросу при первом рендере.
30
30
  * @return Соответствует ли ширина экрана заданному запросу.
31
31
  */
32
32
  function useBreakpoint(query, initialMatch) {
@@ -36,9 +36,9 @@ function useBreakpoint(query, initialMatch) {
36
36
  const { matchMedia } = (0, react_1.useContext)(context_1.MatchMediaContext);
37
37
  const [, setRegistry] = (0, react_1.useState)(null);
38
38
  const registryFromContext = (0, react_1.useContext)(Context);
39
- const browserMatches = initialMatch ?? matchMedia(utils_1.BreakpointQuery.toMediaQuery(query)).matches;
40
- const defaultInitialMatch = (0, helpers_1.isBrowser)() ? browserMatches : false;
41
- const [matches, setMatches] = (0, react_1.useState)(initialMatch ?? defaultInitialMatch);
39
+ const [matches, setMatches] = (0, react_1.useState)((0, helpers_1.isBrowser)()
40
+ ? (initialMatch ?? matchMedia(utils_1.BreakpointQuery.toMediaQuery(query)).matches)
41
+ : (initialMatch ?? false));
42
42
  (0, __1.useIsomorphicLayoutEffect)(() => {
43
43
  let registry;
44
44
  if (registryFromContext) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/use-breakpoint/index.tsx"],"names":[],"mappings":";;AAeA,gDAUC;AAQD,sCAoCC;;AArED,iCAAuE;AACvE,0BAA+C;AAC/C,2CAA0C;AAE1C,mCAA0D;AAC1D,2CAAkD;AAElD,MAAM,OAAO,GAAG,IAAA,qBAAa,EAAkB,IAAI,CAAC,CAAC;AAErD;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,EAAE,QAAQ,EAA2B;IACtE,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAkB,IAAI,CAAC,CAAC;IAEpE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAA,kBAAU,EAAC,2BAAiB,CAAC,CAAC;IAErD,IAAA,6BAAyB,EAAC,GAAG,EAAE;QAC7B,IAAA,mBAAS,GAAE,IAAI,WAAW,CAAC,IAAA,sBAAc,EAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,uBAAC,OAAO,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,YAAG,QAAQ,GAAoB,CAAC;AAC9E,CAAC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,KAAa,EAAE,YAAsB;IACjE,IAAI,CAAC,uBAAe,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,MAAM,KAAK,CAAC,kCAAkC,KAAK,GAAG,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,EAAE,UAAU,EAAE,GAAG,IAAA,kBAAU,EAAC,2BAAiB,CAAC,CAAC;IAErD,MAAM,CAAC,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAkB,IAAI,CAAC,CAAC;IACxD,MAAM,mBAAmB,GAAG,IAAA,kBAAU,EAAC,OAAO,CAAC,CAAC;IAEhD,MAAM,cAAc,GAAG,YAAY,IAAI,UAAU,CAAC,uBAAe,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;IAE/F,MAAM,mBAAmB,GAAG,IAAA,mBAAS,GAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC;IACjE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAU,YAAY,IAAI,mBAAmB,CAAC,CAAC;IAErF,IAAA,6BAAyB,EAAC,GAAG,EAAE;QAC7B,IAAI,QAAkB,CAAC;QAEvB,IAAI,mBAAmB,EAAE,CAAC;YACxB,QAAQ,GAAG,mBAAmB,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,IAAA,sBAAc,EAAC,EAAE,UAAU,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,WAAW,CAAC,mBAAmB,CAAC,CAAC;QAEjC,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE;YACjD,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAEjC,OAAO,YAAY,CAAC,WAAW,CAAC;IAClC,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAE1B,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/use-breakpoint/index.tsx"],"names":[],"mappings":";;AAeA,gDAUC;AAQD,sCAqCC;;AAtED,iCAAuE;AACvE,0BAA+C;AAC/C,2CAA0C;AAE1C,mCAA0D;AAC1D,2CAAkD;AAElD,MAAM,OAAO,GAAG,IAAA,qBAAa,EAAkB,IAAI,CAAC,CAAC;AAErD;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,EAAE,QAAQ,EAA2B;IACtE,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAkB,IAAI,CAAC,CAAC;IAEpE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAA,kBAAU,EAAC,2BAAiB,CAAC,CAAC;IAErD,IAAA,6BAAyB,EAAC,GAAG,EAAE;QAC7B,IAAA,mBAAS,GAAE,IAAI,WAAW,CAAC,IAAA,sBAAc,EAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,uBAAC,OAAO,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,YAAG,QAAQ,GAAoB,CAAC;AAC9E,CAAC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,KAAa,EAAE,YAAsB;IACjE,IAAI,CAAC,uBAAe,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,MAAM,KAAK,CAAC,kCAAkC,KAAK,GAAG,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,EAAE,UAAU,EAAE,GAAG,IAAA,kBAAU,EAAC,2BAAiB,CAAC,CAAC;IAErD,MAAM,CAAC,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAkB,IAAI,CAAC,CAAC;IACxD,MAAM,mBAAmB,GAAG,IAAA,kBAAU,EAAC,OAAO,CAAC,CAAC;IAEhD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EACpC,IAAA,mBAAS,GAAE;QACT,CAAC,CAAC,CAAC,YAAY,IAAI,UAAU,CAAC,uBAAe,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;QAC3E,CAAC,CAAC,CAAC,YAAY,IAAI,KAAK,CAAC,CAC5B,CAAC;IAEF,IAAA,6BAAyB,EAAC,GAAG,EAAE;QAC7B,IAAI,QAAkB,CAAC;QAEvB,IAAI,mBAAmB,EAAE,CAAC;YACxB,QAAQ,GAAG,mBAAmB,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,IAAA,sBAAc,EAAC,EAAE,UAAU,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,WAAW,CAAC,mBAAmB,CAAC,CAAC;QAEjC,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE;YACjD,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAEjC,OAAO,YAAY,CAAC,WAAW,CAAC;IAClC,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAE1B,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -2,3 +2,5 @@ export type { SelectProps, SelectStyle } from './types';
2
2
  export { Select } from './select';
3
3
  export { SelectFieldBlock } from './parts/field-block';
4
4
  export { SelectTextButton } from './parts/text-button';
5
+ export { SelectButton } from './parts/button';
6
+ export { SelectIcon } from './parts/icon';
@@ -1,10 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SelectTextButton = exports.SelectFieldBlock = exports.Select = void 0;
3
+ exports.SelectIcon = exports.SelectButton = exports.SelectTextButton = exports.SelectFieldBlock = exports.Select = void 0;
4
4
  var select_1 = require("./select");
5
5
  Object.defineProperty(exports, "Select", { enumerable: true, get: function () { return select_1.Select; } });
6
6
  var field_block_1 = require("./parts/field-block");
7
7
  Object.defineProperty(exports, "SelectFieldBlock", { enumerable: true, get: function () { return field_block_1.SelectFieldBlock; } });
8
8
  var text_button_1 = require("./parts/text-button");
9
9
  Object.defineProperty(exports, "SelectTextButton", { enumerable: true, get: function () { return text_button_1.SelectTextButton; } });
10
+ var button_1 = require("./parts/button");
11
+ Object.defineProperty(exports, "SelectButton", { enumerable: true, get: function () { return button_1.SelectButton; } });
12
+ var icon_1 = require("./parts/icon");
13
+ Object.defineProperty(exports, "SelectIcon", { enumerable: true, get: function () { return icon_1.SelectIcon; } });
10
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/select/index.ts"],"names":[],"mappings":";;;AACA,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AACf,mDAAuD;AAA9C,+GAAA,gBAAgB,OAAA;AACzB,mDAAuD;AAA9C,+GAAA,gBAAgB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/select/index.ts"],"names":[],"mappings":";;;AACA,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AACf,mDAAuD;AAA9C,+GAAA,gBAAgB,OAAA;AACzB,mDAAuD;AAA9C,+GAAA,gBAAgB,OAAA;AACzB,yCAA8C;AAArC,sGAAA,YAAY,OAAA;AACrB,qCAA0C;AAAjC,kGAAA,UAAU,OAAA"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * "Открывашка" для Select в виде кнопки.
3
+ * @param props Свойства.
4
+ * @return Элемент.
5
+ */
6
+ export declare const SelectButton: import("react").ForwardRefExoticComponent<import("../../button/types").CommonProps<import("../../button").ButtonAppearance> & Omit<import("react").ButtonHTMLAttributes<HTMLButtonElement>, keyof import("../../button/types").CommonProps<import("../../button").ButtonAppearance>> & {
7
+ appearance?: "button";
8
+ } & import("react").RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SelectButton = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const utils_1 = require("../utils");
7
+ const button_1 = require("../../button");
8
+ const helpers_1 = require("../../helpers");
9
+ /**
10
+ * "Открывашка" для Select в виде кнопки.
11
+ * @param props Свойства.
12
+ * @return Элемент.
13
+ */
14
+ exports.SelectButton = (0, react_1.forwardRef)(function SelectButton({ children, onMouseDown, onKeyDown, ...restProps }, ref) {
15
+ const { selectProps, currentValue, menuOpen, setMenuOpen, setOpenerElement, setAnchorElement } = (0, react_1.useContext)(utils_1.SelectContext);
16
+ const { label, disabled, renderValue = v => v } = selectProps;
17
+ const mergedRef = (0, react_1.useMemo)(() => (0, helpers_1.mergeRefs)([ref, setOpenerElement, setAnchorElement]), [ref, setOpenerElement, setAnchorElement]);
18
+ const handleMouseDown = (0, react_1.useCallback)(event => {
19
+ onMouseDown?.(event);
20
+ if (disabled || event.defaultPrevented) {
21
+ return;
22
+ }
23
+ // ВАЖНО: предотвращаем фокус
24
+ !menuOpen && event.preventDefault();
25
+ setMenuOpen(a => !a);
26
+ }, [onMouseDown, disabled, menuOpen, setMenuOpen]);
27
+ const handleKeyDown = (0, react_1.useCallback)(event => {
28
+ onKeyDown?.(event);
29
+ if (disabled || event.defaultPrevented) {
30
+ return;
31
+ }
32
+ switch (event.code) {
33
+ case 'Enter':
34
+ case 'ArrowUp':
35
+ case 'ArrowDown':
36
+ setMenuOpen(true);
37
+ break;
38
+ }
39
+ }, [onKeyDown, disabled, setMenuOpen]);
40
+ return ((0, jsx_runtime_1.jsx)(button_1.Button, { ...restProps, ref: mergedRef, disabled: disabled, onMouseDown: handleMouseDown, onKeyDown: handleKeyDown, children: children ?? (renderValue(currentValue) || label) }));
41
+ });
42
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.js","sourceRoot":"","sources":["../../../src/select/parts/button.tsx"],"names":[],"mappings":";;;;AAAA,iCAOe;AACf,oCAAyC;AACzC,yCAAmD;AACnD,2CAA0C;AAI1C;;;;GAIG;AACU,QAAA,YAAY,GAAG,IAAA,kBAAU,EAAuC,SAAS,YAAY,CAChG,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,EAClD,GAAG;IAEH,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,GAC5F,IAAA,kBAAU,EAAC,qBAAa,CAAC,CAAC;IAE5B,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,WAAW,CAAC;IAE9D,MAAM,SAAS,GAAG,IAAA,eAAO,EACvB,GAAG,EAAE,CAAC,IAAA,mBAAS,EAAoB,CAAC,GAAG,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,EAC7E,CAAC,GAAG,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAC1C,CAAC;IAEF,MAAM,eAAe,GAAyC,IAAA,mBAAW,EACvE,KAAK,CAAC,EAAE;QACN,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC;QAErB,IAAI,QAAQ,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACvC,OAAO;QACT,CAAC;QAED,6BAA6B;QAC7B,CAAC,QAAQ,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QAEpC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC,EACD,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAC/C,CAAC;IAEF,MAAM,aAAa,GAA4C,IAAA,mBAAW,EACxE,KAAK,CAAC,EAAE;QACN,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC;QAEnB,IAAI,QAAQ,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACvC,OAAO;QACT,CAAC;QAED,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,OAAO,CAAC;YACb,KAAK,SAAS,CAAC;YACf,KAAK,WAAW;gBACd,WAAW,CAAC,IAAI,CAAC,CAAC;gBAClB,MAAM;QACV,CAAC;IACH,CAAC,EACD,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,CACnC,CAAC;IAEF,OAAO,CACL,uBAAC,eAAM,OACD,SAAS,EACb,GAAG,EAAE,SAAS,EACd,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,eAAe,EAC5B,SAAS,EAAE,aAAa,YAEvB,QAAQ,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,GAC1C,CACV,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { ElementType, SVGAttributes } from 'react';
2
+ export interface SelectIconProps extends SVGAttributes<SVGSVGElement> {
3
+ /** Компонент иконки. */
4
+ icon: ElementType<SVGAttributes<SVGSVGElement>>;
5
+ }
6
+ /**
7
+ * "Открывашка" для Select в виде простой иконки.
8
+ * @param props Свойства.
9
+ * @return Элемент.
10
+ */
11
+ export declare function SelectIcon({ icon: Icon, ...restProps }: SelectIconProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SelectIcon = SelectIcon;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const react_1 = require("react");
9
+ const utils_1 = require("../utils");
10
+ const helpers_1 = require("../../helpers");
11
+ const icon_m_scss_1 = __importDefault(require("./icon.m.scss"));
12
+ const classnames_1 = __importDefault(require("classnames"));
13
+ /**
14
+ * "Открывашка" для Select в виде простой иконки.
15
+ * @param props Свойства.
16
+ * @return Элемент.
17
+ */
18
+ function SelectIcon({ icon: Icon, ...restProps }) {
19
+ const { selectProps, menuOpen, setMenuOpen, setOpenerElement, setAnchorElement } = (0, react_1.useContext)(utils_1.SelectContext);
20
+ const { disabled, failed } = selectProps;
21
+ const mergedRef = (0, react_1.useMemo)(() => (0, helpers_1.mergeRefs)([setOpenerElement, setAnchorElement]), [setOpenerElement, setAnchorElement]);
22
+ const handleClick = (0, react_1.useCallback)((event) => {
23
+ restProps.onClick?.(event);
24
+ if (disabled || event.defaultPrevented)
25
+ return;
26
+ setMenuOpen(!menuOpen);
27
+ }, [restProps.onClick, disabled, menuOpen]);
28
+ return ((0, jsx_runtime_1.jsx)(Icon, { ...restProps, ref: mergedRef, className: (0, classnames_1.default)(icon_m_scss_1.default.icon, {
29
+ [icon_m_scss_1.default.disabled]: disabled,
30
+ [icon_m_scss_1.default.failed]: failed,
31
+ }), onClick: handleClick }));
32
+ }
33
+ //# sourceMappingURL=icon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon.js","sourceRoot":"","sources":["../../../src/select/parts/icon.tsx"],"names":[],"mappings":";;;;;AAwBA,gCA+BC;;AAvDD,iCAQe;AACf,oCAAyC;AACzC,2CAA0C;AAC1C,gEAAmC;AACnC,4DAA4B;AAO5B;;;;GAIG;AACH,SAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,SAAS,EAAmB;IACtE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,GAC9E,IAAA,kBAAU,EAAC,qBAAa,CAAC,CAAC;IAE5B,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC;IAEzC,MAAM,SAAS,GAAG,IAAA,eAAO,EACvB,GAAG,EAAE,CAAC,IAAA,mBAAS,EAAc,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAuB,EACxF,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CACrC,CAAC;IAEF,MAAM,WAAW,GAAG,IAAA,mBAAW,EAC7B,CAAC,KAAgC,EAAE,EAAE;QACnC,SAAS,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAI,QAAQ,IAAI,KAAK,CAAC,gBAAgB;YAAE,OAAO;QAC/C,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC,EACD,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CACxC,CAAC;IAEF,OAAO,CACL,uBAAC,IAAI,OACC,SAAS,EACb,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,IAAA,oBAAE,EAAC,qBAAM,CAAC,IAAI,EAAE;YACzB,CAAC,qBAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ;YAC3B,CAAC,qBAAM,CAAC,MAAM,CAAC,EAAE,MAAM;SACxB,CAAC,EACF,OAAO,EAAE,WAAW,GACpB,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,17 @@
1
+ @use '../../colors';
2
+
3
+ .icon {
4
+ cursor: pointer;
5
+ color: var(--select-icon-color);
6
+ fill: currentColor;
7
+ --select-icon-color: #{colors.$basic-gray87};
8
+ }
9
+
10
+ .icon.disabled {
11
+ cursor: default;
12
+ --select-icon-color: #{colors.$basic-gray24};
13
+ }
14
+
15
+ .icon.failed {
16
+ --select-icon-color: #{colors.$additional-deep-red};
17
+ }
@@ -9,6 +9,8 @@ const menu_1 = require("./parts/menu");
9
9
  const react_2 = require("@floating-ui/react");
10
10
  const dropdown_1 = require("../dropdown");
11
11
  const hooks_1 = require("../hooks");
12
+ const text_button_1 = require("./parts/text-button");
13
+ const icon_1 = require("./parts/icon");
12
14
  /**
13
15
  * Поле выбора из списка.
14
16
  * @param props Свойства.
@@ -16,13 +18,20 @@ const hooks_1 = require("../hooks");
16
18
  */
17
19
  function Select(props) {
18
20
  const { opener = (0, jsx_runtime_1.jsx)(field_block_1.SelectFieldBlock, {}), menu = (0, jsx_runtime_1.jsx)(menu_1.SelectMenu, {}), value, defaultValue, onValueChange, } = props;
21
+ const offsetValue = (0, react_1.useMemo)(() => {
22
+ const type = opener.type;
23
+ return type === text_button_1.SelectTextButton || type === icon_1.SelectIcon ? 4 : 0;
24
+ }, [opener]);
19
25
  // @todo по аналогии с <select /> надо проверять, есть ли значение в списке переданных
20
26
  const [currentValue, setCurrentValue] = (0, react_1.useState)(() => value ?? defaultValue ?? '');
21
27
  const [menuOpen, setMenuOpen] = (0, react_1.useState)(false);
22
28
  const [openerElement, setOpenerElement] = (0, react_1.useState)(null);
23
29
  const [anchorElement, setAnchorElement] = (0, react_1.useState)(null);
24
30
  const [menuElement, setMenuElement] = (0, react_1.useState)(null);
25
- const menuFloating = (0, react_2.useFloating)({ open: menuOpen, ...(0, dropdown_1.dropdownFloatingConfig)() });
31
+ const menuFloating = (0, react_2.useFloating)({
32
+ open: menuOpen,
33
+ ...(0, dropdown_1.dropdownFloatingConfig)({ offset: offsetValue }),
34
+ });
26
35
  const { setReference, setFloating } = menuFloating.refs;
27
36
  const menuFloatingStyle = (0, dropdown_1.useDropdownFloatingStyle)(menuFloating);
28
37
  (0, hooks_1.useIsomorphicLayoutEffect)(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/select/select.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/select/select.tsx"],"names":[],"mappings":"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"}
@@ -16,3 +16,4 @@ export interface FieldProps {
16
16
  /** Свойства компонента поля переключателя (input[type="checkbox"]). */
17
17
  export interface CheckboxInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'>, FieldProps, WithTestId {
18
18
  }
19
+ export type Theme = 'light' | 'dark' | 'unset';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sima-land/ui-nucleons",
3
3
  "type": "commonjs",
4
- "version": "45.0.0-alpha.51",
4
+ "version": "45.0.0-alpha.53",
5
5
  "author": "www.sima-land.ru team",
6
6
  "license": "Apache-2.0",
7
7
  "engines": {
@@ -31,7 +31,7 @@
31
31
  "focus-trap": "^7.2.0",
32
32
  "overlayscrollbars": "^2.8.0",
33
33
  "overlayscrollbars-react": "^0.5.6",
34
- "react-transition-state": "^2.1.2",
34
+ "react-transition-state": "^2.3.3",
35
35
  "redux": "^4.2.0"
36
36
  },
37
37
  "devDependencies": {