@cloud-ru/ds-fields 2.3.3 → 2.4.1
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/CHANGELOG.md +10 -0
- package/README.md +1 -0
- package/dist/cjs/components/FieldTime/FieldTime.d.ts +3 -1
- package/dist/cjs/components/FieldTime/FieldTime.js +2 -2
- package/dist/esm/components/FieldTime/FieldTime.d.ts +3 -1
- package/dist/esm/components/FieldTime/FieldTime.js +2 -2
- package/dist/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +6 -6
- package/src/components/FieldTime/FieldTime.tsx +5 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## 2.4.1 (2026-09-30)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @ds/fields
|
|
9
|
+
|
|
10
|
+
# 2.4.0 (2026-09-30)
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
- **FF-8984:** add footerMode prop ([66fa2ce](https://github.com/cloud-ru-tech/snack-v2/commit/66fa2cefc77b12ebca3da54680fa5f3cb93cfff6))
|
|
15
|
+
|
|
6
16
|
## 2.3.3 (2026-09-29)
|
|
7
17
|
|
|
8
18
|
**Note:** Version bump only for package @ds/fields
|
package/README.md
CHANGED
|
@@ -855,6 +855,7 @@ export function TimeBasic() {
|
|
|
855
855
|
| `disabled` | `boolean` | — | Поле выключено <br/> Отключено |
|
|
856
856
|
| `error` | `string` | — | Ошибка (приоритетнее `hint`; форсит `validationState=error`) |
|
|
857
857
|
| `fieldClassName` | `string` | — | CSS-класс оболочки поля |
|
|
858
|
+
| `footerMode` | `"apply-only"` \| `"current-time-and-apply"` | — | Режим футера. По умолчанию — current-time-and-apply |
|
|
858
859
|
| `hint` | `string` | — | Подсказка |
|
|
859
860
|
| `id` | `string` | — | HTML id |
|
|
860
861
|
| `innerRef` | `Ref<HTMLDivElement>` | — | Ref на корневой DOM-элемент |
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TimeValue } from '@cloud-ru/ds-calendar';
|
|
1
|
+
import { TimePickerFooterMode, TimeValue } from '@cloud-ru/ds-calendar';
|
|
2
2
|
import { FieldDecoratorProps } from '@cloud-ru/ds-field-decorator';
|
|
3
3
|
import { FocusEvent } from 'react';
|
|
4
4
|
import { FieldLayoutPresets } from '../../hooks';
|
|
@@ -25,6 +25,8 @@ type FieldTimeOwnProps = {
|
|
|
25
25
|
* @default true
|
|
26
26
|
*/
|
|
27
27
|
showSeconds?: boolean;
|
|
28
|
+
/** Режим футера. По умолчанию — current-time-and-apply */
|
|
29
|
+
footerMode?: TimePickerFooterMode;
|
|
28
30
|
/**
|
|
29
31
|
* Закрыть picker после Apply.
|
|
30
32
|
* @default true
|
|
@@ -20,7 +20,7 @@ const shared_1 = require("../shared");
|
|
|
20
20
|
const styles_module_scss_1 = __importDefault(require('../shared/styles.module.css'));
|
|
21
21
|
const mask_1 = require("./mask");
|
|
22
22
|
const styles_module_scss_2 = __importDefault(require('./styles.module.css'));
|
|
23
|
-
exports.FieldTime = (0, react_1.forwardRef)(function FieldTime({ label = '', labelTooltip, caption, hint, error, validationState = field_decorator_1.VALIDATION_STATE.Default, showHintIcon, length, required, size = field_decorator_1.SIZE.M, className, fieldClassName, background = true, value: valueProp, defaultValue, onChange, open: openProp, onOpenChange, showSeconds = true, closeOnApply = true, showClearButton: showClearButtonProp = true, onClearButtonClick, showCopyButton: showCopyButtonProp = true, onCopyButtonClick, disabled, readonly: readOnly, autoFocus, layoutPresets, id, name, placeholder, onFocus: onFocusProp, onBlur: onBlurProp, 'data-test-id': dataTestId = constants_1.TEST_IDS.fieldTime, ...rest }, ref) {
|
|
23
|
+
exports.FieldTime = (0, react_1.forwardRef)(function FieldTime({ label = '', labelTooltip, caption, hint, error, validationState = field_decorator_1.VALIDATION_STATE.Default, showHintIcon, length, required, size = field_decorator_1.SIZE.M, className, fieldClassName, background = true, value: valueProp, defaultValue, onChange, open: openProp, onOpenChange, showSeconds = true, footerMode, closeOnApply = true, showClearButton: showClearButtonProp = true, onClearButtonClick, showCopyButton: showCopyButtonProp = true, onCopyButtonClick, disabled, readonly: readOnly, autoFocus, layoutPresets, id, name, placeholder, onFocus: onFocusProp, onBlur: onBlurProp, 'data-test-id': dataTestId = constants_1.TEST_IDS.fieldTime, ...rest }, ref) {
|
|
24
24
|
const localRef = (0, react_1.useRef)(null);
|
|
25
25
|
const clearButtonRef = (0, react_1.useRef)(null);
|
|
26
26
|
const copyButtonRef = (0, react_1.useRef)(null);
|
|
@@ -160,7 +160,7 @@ exports.FieldTime = (0, react_1.forwardRef)(function FieldTime({ label = '', lab
|
|
|
160
160
|
// Явный data-test-id на дропдауне → детерминированный id портального контента:
|
|
161
161
|
// `getTestIdBuilder` строит `content-${id}`, так контент адресуем для open-picker-снимка
|
|
162
162
|
// (без него контент рисуется без data-test-id, а в @cloud-ru/ds-fields::TEST_IDS такого слота нет).
|
|
163
|
-
, { "data-test-id": `${dataTestId}__picker`, size: size, value: value, onChangeValue: emitChange, showSeconds: showSeconds, closeOnApply: closeOnApply, open: open && !disabled && !readOnly, onOpenChange: handleOpenChange, trigger: 'click', placement: 'bottom-start', navigationStartRef: navigationStartRef, onFocusLeave: () => {
|
|
163
|
+
, { "data-test-id": `${dataTestId}__picker`, size: size, value: value, onChangeValue: emitChange, showSeconds: showSeconds, footerMode: footerMode, closeOnApply: closeOnApply, open: open && !disabled && !readOnly, onOpenChange: handleOpenChange, trigger: 'click', placement: 'bottom-start', navigationStartRef: navigationStartRef, onFocusLeave: () => {
|
|
164
164
|
localRef.current?.focus();
|
|
165
165
|
handleOpenChange(false);
|
|
166
166
|
}, children: trigger }) }));
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TimeValue } from '@cloud-ru/ds-calendar';
|
|
1
|
+
import { TimePickerFooterMode, TimeValue } from '@cloud-ru/ds-calendar';
|
|
2
2
|
import { FieldDecoratorProps } from '@cloud-ru/ds-field-decorator';
|
|
3
3
|
import { FocusEvent } from 'react';
|
|
4
4
|
import { FieldLayoutPresets } from '../../hooks/index.js';
|
|
@@ -25,6 +25,8 @@ type FieldTimeOwnProps = {
|
|
|
25
25
|
* @default true
|
|
26
26
|
*/
|
|
27
27
|
showSeconds?: boolean;
|
|
28
|
+
/** Режим футера. По умолчанию — current-time-and-apply */
|
|
29
|
+
footerMode?: TimePickerFooterMode;
|
|
28
30
|
/**
|
|
29
31
|
* Закрыть picker после Apply.
|
|
30
32
|
* @default true
|
|
@@ -14,7 +14,7 @@ import { copyTextToClipboard, getAcrylicProps, toInputSize, useCopyButton } from
|
|
|
14
14
|
import fieldStyles from '../shared/styles.module.css';
|
|
15
15
|
import { parseTimeMask, timeToMaskString } from './mask.js';
|
|
16
16
|
import styles from './styles.module.css';
|
|
17
|
-
export const FieldTime = forwardRef(function FieldTime({ label = '', labelTooltip, caption, hint, error, validationState = VALIDATION_STATE.Default, showHintIcon, length, required, size = SIZE.M, className, fieldClassName, background = true, value: valueProp, defaultValue, onChange, open: openProp, onOpenChange, showSeconds = true, closeOnApply = true, showClearButton: showClearButtonProp = true, onClearButtonClick, showCopyButton: showCopyButtonProp = true, onCopyButtonClick, disabled, readonly: readOnly, autoFocus, layoutPresets, id, name, placeholder, onFocus: onFocusProp, onBlur: onBlurProp, 'data-test-id': dataTestId = TEST_IDS.fieldTime, ...rest }, ref) {
|
|
17
|
+
export const FieldTime = forwardRef(function FieldTime({ label = '', labelTooltip, caption, hint, error, validationState = VALIDATION_STATE.Default, showHintIcon, length, required, size = SIZE.M, className, fieldClassName, background = true, value: valueProp, defaultValue, onChange, open: openProp, onOpenChange, showSeconds = true, footerMode, closeOnApply = true, showClearButton: showClearButtonProp = true, onClearButtonClick, showCopyButton: showCopyButtonProp = true, onCopyButtonClick, disabled, readonly: readOnly, autoFocus, layoutPresets, id, name, placeholder, onFocus: onFocusProp, onBlur: onBlurProp, 'data-test-id': dataTestId = TEST_IDS.fieldTime, ...rest }, ref) {
|
|
18
18
|
const localRef = useRef(null);
|
|
19
19
|
const clearButtonRef = useRef(null);
|
|
20
20
|
const copyButtonRef = useRef(null);
|
|
@@ -154,7 +154,7 @@ export const FieldTime = forwardRef(function FieldTime({ label = '', labelToolti
|
|
|
154
154
|
// Явный data-test-id на дропдауне → детерминированный id портального контента:
|
|
155
155
|
// `getTestIdBuilder` строит `content-${id}`, так контент адресуем для open-picker-снимка
|
|
156
156
|
// (без него контент рисуется без data-test-id, а в @cloud-ru/ds-fields::TEST_IDS такого слота нет).
|
|
157
|
-
, { "data-test-id": `${dataTestId}__picker`, size: size, value: value, onChangeValue: emitChange, showSeconds: showSeconds, closeOnApply: closeOnApply, open: open && !disabled && !readOnly, onOpenChange: handleOpenChange, trigger: 'click', placement: 'bottom-start', navigationStartRef: navigationStartRef, onFocusLeave: () => {
|
|
157
|
+
, { "data-test-id": `${dataTestId}__picker`, size: size, value: value, onChangeValue: emitChange, showSeconds: showSeconds, footerMode: footerMode, closeOnApply: closeOnApply, open: open && !disabled && !readOnly, onOpenChange: handleOpenChange, trigger: 'click', placement: 'bottom-start', navigationStartRef: navigationStartRef, onFocusLeave: () => {
|
|
158
158
|
localRef.current?.focus();
|
|
159
159
|
handleOpenChange(false);
|
|
160
160
|
}, children: trigger }) }));
|