From a3bb0a5091f3e2cf392b2511ebc4e2aaf167a938 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mehmet=20Faruk=20Ko=C3=A7?= Date: Wed, 7 Jul 2021 12:30:11 +0300 Subject: [PATCH 01/10] feat(toast): Add limit prop to ToastProvider * Add optional limit prop to limit the maximum number of toasts. --- src/toast/ToastProvider.tsx | 7 +++++-- src/toast/util/toastHooks.ts | 7 ++++--- src/toast/util/toastReducer.ts | 17 ++++++++++++----- src/toast/util/toastTypes.ts | 2 ++ stories/8-Toast.stories.tsx | 6 ++++++ 5 files changed, 29 insertions(+), 10 deletions(-) diff --git a/src/toast/ToastProvider.tsx b/src/toast/ToastProvider.tsx index 54d416b9..b885a29d 100644 --- a/src/toast/ToastProvider.tsx +++ b/src/toast/ToastProvider.tsx @@ -16,6 +16,7 @@ interface ToastContextProviderProps { children: React.ReactNode; customRootId?: string; autoCloseToasts?: boolean; + limit?: number; } /** @@ -26,11 +27,13 @@ interface ToastContextProviderProps { function ToastContextProvider({ children, customRootId, - autoCloseToasts = true + autoCloseToasts = true, + limit }: ToastContextProviderProps) { const [state, dispatch] = useReducer(toastReducer, { ...initialToastState, - autoCloseToasts + autoCloseToasts, + limit }); return ( diff --git a/src/toast/util/toastHooks.ts b/src/toast/util/toastHooks.ts index 90560a40..8d2a050c 100644 --- a/src/toast/util/toastHooks.ts +++ b/src/toast/util/toastHooks.ts @@ -22,7 +22,7 @@ function useToastContext() { * @returns {function} ToastContext's state reducer's dispatch function */ function useToaster() { - const dispatch = useToastContext()[1]; + const [{limit}, dispatch] = useToastContext(); return { /** @@ -38,12 +38,13 @@ function useToaster() { toastData: { ...toastData, id: toastId - } + }, + limit }); return toastId; }, - [dispatch] + [dispatch, limit] ), /** * Hide a Toast with a given id diff --git a/src/toast/util/toastReducer.ts b/src/toast/util/toastReducer.ts index 811e82ec..d5c33588 100644 --- a/src/toast/util/toastReducer.ts +++ b/src/toast/util/toastReducer.ts @@ -11,14 +11,21 @@ function toastReducer(state: ToastState, action: ToastAction): ToastState { switch (action.type) { case "DISPLAY": { - const {toastData} = action; + const {toastData, limit} = action; + + const toastStack = [ + ...state.toastStack.filter(not(isSameToast(toastData.id))), + toastData + ]; + + if (limit) + if (toastStack.length > limit) + // pop first toast if stack exceeds limit + toastStack.shift(); newState = { ...state, - toastStack: [ - ...state.toastStack.filter(not(isSameToast(toastData.id))), - toastData - ] + toastStack }; break; } diff --git a/src/toast/util/toastTypes.ts b/src/toast/util/toastTypes.ts index 0090d22f..aadc7ecc 100644 --- a/src/toast/util/toastTypes.ts +++ b/src/toast/util/toastTypes.ts @@ -10,6 +10,7 @@ export type ToastAction = | { type: "DISPLAY"; toastData: Omit & {id: string}; + limit?: number; } | {type: "HIDE"; toastId: string} | {type: "HIDE_ALL"} @@ -22,4 +23,5 @@ export type ToastAction = export interface ToastContextState { toastStack: (Omit & {id: string})[]; autoCloseToasts: boolean; + limit?: number; } diff --git a/stories/8-Toast.stories.tsx b/stories/8-Toast.stories.tsx index bdf87eed..6815fd3a 100644 --- a/stories/8-Toast.stories.tsx +++ b/stories/8-Toast.stories.tsx @@ -23,6 +23,12 @@ function ToastComponent() { + +

{"ToastProvider with limit={3}"}

+ + + + ); } From 57709b471baf101343b9eeb4fd5cf6a8a19e75bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mehmet=20Faruk=20Ko=C3=A7?= Date: Mon, 12 Jul 2021 11:22:45 +0300 Subject: [PATCH 02/10] refactor(toastReducer): Refactor if block --- src/toast/util/toastReducer.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/toast/util/toastReducer.ts b/src/toast/util/toastReducer.ts index d5c33588..8725a586 100644 --- a/src/toast/util/toastReducer.ts +++ b/src/toast/util/toastReducer.ts @@ -18,10 +18,10 @@ function toastReducer(state: ToastState, action: ToastAction): ToastState { toastData ]; - if (limit) - if (toastStack.length > limit) - // pop first toast if stack exceeds limit - toastStack.shift(); + if (limit && toastStack.length > limit) { + // pop first toast if stack exceeds limit + toastStack.shift(); + } newState = { ...state, From 9eb92dc105751e3a051c88dae83899246315c366 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mehmet=20Faruk=20Ko=C3=A7?= Date: Mon, 12 Jul 2021 11:35:24 +0300 Subject: [PATCH 03/10] refactor(toast): Refactor toast limit logic * Move toast limit to context state from toast display action props. --- src/toast/util/toastHooks.ts | 7 +++---- src/toast/util/toastReducer.ts | 4 +++- src/toast/util/toastTypes.ts | 1 - 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/toast/util/toastHooks.ts b/src/toast/util/toastHooks.ts index 8d2a050c..90560a40 100644 --- a/src/toast/util/toastHooks.ts +++ b/src/toast/util/toastHooks.ts @@ -22,7 +22,7 @@ function useToastContext() { * @returns {function} ToastContext's state reducer's dispatch function */ function useToaster() { - const [{limit}, dispatch] = useToastContext(); + const dispatch = useToastContext()[1]; return { /** @@ -38,13 +38,12 @@ function useToaster() { toastData: { ...toastData, id: toastId - }, - limit + } }); return toastId; }, - [dispatch, limit] + [dispatch] ), /** * Hide a Toast with a given id diff --git a/src/toast/util/toastReducer.ts b/src/toast/util/toastReducer.ts index 8725a586..bdc4a051 100644 --- a/src/toast/util/toastReducer.ts +++ b/src/toast/util/toastReducer.ts @@ -11,7 +11,9 @@ function toastReducer(state: ToastState, action: ToastAction): ToastState { switch (action.type) { case "DISPLAY": { - const {toastData, limit} = action; + const {toastData} = action; + + const {limit} = state; const toastStack = [ ...state.toastStack.filter(not(isSameToast(toastData.id))), diff --git a/src/toast/util/toastTypes.ts b/src/toast/util/toastTypes.ts index aadc7ecc..b3890519 100644 --- a/src/toast/util/toastTypes.ts +++ b/src/toast/util/toastTypes.ts @@ -10,7 +10,6 @@ export type ToastAction = | { type: "DISPLAY"; toastData: Omit & {id: string}; - limit?: number; } | {type: "HIDE"; toastId: string} | {type: "HIDE_ALL"} From 0cee980bb0f6eb46f4a11bfbc593c80d93811ddc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mehmet=20Faruk=20Ko=C3=A7?= Date: Mon, 12 Jul 2021 16:01:11 +0300 Subject: [PATCH 04/10] feat(toast): Add effect for changes in limit & autoClose props * Add effect that listens the changes on limit and autoCloseToasts prop * Add story section under Toast for showing dynamic changes. --- src/toast/ToastProvider.tsx | 12 ++++++++- src/toast/util/toastReducer.ts | 23 +++++++++++++++-- src/toast/util/toastTypes.ts | 8 ++++++ stories/8-Toast.stories.tsx | 45 +++++++++++++++++++++++++++++++++- 4 files changed, 84 insertions(+), 4 deletions(-) diff --git a/src/toast/ToastProvider.tsx b/src/toast/ToastProvider.tsx index b885a29d..77fbad75 100644 --- a/src/toast/ToastProvider.tsx +++ b/src/toast/ToastProvider.tsx @@ -1,4 +1,4 @@ -import React, {createContext, useReducer} from "react"; +import React, {createContext, useReducer, useEffect} from "react"; import ToastStack from "./stack/ToastStack"; import {initialToastState} from "./util/toastConstants"; @@ -36,6 +36,16 @@ function ToastContextProvider({ limit }); + useEffect(() => { + if (limit) { + dispatch({type: "SET_LIMIT", limit}); + } + }, [limit]); + + useEffect(() => { + dispatch({type: "SET_AUTO_CLOSE", autoCloseToasts}); + }, [autoCloseToasts]); + return ( {children} diff --git a/src/toast/util/toastReducer.ts b/src/toast/util/toastReducer.ts index bdc4a051..fa27e641 100644 --- a/src/toast/util/toastReducer.ts +++ b/src/toast/util/toastReducer.ts @@ -12,9 +12,7 @@ function toastReducer(state: ToastState, action: ToastAction): ToastState { switch (action.type) { case "DISPLAY": { const {toastData} = action; - const {limit} = state; - const toastStack = [ ...state.toastStack.filter(not(isSameToast(toastData.id))), toastData @@ -66,6 +64,27 @@ function toastReducer(state: ToastState, action: ToastAction): ToastState { break; } + case "SET_LIMIT": { + const {limit} = action; + // prune the toasts exceeding the limit + const toastStack = state.toastStack.slice(0, limit); + + newState = { + ...state, + toastStack, + limit + }; + break; + } + case "SET_AUTO_CLOSE": { + const {autoCloseToasts} = action; + + newState = { + ...state, + autoCloseToasts + }; + break; + } default: break; } diff --git a/src/toast/util/toastTypes.ts b/src/toast/util/toastTypes.ts index b3890519..a7869b1a 100644 --- a/src/toast/util/toastTypes.ts +++ b/src/toast/util/toastTypes.ts @@ -17,6 +17,14 @@ export type ToastAction = type: "UPDATE"; toastId: string; toastData: Partial>; + } + | { + type: "SET_LIMIT"; + limit: number; + } + | { + type: "SET_AUTO_CLOSE"; + autoCloseToasts: boolean; }; export interface ToastContextState { diff --git a/stories/8-Toast.stories.tsx b/stories/8-Toast.stories.tsx index 6815fd3a..3b16050f 100644 --- a/stories/8-Toast.stories.tsx +++ b/stories/8-Toast.stories.tsx @@ -3,6 +3,11 @@ import "./utils/constants/toast/_toast.scss"; import {storiesOf} from "@storybook/react"; import React from "react"; +import StateProvider from "./utils/StateProvider"; + +import FormField from "../src/form/field/FormField"; +import CheckboxInput from "../src/form/input/checkbox/CheckboxInput"; +import Input from "../src/form/input/Input"; import Button from "../src/button/Button"; import {useToaster} from "../src/toast/util/toastHooks"; import StoryFragment from "./utils/StoryFragment"; @@ -179,4 +184,42 @@ function ToastExamples() { ); } -storiesOf("Toast", module).add("Toast Message", () => ); +storiesOf("Toast", module) + .add("Toast Message", () => ) + .add("Toast with dynamic props", () => ( + + {(state, setState) => ( + + + setState({...state, limit: e.currentTarget.value})} + value={state.limit} + placeholder={"3"} + /> + + + setState({...state, autoCloseToasts: !state.autoCloseToasts})} + isSelected={state.autoCloseToasts} + item={{ + id: "autoCloseToasts", + content: "autoCloseToasts", + inputProps: { + name: "termsAndConditions", + htmlFor: "termsAndConditions", + value: "yes" + } + }} + /> + + + + + )} + + )); From 42a93be02148a2c04ec760f7029a62db4543c803 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mehmet=20Faruk=20Ko=C3=A7?= Date: Tue, 13 Jul 2021 14:23:02 +0300 Subject: [PATCH 05/10] refactor(toastReducer): Refactor pruning logic in toast limit * Change SET_LIMIT action pruning target to 'firstly added toasts' from 'lastly added toasts'. * Update shift method usage with slice method. --- src/toast/util/toastReducer.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/toast/util/toastReducer.ts b/src/toast/util/toastReducer.ts index fa27e641..083a4c73 100644 --- a/src/toast/util/toastReducer.ts +++ b/src/toast/util/toastReducer.ts @@ -13,14 +13,14 @@ function toastReducer(state: ToastState, action: ToastAction): ToastState { case "DISPLAY": { const {toastData} = action; const {limit} = state; - const toastStack = [ + let toastStack = [ ...state.toastStack.filter(not(isSameToast(toastData.id))), toastData ]; if (limit && toastStack.length > limit) { - // pop first toast if stack exceeds limit - toastStack.shift(); + // prune the toasts exceeding the limit + toastStack = toastStack.slice(toastStack.length - limit); } newState = { @@ -67,7 +67,9 @@ function toastReducer(state: ToastState, action: ToastAction): ToastState { case "SET_LIMIT": { const {limit} = action; // prune the toasts exceeding the limit - const toastStack = state.toastStack.slice(0, limit); + const toastStack = state.toastStack.slice( + Math.max(0, state.toastStack.length - limit) + ); newState = { ...state, From dcc08f5c1bd3df26a721ab23718d382c6d2a927e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mehmet=20Faruk=20Ko=C3=A7?= Date: Fri, 30 Jul 2021 12:12:20 +0300 Subject: [PATCH 06/10] refactor(toastReducer): Refactor reducer actions * Refactor logic in the "SET_DISPLAY" action with the approach in the "DISPLAY" action. * Change line-breaks between code lines to increase readability. * Remove destructuring operation in "SET_AUTO_CLOSE" action, use the action prop directly. --- src/toast/util/toastReducer.ts | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/toast/util/toastReducer.ts b/src/toast/util/toastReducer.ts index 083a4c73..bea806d2 100644 --- a/src/toast/util/toastReducer.ts +++ b/src/toast/util/toastReducer.ts @@ -66,10 +66,13 @@ function toastReducer(state: ToastState, action: ToastAction): ToastState { case "SET_LIMIT": { const {limit} = action; - // prune the toasts exceeding the limit - const toastStack = state.toastStack.slice( - Math.max(0, state.toastStack.length - limit) - ); + + let toastStack = [...state.toastStack]; + + if (limit && toastStack.length > limit) { + // prune the toasts exceeding the limit + toastStack = toastStack.slice(toastStack.length - limit); + } newState = { ...state, @@ -78,15 +81,15 @@ function toastReducer(state: ToastState, action: ToastAction): ToastState { }; break; } - case "SET_AUTO_CLOSE": { - const {autoCloseToasts} = action; + case "SET_AUTO_CLOSE": { newState = { ...state, - autoCloseToasts + autoCloseToasts: action.autoCloseToasts }; break; } + default: break; } From 4e28dedaa28ae0ce580ba541f1da27c5ce6ba62a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mehmet=20Faruk=20Ko=C3=A7?= Date: Tue, 10 Aug 2021 17:22:58 +0300 Subject: [PATCH 07/10] refactor(toast): Refactor limit logic * Update the logic of checking if the limit is defined. --- src/toast/ToastProvider.tsx | 2 +- src/toast/util/toastReducer.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/toast/ToastProvider.tsx b/src/toast/ToastProvider.tsx index 77fbad75..28321495 100644 --- a/src/toast/ToastProvider.tsx +++ b/src/toast/ToastProvider.tsx @@ -37,7 +37,7 @@ function ToastContextProvider({ }); useEffect(() => { - if (limit) { + if (limit !== undefined) { dispatch({type: "SET_LIMIT", limit}); } }, [limit]); diff --git a/src/toast/util/toastReducer.ts b/src/toast/util/toastReducer.ts index bea806d2..c56d774c 100644 --- a/src/toast/util/toastReducer.ts +++ b/src/toast/util/toastReducer.ts @@ -18,7 +18,7 @@ function toastReducer(state: ToastState, action: ToastAction): ToastState { toastData ]; - if (limit && toastStack.length > limit) { + if (limit !== undefined && toastStack.length > limit) { // prune the toasts exceeding the limit toastStack = toastStack.slice(toastStack.length - limit); } @@ -69,7 +69,7 @@ function toastReducer(state: ToastState, action: ToastAction): ToastState { let toastStack = [...state.toastStack]; - if (limit && toastStack.length > limit) { + if (limit !== undefined && toastStack.length > limit) { // prune the toasts exceeding the limit toastStack = toastStack.slice(toastStack.length - limit); } From 5743e6c3a9354a173182075d08ef16142762e25a Mon Sep 17 00:00:00 2001 From: edizcelik Date: Fri, 3 Sep 2021 10:47:51 +0300 Subject: [PATCH 08/10] chore(toast): Add helper functions to limit array length from the end --- src/core/utils/array/arrayUtils.ts | 24 +++++++++++++++++++++++- src/core/utils/number/numberUtils.ts | 7 ++++++- src/toast/ToastProvider.tsx | 3 ++- src/toast/util/toastReducer.ts | 26 ++++++++------------------ 4 files changed, 39 insertions(+), 21 deletions(-) diff --git a/src/core/utils/array/arrayUtils.ts b/src/core/utils/array/arrayUtils.ts index dabe6d6b..5b81056e 100644 --- a/src/core/utils/array/arrayUtils.ts +++ b/src/core/utils/array/arrayUtils.ts @@ -1,3 +1,5 @@ +import {isNonNegativeInteger} from "../number/numberUtils"; + function filterOutItemsByKey( array: T[], key: keyof T, @@ -22,4 +24,24 @@ function updateAtIndex(items: Item[], index: number, newItem: Item): Item[ return newItems; } -export {filterOutItemsByKey, updateAtIndex}; +/** + * Slices an array at an offset from the end so that the new array's length would be `limit` at most. + * + * @param limit - Limit for the length of that array + * @param array - List of items + * @returns The same array if array.length <=limit, otherwise returns a new array. + */ +function limitArrayLengthFromTheEnd( + limit: undefined | number, + array: Item[] +): Item[] { + let slicedArray = array; + + if (isNonNegativeInteger(limit) && array.length > limit) { + slicedArray = array.slice(-limit); + } + + return slicedArray; +} + +export {filterOutItemsByKey, updateAtIndex, limitArrayLengthFromTheEnd}; diff --git a/src/core/utils/number/numberUtils.ts b/src/core/utils/number/numberUtils.ts index 8da83609..1bf645a8 100644 --- a/src/core/utils/number/numberUtils.ts +++ b/src/core/utils/number/numberUtils.ts @@ -174,6 +174,10 @@ function getThousandthSeparatorCount(value: string) { return formatNumber({locale: "en"})(parseFloat(value)).match(/,/g)?.length || 0; } +function isNonNegativeInteger(x: unknown): x is number { + return typeof x === "number" && Number.isFinite(x) && x >= 0; +} + export { formatNumber, parseNumber, @@ -182,5 +186,6 @@ export { getNegativeZero, mapDigitsToLocalVersion, removeLeadingZeros, - getThousandthSeparatorCount + getThousandthSeparatorCount, + isNonNegativeInteger }; diff --git a/src/toast/ToastProvider.tsx b/src/toast/ToastProvider.tsx index 28321495..eeeeb49e 100644 --- a/src/toast/ToastProvider.tsx +++ b/src/toast/ToastProvider.tsx @@ -4,6 +4,7 @@ import ToastStack from "./stack/ToastStack"; import {initialToastState} from "./util/toastConstants"; import toastReducer from "./util/toastReducer"; import {ToastAction, ToastContextState} from "./util/toastTypes"; +import {isNonNegativeInteger} from "../core/utils/number/numberUtils"; const ToastContext = createContext<[ToastContextState, React.Dispatch]>([ initialToastState, @@ -37,7 +38,7 @@ function ToastContextProvider({ }); useEffect(() => { - if (limit !== undefined) { + if (isNonNegativeInteger(limit)) { dispatch({type: "SET_LIMIT", limit}); } }, [limit]); diff --git a/src/toast/util/toastReducer.ts b/src/toast/util/toastReducer.ts index c56d774c..4f2a822a 100644 --- a/src/toast/util/toastReducer.ts +++ b/src/toast/util/toastReducer.ts @@ -1,4 +1,7 @@ -import {updateAtIndex} from "../../core/utils/array/arrayUtils"; +import { + limitArrayLengthFromTheEnd, + updateAtIndex +} from "../../core/utils/array/arrayUtils"; import {not} from "../../core/utils/function/functionUtils"; import {initialToastState} from "./toastConstants"; import {ToastAction} from "./toastTypes"; @@ -12,20 +15,14 @@ function toastReducer(state: ToastState, action: ToastAction): ToastState { switch (action.type) { case "DISPLAY": { const {toastData} = action; - const {limit} = state; - let toastStack = [ + const newToastStack = [ ...state.toastStack.filter(not(isSameToast(toastData.id))), toastData ]; - if (limit !== undefined && toastStack.length > limit) { - // prune the toasts exceeding the limit - toastStack = toastStack.slice(toastStack.length - limit); - } - newState = { ...state, - toastStack + toastStack: limitArrayLengthFromTheEnd(state.limit, newToastStack) }; break; } @@ -67,17 +64,10 @@ function toastReducer(state: ToastState, action: ToastAction): ToastState { case "SET_LIMIT": { const {limit} = action; - let toastStack = [...state.toastStack]; - - if (limit !== undefined && toastStack.length > limit) { - // prune the toasts exceeding the limit - toastStack = toastStack.slice(toastStack.length - limit); - } - newState = { ...state, - toastStack, - limit + limit, + toastStack: limitArrayLengthFromTheEnd(limit, state.toastStack) }; break; } From 5c57f86bfd0c0adbd2ba1b44509347ab77ce1418 Mon Sep 17 00:00:00 2001 From: edizcelik Date: Fri, 3 Sep 2021 11:08:27 +0300 Subject: [PATCH 09/10] fix(storybook/toast): Fix toast with dynamic props examples --- src/core/utils/array/arrayUtils.ts | 2 +- stories/8-Toast.stories.tsx | 4 ++-- stories/utils/StateProvider.tsx | 13 ++++++++++++- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/core/utils/array/arrayUtils.ts b/src/core/utils/array/arrayUtils.ts index 5b81056e..f738463a 100644 --- a/src/core/utils/array/arrayUtils.ts +++ b/src/core/utils/array/arrayUtils.ts @@ -38,7 +38,7 @@ function limitArrayLengthFromTheEnd( let slicedArray = array; if (isNonNegativeInteger(limit) && array.length > limit) { - slicedArray = array.slice(-limit); + slicedArray = array.slice(array.length - limit); } return slicedArray; diff --git a/stories/8-Toast.stories.tsx b/stories/8-Toast.stories.tsx index 3b16050f..f40a1b75 100644 --- a/stories/8-Toast.stories.tsx +++ b/stories/8-Toast.stories.tsx @@ -187,7 +187,7 @@ function ToastExamples() { storiesOf("Toast", module) .add("Toast Message", () => ) .add("Toast with dynamic props", () => ( - + {(state, setState) => ( @@ -215,7 +215,7 @@ storiesOf("Toast", module) }} /> diff --git a/stories/utils/StateProvider.tsx b/stories/utils/StateProvider.tsx index 1308ebe7..1bb3095c 100644 --- a/stories/utils/StateProvider.tsx +++ b/stories/utils/StateProvider.tsx @@ -1,6 +1,17 @@ import React, {Fragment, useState} from "react"; -function StateProvider({children, initialState}) { +interface StateProviderProps { + children: ( + state: State, + dispatch: React.Dispatch> + ) => React.ReactNode; + initialState: State; +} + +function StateProvider>({ + children, + initialState +}: StateProviderProps) { const [state, setState] = useState(initialState); return {children(state, setState)}; From 92c0c788a44b4bb7eaa73ee7a32c31422d8e6bdc Mon Sep 17 00:00:00 2001 From: edizcelik Date: Fri, 3 Sep 2021 12:09:06 +0300 Subject: [PATCH 10/10] Update packageLock --- package-lock.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 02f0a1b6..7f4ae494 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@hipo/react-ui-toolkit", - "version": "1.0.0-alpha.3.2.0", + "version": "1.0.0-alpha.4.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@hipo/react-ui-toolkit", - "version": "1.0.0-alpha.3.2.0", + "version": "1.0.0-alpha.4.0.0", "license": "ISC", "dependencies": { "classnames": "2.3.1",