@os-design/core 1.0.193 → 1.0.195
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/DatePicker/index.js.map +1 -1
- package/dist/cjs/Popover/utils/usePopoverPosition.js.map +1 -1
- package/dist/cjs/Select/index.js.map +1 -1
- package/dist/esm/DatePicker/index.js.map +1 -1
- package/dist/esm/Popover/utils/usePopoverPosition.js.map +1 -1
- package/dist/esm/Select/index.js.map +1 -1
- package/dist/types/DatePicker/index.d.ts +2 -2
- package/dist/types/DatePicker/index.d.ts.map +1 -1
- package/dist/types/Popover/utils/usePopoverPosition.d.ts +4 -1
- package/dist/types/Popover/utils/usePopoverPosition.d.ts.map +1 -1
- package/dist/types/Select/index.d.ts +2 -2
- package/dist/types/Select/index.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["StyledPopover","styled","Popover","p","theme","datePickerPadding","TimeContainer","div","Dash","baseHeight","StyledTimePicker","TimePicker","timePickerStyle","style","width","createDate","date","time","d","Date","setFullYear","getFullYear","setMonth","getMonth","setDate","getDate","setHours","setMinutes","getHours","getMinutes","DatePicker","forwardRef","ref","left","leftHasPadding","right","rightHasPadding","placeholder","disabled","autoFocus","autoOpen","format","firstDayOfWeek","locale","defaultLocale","showTime","timeNotation","range","value","defaultValue","onChange","onClose","onBlur","size","rest","useForwardedRef","containerRef","mergedContainerRef","useState","opened","setOpened","useForwardedState","forwardedValue","setForwardedValue","useEffect","current","focus","onCloseRef","useRef","formattedValue","useFormattedValue","closeHandler","useCallback","useKeyPress","window","undefined","isMinXs","useIsMinWidth","blurHandler","e","valueIsSpecified","useMemo","rightHasPaddingValue","rightValue","stopPropagation","includes","key","preventDefault","clearLabel","firstTimePickerRef","secondTimePickerRef","rangeStartedRef","changeHandler","prev","nextValue","Array","isArray","getTime","sort","a","b","calendarComponent","v","tabOnInputComplete","target","selectionStart","from","nextTo","closeOnInputComplete","timeComponent","getAccessibilityDateLabel","t","buttonPaddingHorizontal","selectToggleListItemHeight","sizes","small","displayName"],"sources":["../../../src/DatePicker/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport {\n DatePickerLocale,\n defaultLocale,\n getAccessibilityDateLabel,\n useFormattedValue,\n} from '@os-design/date-picker-utils';\nimport { Down, Up } from '@os-design/icons';\nimport { useIsMinWidth } from '@os-design/media';\nimport { WithSize } from '@os-design/styles';\nimport { ThemeOverrider } from '@os-design/theming';\nimport {\n useForwardedRef,\n useForwardedState,\n useKeyPress,\n} from '@os-design/utils';\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport Button from '../Button';\nimport Modal from '../Modal';\nimport Popover from '../Popover';\nimport {\n ClearIcon,\n ToggleLeftAddon,\n Placeholder,\n ToggleRightAddon,\n SelectContainer,\n Title,\n ToggleContent,\n ToggleIconContainer,\n} from '../Select';\nimport TimePicker from '../TimePicker';\nimport DatePickerCalendar from './DatePickerCalendar';\n\ntype JsxDivProps = Omit<\n JSX.IntrinsicElements['div'],\n 'value' | 'defaultValue' | 'onChange' | 'ref'\n>;\ninterface BaseDatePickerProps<T> extends JsxDivProps, WithSize {\n /**\n * The component located on the left side.\n * @default undefined\n */\n left?: React.ReactNode;\n /**\n * Adds padding to the left component.\n * It can be useful when passing an icon or text in the left component.\n * @default false\n */\n leftHasPadding?: boolean;\n /**\n * The component located on the right side.\n * @default undefined\n */\n right?: React.ReactNode;\n /**\n * Adds padding to the right component.\n * It can be useful when passing an icon or text in the right component.\n * @default false\n */\n rightHasPadding?: boolean;\n /**\n * The placeholder of the date picker.\n * @default undefined\n */\n placeholder?: string;\n /**\n * Whether the date picker is disabled.\n * @default false\n */\n disabled?: boolean;\n /**\n * Whether the component have a focus.\n * @default false\n */\n autoFocus?: boolean;\n /**\n * Whether the component opens the popup calendar.\n * @default false\n */\n autoOpen?: boolean;\n /**\n * The format of the date.\n * @default undefined\n */\n format?: (value: T) => string;\n /**\n * The first day of the week.\n * @default sunday\n */\n firstDayOfWeek?: 'sunday' | 'monday';\n /**\n * The locale of the date picker.\n * @default undefined\n */\n locale?: DatePickerLocale;\n /**\n * Whether the time is shown.\n * @default false\n */\n showTime?: boolean;\n /**\n * The time notation.\n * @default 12-hour\n */\n timeNotation?: '12-hour' | '24-hour';\n /**\n * Selected date.\n * @default undefined\n */\n value?: T | null;\n /**\n * The default value.\n * @default undefined\n */\n defaultValue?: T | null;\n /**\n * The change event handler.\n * @default undefined\n */\n onChange?: (value: T | null) => void;\n /**\n * The event handler that is called whenever a popup closes.\n * @default undefined\n */\n onClose?: () => void;\n}\ninterface DateNotRangePickerProps extends BaseDatePickerProps<Date> {\n /**\n * Whether the value is a range.\n * @default false\n */\n range?: false;\n}\ninterface DateRangePickerProps extends BaseDatePickerProps<[Date, Date]> {\n /**\n * Whether the value is a range.\n * @default false\n */\n range: true;\n}\nexport type DatePickerProps = DateNotRangePickerProps | DateRangePickerProps;\n\nconst StyledPopover = styled(Popover)`\n padding: ${(p) => p.theme.datePickerPadding}em;\n`;\n\nconst TimeContainer = styled.div`\n display: flex;\n justify-content: center;\n margin-top: 0.5em;\n`;\n\nconst Dash = styled.div`\n margin: 0 0.5em;\n line-height: ${(p) => p.theme.baseHeight}em;\n`;\n\nconst StyledTimePicker = styled(TimePicker)`\n width: 2.5em;\n text-align: center;\n`;\n\nconst timePickerStyle = { style: { width: 'auto' } };\n\nconst createDate = (date: Date, time?: Date | null) => {\n const d = new Date(0);\n d.setFullYear(date.getFullYear());\n d.setMonth(date.getMonth());\n d.setDate(date.getDate());\n d.setHours(0);\n d.setMinutes(0);\n if (time) {\n d.setHours(time.getHours());\n d.setMinutes(time.getMinutes());\n }\n return d;\n};\n\n/**\n * The component to choose a date.\n */\nconst DatePicker = forwardRef<HTMLDivElement, DatePickerProps>(\n (\n {\n left,\n leftHasPadding = false,\n right,\n rightHasPadding = false,\n placeholder,\n disabled = false,\n autoFocus = false,\n autoOpen = false,\n format,\n firstDayOfWeek = 'sunday',\n locale = defaultLocale,\n showTime = false,\n timeNotation = '12-hour',\n range = false,\n value,\n defaultValue,\n onChange,\n onClose = () => {},\n onBlur = () => {},\n size,\n ...rest\n },\n ref\n ) => {\n const [containerRef, mergedContainerRef] = useForwardedRef(ref);\n const [opened, setOpened] = useState(autoOpen);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [forwardedValue, setForwardedValue] = useForwardedState<any>({\n value,\n defaultValue,\n onChange,\n });\n\n useEffect(() => {\n if (autoFocus) containerRef.current?.focus();\n }, [autoFocus, containerRef]);\n\n const onCloseRef = useRef(onClose);\n useEffect(() => {\n onCloseRef.current = onClose;\n }, [onClose]);\n\n useEffect(() => {\n if (!opened) {\n onCloseRef.current();\n containerRef.current?.focus();\n }\n }, [containerRef, opened]);\n\n const formattedValue = useFormattedValue({\n forwardedValue,\n format,\n showTime,\n timeNotation,\n });\n\n const closeHandler = useCallback(() => {\n setOpened(false);\n }, []);\n\n useKeyPress(\n (typeof window !== 'undefined' ? window : undefined) as EventTarget,\n 'Escape',\n closeHandler\n );\n const isMinXs = useIsMinWidth('xs');\n\n const blurHandler = useCallback(\n (e) => {\n if (!opened) onBlur(e);\n },\n [onBlur, opened]\n );\n\n const valueIsSpecified = useMemo(\n () => formattedValue !== undefined && formattedValue !== null,\n [formattedValue]\n );\n\n const rightHasPaddingValue = useMemo(() => {\n if (valueIsSpecified) return false;\n return right ? rightHasPadding : true;\n }, [right, rightHasPadding, valueIsSpecified]);\n\n const rightValue = useMemo(() => {\n if (valueIsSpecified) {\n return (\n <div aria-hidden>\n <Button\n type='ghost'\n wide='never'\n size='small'\n disabled={disabled}\n onClick={(e) => {\n setForwardedValue(null);\n e.stopPropagation();\n }}\n onKeyDown={(e) => {\n if (disabled) return;\n if (['Enter', ' '].includes(e.key)) {\n setForwardedValue(null);\n if (!containerRef.current) return;\n containerRef.current.focus();\n e.preventDefault();\n e.stopPropagation();\n }\n }}\n aria-label={locale.clearLabel}\n >\n <ClearIcon />\n </Button>\n </div>\n );\n }\n return (\n right || (\n <ToggleIconContainer>\n {opened ? <Up /> : <Down />}\n </ToggleIconContainer>\n )\n );\n }, [\n containerRef,\n disabled,\n locale.clearLabel,\n opened,\n right,\n setForwardedValue,\n valueIsSpecified,\n ]);\n\n const firstTimePickerRef = useRef<HTMLInputElement>(null);\n const secondTimePickerRef = useRef<HTMLInputElement>(null);\n const rangeStartedRef = useRef(false);\n\n useEffect(() => {\n rangeStartedRef.current = false;\n }, [opened]);\n\n const changeHandler = useCallback(\n (date: Date) => {\n setForwardedValue((prev) => {\n if (!range) return createDate(date, prev);\n\n const d = createDate(date);\n const nextValue =\n prev && Array.isArray(prev) && rangeStartedRef.current\n ? [new Date(prev[0].getTime()), createDate(date, prev[1])]\n : [d, d];\n\n rangeStartedRef.current = !rangeStartedRef.current;\n return nextValue.sort(\n (a: Date, b: Date) => a.getTime() - b.getTime()\n );\n });\n },\n [range, setForwardedValue]\n );\n\n const calendarComponent = useMemo(\n () => (\n <DatePickerCalendar\n firstDayOfWeek={firstDayOfWeek}\n locale={locale}\n value={forwardedValue}\n onSelect={(v) => {\n changeHandler(v);\n firstTimePickerRef.current?.focus();\n if (!showTime && (!range || !rangeStartedRef.current)) {\n closeHandler();\n }\n }}\n />\n ),\n [\n changeHandler,\n closeHandler,\n firstDayOfWeek,\n forwardedValue,\n locale,\n range,\n showTime,\n ]\n );\n\n const tabOnInputComplete = useCallback(\n (e) => {\n if (e.target.selectionStart < 5) return;\n secondTimePickerRef.current?.focus();\n setForwardedValue(([from]) => {\n const nextTo = new Date(from.getTime());\n nextTo.setHours(nextTo.getHours() + 1);\n return [from, nextTo];\n });\n },\n [setForwardedValue]\n );\n\n const closeOnInputComplete = useCallback(\n (e) => {\n if (e.target.selectionStart < 5) return;\n closeHandler();\n },\n [closeHandler]\n );\n\n const timeComponent = useMemo(\n () =>\n showTime && forwardedValue ? (\n <TimeContainer>\n {Array.isArray(forwardedValue) ? (\n <>\n <StyledTimePicker\n ref={firstTimePickerRef}\n autoFocus\n disabled={disabled}\n notation={timeNotation}\n containerProps={timePickerStyle}\n value={forwardedValue[0]}\n onChange={(v) => setForwardedValue([v, forwardedValue[1]])}\n onKeyDown={(e) => {\n if (disabled) return;\n if (e.key === 'Enter') {\n setOpened(!opened);\n }\n }}\n onKeyUp={tabOnInputComplete}\n />\n <Dash>–</Dash>\n <StyledTimePicker\n ref={secondTimePickerRef}\n disabled={disabled}\n notation={timeNotation}\n containerProps={timePickerStyle}\n value={forwardedValue[1]}\n onChange={(v) => setForwardedValue([forwardedValue[0], v])}\n onKeyDown={(e) => {\n if (disabled) return;\n if (e.key === 'Enter') {\n setOpened(!opened);\n }\n }}\n onKeyUp={closeOnInputComplete}\n />\n </>\n ) : (\n <StyledTimePicker\n ref={firstTimePickerRef}\n autoFocus\n disabled={disabled}\n notation={timeNotation}\n containerProps={timePickerStyle}\n value={forwardedValue}\n onChange={setForwardedValue}\n onKeyDown={(e) => {\n if (disabled) return;\n if (e.key === 'Enter') {\n setOpened(!opened);\n }\n }}\n onKeyUp={closeOnInputComplete}\n />\n )}\n </TimeContainer>\n ) : null,\n [\n closeOnInputComplete,\n disabled,\n forwardedValue,\n opened,\n setForwardedValue,\n showTime,\n tabOnInputComplete,\n timeNotation,\n ]\n );\n\n return (\n <>\n <SelectContainer\n opened={opened}\n disabled={disabled}\n size={size}\n tabIndex={!disabled ? 0 : -1}\n onClick={() => {\n if (disabled) return;\n setOpened(!opened);\n }}\n onKeyDown={(e) => {\n if (disabled) return;\n if (['Enter', ' '].includes(e.key)) {\n setOpened(!opened);\n e.preventDefault();\n }\n }}\n onMouseDown={(e) => e.preventDefault()}\n onBlur={blurHandler}\n role='combobox'\n aria-label={\n forwardedValue\n ? getAccessibilityDateLabel(forwardedValue, locale)\n : undefined\n }\n aria-disabled={disabled}\n {...rest}\n ref={mergedContainerRef}\n >\n {left && (\n <ThemeOverrider\n overrides={(t) => ({\n buttonPaddingHorizontal: 0.8,\n baseHeight: t.selectToggleListItemHeight / t.sizes.small,\n })}\n >\n <ToggleLeftAddon hasPadding={leftHasPadding}>\n {left}\n </ToggleLeftAddon>\n </ThemeOverrider>\n )}\n\n <ToggleContent hasLeft={!!left} hasRight={!!right}>\n {valueIsSpecified ? (\n <Title disabled={disabled} aria-hidden>\n {formattedValue}\n </Title>\n ) : (\n <Placeholder>{placeholder}</Placeholder>\n )}\n </ToggleContent>\n\n {rightValue && (\n <ThemeOverrider\n overrides={(t) => ({\n buttonPaddingHorizontal: 0.8,\n baseHeight: t.selectToggleListItemHeight / t.sizes.small,\n })}\n >\n <ToggleRightAddon hasPadding={rightHasPaddingValue}>\n {rightValue}\n </ToggleRightAddon>\n </ThemeOverrider>\n )}\n </SelectContainer>\n\n {isMinXs ? (\n <StyledPopover\n trigger={containerRef}\n placement='bottom-start'\n visible={opened}\n onClose={closeHandler}\n size={size}\n >\n {calendarComponent}\n {timeComponent}\n </StyledPopover>\n ) : (\n <Modal\n title={placeholder}\n header={null}\n footer={null}\n visible={opened}\n onClose={closeHandler}\n size={size}\n >\n {calendarComponent}\n {timeComponent}\n </Modal>\n )}\n </>\n );\n }\n);\n\nDatePicker.displayName = 'DatePicker';\n\nexport default DatePicker;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["StyledPopover","styled","Popover","p","theme","datePickerPadding","TimeContainer","div","Dash","baseHeight","StyledTimePicker","TimePicker","timePickerStyle","style","width","createDate","date","time","d","Date","setFullYear","getFullYear","setMonth","getMonth","setDate","getDate","setHours","setMinutes","getHours","getMinutes","DatePicker","forwardRef","ref","left","leftHasPadding","right","rightHasPadding","placeholder","disabled","autoFocus","autoOpen","format","firstDayOfWeek","locale","defaultLocale","showTime","timeNotation","range","value","defaultValue","onChange","onClose","onBlur","size","rest","useForwardedRef","containerRef","mergedContainerRef","useState","opened","setOpened","useForwardedState","forwardedValue","setForwardedValue","useEffect","current","focus","onCloseRef","useRef","formattedValue","useFormattedValue","closeHandler","useCallback","useKeyPress","window","undefined","isMinXs","useIsMinWidth","blurHandler","e","valueIsSpecified","useMemo","rightHasPaddingValue","rightValue","stopPropagation","includes","key","preventDefault","clearLabel","firstTimePickerRef","secondTimePickerRef","rangeStartedRef","changeHandler","prev","nextValue","Array","isArray","getTime","sort","a","b","calendarComponent","v","tabOnInputComplete","target","selectionStart","from","nextTo","closeOnInputComplete","timeComponent","getAccessibilityDateLabel","t","buttonPaddingHorizontal","selectToggleListItemHeight","sizes","small","displayName"],"sources":["../../../src/DatePicker/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport {\n DatePickerLocale,\n defaultLocale,\n getAccessibilityDateLabel,\n useFormattedValue,\n} from '@os-design/date-picker-utils';\nimport { Down, Up } from '@os-design/icons';\nimport { useIsMinWidth } from '@os-design/media';\nimport { WithSize } from '@os-design/styles';\nimport { ThemeOverrider } from '@os-design/theming';\nimport {\n useForwardedRef,\n useForwardedState,\n useKeyPress,\n} from '@os-design/utils';\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport Button from '../Button';\nimport Modal from '../Modal';\nimport Popover from '../Popover';\nimport {\n ClearIcon,\n ToggleLeftAddon,\n Placeholder,\n ToggleRightAddon,\n SelectContainer,\n Title,\n ToggleContent,\n ToggleIconContainer,\n} from '../Select';\nimport TimePicker from '../TimePicker';\nimport DatePickerCalendar from './DatePickerCalendar';\n\ntype JsxDivProps = Omit<\n JSX.IntrinsicElements['div'],\n 'value' | 'defaultValue' | 'onChange' | 'ref'\n>;\ninterface BaseDatePickerProps<T> extends JsxDivProps, WithSize {\n /**\n * The component located on the left side.\n * @default undefined\n */\n left?: React.ReactNode;\n /**\n * Adds padding to the left component.\n * It can be useful when passing an icon or text in the left component.\n * @default false\n */\n leftHasPadding?: boolean;\n /**\n * The component located on the right side.\n * @default undefined\n */\n right?: React.ReactNode;\n /**\n * Adds padding to the right component.\n * It can be useful when passing an icon or text in the right component.\n * @default false\n */\n rightHasPadding?: boolean;\n /**\n * The placeholder of the date picker.\n * @default undefined\n */\n placeholder?: string;\n /**\n * Whether the date picker is disabled.\n * @default false\n */\n disabled?: boolean;\n /**\n * Whether the component have a focus.\n * @default false\n */\n autoFocus?: boolean;\n /**\n * Whether the component opens the popup calendar.\n * @default false\n */\n autoOpen?: boolean;\n /**\n * The format of the date.\n * @default undefined\n */\n format?: (value: T) => string;\n /**\n * The first day of the week.\n * @default sunday\n */\n firstDayOfWeek?: 'sunday' | 'monday';\n /**\n * The locale of the date picker.\n * @default undefined\n */\n locale?: DatePickerLocale;\n /**\n * Whether the time is shown.\n * @default false\n */\n showTime?: boolean;\n /**\n * The time notation.\n * @default 12-hour\n */\n timeNotation?: '12-hour' | '24-hour';\n /**\n * Selected date.\n * @default undefined\n */\n value?: T | null;\n /**\n * The default value.\n * @default undefined\n */\n defaultValue?: T | null;\n /**\n * The change event handler.\n * @default undefined\n */\n onChange?: (value: T | null) => void;\n /**\n * The event handler that is called whenever a popup closes.\n * @default undefined\n */\n onClose?: () => void;\n}\nexport interface DateNotRangePickerProps extends BaseDatePickerProps<Date> {\n /**\n * Whether the value is a range.\n * @default false\n */\n range?: false;\n}\nexport interface DateRangePickerProps\n extends BaseDatePickerProps<[Date, Date]> {\n /**\n * Whether the value is a range.\n * @default false\n */\n range: true;\n}\nexport type DatePickerProps = DateNotRangePickerProps | DateRangePickerProps;\n\nconst StyledPopover = styled(Popover)`\n padding: ${(p) => p.theme.datePickerPadding}em;\n`;\n\nconst TimeContainer = styled.div`\n display: flex;\n justify-content: center;\n margin-top: 0.5em;\n`;\n\nconst Dash = styled.div`\n margin: 0 0.5em;\n line-height: ${(p) => p.theme.baseHeight}em;\n`;\n\nconst StyledTimePicker = styled(TimePicker)`\n width: 2.5em;\n text-align: center;\n`;\n\nconst timePickerStyle = { style: { width: 'auto' } };\n\nconst createDate = (date: Date, time?: Date | null) => {\n const d = new Date(0);\n d.setFullYear(date.getFullYear());\n d.setMonth(date.getMonth());\n d.setDate(date.getDate());\n d.setHours(0);\n d.setMinutes(0);\n if (time) {\n d.setHours(time.getHours());\n d.setMinutes(time.getMinutes());\n }\n return d;\n};\n\n/**\n * The component to choose a date.\n */\nconst DatePicker = forwardRef<HTMLDivElement, DatePickerProps>(\n (\n {\n left,\n leftHasPadding = false,\n right,\n rightHasPadding = false,\n placeholder,\n disabled = false,\n autoFocus = false,\n autoOpen = false,\n format,\n firstDayOfWeek = 'sunday',\n locale = defaultLocale,\n showTime = false,\n timeNotation = '12-hour',\n range = false,\n value,\n defaultValue,\n onChange,\n onClose = () => {},\n onBlur = () => {},\n size,\n ...rest\n },\n ref\n ) => {\n const [containerRef, mergedContainerRef] = useForwardedRef(ref);\n const [opened, setOpened] = useState(autoOpen);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [forwardedValue, setForwardedValue] = useForwardedState<any>({\n value,\n defaultValue,\n onChange,\n });\n\n useEffect(() => {\n if (autoFocus) containerRef.current?.focus();\n }, [autoFocus, containerRef]);\n\n const onCloseRef = useRef(onClose);\n useEffect(() => {\n onCloseRef.current = onClose;\n }, [onClose]);\n\n useEffect(() => {\n if (!opened) {\n onCloseRef.current();\n containerRef.current?.focus();\n }\n }, [containerRef, opened]);\n\n const formattedValue = useFormattedValue({\n forwardedValue,\n format,\n showTime,\n timeNotation,\n });\n\n const closeHandler = useCallback(() => {\n setOpened(false);\n }, []);\n\n useKeyPress(\n (typeof window !== 'undefined' ? window : undefined) as EventTarget,\n 'Escape',\n closeHandler\n );\n const isMinXs = useIsMinWidth('xs');\n\n const blurHandler = useCallback(\n (e) => {\n if (!opened) onBlur(e);\n },\n [onBlur, opened]\n );\n\n const valueIsSpecified = useMemo(\n () => formattedValue !== undefined && formattedValue !== null,\n [formattedValue]\n );\n\n const rightHasPaddingValue = useMemo(() => {\n if (valueIsSpecified) return false;\n return right ? rightHasPadding : true;\n }, [right, rightHasPadding, valueIsSpecified]);\n\n const rightValue = useMemo(() => {\n if (valueIsSpecified) {\n return (\n <div aria-hidden>\n <Button\n type='ghost'\n wide='never'\n size='small'\n disabled={disabled}\n onClick={(e) => {\n setForwardedValue(null);\n e.stopPropagation();\n }}\n onKeyDown={(e) => {\n if (disabled) return;\n if (['Enter', ' '].includes(e.key)) {\n setForwardedValue(null);\n if (!containerRef.current) return;\n containerRef.current.focus();\n e.preventDefault();\n e.stopPropagation();\n }\n }}\n aria-label={locale.clearLabel}\n >\n <ClearIcon />\n </Button>\n </div>\n );\n }\n return (\n right || (\n <ToggleIconContainer>\n {opened ? <Up /> : <Down />}\n </ToggleIconContainer>\n )\n );\n }, [\n containerRef,\n disabled,\n locale.clearLabel,\n opened,\n right,\n setForwardedValue,\n valueIsSpecified,\n ]);\n\n const firstTimePickerRef = useRef<HTMLInputElement>(null);\n const secondTimePickerRef = useRef<HTMLInputElement>(null);\n const rangeStartedRef = useRef(false);\n\n useEffect(() => {\n rangeStartedRef.current = false;\n }, [opened]);\n\n const changeHandler = useCallback(\n (date: Date) => {\n setForwardedValue((prev) => {\n if (!range) return createDate(date, prev);\n\n const d = createDate(date);\n const nextValue =\n prev && Array.isArray(prev) && rangeStartedRef.current\n ? [new Date(prev[0].getTime()), createDate(date, prev[1])]\n : [d, d];\n\n rangeStartedRef.current = !rangeStartedRef.current;\n return nextValue.sort(\n (a: Date, b: Date) => a.getTime() - b.getTime()\n );\n });\n },\n [range, setForwardedValue]\n );\n\n const calendarComponent = useMemo(\n () => (\n <DatePickerCalendar\n firstDayOfWeek={firstDayOfWeek}\n locale={locale}\n value={forwardedValue}\n onSelect={(v) => {\n changeHandler(v);\n firstTimePickerRef.current?.focus();\n if (!showTime && (!range || !rangeStartedRef.current)) {\n closeHandler();\n }\n }}\n />\n ),\n [\n changeHandler,\n closeHandler,\n firstDayOfWeek,\n forwardedValue,\n locale,\n range,\n showTime,\n ]\n );\n\n const tabOnInputComplete = useCallback(\n (e) => {\n if (e.target.selectionStart < 5) return;\n secondTimePickerRef.current?.focus();\n setForwardedValue(([from]) => {\n const nextTo = new Date(from.getTime());\n nextTo.setHours(nextTo.getHours() + 1);\n return [from, nextTo];\n });\n },\n [setForwardedValue]\n );\n\n const closeOnInputComplete = useCallback(\n (e) => {\n if (e.target.selectionStart < 5) return;\n closeHandler();\n },\n [closeHandler]\n );\n\n const timeComponent = useMemo(\n () =>\n showTime && forwardedValue ? (\n <TimeContainer>\n {Array.isArray(forwardedValue) ? (\n <>\n <StyledTimePicker\n ref={firstTimePickerRef}\n autoFocus\n disabled={disabled}\n notation={timeNotation}\n containerProps={timePickerStyle}\n value={forwardedValue[0]}\n onChange={(v) => setForwardedValue([v, forwardedValue[1]])}\n onKeyDown={(e) => {\n if (disabled) return;\n if (e.key === 'Enter') {\n setOpened(!opened);\n }\n }}\n onKeyUp={tabOnInputComplete}\n />\n <Dash>–</Dash>\n <StyledTimePicker\n ref={secondTimePickerRef}\n disabled={disabled}\n notation={timeNotation}\n containerProps={timePickerStyle}\n value={forwardedValue[1]}\n onChange={(v) => setForwardedValue([forwardedValue[0], v])}\n onKeyDown={(e) => {\n if (disabled) return;\n if (e.key === 'Enter') {\n setOpened(!opened);\n }\n }}\n onKeyUp={closeOnInputComplete}\n />\n </>\n ) : (\n <StyledTimePicker\n ref={firstTimePickerRef}\n autoFocus\n disabled={disabled}\n notation={timeNotation}\n containerProps={timePickerStyle}\n value={forwardedValue}\n onChange={setForwardedValue}\n onKeyDown={(e) => {\n if (disabled) return;\n if (e.key === 'Enter') {\n setOpened(!opened);\n }\n }}\n onKeyUp={closeOnInputComplete}\n />\n )}\n </TimeContainer>\n ) : null,\n [\n closeOnInputComplete,\n disabled,\n forwardedValue,\n opened,\n setForwardedValue,\n showTime,\n tabOnInputComplete,\n timeNotation,\n ]\n );\n\n return (\n <>\n <SelectContainer\n opened={opened}\n disabled={disabled}\n size={size}\n tabIndex={!disabled ? 0 : -1}\n onClick={() => {\n if (disabled) return;\n setOpened(!opened);\n }}\n onKeyDown={(e) => {\n if (disabled) return;\n if (['Enter', ' '].includes(e.key)) {\n setOpened(!opened);\n e.preventDefault();\n }\n }}\n onMouseDown={(e) => e.preventDefault()}\n onBlur={blurHandler}\n role='combobox'\n aria-label={\n forwardedValue\n ? getAccessibilityDateLabel(forwardedValue, locale)\n : undefined\n }\n aria-disabled={disabled}\n {...rest}\n ref={mergedContainerRef}\n >\n {left && (\n <ThemeOverrider\n overrides={(t) => ({\n buttonPaddingHorizontal: 0.8,\n baseHeight: t.selectToggleListItemHeight / t.sizes.small,\n })}\n >\n <ToggleLeftAddon hasPadding={leftHasPadding}>\n {left}\n </ToggleLeftAddon>\n </ThemeOverrider>\n )}\n\n <ToggleContent hasLeft={!!left} hasRight={!!right}>\n {valueIsSpecified ? (\n <Title disabled={disabled} aria-hidden>\n {formattedValue}\n </Title>\n ) : (\n <Placeholder>{placeholder}</Placeholder>\n )}\n </ToggleContent>\n\n {rightValue && (\n <ThemeOverrider\n overrides={(t) => ({\n buttonPaddingHorizontal: 0.8,\n baseHeight: t.selectToggleListItemHeight / t.sizes.small,\n })}\n >\n <ToggleRightAddon hasPadding={rightHasPaddingValue}>\n {rightValue}\n </ToggleRightAddon>\n </ThemeOverrider>\n )}\n </SelectContainer>\n\n {isMinXs ? (\n <StyledPopover\n trigger={containerRef}\n placement='bottom-start'\n visible={opened}\n onClose={closeHandler}\n size={size}\n >\n {calendarComponent}\n {timeComponent}\n </StyledPopover>\n ) : (\n <Modal\n title={placeholder}\n header={null}\n footer={null}\n visible={opened}\n onClose={closeHandler}\n size={size}\n >\n {calendarComponent}\n {timeComponent}\n </Modal>\n )}\n </>\n );\n }\n);\n\nDatePicker.displayName = 'DatePicker';\n\nexport default DatePicker;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePopoverPosition.js","names":["popoverPositionGetters","rectKey","sizeKey","windowSizeKey","windowOffsetKey","fitToWindow","start","elementRect","popoverRect","popoverStart","windowStart","window","windowEnd","elementStart","elementEnd","popoverEnd","before","options","gap","flip","afterPopoverStart","after","afterPopoverEnd","diffStart","diffEnd","beforePopoverStart","end","center","getPopoverPosition","top","left","placementPositionKeysMap","bottom","right","usePopoverPosition","placement","bodyFontSize","useFontSize","document","body","gapPx","useMemo","positionKeys"],"sources":["../../../../src/Popover/utils/usePopoverPosition.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { useFontSize } from '@os-design/utils';\n\nexport type Placement =\n | 'top'\n | 'bottom'\n | 'left'\n | 'right'\n | 'top-start'\n | 'top-end'\n | 'bottom-start'\n | 'bottom-end'\n | 'left-start'\n | 'left-end'\n | 'right-start'\n | 'right-end';\n\nexport interface Rect {\n top: number;\n left: number;\n width: number;\n height: number;\n}\n\ninterface UsePopoverPositionProps {\n /**\n * The rect of the element.\n */\n elementRect: Rect;\n /**\n * The rect of the popover.\n */\n popoverRect: Rect;\n /**\n * On which side of the element the popover will appear.\n * @default top\n */\n placement?: Placement;\n /**\n * The gap between the element and the popover in em.\n * @default 0.5\n */\n gap?: number;\n /**\n * Whether to flip the popover if it does not fit in the window.\n * @default true\n */\n flip?: boolean;\n}\n\ninterface PopoverPositionGetterOptions {\n elementRect: Rect;\n popoverRect: Rect;\n gap: number;\n flip: boolean;\n}\ntype PositionKeys = 'before' | 'after' | 'start' | 'end' | 'center';\ntype PopoverPositionGetterFn = (\n options: PopoverPositionGetterOptions\n) => number;\ntype PopoverPositionGetters = Record<PositionKeys, PopoverPositionGetterFn>;\ntype FitToWindow = Pick<\n PopoverPositionGetterOptions,\n 'elementRect' | 'popoverRect'\n>;\n\nconst popoverPositionGetters = (\n rectKey: 'top' | 'left'\n): PopoverPositionGetters => {\n const sizeKey = rectKey === 'top' ? 'height' : 'width';\n const windowSizeKey = rectKey === 'top' ? 'innerHeight' : 'innerWidth';\n const windowOffsetKey = rectKey === 'top' ? 'pageYOffset' : 'pageXOffset';\n\n const fitToWindow = (\n start: number,\n { elementRect, popoverRect }: FitToWindow\n ): number => {\n let popoverStart = start;\n const windowStart = window[windowOffsetKey];\n const windowEnd = windowStart + window[windowSizeKey];\n const elementStart = windowStart + elementRect[rectKey];\n const elementEnd = elementStart + elementRect[sizeKey];\n const popoverEnd = popoverStart + popoverRect[sizeKey];\n\n // Fit the popover to the end of the window\n if (popoverEnd > windowEnd) {\n if (elementEnd < windowEnd)\n popoverStart = windowEnd - popoverRect[sizeKey];\n else if (popoverRect[sizeKey] > elementRect[sizeKey])\n popoverStart = elementEnd - popoverRect[sizeKey];\n else if (windowEnd - elementStart > popoverRect[sizeKey])\n popoverStart = windowEnd - popoverRect[sizeKey];\n else popoverStart = elementStart;\n }\n\n // Fit the popover to the beginning of the window\n if (popoverStart < windowStart) {\n if (elementStart > windowStart) popoverStart = windowStart;\n else if (popoverRect[sizeKey] > elementRect[sizeKey])\n popoverStart = elementStart;\n else if (elementEnd - windowStart > popoverRect[sizeKey])\n popoverStart = windowStart;\n else popoverStart = elementEnd - popoverRect[sizeKey];\n }\n\n return popoverStart;\n };\n\n return {\n before(options) {\n const { elementRect, popoverRect, gap, flip } = options;\n const windowStart = window[windowOffsetKey];\n const windowEnd = windowStart + window[windowSizeKey];\n const elementStart = windowStart + elementRect[rectKey];\n const popoverStart = elementStart - popoverRect[sizeKey] - gap;\n if (flip && popoverStart < windowStart) {\n const afterPopoverStart = this.after({ ...options, flip: false });\n const afterPopoverEnd = afterPopoverStart + popoverRect[sizeKey];\n const diffStart = windowStart - popoverStart;\n const diffEnd = afterPopoverEnd - windowEnd;\n if (afterPopoverEnd <= windowEnd || diffStart > diffEnd)\n return afterPopoverStart;\n }\n return popoverStart;\n },\n after(options) {\n const { elementRect, popoverRect, gap, flip } = options;\n const windowStart = window[windowOffsetKey];\n const windowEnd = windowStart + window[windowSizeKey];\n const elementStart = windowStart + elementRect[rectKey];\n const elementEnd = elementStart + elementRect[sizeKey];\n const popoverStart = elementEnd + gap;\n const popoverEnd = popoverStart + popoverRect[sizeKey];\n if (flip && popoverEnd > windowEnd) {\n const beforePopoverStart = this.before({ ...options, flip: false });\n const diffStart = windowStart - beforePopoverStart;\n const diffEnd = popoverEnd - windowEnd;\n if (beforePopoverStart >= windowStart || diffEnd > diffStart)\n return beforePopoverStart;\n }\n return popoverStart;\n },\n start: ({ elementRect, popoverRect }) => {\n const windowStart = window[windowOffsetKey];\n const elementStart = windowStart + elementRect[rectKey];\n return fitToWindow(elementStart, { elementRect, popoverRect });\n },\n end: ({ elementRect, popoverRect }) => {\n const windowStart = window[windowOffsetKey];\n const elementStart = windowStart + elementRect[rectKey];\n const elementEnd = elementStart + elementRect[sizeKey];\n const popoverStart = elementEnd - popoverRect[sizeKey];\n return fitToWindow(popoverStart, { elementRect, popoverRect });\n },\n center: ({ elementRect, popoverRect }) => {\n const windowStart = window[windowOffsetKey];\n const elementStart = windowStart + elementRect[rectKey];\n const popoverStart =\n elementStart + (elementRect[sizeKey] - popoverRect[sizeKey]) / 2;\n return fitToWindow(popoverStart, { elementRect, popoverRect });\n },\n };\n};\n\nconst getPopoverPosition = (\n top: PositionKeys,\n left: PositionKeys,\n options: PopoverPositionGetterOptions\n) => ({\n top: popoverPositionGetters('top')[top](options),\n left: popoverPositionGetters('left')[left](options),\n});\n\ntype PlacementPositionKeysMap = Record<Placement, [PositionKeys, PositionKeys]>;\nconst placementPositionKeysMap: PlacementPositionKeysMap = {\n top: ['before', 'center'],\n bottom: ['after', 'center'],\n left: ['center', 'before'],\n right: ['center', 'after'],\n 'top-start': ['before', 'start'],\n 'top-end': ['before', 'end'],\n 'bottom-start': ['after', 'start'],\n 'bottom-end': ['after', 'end'],\n 'left-start': ['start', 'before'],\n 'left-end': ['end', 'before'],\n 'right-start': ['start', 'after'],\n 'right-end': ['end', 'after'],\n};\n\ninterface PopoverPosition {\n top: number;\n left: number;\n}\n\n/**\n * Computes the position of the popover.\n * Note that you must change the elementRect when the scroll and resize events of the parent scrollable container occur.\n * In most cases, it will be the window.\n */\nconst usePopoverPosition = ({\n elementRect,\n popoverRect,\n placement = 'top',\n gap = 0.5,\n flip = true,\n}: UsePopoverPositionProps): PopoverPosition => {\n const bodyFontSize = useFontSize(document.body);\n const gapPx = useMemo(() => gap * bodyFontSize, [gap, bodyFontSize]);\n\n const positionKeys = useMemo(() => {\n if (typeof placement === 'string' && !!placementPositionKeysMap[placement])\n return placementPositionKeysMap[placement];\n return placementPositionKeysMap.top;\n }, [placement]);\n\n return getPopoverPosition(...positionKeys, {\n elementRect,\n popoverRect,\n gap: gapPx,\n flip,\n });\n};\n\nexport default usePopoverPosition;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"usePopoverPosition.js","names":["popoverPositionGetters","rectKey","sizeKey","windowSizeKey","windowOffsetKey","fitToWindow","start","elementRect","popoverRect","popoverStart","windowStart","window","windowEnd","elementStart","elementEnd","popoverEnd","before","options","gap","flip","afterPopoverStart","after","afterPopoverEnd","diffStart","diffEnd","beforePopoverStart","end","center","getPopoverPosition","top","left","placementPositionKeysMap","bottom","right","usePopoverPosition","placement","bodyFontSize","useFontSize","document","body","gapPx","useMemo","positionKeys"],"sources":["../../../../src/Popover/utils/usePopoverPosition.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { useFontSize } from '@os-design/utils';\n\ntype Side = 'top' | 'left' | 'right' | 'bottom';\ntype Alignment = 'start' | 'end';\ntype AlignedPlacement = `${Side}-${Alignment}`;\n\nexport type Placement = Side | AlignedPlacement;\n\nexport interface Rect {\n top: number;\n left: number;\n width: number;\n height: number;\n}\n\ninterface UsePopoverPositionProps {\n /**\n * The rect of the element.\n */\n elementRect: Rect;\n /**\n * The rect of the popover.\n */\n popoverRect: Rect;\n /**\n * On which side of the element the popover will appear.\n * @default top\n */\n placement?: Placement;\n /**\n * The gap between the element and the popover in em.\n * @default 0.5\n */\n gap?: number;\n /**\n * Whether to flip the popover if it does not fit in the window.\n * @default true\n */\n flip?: boolean;\n}\n\ninterface PopoverPositionGetterOptions {\n elementRect: Rect;\n popoverRect: Rect;\n gap: number;\n flip: boolean;\n}\ntype PositionKeys = 'before' | 'after' | 'start' | 'end' | 'center';\ntype PopoverPositionGetterFn = (\n options: PopoverPositionGetterOptions\n) => number;\ntype PopoverPositionGetters = Record<PositionKeys, PopoverPositionGetterFn>;\ntype FitToWindow = Pick<\n PopoverPositionGetterOptions,\n 'elementRect' | 'popoverRect'\n>;\n\nconst popoverPositionGetters = (\n rectKey: 'top' | 'left'\n): PopoverPositionGetters => {\n const sizeKey = rectKey === 'top' ? 'height' : 'width';\n const windowSizeKey = rectKey === 'top' ? 'innerHeight' : 'innerWidth';\n const windowOffsetKey = rectKey === 'top' ? 'pageYOffset' : 'pageXOffset';\n\n const fitToWindow = (\n start: number,\n { elementRect, popoverRect }: FitToWindow\n ): number => {\n let popoverStart = start;\n const windowStart = window[windowOffsetKey];\n const windowEnd = windowStart + window[windowSizeKey];\n const elementStart = windowStart + elementRect[rectKey];\n const elementEnd = elementStart + elementRect[sizeKey];\n const popoverEnd = popoverStart + popoverRect[sizeKey];\n\n // Fit the popover to the end of the window\n if (popoverEnd > windowEnd) {\n if (elementEnd < windowEnd)\n popoverStart = windowEnd - popoverRect[sizeKey];\n else if (popoverRect[sizeKey] > elementRect[sizeKey])\n popoverStart = elementEnd - popoverRect[sizeKey];\n else if (windowEnd - elementStart > popoverRect[sizeKey])\n popoverStart = windowEnd - popoverRect[sizeKey];\n else popoverStart = elementStart;\n }\n\n // Fit the popover to the beginning of the window\n if (popoverStart < windowStart) {\n if (elementStart > windowStart) popoverStart = windowStart;\n else if (popoverRect[sizeKey] > elementRect[sizeKey])\n popoverStart = elementStart;\n else if (elementEnd - windowStart > popoverRect[sizeKey])\n popoverStart = windowStart;\n else popoverStart = elementEnd - popoverRect[sizeKey];\n }\n\n return popoverStart;\n };\n\n return {\n before(options) {\n const { elementRect, popoverRect, gap, flip } = options;\n const windowStart = window[windowOffsetKey];\n const windowEnd = windowStart + window[windowSizeKey];\n const elementStart = windowStart + elementRect[rectKey];\n const popoverStart = elementStart - popoverRect[sizeKey] - gap;\n if (flip && popoverStart < windowStart) {\n const afterPopoverStart = this.after({ ...options, flip: false });\n const afterPopoverEnd = afterPopoverStart + popoverRect[sizeKey];\n const diffStart = windowStart - popoverStart;\n const diffEnd = afterPopoverEnd - windowEnd;\n if (afterPopoverEnd <= windowEnd || diffStart > diffEnd)\n return afterPopoverStart;\n }\n return popoverStart;\n },\n after(options) {\n const { elementRect, popoverRect, gap, flip } = options;\n const windowStart = window[windowOffsetKey];\n const windowEnd = windowStart + window[windowSizeKey];\n const elementStart = windowStart + elementRect[rectKey];\n const elementEnd = elementStart + elementRect[sizeKey];\n const popoverStart = elementEnd + gap;\n const popoverEnd = popoverStart + popoverRect[sizeKey];\n if (flip && popoverEnd > windowEnd) {\n const beforePopoverStart = this.before({ ...options, flip: false });\n const diffStart = windowStart - beforePopoverStart;\n const diffEnd = popoverEnd - windowEnd;\n if (beforePopoverStart >= windowStart || diffEnd > diffStart)\n return beforePopoverStart;\n }\n return popoverStart;\n },\n start: ({ elementRect, popoverRect }) => {\n const windowStart = window[windowOffsetKey];\n const elementStart = windowStart + elementRect[rectKey];\n return fitToWindow(elementStart, { elementRect, popoverRect });\n },\n end: ({ elementRect, popoverRect }) => {\n const windowStart = window[windowOffsetKey];\n const elementStart = windowStart + elementRect[rectKey];\n const elementEnd = elementStart + elementRect[sizeKey];\n const popoverStart = elementEnd - popoverRect[sizeKey];\n return fitToWindow(popoverStart, { elementRect, popoverRect });\n },\n center: ({ elementRect, popoverRect }) => {\n const windowStart = window[windowOffsetKey];\n const elementStart = windowStart + elementRect[rectKey];\n const popoverStart =\n elementStart + (elementRect[sizeKey] - popoverRect[sizeKey]) / 2;\n return fitToWindow(popoverStart, { elementRect, popoverRect });\n },\n };\n};\n\nconst getPopoverPosition = (\n top: PositionKeys,\n left: PositionKeys,\n options: PopoverPositionGetterOptions\n) => ({\n top: popoverPositionGetters('top')[top](options),\n left: popoverPositionGetters('left')[left](options),\n});\n\ntype PlacementPositionKeysMap = Record<Placement, [PositionKeys, PositionKeys]>;\nconst placementPositionKeysMap: PlacementPositionKeysMap = {\n top: ['before', 'center'],\n bottom: ['after', 'center'],\n left: ['center', 'before'],\n right: ['center', 'after'],\n 'top-start': ['before', 'start'],\n 'top-end': ['before', 'end'],\n 'bottom-start': ['after', 'start'],\n 'bottom-end': ['after', 'end'],\n 'left-start': ['start', 'before'],\n 'left-end': ['end', 'before'],\n 'right-start': ['start', 'after'],\n 'right-end': ['end', 'after'],\n};\n\ninterface PopoverPosition {\n top: number;\n left: number;\n}\n\n/**\n * Computes the position of the popover.\n * Note that you must change the elementRect when the scroll and resize events of the parent scrollable container occur.\n * In most cases, it will be the window.\n */\nconst usePopoverPosition = ({\n elementRect,\n popoverRect,\n placement = 'top',\n gap = 0.5,\n flip = true,\n}: UsePopoverPositionProps): PopoverPosition => {\n const bodyFontSize = useFontSize(document.body);\n const gapPx = useMemo(() => gap * bodyFontSize, [gap, bodyFontSize]);\n\n const positionKeys = useMemo(() => {\n if (typeof placement === 'string' && !!placementPositionKeysMap[placement])\n return placementPositionKeysMap[placement];\n return placementPositionKeysMap.top;\n }, [placement]);\n\n return getPopoverPosition(...positionKeys, {\n elementRect,\n popoverRect,\n gap: gapPx,\n flip,\n });\n};\n\nexport default usePopoverPosition;\n"],"mappings":";;;;;;AAAA;AACA;AAA+C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAyD/C,IAAMA,sBAAsB,GAAG,SAAzBA,sBAAsB,CAC1BC,OAAuB,EACI;EAC3B,IAAMC,OAAO,GAAGD,OAAO,KAAK,KAAK,GAAG,QAAQ,GAAG,OAAO;EACtD,IAAME,aAAa,GAAGF,OAAO,KAAK,KAAK,GAAG,aAAa,GAAG,YAAY;EACtE,IAAMG,eAAe,GAAGH,OAAO,KAAK,KAAK,GAAG,aAAa,GAAG,aAAa;EAEzE,IAAMI,WAAW,GAAG,SAAdA,WAAW,CACfC,KAAa,QAEF;IAAA,IADTC,WAAW,QAAXA,WAAW;MAAEC,WAAW,QAAXA,WAAW;IAE1B,IAAIC,YAAY,GAAGH,KAAK;IACxB,IAAMI,WAAW,GAAGC,MAAM,CAACP,eAAe,CAAC;IAC3C,IAAMQ,SAAS,GAAGF,WAAW,GAAGC,MAAM,CAACR,aAAa,CAAC;IACrD,IAAMU,YAAY,GAAGH,WAAW,GAAGH,WAAW,CAACN,OAAO,CAAC;IACvD,IAAMa,UAAU,GAAGD,YAAY,GAAGN,WAAW,CAACL,OAAO,CAAC;IACtD,IAAMa,UAAU,GAAGN,YAAY,GAAGD,WAAW,CAACN,OAAO,CAAC;;IAEtD;IACA,IAAIa,UAAU,GAAGH,SAAS,EAAE;MAC1B,IAAIE,UAAU,GAAGF,SAAS,EACxBH,YAAY,GAAGG,SAAS,GAAGJ,WAAW,CAACN,OAAO,CAAC,CAAC,KAC7C,IAAIM,WAAW,CAACN,OAAO,CAAC,GAAGK,WAAW,CAACL,OAAO,CAAC,EAClDO,YAAY,GAAGK,UAAU,GAAGN,WAAW,CAACN,OAAO,CAAC,CAAC,KAC9C,IAAIU,SAAS,GAAGC,YAAY,GAAGL,WAAW,CAACN,OAAO,CAAC,EACtDO,YAAY,GAAGG,SAAS,GAAGJ,WAAW,CAACN,OAAO,CAAC,CAAC,KAC7CO,YAAY,GAAGI,YAAY;IAClC;;IAEA;IACA,IAAIJ,YAAY,GAAGC,WAAW,EAAE;MAC9B,IAAIG,YAAY,GAAGH,WAAW,EAAED,YAAY,GAAGC,WAAW,CAAC,KACtD,IAAIF,WAAW,CAACN,OAAO,CAAC,GAAGK,WAAW,CAACL,OAAO,CAAC,EAClDO,YAAY,GAAGI,YAAY,CAAC,KACzB,IAAIC,UAAU,GAAGJ,WAAW,GAAGF,WAAW,CAACN,OAAO,CAAC,EACtDO,YAAY,GAAGC,WAAW,CAAC,KACxBD,YAAY,GAAGK,UAAU,GAAGN,WAAW,CAACN,OAAO,CAAC;IACvD;IAEA,OAAOO,YAAY;EACrB,CAAC;EAED,OAAO;IACLO,MAAM,kBAACC,OAAO,EAAE;MACd,IAAQV,WAAW,GAA6BU,OAAO,CAA/CV,WAAW;QAAEC,WAAW,GAAgBS,OAAO,CAAlCT,WAAW;QAAEU,GAAG,GAAWD,OAAO,CAArBC,GAAG;QAAEC,IAAI,GAAKF,OAAO,CAAhBE,IAAI;MAC3C,IAAMT,WAAW,GAAGC,MAAM,CAACP,eAAe,CAAC;MAC3C,IAAMQ,SAAS,GAAGF,WAAW,GAAGC,MAAM,CAACR,aAAa,CAAC;MACrD,IAAMU,YAAY,GAAGH,WAAW,GAAGH,WAAW,CAACN,OAAO,CAAC;MACvD,IAAMQ,YAAY,GAAGI,YAAY,GAAGL,WAAW,CAACN,OAAO,CAAC,GAAGgB,GAAG;MAC9D,IAAIC,IAAI,IAAIV,YAAY,GAAGC,WAAW,EAAE;QACtC,IAAMU,iBAAiB,GAAG,IAAI,CAACC,KAAK,iCAAMJ,OAAO;UAAEE,IAAI,EAAE;QAAK,GAAG;QACjE,IAAMG,eAAe,GAAGF,iBAAiB,GAAGZ,WAAW,CAACN,OAAO,CAAC;QAChE,IAAMqB,SAAS,GAAGb,WAAW,GAAGD,YAAY;QAC5C,IAAMe,OAAO,GAAGF,eAAe,GAAGV,SAAS;QAC3C,IAAIU,eAAe,IAAIV,SAAS,IAAIW,SAAS,GAAGC,OAAO,EACrD,OAAOJ,iBAAiB;MAC5B;MACA,OAAOX,YAAY;IACrB,CAAC;IACDY,KAAK,iBAACJ,OAAO,EAAE;MACb,IAAQV,WAAW,GAA6BU,OAAO,CAA/CV,WAAW;QAAEC,WAAW,GAAgBS,OAAO,CAAlCT,WAAW;QAAEU,GAAG,GAAWD,OAAO,CAArBC,GAAG;QAAEC,IAAI,GAAKF,OAAO,CAAhBE,IAAI;MAC3C,IAAMT,WAAW,GAAGC,MAAM,CAACP,eAAe,CAAC;MAC3C,IAAMQ,SAAS,GAAGF,WAAW,GAAGC,MAAM,CAACR,aAAa,CAAC;MACrD,IAAMU,YAAY,GAAGH,WAAW,GAAGH,WAAW,CAACN,OAAO,CAAC;MACvD,IAAMa,UAAU,GAAGD,YAAY,GAAGN,WAAW,CAACL,OAAO,CAAC;MACtD,IAAMO,YAAY,GAAGK,UAAU,GAAGI,GAAG;MACrC,IAAMH,UAAU,GAAGN,YAAY,GAAGD,WAAW,CAACN,OAAO,CAAC;MACtD,IAAIiB,IAAI,IAAIJ,UAAU,GAAGH,SAAS,EAAE;QAClC,IAAMa,kBAAkB,GAAG,IAAI,CAACT,MAAM,iCAAMC,OAAO;UAAEE,IAAI,EAAE;QAAK,GAAG;QACnE,IAAMI,SAAS,GAAGb,WAAW,GAAGe,kBAAkB;QAClD,IAAMD,OAAO,GAAGT,UAAU,GAAGH,SAAS;QACtC,IAAIa,kBAAkB,IAAIf,WAAW,IAAIc,OAAO,GAAGD,SAAS,EAC1D,OAAOE,kBAAkB;MAC7B;MACA,OAAOhB,YAAY;IACrB,CAAC;IACDH,KAAK,EAAE,sBAAkC;MAAA,IAA/BC,WAAW,SAAXA,WAAW;QAAEC,WAAW,SAAXA,WAAW;MAChC,IAAME,WAAW,GAAGC,MAAM,CAACP,eAAe,CAAC;MAC3C,IAAMS,YAAY,GAAGH,WAAW,GAAGH,WAAW,CAACN,OAAO,CAAC;MACvD,OAAOI,WAAW,CAACQ,YAAY,EAAE;QAAEN,WAAW,EAAXA,WAAW;QAAEC,WAAW,EAAXA;MAAY,CAAC,CAAC;IAChE,CAAC;IACDkB,GAAG,EAAE,oBAAkC;MAAA,IAA/BnB,WAAW,SAAXA,WAAW;QAAEC,WAAW,SAAXA,WAAW;MAC9B,IAAME,WAAW,GAAGC,MAAM,CAACP,eAAe,CAAC;MAC3C,IAAMS,YAAY,GAAGH,WAAW,GAAGH,WAAW,CAACN,OAAO,CAAC;MACvD,IAAMa,UAAU,GAAGD,YAAY,GAAGN,WAAW,CAACL,OAAO,CAAC;MACtD,IAAMO,YAAY,GAAGK,UAAU,GAAGN,WAAW,CAACN,OAAO,CAAC;MACtD,OAAOG,WAAW,CAACI,YAAY,EAAE;QAAEF,WAAW,EAAXA,WAAW;QAAEC,WAAW,EAAXA;MAAY,CAAC,CAAC;IAChE,CAAC;IACDmB,MAAM,EAAE,uBAAkC;MAAA,IAA/BpB,WAAW,SAAXA,WAAW;QAAEC,WAAW,SAAXA,WAAW;MACjC,IAAME,WAAW,GAAGC,MAAM,CAACP,eAAe,CAAC;MAC3C,IAAMS,YAAY,GAAGH,WAAW,GAAGH,WAAW,CAACN,OAAO,CAAC;MACvD,IAAMQ,YAAY,GAChBI,YAAY,GAAG,CAACN,WAAW,CAACL,OAAO,CAAC,GAAGM,WAAW,CAACN,OAAO,CAAC,IAAI,CAAC;MAClE,OAAOG,WAAW,CAACI,YAAY,EAAE;QAAEF,WAAW,EAAXA,WAAW;QAAEC,WAAW,EAAXA;MAAY,CAAC,CAAC;IAChE;EACF,CAAC;AACH,CAAC;AAED,IAAMoB,kBAAkB,GAAG,SAArBA,kBAAkB,CACtBC,GAAiB,EACjBC,IAAkB,EAClBb,OAAqC;EAAA,OACjC;IACJY,GAAG,EAAE7B,sBAAsB,CAAC,KAAK,CAAC,CAAC6B,GAAG,CAAC,CAACZ,OAAO,CAAC;IAChDa,IAAI,EAAE9B,sBAAsB,CAAC,MAAM,CAAC,CAAC8B,IAAI,CAAC,CAACb,OAAO;EACpD,CAAC;AAAA,CAAC;AAGF,IAAMc,wBAAkD,GAAG;EACzDF,GAAG,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;EACzBG,MAAM,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;EAC3BF,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;EAC1BG,KAAK,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;EAC1B,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;EAChC,SAAS,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;EAC5B,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;EAClC,YAAY,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;EAC9B,YAAY,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;EACjC,UAAU,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;EAC7B,aAAa,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;EACjC,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO;AAC9B,CAAC;AAOD;AACA;AACA;AACA;AACA;AACA,IAAMC,kBAAkB,GAAG,SAArBA,kBAAkB,QAMwB;EAAA,IAL9C3B,WAAW,SAAXA,WAAW;IACXC,WAAW,SAAXA,WAAW;IAAA,wBACX2B,SAAS;IAATA,SAAS,gCAAG,KAAK;IAAA,kBACjBjB,GAAG;IAAHA,GAAG,0BAAG,GAAG;IAAA,mBACTC,IAAI;IAAJA,IAAI,2BAAG,IAAI;EAEX,IAAMiB,YAAY,GAAG,IAAAC,kBAAW,EAACC,QAAQ,CAACC,IAAI,CAAC;EAC/C,IAAMC,KAAK,GAAG,IAAAC,cAAO,EAAC;IAAA,OAAMvB,GAAG,GAAGkB,YAAY;EAAA,GAAE,CAAClB,GAAG,EAAEkB,YAAY,CAAC,CAAC;EAEpE,IAAMM,YAAY,GAAG,IAAAD,cAAO,EAAC,YAAM;IACjC,IAAI,OAAON,SAAS,KAAK,QAAQ,IAAI,CAAC,CAACJ,wBAAwB,CAACI,SAAS,CAAC,EACxE,OAAOJ,wBAAwB,CAACI,SAAS,CAAC;IAC5C,OAAOJ,wBAAwB,CAACF,GAAG;EACrC,CAAC,EAAE,CAACM,SAAS,CAAC,CAAC;EAEf,OAAOP,kBAAkB,kCAAIc,YAAY,UAAE;IACzCnC,WAAW,EAAXA,WAAW;IACXC,WAAW,EAAXA,WAAW;IACXU,GAAG,EAAEsB,KAAK;IACVrB,IAAI,EAAJA;EACF,CAAC,GAAC;AACJ,CAAC;AAAC,eAEae,kBAAkB;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["selectContainerPaddingStyles","p","paddingVertical","theme","baseHeight","selectToggleListItemHeight","css","selectContainerOpenedStyles","opened","unbordered","clr","inputFocusColorBorder","inputFocusColorShadow","selectContainerUnborderedStyles","transitionStyles","selectContainerUnborderedHoverStyles","disabled","buttonGhostColorBgHover","SelectContainer","styled","InputContainer","omitEmotionProps","SelectMenu","Menu","m","min","xs","width","NotFound","div","menuItemHeight","inputPaddingHorizontal","selectNotFoundColorText","InputSearchContainer","menuPaddingVertical","ToggleContainer","toggleContentNotHasLeftStyles","hasLeft","toggleContentNotHasRightStyles","hasRight","ToggleContent","ellipsisStyles","Placeholder","span","inputColorPlaceholder","titleUnborderedTitleStyles","colorPrimary","titleDisabledStyles","inputDisabledColorText","Title","colorText","ToggleListItem","Tag","ToggleList","selectToggleListItemGap","DeleteButton","button","resetButtonStyles","selectToggleDeleteButtonColorIcon","selectToggleDeleteButtonColorIconHover","toggleIconUnborderedStyles","ToggleIconContainer","selectColorIcon","ClearIcon","CloseCircle","Addon","ToggleLeftAddon","inputAddonPaddingHorizontal","hasPadding","ToggleRightAddon","Select","forwardRef","ref","options","left","leftHasPadding","right","rightHasPadding","placeholder","searchVisible","searchProps","notFoundText","loading","autoFocus","autoOpen","clearVisible","threshold","visibleCount","overscanCount","multiple","maxSelectedItems","locale","defaultLocale","value","defaultValue","onChange","onLoadNext","onClose","onBlur","size","placement","rest","useForwardedRef","containerRef","mergedContainerRef","useState","setWidth","inputSearchContainerRef","useRef","setOpened","useForwardedState","forwardedValue","setForwardedValue","useEffect","current","focus","onCloseRef","resizeHandler","useCallback","window","requestAnimationFrame","nextWidth","getBoundingClientRect","useBrowserLayoutEffect","useResizeObserver","useEvent","undefined","setAttribute","listBoxId","useMemo","Math","random","toString","slice","blurHandler","e","onDelete","v","filter","item","toggleContent","length","items","map","option","find","title","stopPropagation","deleteLabel","toggleShowClearButton","toggleOnClear","toggleRightValue","key","clearLabel","toggleRightHasPaddingValue","onSelect","includes","windowSize","useSize","isMinXs","useIsMinWidth","fontSize","useFontSize","document","body","useTheme","scaleFactor","s","sizes","Number","replace","paddingBottom","paddingEm","modalBodyPaddingVertical","paddingTop","searchInputHeight","itemSize","height","maxHeight","modalHeaderHeight","curHeight","count","scrollHandler","useRWLoadNext","itemCount","InnerElement","style","innerElementRest","parseFloat","listItemFn","index","optionTitle","optionValue","optionOnClick","onClick","restOption","top","preventDefault","t","buttonPaddingHorizontal","small","scrollOffset","displayName"],"sources":["../../../src/Select/index.tsx"],"sourcesContent":["import { css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport { Close, CloseCircle, Down, Loading, Up } from '@os-design/icons';\nimport { m, useIsMinWidth } from '@os-design/media';\nimport {\n ellipsisStyles,\n resetButtonStyles,\n transitionStyles,\n WithSize,\n} from '@os-design/styles';\nimport { clr, ThemeOverrider, useTheme } from '@os-design/theming';\nimport {\n omitEmotionProps,\n useBrowserLayoutEffect,\n useEvent,\n useFontSize,\n useForwardedRef,\n useForwardedState,\n useResizeObserver,\n useSize,\n} from '@os-design/utils';\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { FixedSizeList } from 'react-window';\nimport Button from '../Button';\nimport { InputContainer } from '../Input';\nimport InputSearch, { InputSearchProps } from '../InputSearch';\nimport useRWLoadNext from '../List/utils/useRWLoadNext';\nimport Menu from '../Menu';\nimport MenuItem, { MenuItemProps } from '../MenuItem';\nimport { PopoverProps } from '../Popover';\nimport Tag from '../Tag';\nimport defaultLocale, { SelectLocale } from './utils/defaultLocale';\n\nexport interface Option extends MenuItemProps {\n title?: string;\n}\n\ntype JsxDivProps = Omit<\n JSX.IntrinsicElements['div'],\n 'value' | 'defaultValue' | 'onChange' | 'ref'\n>;\ninterface BaseSelectProps<T>\n extends JsxDivProps,\n WithSize,\n Pick<PopoverProps, 'placement'> {\n /**\n * Options of the select.\n * @default undefined\n */\n options?: Option[];\n /**\n * The component located on the left side.\n * @default undefined\n */\n left?: React.ReactNode;\n /**\n * Adds padding to the left component.\n * It can be useful when passing an icon or text in the left component.\n * @default false\n */\n leftHasPadding?: boolean;\n /**\n * The component located on the right side.\n * @default undefined\n */\n right?: React.ReactNode;\n /**\n * Adds padding to the right component.\n * It can be useful when passing an icon or text in the right component.\n * @default false\n */\n rightHasPadding?: boolean;\n /**\n * The placeholder of the select.\n * @default undefined\n */\n placeholder?: string;\n /**\n * Whether the search input visible.\n * @default false\n */\n searchVisible?: boolean;\n /**\n * Props of the search input.\n * @default undefined\n */\n searchProps?: InputSearchProps;\n /**\n * Text displayed when there are no list items.\n * @default Not found\n */\n notFoundText?: string;\n /**\n * Whether the border is hidden.\n * @default false\n */\n unbordered?: boolean;\n /**\n * Shows the loading status.\n * @default false\n */\n loading?: boolean;\n /**\n * Whether the select is disabled.\n * @default false\n */\n disabled?: boolean;\n /**\n * Whether the component have a focus.\n * @default false\n */\n autoFocus?: boolean;\n /**\n * Whether the component opens the popup list.\n * @default false\n */\n autoOpen?: boolean;\n /**\n * Whether the select has the clear button.\n * @default false\n */\n clearVisible?: boolean;\n /**\n * A threshold N means that the onLoadNext function calls when a user scrolls all items except N.\n * @default 10\n */\n threshold?: number;\n /**\n * Defines how many items inside of the visible \"window\" to render.\n * @default 6\n */\n visibleCount?: number;\n /**\n * Defines how many items outside of the visible \"window\" to render at all times.\n * @default 10\n */\n overscanCount?: number;\n /**\n * The max number of options that the user can select. Zero means unlimited.\n * Works only when multiple is true.\n * @default 0\n */\n maxSelectedItems?: number;\n /**\n * The locale.\n * @default undefined\n */\n locale?: SelectLocale;\n /**\n * Selected options.\n * @default undefined\n */\n value?: T;\n /**\n * The default value.\n * @default undefined\n */\n defaultValue?: T;\n /**\n * The change event handler.\n * @default undefined\n */\n onChange?: (value: T) => void;\n /**\n * The callback to load more items.\n * @default undefined\n */\n onLoadNext?: () => void;\n /**\n * The event handler that is called whenever a popup closes.\n * @default undefined\n */\n onClose?: () => void;\n}\ninterface SelectNotMultipleProps extends BaseSelectProps<string | null> {\n /**\n * Is it possible to select multiple values.\n * @default false\n */\n multiple?: false;\n}\ninterface SelectMultipleProps extends BaseSelectProps<string[]> {\n /**\n * Is it possible to select multiple values.\n * @default false\n */\n multiple: true;\n}\nexport type SelectProps = SelectNotMultipleProps | SelectMultipleProps;\n\nconst selectContainerPaddingStyles = (p) => {\n const paddingVertical =\n (p.theme.baseHeight - p.theme.selectToggleListItemHeight) / 2;\n\n return css`\n padding: calc(${paddingVertical}em - 1px) 0;\n `;\n};\n\nconst selectContainerOpenedStyles = (p) =>\n p.opened &&\n !p.unbordered &&\n css`\n border-color: ${clr(p.theme.inputFocusColorBorder)};\n box-shadow: 0 0 0 0.15em ${clr(p.theme.inputFocusColorShadow)};\n `;\n\nconst selectContainerUnborderedStyles = (p) =>\n p.unbordered &&\n css`\n border: 0;\n box-shadow: none !important;\n ${transitionStyles('background-color')(p)};\n `;\n\nconst selectContainerUnborderedHoverStyles = (p) =>\n p.unbordered &&\n !p.disabled &&\n css`\n @media (hover: hover) {\n &:hover,\n &:focus {\n background-color: ${clr(p.theme.buttonGhostColorBgHover)};\n }\n }\n `;\n\ninterface SelectContainerProps {\n opened: boolean;\n unbordered?: boolean;\n disabled?: boolean;\n}\nexport const SelectContainer = styled(\n InputContainer,\n omitEmotionProps('opened', 'unbordered', 'disabled')\n)<SelectContainerProps>`\n cursor: ${(p) => (!p.disabled ? 'pointer' : 'not-allowed')};\n user-select: none;\n position: relative;\n display: flex;\n align-items: center;\n\n height: unset;\n min-height: ${(p) => p.theme.baseHeight}em;\n\n ${selectContainerPaddingStyles};\n ${selectContainerOpenedStyles};\n ${selectContainerUnborderedStyles};\n ${selectContainerUnborderedHoverStyles};\n`;\n\ninterface SelectMenuProps {\n width: number;\n}\nconst SelectMenu = styled(Menu, omitEmotionProps('width'))<SelectMenuProps>`\n padding-top: 0;\n padding-bottom: 0;\n max-height: unset;\n\n ${m.min.xs} {\n width: ${(p) => p.width}px;\n }\n`;\n\nconst NotFound = styled.div`\n height: ${(p) => p.theme.menuItemHeight}em;\n display: flex;\n align-items: center;\n\n padding: 0 ${(p) => p.theme.inputPaddingHorizontal}em;\n color: ${(p) => clr(p.theme.selectNotFoundColorText)};\n`;\n\nconst InputSearchContainer = styled.div`\n padding: ${(p) => p.theme.menuPaddingVertical}em\n ${(p) => p.theme.inputPaddingHorizontal}em 0;\n`;\n\nexport const ToggleContainer = styled.div`\n flex: 1;\n display: flex;\n align-items: center;\n overflow: hidden;\n`;\n\nconst toggleContentNotHasLeftStyles = (p) =>\n !p.hasLeft &&\n css`\n padding-left: ${p.theme.inputPaddingHorizontal}em;\n `;\n\nconst toggleContentNotHasRightStyles = (p) =>\n !p.hasRight &&\n !p.unbordered &&\n css`\n padding-right: ${p.theme.inputPaddingHorizontal}em;\n `;\n\ninterface ToggleContentProps {\n hasLeft?: boolean;\n hasRight?: boolean;\n unbordered?: boolean;\n}\nexport const ToggleContent = styled(\n 'div',\n omitEmotionProps('hasLeft', 'hasRight', 'unbordered')\n)<ToggleContentProps>`\n flex: 1;\n ${toggleContentNotHasLeftStyles};\n ${toggleContentNotHasRightStyles};\n ${ellipsisStyles};\n`;\n\nexport const Placeholder = styled.span`\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n ${ellipsisStyles};\n`;\n\nconst titleUnborderedTitleStyles = (p) =>\n p.unbordered &&\n css`\n font-weight: 500;\n ${!p.disabled && `color: ${clr(p.theme.colorPrimary)};`}\n `;\n\nconst titleDisabledStyles = (p) =>\n p.disabled &&\n css`\n color: ${clr(p.theme.inputDisabledColorText)};\n `;\n\ntype TitleProps = Pick<SelectProps, 'disabled' | 'unbordered'>;\nexport const Title = styled(\n 'span',\n omitEmotionProps('disabled', 'unbordered')\n)<TitleProps>`\n color: ${(p) => clr(p.theme.colorText)};\n ${titleUnborderedTitleStyles};\n ${titleDisabledStyles};\n ${ellipsisStyles};\n`;\n\ntype ToggleListItemProps = Pick<SelectProps, 'disabled'>;\nconst ToggleListItem = styled(\n Tag,\n omitEmotionProps('disabled')\n)<ToggleListItemProps>`\n // Reset tag styles\n padding-top: 0;\n padding-bottom: 0;\n\n height: ${(p) => p.theme.selectToggleListItemHeight}em;\n ${titleDisabledStyles};\n`;\n\nconst ToggleList = styled.div`\n display: flex;\n flex-wrap: wrap;\n overflow: hidden; // For ellipsis styles\n\n margin: 0 ${(p) => p.theme.selectToggleListItemGap}em\n ${(p) => -p.theme.selectToggleListItemGap}em 0;\n\n & > div {\n margin: 0 ${(p) => p.theme.selectToggleListItemGap}em\n ${(p) => p.theme.selectToggleListItemGap}em 0;\n }\n`;\n\nconst DeleteButton = styled.button`\n ${resetButtonStyles};\n cursor: pointer;\n display: inherit;\n font-size: 1em;\n margin-left: 0.2em;\n\n background-color: transparent;\n color: ${(p) => clr(p.theme.selectToggleDeleteButtonColorIcon)};\n\n @media (hover: hover) {\n &:hover,\n &:focus {\n color: ${(p) => clr(p.theme.selectToggleDeleteButtonColorIconHover)};\n }\n }\n\n ${transitionStyles('color')};\n`;\n\nconst toggleIconUnborderedStyles = (p) =>\n p.unbordered &&\n css`\n padding-top: 0.2em;\n font-size: 0.8em;\n ${!p.disabled && `color: ${clr(p.theme.colorPrimary)};`}\n `;\n\ninterface ToggleIconContainerProps {\n unbordered?: boolean;\n disabled?: boolean;\n}\nexport const ToggleIconContainer = styled(\n 'span',\n omitEmotionProps('unbordered', 'disabled')\n)<ToggleIconContainerProps>`\n color: ${(p) => clr(p.theme.selectColorIcon)};\n line-height: 1;\n ${toggleIconUnborderedStyles};\n`;\n\nexport const ClearIcon = styled(CloseCircle)`\n transform: scale(1.2) !important;\n`;\n\ninterface AddonProps {\n hasPadding: boolean;\n}\nconst Addon = styled('span', omitEmotionProps('hasPadding'))<AddonProps>`\n display: flex;\n align-items: center;\n user-select: none;\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n\n svg {\n transform: scale(1.2);\n }\n`;\n\nexport const ToggleLeftAddon = styled(Addon)`\n padding-right: ${(p) => p.theme.inputAddonPaddingHorizontal}em;\n ${(p) =>\n p.hasPadding &&\n css`\n padding-left: ${p.theme.inputPaddingHorizontal}em;\n `}\n`;\n\nexport const ToggleRightAddon = styled(Addon)`\n padding-left: ${(p) => p.theme.inputAddonPaddingHorizontal}em;\n ${(p) =>\n p.hasPadding &&\n css`\n padding-right: ${p.theme.inputPaddingHorizontal}em;\n `}\n`;\n\n/**\n * The component that allows to pick a value from predefined options.\n */\nconst Select = forwardRef<HTMLDivElement, SelectProps>(\n (\n {\n options = [],\n left,\n leftHasPadding = false,\n right,\n rightHasPadding = false,\n placeholder,\n searchVisible = false,\n searchProps = {},\n notFoundText = 'Not found',\n unbordered = false,\n loading = false,\n disabled = false,\n autoFocus = false,\n autoOpen = false,\n clearVisible = false,\n threshold = 10,\n visibleCount = 6,\n overscanCount = 10,\n multiple = false,\n maxSelectedItems = 0,\n locale = defaultLocale,\n value,\n defaultValue,\n onChange,\n onLoadNext = () => {},\n onClose = () => {},\n onBlur = () => {},\n size,\n placement,\n ...rest\n },\n ref\n ) => {\n const [containerRef, mergedContainerRef] = useForwardedRef(ref);\n const [width, setWidth] = useState(0);\n const inputSearchContainerRef = useRef<HTMLDivElement>(null);\n const [opened, setOpened] = useState(autoOpen);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [forwardedValue, setForwardedValue] = useForwardedState<any>({\n value,\n defaultValue,\n onChange,\n });\n\n useEffect(() => {\n if (autoFocus) containerRef.current?.focus();\n }, [autoFocus, containerRef]);\n\n const onCloseRef = useRef(onClose);\n useEffect(() => {\n onCloseRef.current = onClose;\n }, [onClose]);\n\n useEffect(() => {\n if (!opened) onCloseRef.current();\n }, [opened]);\n\n /**\n * Detect the width of the container when the select was opened and update\n * it when either the container size or the window size has been changed.\n */\n const resizeHandler = useCallback(() => {\n window.requestAnimationFrame(() => {\n if (!opened || !containerRef.current) return;\n const nextWidth = containerRef.current.getBoundingClientRect().width;\n if (width === nextWidth) return;\n setWidth(nextWidth);\n });\n }, [opened, containerRef, width]);\n useBrowserLayoutEffect(() => resizeHandler(), [resizeHandler]);\n useResizeObserver(containerRef, resizeHandler);\n useEvent(\n (typeof window !== 'undefined' ? window : undefined) as EventTarget,\n 'resize',\n resizeHandler\n );\n\n // Replace the aria-haspopup attribute from menu to listbox\n useBrowserLayoutEffect(() => {\n if (!containerRef.current) return;\n containerRef.current.setAttribute('aria-haspopup', 'listbox');\n }, []);\n\n const listBoxId = useMemo(\n () => `listbox-${Math.random().toString(36).slice(2, 11)}`,\n []\n );\n\n const blurHandler = useCallback(\n (e) => {\n if (!opened) onBlur(e);\n },\n [onBlur, opened]\n );\n\n const onDelete = useCallback(\n (v: string) => {\n if (!multiple) return;\n setForwardedValue((forwardedValue || []).filter((item) => item !== v));\n },\n [forwardedValue, multiple, setForwardedValue]\n );\n\n const toggleContent = useMemo(() => {\n if (multiple) {\n if (!forwardedValue || forwardedValue.length === 0) {\n return <Placeholder>{placeholder}</Placeholder>;\n }\n const items = forwardedValue.map((v) => {\n const option = (options || []).find((item) => item.value === v);\n return { title: option ? option.title || '' : '', value: v };\n });\n return (\n <ToggleList>\n {items.map(({ title, value: v }) => (\n <ToggleListItem\n key={v}\n disabled={disabled}\n right={\n !disabled ? (\n <DeleteButton\n onClick={(e) => {\n onDelete(v);\n e.stopPropagation();\n }}\n onKeyDown={(e) => e.stopPropagation()}\n aria-label={`${locale.deleteLabel} ${title}`}\n aria-hidden\n >\n <Close />\n </DeleteButton>\n ) : undefined\n }\n aria-hidden\n >\n {title}\n </ToggleListItem>\n ))}\n </ToggleList>\n );\n }\n if (!forwardedValue) {\n return <Placeholder>{placeholder}</Placeholder>;\n }\n const option = (options || []).find(\n (item) => item.value === forwardedValue\n );\n return (\n <Title disabled={disabled} unbordered={unbordered}>\n {option ? option.title : ''}\n </Title>\n );\n }, [\n disabled,\n forwardedValue,\n locale.deleteLabel,\n multiple,\n onDelete,\n options,\n placeholder,\n unbordered,\n ]);\n\n const toggleShowClearButton = useMemo(() => {\n if (!clearVisible) return false;\n if (multiple) return forwardedValue && forwardedValue.length > 0;\n return !!forwardedValue;\n }, [clearVisible, forwardedValue, multiple]);\n\n const toggleOnClear = useCallback(() => {\n setForwardedValue(multiple ? [] : null);\n if (!containerRef.current) return;\n containerRef.current.focus();\n }, [containerRef, multiple, setForwardedValue]);\n\n const toggleRightValue = useMemo(() => {\n if (loading) return <Loading />;\n if (toggleShowClearButton) {\n return (\n <Button\n type='ghost'\n wide='never'\n size='small'\n disabled={disabled}\n onClick={(e) => {\n toggleOnClear();\n e.stopPropagation();\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') toggleOnClear();\n e.stopPropagation();\n }}\n aria-label={locale.clearLabel}\n >\n <ClearIcon />\n </Button>\n );\n }\n return (\n right || (\n <ToggleIconContainer unbordered={unbordered} disabled={disabled}>\n {opened ? <Up /> : <Down />}\n </ToggleIconContainer>\n )\n );\n }, [\n disabled,\n loading,\n locale.clearLabel,\n opened,\n right,\n toggleOnClear,\n toggleShowClearButton,\n unbordered,\n ]);\n\n const toggleRightHasPaddingValue = useMemo(() => {\n if (loading) return true;\n if (toggleShowClearButton) return false;\n return right ? rightHasPadding : true;\n }, [loading, right, rightHasPadding, toggleShowClearButton]);\n\n const onSelect = useCallback(\n (v: string) => {\n if (multiple) {\n // Delete the value because it was already selected\n if ((forwardedValue || []).includes(v)) {\n setForwardedValue(\n (forwardedValue || []).filter((item) => item !== v)\n );\n return;\n }\n\n // Add a new value if the number of selected items is less than max\n if (\n maxSelectedItems === 0 ||\n (forwardedValue || []).length < maxSelectedItems\n ) {\n setForwardedValue([...(forwardedValue || []), v]);\n return;\n }\n return;\n }\n setForwardedValue(v);\n },\n [forwardedValue, maxSelectedItems, multiple, setForwardedValue]\n );\n\n const windowSize = useSize();\n const isMinXs = useIsMinWidth('xs');\n const fontSize = useFontSize(document.body);\n const { theme } = useTheme();\n\n const scaleFactor = useMemo(() => {\n const s = size || 'medium';\n return ['small', 'medium', 'large'].includes(s)\n ? theme.sizes[s]\n : Number(s.replace(/^([0-9]+(\\.[0-9]+)?).*/, '$1')) || 1; // Extract the number\n }, [size, theme.sizes]);\n\n const paddingBottom = useMemo(() => {\n const paddingEm = isMinXs\n ? theme.menuPaddingVertical\n : theme.modalBodyPaddingVertical[0];\n return paddingEm * fontSize * scaleFactor;\n }, [\n isMinXs,\n theme.menuPaddingVertical,\n theme.modalBodyPaddingVertical,\n fontSize,\n scaleFactor,\n ]);\n\n const paddingTop = useMemo(\n () => (searchVisible ? 5 * scaleFactor : paddingBottom),\n [searchVisible, scaleFactor, paddingBottom]\n );\n\n const searchInputHeight = useMemo(\n () =>\n searchVisible\n ? (theme.baseHeight + theme.menuPaddingVertical) *\n fontSize *\n scaleFactor\n : 0,\n [\n searchVisible,\n theme.baseHeight,\n theme.menuPaddingVertical,\n fontSize,\n scaleFactor,\n ]\n );\n\n const itemSize = useMemo(\n () => theme.menuItemHeight * fontSize * scaleFactor,\n [theme.menuItemHeight, fontSize, scaleFactor]\n );\n\n const height = useMemo(() => {\n // Modal\n if (!isMinXs) {\n const maxHeight =\n windowSize.height -\n theme.modalHeaderHeight * fontSize * scaleFactor -\n searchInputHeight;\n const curHeight =\n options.length * itemSize + paddingTop + paddingBottom;\n return curHeight < maxHeight ? curHeight : maxHeight;\n }\n // Popover\n const count =\n options.length < visibleCount ? options.length : visibleCount;\n return count * itemSize + paddingTop + paddingBottom;\n }, [\n isMinXs,\n options.length,\n visibleCount,\n itemSize,\n windowSize.height,\n theme.modalHeaderHeight,\n fontSize,\n scaleFactor,\n searchInputHeight,\n paddingTop,\n paddingBottom,\n ]);\n\n const scrollHandler = useRWLoadNext({\n itemCount: options.length,\n threshold,\n itemSize,\n paddingTop,\n height,\n onLoadNext,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const InnerElement = useCallback(\n ({ style, ...innerElementRest }) => (\n <div\n style={{\n ...style,\n height: `${\n parseFloat(style.height) + paddingTop + paddingBottom\n }px`,\n }}\n role='listbox'\n id={listBoxId}\n {...innerElementRest}\n />\n ),\n [listBoxId, paddingBottom, paddingTop]\n );\n\n const listItemFn = useCallback(\n ({ index, style }) => {\n const {\n title: optionTitle,\n value: optionValue,\n onClick: optionOnClick,\n ...restOption\n } = options[index];\n return (\n <MenuItem\n style={{\n ...style,\n top: `${\n parseFloat(style.top ? style.top.toString() : '0') + paddingTop\n }px`,\n }}\n selected={\n (multiple &&\n (forwardedValue || []).includes(optionValue || '')) ||\n (!multiple && forwardedValue === optionValue)\n }\n onClick={(e) => {\n if (!optionValue) return;\n onSelect(optionValue);\n\n // Focus the input.\n // Otherwise, if multiple is false and the user presses enter to select an item,\n // the input will lose focus.\n if (containerRef.current && !multiple) {\n containerRef.current.focus();\n }\n\n if (optionOnClick) optionOnClick(e);\n }}\n role='option'\n aria-selected={\n (multiple &&\n (forwardedValue || []).includes(optionValue || '')) ||\n (!multiple && forwardedValue === optionValue)\n }\n {...restOption}\n >\n {optionTitle}\n </MenuItem>\n );\n },\n [containerRef, forwardedValue, multiple, onSelect, options, paddingTop]\n );\n\n return (\n <>\n <SelectContainer\n opened={opened}\n unbordered={unbordered}\n disabled={disabled}\n size={size}\n tabIndex={!disabled ? 0 : -1}\n onClick={() => {\n if (disabled) return;\n setOpened(!opened);\n }}\n onKeyDown={(e) => {\n if (disabled) return;\n if (['Enter', ' '].includes(e.key)) {\n setOpened(!opened);\n e.preventDefault();\n }\n }}\n onMouseDown={(e) => e.preventDefault()}\n onBlur={blurHandler}\n role='combobox'\n aria-disabled={disabled}\n aria-busy={loading}\n aria-haspopup='listbox'\n aria-owns={listBoxId}\n {...rest}\n ref={mergedContainerRef}\n >\n <ToggleContainer>\n {left && (\n <ThemeOverrider\n overrides={(t) => ({\n buttonPaddingHorizontal: 0.8,\n baseHeight: t.selectToggleListItemHeight / t.sizes.small,\n })}\n >\n <ToggleLeftAddon hasPadding={leftHasPadding}>\n {left}\n </ToggleLeftAddon>\n </ThemeOverrider>\n )}\n\n <ToggleContent\n hasLeft={!!left}\n hasRight={!!right}\n unbordered={unbordered}\n >\n {toggleContent}\n </ToggleContent>\n\n {toggleRightValue && (\n <ThemeOverrider\n overrides={(t) => ({\n buttonPaddingHorizontal: 0.8,\n baseHeight: t.selectToggleListItemHeight / t.sizes.small,\n })}\n >\n <ToggleRightAddon hasPadding={toggleRightHasPaddingValue}>\n {toggleRightValue}\n </ToggleRightAddon>\n </ThemeOverrider>\n )}\n </ToggleContainer>\n </SelectContainer>\n\n <SelectMenu\n trigger={containerRef}\n visible={opened}\n onClose={() => setOpened(false)}\n size={size}\n width={width}\n closeOnSelect={!multiple}\n modalTitle={placeholder}\n placement={placement}\n >\n {searchVisible && (\n <InputSearchContainer ref={inputSearchContainerRef}>\n <InputSearch {...searchProps} />\n </InputSearchContainer>\n )}\n\n {options.length > 0 ? (\n <FixedSizeList\n width='100%'\n height={height}\n itemSize={itemSize}\n itemCount={options.length}\n overscanCount={overscanCount}\n onScroll={({ scrollOffset }) => scrollHandler(scrollOffset)}\n innerElementType={InnerElement}\n >\n {listItemFn}\n </FixedSizeList>\n ) : (\n <NotFound>{notFoundText}</NotFound>\n )}\n </SelectMenu>\n </>\n );\n }\n);\n\nSelect.displayName = 'Select';\n\nexport default Select;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["selectContainerPaddingStyles","p","paddingVertical","theme","baseHeight","selectToggleListItemHeight","css","selectContainerOpenedStyles","opened","unbordered","clr","inputFocusColorBorder","inputFocusColorShadow","selectContainerUnborderedStyles","transitionStyles","selectContainerUnborderedHoverStyles","disabled","buttonGhostColorBgHover","SelectContainer","styled","InputContainer","omitEmotionProps","SelectMenu","Menu","m","min","xs","width","NotFound","div","menuItemHeight","inputPaddingHorizontal","selectNotFoundColorText","InputSearchContainer","menuPaddingVertical","ToggleContainer","toggleContentNotHasLeftStyles","hasLeft","toggleContentNotHasRightStyles","hasRight","ToggleContent","ellipsisStyles","Placeholder","span","inputColorPlaceholder","titleUnborderedTitleStyles","colorPrimary","titleDisabledStyles","inputDisabledColorText","Title","colorText","ToggleListItem","Tag","ToggleList","selectToggleListItemGap","DeleteButton","button","resetButtonStyles","selectToggleDeleteButtonColorIcon","selectToggleDeleteButtonColorIconHover","toggleIconUnborderedStyles","ToggleIconContainer","selectColorIcon","ClearIcon","CloseCircle","Addon","ToggleLeftAddon","inputAddonPaddingHorizontal","hasPadding","ToggleRightAddon","Select","forwardRef","ref","options","left","leftHasPadding","right","rightHasPadding","placeholder","searchVisible","searchProps","notFoundText","loading","autoFocus","autoOpen","clearVisible","threshold","visibleCount","overscanCount","multiple","maxSelectedItems","locale","defaultLocale","value","defaultValue","onChange","onLoadNext","onClose","onBlur","size","placement","rest","useForwardedRef","containerRef","mergedContainerRef","useState","setWidth","inputSearchContainerRef","useRef","setOpened","useForwardedState","forwardedValue","setForwardedValue","useEffect","current","focus","onCloseRef","resizeHandler","useCallback","window","requestAnimationFrame","nextWidth","getBoundingClientRect","useBrowserLayoutEffect","useResizeObserver","useEvent","undefined","setAttribute","listBoxId","useMemo","Math","random","toString","slice","blurHandler","e","onDelete","v","filter","item","toggleContent","length","items","map","option","find","title","stopPropagation","deleteLabel","toggleShowClearButton","toggleOnClear","toggleRightValue","key","clearLabel","toggleRightHasPaddingValue","onSelect","includes","windowSize","useSize","isMinXs","useIsMinWidth","fontSize","useFontSize","document","body","useTheme","scaleFactor","s","sizes","Number","replace","paddingBottom","paddingEm","modalBodyPaddingVertical","paddingTop","searchInputHeight","itemSize","height","maxHeight","modalHeaderHeight","curHeight","count","scrollHandler","useRWLoadNext","itemCount","InnerElement","style","innerElementRest","parseFloat","listItemFn","index","optionTitle","optionValue","optionOnClick","onClick","restOption","top","preventDefault","t","buttonPaddingHorizontal","small","scrollOffset","displayName"],"sources":["../../../src/Select/index.tsx"],"sourcesContent":["import { css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport { Close, CloseCircle, Down, Loading, Up } from '@os-design/icons';\nimport { m, useIsMinWidth } from '@os-design/media';\nimport {\n ellipsisStyles,\n resetButtonStyles,\n transitionStyles,\n WithSize,\n} from '@os-design/styles';\nimport { clr, ThemeOverrider, useTheme } from '@os-design/theming';\nimport {\n omitEmotionProps,\n useBrowserLayoutEffect,\n useEvent,\n useFontSize,\n useForwardedRef,\n useForwardedState,\n useResizeObserver,\n useSize,\n} from '@os-design/utils';\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { FixedSizeList } from 'react-window';\nimport Button from '../Button';\nimport { InputContainer } from '../Input';\nimport InputSearch, { InputSearchProps } from '../InputSearch';\nimport useRWLoadNext from '../List/utils/useRWLoadNext';\nimport Menu from '../Menu';\nimport MenuItem, { MenuItemProps } from '../MenuItem';\nimport { PopoverProps } from '../Popover';\nimport Tag from '../Tag';\nimport defaultLocale, { SelectLocale } from './utils/defaultLocale';\n\nexport interface Option extends MenuItemProps {\n title?: string;\n}\n\ntype JsxDivProps = Omit<\n JSX.IntrinsicElements['div'],\n 'value' | 'defaultValue' | 'onChange' | 'ref'\n>;\ninterface BaseSelectProps<T>\n extends JsxDivProps,\n WithSize,\n Pick<PopoverProps, 'placement'> {\n /**\n * Options of the select.\n * @default undefined\n */\n options?: Option[];\n /**\n * The component located on the left side.\n * @default undefined\n */\n left?: React.ReactNode;\n /**\n * Adds padding to the left component.\n * It can be useful when passing an icon or text in the left component.\n * @default false\n */\n leftHasPadding?: boolean;\n /**\n * The component located on the right side.\n * @default undefined\n */\n right?: React.ReactNode;\n /**\n * Adds padding to the right component.\n * It can be useful when passing an icon or text in the right component.\n * @default false\n */\n rightHasPadding?: boolean;\n /**\n * The placeholder of the select.\n * @default undefined\n */\n placeholder?: string;\n /**\n * Whether the search input visible.\n * @default false\n */\n searchVisible?: boolean;\n /**\n * Props of the search input.\n * @default undefined\n */\n searchProps?: InputSearchProps;\n /**\n * Text displayed when there are no list items.\n * @default Not found\n */\n notFoundText?: string;\n /**\n * Whether the border is hidden.\n * @default false\n */\n unbordered?: boolean;\n /**\n * Shows the loading status.\n * @default false\n */\n loading?: boolean;\n /**\n * Whether the select is disabled.\n * @default false\n */\n disabled?: boolean;\n /**\n * Whether the component have a focus.\n * @default false\n */\n autoFocus?: boolean;\n /**\n * Whether the component opens the popup list.\n * @default false\n */\n autoOpen?: boolean;\n /**\n * Whether the select has the clear button.\n * @default false\n */\n clearVisible?: boolean;\n /**\n * A threshold N means that the onLoadNext function calls when a user scrolls all items except N.\n * @default 10\n */\n threshold?: number;\n /**\n * Defines how many items inside of the visible \"window\" to render.\n * @default 6\n */\n visibleCount?: number;\n /**\n * Defines how many items outside of the visible \"window\" to render at all times.\n * @default 10\n */\n overscanCount?: number;\n /**\n * The max number of options that the user can select. Zero means unlimited.\n * Works only when multiple is true.\n * @default 0\n */\n maxSelectedItems?: number;\n /**\n * The locale.\n * @default undefined\n */\n locale?: SelectLocale;\n /**\n * Selected options.\n * @default undefined\n */\n value?: T;\n /**\n * The default value.\n * @default undefined\n */\n defaultValue?: T;\n /**\n * The change event handler.\n * @default undefined\n */\n onChange?: (value: T) => void;\n /**\n * The callback to load more items.\n * @default undefined\n */\n onLoadNext?: () => void;\n /**\n * The event handler that is called whenever a popup closes.\n * @default undefined\n */\n onClose?: () => void;\n}\nexport interface SelectNotMultipleProps extends BaseSelectProps<string | null> {\n /**\n * Is it possible to select multiple values.\n * @default false\n */\n multiple?: false;\n}\nexport interface SelectMultipleProps extends BaseSelectProps<string[]> {\n /**\n * Is it possible to select multiple values.\n * @default false\n */\n multiple: true;\n}\nexport type SelectProps = SelectNotMultipleProps | SelectMultipleProps;\n\nconst selectContainerPaddingStyles = (p) => {\n const paddingVertical =\n (p.theme.baseHeight - p.theme.selectToggleListItemHeight) / 2;\n\n return css`\n padding: calc(${paddingVertical}em - 1px) 0;\n `;\n};\n\nconst selectContainerOpenedStyles = (p) =>\n p.opened &&\n !p.unbordered &&\n css`\n border-color: ${clr(p.theme.inputFocusColorBorder)};\n box-shadow: 0 0 0 0.15em ${clr(p.theme.inputFocusColorShadow)};\n `;\n\nconst selectContainerUnborderedStyles = (p) =>\n p.unbordered &&\n css`\n border: 0;\n box-shadow: none !important;\n ${transitionStyles('background-color')(p)};\n `;\n\nconst selectContainerUnborderedHoverStyles = (p) =>\n p.unbordered &&\n !p.disabled &&\n css`\n @media (hover: hover) {\n &:hover,\n &:focus {\n background-color: ${clr(p.theme.buttonGhostColorBgHover)};\n }\n }\n `;\n\ninterface SelectContainerProps {\n opened: boolean;\n unbordered?: boolean;\n disabled?: boolean;\n}\nexport const SelectContainer = styled(\n InputContainer,\n omitEmotionProps('opened', 'unbordered', 'disabled')\n)<SelectContainerProps>`\n cursor: ${(p) => (!p.disabled ? 'pointer' : 'not-allowed')};\n user-select: none;\n position: relative;\n display: flex;\n align-items: center;\n\n height: unset;\n min-height: ${(p) => p.theme.baseHeight}em;\n\n ${selectContainerPaddingStyles};\n ${selectContainerOpenedStyles};\n ${selectContainerUnborderedStyles};\n ${selectContainerUnborderedHoverStyles};\n`;\n\ninterface SelectMenuProps {\n width: number;\n}\nconst SelectMenu = styled(Menu, omitEmotionProps('width'))<SelectMenuProps>`\n padding-top: 0;\n padding-bottom: 0;\n max-height: unset;\n\n ${m.min.xs} {\n width: ${(p) => p.width}px;\n }\n`;\n\nconst NotFound = styled.div`\n height: ${(p) => p.theme.menuItemHeight}em;\n display: flex;\n align-items: center;\n\n padding: 0 ${(p) => p.theme.inputPaddingHorizontal}em;\n color: ${(p) => clr(p.theme.selectNotFoundColorText)};\n`;\n\nconst InputSearchContainer = styled.div`\n padding: ${(p) => p.theme.menuPaddingVertical}em\n ${(p) => p.theme.inputPaddingHorizontal}em 0;\n`;\n\nexport const ToggleContainer = styled.div`\n flex: 1;\n display: flex;\n align-items: center;\n overflow: hidden;\n`;\n\nconst toggleContentNotHasLeftStyles = (p) =>\n !p.hasLeft &&\n css`\n padding-left: ${p.theme.inputPaddingHorizontal}em;\n `;\n\nconst toggleContentNotHasRightStyles = (p) =>\n !p.hasRight &&\n !p.unbordered &&\n css`\n padding-right: ${p.theme.inputPaddingHorizontal}em;\n `;\n\ninterface ToggleContentProps {\n hasLeft?: boolean;\n hasRight?: boolean;\n unbordered?: boolean;\n}\nexport const ToggleContent = styled(\n 'div',\n omitEmotionProps('hasLeft', 'hasRight', 'unbordered')\n)<ToggleContentProps>`\n flex: 1;\n ${toggleContentNotHasLeftStyles};\n ${toggleContentNotHasRightStyles};\n ${ellipsisStyles};\n`;\n\nexport const Placeholder = styled.span`\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n ${ellipsisStyles};\n`;\n\nconst titleUnborderedTitleStyles = (p) =>\n p.unbordered &&\n css`\n font-weight: 500;\n ${!p.disabled && `color: ${clr(p.theme.colorPrimary)};`}\n `;\n\nconst titleDisabledStyles = (p) =>\n p.disabled &&\n css`\n color: ${clr(p.theme.inputDisabledColorText)};\n `;\n\ntype TitleProps = Pick<SelectProps, 'disabled' | 'unbordered'>;\nexport const Title = styled(\n 'span',\n omitEmotionProps('disabled', 'unbordered')\n)<TitleProps>`\n color: ${(p) => clr(p.theme.colorText)};\n ${titleUnborderedTitleStyles};\n ${titleDisabledStyles};\n ${ellipsisStyles};\n`;\n\ntype ToggleListItemProps = Pick<SelectProps, 'disabled'>;\nconst ToggleListItem = styled(\n Tag,\n omitEmotionProps('disabled')\n)<ToggleListItemProps>`\n // Reset tag styles\n padding-top: 0;\n padding-bottom: 0;\n\n height: ${(p) => p.theme.selectToggleListItemHeight}em;\n ${titleDisabledStyles};\n`;\n\nconst ToggleList = styled.div`\n display: flex;\n flex-wrap: wrap;\n overflow: hidden; // For ellipsis styles\n\n margin: 0 ${(p) => p.theme.selectToggleListItemGap}em\n ${(p) => -p.theme.selectToggleListItemGap}em 0;\n\n & > div {\n margin: 0 ${(p) => p.theme.selectToggleListItemGap}em\n ${(p) => p.theme.selectToggleListItemGap}em 0;\n }\n`;\n\nconst DeleteButton = styled.button`\n ${resetButtonStyles};\n cursor: pointer;\n display: inherit;\n font-size: 1em;\n margin-left: 0.2em;\n\n background-color: transparent;\n color: ${(p) => clr(p.theme.selectToggleDeleteButtonColorIcon)};\n\n @media (hover: hover) {\n &:hover,\n &:focus {\n color: ${(p) => clr(p.theme.selectToggleDeleteButtonColorIconHover)};\n }\n }\n\n ${transitionStyles('color')};\n`;\n\nconst toggleIconUnborderedStyles = (p) =>\n p.unbordered &&\n css`\n padding-top: 0.2em;\n font-size: 0.8em;\n ${!p.disabled && `color: ${clr(p.theme.colorPrimary)};`}\n `;\n\ninterface ToggleIconContainerProps {\n unbordered?: boolean;\n disabled?: boolean;\n}\nexport const ToggleIconContainer = styled(\n 'span',\n omitEmotionProps('unbordered', 'disabled')\n)<ToggleIconContainerProps>`\n color: ${(p) => clr(p.theme.selectColorIcon)};\n line-height: 1;\n ${toggleIconUnborderedStyles};\n`;\n\nexport const ClearIcon = styled(CloseCircle)`\n transform: scale(1.2) !important;\n`;\n\ninterface AddonProps {\n hasPadding: boolean;\n}\nconst Addon = styled('span', omitEmotionProps('hasPadding'))<AddonProps>`\n display: flex;\n align-items: center;\n user-select: none;\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n\n svg {\n transform: scale(1.2);\n }\n`;\n\nexport const ToggleLeftAddon = styled(Addon)`\n padding-right: ${(p) => p.theme.inputAddonPaddingHorizontal}em;\n ${(p) =>\n p.hasPadding &&\n css`\n padding-left: ${p.theme.inputPaddingHorizontal}em;\n `}\n`;\n\nexport const ToggleRightAddon = styled(Addon)`\n padding-left: ${(p) => p.theme.inputAddonPaddingHorizontal}em;\n ${(p) =>\n p.hasPadding &&\n css`\n padding-right: ${p.theme.inputPaddingHorizontal}em;\n `}\n`;\n\n/**\n * The component that allows to pick a value from predefined options.\n */\nconst Select = forwardRef<HTMLDivElement, SelectProps>(\n (\n {\n options = [],\n left,\n leftHasPadding = false,\n right,\n rightHasPadding = false,\n placeholder,\n searchVisible = false,\n searchProps = {},\n notFoundText = 'Not found',\n unbordered = false,\n loading = false,\n disabled = false,\n autoFocus = false,\n autoOpen = false,\n clearVisible = false,\n threshold = 10,\n visibleCount = 6,\n overscanCount = 10,\n multiple = false,\n maxSelectedItems = 0,\n locale = defaultLocale,\n value,\n defaultValue,\n onChange,\n onLoadNext = () => {},\n onClose = () => {},\n onBlur = () => {},\n size,\n placement,\n ...rest\n },\n ref\n ) => {\n const [containerRef, mergedContainerRef] = useForwardedRef(ref);\n const [width, setWidth] = useState(0);\n const inputSearchContainerRef = useRef<HTMLDivElement>(null);\n const [opened, setOpened] = useState(autoOpen);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [forwardedValue, setForwardedValue] = useForwardedState<any>({\n value,\n defaultValue,\n onChange,\n });\n\n useEffect(() => {\n if (autoFocus) containerRef.current?.focus();\n }, [autoFocus, containerRef]);\n\n const onCloseRef = useRef(onClose);\n useEffect(() => {\n onCloseRef.current = onClose;\n }, [onClose]);\n\n useEffect(() => {\n if (!opened) onCloseRef.current();\n }, [opened]);\n\n /**\n * Detect the width of the container when the select was opened and update\n * it when either the container size or the window size has been changed.\n */\n const resizeHandler = useCallback(() => {\n window.requestAnimationFrame(() => {\n if (!opened || !containerRef.current) return;\n const nextWidth = containerRef.current.getBoundingClientRect().width;\n if (width === nextWidth) return;\n setWidth(nextWidth);\n });\n }, [opened, containerRef, width]);\n useBrowserLayoutEffect(() => resizeHandler(), [resizeHandler]);\n useResizeObserver(containerRef, resizeHandler);\n useEvent(\n (typeof window !== 'undefined' ? window : undefined) as EventTarget,\n 'resize',\n resizeHandler\n );\n\n // Replace the aria-haspopup attribute from menu to listbox\n useBrowserLayoutEffect(() => {\n if (!containerRef.current) return;\n containerRef.current.setAttribute('aria-haspopup', 'listbox');\n }, []);\n\n const listBoxId = useMemo(\n () => `listbox-${Math.random().toString(36).slice(2, 11)}`,\n []\n );\n\n const blurHandler = useCallback(\n (e) => {\n if (!opened) onBlur(e);\n },\n [onBlur, opened]\n );\n\n const onDelete = useCallback(\n (v: string) => {\n if (!multiple) return;\n setForwardedValue((forwardedValue || []).filter((item) => item !== v));\n },\n [forwardedValue, multiple, setForwardedValue]\n );\n\n const toggleContent = useMemo(() => {\n if (multiple) {\n if (!forwardedValue || forwardedValue.length === 0) {\n return <Placeholder>{placeholder}</Placeholder>;\n }\n const items = forwardedValue.map((v) => {\n const option = (options || []).find((item) => item.value === v);\n return { title: option ? option.title || '' : '', value: v };\n });\n return (\n <ToggleList>\n {items.map(({ title, value: v }) => (\n <ToggleListItem\n key={v}\n disabled={disabled}\n right={\n !disabled ? (\n <DeleteButton\n onClick={(e) => {\n onDelete(v);\n e.stopPropagation();\n }}\n onKeyDown={(e) => e.stopPropagation()}\n aria-label={`${locale.deleteLabel} ${title}`}\n aria-hidden\n >\n <Close />\n </DeleteButton>\n ) : undefined\n }\n aria-hidden\n >\n {title}\n </ToggleListItem>\n ))}\n </ToggleList>\n );\n }\n if (!forwardedValue) {\n return <Placeholder>{placeholder}</Placeholder>;\n }\n const option = (options || []).find(\n (item) => item.value === forwardedValue\n );\n return (\n <Title disabled={disabled} unbordered={unbordered}>\n {option ? option.title : ''}\n </Title>\n );\n }, [\n disabled,\n forwardedValue,\n locale.deleteLabel,\n multiple,\n onDelete,\n options,\n placeholder,\n unbordered,\n ]);\n\n const toggleShowClearButton = useMemo(() => {\n if (!clearVisible) return false;\n if (multiple) return forwardedValue && forwardedValue.length > 0;\n return !!forwardedValue;\n }, [clearVisible, forwardedValue, multiple]);\n\n const toggleOnClear = useCallback(() => {\n setForwardedValue(multiple ? [] : null);\n if (!containerRef.current) return;\n containerRef.current.focus();\n }, [containerRef, multiple, setForwardedValue]);\n\n const toggleRightValue = useMemo(() => {\n if (loading) return <Loading />;\n if (toggleShowClearButton) {\n return (\n <Button\n type='ghost'\n wide='never'\n size='small'\n disabled={disabled}\n onClick={(e) => {\n toggleOnClear();\n e.stopPropagation();\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') toggleOnClear();\n e.stopPropagation();\n }}\n aria-label={locale.clearLabel}\n >\n <ClearIcon />\n </Button>\n );\n }\n return (\n right || (\n <ToggleIconContainer unbordered={unbordered} disabled={disabled}>\n {opened ? <Up /> : <Down />}\n </ToggleIconContainer>\n )\n );\n }, [\n disabled,\n loading,\n locale.clearLabel,\n opened,\n right,\n toggleOnClear,\n toggleShowClearButton,\n unbordered,\n ]);\n\n const toggleRightHasPaddingValue = useMemo(() => {\n if (loading) return true;\n if (toggleShowClearButton) return false;\n return right ? rightHasPadding : true;\n }, [loading, right, rightHasPadding, toggleShowClearButton]);\n\n const onSelect = useCallback(\n (v: string) => {\n if (multiple) {\n // Delete the value because it was already selected\n if ((forwardedValue || []).includes(v)) {\n setForwardedValue(\n (forwardedValue || []).filter((item) => item !== v)\n );\n return;\n }\n\n // Add a new value if the number of selected items is less than max\n if (\n maxSelectedItems === 0 ||\n (forwardedValue || []).length < maxSelectedItems\n ) {\n setForwardedValue([...(forwardedValue || []), v]);\n return;\n }\n return;\n }\n setForwardedValue(v);\n },\n [forwardedValue, maxSelectedItems, multiple, setForwardedValue]\n );\n\n const windowSize = useSize();\n const isMinXs = useIsMinWidth('xs');\n const fontSize = useFontSize(document.body);\n const { theme } = useTheme();\n\n const scaleFactor = useMemo(() => {\n const s = size || 'medium';\n return ['small', 'medium', 'large'].includes(s)\n ? theme.sizes[s]\n : Number(s.replace(/^([0-9]+(\\.[0-9]+)?).*/, '$1')) || 1; // Extract the number\n }, [size, theme.sizes]);\n\n const paddingBottom = useMemo(() => {\n const paddingEm = isMinXs\n ? theme.menuPaddingVertical\n : theme.modalBodyPaddingVertical[0];\n return paddingEm * fontSize * scaleFactor;\n }, [\n isMinXs,\n theme.menuPaddingVertical,\n theme.modalBodyPaddingVertical,\n fontSize,\n scaleFactor,\n ]);\n\n const paddingTop = useMemo(\n () => (searchVisible ? 5 * scaleFactor : paddingBottom),\n [searchVisible, scaleFactor, paddingBottom]\n );\n\n const searchInputHeight = useMemo(\n () =>\n searchVisible\n ? (theme.baseHeight + theme.menuPaddingVertical) *\n fontSize *\n scaleFactor\n : 0,\n [\n searchVisible,\n theme.baseHeight,\n theme.menuPaddingVertical,\n fontSize,\n scaleFactor,\n ]\n );\n\n const itemSize = useMemo(\n () => theme.menuItemHeight * fontSize * scaleFactor,\n [theme.menuItemHeight, fontSize, scaleFactor]\n );\n\n const height = useMemo(() => {\n // Modal\n if (!isMinXs) {\n const maxHeight =\n windowSize.height -\n theme.modalHeaderHeight * fontSize * scaleFactor -\n searchInputHeight;\n const curHeight =\n options.length * itemSize + paddingTop + paddingBottom;\n return curHeight < maxHeight ? curHeight : maxHeight;\n }\n // Popover\n const count =\n options.length < visibleCount ? options.length : visibleCount;\n return count * itemSize + paddingTop + paddingBottom;\n }, [\n isMinXs,\n options.length,\n visibleCount,\n itemSize,\n windowSize.height,\n theme.modalHeaderHeight,\n fontSize,\n scaleFactor,\n searchInputHeight,\n paddingTop,\n paddingBottom,\n ]);\n\n const scrollHandler = useRWLoadNext({\n itemCount: options.length,\n threshold,\n itemSize,\n paddingTop,\n height,\n onLoadNext,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const InnerElement = useCallback(\n ({ style, ...innerElementRest }) => (\n <div\n style={{\n ...style,\n height: `${\n parseFloat(style.height) + paddingTop + paddingBottom\n }px`,\n }}\n role='listbox'\n id={listBoxId}\n {...innerElementRest}\n />\n ),\n [listBoxId, paddingBottom, paddingTop]\n );\n\n const listItemFn = useCallback(\n ({ index, style }) => {\n const {\n title: optionTitle,\n value: optionValue,\n onClick: optionOnClick,\n ...restOption\n } = options[index];\n return (\n <MenuItem\n style={{\n ...style,\n top: `${\n parseFloat(style.top ? style.top.toString() : '0') + paddingTop\n }px`,\n }}\n selected={\n (multiple &&\n (forwardedValue || []).includes(optionValue || '')) ||\n (!multiple && forwardedValue === optionValue)\n }\n onClick={(e) => {\n if (!optionValue) return;\n onSelect(optionValue);\n\n // Focus the input.\n // Otherwise, if multiple is false and the user presses enter to select an item,\n // the input will lose focus.\n if (containerRef.current && !multiple) {\n containerRef.current.focus();\n }\n\n if (optionOnClick) optionOnClick(e);\n }}\n role='option'\n aria-selected={\n (multiple &&\n (forwardedValue || []).includes(optionValue || '')) ||\n (!multiple && forwardedValue === optionValue)\n }\n {...restOption}\n >\n {optionTitle}\n </MenuItem>\n );\n },\n [containerRef, forwardedValue, multiple, onSelect, options, paddingTop]\n );\n\n return (\n <>\n <SelectContainer\n opened={opened}\n unbordered={unbordered}\n disabled={disabled}\n size={size}\n tabIndex={!disabled ? 0 : -1}\n onClick={() => {\n if (disabled) return;\n setOpened(!opened);\n }}\n onKeyDown={(e) => {\n if (disabled) return;\n if (['Enter', ' '].includes(e.key)) {\n setOpened(!opened);\n e.preventDefault();\n }\n }}\n onMouseDown={(e) => e.preventDefault()}\n onBlur={blurHandler}\n role='combobox'\n aria-disabled={disabled}\n aria-busy={loading}\n aria-haspopup='listbox'\n aria-owns={listBoxId}\n {...rest}\n ref={mergedContainerRef}\n >\n <ToggleContainer>\n {left && (\n <ThemeOverrider\n overrides={(t) => ({\n buttonPaddingHorizontal: 0.8,\n baseHeight: t.selectToggleListItemHeight / t.sizes.small,\n })}\n >\n <ToggleLeftAddon hasPadding={leftHasPadding}>\n {left}\n </ToggleLeftAddon>\n </ThemeOverrider>\n )}\n\n <ToggleContent\n hasLeft={!!left}\n hasRight={!!right}\n unbordered={unbordered}\n >\n {toggleContent}\n </ToggleContent>\n\n {toggleRightValue && (\n <ThemeOverrider\n overrides={(t) => ({\n buttonPaddingHorizontal: 0.8,\n baseHeight: t.selectToggleListItemHeight / t.sizes.small,\n })}\n >\n <ToggleRightAddon hasPadding={toggleRightHasPaddingValue}>\n {toggleRightValue}\n </ToggleRightAddon>\n </ThemeOverrider>\n )}\n </ToggleContainer>\n </SelectContainer>\n\n <SelectMenu\n trigger={containerRef}\n visible={opened}\n onClose={() => setOpened(false)}\n size={size}\n width={width}\n closeOnSelect={!multiple}\n modalTitle={placeholder}\n placement={placement}\n >\n {searchVisible && (\n <InputSearchContainer ref={inputSearchContainerRef}>\n <InputSearch {...searchProps} />\n </InputSearchContainer>\n )}\n\n {options.length > 0 ? (\n <FixedSizeList\n width='100%'\n height={height}\n itemSize={itemSize}\n itemCount={options.length}\n overscanCount={overscanCount}\n onScroll={({ scrollOffset }) => scrollHandler(scrollOffset)}\n innerElementType={InnerElement}\n >\n {listItemFn}\n </FixedSizeList>\n ) : (\n <NotFound>{notFoundText}</NotFound>\n )}\n </SelectMenu>\n </>\n );\n }\n);\n\nSelect.displayName = 'Select';\n\nexport default Select;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["styled","defaultLocale","getAccessibilityDateLabel","useFormattedValue","Down","Up","useIsMinWidth","ThemeOverrider","useForwardedRef","useForwardedState","useKeyPress","React","forwardRef","useCallback","useEffect","useMemo","useRef","useState","Button","Modal","Popover","ClearIcon","ToggleLeftAddon","Placeholder","ToggleRightAddon","SelectContainer","Title","ToggleContent","ToggleIconContainer","TimePicker","DatePickerCalendar","StyledPopover","p","theme","datePickerPadding","TimeContainer","div","Dash","baseHeight","StyledTimePicker","timePickerStyle","style","width","createDate","date","time","d","Date","setFullYear","getFullYear","setMonth","getMonth","setDate","getDate","setHours","setMinutes","getHours","getMinutes","DatePicker","left","leftHasPadding","right","rightHasPadding","placeholder","disabled","autoFocus","autoOpen","format","firstDayOfWeek","locale","showTime","timeNotation","range","value","defaultValue","onChange","onClose","onBlur","size","rest","ref","containerRef","mergedContainerRef","opened","setOpened","forwardedValue","setForwardedValue","current","focus","onCloseRef","formattedValue","closeHandler","window","undefined","isMinXs","blurHandler","e","valueIsSpecified","rightHasPaddingValue","rightValue","stopPropagation","includes","key","preventDefault","clearLabel","firstTimePickerRef","secondTimePickerRef","rangeStartedRef","changeHandler","prev","nextValue","Array","isArray","getTime","sort","a","b","calendarComponent","v","tabOnInputComplete","target","selectionStart","from","nextTo","closeOnInputComplete","timeComponent","t","buttonPaddingHorizontal","selectToggleListItemHeight","sizes","small","displayName"],"sources":["../../../src/DatePicker/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport {\n DatePickerLocale,\n defaultLocale,\n getAccessibilityDateLabel,\n useFormattedValue,\n} from '@os-design/date-picker-utils';\nimport { Down, Up } from '@os-design/icons';\nimport { useIsMinWidth } from '@os-design/media';\nimport { WithSize } from '@os-design/styles';\nimport { ThemeOverrider } from '@os-design/theming';\nimport {\n useForwardedRef,\n useForwardedState,\n useKeyPress,\n} from '@os-design/utils';\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport Button from '../Button';\nimport Modal from '../Modal';\nimport Popover from '../Popover';\nimport {\n ClearIcon,\n ToggleLeftAddon,\n Placeholder,\n ToggleRightAddon,\n SelectContainer,\n Title,\n ToggleContent,\n ToggleIconContainer,\n} from '../Select';\nimport TimePicker from '../TimePicker';\nimport DatePickerCalendar from './DatePickerCalendar';\n\ntype JsxDivProps = Omit<\n JSX.IntrinsicElements['div'],\n 'value' | 'defaultValue' | 'onChange' | 'ref'\n>;\ninterface BaseDatePickerProps<T> extends JsxDivProps, WithSize {\n /**\n * The component located on the left side.\n * @default undefined\n */\n left?: React.ReactNode;\n /**\n * Adds padding to the left component.\n * It can be useful when passing an icon or text in the left component.\n * @default false\n */\n leftHasPadding?: boolean;\n /**\n * The component located on the right side.\n * @default undefined\n */\n right?: React.ReactNode;\n /**\n * Adds padding to the right component.\n * It can be useful when passing an icon or text in the right component.\n * @default false\n */\n rightHasPadding?: boolean;\n /**\n * The placeholder of the date picker.\n * @default undefined\n */\n placeholder?: string;\n /**\n * Whether the date picker is disabled.\n * @default false\n */\n disabled?: boolean;\n /**\n * Whether the component have a focus.\n * @default false\n */\n autoFocus?: boolean;\n /**\n * Whether the component opens the popup calendar.\n * @default false\n */\n autoOpen?: boolean;\n /**\n * The format of the date.\n * @default undefined\n */\n format?: (value: T) => string;\n /**\n * The first day of the week.\n * @default sunday\n */\n firstDayOfWeek?: 'sunday' | 'monday';\n /**\n * The locale of the date picker.\n * @default undefined\n */\n locale?: DatePickerLocale;\n /**\n * Whether the time is shown.\n * @default false\n */\n showTime?: boolean;\n /**\n * The time notation.\n * @default 12-hour\n */\n timeNotation?: '12-hour' | '24-hour';\n /**\n * Selected date.\n * @default undefined\n */\n value?: T | null;\n /**\n * The default value.\n * @default undefined\n */\n defaultValue?: T | null;\n /**\n * The change event handler.\n * @default undefined\n */\n onChange?: (value: T | null) => void;\n /**\n * The event handler that is called whenever a popup closes.\n * @default undefined\n */\n onClose?: () => void;\n}\ninterface DateNotRangePickerProps extends BaseDatePickerProps<Date> {\n /**\n * Whether the value is a range.\n * @default false\n */\n range?: false;\n}\ninterface DateRangePickerProps extends BaseDatePickerProps<[Date, Date]> {\n /**\n * Whether the value is a range.\n * @default false\n */\n range: true;\n}\nexport type DatePickerProps = DateNotRangePickerProps | DateRangePickerProps;\n\nconst StyledPopover = styled(Popover)`\n padding: ${(p) => p.theme.datePickerPadding}em;\n`;\n\nconst TimeContainer = styled.div`\n display: flex;\n justify-content: center;\n margin-top: 0.5em;\n`;\n\nconst Dash = styled.div`\n margin: 0 0.5em;\n line-height: ${(p) => p.theme.baseHeight}em;\n`;\n\nconst StyledTimePicker = styled(TimePicker)`\n width: 2.5em;\n text-align: center;\n`;\n\nconst timePickerStyle = { style: { width: 'auto' } };\n\nconst createDate = (date: Date, time?: Date | null) => {\n const d = new Date(0);\n d.setFullYear(date.getFullYear());\n d.setMonth(date.getMonth());\n d.setDate(date.getDate());\n d.setHours(0);\n d.setMinutes(0);\n if (time) {\n d.setHours(time.getHours());\n d.setMinutes(time.getMinutes());\n }\n return d;\n};\n\n/**\n * The component to choose a date.\n */\nconst DatePicker = forwardRef<HTMLDivElement, DatePickerProps>(\n (\n {\n left,\n leftHasPadding = false,\n right,\n rightHasPadding = false,\n placeholder,\n disabled = false,\n autoFocus = false,\n autoOpen = false,\n format,\n firstDayOfWeek = 'sunday',\n locale = defaultLocale,\n showTime = false,\n timeNotation = '12-hour',\n range = false,\n value,\n defaultValue,\n onChange,\n onClose = () => {},\n onBlur = () => {},\n size,\n ...rest\n },\n ref\n ) => {\n const [containerRef, mergedContainerRef] = useForwardedRef(ref);\n const [opened, setOpened] = useState(autoOpen);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [forwardedValue, setForwardedValue] = useForwardedState<any>({\n value,\n defaultValue,\n onChange,\n });\n\n useEffect(() => {\n if (autoFocus) containerRef.current?.focus();\n }, [autoFocus, containerRef]);\n\n const onCloseRef = useRef(onClose);\n useEffect(() => {\n onCloseRef.current = onClose;\n }, [onClose]);\n\n useEffect(() => {\n if (!opened) {\n onCloseRef.current();\n containerRef.current?.focus();\n }\n }, [containerRef, opened]);\n\n const formattedValue = useFormattedValue({\n forwardedValue,\n format,\n showTime,\n timeNotation,\n });\n\n const closeHandler = useCallback(() => {\n setOpened(false);\n }, []);\n\n useKeyPress(\n (typeof window !== 'undefined' ? window : undefined) as EventTarget,\n 'Escape',\n closeHandler\n );\n const isMinXs = useIsMinWidth('xs');\n\n const blurHandler = useCallback(\n (e) => {\n if (!opened) onBlur(e);\n },\n [onBlur, opened]\n );\n\n const valueIsSpecified = useMemo(\n () => formattedValue !== undefined && formattedValue !== null,\n [formattedValue]\n );\n\n const rightHasPaddingValue = useMemo(() => {\n if (valueIsSpecified) return false;\n return right ? rightHasPadding : true;\n }, [right, rightHasPadding, valueIsSpecified]);\n\n const rightValue = useMemo(() => {\n if (valueIsSpecified) {\n return (\n <div aria-hidden>\n <Button\n type='ghost'\n wide='never'\n size='small'\n disabled={disabled}\n onClick={(e) => {\n setForwardedValue(null);\n e.stopPropagation();\n }}\n onKeyDown={(e) => {\n if (disabled) return;\n if (['Enter', ' '].includes(e.key)) {\n setForwardedValue(null);\n if (!containerRef.current) return;\n containerRef.current.focus();\n e.preventDefault();\n e.stopPropagation();\n }\n }}\n aria-label={locale.clearLabel}\n >\n <ClearIcon />\n </Button>\n </div>\n );\n }\n return (\n right || (\n <ToggleIconContainer>\n {opened ? <Up /> : <Down />}\n </ToggleIconContainer>\n )\n );\n }, [\n containerRef,\n disabled,\n locale.clearLabel,\n opened,\n right,\n setForwardedValue,\n valueIsSpecified,\n ]);\n\n const firstTimePickerRef = useRef<HTMLInputElement>(null);\n const secondTimePickerRef = useRef<HTMLInputElement>(null);\n const rangeStartedRef = useRef(false);\n\n useEffect(() => {\n rangeStartedRef.current = false;\n }, [opened]);\n\n const changeHandler = useCallback(\n (date: Date) => {\n setForwardedValue((prev) => {\n if (!range) return createDate(date, prev);\n\n const d = createDate(date);\n const nextValue =\n prev && Array.isArray(prev) && rangeStartedRef.current\n ? [new Date(prev[0].getTime()), createDate(date, prev[1])]\n : [d, d];\n\n rangeStartedRef.current = !rangeStartedRef.current;\n return nextValue.sort(\n (a: Date, b: Date) => a.getTime() - b.getTime()\n );\n });\n },\n [range, setForwardedValue]\n );\n\n const calendarComponent = useMemo(\n () => (\n <DatePickerCalendar\n firstDayOfWeek={firstDayOfWeek}\n locale={locale}\n value={forwardedValue}\n onSelect={(v) => {\n changeHandler(v);\n firstTimePickerRef.current?.focus();\n if (!showTime && (!range || !rangeStartedRef.current)) {\n closeHandler();\n }\n }}\n />\n ),\n [\n changeHandler,\n closeHandler,\n firstDayOfWeek,\n forwardedValue,\n locale,\n range,\n showTime,\n ]\n );\n\n const tabOnInputComplete = useCallback(\n (e) => {\n if (e.target.selectionStart < 5) return;\n secondTimePickerRef.current?.focus();\n setForwardedValue(([from]) => {\n const nextTo = new Date(from.getTime());\n nextTo.setHours(nextTo.getHours() + 1);\n return [from, nextTo];\n });\n },\n [setForwardedValue]\n );\n\n const closeOnInputComplete = useCallback(\n (e) => {\n if (e.target.selectionStart < 5) return;\n closeHandler();\n },\n [closeHandler]\n );\n\n const timeComponent = useMemo(\n () =>\n showTime && forwardedValue ? (\n <TimeContainer>\n {Array.isArray(forwardedValue) ? (\n <>\n <StyledTimePicker\n ref={firstTimePickerRef}\n autoFocus\n disabled={disabled}\n notation={timeNotation}\n containerProps={timePickerStyle}\n value={forwardedValue[0]}\n onChange={(v) => setForwardedValue([v, forwardedValue[1]])}\n onKeyDown={(e) => {\n if (disabled) return;\n if (e.key === 'Enter') {\n setOpened(!opened);\n }\n }}\n onKeyUp={tabOnInputComplete}\n />\n <Dash>–</Dash>\n <StyledTimePicker\n ref={secondTimePickerRef}\n disabled={disabled}\n notation={timeNotation}\n containerProps={timePickerStyle}\n value={forwardedValue[1]}\n onChange={(v) => setForwardedValue([forwardedValue[0], v])}\n onKeyDown={(e) => {\n if (disabled) return;\n if (e.key === 'Enter') {\n setOpened(!opened);\n }\n }}\n onKeyUp={closeOnInputComplete}\n />\n </>\n ) : (\n <StyledTimePicker\n ref={firstTimePickerRef}\n autoFocus\n disabled={disabled}\n notation={timeNotation}\n containerProps={timePickerStyle}\n value={forwardedValue}\n onChange={setForwardedValue}\n onKeyDown={(e) => {\n if (disabled) return;\n if (e.key === 'Enter') {\n setOpened(!opened);\n }\n }}\n onKeyUp={closeOnInputComplete}\n />\n )}\n </TimeContainer>\n ) : null,\n [\n closeOnInputComplete,\n disabled,\n forwardedValue,\n opened,\n setForwardedValue,\n showTime,\n tabOnInputComplete,\n timeNotation,\n ]\n );\n\n return (\n <>\n <SelectContainer\n opened={opened}\n disabled={disabled}\n size={size}\n tabIndex={!disabled ? 0 : -1}\n onClick={() => {\n if (disabled) return;\n setOpened(!opened);\n }}\n onKeyDown={(e) => {\n if (disabled) return;\n if (['Enter', ' '].includes(e.key)) {\n setOpened(!opened);\n e.preventDefault();\n }\n }}\n onMouseDown={(e) => e.preventDefault()}\n onBlur={blurHandler}\n role='combobox'\n aria-label={\n forwardedValue\n ? getAccessibilityDateLabel(forwardedValue, locale)\n : undefined\n }\n aria-disabled={disabled}\n {...rest}\n ref={mergedContainerRef}\n >\n {left && (\n <ThemeOverrider\n overrides={(t) => ({\n buttonPaddingHorizontal: 0.8,\n baseHeight: t.selectToggleListItemHeight / t.sizes.small,\n })}\n >\n <ToggleLeftAddon hasPadding={leftHasPadding}>\n {left}\n </ToggleLeftAddon>\n </ThemeOverrider>\n )}\n\n <ToggleContent hasLeft={!!left} hasRight={!!right}>\n {valueIsSpecified ? (\n <Title disabled={disabled} aria-hidden>\n {formattedValue}\n </Title>\n ) : (\n <Placeholder>{placeholder}</Placeholder>\n )}\n </ToggleContent>\n\n {rightValue && (\n <ThemeOverrider\n overrides={(t) => ({\n buttonPaddingHorizontal: 0.8,\n baseHeight: t.selectToggleListItemHeight / t.sizes.small,\n })}\n >\n <ToggleRightAddon hasPadding={rightHasPaddingValue}>\n {rightValue}\n </ToggleRightAddon>\n </ThemeOverrider>\n )}\n </SelectContainer>\n\n {isMinXs ? (\n <StyledPopover\n trigger={containerRef}\n placement='bottom-start'\n visible={opened}\n onClose={closeHandler}\n size={size}\n >\n {calendarComponent}\n {timeComponent}\n </StyledPopover>\n ) : (\n <Modal\n title={placeholder}\n header={null}\n footer={null}\n visible={opened}\n onClose={closeHandler}\n size={size}\n >\n {calendarComponent}\n {timeComponent}\n </Modal>\n )}\n </>\n );\n }\n);\n\nDatePicker.displayName = 'DatePicker';\n\nexport default DatePicker;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["styled","defaultLocale","getAccessibilityDateLabel","useFormattedValue","Down","Up","useIsMinWidth","ThemeOverrider","useForwardedRef","useForwardedState","useKeyPress","React","forwardRef","useCallback","useEffect","useMemo","useRef","useState","Button","Modal","Popover","ClearIcon","ToggleLeftAddon","Placeholder","ToggleRightAddon","SelectContainer","Title","ToggleContent","ToggleIconContainer","TimePicker","DatePickerCalendar","StyledPopover","p","theme","datePickerPadding","TimeContainer","div","Dash","baseHeight","StyledTimePicker","timePickerStyle","style","width","createDate","date","time","d","Date","setFullYear","getFullYear","setMonth","getMonth","setDate","getDate","setHours","setMinutes","getHours","getMinutes","DatePicker","left","leftHasPadding","right","rightHasPadding","placeholder","disabled","autoFocus","autoOpen","format","firstDayOfWeek","locale","showTime","timeNotation","range","value","defaultValue","onChange","onClose","onBlur","size","rest","ref","containerRef","mergedContainerRef","opened","setOpened","forwardedValue","setForwardedValue","current","focus","onCloseRef","formattedValue","closeHandler","window","undefined","isMinXs","blurHandler","e","valueIsSpecified","rightHasPaddingValue","rightValue","stopPropagation","includes","key","preventDefault","clearLabel","firstTimePickerRef","secondTimePickerRef","rangeStartedRef","changeHandler","prev","nextValue","Array","isArray","getTime","sort","a","b","calendarComponent","v","tabOnInputComplete","target","selectionStart","from","nextTo","closeOnInputComplete","timeComponent","t","buttonPaddingHorizontal","selectToggleListItemHeight","sizes","small","displayName"],"sources":["../../../src/DatePicker/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport {\n DatePickerLocale,\n defaultLocale,\n getAccessibilityDateLabel,\n useFormattedValue,\n} from '@os-design/date-picker-utils';\nimport { Down, Up } from '@os-design/icons';\nimport { useIsMinWidth } from '@os-design/media';\nimport { WithSize } from '@os-design/styles';\nimport { ThemeOverrider } from '@os-design/theming';\nimport {\n useForwardedRef,\n useForwardedState,\n useKeyPress,\n} from '@os-design/utils';\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport Button from '../Button';\nimport Modal from '../Modal';\nimport Popover from '../Popover';\nimport {\n ClearIcon,\n ToggleLeftAddon,\n Placeholder,\n ToggleRightAddon,\n SelectContainer,\n Title,\n ToggleContent,\n ToggleIconContainer,\n} from '../Select';\nimport TimePicker from '../TimePicker';\nimport DatePickerCalendar from './DatePickerCalendar';\n\ntype JsxDivProps = Omit<\n JSX.IntrinsicElements['div'],\n 'value' | 'defaultValue' | 'onChange' | 'ref'\n>;\ninterface BaseDatePickerProps<T> extends JsxDivProps, WithSize {\n /**\n * The component located on the left side.\n * @default undefined\n */\n left?: React.ReactNode;\n /**\n * Adds padding to the left component.\n * It can be useful when passing an icon or text in the left component.\n * @default false\n */\n leftHasPadding?: boolean;\n /**\n * The component located on the right side.\n * @default undefined\n */\n right?: React.ReactNode;\n /**\n * Adds padding to the right component.\n * It can be useful when passing an icon or text in the right component.\n * @default false\n */\n rightHasPadding?: boolean;\n /**\n * The placeholder of the date picker.\n * @default undefined\n */\n placeholder?: string;\n /**\n * Whether the date picker is disabled.\n * @default false\n */\n disabled?: boolean;\n /**\n * Whether the component have a focus.\n * @default false\n */\n autoFocus?: boolean;\n /**\n * Whether the component opens the popup calendar.\n * @default false\n */\n autoOpen?: boolean;\n /**\n * The format of the date.\n * @default undefined\n */\n format?: (value: T) => string;\n /**\n * The first day of the week.\n * @default sunday\n */\n firstDayOfWeek?: 'sunday' | 'monday';\n /**\n * The locale of the date picker.\n * @default undefined\n */\n locale?: DatePickerLocale;\n /**\n * Whether the time is shown.\n * @default false\n */\n showTime?: boolean;\n /**\n * The time notation.\n * @default 12-hour\n */\n timeNotation?: '12-hour' | '24-hour';\n /**\n * Selected date.\n * @default undefined\n */\n value?: T | null;\n /**\n * The default value.\n * @default undefined\n */\n defaultValue?: T | null;\n /**\n * The change event handler.\n * @default undefined\n */\n onChange?: (value: T | null) => void;\n /**\n * The event handler that is called whenever a popup closes.\n * @default undefined\n */\n onClose?: () => void;\n}\nexport interface DateNotRangePickerProps extends BaseDatePickerProps<Date> {\n /**\n * Whether the value is a range.\n * @default false\n */\n range?: false;\n}\nexport interface DateRangePickerProps\n extends BaseDatePickerProps<[Date, Date]> {\n /**\n * Whether the value is a range.\n * @default false\n */\n range: true;\n}\nexport type DatePickerProps = DateNotRangePickerProps | DateRangePickerProps;\n\nconst StyledPopover = styled(Popover)`\n padding: ${(p) => p.theme.datePickerPadding}em;\n`;\n\nconst TimeContainer = styled.div`\n display: flex;\n justify-content: center;\n margin-top: 0.5em;\n`;\n\nconst Dash = styled.div`\n margin: 0 0.5em;\n line-height: ${(p) => p.theme.baseHeight}em;\n`;\n\nconst StyledTimePicker = styled(TimePicker)`\n width: 2.5em;\n text-align: center;\n`;\n\nconst timePickerStyle = { style: { width: 'auto' } };\n\nconst createDate = (date: Date, time?: Date | null) => {\n const d = new Date(0);\n d.setFullYear(date.getFullYear());\n d.setMonth(date.getMonth());\n d.setDate(date.getDate());\n d.setHours(0);\n d.setMinutes(0);\n if (time) {\n d.setHours(time.getHours());\n d.setMinutes(time.getMinutes());\n }\n return d;\n};\n\n/**\n * The component to choose a date.\n */\nconst DatePicker = forwardRef<HTMLDivElement, DatePickerProps>(\n (\n {\n left,\n leftHasPadding = false,\n right,\n rightHasPadding = false,\n placeholder,\n disabled = false,\n autoFocus = false,\n autoOpen = false,\n format,\n firstDayOfWeek = 'sunday',\n locale = defaultLocale,\n showTime = false,\n timeNotation = '12-hour',\n range = false,\n value,\n defaultValue,\n onChange,\n onClose = () => {},\n onBlur = () => {},\n size,\n ...rest\n },\n ref\n ) => {\n const [containerRef, mergedContainerRef] = useForwardedRef(ref);\n const [opened, setOpened] = useState(autoOpen);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [forwardedValue, setForwardedValue] = useForwardedState<any>({\n value,\n defaultValue,\n onChange,\n });\n\n useEffect(() => {\n if (autoFocus) containerRef.current?.focus();\n }, [autoFocus, containerRef]);\n\n const onCloseRef = useRef(onClose);\n useEffect(() => {\n onCloseRef.current = onClose;\n }, [onClose]);\n\n useEffect(() => {\n if (!opened) {\n onCloseRef.current();\n containerRef.current?.focus();\n }\n }, [containerRef, opened]);\n\n const formattedValue = useFormattedValue({\n forwardedValue,\n format,\n showTime,\n timeNotation,\n });\n\n const closeHandler = useCallback(() => {\n setOpened(false);\n }, []);\n\n useKeyPress(\n (typeof window !== 'undefined' ? window : undefined) as EventTarget,\n 'Escape',\n closeHandler\n );\n const isMinXs = useIsMinWidth('xs');\n\n const blurHandler = useCallback(\n (e) => {\n if (!opened) onBlur(e);\n },\n [onBlur, opened]\n );\n\n const valueIsSpecified = useMemo(\n () => formattedValue !== undefined && formattedValue !== null,\n [formattedValue]\n );\n\n const rightHasPaddingValue = useMemo(() => {\n if (valueIsSpecified) return false;\n return right ? rightHasPadding : true;\n }, [right, rightHasPadding, valueIsSpecified]);\n\n const rightValue = useMemo(() => {\n if (valueIsSpecified) {\n return (\n <div aria-hidden>\n <Button\n type='ghost'\n wide='never'\n size='small'\n disabled={disabled}\n onClick={(e) => {\n setForwardedValue(null);\n e.stopPropagation();\n }}\n onKeyDown={(e) => {\n if (disabled) return;\n if (['Enter', ' '].includes(e.key)) {\n setForwardedValue(null);\n if (!containerRef.current) return;\n containerRef.current.focus();\n e.preventDefault();\n e.stopPropagation();\n }\n }}\n aria-label={locale.clearLabel}\n >\n <ClearIcon />\n </Button>\n </div>\n );\n }\n return (\n right || (\n <ToggleIconContainer>\n {opened ? <Up /> : <Down />}\n </ToggleIconContainer>\n )\n );\n }, [\n containerRef,\n disabled,\n locale.clearLabel,\n opened,\n right,\n setForwardedValue,\n valueIsSpecified,\n ]);\n\n const firstTimePickerRef = useRef<HTMLInputElement>(null);\n const secondTimePickerRef = useRef<HTMLInputElement>(null);\n const rangeStartedRef = useRef(false);\n\n useEffect(() => {\n rangeStartedRef.current = false;\n }, [opened]);\n\n const changeHandler = useCallback(\n (date: Date) => {\n setForwardedValue((prev) => {\n if (!range) return createDate(date, prev);\n\n const d = createDate(date);\n const nextValue =\n prev && Array.isArray(prev) && rangeStartedRef.current\n ? [new Date(prev[0].getTime()), createDate(date, prev[1])]\n : [d, d];\n\n rangeStartedRef.current = !rangeStartedRef.current;\n return nextValue.sort(\n (a: Date, b: Date) => a.getTime() - b.getTime()\n );\n });\n },\n [range, setForwardedValue]\n );\n\n const calendarComponent = useMemo(\n () => (\n <DatePickerCalendar\n firstDayOfWeek={firstDayOfWeek}\n locale={locale}\n value={forwardedValue}\n onSelect={(v) => {\n changeHandler(v);\n firstTimePickerRef.current?.focus();\n if (!showTime && (!range || !rangeStartedRef.current)) {\n closeHandler();\n }\n }}\n />\n ),\n [\n changeHandler,\n closeHandler,\n firstDayOfWeek,\n forwardedValue,\n locale,\n range,\n showTime,\n ]\n );\n\n const tabOnInputComplete = useCallback(\n (e) => {\n if (e.target.selectionStart < 5) return;\n secondTimePickerRef.current?.focus();\n setForwardedValue(([from]) => {\n const nextTo = new Date(from.getTime());\n nextTo.setHours(nextTo.getHours() + 1);\n return [from, nextTo];\n });\n },\n [setForwardedValue]\n );\n\n const closeOnInputComplete = useCallback(\n (e) => {\n if (e.target.selectionStart < 5) return;\n closeHandler();\n },\n [closeHandler]\n );\n\n const timeComponent = useMemo(\n () =>\n showTime && forwardedValue ? (\n <TimeContainer>\n {Array.isArray(forwardedValue) ? (\n <>\n <StyledTimePicker\n ref={firstTimePickerRef}\n autoFocus\n disabled={disabled}\n notation={timeNotation}\n containerProps={timePickerStyle}\n value={forwardedValue[0]}\n onChange={(v) => setForwardedValue([v, forwardedValue[1]])}\n onKeyDown={(e) => {\n if (disabled) return;\n if (e.key === 'Enter') {\n setOpened(!opened);\n }\n }}\n onKeyUp={tabOnInputComplete}\n />\n <Dash>–</Dash>\n <StyledTimePicker\n ref={secondTimePickerRef}\n disabled={disabled}\n notation={timeNotation}\n containerProps={timePickerStyle}\n value={forwardedValue[1]}\n onChange={(v) => setForwardedValue([forwardedValue[0], v])}\n onKeyDown={(e) => {\n if (disabled) return;\n if (e.key === 'Enter') {\n setOpened(!opened);\n }\n }}\n onKeyUp={closeOnInputComplete}\n />\n </>\n ) : (\n <StyledTimePicker\n ref={firstTimePickerRef}\n autoFocus\n disabled={disabled}\n notation={timeNotation}\n containerProps={timePickerStyle}\n value={forwardedValue}\n onChange={setForwardedValue}\n onKeyDown={(e) => {\n if (disabled) return;\n if (e.key === 'Enter') {\n setOpened(!opened);\n }\n }}\n onKeyUp={closeOnInputComplete}\n />\n )}\n </TimeContainer>\n ) : null,\n [\n closeOnInputComplete,\n disabled,\n forwardedValue,\n opened,\n setForwardedValue,\n showTime,\n tabOnInputComplete,\n timeNotation,\n ]\n );\n\n return (\n <>\n <SelectContainer\n opened={opened}\n disabled={disabled}\n size={size}\n tabIndex={!disabled ? 0 : -1}\n onClick={() => {\n if (disabled) return;\n setOpened(!opened);\n }}\n onKeyDown={(e) => {\n if (disabled) return;\n if (['Enter', ' '].includes(e.key)) {\n setOpened(!opened);\n e.preventDefault();\n }\n }}\n onMouseDown={(e) => e.preventDefault()}\n onBlur={blurHandler}\n role='combobox'\n aria-label={\n forwardedValue\n ? getAccessibilityDateLabel(forwardedValue, locale)\n : undefined\n }\n aria-disabled={disabled}\n {...rest}\n ref={mergedContainerRef}\n >\n {left && (\n <ThemeOverrider\n overrides={(t) => ({\n buttonPaddingHorizontal: 0.8,\n baseHeight: t.selectToggleListItemHeight / t.sizes.small,\n })}\n >\n <ToggleLeftAddon hasPadding={leftHasPadding}>\n {left}\n </ToggleLeftAddon>\n </ThemeOverrider>\n )}\n\n <ToggleContent hasLeft={!!left} hasRight={!!right}>\n {valueIsSpecified ? (\n <Title disabled={disabled} aria-hidden>\n {formattedValue}\n </Title>\n ) : (\n <Placeholder>{placeholder}</Placeholder>\n )}\n </ToggleContent>\n\n {rightValue && (\n <ThemeOverrider\n overrides={(t) => ({\n buttonPaddingHorizontal: 0.8,\n baseHeight: t.selectToggleListItemHeight / t.sizes.small,\n })}\n >\n <ToggleRightAddon hasPadding={rightHasPaddingValue}>\n {rightValue}\n </ToggleRightAddon>\n </ThemeOverrider>\n )}\n </SelectContainer>\n\n {isMinXs ? (\n <StyledPopover\n trigger={containerRef}\n placement='bottom-start'\n visible={opened}\n onClose={closeHandler}\n size={size}\n >\n {calendarComponent}\n {timeComponent}\n </StyledPopover>\n ) : (\n <Modal\n title={placeholder}\n header={null}\n footer={null}\n visible={opened}\n onClose={closeHandler}\n size={size}\n >\n {calendarComponent}\n {timeComponent}\n </Modal>\n )}\n </>\n );\n }\n);\n\nDatePicker.displayName = 'DatePicker';\n\nexport default DatePicker;\n"],"mappings":";AAAA,OAAOA,MAAM,MAAM,iBAAiB;AACpC,SAEEC,aAAa,EACbC,yBAAyB,EACzBC,iBAAiB,QACZ,8BAA8B;AACrC,SAASC,IAAI,EAAEC,EAAE,QAAQ,kBAAkB;AAC3C,SAASC,aAAa,QAAQ,kBAAkB;AAEhD,SAASC,cAAc,QAAQ,oBAAoB;AACnD,SACEC,eAAe,EACfC,iBAAiB,EACjBC,WAAW,QACN,kBAAkB;AACzB,OAAOC,KAAK,IACVC,UAAU,EACVC,WAAW,EACXC,SAAS,EACTC,OAAO,EACPC,MAAM,EACNC,QAAQ,QACH,OAAO;AACd,OAAOC,MAAM,MAAM,WAAW;AAC9B,OAAOC,KAAK,MAAM,UAAU;AAC5B,OAAOC,OAAO,MAAM,YAAY;AAChC,SACEC,SAAS,EACTC,eAAe,EACfC,WAAW,EACXC,gBAAgB,EAChBC,eAAe,EACfC,KAAK,EACLC,aAAa,EACbC,mBAAmB,QACd,WAAW;AAClB,OAAOC,UAAU,MAAM,eAAe;AACtC,OAAOC,kBAAkB,MAAM,sBAAsB;AAgHrD,MAAMC,aAAa,GAAG/B,MAAM,CAACoB,OAAO,CAAE;AACtC,aAAcY,CAAC,IAAKA,CAAC,CAACC,KAAK,CAACC,iBAAkB;AAC9C,CAAC;AAED,MAAMC,aAAa,GAAGnC,MAAM,CAACoC,GAAI;AACjC;AACA;AACA;AACA,CAAC;AAED,MAAMC,IAAI,GAAGrC,MAAM,CAACoC,GAAI;AACxB;AACA,iBAAkBJ,CAAC,IAAKA,CAAC,CAACC,KAAK,CAACK,UAAW;AAC3C,CAAC;AAED,MAAMC,gBAAgB,GAAGvC,MAAM,CAAC6B,UAAU,CAAE;AAC5C;AACA;AACA,CAAC;AAED,MAAMW,eAAe,GAAG;EAAEC,KAAK,EAAE;IAAEC,KAAK,EAAE;EAAO;AAAE,CAAC;AAEpD,MAAMC,UAAU,GAAG,CAACC,IAAU,EAAEC,IAAkB,KAAK;EACrD,MAAMC,CAAC,GAAG,IAAIC,IAAI,CAAC,CAAC,CAAC;EACrBD,CAAC,CAACE,WAAW,CAACJ,IAAI,CAACK,WAAW,EAAE,CAAC;EACjCH,CAAC,CAACI,QAAQ,CAACN,IAAI,CAACO,QAAQ,EAAE,CAAC;EAC3BL,CAAC,CAACM,OAAO,CAACR,IAAI,CAACS,OAAO,EAAE,CAAC;EACzBP,CAAC,CAACQ,QAAQ,CAAC,CAAC,CAAC;EACbR,CAAC,CAACS,UAAU,CAAC,CAAC,CAAC;EACf,IAAIV,IAAI,EAAE;IACRC,CAAC,CAACQ,QAAQ,CAACT,IAAI,CAACW,QAAQ,EAAE,CAAC;IAC3BV,CAAC,CAACS,UAAU,CAACV,IAAI,CAACY,UAAU,EAAE,CAAC;EACjC;EACA,OAAOX,CAAC;AACV,CAAC;;AAED;AACA;AACA;AACA,MAAMY,UAAU,gBAAG9C,UAAU,CAC3B,CACE;EACE+C,IAAI;EACJC,cAAc,GAAG,KAAK;EACtBC,KAAK;EACLC,eAAe,GAAG,KAAK;EACvBC,WAAW;EACXC,QAAQ,GAAG,KAAK;EAChBC,SAAS,GAAG,KAAK;EACjBC,QAAQ,GAAG,KAAK;EAChBC,MAAM;EACNC,cAAc,GAAG,QAAQ;EACzBC,MAAM,GAAGpE,aAAa;EACtBqE,QAAQ,GAAG,KAAK;EAChBC,YAAY,GAAG,SAAS;EACxBC,KAAK,GAAG,KAAK;EACbC,KAAK;EACLC,YAAY;EACZC,QAAQ;EACRC,OAAO,GAAG,MAAM,CAAC,CAAC;EAClBC,MAAM,GAAG,MAAM,CAAC,CAAC;EACjBC,IAAI;EACJ,GAAGC;AACL,CAAC,EACDC,GAAG,KACA;EACH,MAAM,CAACC,YAAY,EAAEC,kBAAkB,CAAC,GAAG1E,eAAe,CAACwE,GAAG,CAAC;EAC/D,MAAM,CAACG,MAAM,EAAEC,SAAS,CAAC,GAAGnE,QAAQ,CAACiD,QAAQ,CAAC;EAC9C;EACA,MAAM,CAACmB,cAAc,EAAEC,iBAAiB,CAAC,GAAG7E,iBAAiB,CAAM;IACjEgE,KAAK;IACLC,YAAY;IACZC;EACF,CAAC,CAAC;EAEF7D,SAAS,CAAC,MAAM;IACd,IAAImD,SAAS,EAAEgB,YAAY,CAACM,OAAO,EAAEC,KAAK,EAAE;EAC9C,CAAC,EAAE,CAACvB,SAAS,EAAEgB,YAAY,CAAC,CAAC;EAE7B,MAAMQ,UAAU,GAAGzE,MAAM,CAAC4D,OAAO,CAAC;EAClC9D,SAAS,CAAC,MAAM;IACd2E,UAAU,CAACF,OAAO,GAAGX,OAAO;EAC9B,CAAC,EAAE,CAACA,OAAO,CAAC,CAAC;EAEb9D,SAAS,CAAC,MAAM;IACd,IAAI,CAACqE,MAAM,EAAE;MACXM,UAAU,CAACF,OAAO,EAAE;MACpBN,YAAY,CAACM,OAAO,EAAEC,KAAK,EAAE;IAC/B;EACF,CAAC,EAAE,CAACP,YAAY,EAAEE,MAAM,CAAC,CAAC;EAE1B,MAAMO,cAAc,GAAGvF,iBAAiB,CAAC;IACvCkF,cAAc;IACdlB,MAAM;IACNG,QAAQ;IACRC;EACF,CAAC,CAAC;EAEF,MAAMoB,YAAY,GAAG9E,WAAW,CAAC,MAAM;IACrCuE,SAAS,CAAC,KAAK,CAAC;EAClB,CAAC,EAAE,EAAE,CAAC;EAEN1E,WAAW,CACR,OAAOkF,MAAM,KAAK,WAAW,GAAGA,MAAM,GAAGC,SAAS,EACnD,QAAQ,EACRF,YAAY,CACb;EACD,MAAMG,OAAO,GAAGxF,aAAa,CAAC,IAAI,CAAC;EAEnC,MAAMyF,WAAW,GAAGlF,WAAW,CAC5BmF,CAAC,IAAK;IACL,IAAI,CAACb,MAAM,EAAEN,MAAM,CAACmB,CAAC,CAAC;EACxB,CAAC,EACD,CAACnB,MAAM,EAAEM,MAAM,CAAC,CACjB;EAED,MAAMc,gBAAgB,GAAGlF,OAAO,CAC9B,MAAM2E,cAAc,KAAKG,SAAS,IAAIH,cAAc,KAAK,IAAI,EAC7D,CAACA,cAAc,CAAC,CACjB;EAED,MAAMQ,oBAAoB,GAAGnF,OAAO,CAAC,MAAM;IACzC,IAAIkF,gBAAgB,EAAE,OAAO,KAAK;IAClC,OAAOpC,KAAK,GAAGC,eAAe,GAAG,IAAI;EACvC,CAAC,EAAE,CAACD,KAAK,EAAEC,eAAe,EAAEmC,gBAAgB,CAAC,CAAC;EAE9C,MAAME,UAAU,GAAGpF,OAAO,CAAC,MAAM;IAC/B,IAAIkF,gBAAgB,EAAE;MACpB,oBACE;QAAK;MAAW,gBACd,oBAAC,MAAM;QACL,IAAI,EAAC,OAAO;QACZ,IAAI,EAAC,OAAO;QACZ,IAAI,EAAC,OAAO;QACZ,QAAQ,EAAEjC,QAAS;QACnB,OAAO,EAAGgC,CAAC,IAAK;UACdV,iBAAiB,CAAC,IAAI,CAAC;UACvBU,CAAC,CAACI,eAAe,EAAE;QACrB,CAAE;QACF,SAAS,EAAGJ,CAAC,IAAK;UAChB,IAAIhC,QAAQ,EAAE;UACd,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAACqC,QAAQ,CAACL,CAAC,CAACM,GAAG,CAAC,EAAE;YAClChB,iBAAiB,CAAC,IAAI,CAAC;YACvB,IAAI,CAACL,YAAY,CAACM,OAAO,EAAE;YAC3BN,YAAY,CAACM,OAAO,CAACC,KAAK,EAAE;YAC5BQ,CAAC,CAACO,cAAc,EAAE;YAClBP,CAAC,CAACI,eAAe,EAAE;UACrB;QACF,CAAE;QACF,cAAY/B,MAAM,CAACmC;MAAW,gBAE9B,oBAAC,SAAS,OAAG,CACN,CACL;IAEV;IACA,OACE3C,KAAK,iBACH,oBAAC,mBAAmB,QACjBsB,MAAM,gBAAG,oBAAC,EAAE,OAAG,gBAAG,oBAAC,IAAI,OAAG,CAE9B;EAEL,CAAC,EAAE,CACDF,YAAY,EACZjB,QAAQ,EACRK,MAAM,CAACmC,UAAU,EACjBrB,MAAM,EACNtB,KAAK,EACLyB,iBAAiB,EACjBW,gBAAgB,CACjB,CAAC;EAEF,MAAMQ,kBAAkB,GAAGzF,MAAM,CAAmB,IAAI,CAAC;EACzD,MAAM0F,mBAAmB,GAAG1F,MAAM,CAAmB,IAAI,CAAC;EAC1D,MAAM2F,eAAe,GAAG3F,MAAM,CAAC,KAAK,CAAC;EAErCF,SAAS,CAAC,MAAM;IACd6F,eAAe,CAACpB,OAAO,GAAG,KAAK;EACjC,CAAC,EAAE,CAACJ,MAAM,CAAC,CAAC;EAEZ,MAAMyB,aAAa,GAAG/F,WAAW,CAC9B+B,IAAU,IAAK;IACd0C,iBAAiB,CAAEuB,IAAI,IAAK;MAC1B,IAAI,CAACrC,KAAK,EAAE,OAAO7B,UAAU,CAACC,IAAI,EAAEiE,IAAI,CAAC;MAEzC,MAAM/D,CAAC,GAAGH,UAAU,CAACC,IAAI,CAAC;MAC1B,MAAMkE,SAAS,GACbD,IAAI,IAAIE,KAAK,CAACC,OAAO,CAACH,IAAI,CAAC,IAAIF,eAAe,CAACpB,OAAO,GAClD,CAAC,IAAIxC,IAAI,CAAC8D,IAAI,CAAC,CAAC,CAAC,CAACI,OAAO,EAAE,CAAC,EAAEtE,UAAU,CAACC,IAAI,EAAEiE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GACxD,CAAC/D,CAAC,EAAEA,CAAC,CAAC;MAEZ6D,eAAe,CAACpB,OAAO,GAAG,CAACoB,eAAe,CAACpB,OAAO;MAClD,OAAOuB,SAAS,CAACI,IAAI,CACnB,CAACC,CAAO,EAAEC,CAAO,KAAKD,CAAC,CAACF,OAAO,EAAE,GAAGG,CAAC,CAACH,OAAO,EAAE,CAChD;IACH,CAAC,CAAC;EACJ,CAAC,EACD,CAACzC,KAAK,EAAEc,iBAAiB,CAAC,CAC3B;EAED,MAAM+B,iBAAiB,GAAGtG,OAAO,CAC/B,mBACE,oBAAC,kBAAkB;IACjB,cAAc,EAAEqD,cAAe;IAC/B,MAAM,EAAEC,MAAO;IACf,KAAK,EAAEgB,cAAe;IACtB,QAAQ,EAAGiC,CAAC,IAAK;MACfV,aAAa,CAACU,CAAC,CAAC;MAChBb,kBAAkB,CAAClB,OAAO,EAAEC,KAAK,EAAE;MACnC,IAAI,CAAClB,QAAQ,KAAK,CAACE,KAAK,IAAI,CAACmC,eAAe,CAACpB,OAAO,CAAC,EAAE;QACrDI,YAAY,EAAE;MAChB;IACF;EAAE,EAEL,EACD,CACEiB,aAAa,EACbjB,YAAY,EACZvB,cAAc,EACdiB,cAAc,EACdhB,MAAM,EACNG,KAAK,EACLF,QAAQ,CACT,CACF;EAED,MAAMiD,kBAAkB,GAAG1G,WAAW,CACnCmF,CAAC,IAAK;IACL,IAAIA,CAAC,CAACwB,MAAM,CAACC,cAAc,GAAG,CAAC,EAAE;IACjCf,mBAAmB,CAACnB,OAAO,EAAEC,KAAK,EAAE;IACpCF,iBAAiB,CAAC,CAAC,CAACoC,IAAI,CAAC,KAAK;MAC5B,MAAMC,MAAM,GAAG,IAAI5E,IAAI,CAAC2E,IAAI,CAACT,OAAO,EAAE,CAAC;MACvCU,MAAM,CAACrE,QAAQ,CAACqE,MAAM,CAACnE,QAAQ,EAAE,GAAG,CAAC,CAAC;MACtC,OAAO,CAACkE,IAAI,EAAEC,MAAM,CAAC;IACvB,CAAC,CAAC;EACJ,CAAC,EACD,CAACrC,iBAAiB,CAAC,CACpB;EAED,MAAMsC,oBAAoB,GAAG/G,WAAW,CACrCmF,CAAC,IAAK;IACL,IAAIA,CAAC,CAACwB,MAAM,CAACC,cAAc,GAAG,CAAC,EAAE;IACjC9B,YAAY,EAAE;EAChB,CAAC,EACD,CAACA,YAAY,CAAC,CACf;EAED,MAAMkC,aAAa,GAAG9G,OAAO,CAC3B,MACEuD,QAAQ,IAAIe,cAAc,gBACxB,oBAAC,aAAa,QACX0B,KAAK,CAACC,OAAO,CAAC3B,cAAc,CAAC,gBAC5B,uDACE,oBAAC,gBAAgB;IACf,GAAG,EAAEoB,kBAAmB;IACxB,SAAS;IACT,QAAQ,EAAEzC,QAAS;IACnB,QAAQ,EAAEO,YAAa;IACvB,cAAc,EAAE/B,eAAgB;IAChC,KAAK,EAAE6C,cAAc,CAAC,CAAC,CAAE;IACzB,QAAQ,EAAGiC,CAAC,IAAKhC,iBAAiB,CAAC,CAACgC,CAAC,EAAEjC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAE;IAC3D,SAAS,EAAGW,CAAC,IAAK;MAChB,IAAIhC,QAAQ,EAAE;MACd,IAAIgC,CAAC,CAACM,GAAG,KAAK,OAAO,EAAE;QACrBlB,SAAS,CAAC,CAACD,MAAM,CAAC;MACpB;IACF,CAAE;IACF,OAAO,EAAEoC;EAAmB,EAC5B,eACF,oBAAC,IAAI,iBAAS,eACd,oBAAC,gBAAgB;IACf,GAAG,EAAEb,mBAAoB;IACzB,QAAQ,EAAE1C,QAAS;IACnB,QAAQ,EAAEO,YAAa;IACvB,cAAc,EAAE/B,eAAgB;IAChC,KAAK,EAAE6C,cAAc,CAAC,CAAC,CAAE;IACzB,QAAQ,EAAGiC,CAAC,IAAKhC,iBAAiB,CAAC,CAACD,cAAc,CAAC,CAAC,CAAC,EAAEiC,CAAC,CAAC,CAAE;IAC3D,SAAS,EAAGtB,CAAC,IAAK;MAChB,IAAIhC,QAAQ,EAAE;MACd,IAAIgC,CAAC,CAACM,GAAG,KAAK,OAAO,EAAE;QACrBlB,SAAS,CAAC,CAACD,MAAM,CAAC;MACpB;IACF,CAAE;IACF,OAAO,EAAEyC;EAAqB,EAC9B,CACD,gBAEH,oBAAC,gBAAgB;IACf,GAAG,EAAEnB,kBAAmB;IACxB,SAAS;IACT,QAAQ,EAAEzC,QAAS;IACnB,QAAQ,EAAEO,YAAa;IACvB,cAAc,EAAE/B,eAAgB;IAChC,KAAK,EAAE6C,cAAe;IACtB,QAAQ,EAAEC,iBAAkB;IAC5B,SAAS,EAAGU,CAAC,IAAK;MAChB,IAAIhC,QAAQ,EAAE;MACd,IAAIgC,CAAC,CAACM,GAAG,KAAK,OAAO,EAAE;QACrBlB,SAAS,CAAC,CAACD,MAAM,CAAC;MACpB;IACF,CAAE;IACF,OAAO,EAAEyC;EAAqB,EAEjC,CACa,GACd,IAAI,EACV,CACEA,oBAAoB,EACpB5D,QAAQ,EACRqB,cAAc,EACdF,MAAM,EACNG,iBAAiB,EACjBhB,QAAQ,EACRiD,kBAAkB,EAClBhD,YAAY,CACb,CACF;EAED,oBACE,uDACE,oBAAC,eAAe;IACd,MAAM,EAAEY,MAAO;IACf,QAAQ,EAAEnB,QAAS;IACnB,IAAI,EAAEc,IAAK;IACX,QAAQ,EAAE,CAACd,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAE;IAC7B,OAAO,EAAE,MAAM;MACb,IAAIA,QAAQ,EAAE;MACdoB,SAAS,CAAC,CAACD,MAAM,CAAC;IACpB,CAAE;IACF,SAAS,EAAGa,CAAC,IAAK;MAChB,IAAIhC,QAAQ,EAAE;MACd,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAACqC,QAAQ,CAACL,CAAC,CAACM,GAAG,CAAC,EAAE;QAClClB,SAAS,CAAC,CAACD,MAAM,CAAC;QAClBa,CAAC,CAACO,cAAc,EAAE;MACpB;IACF,CAAE;IACF,WAAW,EAAGP,CAAC,IAAKA,CAAC,CAACO,cAAc,EAAG;IACvC,MAAM,EAAER,WAAY;IACpB,IAAI,EAAC,UAAU;IACf,cACEV,cAAc,GACVnF,yBAAyB,CAACmF,cAAc,EAAEhB,MAAM,CAAC,GACjDwB,SACL;IACD,iBAAe7B;EAAS,GACpBe,IAAI;IACR,GAAG,EAAEG;EAAmB,IAEvBvB,IAAI,iBACH,oBAAC,cAAc;IACb,SAAS,EAAGmE,CAAC,KAAM;MACjBC,uBAAuB,EAAE,GAAG;MAC5BzF,UAAU,EAAEwF,CAAC,CAACE,0BAA0B,GAAGF,CAAC,CAACG,KAAK,CAACC;IACrD,CAAC;EAAE,gBAEH,oBAAC,eAAe;IAAC,UAAU,EAAEtE;EAAe,GACzCD,IAAI,CACW,CAErB,eAED,oBAAC,aAAa;IAAC,OAAO,EAAE,CAAC,CAACA,IAAK;IAAC,QAAQ,EAAE,CAAC,CAACE;EAAM,GAC/CoC,gBAAgB,gBACf,oBAAC,KAAK;IAAC,QAAQ,EAAEjC,QAAS;IAAC;EAAW,GACnC0B,cAAc,CACT,gBAER,oBAAC,WAAW,QAAE3B,WAAW,CAC1B,CACa,EAEfoC,UAAU,iBACT,oBAAC,cAAc;IACb,SAAS,EAAG2B,CAAC,KAAM;MACjBC,uBAAuB,EAAE,GAAG;MAC5BzF,UAAU,EAAEwF,CAAC,CAACE,0BAA0B,GAAGF,CAAC,CAACG,KAAK,CAACC;IACrD,CAAC;EAAE,gBAEH,oBAAC,gBAAgB;IAAC,UAAU,EAAEhC;EAAqB,GAChDC,UAAU,CACM,CAEtB,CACe,EAEjBL,OAAO,gBACN,oBAAC,aAAa;IACZ,OAAO,EAAEb,YAAa;IACtB,SAAS,EAAC,cAAc;IACxB,OAAO,EAAEE,MAAO;IAChB,OAAO,EAAEQ,YAAa;IACtB,IAAI,EAAEb;EAAK,GAEVuC,iBAAiB,EACjBQ,aAAa,CACA,gBAEhB,oBAAC,KAAK;IACJ,KAAK,EAAE9D,WAAY;IACnB,MAAM,EAAE,IAAK;IACb,MAAM,EAAE,IAAK;IACb,OAAO,EAAEoB,MAAO;IAChB,OAAO,EAAEQ,YAAa;IACtB,IAAI,EAAEb;EAAK,GAEVuC,iBAAiB,EACjBQ,aAAa,CAEjB,CACA;AAEP,CAAC,CACF;AAEDnE,UAAU,CAACyE,WAAW,GAAG,YAAY;AAErC,eAAezE,UAAU"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePopoverPosition.js","names":["useMemo","useFontSize","popoverPositionGetters","rectKey","sizeKey","windowSizeKey","windowOffsetKey","fitToWindow","start","elementRect","popoverRect","popoverStart","windowStart","window","windowEnd","elementStart","elementEnd","popoverEnd","before","options","gap","flip","afterPopoverStart","after","afterPopoverEnd","diffStart","diffEnd","beforePopoverStart","end","center","getPopoverPosition","top","left","placementPositionKeysMap","bottom","right","usePopoverPosition","placement","bodyFontSize","document","body","gapPx","positionKeys"],"sources":["../../../../src/Popover/utils/usePopoverPosition.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { useFontSize } from '@os-design/utils';\n\nexport type Placement =\n | 'top'\n | 'bottom'\n | 'left'\n | 'right'\n | 'top-start'\n | 'top-end'\n | 'bottom-start'\n | 'bottom-end'\n | 'left-start'\n | 'left-end'\n | 'right-start'\n | 'right-end';\n\nexport interface Rect {\n top: number;\n left: number;\n width: number;\n height: number;\n}\n\ninterface UsePopoverPositionProps {\n /**\n * The rect of the element.\n */\n elementRect: Rect;\n /**\n * The rect of the popover.\n */\n popoverRect: Rect;\n /**\n * On which side of the element the popover will appear.\n * @default top\n */\n placement?: Placement;\n /**\n * The gap between the element and the popover in em.\n * @default 0.5\n */\n gap?: number;\n /**\n * Whether to flip the popover if it does not fit in the window.\n * @default true\n */\n flip?: boolean;\n}\n\ninterface PopoverPositionGetterOptions {\n elementRect: Rect;\n popoverRect: Rect;\n gap: number;\n flip: boolean;\n}\ntype PositionKeys = 'before' | 'after' | 'start' | 'end' | 'center';\ntype PopoverPositionGetterFn = (\n options: PopoverPositionGetterOptions\n) => number;\ntype PopoverPositionGetters = Record<PositionKeys, PopoverPositionGetterFn>;\ntype FitToWindow = Pick<\n PopoverPositionGetterOptions,\n 'elementRect' | 'popoverRect'\n>;\n\nconst popoverPositionGetters = (\n rectKey: 'top' | 'left'\n): PopoverPositionGetters => {\n const sizeKey = rectKey === 'top' ? 'height' : 'width';\n const windowSizeKey = rectKey === 'top' ? 'innerHeight' : 'innerWidth';\n const windowOffsetKey = rectKey === 'top' ? 'pageYOffset' : 'pageXOffset';\n\n const fitToWindow = (\n start: number,\n { elementRect, popoverRect }: FitToWindow\n ): number => {\n let popoverStart = start;\n const windowStart = window[windowOffsetKey];\n const windowEnd = windowStart + window[windowSizeKey];\n const elementStart = windowStart + elementRect[rectKey];\n const elementEnd = elementStart + elementRect[sizeKey];\n const popoverEnd = popoverStart + popoverRect[sizeKey];\n\n // Fit the popover to the end of the window\n if (popoverEnd > windowEnd) {\n if (elementEnd < windowEnd)\n popoverStart = windowEnd - popoverRect[sizeKey];\n else if (popoverRect[sizeKey] > elementRect[sizeKey])\n popoverStart = elementEnd - popoverRect[sizeKey];\n else if (windowEnd - elementStart > popoverRect[sizeKey])\n popoverStart = windowEnd - popoverRect[sizeKey];\n else popoverStart = elementStart;\n }\n\n // Fit the popover to the beginning of the window\n if (popoverStart < windowStart) {\n if (elementStart > windowStart) popoverStart = windowStart;\n else if (popoverRect[sizeKey] > elementRect[sizeKey])\n popoverStart = elementStart;\n else if (elementEnd - windowStart > popoverRect[sizeKey])\n popoverStart = windowStart;\n else popoverStart = elementEnd - popoverRect[sizeKey];\n }\n\n return popoverStart;\n };\n\n return {\n before(options) {\n const { elementRect, popoverRect, gap, flip } = options;\n const windowStart = window[windowOffsetKey];\n const windowEnd = windowStart + window[windowSizeKey];\n const elementStart = windowStart + elementRect[rectKey];\n const popoverStart = elementStart - popoverRect[sizeKey] - gap;\n if (flip && popoverStart < windowStart) {\n const afterPopoverStart = this.after({ ...options, flip: false });\n const afterPopoverEnd = afterPopoverStart + popoverRect[sizeKey];\n const diffStart = windowStart - popoverStart;\n const diffEnd = afterPopoverEnd - windowEnd;\n if (afterPopoverEnd <= windowEnd || diffStart > diffEnd)\n return afterPopoverStart;\n }\n return popoverStart;\n },\n after(options) {\n const { elementRect, popoverRect, gap, flip } = options;\n const windowStart = window[windowOffsetKey];\n const windowEnd = windowStart + window[windowSizeKey];\n const elementStart = windowStart + elementRect[rectKey];\n const elementEnd = elementStart + elementRect[sizeKey];\n const popoverStart = elementEnd + gap;\n const popoverEnd = popoverStart + popoverRect[sizeKey];\n if (flip && popoverEnd > windowEnd) {\n const beforePopoverStart = this.before({ ...options, flip: false });\n const diffStart = windowStart - beforePopoverStart;\n const diffEnd = popoverEnd - windowEnd;\n if (beforePopoverStart >= windowStart || diffEnd > diffStart)\n return beforePopoverStart;\n }\n return popoverStart;\n },\n start: ({ elementRect, popoverRect }) => {\n const windowStart = window[windowOffsetKey];\n const elementStart = windowStart + elementRect[rectKey];\n return fitToWindow(elementStart, { elementRect, popoverRect });\n },\n end: ({ elementRect, popoverRect }) => {\n const windowStart = window[windowOffsetKey];\n const elementStart = windowStart + elementRect[rectKey];\n const elementEnd = elementStart + elementRect[sizeKey];\n const popoverStart = elementEnd - popoverRect[sizeKey];\n return fitToWindow(popoverStart, { elementRect, popoverRect });\n },\n center: ({ elementRect, popoverRect }) => {\n const windowStart = window[windowOffsetKey];\n const elementStart = windowStart + elementRect[rectKey];\n const popoverStart =\n elementStart + (elementRect[sizeKey] - popoverRect[sizeKey]) / 2;\n return fitToWindow(popoverStart, { elementRect, popoverRect });\n },\n };\n};\n\nconst getPopoverPosition = (\n top: PositionKeys,\n left: PositionKeys,\n options: PopoverPositionGetterOptions\n) => ({\n top: popoverPositionGetters('top')[top](options),\n left: popoverPositionGetters('left')[left](options),\n});\n\ntype PlacementPositionKeysMap = Record<Placement, [PositionKeys, PositionKeys]>;\nconst placementPositionKeysMap: PlacementPositionKeysMap = {\n top: ['before', 'center'],\n bottom: ['after', 'center'],\n left: ['center', 'before'],\n right: ['center', 'after'],\n 'top-start': ['before', 'start'],\n 'top-end': ['before', 'end'],\n 'bottom-start': ['after', 'start'],\n 'bottom-end': ['after', 'end'],\n 'left-start': ['start', 'before'],\n 'left-end': ['end', 'before'],\n 'right-start': ['start', 'after'],\n 'right-end': ['end', 'after'],\n};\n\ninterface PopoverPosition {\n top: number;\n left: number;\n}\n\n/**\n * Computes the position of the popover.\n * Note that you must change the elementRect when the scroll and resize events of the parent scrollable container occur.\n * In most cases, it will be the window.\n */\nconst usePopoverPosition = ({\n elementRect,\n popoverRect,\n placement = 'top',\n gap = 0.5,\n flip = true,\n}: UsePopoverPositionProps): PopoverPosition => {\n const bodyFontSize = useFontSize(document.body);\n const gapPx = useMemo(() => gap * bodyFontSize, [gap, bodyFontSize]);\n\n const positionKeys = useMemo(() => {\n if (typeof placement === 'string' && !!placementPositionKeysMap[placement])\n return placementPositionKeysMap[placement];\n return placementPositionKeysMap.top;\n }, [placement]);\n\n return getPopoverPosition(...positionKeys, {\n elementRect,\n popoverRect,\n gap: gapPx,\n flip,\n });\n};\n\nexport default usePopoverPosition;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"usePopoverPosition.js","names":["useMemo","useFontSize","popoverPositionGetters","rectKey","sizeKey","windowSizeKey","windowOffsetKey","fitToWindow","start","elementRect","popoverRect","popoverStart","windowStart","window","windowEnd","elementStart","elementEnd","popoverEnd","before","options","gap","flip","afterPopoverStart","after","afterPopoverEnd","diffStart","diffEnd","beforePopoverStart","end","center","getPopoverPosition","top","left","placementPositionKeysMap","bottom","right","usePopoverPosition","placement","bodyFontSize","document","body","gapPx","positionKeys"],"sources":["../../../../src/Popover/utils/usePopoverPosition.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { useFontSize } from '@os-design/utils';\n\ntype Side = 'top' | 'left' | 'right' | 'bottom';\ntype Alignment = 'start' | 'end';\ntype AlignedPlacement = `${Side}-${Alignment}`;\n\nexport type Placement = Side | AlignedPlacement;\n\nexport interface Rect {\n top: number;\n left: number;\n width: number;\n height: number;\n}\n\ninterface UsePopoverPositionProps {\n /**\n * The rect of the element.\n */\n elementRect: Rect;\n /**\n * The rect of the popover.\n */\n popoverRect: Rect;\n /**\n * On which side of the element the popover will appear.\n * @default top\n */\n placement?: Placement;\n /**\n * The gap between the element and the popover in em.\n * @default 0.5\n */\n gap?: number;\n /**\n * Whether to flip the popover if it does not fit in the window.\n * @default true\n */\n flip?: boolean;\n}\n\ninterface PopoverPositionGetterOptions {\n elementRect: Rect;\n popoverRect: Rect;\n gap: number;\n flip: boolean;\n}\ntype PositionKeys = 'before' | 'after' | 'start' | 'end' | 'center';\ntype PopoverPositionGetterFn = (\n options: PopoverPositionGetterOptions\n) => number;\ntype PopoverPositionGetters = Record<PositionKeys, PopoverPositionGetterFn>;\ntype FitToWindow = Pick<\n PopoverPositionGetterOptions,\n 'elementRect' | 'popoverRect'\n>;\n\nconst popoverPositionGetters = (\n rectKey: 'top' | 'left'\n): PopoverPositionGetters => {\n const sizeKey = rectKey === 'top' ? 'height' : 'width';\n const windowSizeKey = rectKey === 'top' ? 'innerHeight' : 'innerWidth';\n const windowOffsetKey = rectKey === 'top' ? 'pageYOffset' : 'pageXOffset';\n\n const fitToWindow = (\n start: number,\n { elementRect, popoverRect }: FitToWindow\n ): number => {\n let popoverStart = start;\n const windowStart = window[windowOffsetKey];\n const windowEnd = windowStart + window[windowSizeKey];\n const elementStart = windowStart + elementRect[rectKey];\n const elementEnd = elementStart + elementRect[sizeKey];\n const popoverEnd = popoverStart + popoverRect[sizeKey];\n\n // Fit the popover to the end of the window\n if (popoverEnd > windowEnd) {\n if (elementEnd < windowEnd)\n popoverStart = windowEnd - popoverRect[sizeKey];\n else if (popoverRect[sizeKey] > elementRect[sizeKey])\n popoverStart = elementEnd - popoverRect[sizeKey];\n else if (windowEnd - elementStart > popoverRect[sizeKey])\n popoverStart = windowEnd - popoverRect[sizeKey];\n else popoverStart = elementStart;\n }\n\n // Fit the popover to the beginning of the window\n if (popoverStart < windowStart) {\n if (elementStart > windowStart) popoverStart = windowStart;\n else if (popoverRect[sizeKey] > elementRect[sizeKey])\n popoverStart = elementStart;\n else if (elementEnd - windowStart > popoverRect[sizeKey])\n popoverStart = windowStart;\n else popoverStart = elementEnd - popoverRect[sizeKey];\n }\n\n return popoverStart;\n };\n\n return {\n before(options) {\n const { elementRect, popoverRect, gap, flip } = options;\n const windowStart = window[windowOffsetKey];\n const windowEnd = windowStart + window[windowSizeKey];\n const elementStart = windowStart + elementRect[rectKey];\n const popoverStart = elementStart - popoverRect[sizeKey] - gap;\n if (flip && popoverStart < windowStart) {\n const afterPopoverStart = this.after({ ...options, flip: false });\n const afterPopoverEnd = afterPopoverStart + popoverRect[sizeKey];\n const diffStart = windowStart - popoverStart;\n const diffEnd = afterPopoverEnd - windowEnd;\n if (afterPopoverEnd <= windowEnd || diffStart > diffEnd)\n return afterPopoverStart;\n }\n return popoverStart;\n },\n after(options) {\n const { elementRect, popoverRect, gap, flip } = options;\n const windowStart = window[windowOffsetKey];\n const windowEnd = windowStart + window[windowSizeKey];\n const elementStart = windowStart + elementRect[rectKey];\n const elementEnd = elementStart + elementRect[sizeKey];\n const popoverStart = elementEnd + gap;\n const popoverEnd = popoverStart + popoverRect[sizeKey];\n if (flip && popoverEnd > windowEnd) {\n const beforePopoverStart = this.before({ ...options, flip: false });\n const diffStart = windowStart - beforePopoverStart;\n const diffEnd = popoverEnd - windowEnd;\n if (beforePopoverStart >= windowStart || diffEnd > diffStart)\n return beforePopoverStart;\n }\n return popoverStart;\n },\n start: ({ elementRect, popoverRect }) => {\n const windowStart = window[windowOffsetKey];\n const elementStart = windowStart + elementRect[rectKey];\n return fitToWindow(elementStart, { elementRect, popoverRect });\n },\n end: ({ elementRect, popoverRect }) => {\n const windowStart = window[windowOffsetKey];\n const elementStart = windowStart + elementRect[rectKey];\n const elementEnd = elementStart + elementRect[sizeKey];\n const popoverStart = elementEnd - popoverRect[sizeKey];\n return fitToWindow(popoverStart, { elementRect, popoverRect });\n },\n center: ({ elementRect, popoverRect }) => {\n const windowStart = window[windowOffsetKey];\n const elementStart = windowStart + elementRect[rectKey];\n const popoverStart =\n elementStart + (elementRect[sizeKey] - popoverRect[sizeKey]) / 2;\n return fitToWindow(popoverStart, { elementRect, popoverRect });\n },\n };\n};\n\nconst getPopoverPosition = (\n top: PositionKeys,\n left: PositionKeys,\n options: PopoverPositionGetterOptions\n) => ({\n top: popoverPositionGetters('top')[top](options),\n left: popoverPositionGetters('left')[left](options),\n});\n\ntype PlacementPositionKeysMap = Record<Placement, [PositionKeys, PositionKeys]>;\nconst placementPositionKeysMap: PlacementPositionKeysMap = {\n top: ['before', 'center'],\n bottom: ['after', 'center'],\n left: ['center', 'before'],\n right: ['center', 'after'],\n 'top-start': ['before', 'start'],\n 'top-end': ['before', 'end'],\n 'bottom-start': ['after', 'start'],\n 'bottom-end': ['after', 'end'],\n 'left-start': ['start', 'before'],\n 'left-end': ['end', 'before'],\n 'right-start': ['start', 'after'],\n 'right-end': ['end', 'after'],\n};\n\ninterface PopoverPosition {\n top: number;\n left: number;\n}\n\n/**\n * Computes the position of the popover.\n * Note that you must change the elementRect when the scroll and resize events of the parent scrollable container occur.\n * In most cases, it will be the window.\n */\nconst usePopoverPosition = ({\n elementRect,\n popoverRect,\n placement = 'top',\n gap = 0.5,\n flip = true,\n}: UsePopoverPositionProps): PopoverPosition => {\n const bodyFontSize = useFontSize(document.body);\n const gapPx = useMemo(() => gap * bodyFontSize, [gap, bodyFontSize]);\n\n const positionKeys = useMemo(() => {\n if (typeof placement === 'string' && !!placementPositionKeysMap[placement])\n return placementPositionKeysMap[placement];\n return placementPositionKeysMap.top;\n }, [placement]);\n\n return getPopoverPosition(...positionKeys, {\n elementRect,\n popoverRect,\n gap: gapPx,\n flip,\n });\n};\n\nexport default usePopoverPosition;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["css","styled","Close","CloseCircle","Down","Loading","Up","m","useIsMinWidth","ellipsisStyles","resetButtonStyles","transitionStyles","clr","ThemeOverrider","useTheme","omitEmotionProps","useBrowserLayoutEffect","useEvent","useFontSize","useForwardedRef","useForwardedState","useResizeObserver","useSize","React","forwardRef","useCallback","useEffect","useMemo","useRef","useState","FixedSizeList","Button","InputContainer","InputSearch","useRWLoadNext","Menu","MenuItem","Tag","defaultLocale","selectContainerPaddingStyles","p","paddingVertical","theme","baseHeight","selectToggleListItemHeight","selectContainerOpenedStyles","opened","unbordered","inputFocusColorBorder","inputFocusColorShadow","selectContainerUnborderedStyles","selectContainerUnborderedHoverStyles","disabled","buttonGhostColorBgHover","SelectContainer","SelectMenu","min","xs","width","NotFound","div","menuItemHeight","inputPaddingHorizontal","selectNotFoundColorText","InputSearchContainer","menuPaddingVertical","ToggleContainer","toggleContentNotHasLeftStyles","hasLeft","toggleContentNotHasRightStyles","hasRight","ToggleContent","Placeholder","span","inputColorPlaceholder","titleUnborderedTitleStyles","colorPrimary","titleDisabledStyles","inputDisabledColorText","Title","colorText","ToggleListItem","ToggleList","selectToggleListItemGap","DeleteButton","button","selectToggleDeleteButtonColorIcon","selectToggleDeleteButtonColorIconHover","toggleIconUnborderedStyles","ToggleIconContainer","selectColorIcon","ClearIcon","Addon","ToggleLeftAddon","inputAddonPaddingHorizontal","hasPadding","ToggleRightAddon","Select","options","left","leftHasPadding","right","rightHasPadding","placeholder","searchVisible","searchProps","notFoundText","loading","autoFocus","autoOpen","clearVisible","threshold","visibleCount","overscanCount","multiple","maxSelectedItems","locale","value","defaultValue","onChange","onLoadNext","onClose","onBlur","size","placement","rest","ref","containerRef","mergedContainerRef","setWidth","inputSearchContainerRef","setOpened","forwardedValue","setForwardedValue","current","focus","onCloseRef","resizeHandler","window","requestAnimationFrame","nextWidth","getBoundingClientRect","undefined","setAttribute","listBoxId","Math","random","toString","slice","blurHandler","e","onDelete","v","filter","item","toggleContent","length","items","map","option","find","title","stopPropagation","deleteLabel","toggleShowClearButton","toggleOnClear","toggleRightValue","key","clearLabel","toggleRightHasPaddingValue","onSelect","includes","windowSize","isMinXs","fontSize","document","body","scaleFactor","s","sizes","Number","replace","paddingBottom","paddingEm","modalBodyPaddingVertical","paddingTop","searchInputHeight","itemSize","height","maxHeight","modalHeaderHeight","curHeight","count","scrollHandler","itemCount","InnerElement","style","innerElementRest","parseFloat","listItemFn","index","optionTitle","optionValue","onClick","optionOnClick","restOption","top","preventDefault","t","buttonPaddingHorizontal","small","scrollOffset","displayName"],"sources":["../../../src/Select/index.tsx"],"sourcesContent":["import { css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport { Close, CloseCircle, Down, Loading, Up } from '@os-design/icons';\nimport { m, useIsMinWidth } from '@os-design/media';\nimport {\n ellipsisStyles,\n resetButtonStyles,\n transitionStyles,\n WithSize,\n} from '@os-design/styles';\nimport { clr, ThemeOverrider, useTheme } from '@os-design/theming';\nimport {\n omitEmotionProps,\n useBrowserLayoutEffect,\n useEvent,\n useFontSize,\n useForwardedRef,\n useForwardedState,\n useResizeObserver,\n useSize,\n} from '@os-design/utils';\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { FixedSizeList } from 'react-window';\nimport Button from '../Button';\nimport { InputContainer } from '../Input';\nimport InputSearch, { InputSearchProps } from '../InputSearch';\nimport useRWLoadNext from '../List/utils/useRWLoadNext';\nimport Menu from '../Menu';\nimport MenuItem, { MenuItemProps } from '../MenuItem';\nimport { PopoverProps } from '../Popover';\nimport Tag from '../Tag';\nimport defaultLocale, { SelectLocale } from './utils/defaultLocale';\n\nexport interface Option extends MenuItemProps {\n title?: string;\n}\n\ntype JsxDivProps = Omit<\n JSX.IntrinsicElements['div'],\n 'value' | 'defaultValue' | 'onChange' | 'ref'\n>;\ninterface BaseSelectProps<T>\n extends JsxDivProps,\n WithSize,\n Pick<PopoverProps, 'placement'> {\n /**\n * Options of the select.\n * @default undefined\n */\n options?: Option[];\n /**\n * The component located on the left side.\n * @default undefined\n */\n left?: React.ReactNode;\n /**\n * Adds padding to the left component.\n * It can be useful when passing an icon or text in the left component.\n * @default false\n */\n leftHasPadding?: boolean;\n /**\n * The component located on the right side.\n * @default undefined\n */\n right?: React.ReactNode;\n /**\n * Adds padding to the right component.\n * It can be useful when passing an icon or text in the right component.\n * @default false\n */\n rightHasPadding?: boolean;\n /**\n * The placeholder of the select.\n * @default undefined\n */\n placeholder?: string;\n /**\n * Whether the search input visible.\n * @default false\n */\n searchVisible?: boolean;\n /**\n * Props of the search input.\n * @default undefined\n */\n searchProps?: InputSearchProps;\n /**\n * Text displayed when there are no list items.\n * @default Not found\n */\n notFoundText?: string;\n /**\n * Whether the border is hidden.\n * @default false\n */\n unbordered?: boolean;\n /**\n * Shows the loading status.\n * @default false\n */\n loading?: boolean;\n /**\n * Whether the select is disabled.\n * @default false\n */\n disabled?: boolean;\n /**\n * Whether the component have a focus.\n * @default false\n */\n autoFocus?: boolean;\n /**\n * Whether the component opens the popup list.\n * @default false\n */\n autoOpen?: boolean;\n /**\n * Whether the select has the clear button.\n * @default false\n */\n clearVisible?: boolean;\n /**\n * A threshold N means that the onLoadNext function calls when a user scrolls all items except N.\n * @default 10\n */\n threshold?: number;\n /**\n * Defines how many items inside of the visible \"window\" to render.\n * @default 6\n */\n visibleCount?: number;\n /**\n * Defines how many items outside of the visible \"window\" to render at all times.\n * @default 10\n */\n overscanCount?: number;\n /**\n * The max number of options that the user can select. Zero means unlimited.\n * Works only when multiple is true.\n * @default 0\n */\n maxSelectedItems?: number;\n /**\n * The locale.\n * @default undefined\n */\n locale?: SelectLocale;\n /**\n * Selected options.\n * @default undefined\n */\n value?: T;\n /**\n * The default value.\n * @default undefined\n */\n defaultValue?: T;\n /**\n * The change event handler.\n * @default undefined\n */\n onChange?: (value: T) => void;\n /**\n * The callback to load more items.\n * @default undefined\n */\n onLoadNext?: () => void;\n /**\n * The event handler that is called whenever a popup closes.\n * @default undefined\n */\n onClose?: () => void;\n}\ninterface SelectNotMultipleProps extends BaseSelectProps<string | null> {\n /**\n * Is it possible to select multiple values.\n * @default false\n */\n multiple?: false;\n}\ninterface SelectMultipleProps extends BaseSelectProps<string[]> {\n /**\n * Is it possible to select multiple values.\n * @default false\n */\n multiple: true;\n}\nexport type SelectProps = SelectNotMultipleProps | SelectMultipleProps;\n\nconst selectContainerPaddingStyles = (p) => {\n const paddingVertical =\n (p.theme.baseHeight - p.theme.selectToggleListItemHeight) / 2;\n\n return css`\n padding: calc(${paddingVertical}em - 1px) 0;\n `;\n};\n\nconst selectContainerOpenedStyles = (p) =>\n p.opened &&\n !p.unbordered &&\n css`\n border-color: ${clr(p.theme.inputFocusColorBorder)};\n box-shadow: 0 0 0 0.15em ${clr(p.theme.inputFocusColorShadow)};\n `;\n\nconst selectContainerUnborderedStyles = (p) =>\n p.unbordered &&\n css`\n border: 0;\n box-shadow: none !important;\n ${transitionStyles('background-color')(p)};\n `;\n\nconst selectContainerUnborderedHoverStyles = (p) =>\n p.unbordered &&\n !p.disabled &&\n css`\n @media (hover: hover) {\n &:hover,\n &:focus {\n background-color: ${clr(p.theme.buttonGhostColorBgHover)};\n }\n }\n `;\n\ninterface SelectContainerProps {\n opened: boolean;\n unbordered?: boolean;\n disabled?: boolean;\n}\nexport const SelectContainer = styled(\n InputContainer,\n omitEmotionProps('opened', 'unbordered', 'disabled')\n)<SelectContainerProps>`\n cursor: ${(p) => (!p.disabled ? 'pointer' : 'not-allowed')};\n user-select: none;\n position: relative;\n display: flex;\n align-items: center;\n\n height: unset;\n min-height: ${(p) => p.theme.baseHeight}em;\n\n ${selectContainerPaddingStyles};\n ${selectContainerOpenedStyles};\n ${selectContainerUnborderedStyles};\n ${selectContainerUnborderedHoverStyles};\n`;\n\ninterface SelectMenuProps {\n width: number;\n}\nconst SelectMenu = styled(Menu, omitEmotionProps('width'))<SelectMenuProps>`\n padding-top: 0;\n padding-bottom: 0;\n max-height: unset;\n\n ${m.min.xs} {\n width: ${(p) => p.width}px;\n }\n`;\n\nconst NotFound = styled.div`\n height: ${(p) => p.theme.menuItemHeight}em;\n display: flex;\n align-items: center;\n\n padding: 0 ${(p) => p.theme.inputPaddingHorizontal}em;\n color: ${(p) => clr(p.theme.selectNotFoundColorText)};\n`;\n\nconst InputSearchContainer = styled.div`\n padding: ${(p) => p.theme.menuPaddingVertical}em\n ${(p) => p.theme.inputPaddingHorizontal}em 0;\n`;\n\nexport const ToggleContainer = styled.div`\n flex: 1;\n display: flex;\n align-items: center;\n overflow: hidden;\n`;\n\nconst toggleContentNotHasLeftStyles = (p) =>\n !p.hasLeft &&\n css`\n padding-left: ${p.theme.inputPaddingHorizontal}em;\n `;\n\nconst toggleContentNotHasRightStyles = (p) =>\n !p.hasRight &&\n !p.unbordered &&\n css`\n padding-right: ${p.theme.inputPaddingHorizontal}em;\n `;\n\ninterface ToggleContentProps {\n hasLeft?: boolean;\n hasRight?: boolean;\n unbordered?: boolean;\n}\nexport const ToggleContent = styled(\n 'div',\n omitEmotionProps('hasLeft', 'hasRight', 'unbordered')\n)<ToggleContentProps>`\n flex: 1;\n ${toggleContentNotHasLeftStyles};\n ${toggleContentNotHasRightStyles};\n ${ellipsisStyles};\n`;\n\nexport const Placeholder = styled.span`\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n ${ellipsisStyles};\n`;\n\nconst titleUnborderedTitleStyles = (p) =>\n p.unbordered &&\n css`\n font-weight: 500;\n ${!p.disabled && `color: ${clr(p.theme.colorPrimary)};`}\n `;\n\nconst titleDisabledStyles = (p) =>\n p.disabled &&\n css`\n color: ${clr(p.theme.inputDisabledColorText)};\n `;\n\ntype TitleProps = Pick<SelectProps, 'disabled' | 'unbordered'>;\nexport const Title = styled(\n 'span',\n omitEmotionProps('disabled', 'unbordered')\n)<TitleProps>`\n color: ${(p) => clr(p.theme.colorText)};\n ${titleUnborderedTitleStyles};\n ${titleDisabledStyles};\n ${ellipsisStyles};\n`;\n\ntype ToggleListItemProps = Pick<SelectProps, 'disabled'>;\nconst ToggleListItem = styled(\n Tag,\n omitEmotionProps('disabled')\n)<ToggleListItemProps>`\n // Reset tag styles\n padding-top: 0;\n padding-bottom: 0;\n\n height: ${(p) => p.theme.selectToggleListItemHeight}em;\n ${titleDisabledStyles};\n`;\n\nconst ToggleList = styled.div`\n display: flex;\n flex-wrap: wrap;\n overflow: hidden; // For ellipsis styles\n\n margin: 0 ${(p) => p.theme.selectToggleListItemGap}em\n ${(p) => -p.theme.selectToggleListItemGap}em 0;\n\n & > div {\n margin: 0 ${(p) => p.theme.selectToggleListItemGap}em\n ${(p) => p.theme.selectToggleListItemGap}em 0;\n }\n`;\n\nconst DeleteButton = styled.button`\n ${resetButtonStyles};\n cursor: pointer;\n display: inherit;\n font-size: 1em;\n margin-left: 0.2em;\n\n background-color: transparent;\n color: ${(p) => clr(p.theme.selectToggleDeleteButtonColorIcon)};\n\n @media (hover: hover) {\n &:hover,\n &:focus {\n color: ${(p) => clr(p.theme.selectToggleDeleteButtonColorIconHover)};\n }\n }\n\n ${transitionStyles('color')};\n`;\n\nconst toggleIconUnborderedStyles = (p) =>\n p.unbordered &&\n css`\n padding-top: 0.2em;\n font-size: 0.8em;\n ${!p.disabled && `color: ${clr(p.theme.colorPrimary)};`}\n `;\n\ninterface ToggleIconContainerProps {\n unbordered?: boolean;\n disabled?: boolean;\n}\nexport const ToggleIconContainer = styled(\n 'span',\n omitEmotionProps('unbordered', 'disabled')\n)<ToggleIconContainerProps>`\n color: ${(p) => clr(p.theme.selectColorIcon)};\n line-height: 1;\n ${toggleIconUnborderedStyles};\n`;\n\nexport const ClearIcon = styled(CloseCircle)`\n transform: scale(1.2) !important;\n`;\n\ninterface AddonProps {\n hasPadding: boolean;\n}\nconst Addon = styled('span', omitEmotionProps('hasPadding'))<AddonProps>`\n display: flex;\n align-items: center;\n user-select: none;\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n\n svg {\n transform: scale(1.2);\n }\n`;\n\nexport const ToggleLeftAddon = styled(Addon)`\n padding-right: ${(p) => p.theme.inputAddonPaddingHorizontal}em;\n ${(p) =>\n p.hasPadding &&\n css`\n padding-left: ${p.theme.inputPaddingHorizontal}em;\n `}\n`;\n\nexport const ToggleRightAddon = styled(Addon)`\n padding-left: ${(p) => p.theme.inputAddonPaddingHorizontal}em;\n ${(p) =>\n p.hasPadding &&\n css`\n padding-right: ${p.theme.inputPaddingHorizontal}em;\n `}\n`;\n\n/**\n * The component that allows to pick a value from predefined options.\n */\nconst Select = forwardRef<HTMLDivElement, SelectProps>(\n (\n {\n options = [],\n left,\n leftHasPadding = false,\n right,\n rightHasPadding = false,\n placeholder,\n searchVisible = false,\n searchProps = {},\n notFoundText = 'Not found',\n unbordered = false,\n loading = false,\n disabled = false,\n autoFocus = false,\n autoOpen = false,\n clearVisible = false,\n threshold = 10,\n visibleCount = 6,\n overscanCount = 10,\n multiple = false,\n maxSelectedItems = 0,\n locale = defaultLocale,\n value,\n defaultValue,\n onChange,\n onLoadNext = () => {},\n onClose = () => {},\n onBlur = () => {},\n size,\n placement,\n ...rest\n },\n ref\n ) => {\n const [containerRef, mergedContainerRef] = useForwardedRef(ref);\n const [width, setWidth] = useState(0);\n const inputSearchContainerRef = useRef<HTMLDivElement>(null);\n const [opened, setOpened] = useState(autoOpen);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [forwardedValue, setForwardedValue] = useForwardedState<any>({\n value,\n defaultValue,\n onChange,\n });\n\n useEffect(() => {\n if (autoFocus) containerRef.current?.focus();\n }, [autoFocus, containerRef]);\n\n const onCloseRef = useRef(onClose);\n useEffect(() => {\n onCloseRef.current = onClose;\n }, [onClose]);\n\n useEffect(() => {\n if (!opened) onCloseRef.current();\n }, [opened]);\n\n /**\n * Detect the width of the container when the select was opened and update\n * it when either the container size or the window size has been changed.\n */\n const resizeHandler = useCallback(() => {\n window.requestAnimationFrame(() => {\n if (!opened || !containerRef.current) return;\n const nextWidth = containerRef.current.getBoundingClientRect().width;\n if (width === nextWidth) return;\n setWidth(nextWidth);\n });\n }, [opened, containerRef, width]);\n useBrowserLayoutEffect(() => resizeHandler(), [resizeHandler]);\n useResizeObserver(containerRef, resizeHandler);\n useEvent(\n (typeof window !== 'undefined' ? window : undefined) as EventTarget,\n 'resize',\n resizeHandler\n );\n\n // Replace the aria-haspopup attribute from menu to listbox\n useBrowserLayoutEffect(() => {\n if (!containerRef.current) return;\n containerRef.current.setAttribute('aria-haspopup', 'listbox');\n }, []);\n\n const listBoxId = useMemo(\n () => `listbox-${Math.random().toString(36).slice(2, 11)}`,\n []\n );\n\n const blurHandler = useCallback(\n (e) => {\n if (!opened) onBlur(e);\n },\n [onBlur, opened]\n );\n\n const onDelete = useCallback(\n (v: string) => {\n if (!multiple) return;\n setForwardedValue((forwardedValue || []).filter((item) => item !== v));\n },\n [forwardedValue, multiple, setForwardedValue]\n );\n\n const toggleContent = useMemo(() => {\n if (multiple) {\n if (!forwardedValue || forwardedValue.length === 0) {\n return <Placeholder>{placeholder}</Placeholder>;\n }\n const items = forwardedValue.map((v) => {\n const option = (options || []).find((item) => item.value === v);\n return { title: option ? option.title || '' : '', value: v };\n });\n return (\n <ToggleList>\n {items.map(({ title, value: v }) => (\n <ToggleListItem\n key={v}\n disabled={disabled}\n right={\n !disabled ? (\n <DeleteButton\n onClick={(e) => {\n onDelete(v);\n e.stopPropagation();\n }}\n onKeyDown={(e) => e.stopPropagation()}\n aria-label={`${locale.deleteLabel} ${title}`}\n aria-hidden\n >\n <Close />\n </DeleteButton>\n ) : undefined\n }\n aria-hidden\n >\n {title}\n </ToggleListItem>\n ))}\n </ToggleList>\n );\n }\n if (!forwardedValue) {\n return <Placeholder>{placeholder}</Placeholder>;\n }\n const option = (options || []).find(\n (item) => item.value === forwardedValue\n );\n return (\n <Title disabled={disabled} unbordered={unbordered}>\n {option ? option.title : ''}\n </Title>\n );\n }, [\n disabled,\n forwardedValue,\n locale.deleteLabel,\n multiple,\n onDelete,\n options,\n placeholder,\n unbordered,\n ]);\n\n const toggleShowClearButton = useMemo(() => {\n if (!clearVisible) return false;\n if (multiple) return forwardedValue && forwardedValue.length > 0;\n return !!forwardedValue;\n }, [clearVisible, forwardedValue, multiple]);\n\n const toggleOnClear = useCallback(() => {\n setForwardedValue(multiple ? [] : null);\n if (!containerRef.current) return;\n containerRef.current.focus();\n }, [containerRef, multiple, setForwardedValue]);\n\n const toggleRightValue = useMemo(() => {\n if (loading) return <Loading />;\n if (toggleShowClearButton) {\n return (\n <Button\n type='ghost'\n wide='never'\n size='small'\n disabled={disabled}\n onClick={(e) => {\n toggleOnClear();\n e.stopPropagation();\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') toggleOnClear();\n e.stopPropagation();\n }}\n aria-label={locale.clearLabel}\n >\n <ClearIcon />\n </Button>\n );\n }\n return (\n right || (\n <ToggleIconContainer unbordered={unbordered} disabled={disabled}>\n {opened ? <Up /> : <Down />}\n </ToggleIconContainer>\n )\n );\n }, [\n disabled,\n loading,\n locale.clearLabel,\n opened,\n right,\n toggleOnClear,\n toggleShowClearButton,\n unbordered,\n ]);\n\n const toggleRightHasPaddingValue = useMemo(() => {\n if (loading) return true;\n if (toggleShowClearButton) return false;\n return right ? rightHasPadding : true;\n }, [loading, right, rightHasPadding, toggleShowClearButton]);\n\n const onSelect = useCallback(\n (v: string) => {\n if (multiple) {\n // Delete the value because it was already selected\n if ((forwardedValue || []).includes(v)) {\n setForwardedValue(\n (forwardedValue || []).filter((item) => item !== v)\n );\n return;\n }\n\n // Add a new value if the number of selected items is less than max\n if (\n maxSelectedItems === 0 ||\n (forwardedValue || []).length < maxSelectedItems\n ) {\n setForwardedValue([...(forwardedValue || []), v]);\n return;\n }\n return;\n }\n setForwardedValue(v);\n },\n [forwardedValue, maxSelectedItems, multiple, setForwardedValue]\n );\n\n const windowSize = useSize();\n const isMinXs = useIsMinWidth('xs');\n const fontSize = useFontSize(document.body);\n const { theme } = useTheme();\n\n const scaleFactor = useMemo(() => {\n const s = size || 'medium';\n return ['small', 'medium', 'large'].includes(s)\n ? theme.sizes[s]\n : Number(s.replace(/^([0-9]+(\\.[0-9]+)?).*/, '$1')) || 1; // Extract the number\n }, [size, theme.sizes]);\n\n const paddingBottom = useMemo(() => {\n const paddingEm = isMinXs\n ? theme.menuPaddingVertical\n : theme.modalBodyPaddingVertical[0];\n return paddingEm * fontSize * scaleFactor;\n }, [\n isMinXs,\n theme.menuPaddingVertical,\n theme.modalBodyPaddingVertical,\n fontSize,\n scaleFactor,\n ]);\n\n const paddingTop = useMemo(\n () => (searchVisible ? 5 * scaleFactor : paddingBottom),\n [searchVisible, scaleFactor, paddingBottom]\n );\n\n const searchInputHeight = useMemo(\n () =>\n searchVisible\n ? (theme.baseHeight + theme.menuPaddingVertical) *\n fontSize *\n scaleFactor\n : 0,\n [\n searchVisible,\n theme.baseHeight,\n theme.menuPaddingVertical,\n fontSize,\n scaleFactor,\n ]\n );\n\n const itemSize = useMemo(\n () => theme.menuItemHeight * fontSize * scaleFactor,\n [theme.menuItemHeight, fontSize, scaleFactor]\n );\n\n const height = useMemo(() => {\n // Modal\n if (!isMinXs) {\n const maxHeight =\n windowSize.height -\n theme.modalHeaderHeight * fontSize * scaleFactor -\n searchInputHeight;\n const curHeight =\n options.length * itemSize + paddingTop + paddingBottom;\n return curHeight < maxHeight ? curHeight : maxHeight;\n }\n // Popover\n const count =\n options.length < visibleCount ? options.length : visibleCount;\n return count * itemSize + paddingTop + paddingBottom;\n }, [\n isMinXs,\n options.length,\n visibleCount,\n itemSize,\n windowSize.height,\n theme.modalHeaderHeight,\n fontSize,\n scaleFactor,\n searchInputHeight,\n paddingTop,\n paddingBottom,\n ]);\n\n const scrollHandler = useRWLoadNext({\n itemCount: options.length,\n threshold,\n itemSize,\n paddingTop,\n height,\n onLoadNext,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const InnerElement = useCallback(\n ({ style, ...innerElementRest }) => (\n <div\n style={{\n ...style,\n height: `${\n parseFloat(style.height) + paddingTop + paddingBottom\n }px`,\n }}\n role='listbox'\n id={listBoxId}\n {...innerElementRest}\n />\n ),\n [listBoxId, paddingBottom, paddingTop]\n );\n\n const listItemFn = useCallback(\n ({ index, style }) => {\n const {\n title: optionTitle,\n value: optionValue,\n onClick: optionOnClick,\n ...restOption\n } = options[index];\n return (\n <MenuItem\n style={{\n ...style,\n top: `${\n parseFloat(style.top ? style.top.toString() : '0') + paddingTop\n }px`,\n }}\n selected={\n (multiple &&\n (forwardedValue || []).includes(optionValue || '')) ||\n (!multiple && forwardedValue === optionValue)\n }\n onClick={(e) => {\n if (!optionValue) return;\n onSelect(optionValue);\n\n // Focus the input.\n // Otherwise, if multiple is false and the user presses enter to select an item,\n // the input will lose focus.\n if (containerRef.current && !multiple) {\n containerRef.current.focus();\n }\n\n if (optionOnClick) optionOnClick(e);\n }}\n role='option'\n aria-selected={\n (multiple &&\n (forwardedValue || []).includes(optionValue || '')) ||\n (!multiple && forwardedValue === optionValue)\n }\n {...restOption}\n >\n {optionTitle}\n </MenuItem>\n );\n },\n [containerRef, forwardedValue, multiple, onSelect, options, paddingTop]\n );\n\n return (\n <>\n <SelectContainer\n opened={opened}\n unbordered={unbordered}\n disabled={disabled}\n size={size}\n tabIndex={!disabled ? 0 : -1}\n onClick={() => {\n if (disabled) return;\n setOpened(!opened);\n }}\n onKeyDown={(e) => {\n if (disabled) return;\n if (['Enter', ' '].includes(e.key)) {\n setOpened(!opened);\n e.preventDefault();\n }\n }}\n onMouseDown={(e) => e.preventDefault()}\n onBlur={blurHandler}\n role='combobox'\n aria-disabled={disabled}\n aria-busy={loading}\n aria-haspopup='listbox'\n aria-owns={listBoxId}\n {...rest}\n ref={mergedContainerRef}\n >\n <ToggleContainer>\n {left && (\n <ThemeOverrider\n overrides={(t) => ({\n buttonPaddingHorizontal: 0.8,\n baseHeight: t.selectToggleListItemHeight / t.sizes.small,\n })}\n >\n <ToggleLeftAddon hasPadding={leftHasPadding}>\n {left}\n </ToggleLeftAddon>\n </ThemeOverrider>\n )}\n\n <ToggleContent\n hasLeft={!!left}\n hasRight={!!right}\n unbordered={unbordered}\n >\n {toggleContent}\n </ToggleContent>\n\n {toggleRightValue && (\n <ThemeOverrider\n overrides={(t) => ({\n buttonPaddingHorizontal: 0.8,\n baseHeight: t.selectToggleListItemHeight / t.sizes.small,\n })}\n >\n <ToggleRightAddon hasPadding={toggleRightHasPaddingValue}>\n {toggleRightValue}\n </ToggleRightAddon>\n </ThemeOverrider>\n )}\n </ToggleContainer>\n </SelectContainer>\n\n <SelectMenu\n trigger={containerRef}\n visible={opened}\n onClose={() => setOpened(false)}\n size={size}\n width={width}\n closeOnSelect={!multiple}\n modalTitle={placeholder}\n placement={placement}\n >\n {searchVisible && (\n <InputSearchContainer ref={inputSearchContainerRef}>\n <InputSearch {...searchProps} />\n </InputSearchContainer>\n )}\n\n {options.length > 0 ? (\n <FixedSizeList\n width='100%'\n height={height}\n itemSize={itemSize}\n itemCount={options.length}\n overscanCount={overscanCount}\n onScroll={({ scrollOffset }) => scrollHandler(scrollOffset)}\n innerElementType={InnerElement}\n >\n {listItemFn}\n </FixedSizeList>\n ) : (\n <NotFound>{notFoundText}</NotFound>\n )}\n </SelectMenu>\n </>\n );\n }\n);\n\nSelect.displayName = 'Select';\n\nexport default Select;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["css","styled","Close","CloseCircle","Down","Loading","Up","m","useIsMinWidth","ellipsisStyles","resetButtonStyles","transitionStyles","clr","ThemeOverrider","useTheme","omitEmotionProps","useBrowserLayoutEffect","useEvent","useFontSize","useForwardedRef","useForwardedState","useResizeObserver","useSize","React","forwardRef","useCallback","useEffect","useMemo","useRef","useState","FixedSizeList","Button","InputContainer","InputSearch","useRWLoadNext","Menu","MenuItem","Tag","defaultLocale","selectContainerPaddingStyles","p","paddingVertical","theme","baseHeight","selectToggleListItemHeight","selectContainerOpenedStyles","opened","unbordered","inputFocusColorBorder","inputFocusColorShadow","selectContainerUnborderedStyles","selectContainerUnborderedHoverStyles","disabled","buttonGhostColorBgHover","SelectContainer","SelectMenu","min","xs","width","NotFound","div","menuItemHeight","inputPaddingHorizontal","selectNotFoundColorText","InputSearchContainer","menuPaddingVertical","ToggleContainer","toggleContentNotHasLeftStyles","hasLeft","toggleContentNotHasRightStyles","hasRight","ToggleContent","Placeholder","span","inputColorPlaceholder","titleUnborderedTitleStyles","colorPrimary","titleDisabledStyles","inputDisabledColorText","Title","colorText","ToggleListItem","ToggleList","selectToggleListItemGap","DeleteButton","button","selectToggleDeleteButtonColorIcon","selectToggleDeleteButtonColorIconHover","toggleIconUnborderedStyles","ToggleIconContainer","selectColorIcon","ClearIcon","Addon","ToggleLeftAddon","inputAddonPaddingHorizontal","hasPadding","ToggleRightAddon","Select","options","left","leftHasPadding","right","rightHasPadding","placeholder","searchVisible","searchProps","notFoundText","loading","autoFocus","autoOpen","clearVisible","threshold","visibleCount","overscanCount","multiple","maxSelectedItems","locale","value","defaultValue","onChange","onLoadNext","onClose","onBlur","size","placement","rest","ref","containerRef","mergedContainerRef","setWidth","inputSearchContainerRef","setOpened","forwardedValue","setForwardedValue","current","focus","onCloseRef","resizeHandler","window","requestAnimationFrame","nextWidth","getBoundingClientRect","undefined","setAttribute","listBoxId","Math","random","toString","slice","blurHandler","e","onDelete","v","filter","item","toggleContent","length","items","map","option","find","title","stopPropagation","deleteLabel","toggleShowClearButton","toggleOnClear","toggleRightValue","key","clearLabel","toggleRightHasPaddingValue","onSelect","includes","windowSize","isMinXs","fontSize","document","body","scaleFactor","s","sizes","Number","replace","paddingBottom","paddingEm","modalBodyPaddingVertical","paddingTop","searchInputHeight","itemSize","height","maxHeight","modalHeaderHeight","curHeight","count","scrollHandler","itemCount","InnerElement","style","innerElementRest","parseFloat","listItemFn","index","optionTitle","optionValue","onClick","optionOnClick","restOption","top","preventDefault","t","buttonPaddingHorizontal","small","scrollOffset","displayName"],"sources":["../../../src/Select/index.tsx"],"sourcesContent":["import { css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport { Close, CloseCircle, Down, Loading, Up } from '@os-design/icons';\nimport { m, useIsMinWidth } from '@os-design/media';\nimport {\n ellipsisStyles,\n resetButtonStyles,\n transitionStyles,\n WithSize,\n} from '@os-design/styles';\nimport { clr, ThemeOverrider, useTheme } from '@os-design/theming';\nimport {\n omitEmotionProps,\n useBrowserLayoutEffect,\n useEvent,\n useFontSize,\n useForwardedRef,\n useForwardedState,\n useResizeObserver,\n useSize,\n} from '@os-design/utils';\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { FixedSizeList } from 'react-window';\nimport Button from '../Button';\nimport { InputContainer } from '../Input';\nimport InputSearch, { InputSearchProps } from '../InputSearch';\nimport useRWLoadNext from '../List/utils/useRWLoadNext';\nimport Menu from '../Menu';\nimport MenuItem, { MenuItemProps } from '../MenuItem';\nimport { PopoverProps } from '../Popover';\nimport Tag from '../Tag';\nimport defaultLocale, { SelectLocale } from './utils/defaultLocale';\n\nexport interface Option extends MenuItemProps {\n title?: string;\n}\n\ntype JsxDivProps = Omit<\n JSX.IntrinsicElements['div'],\n 'value' | 'defaultValue' | 'onChange' | 'ref'\n>;\ninterface BaseSelectProps<T>\n extends JsxDivProps,\n WithSize,\n Pick<PopoverProps, 'placement'> {\n /**\n * Options of the select.\n * @default undefined\n */\n options?: Option[];\n /**\n * The component located on the left side.\n * @default undefined\n */\n left?: React.ReactNode;\n /**\n * Adds padding to the left component.\n * It can be useful when passing an icon or text in the left component.\n * @default false\n */\n leftHasPadding?: boolean;\n /**\n * The component located on the right side.\n * @default undefined\n */\n right?: React.ReactNode;\n /**\n * Adds padding to the right component.\n * It can be useful when passing an icon or text in the right component.\n * @default false\n */\n rightHasPadding?: boolean;\n /**\n * The placeholder of the select.\n * @default undefined\n */\n placeholder?: string;\n /**\n * Whether the search input visible.\n * @default false\n */\n searchVisible?: boolean;\n /**\n * Props of the search input.\n * @default undefined\n */\n searchProps?: InputSearchProps;\n /**\n * Text displayed when there are no list items.\n * @default Not found\n */\n notFoundText?: string;\n /**\n * Whether the border is hidden.\n * @default false\n */\n unbordered?: boolean;\n /**\n * Shows the loading status.\n * @default false\n */\n loading?: boolean;\n /**\n * Whether the select is disabled.\n * @default false\n */\n disabled?: boolean;\n /**\n * Whether the component have a focus.\n * @default false\n */\n autoFocus?: boolean;\n /**\n * Whether the component opens the popup list.\n * @default false\n */\n autoOpen?: boolean;\n /**\n * Whether the select has the clear button.\n * @default false\n */\n clearVisible?: boolean;\n /**\n * A threshold N means that the onLoadNext function calls when a user scrolls all items except N.\n * @default 10\n */\n threshold?: number;\n /**\n * Defines how many items inside of the visible \"window\" to render.\n * @default 6\n */\n visibleCount?: number;\n /**\n * Defines how many items outside of the visible \"window\" to render at all times.\n * @default 10\n */\n overscanCount?: number;\n /**\n * The max number of options that the user can select. Zero means unlimited.\n * Works only when multiple is true.\n * @default 0\n */\n maxSelectedItems?: number;\n /**\n * The locale.\n * @default undefined\n */\n locale?: SelectLocale;\n /**\n * Selected options.\n * @default undefined\n */\n value?: T;\n /**\n * The default value.\n * @default undefined\n */\n defaultValue?: T;\n /**\n * The change event handler.\n * @default undefined\n */\n onChange?: (value: T) => void;\n /**\n * The callback to load more items.\n * @default undefined\n */\n onLoadNext?: () => void;\n /**\n * The event handler that is called whenever a popup closes.\n * @default undefined\n */\n onClose?: () => void;\n}\nexport interface SelectNotMultipleProps extends BaseSelectProps<string | null> {\n /**\n * Is it possible to select multiple values.\n * @default false\n */\n multiple?: false;\n}\nexport interface SelectMultipleProps extends BaseSelectProps<string[]> {\n /**\n * Is it possible to select multiple values.\n * @default false\n */\n multiple: true;\n}\nexport type SelectProps = SelectNotMultipleProps | SelectMultipleProps;\n\nconst selectContainerPaddingStyles = (p) => {\n const paddingVertical =\n (p.theme.baseHeight - p.theme.selectToggleListItemHeight) / 2;\n\n return css`\n padding: calc(${paddingVertical}em - 1px) 0;\n `;\n};\n\nconst selectContainerOpenedStyles = (p) =>\n p.opened &&\n !p.unbordered &&\n css`\n border-color: ${clr(p.theme.inputFocusColorBorder)};\n box-shadow: 0 0 0 0.15em ${clr(p.theme.inputFocusColorShadow)};\n `;\n\nconst selectContainerUnborderedStyles = (p) =>\n p.unbordered &&\n css`\n border: 0;\n box-shadow: none !important;\n ${transitionStyles('background-color')(p)};\n `;\n\nconst selectContainerUnborderedHoverStyles = (p) =>\n p.unbordered &&\n !p.disabled &&\n css`\n @media (hover: hover) {\n &:hover,\n &:focus {\n background-color: ${clr(p.theme.buttonGhostColorBgHover)};\n }\n }\n `;\n\ninterface SelectContainerProps {\n opened: boolean;\n unbordered?: boolean;\n disabled?: boolean;\n}\nexport const SelectContainer = styled(\n InputContainer,\n omitEmotionProps('opened', 'unbordered', 'disabled')\n)<SelectContainerProps>`\n cursor: ${(p) => (!p.disabled ? 'pointer' : 'not-allowed')};\n user-select: none;\n position: relative;\n display: flex;\n align-items: center;\n\n height: unset;\n min-height: ${(p) => p.theme.baseHeight}em;\n\n ${selectContainerPaddingStyles};\n ${selectContainerOpenedStyles};\n ${selectContainerUnborderedStyles};\n ${selectContainerUnborderedHoverStyles};\n`;\n\ninterface SelectMenuProps {\n width: number;\n}\nconst SelectMenu = styled(Menu, omitEmotionProps('width'))<SelectMenuProps>`\n padding-top: 0;\n padding-bottom: 0;\n max-height: unset;\n\n ${m.min.xs} {\n width: ${(p) => p.width}px;\n }\n`;\n\nconst NotFound = styled.div`\n height: ${(p) => p.theme.menuItemHeight}em;\n display: flex;\n align-items: center;\n\n padding: 0 ${(p) => p.theme.inputPaddingHorizontal}em;\n color: ${(p) => clr(p.theme.selectNotFoundColorText)};\n`;\n\nconst InputSearchContainer = styled.div`\n padding: ${(p) => p.theme.menuPaddingVertical}em\n ${(p) => p.theme.inputPaddingHorizontal}em 0;\n`;\n\nexport const ToggleContainer = styled.div`\n flex: 1;\n display: flex;\n align-items: center;\n overflow: hidden;\n`;\n\nconst toggleContentNotHasLeftStyles = (p) =>\n !p.hasLeft &&\n css`\n padding-left: ${p.theme.inputPaddingHorizontal}em;\n `;\n\nconst toggleContentNotHasRightStyles = (p) =>\n !p.hasRight &&\n !p.unbordered &&\n css`\n padding-right: ${p.theme.inputPaddingHorizontal}em;\n `;\n\ninterface ToggleContentProps {\n hasLeft?: boolean;\n hasRight?: boolean;\n unbordered?: boolean;\n}\nexport const ToggleContent = styled(\n 'div',\n omitEmotionProps('hasLeft', 'hasRight', 'unbordered')\n)<ToggleContentProps>`\n flex: 1;\n ${toggleContentNotHasLeftStyles};\n ${toggleContentNotHasRightStyles};\n ${ellipsisStyles};\n`;\n\nexport const Placeholder = styled.span`\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n ${ellipsisStyles};\n`;\n\nconst titleUnborderedTitleStyles = (p) =>\n p.unbordered &&\n css`\n font-weight: 500;\n ${!p.disabled && `color: ${clr(p.theme.colorPrimary)};`}\n `;\n\nconst titleDisabledStyles = (p) =>\n p.disabled &&\n css`\n color: ${clr(p.theme.inputDisabledColorText)};\n `;\n\ntype TitleProps = Pick<SelectProps, 'disabled' | 'unbordered'>;\nexport const Title = styled(\n 'span',\n omitEmotionProps('disabled', 'unbordered')\n)<TitleProps>`\n color: ${(p) => clr(p.theme.colorText)};\n ${titleUnborderedTitleStyles};\n ${titleDisabledStyles};\n ${ellipsisStyles};\n`;\n\ntype ToggleListItemProps = Pick<SelectProps, 'disabled'>;\nconst ToggleListItem = styled(\n Tag,\n omitEmotionProps('disabled')\n)<ToggleListItemProps>`\n // Reset tag styles\n padding-top: 0;\n padding-bottom: 0;\n\n height: ${(p) => p.theme.selectToggleListItemHeight}em;\n ${titleDisabledStyles};\n`;\n\nconst ToggleList = styled.div`\n display: flex;\n flex-wrap: wrap;\n overflow: hidden; // For ellipsis styles\n\n margin: 0 ${(p) => p.theme.selectToggleListItemGap}em\n ${(p) => -p.theme.selectToggleListItemGap}em 0;\n\n & > div {\n margin: 0 ${(p) => p.theme.selectToggleListItemGap}em\n ${(p) => p.theme.selectToggleListItemGap}em 0;\n }\n`;\n\nconst DeleteButton = styled.button`\n ${resetButtonStyles};\n cursor: pointer;\n display: inherit;\n font-size: 1em;\n margin-left: 0.2em;\n\n background-color: transparent;\n color: ${(p) => clr(p.theme.selectToggleDeleteButtonColorIcon)};\n\n @media (hover: hover) {\n &:hover,\n &:focus {\n color: ${(p) => clr(p.theme.selectToggleDeleteButtonColorIconHover)};\n }\n }\n\n ${transitionStyles('color')};\n`;\n\nconst toggleIconUnborderedStyles = (p) =>\n p.unbordered &&\n css`\n padding-top: 0.2em;\n font-size: 0.8em;\n ${!p.disabled && `color: ${clr(p.theme.colorPrimary)};`}\n `;\n\ninterface ToggleIconContainerProps {\n unbordered?: boolean;\n disabled?: boolean;\n}\nexport const ToggleIconContainer = styled(\n 'span',\n omitEmotionProps('unbordered', 'disabled')\n)<ToggleIconContainerProps>`\n color: ${(p) => clr(p.theme.selectColorIcon)};\n line-height: 1;\n ${toggleIconUnborderedStyles};\n`;\n\nexport const ClearIcon = styled(CloseCircle)`\n transform: scale(1.2) !important;\n`;\n\ninterface AddonProps {\n hasPadding: boolean;\n}\nconst Addon = styled('span', omitEmotionProps('hasPadding'))<AddonProps>`\n display: flex;\n align-items: center;\n user-select: none;\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n\n svg {\n transform: scale(1.2);\n }\n`;\n\nexport const ToggleLeftAddon = styled(Addon)`\n padding-right: ${(p) => p.theme.inputAddonPaddingHorizontal}em;\n ${(p) =>\n p.hasPadding &&\n css`\n padding-left: ${p.theme.inputPaddingHorizontal}em;\n `}\n`;\n\nexport const ToggleRightAddon = styled(Addon)`\n padding-left: ${(p) => p.theme.inputAddonPaddingHorizontal}em;\n ${(p) =>\n p.hasPadding &&\n css`\n padding-right: ${p.theme.inputPaddingHorizontal}em;\n `}\n`;\n\n/**\n * The component that allows to pick a value from predefined options.\n */\nconst Select = forwardRef<HTMLDivElement, SelectProps>(\n (\n {\n options = [],\n left,\n leftHasPadding = false,\n right,\n rightHasPadding = false,\n placeholder,\n searchVisible = false,\n searchProps = {},\n notFoundText = 'Not found',\n unbordered = false,\n loading = false,\n disabled = false,\n autoFocus = false,\n autoOpen = false,\n clearVisible = false,\n threshold = 10,\n visibleCount = 6,\n overscanCount = 10,\n multiple = false,\n maxSelectedItems = 0,\n locale = defaultLocale,\n value,\n defaultValue,\n onChange,\n onLoadNext = () => {},\n onClose = () => {},\n onBlur = () => {},\n size,\n placement,\n ...rest\n },\n ref\n ) => {\n const [containerRef, mergedContainerRef] = useForwardedRef(ref);\n const [width, setWidth] = useState(0);\n const inputSearchContainerRef = useRef<HTMLDivElement>(null);\n const [opened, setOpened] = useState(autoOpen);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [forwardedValue, setForwardedValue] = useForwardedState<any>({\n value,\n defaultValue,\n onChange,\n });\n\n useEffect(() => {\n if (autoFocus) containerRef.current?.focus();\n }, [autoFocus, containerRef]);\n\n const onCloseRef = useRef(onClose);\n useEffect(() => {\n onCloseRef.current = onClose;\n }, [onClose]);\n\n useEffect(() => {\n if (!opened) onCloseRef.current();\n }, [opened]);\n\n /**\n * Detect the width of the container when the select was opened and update\n * it when either the container size or the window size has been changed.\n */\n const resizeHandler = useCallback(() => {\n window.requestAnimationFrame(() => {\n if (!opened || !containerRef.current) return;\n const nextWidth = containerRef.current.getBoundingClientRect().width;\n if (width === nextWidth) return;\n setWidth(nextWidth);\n });\n }, [opened, containerRef, width]);\n useBrowserLayoutEffect(() => resizeHandler(), [resizeHandler]);\n useResizeObserver(containerRef, resizeHandler);\n useEvent(\n (typeof window !== 'undefined' ? window : undefined) as EventTarget,\n 'resize',\n resizeHandler\n );\n\n // Replace the aria-haspopup attribute from menu to listbox\n useBrowserLayoutEffect(() => {\n if (!containerRef.current) return;\n containerRef.current.setAttribute('aria-haspopup', 'listbox');\n }, []);\n\n const listBoxId = useMemo(\n () => `listbox-${Math.random().toString(36).slice(2, 11)}`,\n []\n );\n\n const blurHandler = useCallback(\n (e) => {\n if (!opened) onBlur(e);\n },\n [onBlur, opened]\n );\n\n const onDelete = useCallback(\n (v: string) => {\n if (!multiple) return;\n setForwardedValue((forwardedValue || []).filter((item) => item !== v));\n },\n [forwardedValue, multiple, setForwardedValue]\n );\n\n const toggleContent = useMemo(() => {\n if (multiple) {\n if (!forwardedValue || forwardedValue.length === 0) {\n return <Placeholder>{placeholder}</Placeholder>;\n }\n const items = forwardedValue.map((v) => {\n const option = (options || []).find((item) => item.value === v);\n return { title: option ? option.title || '' : '', value: v };\n });\n return (\n <ToggleList>\n {items.map(({ title, value: v }) => (\n <ToggleListItem\n key={v}\n disabled={disabled}\n right={\n !disabled ? (\n <DeleteButton\n onClick={(e) => {\n onDelete(v);\n e.stopPropagation();\n }}\n onKeyDown={(e) => e.stopPropagation()}\n aria-label={`${locale.deleteLabel} ${title}`}\n aria-hidden\n >\n <Close />\n </DeleteButton>\n ) : undefined\n }\n aria-hidden\n >\n {title}\n </ToggleListItem>\n ))}\n </ToggleList>\n );\n }\n if (!forwardedValue) {\n return <Placeholder>{placeholder}</Placeholder>;\n }\n const option = (options || []).find(\n (item) => item.value === forwardedValue\n );\n return (\n <Title disabled={disabled} unbordered={unbordered}>\n {option ? option.title : ''}\n </Title>\n );\n }, [\n disabled,\n forwardedValue,\n locale.deleteLabel,\n multiple,\n onDelete,\n options,\n placeholder,\n unbordered,\n ]);\n\n const toggleShowClearButton = useMemo(() => {\n if (!clearVisible) return false;\n if (multiple) return forwardedValue && forwardedValue.length > 0;\n return !!forwardedValue;\n }, [clearVisible, forwardedValue, multiple]);\n\n const toggleOnClear = useCallback(() => {\n setForwardedValue(multiple ? [] : null);\n if (!containerRef.current) return;\n containerRef.current.focus();\n }, [containerRef, multiple, setForwardedValue]);\n\n const toggleRightValue = useMemo(() => {\n if (loading) return <Loading />;\n if (toggleShowClearButton) {\n return (\n <Button\n type='ghost'\n wide='never'\n size='small'\n disabled={disabled}\n onClick={(e) => {\n toggleOnClear();\n e.stopPropagation();\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') toggleOnClear();\n e.stopPropagation();\n }}\n aria-label={locale.clearLabel}\n >\n <ClearIcon />\n </Button>\n );\n }\n return (\n right || (\n <ToggleIconContainer unbordered={unbordered} disabled={disabled}>\n {opened ? <Up /> : <Down />}\n </ToggleIconContainer>\n )\n );\n }, [\n disabled,\n loading,\n locale.clearLabel,\n opened,\n right,\n toggleOnClear,\n toggleShowClearButton,\n unbordered,\n ]);\n\n const toggleRightHasPaddingValue = useMemo(() => {\n if (loading) return true;\n if (toggleShowClearButton) return false;\n return right ? rightHasPadding : true;\n }, [loading, right, rightHasPadding, toggleShowClearButton]);\n\n const onSelect = useCallback(\n (v: string) => {\n if (multiple) {\n // Delete the value because it was already selected\n if ((forwardedValue || []).includes(v)) {\n setForwardedValue(\n (forwardedValue || []).filter((item) => item !== v)\n );\n return;\n }\n\n // Add a new value if the number of selected items is less than max\n if (\n maxSelectedItems === 0 ||\n (forwardedValue || []).length < maxSelectedItems\n ) {\n setForwardedValue([...(forwardedValue || []), v]);\n return;\n }\n return;\n }\n setForwardedValue(v);\n },\n [forwardedValue, maxSelectedItems, multiple, setForwardedValue]\n );\n\n const windowSize = useSize();\n const isMinXs = useIsMinWidth('xs');\n const fontSize = useFontSize(document.body);\n const { theme } = useTheme();\n\n const scaleFactor = useMemo(() => {\n const s = size || 'medium';\n return ['small', 'medium', 'large'].includes(s)\n ? theme.sizes[s]\n : Number(s.replace(/^([0-9]+(\\.[0-9]+)?).*/, '$1')) || 1; // Extract the number\n }, [size, theme.sizes]);\n\n const paddingBottom = useMemo(() => {\n const paddingEm = isMinXs\n ? theme.menuPaddingVertical\n : theme.modalBodyPaddingVertical[0];\n return paddingEm * fontSize * scaleFactor;\n }, [\n isMinXs,\n theme.menuPaddingVertical,\n theme.modalBodyPaddingVertical,\n fontSize,\n scaleFactor,\n ]);\n\n const paddingTop = useMemo(\n () => (searchVisible ? 5 * scaleFactor : paddingBottom),\n [searchVisible, scaleFactor, paddingBottom]\n );\n\n const searchInputHeight = useMemo(\n () =>\n searchVisible\n ? (theme.baseHeight + theme.menuPaddingVertical) *\n fontSize *\n scaleFactor\n : 0,\n [\n searchVisible,\n theme.baseHeight,\n theme.menuPaddingVertical,\n fontSize,\n scaleFactor,\n ]\n );\n\n const itemSize = useMemo(\n () => theme.menuItemHeight * fontSize * scaleFactor,\n [theme.menuItemHeight, fontSize, scaleFactor]\n );\n\n const height = useMemo(() => {\n // Modal\n if (!isMinXs) {\n const maxHeight =\n windowSize.height -\n theme.modalHeaderHeight * fontSize * scaleFactor -\n searchInputHeight;\n const curHeight =\n options.length * itemSize + paddingTop + paddingBottom;\n return curHeight < maxHeight ? curHeight : maxHeight;\n }\n // Popover\n const count =\n options.length < visibleCount ? options.length : visibleCount;\n return count * itemSize + paddingTop + paddingBottom;\n }, [\n isMinXs,\n options.length,\n visibleCount,\n itemSize,\n windowSize.height,\n theme.modalHeaderHeight,\n fontSize,\n scaleFactor,\n searchInputHeight,\n paddingTop,\n paddingBottom,\n ]);\n\n const scrollHandler = useRWLoadNext({\n itemCount: options.length,\n threshold,\n itemSize,\n paddingTop,\n height,\n onLoadNext,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const InnerElement = useCallback(\n ({ style, ...innerElementRest }) => (\n <div\n style={{\n ...style,\n height: `${\n parseFloat(style.height) + paddingTop + paddingBottom\n }px`,\n }}\n role='listbox'\n id={listBoxId}\n {...innerElementRest}\n />\n ),\n [listBoxId, paddingBottom, paddingTop]\n );\n\n const listItemFn = useCallback(\n ({ index, style }) => {\n const {\n title: optionTitle,\n value: optionValue,\n onClick: optionOnClick,\n ...restOption\n } = options[index];\n return (\n <MenuItem\n style={{\n ...style,\n top: `${\n parseFloat(style.top ? style.top.toString() : '0') + paddingTop\n }px`,\n }}\n selected={\n (multiple &&\n (forwardedValue || []).includes(optionValue || '')) ||\n (!multiple && forwardedValue === optionValue)\n }\n onClick={(e) => {\n if (!optionValue) return;\n onSelect(optionValue);\n\n // Focus the input.\n // Otherwise, if multiple is false and the user presses enter to select an item,\n // the input will lose focus.\n if (containerRef.current && !multiple) {\n containerRef.current.focus();\n }\n\n if (optionOnClick) optionOnClick(e);\n }}\n role='option'\n aria-selected={\n (multiple &&\n (forwardedValue || []).includes(optionValue || '')) ||\n (!multiple && forwardedValue === optionValue)\n }\n {...restOption}\n >\n {optionTitle}\n </MenuItem>\n );\n },\n [containerRef, forwardedValue, multiple, onSelect, options, paddingTop]\n );\n\n return (\n <>\n <SelectContainer\n opened={opened}\n unbordered={unbordered}\n disabled={disabled}\n size={size}\n tabIndex={!disabled ? 0 : -1}\n onClick={() => {\n if (disabled) return;\n setOpened(!opened);\n }}\n onKeyDown={(e) => {\n if (disabled) return;\n if (['Enter', ' '].includes(e.key)) {\n setOpened(!opened);\n e.preventDefault();\n }\n }}\n onMouseDown={(e) => e.preventDefault()}\n onBlur={blurHandler}\n role='combobox'\n aria-disabled={disabled}\n aria-busy={loading}\n aria-haspopup='listbox'\n aria-owns={listBoxId}\n {...rest}\n ref={mergedContainerRef}\n >\n <ToggleContainer>\n {left && (\n <ThemeOverrider\n overrides={(t) => ({\n buttonPaddingHorizontal: 0.8,\n baseHeight: t.selectToggleListItemHeight / t.sizes.small,\n })}\n >\n <ToggleLeftAddon hasPadding={leftHasPadding}>\n {left}\n </ToggleLeftAddon>\n </ThemeOverrider>\n )}\n\n <ToggleContent\n hasLeft={!!left}\n hasRight={!!right}\n unbordered={unbordered}\n >\n {toggleContent}\n </ToggleContent>\n\n {toggleRightValue && (\n <ThemeOverrider\n overrides={(t) => ({\n buttonPaddingHorizontal: 0.8,\n baseHeight: t.selectToggleListItemHeight / t.sizes.small,\n })}\n >\n <ToggleRightAddon hasPadding={toggleRightHasPaddingValue}>\n {toggleRightValue}\n </ToggleRightAddon>\n </ThemeOverrider>\n )}\n </ToggleContainer>\n </SelectContainer>\n\n <SelectMenu\n trigger={containerRef}\n visible={opened}\n onClose={() => setOpened(false)}\n size={size}\n width={width}\n closeOnSelect={!multiple}\n modalTitle={placeholder}\n placement={placement}\n >\n {searchVisible && (\n <InputSearchContainer ref={inputSearchContainerRef}>\n <InputSearch {...searchProps} />\n </InputSearchContainer>\n )}\n\n {options.length > 0 ? (\n <FixedSizeList\n width='100%'\n height={height}\n itemSize={itemSize}\n itemCount={options.length}\n overscanCount={overscanCount}\n onScroll={({ scrollOffset }) => scrollHandler(scrollOffset)}\n innerElementType={InnerElement}\n >\n {listItemFn}\n </FixedSizeList>\n ) : (\n <NotFound>{notFoundText}</NotFound>\n )}\n </SelectMenu>\n </>\n );\n }\n);\n\nSelect.displayName = 'Select';\n\nexport default Select;\n"],"mappings":"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"}
|
|
@@ -21,10 +21,10 @@ interface BaseDatePickerProps<T> extends JsxDivProps, WithSize {
|
|
|
21
21
|
onChange?: (value: T | null) => void;
|
|
22
22
|
onClose?: () => void;
|
|
23
23
|
}
|
|
24
|
-
interface DateNotRangePickerProps extends BaseDatePickerProps<Date> {
|
|
24
|
+
export interface DateNotRangePickerProps extends BaseDatePickerProps<Date> {
|
|
25
25
|
range?: false;
|
|
26
26
|
}
|
|
27
|
-
interface DateRangePickerProps extends BaseDatePickerProps<[Date, Date]> {
|
|
27
|
+
export interface DateRangePickerProps extends BaseDatePickerProps<[Date, Date]> {
|
|
28
28
|
range: true;
|
|
29
29
|
}
|
|
30
30
|
export type DatePickerProps = DateNotRangePickerProps | DateRangePickerProps;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/DatePicker/index.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAIjB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAO7C,OAAO,KAON,MAAM,OAAO,CAAC;AAiBf,KAAK,WAAW,GAAG,IAAI,CACrB,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAC5B,OAAO,GAAG,cAAc,GAAG,UAAU,GAAG,KAAK,CAC9C,CAAC;AACF,UAAU,mBAAmB,CAAC,CAAC,CAAE,SAAQ,WAAW,EAAE,QAAQ;IAK5D,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAMvB,cAAc,CAAC,EAAE,OAAO,CAAC;IAKzB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAMxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAK1B,WAAW,CAAC,EAAE,MAAM,CAAC;IAKrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAKnB,SAAS,CAAC,EAAE,OAAO,CAAC;IAKpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAKnB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC;IAK9B,cAAc,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAKrC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAK1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAKnB,YAAY,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAKrC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IAKjB,YAAY,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IAKxB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IAKrC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AACD,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/DatePicker/index.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAIjB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAO7C,OAAO,KAON,MAAM,OAAO,CAAC;AAiBf,KAAK,WAAW,GAAG,IAAI,CACrB,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAC5B,OAAO,GAAG,cAAc,GAAG,UAAU,GAAG,KAAK,CAC9C,CAAC;AACF,UAAU,mBAAmB,CAAC,CAAC,CAAE,SAAQ,WAAW,EAAE,QAAQ;IAK5D,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAMvB,cAAc,CAAC,EAAE,OAAO,CAAC;IAKzB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAMxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAK1B,WAAW,CAAC,EAAE,MAAM,CAAC;IAKrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAKnB,SAAS,CAAC,EAAE,OAAO,CAAC;IAKpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAKnB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC;IAK9B,cAAc,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAKrC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAK1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAKnB,YAAY,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAKrC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IAKjB,YAAY,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IAKxB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IAKrC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AACD,MAAM,WAAW,uBAAwB,SAAQ,mBAAmB,CAAC,IAAI,CAAC;IAKxE,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AACD,MAAM,WAAW,oBACf,SAAQ,mBAAmB,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAKzC,KAAK,EAAE,IAAI,CAAC;CACb;AACD,MAAM,MAAM,eAAe,GAAG,uBAAuB,GAAG,oBAAoB,CAAC;AAyC7E,QAAA,MAAM,UAAU,wFAsXf,CAAC;AAIF,eAAe,UAAU,CAAC"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
type Side = 'top' | 'left' | 'right' | 'bottom';
|
|
2
|
+
type Alignment = 'start' | 'end';
|
|
3
|
+
type AlignedPlacement = `${Side}-${Alignment}`;
|
|
4
|
+
export type Placement = Side | AlignedPlacement;
|
|
2
5
|
export interface Rect {
|
|
3
6
|
top: number;
|
|
4
7
|
left: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePopoverPosition.d.ts","sourceRoot":"","sources":["../../../../src/Popover/utils/usePopoverPosition.ts"],"names":[],"mappings":"AAGA,
|
|
1
|
+
{"version":3,"file":"usePopoverPosition.d.ts","sourceRoot":"","sources":["../../../../src/Popover/utils/usePopoverPosition.ts"],"names":[],"mappings":"AAGA,KAAK,IAAI,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAChD,KAAK,SAAS,GAAG,OAAO,GAAG,KAAK,CAAC;AACjC,KAAK,gBAAgB,GAAG,GAAG,IAAI,IAAI,SAAS,EAAE,CAAC;AAE/C,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,gBAAgB,CAAC;AAEhD,MAAM,WAAW,IAAI;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,uBAAuB;IAI/B,WAAW,EAAE,IAAI,CAAC;IAIlB,WAAW,EAAE,IAAI,CAAC;IAKlB,SAAS,CAAC,EAAE,SAAS,CAAC;IAKtB,GAAG,CAAC,EAAE,MAAM,CAAC;IAKb,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AA6ID,UAAU,eAAe;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAOD,QAAA,MAAM,kBAAkB,wDAMrB,uBAAuB,KAAG,eAgB5B,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
|
|
@@ -35,10 +35,10 @@ interface BaseSelectProps<T> extends JsxDivProps, WithSize, Pick<PopoverProps, '
|
|
|
35
35
|
onLoadNext?: () => void;
|
|
36
36
|
onClose?: () => void;
|
|
37
37
|
}
|
|
38
|
-
interface SelectNotMultipleProps extends BaseSelectProps<string | null> {
|
|
38
|
+
export interface SelectNotMultipleProps extends BaseSelectProps<string | null> {
|
|
39
39
|
multiple?: false;
|
|
40
40
|
}
|
|
41
|
-
interface SelectMultipleProps extends BaseSelectProps<string[]> {
|
|
41
|
+
export interface SelectMultipleProps extends BaseSelectProps<string[]> {
|
|
42
42
|
multiple: true;
|
|
43
43
|
}
|
|
44
44
|
export type SelectProps = SelectNotMultipleProps | SelectMultipleProps;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Select/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAIL,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAY3B,OAAO,KAON,MAAM,OAAO,CAAC;AAIf,OAAoB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAG/D,OAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAsB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEpE,MAAM,WAAW,MAAO,SAAQ,aAAa;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,KAAK,WAAW,GAAG,IAAI,CACrB,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAC5B,OAAO,GAAG,cAAc,GAAG,UAAU,GAAG,KAAK,CAC9C,CAAC;AACF,UAAU,eAAe,CAAC,CAAC,CACzB,SAAQ,WAAW,EACjB,QAAQ,EACR,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC;IAKjC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAKnB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAMvB,cAAc,CAAC,EAAE,OAAO,CAAC;IAKzB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAMxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAK1B,WAAW,CAAC,EAAE,MAAM,CAAC;IAKrB,aAAa,CAAC,EAAE,OAAO,CAAC;IAKxB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAK/B,YAAY,CAAC,EAAE,MAAM,CAAC;IAKtB,UAAU,CAAC,EAAE,OAAO,CAAC;IAKrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAKlB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAKnB,SAAS,CAAC,EAAE,OAAO,CAAC;IAKpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAKnB,YAAY,CAAC,EAAE,OAAO,CAAC;IAKvB,SAAS,CAAC,EAAE,MAAM,CAAC;IAKnB,YAAY,CAAC,EAAE,MAAM,CAAC;IAKtB,aAAa,CAAC,EAAE,MAAM,CAAC;IAMvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAK1B,MAAM,CAAC,EAAE,YAAY,CAAC;IAKtB,KAAK,CAAC,EAAE,CAAC,CAAC;IAKV,YAAY,CAAC,EAAE,CAAC,CAAC;IAKjB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAK9B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IAKxB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AACD,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Select/index.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@os-design/core",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.195",
|
|
4
4
|
"license": "UNLICENSED",
|
|
5
5
|
"repository": "git@gitlab.com:os-team/libs/os-design.git",
|
|
6
6
|
"main": "dist/cjs/index.js",
|
|
@@ -58,5 +58,5 @@
|
|
|
58
58
|
"react": ">=18",
|
|
59
59
|
"react-dom": ">=18"
|
|
60
60
|
},
|
|
61
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "be3e18739331b09e77dced66d9d1dd0c06440126"
|
|
62
62
|
}
|