@cloud-ru/ds-uikit-product-fields-predefined 2.0.16-preview-d50a3da1.0 → 2.0.16-preview-e30f4f90.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 (45) hide show
  1. package/dist/cjs/components/FieldChat/FieldChat.js +1 -1
  2. package/dist/cjs/components/FieldChat/components/Attachments/styles.module.css +1 -1
  3. package/dist/cjs/components/FieldChat/components/TextAreaActionsFooter/styles.module.css +2 -4
  4. package/dist/cjs/components/FieldChat/styles.module.css +4 -2
  5. package/dist/cjs/components/FieldCode/FieldCode.js +1 -1
  6. package/dist/cjs/components/FieldCode/styles.module.css +17 -4
  7. package/dist/cjs/components/FieldPhone/FieldPhone.js +1 -4
  8. package/dist/cjs/components/FieldPhone/constants.d.ts +1 -7
  9. package/dist/cjs/components/FieldPhone/constants.js +2 -7
  10. package/dist/cjs/components/FieldSelectCreate/FieldSelectCreate.js +2 -2
  11. package/dist/cjs/components/FieldSelectCreate/helperComponents/SelectFooter/SelectFooter.d.ts +1 -3
  12. package/dist/cjs/components/FieldSelectCreate/helperComponents/SelectFooter/SelectFooter.js +2 -2
  13. package/dist/cjs/components/FieldSelectCreate/helperComponents/SelectFooter/styles.module.css +2 -1
  14. package/dist/cjs/components/FieldSelectCreate/styles.module.css +1 -2
  15. package/dist/cjs/style.css +27 -14
  16. package/dist/esm/components/FieldChat/FieldChat.js +1 -1
  17. package/dist/esm/components/FieldChat/components/Attachments/styles.module.css +1 -1
  18. package/dist/esm/components/FieldChat/components/TextAreaActionsFooter/styles.module.css +2 -4
  19. package/dist/esm/components/FieldChat/styles.module.css +4 -2
  20. package/dist/esm/components/FieldCode/FieldCode.js +1 -1
  21. package/dist/esm/components/FieldCode/styles.module.css +17 -4
  22. package/dist/esm/components/FieldPhone/FieldPhone.js +3 -6
  23. package/dist/esm/components/FieldPhone/constants.d.ts +1 -7
  24. package/dist/esm/components/FieldPhone/constants.js +1 -6
  25. package/dist/esm/components/FieldSelectCreate/FieldSelectCreate.js +2 -2
  26. package/dist/esm/components/FieldSelectCreate/helperComponents/SelectFooter/SelectFooter.d.ts +1 -3
  27. package/dist/esm/components/FieldSelectCreate/helperComponents/SelectFooter/SelectFooter.js +2 -2
  28. package/dist/esm/components/FieldSelectCreate/helperComponents/SelectFooter/styles.module.css +2 -1
  29. package/dist/esm/components/FieldSelectCreate/styles.module.css +1 -2
  30. package/dist/esm/style.css +27 -14
  31. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  32. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  33. package/package.json +14 -14
  34. package/src/components/FieldChat/FieldChat.tsx +1 -1
  35. package/src/components/FieldChat/components/Attachments/styles.module.scss +1 -1
  36. package/src/components/FieldChat/components/TextAreaActionsFooter/styles.module.scss +2 -5
  37. package/src/components/FieldChat/styles.module.scss +5 -3
  38. package/src/components/FieldCode/FieldCode.tsx +6 -1
  39. package/src/components/FieldCode/styles.module.scss +17 -5
  40. package/src/components/FieldPhone/FieldPhone.tsx +3 -16
  41. package/src/components/FieldPhone/constants.ts +1 -9
  42. package/src/components/FieldSelectCreate/FieldSelectCreate.tsx +1 -2
  43. package/src/components/FieldSelectCreate/helperComponents/SelectFooter/SelectFooter.tsx +2 -4
  44. package/src/components/FieldSelectCreate/helperComponents/SelectFooter/styles.module.scss +4 -2
  45. package/src/components/FieldSelectCreate/styles.module.scss +1 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloud-ru/ds-uikit-product-fields-predefined",
3
- "version": "2.0.16-preview-d50a3da1.0",
3
+ "version": "2.0.16-preview-e30f4f90.0",
4
4
  "description": "Набор предопределённых полей формы поверх @ds/fields — телефон, маски, имя, описание, код и другие готовые сценарии ввода.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -44,21 +44,21 @@
44
44
  "imask": "^7.6.1",
45
45
  "merge-refs": "^2.0.0",
46
46
  "react-imask": "^7.6.1",
47
+ "@cloud-ru/ds-button": "1.0.2",
47
48
  "@cloud-ru/ds-adaptive": "1.0.1",
48
- "@cloud-ru/ds-drawer": "1.2.2-preview-d50a3da1.0",
49
- "@cloud-ru/ds-attachment": "1.1.9-preview-d50a3da1.0",
50
- "@cloud-ru/ds-field-decorator": "1.0.7-preview-d50a3da1.0",
51
- "@cloud-ru/ds-button": "1.0.3-preview-d50a3da1.0",
52
- "@cloud-ru/ds-icons": "1.2.1-preview-d50a3da1.0",
53
- "@cloud-ru/ds-fields": "2.2.7-preview-d50a3da1.0",
54
- "@cloud-ru/ds-list": "2.2.1-preview-d50a3da1.0",
49
+ "@cloud-ru/ds-attachment": "1.1.9-preview-e30f4f90.0",
50
+ "@cloud-ru/ds-dropzone": "1.0.1",
51
+ "@cloud-ru/ds-field-decorator": "1.0.7-preview-e30f4f90.0",
52
+ "@cloud-ru/ds-fields": "2.2.7-preview-e30f4f90.0",
53
+ "@cloud-ru/ds-input-private": "1.0.5",
54
+ "@cloud-ru/ds-icons": "1.2.0",
55
+ "@cloud-ru/ds-drawer": "1.2.2-preview-e30f4f90.0",
56
+ "@cloud-ru/ds-list": "2.2.1-preview-e30f4f90.0",
55
57
  "@cloud-ru/ds-locale": "1.0.0",
56
- "@cloud-ru/ds-input-private": "1.0.6-preview-d50a3da1.0",
57
- "@cloud-ru/ds-modal": "1.1.3-preview-d50a3da1.0",
58
- "@cloud-ru/ds-scroll": "1.0.3-preview-d50a3da1.0",
59
- "@cloud-ru/ds-tooltip": "1.0.6-preview-d50a3da1.0",
60
- "@cloud-ru/ds-utils": "1.1.0",
61
- "@cloud-ru/ds-dropzone": "1.0.2-preview-d50a3da1.0"
58
+ "@cloud-ru/ds-modal": "1.1.3-preview-e30f4f90.0",
59
+ "@cloud-ru/ds-tooltip": "1.0.5",
60
+ "@cloud-ru/ds-scroll": "1.0.3-preview-e30f4f90.0",
61
+ "@cloud-ru/ds-utils": "1.1.0"
62
62
  },
63
63
  "peerDependencies": {
64
64
  "react-hook-form": "^7.79.0",
@@ -55,7 +55,7 @@ export function FieldChat({ handleSubmit: handleSubmitProp, value, attachment, a
55
55
  };
56
56
 
57
57
  return (
58
- <div className={styles.fieldChat}>
58
+ <div className={styles.fieldChat} data-layout-type={layoutType}>
59
59
  {isMobile && <Attachments files={files} isMobile={isMobile} />}
60
60
 
61
61
  <FieldTextArea
@@ -9,7 +9,7 @@
9
9
  .attachments {
10
10
  display: flex;
11
11
  gap: base.$sn-primitive-dimension-8;
12
- box-sizing: border-box;
12
+ padding: base.$sn-primitive-dimension-1 0;
13
13
 
14
14
  // Превью сохраняют свой размер и уезжают в горизонтальный скролл,
15
15
  // а не сжимаются под ширину контейнера.
@@ -6,9 +6,8 @@
6
6
  align-items: center;
7
7
  justify-content: space-between;
8
8
 
9
- box-sizing: border-box;
10
9
  width: 100%;
11
- padding: base.$sn-primitive-dimension-8;
10
+ padding-bottom: base.$sn-primitive-dimension-8;
12
11
  }
13
12
 
14
13
  .actionsLeft {
@@ -16,8 +15,6 @@
16
15
  flex-direction: row;
17
16
  gap: base.$sn-primitive-dimension-8;
18
17
  align-items: center;
19
-
20
- box-sizing: border-box;
21
18
  }
22
19
 
23
20
  .actionsRight {
@@ -27,6 +24,6 @@
27
24
  align-items: center;
28
25
  justify-content: flex-end;
29
26
 
30
- box-sizing: border-box;
31
27
  width: 100%;
28
+ padding-right: base.$sn-primitive-dimension-8;
32
29
  }
@@ -3,14 +3,16 @@
3
3
  .fieldChat {
4
4
  display: flex;
5
5
  flex-direction: column;
6
- gap: base.$sn-primitive-dimension-8;
7
-
8
- box-sizing: border-box;
6
+ gap: base.$sn-primitive-dimension-12;
9
7
  // Заполняем контейнер и не даём полю растягиваться под контент (ряд вложений):
10
8
  // без этого `.fieldChat` shrink-wrap'ится по самому широкому ребёнку (скролл превью)
11
9
  // и вылезает за родителя, а горизонтальный скролл вложений не включается.
12
10
  width: 100%;
13
11
  min-width: 0;
12
+
13
+ &[data-layout-type='mobile'] {
14
+ gap: base.$sn-primitive-dimension-8;
15
+ }
14
16
  }
15
17
 
16
18
  .uploadTooltip {
@@ -103,7 +103,12 @@ export const FieldCode = forwardRef<FieldCodeRef, FieldCodeProps>(function Field
103
103
  size={size}
104
104
  error={resolvedError}
105
105
  >
106
- <div ref={codeContainerRef} className={styles.codeContainer} data-stretch-cells={stretchCells || undefined}>
106
+ <div
107
+ ref={codeContainerRef}
108
+ className={styles.codeContainer}
109
+ data-size={size}
110
+ data-stretch-cells={stretchCells || undefined}
111
+ >
107
112
  {code.map((char, index) => (
108
113
  <Cell
109
114
  ref={inputRef => {
@@ -1,13 +1,17 @@
1
1
  @use '@cloud-ru/ds-figma-variables/build/scss/styles/styles.module' as base;
2
2
 
3
+ $container-gaps: (
4
+ 's': base.$sn-primitive-dimension-8,
5
+ 'm': base.$sn-primitive-dimension-8,
6
+ 'l': base.$sn-primitive-dimension-12,
7
+ );
8
+
3
9
  .fieldCode {
4
10
  display: flex;
5
11
  flex-direction: column;
6
12
  gap: base.$sn-primitive-dimension-8;
7
13
  align-items: center;
8
14
 
9
- box-sizing: border-box;
10
-
11
15
  // align-items: stretch перебивает center — без него дети остаются по ширине контента.
12
16
  &[data-stretch-cells] {
13
17
  align-items: stretch;
@@ -25,15 +29,23 @@
25
29
 
26
30
  .codeContainer {
27
31
  display: flex;
28
- gap: base.$sn-primitive-dimension-8;
29
32
  justify-content: safe center;
30
33
 
31
34
  &[data-stretch-cells] {
32
35
  width: 100%;
33
36
  }
37
+
38
+ @each $size, $gap in $container-gaps {
39
+ &[data-size='#{$size}'] {
40
+ gap: $gap;
41
+ }
42
+ }
34
43
  }
35
44
 
36
- // Разрыв между группами ячеек — 12 по макету: gap 8 + 4.
37
45
  .cellSpacing {
38
- margin-right: base.$sn-primitive-dimension-4;
46
+ @each $size, $margin-right in $container-gaps {
47
+ &[data-size='#{$size}'] {
48
+ margin-right: $margin-right;
49
+ }
50
+ }
39
51
  }
@@ -4,21 +4,11 @@ import { Item, ItemId } from '@cloud-ru/ds-list';
4
4
  import { useValueControl } from '@cloud-ru/ds-utils';
5
5
  import cn from 'classnames';
6
6
  import mergeRefs from 'merge-refs';
7
- import {
8
- ClipboardEventHandler,
9
- cloneElement,
10
- CSSProperties,
11
- forwardRef,
12
- isValidElement,
13
- useEffect,
14
- useMemo,
15
- useRef,
16
- useState,
17
- } from 'react';
7
+ import { ClipboardEventHandler, forwardRef, useEffect, useMemo, useRef, useState } from 'react';
18
8
  import { useIMask } from 'react-imask';
19
9
 
20
10
  import { TEST_IDS } from '../../constants';
21
- import { PLACEHOLDER_CHAR, REFOCUS_AFTER_COUNTRY_DELAY_MS, SELECTOR_FLAG_STYLE } from './constants';
11
+ import { PLACEHOLDER_CHAR, REFOCUS_AFTER_COUNTRY_DELAY_MS } from './constants';
22
12
  import { useCountries } from './hooks';
23
13
  import styles from './styles.module.scss';
24
14
  import { CountrySettings, FieldPhoneOptionsProps, MaskOptions } from './types';
@@ -233,9 +223,6 @@ export const FieldPhone = forwardRef<HTMLInputElement, FieldPhoneProps>(function
233
223
  };
234
224
 
235
225
  const showClear = showClearButton && Boolean(unmaskedValue);
236
- const selectorFlag = isValidElement<{ style?: CSSProperties }>(country?.beforeContent)
237
- ? cloneElement(country.beforeContent, { style: SELECTOR_FLAG_STYLE })
238
- : country?.beforeContent;
239
226
 
240
227
  return (
241
228
  <FieldCombo
@@ -255,7 +242,7 @@ export const FieldPhone = forwardRef<HTMLInputElement, FieldPhoneProps>(function
255
242
  isOnlyOneCountryAvailable
256
243
  ? undefined
257
244
  : {
258
- action: selectorFlag,
245
+ action: country?.beforeContent,
259
246
  'data-test-id': TEST_IDS.fieldPhoneCountrySelect,
260
247
  droplist: {
261
248
  items,
@@ -1,18 +1,10 @@
1
- import { CSSProperties } from 'react';
2
-
3
1
  export const PLACEHOLDER_CHAR = '_';
4
2
 
5
3
  /**
6
4
  * Размер иконки флага страны в селекторе и выпадающем списке. У флагов из `@cloud-ru/ds-icons/flags`
7
5
  * `size` — высота, ширина следует нативному аспекту 24×18: `18` даёт бокс 24×18.
8
6
  */
9
- export const FLAG_ICON_SIZE = 18;
10
-
11
- /**
12
- * Флаг в кнопке страны — 24×18 на всех размерах (Product-макет fieldPhone). Кнопка-слот FieldCombo
13
- * клампит иконки до 16 на size s, инлайн-стиль снимает кламп.
14
- */
15
- export const SELECTOR_FLAG_STYLE: CSSProperties = { maxWidth: 'none', maxHeight: 'none' };
7
+ export const FLAG_ICON_SIZE = 24;
16
8
 
17
9
  /** Задержка перед возвратом фокуса в поле после выбора страны — ждём закрытия дроплиста (desktop). */
18
10
  export const REFOCUS_AFTER_COUNTRY_DELAY_MS = 500;
@@ -103,11 +103,10 @@ export const FieldSelectCreate = forwardRef<HTMLInputElement, FieldSelectCreateP
103
103
  disabled={isNone || selectProps.disabled}
104
104
  placeholder={selectProps.placeholder ?? t('FieldSelectCreate.placeholder')}
105
105
  {...selectDataStates}
106
- footerDivider
107
106
  footer={
108
107
  // В состоянии ошибки показываем только «Обновить» из errorDataState — без футера «Создать» (по макету).
109
108
  selectProps.dataError ? undefined : (
110
- <SelectFooter onClick={onOpen} createButtonLabel={createButtonLabel} canCreate={canCreate} size={size} />
109
+ <SelectFooter onClick={onOpen} createButtonLabel={createButtonLabel} canCreate={canCreate} />
111
110
  )
112
111
  }
113
112
  />,
@@ -1,4 +1,4 @@
1
- import { APPEARANCE, Button, ICON_POSITION, Size, VIEW } from '@cloud-ru/ds-button';
1
+ import { APPEARANCE, Button, ICON_POSITION, VIEW } from '@cloud-ru/ds-button';
2
2
  import { PlusSVG } from '@cloud-ru/ds-icons/interface/system';
3
3
  import { Tooltip } from '@cloud-ru/ds-tooltip';
4
4
 
@@ -10,11 +10,10 @@ type SelectFooterProps = {
10
10
  onClick(): void;
11
11
  createButtonLabel: string;
12
12
  canCreate: boolean;
13
- size: Size;
14
13
  };
15
14
 
16
15
  /** Персистентный футер дроплиста с кнопкой «Создать» (недоступна и с tooltip при нехватке прав). */
17
- export function SelectFooter({ onClick, createButtonLabel, canCreate, size }: SelectFooterProps) {
16
+ export function SelectFooter({ onClick, createButtonLabel, canCreate }: SelectFooterProps) {
18
17
  const { t } = fieldsPredefinedLocale.useTranslations();
19
18
 
20
19
  const button = (
@@ -25,7 +24,6 @@ export function SelectFooter({ onClick, createButtonLabel, canCreate, size }: Se
25
24
  icon={<PlusSVG />}
26
25
  iconPosition={ICON_POSITION.Before}
27
26
  onClick={onClick}
28
- size={size}
29
27
  disabled={!canCreate}
30
28
  data-test-id={TEST_IDS.fieldSelectCreateFooterButton}
31
29
  />
@@ -1,6 +1,8 @@
1
- // Разделитель и отступы футера задаёт дроплист (`footerDivider`).
1
+ @use '@cloud-ru/ds-figma-variables/build/scss/styles/styles.module' as base;
2
+
2
3
  .footerWrapper {
3
4
  display: flex;
4
5
  align-items: center;
5
- box-sizing: border-box;
6
+ padding-top: base.$sn-primitive-dimension-4;
7
+ border-top: base.$sn-primitive-strokeWeight-strokeRegular solid base.$sn-theme-color-available-borderColor;
6
8
  }
@@ -3,8 +3,7 @@
3
3
  .fieldSelectCreate {
4
4
  display: flex;
5
5
  flex-direction: column;
6
- gap: base.$sn-primitive-dimension-4;
7
- box-sizing: border-box;
6
+ gap: base.$sn-primitive-dimension-8;
8
7
  }
9
8
 
10
9
  .createButton {