UNPKG

@grafana/ui

Version:
1 lines 4.72 kB
{"version":3,"file":"WeekStartPicker.mjs","sources":["../../../../src/components/DateTimePickers/WeekStartPicker.tsx"],"sourcesContent":["import { useCallback, useMemo } from 'react';\n\nimport { BootData } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t } from '@grafana/i18n';\n\nimport { Combobox } from '../Combobox/Combobox';\nimport { ComboboxOption } from '../Combobox/types';\n\nexport interface Props {\n onChange: (weekStart?: WeekStart) => void;\n value?: WeekStart;\n width?: number;\n autoFocus?: boolean;\n onBlur?: () => void;\n disabled?: boolean;\n inputId?: string;\n}\n\nexport type WeekStart = 'saturday' | 'sunday' | 'monday';\n\nexport function isWeekStart(value: string): value is WeekStart {\n return ['saturday', 'sunday', 'monday'].includes(value);\n}\n\ndeclare global {\n interface Window {\n grafanaBootData?: BootData;\n }\n}\n\n/**\n * Returns the system or user defined week start (as defined in bootData)\n * Or you can pass in an override weekStart string and have it be validated and returned as WeekStart type if valid\n */\nexport function getWeekStart(override?: string): WeekStart {\n if (override && isWeekStart(override)) {\n return override;\n }\n\n const preference = window?.grafanaBootData?.user?.weekStart;\n if (preference && isWeekStart(preference)) {\n return preference;\n }\n\n return 'monday';\n}\n\nexport const WeekStartPicker = (props: Props) => {\n const { onChange, width, autoFocus = false, onBlur, value, disabled = false, inputId } = props;\n const weekStarts: ComboboxOption[] = useMemo(\n () => [\n { value: '', label: t('grafana-ui.week-start-picker.weekStarts-label-default', 'Default') },\n { value: 'saturday', label: t('grafana-ui.week-start-picker.weekStarts-label-saturday', 'Saturday') },\n { value: 'sunday', label: t('grafana-ui.week-start-picker.weekStarts-label-sunday', 'Sunday') },\n { value: 'monday', label: t('grafana-ui.week-start-picker.weekStarts-label-monday', 'Monday') },\n ],\n []\n );\n\n const onChangeWeekStart = useCallback(\n (selectable: ComboboxOption | null) => {\n if (selectable && selectable.value !== undefined) {\n onChange(isWeekStart(selectable.value) ? selectable.value : undefined);\n }\n },\n [onChange]\n );\n\n const selected = useMemo(() => weekStarts.find((item) => item.value === value)?.value ?? '', [value, weekStarts]);\n\n return (\n <Combobox\n id={inputId}\n value={selected}\n placeholder={selectors.components.WeekStartPicker.placeholder}\n autoFocus={autoFocus}\n width={width}\n options={weekStarts}\n onChange={onChangeWeekStart}\n onBlur={onBlur}\n disabled={disabled}\n />\n );\n};\n"],"names":[],"mappings":";;;;;;AAqBO,SAAS,YAAY,KAAmC,EAAA;AAC7D,EAAA,OAAO,CAAC,UAAY,EAAA,QAAA,EAAU,QAAQ,CAAA,CAAE,SAAS,KAAK,CAAA;AACxD;AAYO,SAAS,aAAa,QAA8B,EAAA;AAnC3D,EAAA,IAAA,EAAA,EAAA,EAAA;AAoCE,EAAI,IAAA,QAAA,IAAY,WAAY,CAAA,QAAQ,CAAG,EAAA;AACrC,IAAO,OAAA,QAAA;AAAA;AAGT,EAAA,MAAM,UAAa,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,eAAR,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAyB,SAAzB,IAA+B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAA;AAClD,EAAI,IAAA,UAAA,IAAc,WAAY,CAAA,UAAU,CAAG,EAAA;AACzC,IAAO,OAAA,UAAA;AAAA;AAGT,EAAO,OAAA,QAAA;AACT;AAEa,MAAA,eAAA,GAAkB,CAAC,KAAiB,KAAA;AAC/C,EAAM,MAAA,EAAE,QAAU,EAAA,KAAA,EAAO,SAAY,GAAA,KAAA,EAAO,QAAQ,KAAO,EAAA,QAAA,GAAW,KAAO,EAAA,OAAA,EAAY,GAAA,KAAA;AACzF,EAAA,MAAM,UAA+B,GAAA,OAAA;AAAA,IACnC,MAAM;AAAA,MACJ,EAAE,KAAO,EAAA,EAAA,EAAI,OAAO,CAAE,CAAA,uDAAA,EAAyD,SAAS,CAAE,EAAA;AAAA,MAC1F,EAAE,KAAO,EAAA,UAAA,EAAY,OAAO,CAAE,CAAA,wDAAA,EAA0D,UAAU,CAAE,EAAA;AAAA,MACpG,EAAE,KAAO,EAAA,QAAA,EAAU,OAAO,CAAE,CAAA,sDAAA,EAAwD,QAAQ,CAAE,EAAA;AAAA,MAC9F,EAAE,KAAO,EAAA,QAAA,EAAU,OAAO,CAAE,CAAA,sDAAA,EAAwD,QAAQ,CAAE;AAAA,KAChG;AAAA,IACA;AAAC,GACH;AAEA,EAAA,MAAM,iBAAoB,GAAA,WAAA;AAAA,IACxB,CAAC,UAAsC,KAAA;AACrC,MAAI,IAAA,UAAA,IAAc,UAAW,CAAA,KAAA,KAAU,KAAW,CAAA,EAAA;AAChD,QAAA,QAAA,CAAS,YAAY,UAAW,CAAA,KAAK,CAAI,GAAA,UAAA,CAAW,QAAQ,KAAS,CAAA,CAAA;AAAA;AACvE,KACF;AAAA,IACA,CAAC,QAAQ;AAAA,GACX;AAEA,EAAM,MAAA,QAAA,GAAW,QAAQ,MAAG;AArE9B,IAAA,IAAA,EAAA,EAAA,EAAA;AAqEiC,IAAW,OAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,UAAA,CAAA,IAAA,CAAK,CAAC,IAAS,KAAA,IAAA,CAAK,UAAU,KAAK,CAAA,KAA9C,IAAiD,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAA,KAAjD,IAA0D,GAAA,EAAA,GAAA,EAAA;AAAA,GAAI,EAAA,CAAC,KAAO,EAAA,UAAU,CAAC,CAAA;AAEhH,EACE,uBAAA,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,EAAI,EAAA,OAAA;AAAA,MACJ,KAAO,EAAA,QAAA;AAAA,MACP,WAAA,EAAa,SAAU,CAAA,UAAA,CAAW,eAAgB,CAAA,WAAA;AAAA,MAClD,SAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAS,EAAA,UAAA;AAAA,MACT,QAAU,EAAA,iBAAA;AAAA,MACV,MAAA;AAAA,MACA;AAAA;AAAA,GACF;AAEJ;;;;"}