From 6e6ccb70d3d1bd56ea2467cf5cdf3945e9932102 Mon Sep 17 00:00:00 2001 From: dleadbetter Date: Fri, 29 Nov 2024 07:18:00 -0500 Subject: [PATCH 1/9] BASIRA #257 - Updating FacetSlider to accept "editable" prop and render numeric inputs --- .../semantic-ui/src/components/FacetSlider.js | 41 +++++++++++++++---- .../src/semantic-ui/FacetSlider.stories.js | 15 +++++++ 2 files changed, 49 insertions(+), 7 deletions(-) diff --git a/packages/semantic-ui/src/components/FacetSlider.js b/packages/semantic-ui/src/components/FacetSlider.js index 7064b857..5e9c72ed 100644 --- a/packages/semantic-ui/src/components/FacetSlider.js +++ b/packages/semantic-ui/src/components/FacetSlider.js @@ -1,18 +1,20 @@ // @flow +import { useTimer } from '@performant-software/shared-components'; import Slider from 'rc-slider'; import React, { - forwardRef, + forwardRef, useCallback, useEffect, useState } from 'react'; -import { Grid } from 'semantic-ui-react'; +import { Grid, Input } from 'semantic-ui-react'; import Facet, { type Props as FacetProps } from './Facet'; import { type RangeSliderProps } from '../types/InstantSearch'; - import './FacetSlider.css'; -type Props = FacetProps & RangeSliderProps; +type Props = FacetProps & RangeSliderProps & { + editable?: boolean +}; /** * This component can be used with the `useRange` hook from Instant Search Hooks. @@ -29,9 +31,21 @@ const FacetSlider = forwardRef(({ useRangeSlider, ...props }: Props, ref: HTMLEl const [value, setValue] = useState([min, max]); + const { clearTimer, setTimer } = useTimer(); + const from = Math.max(min, Number.isFinite(start[0]) ? start[0] : min); const to = Math.min(max, Number.isFinite(start[1]) ? start[1] : max); + const onChange = useCallback((newStart, newEnd) => { + // Set the new value on the state + const newValue = [newStart, newEnd]; + setValue(newValue); + + // Use a timer to only refine the value when the user stops typing + clearTimer(); + setTimer(() => refine(newValue)); + }, []); + useEffect(() => { setValue([from, to]); }, [from, to]); @@ -66,12 +80,22 @@ const FacetSlider = forwardRef(({ useRangeSlider, ...props }: Props, ref: HTMLEl columns={2} > - { value[0] } + { !props.editable && value[0] } + { props.editable && ( + onChange(data.value, value[1])} + value={value[0]} + /> + )} - { value[1] } + { !props.editable && value[1] } + onChange(value[0], data.value)} + value={value[1]} + /> @@ -79,6 +103,9 @@ const FacetSlider = forwardRef(({ useRangeSlider, ...props }: Props, ref: HTMLEl ); }); -FacetSlider.defaultProps = Facet.defaultProps; +FacetSlider.defaultProps = { + ...Facet.defaultProps, + editable: false +}; export default FacetSlider; diff --git a/packages/storybook/src/semantic-ui/FacetSlider.stories.js b/packages/storybook/src/semantic-ui/FacetSlider.stories.js index ea81f188..2c19a6aa 100644 --- a/packages/storybook/src/semantic-ui/FacetSlider.stories.js +++ b/packages/storybook/src/semantic-ui/FacetSlider.stories.js @@ -22,3 +22,18 @@ export const Default = () => ( })} /> ); + +export const Editable = () => ( + ({ + start: [], + range: { + min: 0, + max: 5000 + }, + refine: action('refine') + })} + /> +); From 9f52cab1a6bf353faa1e3786de3bcbd49fe7b064 Mon Sep 17 00:00:00 2001 From: dleadbetter Date: Fri, 29 Nov 2024 08:03:26 -0500 Subject: [PATCH 2/9] BASIRA #257 - Adding checks to FacetSlider for numeric values --- .../src/components/FacetSlider.css | 4 ++ .../semantic-ui/src/components/FacetSlider.js | 54 +++++++++++++++++-- 2 files changed, 53 insertions(+), 5 deletions(-) diff --git a/packages/semantic-ui/src/components/FacetSlider.css b/packages/semantic-ui/src/components/FacetSlider.css index 7ba49032..c883f9fc 100644 --- a/packages/semantic-ui/src/components/FacetSlider.css +++ b/packages/semantic-ui/src/components/FacetSlider.css @@ -12,3 +12,7 @@ padding-left: 10px; padding-right: 10px; } + +.facet-slider .ui.input { + width: 65px; +} diff --git a/packages/semantic-ui/src/components/FacetSlider.js b/packages/semantic-ui/src/components/FacetSlider.js index 5e9c72ed..796d4d2d 100644 --- a/packages/semantic-ui/src/components/FacetSlider.js +++ b/packages/semantic-ui/src/components/FacetSlider.js @@ -3,11 +3,13 @@ import { useTimer } from '@performant-software/shared-components'; import Slider from 'rc-slider'; import React, { - forwardRef, useCallback, + forwardRef, + useCallback, useEffect, useState } from 'react'; import { Grid, Input } from 'semantic-ui-react'; +import _ from 'underscore'; import Facet, { type Props as FacetProps } from './Facet'; import { type RangeSliderProps } from '../types/InstantSearch'; import './FacetSlider.css'; @@ -16,6 +18,8 @@ type Props = FacetProps & RangeSliderProps & { editable?: boolean }; +const RADIX = 10; + /** * This component can be used with the `useRange` hook from Instant Search Hooks. */ @@ -36,16 +40,56 @@ const FacetSlider = forwardRef(({ useRangeSlider, ...props }: Props, ref: HTMLEl const from = Math.max(min, Number.isFinite(start[0]) ? start[0] : min); const to = Math.min(max, Number.isFinite(start[1]) ? start[1] : max); + /** + * Parses the input string to an integer. + * + * @type {function(*): number} + */ + const getInputValue = useCallback((str) => { + let inputValue = parseInt(str, RADIX); + + if (_.isNaN(inputValue)) { + inputValue = ''; + } + + return inputValue; + }, []); + + /** + * Calls "refine" if both start and end values are numeric. + * + * @type {(function(*): void)|*} + */ + const onChangeComplete = useCallback((v) => { + if (!(_.isNumber(v[0]) && _.isNumber(v[1]))) { + return; + } + + refine(v); + }, []); + + /** + * Parses the input strings, sets the value on the state, and sets a timer to call "refine". + * + * @type {(function(*, *): void)|*} + */ const onChange = useCallback((newStart, newEnd) => { // Set the new value on the state - const newValue = [newStart, newEnd]; + const newValue = [ + getInputValue(newStart), + getInputValue(newEnd) + ]; + setValue(newValue); // Use a timer to only refine the value when the user stops typing clearTimer(); - setTimer(() => refine(newValue)); - }, []); + setTimer(() => onChangeComplete(newValue)); + }, [onChangeComplete]); + /** + * Sets the view value when to/from change. + */ useEffect(() => { setValue([from, to]); }, [from, to]); @@ -70,7 +114,7 @@ const FacetSlider = forwardRef(({ useRangeSlider, ...props }: Props, ref: HTMLEl disabled={!canRefine} max={range.max} min={range.min} - onChangeComplete={(v) => refine(v)} + onChangeComplete={onChangeComplete} onChange={(v) => setValue(v)} range value={value} From 067479a3e278f2ed933383ab6955b52d93dab0c5 Mon Sep 17 00:00:00 2001 From: dleadbetter Date: Fri, 29 Nov 2024 08:21:58 -0500 Subject: [PATCH 3/9] BASIRA #257 - Adding "refine" as callback dependency; Fixing issue with end input always displaying --- packages/semantic-ui/src/components/FacetSlider.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/semantic-ui/src/components/FacetSlider.js b/packages/semantic-ui/src/components/FacetSlider.js index 796d4d2d..6f2616ab 100644 --- a/packages/semantic-ui/src/components/FacetSlider.js +++ b/packages/semantic-ui/src/components/FacetSlider.js @@ -66,7 +66,7 @@ const FacetSlider = forwardRef(({ useRangeSlider, ...props }: Props, ref: HTMLEl } refine(v); - }, []); + }, [refine]); /** * Parses the input strings, sets the value on the state, and sets a timer to call "refine". @@ -85,7 +85,7 @@ const FacetSlider = forwardRef(({ useRangeSlider, ...props }: Props, ref: HTMLEl // Use a timer to only refine the value when the user stops typing clearTimer(); setTimer(() => onChangeComplete(newValue)); - }, [onChangeComplete]); + }, [getInputValue, onChangeComplete]); /** * Sets the view value when to/from change. @@ -136,10 +136,12 @@ const FacetSlider = forwardRef(({ useRangeSlider, ...props }: Props, ref: HTMLEl textAlign='right' > { !props.editable && value[1] } - onChange(value[0], data.value)} - value={value[1]} - /> + { props.editable && ( + onChange(value[0], data.value)} + value={value[1]} + /> + )} From 3b884e08c58648ae6ced7713975c69fa58ac9c46 Mon Sep 17 00:00:00 2001 From: dleadbetter Date: Fri, 29 Nov 2024 08:29:31 -0500 Subject: [PATCH 4/9] BASIRA #257 - Simplifying FacetSlider logic --- .../semantic-ui/src/components/FacetSlider.js | 34 ++++--------------- 1 file changed, 6 insertions(+), 28 deletions(-) diff --git a/packages/semantic-ui/src/components/FacetSlider.js b/packages/semantic-ui/src/components/FacetSlider.js index 6f2616ab..2b603dbd 100644 --- a/packages/semantic-ui/src/components/FacetSlider.js +++ b/packages/semantic-ui/src/components/FacetSlider.js @@ -9,7 +9,6 @@ import React, { useState } from 'react'; import { Grid, Input } from 'semantic-ui-react'; -import _ from 'underscore'; import Facet, { type Props as FacetProps } from './Facet'; import { type RangeSliderProps } from '../types/InstantSearch'; import './FacetSlider.css'; @@ -45,28 +44,7 @@ const FacetSlider = forwardRef(({ useRangeSlider, ...props }: Props, ref: HTMLEl * * @type {function(*): number} */ - const getInputValue = useCallback((str) => { - let inputValue = parseInt(str, RADIX); - - if (_.isNaN(inputValue)) { - inputValue = ''; - } - - return inputValue; - }, []); - - /** - * Calls "refine" if both start and end values are numeric. - * - * @type {(function(*): void)|*} - */ - const onChangeComplete = useCallback((v) => { - if (!(_.isNumber(v[0]) && _.isNumber(v[1]))) { - return; - } - - refine(v); - }, [refine]); + const getInputValue = useCallback((str) => parseInt(str, RADIX), []); /** * Parses the input strings, sets the value on the state, and sets a timer to call "refine". @@ -76,16 +54,16 @@ const FacetSlider = forwardRef(({ useRangeSlider, ...props }: Props, ref: HTMLEl const onChange = useCallback((newStart, newEnd) => { // Set the new value on the state const newValue = [ - getInputValue(newStart), - getInputValue(newEnd) + getInputValue(newStart) || value[0], + getInputValue(newEnd) || value[1] ]; setValue(newValue); // Use a timer to only refine the value when the user stops typing clearTimer(); - setTimer(() => onChangeComplete(newValue)); - }, [getInputValue, onChangeComplete]); + setTimer(() => refine(newValue)); + }, [getInputValue, refine]); /** * Sets the view value when to/from change. @@ -114,7 +92,7 @@ const FacetSlider = forwardRef(({ useRangeSlider, ...props }: Props, ref: HTMLEl disabled={!canRefine} max={range.max} min={range.min} - onChangeComplete={onChangeComplete} + onChangeComplete={(v) => refine(v)} onChange={(v) => setValue(v)} range value={value} From 6d77eaccc3309fd400a26dc6ed9f78ecff5acc0c Mon Sep 17 00:00:00 2001 From: dleadbetter Date: Fri, 29 Nov 2024 11:09:51 -0500 Subject: [PATCH 5/9] BASIRA #257 - Adding reset button to FacetSlider --- .../src/components/FacetSlider.css | 6 +++++ .../semantic-ui/src/components/FacetSlider.js | 24 ++++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/packages/semantic-ui/src/components/FacetSlider.css b/packages/semantic-ui/src/components/FacetSlider.css index c883f9fc..b21f8489 100644 --- a/packages/semantic-ui/src/components/FacetSlider.css +++ b/packages/semantic-ui/src/components/FacetSlider.css @@ -16,3 +16,9 @@ .facet-slider .ui.input { width: 65px; } + +.facet-slider .buttons { + display: flex; + justify-content: flex-end; + margin-top: 1em; +} \ No newline at end of file diff --git a/packages/semantic-ui/src/components/FacetSlider.js b/packages/semantic-ui/src/components/FacetSlider.js index 2b603dbd..d466fe6c 100644 --- a/packages/semantic-ui/src/components/FacetSlider.js +++ b/packages/semantic-ui/src/components/FacetSlider.js @@ -8,7 +8,7 @@ import React, { useEffect, useState } from 'react'; -import { Grid, Input } from 'semantic-ui-react'; +import { Button, Grid, Input } from 'semantic-ui-react'; import Facet, { type Props as FacetProps } from './Facet'; import { type RangeSliderProps } from '../types/InstantSearch'; import './FacetSlider.css'; @@ -65,6 +65,16 @@ const FacetSlider = forwardRef(({ useRangeSlider, ...props }: Props, ref: HTMLEl setTimer(() => refine(newValue)); }, [getInputValue, refine]); + /** + * Resets the slider min/max values to the default range. + * + * @type {(function(): void)|*} + */ + const onReset = useCallback(() => { + setValue([min, max]); + refine([min, max]); + }, [max, min, refine]); + /** * Sets the view value when to/from change. */ @@ -122,6 +132,18 @@ const FacetSlider = forwardRef(({ useRangeSlider, ...props }: Props, ref: HTMLEl )} + { props.editable && ( +
+
+ )} ); From a660200b88ad2e3baabb555292f5f5ea5431eb12 Mon Sep 17 00:00:00 2001 From: dleadbetter Date: Fri, 29 Nov 2024 11:18:15 -0500 Subject: [PATCH 6/9] BASIRA #257 - Removing reset button from FacetSlider --- .../src/components/FacetSlider.css | 6 ----- .../semantic-ui/src/components/FacetSlider.js | 24 +------------------ 2 files changed, 1 insertion(+), 29 deletions(-) diff --git a/packages/semantic-ui/src/components/FacetSlider.css b/packages/semantic-ui/src/components/FacetSlider.css index b21f8489..065cc81d 100644 --- a/packages/semantic-ui/src/components/FacetSlider.css +++ b/packages/semantic-ui/src/components/FacetSlider.css @@ -15,10 +15,4 @@ .facet-slider .ui.input { width: 65px; -} - -.facet-slider .buttons { - display: flex; - justify-content: flex-end; - margin-top: 1em; } \ No newline at end of file diff --git a/packages/semantic-ui/src/components/FacetSlider.js b/packages/semantic-ui/src/components/FacetSlider.js index d466fe6c..2b603dbd 100644 --- a/packages/semantic-ui/src/components/FacetSlider.js +++ b/packages/semantic-ui/src/components/FacetSlider.js @@ -8,7 +8,7 @@ import React, { useEffect, useState } from 'react'; -import { Button, Grid, Input } from 'semantic-ui-react'; +import { Grid, Input } from 'semantic-ui-react'; import Facet, { type Props as FacetProps } from './Facet'; import { type RangeSliderProps } from '../types/InstantSearch'; import './FacetSlider.css'; @@ -65,16 +65,6 @@ const FacetSlider = forwardRef(({ useRangeSlider, ...props }: Props, ref: HTMLEl setTimer(() => refine(newValue)); }, [getInputValue, refine]); - /** - * Resets the slider min/max values to the default range. - * - * @type {(function(): void)|*} - */ - const onReset = useCallback(() => { - setValue([min, max]); - refine([min, max]); - }, [max, min, refine]); - /** * Sets the view value when to/from change. */ @@ -132,18 +122,6 @@ const FacetSlider = forwardRef(({ useRangeSlider, ...props }: Props, ref: HTMLEl )} - { props.editable && ( -
-
- )} ); From 6e6c8fab0af64f8e2e952a9bd902bc60c1505475 Mon Sep 17 00:00:00 2001 From: dleadbetter Date: Fri, 29 Nov 2024 11:34:52 -0500 Subject: [PATCH 7/9] BASIRA #257 - Updating FacetSlider to allow empty values --- .../semantic-ui/src/components/FacetSlider.js | 20 +++++++++++++++---- .../src/semantic-ui/FacetSlider.stories.js | 2 +- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/packages/semantic-ui/src/components/FacetSlider.js b/packages/semantic-ui/src/components/FacetSlider.js index 2b603dbd..c54b22fe 100644 --- a/packages/semantic-ui/src/components/FacetSlider.js +++ b/packages/semantic-ui/src/components/FacetSlider.js @@ -9,6 +9,7 @@ import React, { useState } from 'react'; import { Grid, Input } from 'semantic-ui-react'; +import _ from 'underscore'; import Facet, { type Props as FacetProps } from './Facet'; import { type RangeSliderProps } from '../types/InstantSearch'; import './FacetSlider.css'; @@ -44,7 +45,15 @@ const FacetSlider = forwardRef(({ useRangeSlider, ...props }: Props, ref: HTMLEl * * @type {function(*): number} */ - const getInputValue = useCallback((str) => parseInt(str, RADIX), []); + const getInputValue = useCallback((str) => { + let inputValue = parseInt(str, RADIX); + + if (_.isNaN(inputValue)) { + inputValue = ''; + } + + return inputValue; + }, []); /** * Parses the input strings, sets the value on the state, and sets a timer to call "refine". @@ -54,15 +63,18 @@ const FacetSlider = forwardRef(({ useRangeSlider, ...props }: Props, ref: HTMLEl const onChange = useCallback((newStart, newEnd) => { // Set the new value on the state const newValue = [ - getInputValue(newStart) || value[0], - getInputValue(newEnd) || value[1] + getInputValue(newStart), + getInputValue(newEnd) ]; setValue(newValue); // Use a timer to only refine the value when the user stops typing clearTimer(); - setTimer(() => refine(newValue)); + + if (_.isNumber(newValue[0]) && _.isNumber(newValue[1])) { + setTimer(() => refine(newValue)); + } }, [getInputValue, refine]); /** diff --git a/packages/storybook/src/semantic-ui/FacetSlider.stories.js b/packages/storybook/src/semantic-ui/FacetSlider.stories.js index 2c19a6aa..e3f30857 100644 --- a/packages/storybook/src/semantic-ui/FacetSlider.stories.js +++ b/packages/storybook/src/semantic-ui/FacetSlider.stories.js @@ -30,7 +30,7 @@ export const Editable = () => ( useRangeSlider={() => ({ start: [], range: { - min: 0, + min: 100, max: 5000 }, refine: action('refine') From a98ae5662ec8409f04731ef309e797956f25674a Mon Sep 17 00:00:00 2001 From: dleadbetter Date: Fri, 29 Nov 2024 11:52:31 -0500 Subject: [PATCH 8/9] BASIRA #257 - Updating FacetSlider to allow non-numeric values --- packages/semantic-ui/src/components/FacetSlider.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/semantic-ui/src/components/FacetSlider.js b/packages/semantic-ui/src/components/FacetSlider.js index c54b22fe..ac194723 100644 --- a/packages/semantic-ui/src/components/FacetSlider.js +++ b/packages/semantic-ui/src/components/FacetSlider.js @@ -49,7 +49,7 @@ const FacetSlider = forwardRef(({ useRangeSlider, ...props }: Props, ref: HTMLEl let inputValue = parseInt(str, RADIX); if (_.isNaN(inputValue)) { - inputValue = ''; + inputValue = str; } return inputValue; From 6dd77bcb146bce24c54ff120944c40c04fe7a1b1 Mon Sep 17 00:00:00 2001 From: dleadbetter Date: Fri, 29 Nov 2024 12:19:55 -0500 Subject: [PATCH 9/9] BASIRA #257 - Publishing v2.2.18 --- packages/controlled-vocabulary/package.json | 6 +++--- packages/core-data/package.json | 6 +++--- packages/geospatial/package.json | 2 +- packages/semantic-ui/package.json | 4 ++-- packages/shared/package.json | 2 +- packages/user-defined-fields/package.json | 6 +++--- packages/visualize/package.json | 2 +- react-components.json | 2 +- 8 files changed, 15 insertions(+), 15 deletions(-) diff --git a/packages/controlled-vocabulary/package.json b/packages/controlled-vocabulary/package.json index d6bb858e..fd20c322 100644 --- a/packages/controlled-vocabulary/package.json +++ b/packages/controlled-vocabulary/package.json @@ -1,6 +1,6 @@ { "name": "@performant-software/controlled-vocabulary", - "version": "2.2.17", + "version": "2.2.18", "description": "A package of components to allow user to configure dropdown elements. Use with the \"controlled_vocabulary\" gem.", "license": "MIT", "main": "./dist/index.cjs.js", @@ -23,8 +23,8 @@ "underscore": "^1.13.2" }, "peerDependencies": { - "@performant-software/semantic-components": "^2.2.17", - "@performant-software/shared-components": "^2.2.17", + "@performant-software/semantic-components": "^2.2.18", + "@performant-software/shared-components": "^2.2.18", "react": ">= 16.13.1 < 19.0.0", "react-dom": ">= 16.13.1 < 19.0.0" }, diff --git a/packages/core-data/package.json b/packages/core-data/package.json index ca39604d..6f4a5e4c 100644 --- a/packages/core-data/package.json +++ b/packages/core-data/package.json @@ -1,6 +1,6 @@ { "name": "@performant-software/core-data", - "version": "2.2.17", + "version": "2.2.18", "description": "A package of components used with the Core Data platform.", "license": "MIT", "main": "./dist/index.cjs.js", @@ -40,8 +40,8 @@ "underscore": "^1.13.2" }, "peerDependencies": { - "@performant-software/geospatial": "^2.2.17", - "@performant-software/shared-components": "^2.2.17", + "@performant-software/geospatial": "^2.2.18", + "@performant-software/shared-components": "^2.2.18", "@peripleo/maplibre": "^0.5.2", "@peripleo/peripleo": "^0.5.2", "react": ">= 16.13.1 < 19.0.0", diff --git a/packages/geospatial/package.json b/packages/geospatial/package.json index 987236b2..dac450b9 100644 --- a/packages/geospatial/package.json +++ b/packages/geospatial/package.json @@ -1,6 +1,6 @@ { "name": "@performant-software/geospatial", - "version": "2.2.17", + "version": "2.2.18", "description": "A package of components for all things map-related.", "license": "MIT", "main": "./dist/index.cjs.js", diff --git a/packages/semantic-ui/package.json b/packages/semantic-ui/package.json index 01ce6129..301e5bad 100644 --- a/packages/semantic-ui/package.json +++ b/packages/semantic-ui/package.json @@ -1,6 +1,6 @@ { "name": "@performant-software/semantic-components", - "version": "2.2.17", + "version": "2.2.18", "description": "A package of shared components based on the Semantic UI Framework.", "license": "MIT", "main": "./dist/index.cjs.js", @@ -35,7 +35,7 @@ "zotero-translation-client": "^5.0.1" }, "peerDependencies": { - "@performant-software/shared-components": "^2.2.17", + "@performant-software/shared-components": "^2.2.18", "@samvera/clover-iiif": "^2.3.2", "react": ">= 16.13.1 < 19.0.0", "react-dnd": "^11.1.3", diff --git a/packages/shared/package.json b/packages/shared/package.json index 2646dfc7..d47da3b8 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -1,6 +1,6 @@ { "name": "@performant-software/shared-components", - "version": "2.2.17", + "version": "2.2.18", "description": "A package of shared, framework agnostic, components.", "license": "MIT", "main": "./dist/index.cjs.js", diff --git a/packages/user-defined-fields/package.json b/packages/user-defined-fields/package.json index af305de4..cee7d187 100644 --- a/packages/user-defined-fields/package.json +++ b/packages/user-defined-fields/package.json @@ -1,6 +1,6 @@ { "name": "@performant-software/user-defined-fields", - "version": "2.2.17", + "version": "2.2.18", "description": "A package of components used for allowing end users to define fields on models. Use with the \"user_defined_fields\" gem.", "license": "MIT", "main": "./dist/index.cjs.js", @@ -23,8 +23,8 @@ "underscore": "^1.13.2" }, "peerDependencies": { - "@performant-software/semantic-components": "^2.2.17", - "@performant-software/shared-components": "^2.2.17", + "@performant-software/semantic-components": "^2.2.18", + "@performant-software/shared-components": "^2.2.18", "react": ">= 16.13.1 < 19.0.0", "react-dom": ">= 16.13.1 < 19.0.0" }, diff --git a/packages/visualize/package.json b/packages/visualize/package.json index d3183f4d..702ea5fe 100644 --- a/packages/visualize/package.json +++ b/packages/visualize/package.json @@ -1,6 +1,6 @@ { "name": "@performant-software/visualize", - "version": "2.2.17", + "version": "2.2.18", "description": "A package of components used for data visualization", "license": "MIT", "main": "./dist/index.cjs.js", diff --git a/react-components.json b/react-components.json index 31e95c88..424d03ac 100644 --- a/react-components.json +++ b/react-components.json @@ -8,5 +8,5 @@ "packages/user-defined-fields", "packages/visualize" ], - "version": "2.2.17" + "version": "2.2.18" }