@os-design/core 1.0.183 → 1.0.185
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 +7 -8
- package/dist/cjs/DatePicker/index.js.map +1 -1
- package/dist/cjs/FormItem/index.js +42 -28
- package/dist/cjs/FormItem/index.js.map +1 -1
- package/dist/cjs/MenuGroup/index.js +37 -16
- package/dist/cjs/MenuGroup/index.js.map +1 -1
- package/dist/cjs/Select/index.js +321 -63
- package/dist/cjs/Select/index.js.map +1 -1
- package/dist/esm/DatePicker/index.js +5 -6
- package/dist/esm/DatePicker/index.js.map +1 -1
- package/dist/esm/FormItem/index.js +37 -25
- package/dist/esm/FormItem/index.js.map +1 -1
- package/dist/esm/MenuGroup/index.js +44 -32
- package/dist/esm/MenuGroup/index.js.map +1 -1
- package/dist/esm/Select/index.js +342 -59
- package/dist/esm/Select/index.js.map +1 -1
- package/dist/types/DatePicker/index.d.ts.map +1 -1
- package/dist/types/FormItem/index.d.ts +2 -2
- package/dist/types/FormItem/index.d.ts.map +1 -1
- package/dist/types/MenuGroup/index.d.ts +13 -6
- package/dist/types/MenuGroup/index.d.ts.map +1 -1
- package/dist/types/Select/index.d.ts +65 -7
- package/dist/types/Select/index.d.ts.map +1 -1
- package/package.json +3 -3
- package/dist/cjs/Select/SelectList.js +0 -146
- package/dist/cjs/Select/SelectList.js.map +0 -1
- package/dist/cjs/Select/SelectToggle.js +0 -195
- package/dist/cjs/Select/SelectToggle.js.map +0 -1
- package/dist/esm/Select/SelectList.js +0 -125
- package/dist/esm/Select/SelectList.js.map +0 -1
- package/dist/esm/Select/SelectToggle.js +0 -217
- package/dist/esm/Select/SelectToggle.js.map +0 -1
- package/dist/types/Select/SelectList.d.ts +0 -22
- package/dist/types/Select/SelectList.d.ts.map +0 -1
- package/dist/types/Select/SelectToggle.d.ts +0 -73
- package/dist/types/Select/SelectToggle.d.ts.map +0 -1
|
@@ -16,7 +16,6 @@ var _Button = _interopRequireDefault(require("../Button"));
|
|
|
16
16
|
var _Modal = _interopRequireDefault(require("../Modal"));
|
|
17
17
|
var _Popover = _interopRequireDefault(require("../Popover"));
|
|
18
18
|
var _Select = require("../Select");
|
|
19
|
-
var _SelectToggle = require("../Select/SelectToggle");
|
|
20
19
|
var _TimePicker = _interopRequireDefault(require("../TimePicker"));
|
|
21
20
|
var _DatePickerCalendar = _interopRequireDefault(require("./DatePickerCalendar"));
|
|
22
21
|
var _excluded = ["left", "leftHasPadding", "right", "rightHasPadding", "placeholder", "disabled", "autoFocus", "autoOpen", "format", "firstDayOfWeek", "locale", "showTime", "timeNotation", "range", "value", "defaultValue", "onChange", "onClose", "onBlur", "size"];
|
|
@@ -175,9 +174,9 @@ var DatePicker = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
175
174
|
}
|
|
176
175
|
},
|
|
177
176
|
"aria-label": locale.clearLabel
|
|
178
|
-
}, /*#__PURE__*/_react["default"].createElement(
|
|
177
|
+
}, /*#__PURE__*/_react["default"].createElement(_Select.ClearIcon, null)));
|
|
179
178
|
}
|
|
180
|
-
return right || /*#__PURE__*/_react["default"].createElement(
|
|
179
|
+
return right || /*#__PURE__*/_react["default"].createElement(_Select.ToggleIconContainer, null, opened ? /*#__PURE__*/_react["default"].createElement(_icons.Up, null) : /*#__PURE__*/_react["default"].createElement(_icons.Down, null));
|
|
181
180
|
}, [containerRef, disabled, locale.clearLabel, opened, right, setForwardedValue, valueIsSpecified]);
|
|
182
181
|
var firstTimePickerRef = (0, _react.useRef)(null);
|
|
183
182
|
var secondTimePickerRef = (0, _react.useRef)(null);
|
|
@@ -310,22 +309,22 @@ var DatePicker = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
310
309
|
baseHeight: t.selectToggleListItemHeight / t.sizes.small
|
|
311
310
|
};
|
|
312
311
|
}
|
|
313
|
-
}, /*#__PURE__*/_react["default"].createElement(
|
|
312
|
+
}, /*#__PURE__*/_react["default"].createElement(_Select.ToggleLeftAddon, {
|
|
314
313
|
hasPadding: leftHasPadding
|
|
315
|
-
}, left)), /*#__PURE__*/_react["default"].createElement(
|
|
314
|
+
}, left)), /*#__PURE__*/_react["default"].createElement(_Select.ToggleContent, {
|
|
316
315
|
hasLeft: !!left,
|
|
317
316
|
hasRight: !!right
|
|
318
|
-
}, valueIsSpecified ? /*#__PURE__*/_react["default"].createElement(
|
|
317
|
+
}, valueIsSpecified ? /*#__PURE__*/_react["default"].createElement(_Select.Title, {
|
|
319
318
|
disabled: disabled,
|
|
320
319
|
"aria-hidden": true
|
|
321
|
-
}, formattedValue) : /*#__PURE__*/_react["default"].createElement(
|
|
320
|
+
}, formattedValue) : /*#__PURE__*/_react["default"].createElement(_Select.Placeholder, null, placeholder)), rightValue && /*#__PURE__*/_react["default"].createElement(_theming.ThemeOverrider, {
|
|
322
321
|
overrides: function overrides(t) {
|
|
323
322
|
return {
|
|
324
323
|
buttonPaddingHorizontal: 0.8,
|
|
325
324
|
baseHeight: t.selectToggleListItemHeight / t.sizes.small
|
|
326
325
|
};
|
|
327
326
|
}
|
|
328
|
-
}, /*#__PURE__*/_react["default"].createElement(
|
|
327
|
+
}, /*#__PURE__*/_react["default"].createElement(_Select.ToggleRightAddon, {
|
|
329
328
|
hasPadding: rightHasPaddingValue
|
|
330
329
|
}, rightValue))), isMinXs ? /*#__PURE__*/_react["default"].createElement(StyledPopover, {
|
|
331
330
|
trigger: containerRef,
|
|
@@ -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 { SelectContainer } from '../Select';\nimport {\n ClearIcon,\n Content,\n IconContainer,\n LeftAddon,\n Placeholder,\n RightAddon,\n Title,\n} from '../Select/SelectToggle';\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 || <IconContainer>{opened ? <Up /> : <Down />}</IconContainer>\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 <LeftAddon hasPadding={leftHasPadding}>{left}</LeftAddon>\n </ThemeOverrider>\n )}\n\n <Content hasLeft={!!left} hasRight={!!right}>\n {valueIsSpecified ? (\n <Title disabled={disabled} aria-hidden>\n {formattedValue}\n </Title>\n ) : (\n <Placeholder>{placeholder}</Placeholder>\n )}\n </Content>\n\n {rightValue && (\n <ThemeOverrider\n overrides={(t) => ({\n buttonPaddingHorizontal: 0.8,\n baseHeight: t.selectToggleListItemHeight / t.sizes.small,\n })}\n >\n <RightAddon hasPadding={rightHasPaddingValue}>\n {rightValue}\n </RightAddon>\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}\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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"}
|
|
@@ -5,24 +5,27 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports["default"] = void 0;
|
|
8
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
9
8
|
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
10
9
|
var _styles = require("@os-design/styles");
|
|
11
|
-
var _utils = require("@os-design/utils");
|
|
12
10
|
var _theming = require("@os-design/theming");
|
|
13
|
-
var
|
|
14
|
-
var
|
|
15
|
-
var
|
|
16
|
-
var
|
|
17
|
-
var _InputSkeleton = _interopRequireDefault(require("../InputSkeleton"));
|
|
11
|
+
var _utils = require("@os-design/utils");
|
|
12
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
13
|
+
var _Checkbox = _interopRequireDefault(require("../Checkbox"));
|
|
14
|
+
var _CheckboxSkeleton = _interopRequireDefault(require("../CheckboxSkeleton"));
|
|
18
15
|
var _FormConfigContext = _interopRequireDefault(require("../Form/FormConfigContext"));
|
|
16
|
+
var _InputSkeleton = _interopRequireDefault(require("../InputSkeleton"));
|
|
17
|
+
var _RadioGroup = _interopRequireDefault(require("../RadioGroup"));
|
|
18
|
+
var _RadioGroupSkeleton = _interopRequireDefault(require("../RadioGroupSkeleton"));
|
|
19
19
|
var _Switch = _interopRequireDefault(require("../Switch"));
|
|
20
20
|
var _SwitchSkeleton = _interopRequireDefault(require("../SwitchSkeleton"));
|
|
21
|
-
var
|
|
21
|
+
var _TextArea = _interopRequireDefault(require("../TextArea"));
|
|
22
|
+
var _TextAreaSkeleton = _interopRequireDefault(require("../TextAreaSkeleton"));
|
|
23
|
+
var _firstChildHasType = _interopRequireDefault(require("./utils/firstChildHasType"));
|
|
24
|
+
var _excluded = ["label", "help", "error", "optional", "loading", "id", "children"];
|
|
22
25
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
|
|
23
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
24
26
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
25
27
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
28
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
26
29
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
27
30
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
28
31
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
@@ -36,14 +39,14 @@ var Label = _styled["default"].label(_templateObject2 || (_templateObject2 = _ta
|
|
|
36
39
|
var Optional = _styled["default"].span(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n color: ", ";\n margin-left: 0.3em;\n"])), function (p) {
|
|
37
40
|
return (0, _theming.clr)(p.theme.formItemColorOptional);
|
|
38
41
|
});
|
|
39
|
-
var
|
|
40
|
-
return p.hasError && (0, _react2.css)(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n color: ", ";\n "])), (0, _theming.clr)(p.theme.formItemColorError));
|
|
41
|
-
};
|
|
42
|
-
var Help = (0, _styled["default"])('div', (0, _utils.omitEmotionProps)('hasError'))(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n margin-top: 0.1em;\n font-size: ", "em;\n color: ", ";\n ", ";\n"])), function (p) {
|
|
42
|
+
var Help = _styled["default"].div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n margin-top: 0.1em;\n font-size: ", "em;\n color: ", ";\n"])), function (p) {
|
|
43
43
|
return p.theme.sizes.small;
|
|
44
44
|
}, function (p) {
|
|
45
45
|
return (0, _theming.clr)(p.theme.formItemColorHelp);
|
|
46
|
-
}
|
|
46
|
+
});
|
|
47
|
+
var Error = (0, _styled["default"])(Help)(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n color: ", ";\n"])), function (p) {
|
|
48
|
+
return (0, _theming.clr)(p.theme.formItemColorError);
|
|
49
|
+
});
|
|
47
50
|
|
|
48
51
|
/**
|
|
49
52
|
* The wrapper of the field.
|
|
@@ -51,10 +54,9 @@ var Help = (0, _styled["default"])('div', (0, _utils.omitEmotionProps)('hasError
|
|
|
51
54
|
var FormItem = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
52
55
|
var label = _ref.label,
|
|
53
56
|
help = _ref.help,
|
|
57
|
+
error = _ref.error,
|
|
54
58
|
_ref$optional = _ref.optional,
|
|
55
59
|
optional = _ref$optional === void 0 ? false : _ref$optional,
|
|
56
|
-
_ref$hasError = _ref.hasError,
|
|
57
|
-
hasError = _ref$hasError === void 0 ? false : _ref$hasError,
|
|
58
60
|
_ref$loading = _ref.loading,
|
|
59
61
|
loading = _ref$loading === void 0 ? false : _ref$loading,
|
|
60
62
|
id = _ref.id,
|
|
@@ -71,13 +73,16 @@ var FormItem = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
71
73
|
var helpId = (0, _react.useMemo)(function () {
|
|
72
74
|
return "help-".concat(containerId);
|
|
73
75
|
}, [containerId]);
|
|
74
|
-
var
|
|
75
|
-
var c = /*#__PURE__*/_react["default"].isValidElement(children) ?
|
|
76
|
+
var input = (0, _react.useMemo)(function () {
|
|
77
|
+
var c = /*#__PURE__*/_react["default"].isValidElement(children) ?
|
|
78
|
+
/*#__PURE__*/
|
|
79
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
80
|
+
_react["default"].cloneElement(children, {
|
|
76
81
|
id: fieldId,
|
|
77
|
-
'aria-invalid':
|
|
82
|
+
'aria-invalid': !!error,
|
|
78
83
|
'aria-describedby': help ? helpId : undefined
|
|
79
84
|
}) : children;
|
|
80
|
-
if (!
|
|
85
|
+
if (!error) return c;
|
|
81
86
|
return /*#__PURE__*/_react["default"].createElement(_theming.ThemeOverrider, {
|
|
82
87
|
overrides: function overrides(theme) {
|
|
83
88
|
return {
|
|
@@ -85,12 +90,20 @@ var FormItem = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
85
90
|
};
|
|
86
91
|
}
|
|
87
92
|
}, c);
|
|
88
|
-
}, [children, fieldId, help, helpId
|
|
89
|
-
var
|
|
90
|
-
|
|
91
|
-
if ((0, _firstChildHasType["default"])(children, _Switch["default"])) return /*#__PURE__*/_react["default"].createElement(_SwitchSkeleton["default"], null);
|
|
92
|
-
return /*#__PURE__*/_react["default"].createElement(_InputSkeleton["default"], null);
|
|
93
|
+
}, [children, error, fieldId, help, helpId]);
|
|
94
|
+
var firstTypeIs = (0, _react.useCallback)(function (component) {
|
|
95
|
+
return (0, _firstChildHasType["default"])(children, component);
|
|
93
96
|
}, [children]);
|
|
97
|
+
var skeleton = (0, _react.useMemo)(function () {
|
|
98
|
+
if (firstTypeIs(_Checkbox["default"])) {
|
|
99
|
+
var firstChild = _react["default"].Children.toArray(children)[0];
|
|
100
|
+
return /*#__PURE__*/_react["default"].createElement(_CheckboxSkeleton["default"], null, /*#__PURE__*/_react["default"].isValidElement(firstChild) && firstChild.props.children);
|
|
101
|
+
}
|
|
102
|
+
if (firstTypeIs(_RadioGroup["default"])) return /*#__PURE__*/_react["default"].createElement(_RadioGroupSkeleton["default"], null);
|
|
103
|
+
if (firstTypeIs(_Switch["default"])) return /*#__PURE__*/_react["default"].createElement(_SwitchSkeleton["default"], null);
|
|
104
|
+
if (firstTypeIs(_TextArea["default"])) return /*#__PURE__*/_react["default"].createElement(_TextAreaSkeleton["default"], null);
|
|
105
|
+
return /*#__PURE__*/_react["default"].createElement(_InputSkeleton["default"], null);
|
|
106
|
+
}, [children, firstTypeIs]);
|
|
94
107
|
return /*#__PURE__*/_react["default"].createElement(Container, _extends({
|
|
95
108
|
role: "group",
|
|
96
109
|
id: id
|
|
@@ -98,9 +111,10 @@ var FormItem = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
98
111
|
ref: ref
|
|
99
112
|
}), label && /*#__PURE__*/_react["default"].createElement(Label, {
|
|
100
113
|
htmlFor: fieldId
|
|
101
|
-
}, label, optional && /*#__PURE__*/_react["default"].createElement(Optional, null, "(", optionalText, ")")), loading ?
|
|
102
|
-
|
|
103
|
-
|
|
114
|
+
}, label, optional && /*#__PURE__*/_react["default"].createElement(Optional, null, "(", optionalText, ")")), loading ? skeleton : input, error ? /*#__PURE__*/_react["default"].createElement(Error, {
|
|
115
|
+
"aria-live": "polite",
|
|
116
|
+
id: helpId
|
|
117
|
+
}, error) : help && /*#__PURE__*/_react["default"].createElement(Help, {
|
|
104
118
|
id: helpId
|
|
105
119
|
}, help));
|
|
106
120
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["Container","styled","omitEmotionProps","sizeStyles","Label","label","p","theme","sizes","small","clr","colorText","Optional","span","formItemColorOptional","
|
|
1
|
+
{"version":3,"file":"index.js","names":["Container","styled","omitEmotionProps","sizeStyles","Label","label","p","theme","sizes","small","clr","colorText","Optional","span","formItemColorOptional","Help","div","formItemColorHelp","Error","formItemColorError","FormItem","forwardRef","ref","help","error","optional","loading","id","children","rest","useContext","FormConfigContext","optionalText","containerId","useMemo","Math","random","toString","slice","fieldId","helpId","input","c","React","isValidElement","cloneElement","undefined","inputColorBorder","firstTypeIs","useCallback","component","firstChildHasType","skeleton","Checkbox","firstChild","Children","toArray","props","RadioGroup","Switch","TextArea","displayName"],"sources":["../../../src/FormItem/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport { sizeStyles, WithSize } from '@os-design/styles';\nimport { clr, ThemeOverrider } from '@os-design/theming';\nimport { omitEmotionProps } from '@os-design/utils';\nimport React, { forwardRef, useCallback, useContext, useMemo } from 'react';\nimport Checkbox from '../Checkbox';\nimport CheckboxSkeleton from '../CheckboxSkeleton';\nimport FormConfigContext from '../Form/FormConfigContext';\nimport InputSkeleton from '../InputSkeleton';\nimport RadioGroup from '../RadioGroup';\nimport RadioGroupSkeleton from '../RadioGroupSkeleton';\nimport Switch from '../Switch';\nimport SwitchSkeleton from '../SwitchSkeleton';\nimport TextArea from '../TextArea';\nimport TextAreaSkeleton from '../TextAreaSkeleton';\nimport firstChildHasType from './utils/firstChildHasType';\n\ntype JsxDivProps = Omit<JSX.IntrinsicElements['div'], 'ref'>;\nexport interface FormItemProps extends JsxDivProps, WithSize {\n /**\n * Label of the field.\n * @default undefined\n */\n label?: string;\n /**\n * The help message located at the bottom of the field.\n * @default undefined\n */\n help?: string;\n /**\n * The error message located at the bottom of the field.\n * If specified, the field has a red border.\n * @default undefined\n */\n error?: string;\n /**\n * Whether the field is optional.\n * @default false\n */\n optional?: boolean;\n /**\n * Whether the skeleton is displayed.\n * @default false\n */\n loading?: boolean;\n}\n\nconst Container = styled('div', omitEmotionProps('size'))<WithSize>`\n ${sizeStyles};\n`;\n\nconst Label = styled.label`\n display: inline-flex;\n align-items: center;\n margin-bottom: 0.4em;\n font-size: ${(p) => p.theme.sizes.small}em;\n color: ${(p) => clr(p.theme.colorText)};\n`;\n\nconst Optional = styled.span`\n color: ${(p) => clr(p.theme.formItemColorOptional)};\n margin-left: 0.3em;\n`;\n\nconst Help = styled.div`\n margin-top: 0.1em;\n font-size: ${(p) => p.theme.sizes.small}em;\n color: ${(p) => clr(p.theme.formItemColorHelp)};\n`;\n\nconst Error = styled(Help)`\n color: ${(p) => clr(p.theme.formItemColorError)};\n`;\n\n/**\n * The wrapper of the field.\n */\nconst FormItem = forwardRef<HTMLDivElement, FormItemProps>(\n (\n {\n label,\n help,\n error,\n optional = false,\n loading = false,\n id,\n children,\n ...rest\n },\n ref\n ) => {\n const { optionalText } = useContext(FormConfigContext);\n\n const containerId = useMemo(\n () => id || Math.random().toString(36).slice(2, 11),\n [id]\n );\n const fieldId = useMemo(() => `field-${containerId}`, [containerId]);\n const helpId = useMemo(() => `help-${containerId}`, [containerId]);\n\n const input = useMemo(() => {\n const c = React.isValidElement(children)\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\n React.cloneElement<any>(children, {\n id: fieldId,\n 'aria-invalid': !!error,\n 'aria-describedby': help ? helpId : undefined,\n })\n : children;\n\n if (!error) return c;\n\n return (\n <ThemeOverrider\n overrides={(theme) => ({\n inputColorBorder: theme.formItemColorError,\n })}\n >\n {c}\n </ThemeOverrider>\n );\n }, [children, error, fieldId, help, helpId]);\n\n const firstTypeIs = useCallback(\n (component: React.FC) => firstChildHasType(children, component),\n [children]\n );\n\n const skeleton = useMemo(() => {\n if (firstTypeIs(Checkbox)) {\n const firstChild = React.Children.toArray(children)[0];\n return (\n <CheckboxSkeleton>\n {React.isValidElement(firstChild) && firstChild.props.children}\n </CheckboxSkeleton>\n );\n }\n if (firstTypeIs(RadioGroup)) return <RadioGroupSkeleton />;\n if (firstTypeIs(Switch)) return <SwitchSkeleton />;\n if (firstTypeIs(TextArea)) return <TextAreaSkeleton />;\n return <InputSkeleton />;\n }, [children, firstTypeIs]);\n\n return (\n <Container role='group' id={id} {...rest} ref={ref}>\n {label && (\n <Label htmlFor={fieldId}>\n {label}\n {optional && <Optional>({optionalText})</Optional>}\n </Label>\n )}\n {loading ? skeleton : input}\n {error ? (\n <Error aria-live='polite' id={helpId}>\n {error}\n </Error>\n ) : (\n help && <Help id={helpId}>{help}</Help>\n )}\n </Container>\n );\n }\n);\n\nFormItem.displayName = 'FormItem';\n\nexport default FormItem;\n"],"mappings":"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"}
|
|
@@ -5,23 +5,27 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports["default"] = void 0;
|
|
8
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
9
8
|
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
10
|
-
var _theming = require("@os-design/theming");
|
|
11
|
-
var _styles = require("@os-design/styles");
|
|
12
|
-
var _utils = require("@os-design/utils");
|
|
13
9
|
var _media = require("@os-design/media");
|
|
14
10
|
var _menuUtils = require("@os-design/menu-utils");
|
|
11
|
+
var _styles = require("@os-design/styles");
|
|
12
|
+
var _theming = require("@os-design/theming");
|
|
13
|
+
var _utils = require("@os-design/utils");
|
|
14
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
15
15
|
var _MenuItem = _interopRequireDefault(require("../MenuItem"));
|
|
16
|
-
var _excluded = ["title", "maxSelectedItems", "value", "defaultValue", "onChange", "children"];
|
|
16
|
+
var _excluded = ["title", "multiple", "maxSelectedItems", "value", "defaultValue", "onChange", "children"];
|
|
17
17
|
var _templateObject, _templateObject2;
|
|
18
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
19
18
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
20
19
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
21
21
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
22
22
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
23
23
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
24
24
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
25
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
26
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
27
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
28
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
25
29
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
26
30
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
27
31
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
@@ -49,8 +53,10 @@ var Container = _styled["default"].div(_templateObject2 || (_templateObject2 = _
|
|
|
49
53
|
*/
|
|
50
54
|
var MenuGroup = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
51
55
|
var title = _ref.title,
|
|
56
|
+
_ref$multiple = _ref.multiple,
|
|
57
|
+
multiple = _ref$multiple === void 0 ? false : _ref$multiple,
|
|
52
58
|
_ref$maxSelectedItems = _ref.maxSelectedItems,
|
|
53
|
-
maxSelectedItems = _ref$maxSelectedItems === void 0 ?
|
|
59
|
+
maxSelectedItems = _ref$maxSelectedItems === void 0 ? 0 : _ref$maxSelectedItems,
|
|
54
60
|
value = _ref.value,
|
|
55
61
|
defaultValue = _ref.defaultValue,
|
|
56
62
|
_ref$onChange = _ref.onChange,
|
|
@@ -59,6 +65,7 @@ var MenuGroup = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
59
65
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
60
66
|
var _useContext = (0, _react.useContext)(_menuUtils.MenuContext),
|
|
61
67
|
closeOnSelect = _useContext.closeOnSelect;
|
|
68
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
62
69
|
var _useForwardedState = (0, _utils.useForwardedState)({
|
|
63
70
|
value: value,
|
|
64
71
|
defaultValue: defaultValue,
|
|
@@ -67,21 +74,35 @@ var MenuGroup = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
67
74
|
_useForwardedState2 = _slicedToArray(_useForwardedState, 2),
|
|
68
75
|
forwardedValue = _useForwardedState2[0],
|
|
69
76
|
setForwardedValue = _useForwardedState2[1];
|
|
70
|
-
var onSelect = (0,
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
77
|
+
var onSelect = (0, _react.useCallback)(function (v) {
|
|
78
|
+
if (multiple) {
|
|
79
|
+
// Delete the value because it was already selected
|
|
80
|
+
if ((forwardedValue || []).includes(v)) {
|
|
81
|
+
setForwardedValue((forwardedValue || []).filter(function (item) {
|
|
82
|
+
return item !== v;
|
|
83
|
+
}));
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// Add a new value if the number of selected items is less than max
|
|
88
|
+
if (maxSelectedItems === 0 || (forwardedValue || []).length < maxSelectedItems) {
|
|
89
|
+
setForwardedValue([].concat(_toConsumableArray(forwardedValue || []), [v]));
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
setForwardedValue(v);
|
|
95
|
+
}, [forwardedValue, maxSelectedItems, multiple, setForwardedValue]);
|
|
75
96
|
var menuItems = (0, _react.useMemo)(function () {
|
|
76
|
-
var selectedItems = forwardedValue || [];
|
|
77
97
|
return _react["default"].Children.map(children, function (child) {
|
|
78
98
|
if (! /*#__PURE__*/_react["default"].isValidElement(child) || child.type !== _MenuItem["default"]) return child;
|
|
79
99
|
var _child$props = child.props,
|
|
80
100
|
childValue = _child$props.value,
|
|
81
101
|
childOnClick = _child$props.onClick;
|
|
102
|
+
var selected = multiple && (forwardedValue || []).includes(childValue) || !multiple && forwardedValue === childValue;
|
|
82
103
|
return /*#__PURE__*/_react["default"].cloneElement(child, _objectSpread({
|
|
83
104
|
key: childValue,
|
|
84
|
-
selected:
|
|
105
|
+
selected: selected,
|
|
85
106
|
onClick: function onClick(e) {
|
|
86
107
|
if (!childValue) return;
|
|
87
108
|
onSelect(childValue);
|
|
@@ -89,10 +110,10 @@ var MenuGroup = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
89
110
|
}
|
|
90
111
|
}, !closeOnSelect ? {
|
|
91
112
|
role: maxSelectedItems === 1 ? 'menuitemradio' : 'menuitemcheckbox',
|
|
92
|
-
'aria-checked':
|
|
113
|
+
'aria-checked': selected
|
|
93
114
|
} : {}));
|
|
94
115
|
});
|
|
95
|
-
}, [children, closeOnSelect, forwardedValue, maxSelectedItems, onSelect]);
|
|
116
|
+
}, [children, closeOnSelect, forwardedValue, maxSelectedItems, multiple, onSelect]);
|
|
96
117
|
return /*#__PURE__*/_react["default"].createElement(Container, _extends({
|
|
97
118
|
role: maxSelectedItems === 1 ? 'radiogroup' : 'group'
|
|
98
119
|
}, rest, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["Title","styled","div","p","theme","sizes","small","clr","menuGroupColorTitle","modalBodyPaddingHorizontal","m","min","xs","ellipsisStyles","Container","menuGroupColorDivider","modalBodyPaddingVertical","MenuGroup","forwardRef","ref","title","maxSelectedItems","value","defaultValue","onChange","children","rest","useContext","MenuContext","closeOnSelect","useForwardedState","forwardedValue","setForwardedValue","onSelect","
|
|
1
|
+
{"version":3,"file":"index.js","names":["Title","styled","div","p","theme","sizes","small","clr","menuGroupColorTitle","modalBodyPaddingHorizontal","m","min","xs","ellipsisStyles","Container","menuGroupColorDivider","modalBodyPaddingVertical","MenuGroup","forwardRef","ref","title","multiple","maxSelectedItems","value","defaultValue","onChange","children","rest","useContext","MenuContext","closeOnSelect","useForwardedState","forwardedValue","setForwardedValue","onSelect","useCallback","v","includes","filter","item","length","menuItems","useMemo","React","Children","map","child","isValidElement","type","MenuItem","props","childValue","childOnClick","onClick","selected","cloneElement","key","e","role","displayName"],"sources":["../../../src/MenuGroup/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport { m } from '@os-design/media';\nimport { MenuContext } from '@os-design/menu-utils';\nimport { ellipsisStyles } from '@os-design/styles';\nimport { clr } from '@os-design/theming';\nimport { useForwardedState } from '@os-design/utils';\nimport React, { forwardRef, useCallback, useContext, useMemo } from 'react';\nimport MenuItem from '../MenuItem';\n\ntype JsxDivProps = Omit<\n JSX.IntrinsicElements['div'],\n 'defaultValue' | 'value' | 'onChange' | 'ref'\n>;\ninterface BaseMenuGroupProps<T> extends JsxDivProps {\n /**\n * The title of the menu group.\n * @default undefined\n */\n title?: string;\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 * Selected menu items.\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}\ninterface MenuGroupNotMultipleProps extends BaseMenuGroupProps<string | null> {\n /**\n * Is it possible to select multiple values.\n * @default false\n */\n multiple?: false;\n}\ninterface MenuGroupMultipleProps extends BaseMenuGroupProps<string[]> {\n /**\n * Is it possible to select multiple values.\n * @default false\n */\n multiple: true;\n}\nexport type MenuGroupProps = MenuGroupNotMultipleProps | MenuGroupMultipleProps;\n\nconst Title = styled.div`\n font-weight: 500;\n font-size: ${(p) => p.theme.sizes.small}em;\n color: ${(p) => clr(p.theme.menuGroupColorTitle)};\n margin-bottom: 0.4em;\n\n padding: 0 ${(p) => p.theme.modalBodyPaddingHorizontal[0]}em;\n ${m.min.xs} {\n padding: 0 0.8em;\n }\n\n ${ellipsisStyles};\n`;\n\nconst Container = styled.div`\n &:not(:last-of-type) {\n padding-bottom: 0.4em;\n border-bottom: 1px solid ${(p) => clr(p.theme.menuGroupColorDivider)};\n }\n &:not(:first-of-type) {\n margin-top: ${(p) => p.theme.modalBodyPaddingVertical[0]}em;\n ${m.min.xs} {\n margin-top: 0.4em;\n }\n }\n`;\n\n/**\n * The group of menu items.\n */\nconst MenuGroup = forwardRef<HTMLDivElement, MenuGroupProps>(\n (\n {\n title,\n multiple = false,\n maxSelectedItems = 0,\n value,\n defaultValue,\n onChange = () => {},\n children,\n ...rest\n },\n ref\n ) => {\n const { closeOnSelect } = useContext(MenuContext);\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 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 menuItems = useMemo(\n () =>\n React.Children.map(children, (child) => {\n if (!React.isValidElement(child) || child.type !== MenuItem)\n return child;\n const { value: childValue, onClick: childOnClick } = child.props;\n const selected =\n (multiple && (forwardedValue || []).includes(childValue)) ||\n (!multiple && forwardedValue === childValue);\n return React.cloneElement<any>(child, {\n key: childValue,\n selected,\n onClick: (e) => {\n if (!childValue) return;\n onSelect(childValue);\n if (childOnClick) childOnClick(e);\n },\n ...(!closeOnSelect\n ? {\n role:\n maxSelectedItems === 1\n ? 'menuitemradio'\n : 'menuitemcheckbox',\n 'aria-checked': selected,\n }\n : {}),\n });\n }),\n [\n children,\n closeOnSelect,\n forwardedValue,\n maxSelectedItems,\n multiple,\n onSelect,\n ]\n );\n\n return (\n <Container\n role={maxSelectedItems === 1 ? 'radiogroup' : 'group'}\n {...rest}\n ref={ref}\n >\n {title && <Title>{title}</Title>}\n {menuItems}\n </Container>\n );\n }\n);\n\nMenuGroup.displayName = 'MenuGroup';\n\nexport default MenuGroup;\n"],"mappings":"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"}
|