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

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

There is a newer version: 25.0.1
Show newest version
{"version":3,"file":"TimeSelector-6a5d1719.js","sources":["../../src/components/time-selector/TimeSelector.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n  DropdownProps,\n  Select,\n  SelectOption,\n  SelectVariant,\n  Split,\n  SplitItem,\n  TextInput,\n  TextInputProps,\n} from \"@patternfly/react-core\";\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  Pick & {\n    value?: number;\n    units?: Unit[];\n    onChange?: (time: number | string) => void;\n    className?: string;\n  };\n\nexport const getTimeUnit = (value: number | undefined = 0) =>\n  allTimes.reduce(\n    (v, time) =>\n      value % time.multiplier === 0 && v.multiplier < time.multiplier\n        ? time\n        : v,\n    allTimes[0]\n  );\n\nexport const toHumanFormat = (value: number, locale: string) => {\n  const timeUnit = getTimeUnit(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(\"common\");\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(value).multiplier;\n\n    if (value) {\n      setMultiplier(multiplier);\n      setTimeValue(value / multiplier);\n    } else {\n      setTimeValue(value || \"\");\n      setMultiplier(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","value","v","time","toHumanFormat","locale","timeUnit","TimeSelector","units","onChange","className","min","menuAppendTo","rest","t","useTranslation","defaultMultiplier","useMemo","timeValue","setTimeValue","useState","multiplier","setMultiplier","open","setOpen","times","filteredUnits","unit","u","useEffect","updateTimeout","timeout","jsxs","Split","jsx","SplitItem","TextInput","Select","SelectVariant","_","SelectOption"],"mappings":"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"}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy