better unset check (#32062)
* better unset check fixes: #32059 Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * better explanation Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * fix min value Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * Steal some code from `react-hook-form` Signed-off-by: Jon Koops <jonkoops@gmail.com> --------- Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> Signed-off-by: Jon Koops <jonkoops@gmail.com> Co-authored-by: Jon Koops <jonkoops@gmail.com>
This commit is contained in:
parent
033314446b
commit
862854bc29
4 changed files with 29 additions and 6 deletions
|
@ -2778,7 +2778,7 @@ javaKeystore=java-keystore
|
||||||
updatedUserProfileSuccess=User Profile configuration has been saved
|
updatedUserProfileSuccess=User Profile configuration has been saved
|
||||||
deleteProviderMapper=Delete mapper?
|
deleteProviderMapper=Delete mapper?
|
||||||
clientsPermissionsHint=Fine grained permissions for administrators that want to manage this client or apply roles defined by this client.
|
clientsPermissionsHint=Fine grained permissions for administrators that want to manage this client or apply roles defined by this client.
|
||||||
lookAroundHelp=How far around should the server look just in case the token generator and server are out of time sync or counter sync?
|
lookAroundHelp=How far around (extra token periods or counts) should the server look just in case the token generator and server are out of time sync or counter sync?
|
||||||
usersLeft_one={{count}} user left the group
|
usersLeft_one={{count}} user left the group
|
||||||
sync-keycloak-groups-to-ldap=Sync Keycloak groups to LDAP
|
sync-keycloak-groups-to-ldap=Sync Keycloak groups to LDAP
|
||||||
saveError=User federation provider could not be saved\: {{error}}
|
saveError=User federation provider could not be saved\: {{error}}
|
||||||
|
|
|
@ -85,9 +85,11 @@ export default function CreateInitialAccessToken() {
|
||||||
label={t("count")}
|
label={t("count")}
|
||||||
labelIcon={t("countHelp")}
|
labelIcon={t("countHelp")}
|
||||||
controller={{
|
controller={{
|
||||||
|
rules: {
|
||||||
|
min: 1,
|
||||||
|
},
|
||||||
defaultValue: 1,
|
defaultValue: 1,
|
||||||
}}
|
}}
|
||||||
min={1}
|
|
||||||
/>
|
/>
|
||||||
<ActionGroup>
|
<ActionGroup>
|
||||||
<Button
|
<Button
|
||||||
|
|
|
@ -11,6 +11,8 @@ import {
|
||||||
UseControllerProps,
|
UseControllerProps,
|
||||||
useFormContext,
|
useFormContext,
|
||||||
} from "react-hook-form";
|
} from "react-hook-form";
|
||||||
|
|
||||||
|
import { getRuleValue } from "../utils/getRuleValue";
|
||||||
import { FormLabel } from "./FormLabel";
|
import { FormLabel } from "./FormLabel";
|
||||||
|
|
||||||
export type NumberControlOption = {
|
export type NumberControlOption = {
|
||||||
|
@ -43,6 +45,7 @@ export const NumberControl = <
|
||||||
control,
|
control,
|
||||||
formState: { errors },
|
formState: { errors },
|
||||||
} = useFormContext();
|
} = useFormContext();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<FormLabel
|
<FormLabel
|
||||||
name={name}
|
name={name}
|
||||||
|
@ -57,11 +60,12 @@ export const NumberControl = <
|
||||||
control={control}
|
control={control}
|
||||||
render={({ field }) => {
|
render={({ field }) => {
|
||||||
const required = !!controller.rules?.required;
|
const required = !!controller.rules?.required;
|
||||||
const min = controller.rules?.min;
|
const min = getRuleValue(controller.rules?.min);
|
||||||
const value =
|
const value = field.value ?? controller.defaultValue;
|
||||||
field.value === 0 ? controller.defaultValue : field.value;
|
|
||||||
const setValue = (newValue: number) =>
|
const setValue = (newValue: number) =>
|
||||||
field.onChange(min ? Math.max(newValue, Number(min)) : newValue);
|
field.onChange(
|
||||||
|
min !== undefined ? Math.max(newValue, Number(min)) : newValue,
|
||||||
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<NumberInput
|
<NumberInput
|
||||||
|
|
17
js/libs/ui-shared/src/utils/getRuleValue.ts
Normal file
17
js/libs/ui-shared/src/utils/getRuleValue.ts
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
import type { ValidationRule, ValidationValue } from "react-hook-form";
|
||||||
|
|
||||||
|
// Simplified version of https://github.com/react-hook-form/react-hook-form/blob/ea0f3ed86457691f79987a703ae8d50b9e16e2ad/src/logic/getRuleValue.ts#L10-L21
|
||||||
|
// TODO: Can be removed if https://github.com/react-hook-form/react-hook-form/issues/12178 is resolved
|
||||||
|
export function getRuleValue<T extends ValidationValue>(
|
||||||
|
rule?: ValidationRule<T>,
|
||||||
|
): T | undefined {
|
||||||
|
if (typeof rule === "undefined" || rule instanceof RegExp) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof rule === "object") {
|
||||||
|
return rule.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
return rule;
|
||||||
|
}
|
Loading…
Reference in a new issue