All Downloads are FREE. Search and download functionalities are using the official Maven repository.

theme.keycloak.v2.admin.resources.assets.TimeSelector-DcQmr_f3.js.map Maven / Gradle / Ivy

There is a newer version: 26.0.7
Show newest version
{"version":3,"file":"TimeSelector-DcQmr_f3.js","sources":["../../src/components/time-selector/TimeSelector.tsx"],"sourcesContent":["import {\n  KeycloakSelect,\n  KeycloakSelectProps,\n  SelectVariant,\n} from \"@keycloak/keycloak-ui-shared\";\nimport {\n  SelectOption,\n  Split,\n  SplitItem,\n  TextInput,\n  TextInputProps,\n} from \"@patternfly/react-core\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nexport type Unit = \"second\" | \"minute\" | \"hour\" | \"day\";\n\ntype TimeUnit = { unit: Unit; label: string; multiplier: number };\n\nconst allTimes: TimeUnit[] = [\n  { unit: \"second\", label: \"times.seconds\", multiplier: 1 },\n  { unit: \"minute\", label: \"times.minutes\", multiplier: 60 },\n  { unit: \"hour\", label: \"times.hours\", multiplier: 3600 },\n  { unit: \"day\", label: \"times.days\", multiplier: 86400 },\n];\n\nexport type TimeSelectorProps = Omit<\n  TextInputProps,\n  \"onChange\" | \"defaultValue\"\n> &\n  Pick & {\n    value?: number;\n    units?: Unit[];\n    onChange?: (time: number | string) => void;\n    className?: string;\n  };\n\nconst getTimeUnit = (units: TimeUnit[], value = 0) =>\n  units.reduce(\n    (v, time) =>\n      value % time.multiplier === 0 && v.multiplier < time.multiplier\n        ? time\n        : v,\n    units[0],\n  );\n\nexport const toHumanFormat = (value: number, locale: string) => {\n  const timeUnit = getTimeUnit(allTimes, value);\n  const formatter = new Intl.NumberFormat(locale, {\n    style: \"unit\",\n    unit: timeUnit.unit,\n    unitDisplay: \"long\",\n  });\n  return formatter.format(value / timeUnit.multiplier);\n};\n\nexport const TimeSelector = ({\n  value,\n  units = [\"second\", \"minute\", \"hour\", \"day\"],\n  onChange,\n  className,\n  min,\n  menuAppendTo,\n  ...rest\n}: TimeSelectorProps) => {\n  const { t } = useTranslation();\n\n  const [lastMultiplier, setLastMultiplier] = useState();\n\n  const defaultMultiplier = useMemo(\n    () => allTimes.find((time) => time.unit === units[0])?.multiplier,\n    [units],\n  );\n\n  const [timeValue, setTimeValue] = useState<\"\" | number>(\"\");\n  const [multiplier, setMultiplier] = useState(defaultMultiplier);\n  const [open, setOpen] = useState(false);\n\n  const times = useMemo(() => {\n    const filteredUnits = units.map(\n      (unit) => allTimes.find((time) => time.unit === unit)!,\n    );\n    if (\n      !filteredUnits.every((u) => u.multiplier === multiplier) &&\n      filteredUnits[0] !== allTimes[0]\n    ) {\n      filteredUnits.unshift(allTimes[0]);\n    }\n    return filteredUnits;\n  }, [units, multiplier]);\n\n  useEffect(() => {\n    const multiplier = getTimeUnit(times, value).multiplier;\n\n    if (value) {\n      setMultiplier(multiplier);\n      setTimeValue(value / multiplier);\n      setLastMultiplier(multiplier);\n    } else {\n      setTimeValue(value || \"\");\n      setMultiplier(lastMultiplier ?? defaultMultiplier);\n      setLastMultiplier(lastMultiplier ?? defaultMultiplier);\n    }\n  }, [value, defaultMultiplier]);\n\n  const updateTimeout = (\n    timeout: \"\" | number,\n    times: number | undefined = multiplier,\n  ) => {\n    if (timeout !== \"\") {\n      onChange?.(timeout * (times || 1));\n      setTimeValue(timeout);\n    } else {\n      onChange?.(\"\");\n    }\n  };\n\n  return (\n    \n      \n         {\n            updateTimeout(\"\" === value ? value : parseInt(value));\n          }}\n        />\n      \n      \n         {\n            setMultiplier(value as number);\n            updateTimeout(timeValue, value as number);\n            setOpen(false);\n          }}\n          menuAppendTo={menuAppendTo}\n          selections={multiplier}\n          onToggle={() => {\n            setOpen(!open);\n          }}\n          isOpen={open}\n          isDisabled={rest.isDisabled}\n        >\n          {times.map((time) => (\n            \n              {t(time.label)}\n            \n          ))}\n        \n      \n    \n  );\n};\n"],"names":["allTimes","getTimeUnit","units","value","v","time","toHumanFormat","locale","timeUnit","TimeSelector","onChange","className","min","menuAppendTo","rest","t","useTranslation","lastMultiplier","setLastMultiplier","useState","defaultMultiplier","useMemo","timeValue","setTimeValue","multiplier","setMultiplier","open","setOpen","times","filteredUnits","unit","u","useEffect","updateTimeout","timeout","jsxs","Split","jsx","SplitItem","TextInput","_event","KeycloakSelect","SelectVariant","SelectOption"],"mappings":"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"}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy