@grafana/ui
Version:
Grafana Components Library
1 lines • 4.73 kB
Source Map (JSON)
{"version":3,"file":"WeekStartPicker.mjs","sources":["../../../../src/components/DateTimePickers/WeekStartPicker.tsx"],"sourcesContent":["import { useCallback, useMemo } from 'react';\n\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\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\n/**\n * https://developers.grafana.com/ui/latest/index.html?path=/docs/date-time-pickers-weekstartpicker--docs\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":";;;;;;;AAoBO,SAAS,YAAY,KAAA,EAAmC;AAC7D,EAAA,OAAO,CAAC,UAAA,EAAY,QAAA,EAAU,QAAQ,CAAA,CAAE,SAAS,KAAK,CAAA;AACxD;AAMO,SAAS,aAAa,QAAA,EAA8B;AA5B3D,EAAA,IAAA,EAAA,EAAA,EAAA;AA6BE,EAAA,IAAI,QAAA,IAAY,WAAA,CAAY,QAAQ,CAAA,EAAG;AACrC,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,MAAM,UAAA,GAAA,CAAa,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,eAAA,KAAR,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAyB,SAAzB,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAA+B,SAAA;AAClD,EAAA,IAAI,UAAA,IAAc,WAAA,CAAY,UAAU,CAAA,EAAG;AACzC,IAAA,OAAO,UAAA;AAAA,EACT;AAEA,EAAA,OAAO,QAAA;AACT;AAKO,MAAM,eAAA,GAAkB,CAAC,KAAA,KAAiB;AAC/C,EAAA,MAAM,EAAE,QAAA,EAAU,KAAA,EAAO,SAAA,GAAY,KAAA,EAAO,QAAQ,KAAA,EAAO,QAAA,GAAW,KAAA,EAAO,OAAA,EAAQ,GAAI,KAAA;AACzF,EAAA,MAAM,UAAA,GAA+B,OAAA;AAAA,IACnC,MAAM;AAAA,MACJ,EAAE,KAAA,EAAO,EAAA,EAAI,OAAO,CAAA,CAAE,uDAAA,EAAyD,SAAS,CAAA,EAAE;AAAA,MAC1F,EAAE,KAAA,EAAO,UAAA,EAAY,OAAO,CAAA,CAAE,wDAAA,EAA0D,UAAU,CAAA,EAAE;AAAA,MACpG,EAAE,KAAA,EAAO,QAAA,EAAU,OAAO,CAAA,CAAE,sDAAA,EAAwD,QAAQ,CAAA,EAAE;AAAA,MAC9F,EAAE,KAAA,EAAO,QAAA,EAAU,OAAO,CAAA,CAAE,sDAAA,EAAwD,QAAQ,CAAA;AAAE,KAChG;AAAA,IACA;AAAC,GACH;AAEA,EAAA,MAAM,iBAAA,GAAoB,WAAA;AAAA,IACxB,CAAC,UAAA,KAAsC;AACrC,MAAA,IAAI,UAAA,IAAc,UAAA,CAAW,KAAA,KAAU,KAAA,CAAA,EAAW;AAChD,QAAA,QAAA,CAAS,YAAY,UAAA,CAAW,KAAK,CAAA,GAAI,UAAA,CAAW,QAAQ,KAAA,CAAS,CAAA;AAAA,MACvE;AAAA,IACF,CAAA;AAAA,IACA,CAAC,QAAQ;AAAA,GACX;AAEA,EAAA,MAAM,QAAA,GAAW,QAAQ,MAAG;AAjE9B,IAAA,IAAA,EAAA,EAAA,EAAA;AAiEiC,IAAA,OAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,UAAA,CAAW,IAAA,CAAK,CAAC,IAAA,KAAS,IAAA,CAAK,UAAU,KAAK,CAAA,KAA9C,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAiD,KAAA,KAAjD,IAAA,GAAA,EAAA,GAA0D,EAAA;AAAA,EAAA,CAAA,EAAI,CAAC,KAAA,EAAO,UAAU,CAAC,CAAA;AAEhH,EAAA,uBACE,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAI,OAAA;AAAA,MACJ,KAAA,EAAO,QAAA;AAAA,MACP,WAAA,EAAa,SAAA,CAAU,UAAA,CAAW,eAAA,CAAgB,WAAA;AAAA,MAClD,SAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA,EAAS,UAAA;AAAA,MACT,QAAA,EAAU,iBAAA;AAAA,MACV,MAAA;AAAA,MACA;AAAA;AAAA,GACF;AAEJ;;;;"}