@gooddata/sdk-ui-filters 10.37.0 → 10.38.0-alpha.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.
Files changed (41) hide show
  1. package/esm/DateFilter/DateFilter.d.ts +4 -21
  2. package/esm/DateFilter/DateFilter.d.ts.map +1 -1
  3. package/esm/DateFilter/DateFilter.js +128 -114
  4. package/esm/DateFilter/DateFilter.js.map +1 -1
  5. package/esm/DateFilter/DateRangePicker/DateRangePickerInputFieldBody.d.ts +3 -5
  6. package/esm/DateFilter/DateRangePicker/DateRangePickerInputFieldBody.d.ts.map +1 -1
  7. package/esm/DateFilter/DateRangePicker/DateRangePickerInputFieldBody.js +26 -20
  8. package/esm/DateFilter/DateRangePicker/DateRangePickerInputFieldBody.js.map +1 -1
  9. package/esm/DateFilter/NumericInput/NumericInput.d.ts +2 -13
  10. package/esm/DateFilter/NumericInput/NumericInput.d.ts.map +1 -1
  11. package/esm/DateFilter/NumericInput/NumericInput.js +26 -32
  12. package/esm/DateFilter/NumericInput/NumericInput.js.map +1 -1
  13. package/esm/MeasureValueFilter/Dropdown.d.ts +1 -6
  14. package/esm/MeasureValueFilter/Dropdown.d.ts.map +1 -1
  15. package/esm/MeasureValueFilter/Dropdown.js +14 -24
  16. package/esm/MeasureValueFilter/Dropdown.js.map +1 -1
  17. package/esm/MeasureValueFilter/DropdownBody.d.ts +1 -3
  18. package/esm/MeasureValueFilter/DropdownBody.d.ts.map +1 -1
  19. package/esm/MeasureValueFilter/DropdownBody.js +120 -123
  20. package/esm/MeasureValueFilter/DropdownBody.js.map +1 -1
  21. package/esm/MeasureValueFilter/MeasureValueFilter.d.ts +1 -10
  22. package/esm/MeasureValueFilter/MeasureValueFilter.d.ts.map +1 -1
  23. package/esm/MeasureValueFilter/MeasureValueFilter.js +21 -33
  24. package/esm/MeasureValueFilter/MeasureValueFilter.js.map +1 -1
  25. package/esm/MeasureValueFilter/MeasureValueFilterDropdown.d.ts +1 -5
  26. package/esm/MeasureValueFilter/MeasureValueFilterDropdown.d.ts.map +1 -1
  27. package/esm/MeasureValueFilter/MeasureValueFilterDropdown.js +6 -15
  28. package/esm/MeasureValueFilter/MeasureValueFilterDropdown.js.map +1 -1
  29. package/esm/MeasureValueFilter/OperatorDropdown.d.ts +1 -11
  30. package/esm/MeasureValueFilter/OperatorDropdown.d.ts.map +1 -1
  31. package/esm/MeasureValueFilter/OperatorDropdown.js +16 -22
  32. package/esm/MeasureValueFilter/OperatorDropdown.js.map +1 -1
  33. package/esm/MeasureValueFilter/OperatorDropdownBody.d.ts.map +1 -1
  34. package/esm/MeasureValueFilter/OperatorDropdownBody.js +20 -23
  35. package/esm/MeasureValueFilter/OperatorDropdownBody.js.map +1 -1
  36. package/esm/MeasureValueFilter/OperatorDropdownItem.d.ts +1 -6
  37. package/esm/MeasureValueFilter/OperatorDropdownItem.d.ts.map +1 -1
  38. package/esm/MeasureValueFilter/OperatorDropdownItem.js +16 -26
  39. package/esm/MeasureValueFilter/OperatorDropdownItem.js.map +1 -1
  40. package/esm/sdk-ui-filters.d.ts +6 -36
  41. package/package.json +10 -10
@@ -12,7 +12,7 @@ import { OverlayPositionType } from "@gooddata/sdk-ui-kit";
12
12
  */
13
13
  export interface IDateFilterStatePropsIntersection {
14
14
  excludeCurrentPeriod: boolean;
15
- selectedFilterOption: DateFilterOption;
15
+ selectedFilterOption?: DateFilterOption;
16
16
  }
17
17
  /**
18
18
  * Props of the {@link DateFilter} component.
@@ -20,7 +20,7 @@ export interface IDateFilterStatePropsIntersection {
20
20
  */
21
21
  export interface IDateFilterOwnProps extends IDateFilterStatePropsIntersection {
22
22
  filterOptions: IDateFilterOptionsByType;
23
- availableGranularities: DateFilterGranularity[];
23
+ availableGranularities?: DateFilterGranularity[];
24
24
  isEditMode?: boolean;
25
25
  openOnInit?: boolean;
26
26
  customFilterName?: string;
@@ -89,7 +89,7 @@ export interface IDateFilterOwnProps extends IDateFilterStatePropsIntersection {
89
89
  * @public
90
90
  */
91
91
  export interface IDateFilterCallbackProps {
92
- onApply: (dateFilterOption: DateFilterOption, excludeCurrentPeriod: boolean) => void;
92
+ onApply?: (dateFilterOption: DateFilterOption, excludeCurrentPeriod: boolean) => void;
93
93
  onSelect?: (dateFilterOption: DateFilterOption, excludeCurrentPeriod: boolean) => void;
94
94
  onCancel?: () => void;
95
95
  onOpen?: () => void;
@@ -119,22 +119,5 @@ export interface IDateFilterState extends IDateFilterStatePropsIntersection {
119
119
  *
120
120
  * @public
121
121
  */
122
- export declare class DateFilter extends React.PureComponent<IDateFilterProps, IDateFilterState> {
123
- static defaultProps: Partial<IDateFilterProps>;
124
- static getDerivedStateFromProps(nextProps: IDateFilterProps, prevState: IDateFilterState): IDateFilterState;
125
- private static getStateFromProps;
126
- private static getStateFromWorkingProps;
127
- private static getStateFromSelectedOption;
128
- private static checkInitialFilterOption;
129
- constructor(props: IDateFilterProps);
130
- componentDidMount(): void;
131
- render(): React.JSX.Element;
132
- private handleApplyClick;
133
- private onChangesDiscarded;
134
- private onCancelClicked;
135
- private onDropdownOpenChanged;
136
- private handleExcludeCurrentPeriodChange;
137
- private handleSelectedFilterOptionChange;
138
- private handleSelectChange;
139
- }
122
+ export declare const DateFilter: React.NamedExoticComponent<IDateFilterProps>;
140
123
  //# sourceMappingURL=DateFilter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DateFilter.d.ts","sourceRoot":"","sources":["../../src/DateFilter/DateFilter.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DateFilter.d.ts","sourceRoot":"","sources":["../../src/DateFilter/DateFilter.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAkD,MAAM,OAAO,CAAC;AAI7F,OAAO,EAAE,qBAAqB,EAA4B,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAKjG,OAAO,EACH,gBAAgB,EAChB,wBAAwB,EAE3B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;;GAIG;AACH,MAAM,WAAW,iCAAiC;IAC9C,oBAAoB,EAAE,OAAO,CAAC;IAC9B,oBAAoB,CAAC,EAAE,gBAAgB,CAAC;CAC3C;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAoB,SAAQ,iCAAiC;IAC1E,aAAa,EAAE,wBAAwB,CAAC;IACxC,sBAAsB,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACjD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;OAIG;IACH,UAAU,CAAC,EAAE,uBAAuB,CAAC;IAErC;;;;OAIG;IACH,4BAA4B,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC;IAE9E;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;;;OAMG;IACH,2BAA2B,CAAC,EAAE,gBAAgB,CAAC;IAE/C;;;;;;OAMG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAC;IAEtC;;;OAGG;IACH,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAE3C;;;;OAIG;IACH,eAAe,CAAC,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;IAExD;;OAEG;IACH,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;CAC7C;AAED;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACrC,OAAO,CAAC,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,OAAO,KAAK,IAAI,CAAC;IACtF,QAAQ,CAAC,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,OAAO,KAAK,IAAI,CAAC;IACvF,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAiB,SAAQ,mBAAmB,EAAE,wBAAwB;CAAG;AAE1F;;;;GAIG;AACH,MAAM,WAAW,gBAAiB,SAAQ,iCAAiC;IACvE,wBAAwB,EAAE,OAAO,CAAC;IAClC,wBAAwB,EAAE,gBAAgB,CAAC;IAC3C,+BAA+B,EAAE,OAAO,CAAC;IACzC,+BAA+B,EAAE,gBAAgB,CAAC;IAClD,6BAA6B,EAAE,OAAO,CAAC;CAC1C;AAyDD;;;;GAIG;AACH,eAAO,MAAM,UAAU,8CAqLrB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  // (C) 2007-2025 GoodData Corporation
2
- import React from "react";
2
+ import React, { memo, useCallback, useEffect, useRef, useState } from "react";
3
3
  import isEqual from "lodash/isEqual.js";
4
4
  import isNil from "lodash/isNil.js";
5
5
  import noop from "lodash/noop.js";
@@ -11,132 +11,146 @@ import { isUiRelativeDateFilterForm, } from "./interfaces/index.js";
11
11
  import { DEFAULT_DATE_FORMAT } from "./constants/Platform.js";
12
12
  import { normalizeSelectedFilterOption } from "./utils/FilterOptionNormalization.js";
13
13
  import isEmpty from "lodash/isEmpty.js";
14
+ const getStateFromProps = (props) => {
15
+ const canExcludeCurrent = canExcludeCurrentPeriod(props.selectedFilterOption);
16
+ return {
17
+ initSelectedFilterOption: props.selectedFilterOption,
18
+ selectedFilterOption: props.selectedFilterOption,
19
+ initExcludeCurrentPeriod: props.excludeCurrentPeriod,
20
+ excludeCurrentPeriod: canExcludeCurrent ? props.excludeCurrentPeriod : false,
21
+ isExcludeCurrentPeriodEnabled: canExcludeCurrent,
22
+ initWorkingSelectedFilterOption: props.workingSelectedFilterOption ?? props.selectedFilterOption,
23
+ initWorkingExcludeCurrentPeriod: props.workingExcludeCurrentPeriod ?? props.excludeCurrentPeriod,
24
+ };
25
+ };
26
+ const getStateFromWorkingProps = (props) => {
27
+ const selectedFilterOption = props.workingSelectedFilterOption ?? props.selectedFilterOption;
28
+ const canExcludeCurrent = canExcludeCurrentPeriod(selectedFilterOption);
29
+ return {
30
+ ...getStateFromProps(props),
31
+ selectedFilterOption: selectedFilterOption,
32
+ excludeCurrentPeriod: canExcludeCurrent
33
+ ? (props.workingExcludeCurrentPeriod ?? props.excludeCurrentPeriod)
34
+ : false,
35
+ initWorkingExcludeCurrentPeriod: props.workingExcludeCurrentPeriod ?? props.excludeCurrentPeriod,
36
+ initWorkingSelectedFilterOption: selectedFilterOption,
37
+ initExcludeCurrentPeriod: props.excludeCurrentPeriod,
38
+ isExcludeCurrentPeriodEnabled: canExcludeCurrent,
39
+ };
40
+ };
41
+ const getStateFromSelectedOption = (selectedFilterOption, excludeCurrentPeriod) => {
42
+ const canExcludeCurrent = canExcludeCurrentPeriod(selectedFilterOption);
43
+ return {
44
+ selectedFilterOption,
45
+ excludeCurrentPeriod: canExcludeCurrent ? excludeCurrentPeriod : false,
46
+ isExcludeCurrentPeriodEnabled: canExcludeCurrent,
47
+ };
48
+ };
49
+ const checkInitialFilterOption = (filterOption) => {
50
+ if (isAbsoluteDateFilterForm(filterOption) && (isNil(filterOption.from) || isNil(filterOption.to))) {
51
+ console.warn("The default filter option is not valid. Values 'from' and 'to' from absoluteForm filter option must be specified.");
52
+ }
53
+ if (isUiRelativeDateFilterForm(filterOption) && (isNil(filterOption.from) || isNil(filterOption.to))) {
54
+ console.warn("The default filter option is not valid. Values 'from' and 'to' from relativeForm filter option must be specified.");
55
+ }
56
+ };
14
57
  /**
15
58
  * {@link https://sdk.gooddata.com/gooddata-ui/docs/date_filter_component.html | DateFilter} is a component for configuring a date filter value.
16
59
  *
17
60
  * @public
18
61
  */
19
- export class DateFilter extends React.PureComponent {
20
- static defaultProps = {
21
- dateFormat: DEFAULT_DATE_FORMAT,
22
- isEditMode: false,
23
- isTimeForAbsoluteRangeEnabled: false,
24
- locale: "en-US",
25
- onCancel: noop,
26
- onOpen: noop,
27
- onClose: noop,
28
- weekStart: "Sunday",
29
- withoutApply: false,
30
- };
31
- static getDerivedStateFromProps(nextProps, prevState) {
32
- const withoutApply = nextProps.withoutApply ?? nextProps.enableDashboardFiltersApplyModes;
33
- if (withoutApply &&
34
- nextProps.workingSelectedFilterOption &&
35
- nextProps.excludeCurrentPeriod !== undefined &&
36
- (!isEqual(nextProps.workingSelectedFilterOption, prevState.initWorkingSelectedFilterOption) ||
37
- nextProps.excludeCurrentPeriod !== prevState.initWorkingExcludeCurrentPeriod)) {
38
- return DateFilter.getStateFromWorkingProps(nextProps);
62
+ export const DateFilter = memo(function DateFilter(props) {
63
+ const { customFilterName, dateFilterMode, dateFormat = DEFAULT_DATE_FORMAT, filterOptions, selectedFilterOption: originalSelectedFilterOption, excludeCurrentPeriod: originalExcludeCurrentPeriod, availableGranularities, isEditMode = false, openOnInit, locale = "en-US", isTimeForAbsoluteRangeEnabled = false, weekStart = "Sunday", customIcon, showDropDownHeaderMessage, FilterConfigurationComponent, withoutApply: withoutApplyProp = false, enableDashboardFiltersApplyModes, ButtonComponent, overlayPositionType, onApply, onSelect, onCancel = noop, onOpen = noop, onClose = noop, workingSelectedFilterOption, workingExcludeCurrentPeriod, } = props;
64
+ const withoutApply = withoutApplyProp ?? enableDashboardFiltersApplyModes;
65
+ // Initialize state based on props
66
+ const [state, setState] = useState(() => getStateFromProps(props));
67
+ // Track previous props for getDerivedStateFromProps equivalent
68
+ const prevPropsRef = useRef({
69
+ selectedFilterOption: originalSelectedFilterOption,
70
+ excludeCurrentPeriod: originalExcludeCurrentPeriod,
71
+ workingSelectedFilterOption,
72
+ workingExcludeCurrentPeriod,
73
+ });
74
+ // getDerivedStateFromProps equivalent
75
+ useEffect(() => {
76
+ const prevProps = prevPropsRef.current;
77
+ const withoutApplyFlag = withoutApplyProp ?? enableDashboardFiltersApplyModes;
78
+ if (withoutApplyFlag &&
79
+ workingSelectedFilterOption &&
80
+ originalExcludeCurrentPeriod !== undefined &&
81
+ (!isEqual(workingSelectedFilterOption, prevProps.workingSelectedFilterOption) ||
82
+ originalExcludeCurrentPeriod !== prevProps.workingExcludeCurrentPeriod)) {
83
+ setState(getStateFromWorkingProps(props));
39
84
  }
40
- if (!isEqual(nextProps.selectedFilterOption, prevState.initSelectedFilterOption) ||
41
- nextProps.excludeCurrentPeriod !== prevState.initExcludeCurrentPeriod) {
42
- return DateFilter.getStateFromProps(nextProps);
85
+ else if (!isEqual(originalSelectedFilterOption, prevProps.selectedFilterOption) ||
86
+ originalExcludeCurrentPeriod !== prevProps.excludeCurrentPeriod) {
87
+ setState(getStateFromProps(props));
43
88
  }
44
- return null;
45
- }
46
- static getStateFromProps(props) {
47
- const canExcludeCurrent = canExcludeCurrentPeriod(props.selectedFilterOption);
48
- return {
49
- initSelectedFilterOption: props.selectedFilterOption,
50
- selectedFilterOption: props.selectedFilterOption,
51
- initExcludeCurrentPeriod: props.excludeCurrentPeriod,
52
- excludeCurrentPeriod: canExcludeCurrent ? props.excludeCurrentPeriod : false,
53
- isExcludeCurrentPeriodEnabled: canExcludeCurrent,
54
- initWorkingSelectedFilterOption: props.workingSelectedFilterOption ?? props.selectedFilterOption,
55
- initWorkingExcludeCurrentPeriod: props.workingExcludeCurrentPeriod ?? props.excludeCurrentPeriod,
89
+ // Update prev props
90
+ prevPropsRef.current = {
91
+ selectedFilterOption: originalSelectedFilterOption,
92
+ excludeCurrentPeriod: originalExcludeCurrentPeriod,
93
+ workingSelectedFilterOption,
94
+ workingExcludeCurrentPeriod,
56
95
  };
57
- }
58
- static getStateFromWorkingProps(props) {
59
- const selectedFilterOption = props.workingSelectedFilterOption ?? props.selectedFilterOption;
60
- const canExcludeCurrent = canExcludeCurrentPeriod(selectedFilterOption);
61
- return {
62
- ...DateFilter.getStateFromProps(props),
63
- selectedFilterOption: selectedFilterOption,
64
- excludeCurrentPeriod: canExcludeCurrent
65
- ? (props.workingExcludeCurrentPeriod ?? props.excludeCurrentPeriod)
66
- : false,
67
- initWorkingExcludeCurrentPeriod: props.workingExcludeCurrentPeriod ?? props.excludeCurrentPeriod,
68
- initWorkingSelectedFilterOption: selectedFilterOption,
69
- initExcludeCurrentPeriod: props.excludeCurrentPeriod,
70
- isExcludeCurrentPeriodEnabled: canExcludeCurrent,
71
- };
72
- }
73
- static getStateFromSelectedOption = (selectedFilterOption, excludeCurrentPeriod) => {
74
- const canExcludeCurrent = canExcludeCurrentPeriod(selectedFilterOption);
75
- return {
76
- selectedFilterOption,
77
- excludeCurrentPeriod: canExcludeCurrent ? excludeCurrentPeriod : false,
78
- isExcludeCurrentPeriodEnabled: canExcludeCurrent,
79
- };
80
- };
81
- static checkInitialFilterOption = (filterOption) => {
82
- if (isAbsoluteDateFilterForm(filterOption) && (isNil(filterOption.from) || isNil(filterOption.to))) {
83
- console.warn("The default filter option is not valid. Values 'from' and 'to' from absoluteForm filter option must be specified.");
96
+ }, [
97
+ originalSelectedFilterOption,
98
+ originalExcludeCurrentPeriod,
99
+ workingSelectedFilterOption,
100
+ workingExcludeCurrentPeriod,
101
+ withoutApplyProp,
102
+ enableDashboardFiltersApplyModes,
103
+ props,
104
+ ]);
105
+ // componentDidMount equivalent
106
+ useEffect(() => {
107
+ checkInitialFilterOption(originalSelectedFilterOption);
108
+ // eslint-disable-next-line react-hooks/exhaustive-deps
109
+ }, []);
110
+ const handleSelectChange = useCallback(() => {
111
+ const normalizedSelectedFilterOption = normalizeSelectedFilterOption(state.selectedFilterOption);
112
+ if (isEmpty(validateFilterOption(normalizedSelectedFilterOption))) {
113
+ onSelect?.(normalizedSelectedFilterOption, state.excludeCurrentPeriod);
84
114
  }
85
- if (isUiRelativeDateFilterForm(filterOption) &&
86
- (isNil(filterOption.from) || isNil(filterOption.to))) {
87
- console.warn("The default filter option is not valid. Values 'from' and 'to' from relativeForm filter option must be specified.");
115
+ }, [state.selectedFilterOption, state.excludeCurrentPeriod, onSelect]);
116
+ const handleApplyClick = useCallback(() => {
117
+ const normalizedSelectedFilterOption = normalizeSelectedFilterOption(state.selectedFilterOption);
118
+ onApply(normalizedSelectedFilterOption, state.excludeCurrentPeriod);
119
+ }, [state.selectedFilterOption, state.excludeCurrentPeriod, onApply]);
120
+ const onChangesDiscarded = useCallback(() => {
121
+ if (!withoutApply) {
122
+ setState(getStateFromProps(props));
123
+ setTimeout(handleSelectChange, 0); // Schedule after state update
88
124
  }
89
- };
90
- constructor(props) {
91
- super(props);
92
- this.state = DateFilter.getStateFromProps(props);
93
- }
94
- componentDidMount() {
95
- DateFilter.checkInitialFilterOption(this.props.selectedFilterOption);
96
- }
97
- render() {
98
- const { customFilterName, dateFilterMode, dateFormat, filterOptions, selectedFilterOption: originalSelectedFilterOption, excludeCurrentPeriod: originalExcludeCurrentPeriod, availableGranularities, isEditMode, openOnInit, locale, isTimeForAbsoluteRangeEnabled, weekStart, customIcon, showDropDownHeaderMessage, FilterConfigurationComponent, withoutApply: withoutApplyProp, enableDashboardFiltersApplyModes, ButtonComponent, overlayPositionType, } = this.props;
99
- const withoutApply = withoutApplyProp ?? enableDashboardFiltersApplyModes;
100
- const { excludeCurrentPeriod, selectedFilterOption, isExcludeCurrentPeriodEnabled } = this.state;
101
- return dateFilterMode === "hidden" ? null : (React.createElement(DateFilterCore, { availableGranularities: availableGranularities, customFilterName: customFilterName, dateFormat: dateFormat, openOnInit: openOnInit, showDropDownHeaderMessage: showDropDownHeaderMessage, disabled: dateFilterMode === "readonly", excludeCurrentPeriod: excludeCurrentPeriod, originalExcludeCurrentPeriod: originalExcludeCurrentPeriod, isExcludeCurrentPeriodEnabled: isExcludeCurrentPeriodEnabled, isTimeForAbsoluteRangeEnabled: isTimeForAbsoluteRangeEnabled, isEditMode: isEditMode, filterOptions: filterOptions, selectedFilterOption: selectedFilterOption, originalSelectedFilterOption: originalSelectedFilterOption, locale: locale, onApplyClick: this.handleApplyClick, onCancelClick: this.onCancelClicked, onDropdownOpenChanged: this.onDropdownOpenChanged, onExcludeCurrentPeriodChange: this.handleExcludeCurrentPeriodChange, onSelectedFilterOptionChange: this.handleSelectedFilterOptionChange, errors: validateFilterOption(selectedFilterOption), weekStart: weekStart, customIcon: customIcon, FilterConfigurationComponent: FilterConfigurationComponent, withoutApply: withoutApply, ButtonComponent: ButtonComponent, overlayPositionType: overlayPositionType }));
102
- }
103
- handleApplyClick = () => {
104
- const normalizedSelectedFilterOption = normalizeSelectedFilterOption(this.state.selectedFilterOption);
105
- this.props.onApply(normalizedSelectedFilterOption, this.state.excludeCurrentPeriod);
106
- };
107
- onChangesDiscarded = () => {
108
- if (!this.props.withoutApply) {
109
- this.setState(() => DateFilter.getStateFromProps(this.props), this.handleSelectChange);
125
+ else if (withoutApply && !isEmpty(validateFilterOption(state.selectedFilterOption))) {
126
+ setState(getStateFromWorkingProps(props));
110
127
  }
111
- else if (this.props.withoutApply &&
112
- !isEmpty(validateFilterOption(this.state.selectedFilterOption))) {
113
- this.setState(() => DateFilter.getStateFromWorkingProps(this.props));
114
- }
115
- };
116
- onCancelClicked = () => {
117
- this.props.onCancel();
118
- this.onChangesDiscarded();
119
- };
120
- onDropdownOpenChanged = (isOpen) => {
128
+ }, [withoutApply, props, handleSelectChange, state.selectedFilterOption]);
129
+ const onCancelClicked = useCallback(() => {
130
+ onCancel();
131
+ onChangesDiscarded();
132
+ }, [onCancel, onChangesDiscarded]);
133
+ const onDropdownOpenChanged = useCallback((isOpen) => {
121
134
  if (isOpen) {
122
- this.props.onOpen();
135
+ onOpen();
123
136
  }
124
137
  else {
125
- this.props.onClose();
126
- this.onChangesDiscarded();
138
+ onClose();
139
+ onChangesDiscarded();
127
140
  }
128
- };
129
- handleExcludeCurrentPeriodChange = (excludeCurrentPeriod) => {
130
- this.setState({ excludeCurrentPeriod }, this.handleSelectChange);
131
- };
132
- handleSelectedFilterOptionChange = (selectedFilterOption) => {
133
- this.setState((state) => DateFilter.getStateFromSelectedOption(selectedFilterOption, state.excludeCurrentPeriod), this.handleSelectChange);
134
- };
135
- handleSelectChange = () => {
136
- const normalizedSelectedFilterOption = normalizeSelectedFilterOption(this.state.selectedFilterOption);
137
- if (isEmpty(validateFilterOption(normalizedSelectedFilterOption))) {
138
- this.props.onSelect?.(normalizedSelectedFilterOption, this.state.excludeCurrentPeriod);
139
- }
140
- };
141
- }
141
+ }, [onOpen, onClose, onChangesDiscarded]);
142
+ const handleExcludeCurrentPeriodChange = useCallback((excludeCurrentPeriod) => {
143
+ setState((prevState) => ({ ...prevState, excludeCurrentPeriod }));
144
+ setTimeout(handleSelectChange, 0); // Schedule after state update
145
+ }, [handleSelectChange]);
146
+ const handleSelectedFilterOptionChange = useCallback((selectedFilterOption) => {
147
+ setState((prevState) => ({
148
+ ...prevState,
149
+ ...getStateFromSelectedOption(selectedFilterOption, prevState.excludeCurrentPeriod),
150
+ }));
151
+ setTimeout(handleSelectChange, 0); // Schedule after state update
152
+ }, [handleSelectChange]);
153
+ const { excludeCurrentPeriod, selectedFilterOption, isExcludeCurrentPeriodEnabled } = state;
154
+ return dateFilterMode === "hidden" ? null : (React.createElement(DateFilterCore, { availableGranularities: availableGranularities, customFilterName: customFilterName, dateFormat: dateFormat, openOnInit: openOnInit, showDropDownHeaderMessage: showDropDownHeaderMessage, disabled: dateFilterMode === "readonly", excludeCurrentPeriod: excludeCurrentPeriod, originalExcludeCurrentPeriod: originalExcludeCurrentPeriod, isExcludeCurrentPeriodEnabled: isExcludeCurrentPeriodEnabled, isTimeForAbsoluteRangeEnabled: isTimeForAbsoluteRangeEnabled, isEditMode: isEditMode, filterOptions: filterOptions, selectedFilterOption: selectedFilterOption, originalSelectedFilterOption: originalSelectedFilterOption, locale: locale, onApplyClick: handleApplyClick, onCancelClick: onCancelClicked, onDropdownOpenChanged: onDropdownOpenChanged, onExcludeCurrentPeriodChange: handleExcludeCurrentPeriodChange, onSelectedFilterOptionChange: handleSelectedFilterOptionChange, errors: validateFilterOption(selectedFilterOption), weekStart: weekStart, customIcon: customIcon, FilterConfigurationComponent: FilterConfigurationComponent, withoutApply: withoutApply, ButtonComponent: ButtonComponent, overlayPositionType: overlayPositionType }));
155
+ });
142
156
  //# sourceMappingURL=DateFilter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DateFilter.js","sourceRoot":"","sources":["../../src/DateFilter/DateFilter.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DateFilter.js","sourceRoot":"","sources":["../../src/DateFilter/DateFilter.tsx"],"names":[],"mappings":"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"}
@@ -1,10 +1,8 @@
1
1
  import React from "react";
2
- export declare class DateRangePickerInputFieldBody extends React.Component<React.InputHTMLAttributes<HTMLInputElement>> {
3
- private inputRef;
2
+ export declare const DateRangePickerInputFieldBody: React.ForwardRefExoticComponent<React.InputHTMLAttributes<HTMLInputElement> & React.RefAttributes<{
4
3
  invokeInputMethod: (key: "blur" | "focus") => void;
5
4
  blur: () => void;
6
5
  focus: () => void;
7
- get value(): string;
8
- render(): React.JSX.Element;
9
- }
6
+ value: string;
7
+ }>>;
10
8
  //# sourceMappingURL=DateRangePickerInputFieldBody.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DateRangePickerInputFieldBody.d.ts","sourceRoot":"","sources":["../../../src/DateFilter/DateRangePicker/DateRangePickerInputFieldBody.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,qBAAa,6BAA8B,SAAQ,KAAK,CAAC,SAAS,CAC9D,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAC9C;IACG,OAAO,CAAC,QAAQ,CAAuC;IAEhD,iBAAiB,GAAI,KAAK,MAAM,GAAG,OAAO,KAAG,IAAI,CAItD;IAEK,IAAI,QAAO,IAAI,CAAmC;IAClD,KAAK,QAAO,IAAI,CAAoC;IAE3D,IAAW,KAAK,IAAI,MAAM,CAMzB;IAEM,MAAM;CAahB"}
1
+ {"version":3,"file":"DateRangePickerInputFieldBody.d.ts","sourceRoot":"","sources":["../../../src/DateFilter/DateRangePicker/DateRangePickerInputFieldBody.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,eAAO,MAAM,6BAA6B;uBAEf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,KAAK,IAAI;UAC5C,MAAM,IAAI;WACT,MAAM,IAAI;WACV,MAAM;GA0CnB,CAAC"}
@@ -1,28 +1,34 @@
1
- // (C) 2007-2022 GoodData Corporation
1
+ // (C) 2007-2025 GoodData Corporation
2
2
  import React from "react";
3
3
  import cx from "classnames";
4
4
  // This has to be a class because DayPickerInput refs to it internally.
5
5
  // See https://github.com/gpbl/react-day-picker/issues/748 for more information
6
- export class DateRangePickerInputFieldBody extends React.Component {
7
- inputRef = React.createRef();
8
- invokeInputMethod = (key) => {
9
- if (this.inputRef.current) {
10
- this.inputRef.current[key]();
6
+ export const DateRangePickerInputFieldBody = React.forwardRef(function DateRangePickerInputFieldBody(props, ref) {
7
+ const inputRef = React.useRef(null);
8
+ const invokeInputMethod = React.useCallback((key) => {
9
+ if (inputRef.current) {
10
+ inputRef.current[key]();
11
11
  }
12
- };
13
- blur = () => this.invokeInputMethod("blur");
14
- focus = () => this.invokeInputMethod("focus");
15
- get value() {
16
- if (this.inputRef.current) {
17
- return this.inputRef.current.value;
12
+ }, []);
13
+ const blur = React.useCallback(() => invokeInputMethod("blur"), [invokeInputMethod]);
14
+ const focus = React.useCallback(() => invokeInputMethod("focus"), [invokeInputMethod]);
15
+ const getValue = React.useCallback(() => {
16
+ if (inputRef.current) {
17
+ return inputRef.current.value;
18
18
  }
19
19
  return "";
20
- }
21
- render() {
22
- const { className } = this.props;
23
- return (React.createElement("span", { className: cx(className) },
24
- React.createElement("span", { className: "gd-icon-calendar" }),
25
- React.createElement("input", { ...this.props, ref: this.inputRef, className: "input-text s-date-range-picker-input-field" })));
26
- }
27
- }
20
+ }, []);
21
+ React.useImperativeHandle(ref, () => ({
22
+ invokeInputMethod,
23
+ blur,
24
+ focus,
25
+ get value() {
26
+ return getValue();
27
+ },
28
+ }), [invokeInputMethod, blur, focus, getValue]);
29
+ const { className } = props;
30
+ return (React.createElement("span", { className: cx(className) },
31
+ React.createElement("span", { className: "gd-icon-calendar" }),
32
+ React.createElement("input", { ...props, ref: inputRef, className: "input-text s-date-range-picker-input-field" })));
33
+ });
28
34
  //# sourceMappingURL=DateRangePickerInputFieldBody.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DateRangePickerInputFieldBody.js","sourceRoot":"","sources":["../../../src/DateFilter/DateRangePicker/DateRangePickerInputFieldBody.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,uEAAuE;AACvE,+EAA+E;AAC/E,MAAM,OAAO,6BAA8B,SAAQ,KAAK,CAAC,SAExD;IACW,QAAQ,GAAG,KAAK,CAAC,SAAS,EAAoB,CAAC;IAEhD,iBAAiB,GAAG,CAAC,GAAqB,EAAQ,EAAE;QACvD,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,CAAC;IACL,CAAC,CAAC;IAEK,IAAI,GAAG,GAAS,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAClD,KAAK,GAAG,GAAS,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAE3D,IAAW,KAAK;QACZ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;QACvC,CAAC;QAED,OAAO,EAAE,CAAC;IACd,CAAC;IAEM,MAAM;QACT,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACjC,OAAO,CACH,8BAAM,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC;YAC1B,8BAAM,SAAS,EAAC,kBAAkB,GAAG;YACrC,kCACQ,IAAI,CAAC,KAAK,EACd,GAAG,EAAE,IAAI,CAAC,QAAQ,EAClB,SAAS,EAAC,4CAA4C,GACxD,CACC,CACV,CAAC;IACN,CAAC;CACJ"}
1
+ {"version":3,"file":"DateRangePickerInputFieldBody.js","sourceRoot":"","sources":["../../../src/DateFilter/DateRangePicker/DateRangePickerInputFieldBody.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,uEAAuE;AACvE,+EAA+E;AAC/E,MAAM,CAAC,MAAM,6BAA6B,GAAG,KAAK,CAAC,UAAU,CAQ3D,SAAS,6BAA6B,CAAC,KAAK,EAAE,GAAG;IAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAmB,IAAI,CAAC,CAAC;IAEtD,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,GAAqB,EAAQ,EAAE;QACxE,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACnB,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,GAAS,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC3F,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,GAAS,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAE7F,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,GAAW,EAAE;QAC5C,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;QAClC,CAAC;QACD,OAAO,EAAE,CAAC;IACd,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,KAAK,CAAC,mBAAmB,CACrB,GAAG,EACH,GAAG,EAAE,CAAC,CAAC;QACH,iBAAiB;QACjB,IAAI;QACJ,KAAK;QACL,IAAI,KAAK;YACL,OAAO,QAAQ,EAAE,CAAC;QACtB,CAAC;KACJ,CAAC,EACF,CAAC,iBAAiB,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAC7C,CAAC;IAEF,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAC5B,OAAO,CACH,8BAAM,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC;QAC1B,8BAAM,SAAS,EAAC,kBAAkB,GAAG;QACrC,kCAAW,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAC,4CAA4C,GAAG,CACvF,CACV,CAAC;AACN,CAAC,CAAC,CAAC"}
@@ -1,22 +1,11 @@
1
1
  import React from "react";
2
2
  type NumericInputValue = number | "" | "-";
3
- export declare class NumericInput extends React.Component<{
3
+ export declare function NumericInput({ value, onChange, placeholder, min, max, }: {
4
4
  value: NumericInputValue;
5
5
  onChange: (value: NumericInputValue) => void;
6
6
  placeholder?: string;
7
7
  min?: number;
8
8
  max?: number;
9
- }> {
10
- render(): React.JSX.Element;
11
- private isIncrementDisabled;
12
- private isDecrementDisabled;
13
- private clampToRange;
14
- private handleChange;
15
- private valueChanger;
16
- private increment;
17
- private decrement;
18
- private keyDownHandlers;
19
- private handleKeyDown;
20
- }
9
+ }): React.JSX.Element;
21
10
  export {};
22
11
  //# sourceMappingURL=NumericInput.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NumericInput.d.ts","sourceRoot":"","sources":["../../../src/DateFilter/NumericInput/NumericInput.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,KAAK,iBAAiB,GAAG,MAAM,GAAG,EAAE,GAAG,GAAG,CAAC;AAS3C,qBAAa,YAAa,SAAQ,KAAK,CAAC,SAAS,CAAC;IAC9C,KAAK,EAAE,iBAAiB,CAAC;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;IACS,MAAM;IAkCb,OAAO,CAAC,mBAAmB,CAE4E;IAEvG,OAAO,CAAC,mBAAmB,CAE4E;IAEvG,OAAO,CAAC,YAAY,CAKlB;IAEF,OAAO,CAAC,YAAY,CAQlB;IAEF,OAAO,CAAC,YAAY,CAGd;IAEN,OAAO,CAAC,SAAS,CAAwB;IAEzC,OAAO,CAAC,SAAS,CAAyB;IAE1C,OAAO,CAAC,eAAe,CAGrB;IAEF,OAAO,CAAC,aAAa,CAKnB;CACL"}
1
+ {"version":3,"file":"NumericInput.d.ts","sourceRoot":"","sources":["../../../src/DateFilter/NumericInput/NumericInput.tsx"],"names":[],"mappings":"AACA,OAAO,KAA+B,MAAM,OAAO,CAAC;AAQpD,KAAK,iBAAiB,GAAG,MAAM,GAAG,EAAE,GAAG,GAAG,CAAC;AAS3C,wBAAgB,YAAY,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,WAAW,EACX,GAAG,EACH,GAAG,GACN,EAAE;IACC,KAAK,EAAE,iBAAiB,CAAC;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB,qBA0EA"}
@@ -1,5 +1,5 @@
1
- // (C) 2007-2023 GoodData Corporation
2
- import React from "react";
1
+ // (C) 2007-2025 GoodData Corporation
2
+ import React, { useCallback, useMemo } from "react";
3
3
  import isNumber from "lodash/isNumber.js";
4
4
  import defaultTo from "lodash/defaultTo.js";
5
5
  import clamp from "lodash/clamp.js";
@@ -9,45 +9,39 @@ const isIntermediateValue = (value) => value === "" || value === "-";
9
9
  const isNumericOrEmptyString = (value) => value === "" || isNumber(value);
10
10
  const UP_ARROW_CODE = 38;
11
11
  const DOWN_ARROW_CODE = 40;
12
- export class NumericInput extends React.Component {
13
- render() {
14
- const { props, handleChange, handleKeyDown, increment, decrement, isIncrementDisabled, isDecrementDisabled, } = this;
15
- return (React.createElement("label", { className: "gd-input gd-input-with-suffix gd-numeric-input" },
16
- React.createElement("input", { type: "text", className: "gd-input-field", value: props.value, placeholder: props.placeholder, onChange: handleChange, onKeyDown: handleKeyDown }),
17
- React.createElement(ArrowButton, { arrowDirection: "increment", disabled: isIncrementDisabled(), onClick: increment }),
18
- React.createElement(ArrowButton, { arrowDirection: "decrement", disabled: isDecrementDisabled(), onClick: decrement })));
19
- }
20
- isIncrementDisabled = () => !isNumericOrEmptyString(this.props.value) ||
21
- (this.props.max !== undefined && isNumber(this.props.value) && this.props.value >= this.props.max);
22
- isDecrementDisabled = () => !isNumericOrEmptyString(this.props.value) ||
23
- (this.props.min !== undefined && isNumber(this.props.value) && this.props.value <= this.props.min);
24
- clampToRange = (value) => {
25
- const { max, min } = this.props;
12
+ export function NumericInput({ value, onChange, placeholder, min, max, }) {
13
+ const isIncrementDisabled = useCallback(() => !isNumericOrEmptyString(value) || (max !== undefined && isNumber(value) && value >= max), [value, max]);
14
+ const isDecrementDisabled = useCallback(() => !isNumericOrEmptyString(value) || (min !== undefined && isNumber(value) && value <= min), [value, min]);
15
+ const clampToRange = useCallback((val) => {
26
16
  const upperBound = defaultTo(max, Infinity);
27
17
  const lowerBound = defaultTo(min, -Infinity);
28
- return clamp(value, lowerBound, upperBound);
29
- };
30
- handleChange = (e) => {
18
+ return clamp(val, lowerBound, upperBound);
19
+ }, [max, min]);
20
+ const handleChange = useCallback((e) => {
31
21
  if (isIntermediateValue(e.target.value)) {
32
- this.props.onChange(e.target.value);
22
+ onChange(e.target.value);
33
23
  }
34
24
  const parsedValue = Number.parseInt(e.target.value, 10);
35
25
  if (Number.isInteger(parsedValue)) {
36
- this.props.onChange(parsedValue);
26
+ onChange(parsedValue);
37
27
  }
38
- };
39
- valueChanger = (delta) => () => this.props.onChange(isIntermediateValue(this.props.value) ? delta : this.clampToRange(this.props.value + delta));
40
- increment = this.valueChanger(1);
41
- decrement = this.valueChanger(-1);
42
- keyDownHandlers = {
43
- [UP_ARROW_CODE]: () => unless(this.isIncrementDisabled, this.increment),
44
- [DOWN_ARROW_CODE]: () => unless(this.isDecrementDisabled, this.decrement),
45
- };
46
- handleKeyDown = (e) => {
47
- const handler = this.keyDownHandlers[e.keyCode];
28
+ }, [onChange]);
29
+ const valueChanger = useCallback((delta) => () => onChange(isIntermediateValue(value) ? delta : clampToRange(value + delta)), [value, onChange, clampToRange]);
30
+ const increment = useCallback(() => valueChanger(1)(), [valueChanger]);
31
+ const decrement = useCallback(() => valueChanger(-1)(), [valueChanger]);
32
+ const keyDownHandlers = useMemo(() => ({
33
+ [UP_ARROW_CODE]: () => unless(isIncrementDisabled, increment),
34
+ [DOWN_ARROW_CODE]: () => unless(isDecrementDisabled, decrement),
35
+ }), [isIncrementDisabled, increment, isDecrementDisabled, decrement]);
36
+ const handleKeyDown = useCallback((e) => {
37
+ const handler = keyDownHandlers[e.keyCode];
48
38
  if (handler) {
49
39
  handler();
50
40
  }
51
- };
41
+ }, [keyDownHandlers]);
42
+ return (React.createElement("label", { className: "gd-input gd-input-with-suffix gd-numeric-input" },
43
+ React.createElement("input", { type: "text", className: "gd-input-field", value: value, placeholder: placeholder, onChange: handleChange, onKeyDown: handleKeyDown }),
44
+ React.createElement(ArrowButton, { arrowDirection: "increment", disabled: isIncrementDisabled(), onClick: increment }),
45
+ React.createElement(ArrowButton, { arrowDirection: "decrement", disabled: isDecrementDisabled(), onClick: decrement })));
52
46
  }
53
47
  //# sourceMappingURL=NumericInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NumericInput.js","sourceRoot":"","sources":["../../../src/DateFilter/NumericInput/NumericInput.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NumericInput.js","sourceRoot":"","sources":["../../../src/DateFilter/NumericInput/NumericInput.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,QAAQ,MAAM,oBAAoB,CAAC;AAC1C,OAAO,SAAS,MAAM,qBAAqB,CAAC;AAC5C,OAAO,KAAK,MAAM,iBAAiB,CAAC;AAEpC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAIpC,MAAM,mBAAmB,GAAG,CAAC,KAAsB,EAAqB,EAAE,CAAC,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,GAAG,CAAC;AAEzG,MAAM,sBAAsB,GAAG,CAAC,KAAc,EAAwB,EAAE,CAAC,KAAK,KAAK,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;AAEzG,MAAM,aAAa,GAAG,EAAE,CAAC;AACzB,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B,MAAM,UAAU,YAAY,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,WAAW,EACX,GAAG,EACH,GAAG,GAON;IACG,MAAM,mBAAmB,GAAG,WAAW,CACnC,GAAG,EAAE,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,EAC9F,CAAC,KAAK,EAAE,GAAG,CAAC,CACf,CAAC;IAEF,MAAM,mBAAmB,GAAG,WAAW,CACnC,GAAG,EAAE,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,EAC9F,CAAC,KAAK,EAAE,GAAG,CAAC,CACf,CAAC;IAEF,MAAM,YAAY,GAAG,WAAW,CAC5B,CAAC,GAAW,EAAU,EAAE;QACpB,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC7C,OAAO,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAC9C,CAAC,EACD,CAAC,GAAG,EAAE,GAAG,CAAC,CACb,CAAC;IAEF,MAAM,YAAY,GAAG,WAAW,CAC5B,CAAC,CAAsC,EAAE,EAAE;QACvC,IAAI,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACtC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACxD,IAAI,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC1B,CAAC;IACL,CAAC,EACD,CAAC,QAAQ,CAAC,CACb,CAAC;IAEF,MAAM,YAAY,GAAG,WAAW,CAC5B,CAAC,KAAa,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,EACnG,CAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,CAAC,CAClC,CAAC;IAEF,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEvE,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAExE,MAAM,eAAe,GAA+B,OAAO,CACvD,GAAG,EAAE,CAAC,CAAC;QACH,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,EAAE,SAAS,CAAC;QAC7D,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,EAAE,SAAS,CAAC;KAClE,CAAC,EACF,CAAC,mBAAmB,EAAE,SAAS,EAAE,mBAAmB,EAAE,SAAS,CAAC,CACnE,CAAC;IAEF,MAAM,aAAa,GAAG,WAAW,CAC7B,CAAC,CAAwC,EAAE,EAAE;QACzC,MAAM,OAAO,GAAG,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC,EACD,CAAC,eAAe,CAAC,CACpB,CAAC;IAEF,OAAO,CACH,+BAAO,SAAS,EAAC,gDAAgD;QAC7D,+BACI,IAAI,EAAC,MAAM,EACX,SAAS,EAAC,gBAAgB,EAC1B,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,aAAa,GAC1B;QACF,oBAAC,WAAW,IAAC,cAAc,EAAC,WAAW,EAAC,QAAQ,EAAE,mBAAmB,EAAE,EAAE,OAAO,EAAE,SAAS,GAAI;QAC/F,oBAAC,WAAW,IAAC,cAAc,EAAC,WAAW,EAAC,QAAQ,EAAE,mBAAmB,EAAE,EAAE,OAAO,EAAE,SAAS,GAAI,CAC3F,CACX,CAAC;AACN,CAAC"}