@alto-avios/alto-ui 5.2.0 → 5.4.0
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/assets/BannerSectionContent.css +1 -0
- package/dist/assets/BannerSectionPlectrum.css +1 -0
- package/dist/assets/Box.css +1 -1
- package/dist/assets/BoxLink.css +1 -0
- package/dist/assets/CalloutBanner.css +1 -1
- package/dist/assets/Carousel.css +1 -1
- package/dist/assets/CarouselButton.css +1 -1
- package/dist/assets/CategoryTileGroup.css +1 -0
- package/dist/assets/Input.css +1 -1
- package/dist/assets/IntroSection.css +1 -0
- package/dist/assets/Link.css +1 -1
- package/dist/assets/ProductTile.css +1 -0
- package/dist/assets/SelectCard.css +1 -1
- package/dist/assets/margin.css +1 -0
- package/dist/components/BannerSectionContent/BannerSectionContent.d.ts +31 -0
- package/dist/components/BannerSectionContent/BannerSectionContent.js +5 -0
- package/dist/components/BannerSectionContent/BannerSectionContent.js.map +1 -0
- package/dist/components/BannerSectionContent/index.d.ts +2 -0
- package/dist/components/BannerSectionContent/index.js +2 -0
- package/dist/components/BannerSectionContent/index.js.map +1 -0
- package/dist/components/BannerSectionPlectrum/BannerSectionPlectrum.d.ts +39 -0
- package/dist/components/BannerSectionPlectrum/BannerSectionPlectrum.js +9 -0
- package/dist/components/BannerSectionPlectrum/BannerSectionPlectrum.js.map +1 -0
- package/dist/components/BannerSectionPlectrum/index.d.ts +2 -0
- package/dist/components/BannerSectionPlectrum/index.js +2 -0
- package/dist/components/BannerSectionPlectrum/index.js.map +1 -0
- package/dist/components/Box/Box.d.ts +17 -6
- package/dist/components/Box/Box.js +2 -2
- package/dist/components/Box/Box.js.map +1 -1
- package/dist/components/BoxLink/BoxLink.d.ts +59 -0
- package/dist/components/BoxLink/BoxLink.js +3 -0
- package/dist/components/BoxLink/BoxLink.js.map +1 -0
- package/dist/components/BoxLink/BoxLinkContext.d.ts +24 -0
- package/dist/components/BoxLink/BoxLinkContext.js +2 -0
- package/dist/components/BoxLink/BoxLinkContext.js.map +1 -0
- package/dist/components/BoxLink/index.d.ts +4 -0
- package/dist/components/BoxLink/index.js +2 -0
- package/dist/components/BoxLink/index.js.map +1 -0
- package/dist/components/Button/Button.d.ts +1 -1
- package/dist/components/CalloutBanner/CalloutBanner.d.ts +2 -1
- package/dist/components/CalloutBanner/CalloutBanner.js +9 -9
- package/dist/components/CalloutBanner/CalloutBanner.js.map +1 -1
- package/dist/components/Carousel/Carousel.d.ts +29 -1
- package/dist/components/Carousel/Carousel.js +8 -8
- package/dist/components/Carousel/Carousel.js.map +1 -1
- package/dist/components/Carousel/CarouselButton/CarouselButton.d.ts +6 -0
- package/dist/components/Carousel/CarouselButton/CarouselButton.js +1 -1
- package/dist/components/Carousel/CarouselButton/CarouselButton.js.map +1 -1
- package/dist/components/Carousel/CarouselControls.js +1 -1
- package/dist/components/Carousel/CarouselControls.js.map +1 -1
- package/dist/components/Carousel/index.d.ts +2 -0
- package/dist/components/Carousel/index.js +1 -1
- package/dist/components/CategoryTileGroup/CategoryTileGroup.d.ts +52 -0
- package/dist/components/CategoryTileGroup/CategoryTileGroup.js +8 -0
- package/dist/components/CategoryTileGroup/CategoryTileGroup.js.map +1 -0
- package/dist/components/CategoryTileGroup/index.d.ts +2 -0
- package/dist/components/CategoryTileGroup/index.js +2 -0
- package/dist/components/CategoryTileGroup/index.js.map +1 -0
- package/dist/components/Checkbox/Checkbox.d.ts +1 -1
- package/dist/components/Checkbox/Checkbox.js +5 -5
- package/dist/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/CreditCardNumberField/CreditCardNumberField.d.ts +2 -1
- package/dist/components/CreditCardNumberField/CreditCardNumberField.js +4 -4
- package/dist/components/CreditCardNumberField/CreditCardNumberField.js.map +1 -1
- package/dist/components/CreditCardSecurityCodeField/CreditCardSecurityCodeField.d.ts +1 -1
- package/dist/components/CreditCardSecurityCodeField/CreditCardSecurityCodeField.js +6 -6
- package/dist/components/CreditCardSecurityCodeField/CreditCardSecurityCodeField.js.map +1 -1
- package/dist/components/DatePicker/DatePicker.d.ts +1 -1
- package/dist/components/DatePicker/DatePicker.js +3 -3
- package/dist/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/components/DateRangePicker/DateRangePicker.d.ts +1 -1
- package/dist/components/DateRangePicker/DateRangePicker.js +6 -6
- package/dist/components/DateRangePicker/DateRangePicker.js.map +1 -1
- package/dist/components/FieldHeader/FieldHeader.d.ts +1 -1
- package/dist/components/FieldHeader/FieldHeader.js +2 -2
- package/dist/components/FieldHeader/FieldHeader.js.map +1 -1
- package/dist/components/Form/Form.d.ts +1 -1
- package/dist/components/Form/Form.js +1 -1
- package/dist/components/Form/Form.js.map +1 -1
- package/dist/components/Heading/Heading.js +2 -2
- package/dist/components/Heading/Heading.js.map +1 -1
- package/dist/components/IntroSection/IntroSection.d.ts +42 -0
- package/dist/components/IntroSection/IntroSection.js +4 -0
- package/dist/components/IntroSection/IntroSection.js.map +1 -0
- package/dist/components/IntroSection/index.d.ts +2 -0
- package/dist/components/IntroSection/index.js +2 -0
- package/dist/components/IntroSection/index.js.map +1 -0
- package/dist/components/Label/Label.js +1 -1
- package/dist/components/Label/Label.js.map +1 -1
- package/dist/components/Link/Link.js +2 -3
- package/dist/components/Link/Link.js.map +1 -1
- package/dist/components/Menu/Menu.d.ts +4 -4
- package/dist/components/Menu/Menu.js +1 -1
- package/dist/components/Menu/Menu.js.map +1 -1
- package/dist/components/Paragraph/Paragraph.js +1 -1
- package/dist/components/Paragraph/Paragraph.js.map +1 -1
- package/dist/components/Popover/Popover.d.ts +1 -1
- package/dist/components/Popover/Popover.js.map +1 -1
- package/dist/components/ProductTile/ProductTile.d.ts +51 -0
- package/dist/components/ProductTile/ProductTile.js +7 -0
- package/dist/components/ProductTile/ProductTile.js.map +1 -0
- package/dist/components/ProductTile/index.d.ts +2 -0
- package/dist/components/ProductTile/index.js +2 -0
- package/dist/components/ProductTile/index.js.map +1 -0
- package/dist/components/Radio/Radio.d.ts +1 -1
- package/dist/components/Radio/Radio.js +1 -1
- package/dist/components/Radio/Radio.js.map +1 -1
- package/dist/components/SearchField/SearchField.d.ts +2 -1
- package/dist/components/SearchField/SearchField.js +4 -4
- package/dist/components/SearchField/SearchField.js.map +1 -1
- package/dist/components/Section/Section.d.ts +9 -1
- package/dist/components/Section/Section.js +3 -3
- package/dist/components/Section/Section.js.map +1 -1
- package/dist/components/SelectCard/SelectCard.d.ts +18 -9
- package/dist/components/SelectCard/SelectCard.js +5 -5
- package/dist/components/SelectCard/SelectCard.js.map +1 -1
- package/dist/components/Slider/Slider.d.ts +1 -1
- package/dist/components/Slider/Slider.js +12 -12
- package/dist/components/Slider/Slider.js.map +1 -1
- package/dist/components/SubHeading/SubHeading.js +1 -1
- package/dist/components/SubHeading/SubHeading.js.map +1 -1
- package/dist/components/_base/Input/Input.js +8 -8
- package/dist/components/index.d.ts +16 -2
- package/dist/components/index.js +1 -1
- package/dist/{flex-BJOhaXnU.js → flex-BfhdHBb6.js} +2 -2
- package/dist/flex-BfhdHBb6.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/margin-CCJx_ENX.js +2 -0
- package/dist/margin-CCJx_ENX.js.map +1 -0
- package/dist/useObjectRef-DIiuqtNU.js +2 -0
- package/dist/useObjectRef-DIiuqtNU.js.map +1 -0
- package/dist/utils/flex/flex.d.ts +20 -6
- package/dist/utils/flex/flex.js +1 -1
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +1 -1
- package/dist/utils/layout/hooks/useFitCount.d.ts +74 -0
- package/dist/utils/layout/hooks/useFitCount.js +2 -0
- package/dist/utils/layout/hooks/useFitCount.js.map +1 -0
- package/dist/utils/margin/margin.d.ts +13 -0
- package/dist/utils/margin/margin.js +2 -0
- package/dist/utils/margin/margin.js.map +1 -0
- package/dist/utils/margin/margin.test.d.ts +1 -0
- package/dist/utils/position/position.d.ts +1 -1
- package/dist/utils/stories/DraggableContainer.js +7 -7
- package/dist/utils/stories/DraggableContainer.js.map +1 -1
- package/dist/utils/stories/IntroSectionWithCategoryTileGroup.d.ts +3 -0
- package/dist/utils/stories/IntroSectionWithCategoryTileGroup.js +5 -0
- package/dist/utils/stories/IntroSectionWithCategoryTileGroup.js.map +1 -0
- package/package.json +4 -2
- package/dist/assets/truncate.css +0 -1
- package/dist/flex-BJOhaXnU.js.map +0 -1
- package/dist/utils/truncate/truncate.d.ts +0 -6
- package/dist/utils/truncate/truncate.js +0 -2
- package/dist/utils/truncate/truncate.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.js","sources":["../../../src/components/DatePicker/DatePicker.tsx","../../../node_modules/react-stately/node_modules/react-stately/dist/private/datepicker/useDatePickerState.mjs"],"sourcesContent":["import { useRef } from 'react';\nimport styles from './DatePicker.module.css';\nimport IconButton, { type IconButtonProps } from '../IconButton';\nimport { useDatePickerState } from 'react-stately';\nimport {\n DateValue,\n useDatePicker,\n type AriaDatePickerProps,\n} from '@react-aria/datepicker';\nimport Popover from '../Popover';\nimport Calendar from '../Calendar';\nimport { type CalendarProps } from '../_base/Calendar';\nimport DateField, { type DateFieldProps } from '../DateField';\nimport { parseDateValue } from '../../utils/date/date';\nimport { DatePickerContext } from './DatePickerContext';\n\ntype WithoutSharedProps<T> = Omit<T, keyof DatePickerProps>;\n\n/**\n * Keys from AriaDatePickerProps that are incompatible with our DatePickerProps\n * They only use 'DateValue' when we need to use 'string | DateValue'\n */\ntype DateValueKeys =\n | 'defaultValue'\n | 'value'\n | 'onChange'\n | 'minValue'\n | 'maxValue'\n | 'isDateUnavailable';\n\nexport interface DatePickerProps\n extends Omit<AriaDatePickerProps<DateValue>, DateValueKeys> {\n /**\n * Label for the date field\n */\n label?: DateFieldProps['label'];\n /**\n * Description for the date field shown below the label\n */\n description?: DateFieldProps['description'];\n /**\n * The default value of the date field.\n */\n defaultValue?: string | DateValue;\n /**\n * The controlled value of the date field.\n */\n value?: string | DateValue;\n /**\n * Function called when the date field value changes\n */\n onChange?: (value: string) => void;\n /**\n * The minimum value of the date field.\n */\n minValue?: string | DateValue;\n /**\n * The maximum value of the date field.\n */\n maxValue?: string | DateValue;\n /**\n * Callback function to mark cells as unavailable. Unavailable cells will have `aria-disabled=\"true\"`\n */\n isDateUnavailable?: (date: string) => boolean;\n /**\n * Whether the date picker is disabled\n */\n isDisabled?: boolean;\n /**\n * Whether the date picker is invalid\n */\n isInvalid?: boolean;\n /**\n * Whether the date field is required\n */\n isRequired?: boolean;\n /**\n * Message shown when the field is invalid\n */\n errorMessage?: DateFieldProps['errorMessage'];\n /**\n * Props passed to the date field component\n */\n dateFieldProps?: WithoutSharedProps<Omit<DateFieldProps, 'children'>>;\n /**\n * Props passed to the calendar component\n */\n calendarProps?: WithoutSharedProps<CalendarProps>;\n}\n\nexport const DatePicker = (props: DatePickerProps) => {\n // Change string props to DateValue for internal manipulation\n const parsedProps = {\n ...props,\n // date value\n defaultValue: parseDateValue(props?.defaultValue),\n value: parseDateValue(props?.value),\n onChange: (dateValue: DateValue) =>\n props?.onChange?.(dateValue.toDate('UTC').toISOString()),\n // config\n minValue: parseDateValue(props?.minValue),\n maxValue: parseDateValue(props?.maxValue),\n isDateUnavailable: (dateValue: DateValue) =>\n props?.isDateUnavailable\n ? props.isDateUnavailable(dateValue.toDate('UTC').toISOString())\n : false,\n } as AriaDatePickerProps<DateValue>;\n\n const state = useDatePickerState(parsedProps);\n const positioningRef = useRef(null);\n\n const datePickerProps = useDatePicker(parsedProps, state, positioningRef);\n\n const dateFieldProps = {\n ...props.dateFieldProps,\n ...datePickerProps.fieldProps,\n granularity: 'day',\n hideTimeZone: true,\n label: props.label,\n description: props.description,\n errorMessage: props.errorMessage,\n } as DateFieldProps;\n\n const iconButtonProps = {\n ...datePickerProps.buttonProps,\n isInvalid: state.isInvalid,\n styleVariant: (() => {\n if (state.isInvalid) return 'critical';\n return state.isOpen ? 'accent' : 'neutral';\n })(),\n onClick: () => (state.isOpen ? state.close() : state.open()),\n } as IconButtonProps;\n\n const calendarComponentProps = {\n ...props.calendarProps,\n ...datePickerProps.calendarProps,\n } as CalendarProps;\n\n return (\n <div className={styles.datePicker} ref={positioningRef}>\n <DatePickerContext.Provider value={{ isInDatePicker: true }}>\n <DateField {...dateFieldProps}>\n <DateField.EndSlot>\n <IconButton\n {...iconButtonProps}\n size=\"sm\"\n emphasis=\"tertiary\"\n iconProps={{ iconName: 'calendar-days', iconPrefix: 'fas' }}\n />\n </DateField.EndSlot>\n </DateField>\n {state.isOpen && (\n <Popover\n state={state}\n triggerRef={positioningRef}\n placement=\"bottom start\"\n hasArrow={false}\n shouldFlip\n >\n <div\n role=\"dialog\"\n className={styles['datePicker__dialog']}\n {...datePickerProps.dialogProps}\n >\n <Calendar {...calendarComponentProps} />\n </div>\n </Popover>\n )}\n </DatePickerContext.Provider>\n </div>\n );\n};\n\nexport default DatePicker;\n","import {getFormatOptions as $8b141f2f71e88f85$export$7e319ea407e63bc0, getPlaceholderTime as $8b141f2f71e88f85$export$c5221a78ef73c5e9, getValidationResult as $8b141f2f71e88f85$export$f18627323ab57ac0, useDefaultProps as $8b141f2f71e88f85$export$2440da353cedad43} from \"./utils.mjs\";\nimport {useFormValidationState as $fd2148440a13ec26$export$fc1a364ae1f3ff10} from \"../form/useFormValidationState.mjs\";\nimport {useOverlayTriggerState as $f11fb0bcf1b2687a$export$61c6a8c84e605fb6} from \"../overlays/useOverlayTriggerState.mjs\";\nimport {useControlledState as $3e6197669829fe11$export$40bfa8c7b0832715} from \"../utils/useControlledState.mjs\";\nimport {toCalendarDate as $gC1o7$toCalendarDate, toCalendarDateTime as $gC1o7$toCalendarDateTime, DateFormatter as $gC1o7$DateFormatter} from \"@internationalized/date\";\nimport {useState as $gC1o7$useState, useMemo as $gC1o7$useMemo} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n\n\nfunction $28aae683a942e141$export$87194bb378cc3ac2(props) {\n let overlayState = (0, $f11fb0bcf1b2687a$export$61c6a8c84e605fb6)(props);\n let [value, setValue] = (0, $3e6197669829fe11$export$40bfa8c7b0832715)(props.value, props.defaultValue || null, props.onChange);\n let [initialValue] = (0, $gC1o7$useState)(value);\n let v = value || props.placeholderValue || null;\n let [granularity, defaultTimeZone] = (0, $8b141f2f71e88f85$export$2440da353cedad43)(v, props.granularity);\n let dateValue = value != null ? value.toDate(defaultTimeZone ?? 'UTC') : null;\n let hasTime = granularity === 'hour' || granularity === 'minute' || granularity === 'second';\n let shouldCloseOnSelect = props.shouldCloseOnSelect ?? true;\n let [selectedDate, setSelectedDate] = (0, $gC1o7$useState)(null);\n let [selectedTime, setSelectedTime] = (0, $gC1o7$useState)(null);\n if (value) {\n selectedDate = value;\n if ('hour' in value) selectedTime = value;\n }\n // props.granularity must actually exist in the value if one is provided.\n if (v && !(granularity in v)) throw new Error('Invalid granularity ' + granularity + ' for value ' + v.toString());\n let showEra = value?.calendar.identifier === 'gregory' && value.era === 'BC';\n let formatOpts = (0, $gC1o7$useMemo)(()=>({\n granularity: granularity,\n timeZone: defaultTimeZone,\n hideTimeZone: props.hideTimeZone,\n hourCycle: props.hourCycle,\n shouldForceLeadingZeros: props.shouldForceLeadingZeros,\n showEra: showEra\n }), [\n granularity,\n props.hourCycle,\n props.shouldForceLeadingZeros,\n defaultTimeZone,\n props.hideTimeZone,\n showEra\n ]);\n let { minValue: minValue, maxValue: maxValue, isDateUnavailable: isDateUnavailable } = props;\n let builtinValidation = (0, $gC1o7$useMemo)(()=>(0, $8b141f2f71e88f85$export$f18627323ab57ac0)(value, minValue, maxValue, isDateUnavailable, formatOpts), [\n value,\n minValue,\n maxValue,\n isDateUnavailable,\n formatOpts\n ]);\n let validation = (0, $fd2148440a13ec26$export$fc1a364ae1f3ff10)({\n ...props,\n value: value,\n builtinValidation: builtinValidation\n });\n let isValueInvalid = validation.displayValidation.isInvalid;\n let validationState = props.validationState || (isValueInvalid ? 'invalid' : null);\n let commitValue = (date, time)=>{\n setValue('timeZone' in time ? time.set((0, $gC1o7$toCalendarDate)(date)) : (0, $gC1o7$toCalendarDateTime)(date, time));\n setSelectedDate(null);\n setSelectedTime(null);\n validation.commitValidation();\n };\n // Intercept setValue to make sure the Time section is not changed by date selection in Calendar\n let selectDate = (newValue)=>{\n let shouldClose = typeof shouldCloseOnSelect === 'function' ? shouldCloseOnSelect() : shouldCloseOnSelect;\n if (hasTime) {\n if (selectedTime || shouldClose) commitValue(newValue, selectedTime || (0, $8b141f2f71e88f85$export$c5221a78ef73c5e9)(props.defaultValue || props.placeholderValue));\n else setSelectedDate(newValue);\n } else {\n setValue(newValue);\n validation.commitValidation();\n }\n if (shouldClose) overlayState.setOpen(false);\n };\n let selectTime = (newValue)=>{\n if (selectedDate && newValue) commitValue(selectedDate, newValue);\n else setSelectedTime(newValue);\n };\n return {\n ...validation,\n value: value,\n defaultValue: props.defaultValue ?? initialValue,\n setValue: setValue,\n dateValue: selectedDate,\n timeValue: selectedTime,\n setDateValue: selectDate,\n setTimeValue: selectTime,\n granularity: granularity,\n hasTime: hasTime,\n ...overlayState,\n setOpen (isOpen) {\n // Commit the selected date when the calendar is closed. Use a placeholder time if one wasn't set.\n // If only the time was set and not the date, don't commit. The state will be preserved until\n // the user opens the popover again.\n if (!isOpen && !value && selectedDate && hasTime) commitValue(selectedDate, selectedTime || (0, $8b141f2f71e88f85$export$c5221a78ef73c5e9)(props.defaultValue || props.placeholderValue));\n overlayState.setOpen(isOpen);\n },\n validationState: validationState,\n isInvalid: isValueInvalid,\n formatValue (locale, fieldOptions) {\n if (!dateValue) return '';\n let formatOptions = (0, $8b141f2f71e88f85$export$7e319ea407e63bc0)(fieldOptions, formatOpts);\n let formatter = new (0, $gC1o7$DateFormatter)(locale, formatOptions);\n return formatter.format(dateValue);\n },\n getDateFormatter (locale, formatOptions) {\n let newOptions = {\n ...formatOpts,\n ...formatOptions\n };\n let newFormatOptions = (0, $8b141f2f71e88f85$export$7e319ea407e63bc0)({}, newOptions);\n return new (0, $gC1o7$DateFormatter)(locale, newFormatOptions);\n }\n };\n}\n\n\nexport {$28aae683a942e141$export$87194bb378cc3ac2 as useDatePickerState};\n//# sourceMappingURL=useDatePickerState.mjs.map\n"],"names":["DatePicker","props","parsedProps","defaultValue","parseDateValue","value","onChange","dateValue","toDate","toISOString","minValue","maxValue","isDateUnavailable","state","overlayState","$f11fb0bcf1b2687a$export$61c6a8c84e605fb6","setValue","$3e6197669829fe11$export$40bfa8c7b0832715","initialValue","$gC1o7$useState","v","placeholderValue","granularity","defaultTimeZone","$8b141f2f71e88f85$export$2440da353cedad43","hasTime","shouldCloseOnSelect","selectedDate","setSelectedDate","selectedTime","setSelectedTime","Error","toString","showEra","calendar","identifier","era","formatOpts","$gC1o7$useMemo","timeZone","hideTimeZone","hourCycle","shouldForceLeadingZeros","builtinValidation","$8b141f2f71e88f85$export$f18627323ab57ac0","validation","$fd2148440a13ec26$export$fc1a364ae1f3ff10","isValueInvalid","displayValidation","isInvalid","validationState","commitValue","date","time","set","$gC1o7$toCalendarDate","$gC1o7$toCalendarDateTime","commitValidation","timeValue","setDateValue","newValue","shouldClose","$8b141f2f71e88f85$export$c5221a78ef73c5e9","setOpen","setTimeValue","isOpen","formatValue","locale","fieldOptions","formatOptions","$8b141f2f71e88f85$export$7e319ea407e63bc0","$gC1o7$DateFormatter","format","getDateFormatter","newOptions","newFormatOptions","useDatePickerState","positioningRef","useRef","datePickerProps","useDatePicker","dateFieldProps","fieldProps","label","description","errorMessage","iconButtonProps","buttonProps","styleVariant","onClick","close","open","calendarComponentProps","calendarProps","className","styles","datePicker","ref","children","jsxs","DatePickerContext","Provider","isInDatePicker","jsx","DateField","EndSlot","IconButton","size","emphasis","iconProps","iconName","iconPrefix","Popover","triggerRef","placement","hasArrow","shouldFlip","role","dialogProps","Calendar"],"mappings":"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","x_google_ignoreList":[1]}
|
|
1
|
+
{"version":3,"file":"DatePicker.js","sources":["../../../src/components/DatePicker/DatePicker.tsx","../../../node_modules/react-stately/node_modules/react-stately/dist/private/datepicker/useDatePickerState.mjs"],"sourcesContent":["import { forwardRef } from 'react';\nimport styles from './DatePicker.module.css';\nimport IconButton, { type IconButtonProps } from '../IconButton';\nimport { useDatePickerState } from 'react-stately';\nimport {\n DateValue,\n useDatePicker,\n type AriaDatePickerProps,\n} from '@react-aria/datepicker';\nimport Popover from '../Popover';\nimport Calendar from '../Calendar';\nimport { type CalendarProps } from '../_base/Calendar';\nimport DateField, { type DateFieldProps } from '../DateField';\nimport { parseDateValue } from '../../utils/date/date';\nimport { DatePickerContext } from './DatePickerContext';\nimport { useObjectRef } from '@react-aria/utils';\n\ntype WithoutSharedProps<T> = Omit<T, keyof DatePickerProps>;\n\n/**\n * Keys from AriaDatePickerProps that are incompatible with our DatePickerProps\n * They only use 'DateValue' when we need to use 'string | DateValue'\n */\ntype DateValueKeys =\n | 'defaultValue'\n | 'value'\n | 'onChange'\n | 'minValue'\n | 'maxValue'\n | 'isDateUnavailable';\n\nexport interface DatePickerProps\n extends Omit<AriaDatePickerProps<DateValue>, DateValueKeys> {\n /**\n * Label for the date field\n */\n label?: DateFieldProps['label'];\n /**\n * Description for the date field shown below the label\n */\n description?: DateFieldProps['description'];\n /**\n * The default value of the date field.\n */\n defaultValue?: string | DateValue;\n /**\n * The controlled value of the date field.\n */\n value?: string | DateValue;\n /**\n * Function called when the date field value changes\n */\n onChange?: (value: string) => void;\n /**\n * The minimum value of the date field.\n */\n minValue?: string | DateValue;\n /**\n * The maximum value of the date field.\n */\n maxValue?: string | DateValue;\n /**\n * Callback function to mark cells as unavailable. Unavailable cells will have `aria-disabled=\"true\"`\n */\n isDateUnavailable?: (date: string) => boolean;\n /**\n * Whether the date picker is disabled\n */\n isDisabled?: boolean;\n /**\n * Whether the date picker is invalid\n */\n isInvalid?: boolean;\n /**\n * Whether the date field is required\n */\n isRequired?: boolean;\n /**\n * Message shown when the field is invalid\n */\n errorMessage?: DateFieldProps['errorMessage'];\n /**\n * Props passed to the date field component\n */\n dateFieldProps?: WithoutSharedProps<Omit<DateFieldProps, 'children'>>;\n /**\n * Props passed to the calendar component\n */\n calendarProps?: WithoutSharedProps<CalendarProps>;\n}\n\nexport const DatePicker = forwardRef<HTMLDivElement, DatePickerProps>(\n (props, forwardedRef) => {\n // Change string props to DateValue for internal manipulation\n const parsedProps = {\n ...props,\n // date value\n defaultValue: parseDateValue(props?.defaultValue),\n value: parseDateValue(props?.value),\n onChange: (dateValue: DateValue) =>\n props?.onChange?.(dateValue.toDate('UTC').toISOString()),\n // config\n minValue: parseDateValue(props?.minValue),\n maxValue: parseDateValue(props?.maxValue),\n isDateUnavailable: (dateValue: DateValue) =>\n props?.isDateUnavailable\n ? props.isDateUnavailable(dateValue.toDate('UTC').toISOString())\n : false,\n } as AriaDatePickerProps<DateValue>;\n\n const state = useDatePickerState(parsedProps);\n const positioningRef = useObjectRef(forwardedRef);\n\n const datePickerProps = useDatePicker(parsedProps, state, positioningRef);\n\n const dateFieldProps = {\n ...props.dateFieldProps,\n ...datePickerProps.fieldProps,\n granularity: 'day',\n hideTimeZone: true,\n label: props.label,\n description: props.description,\n errorMessage: props.errorMessage,\n } as DateFieldProps;\n\n const iconButtonProps = {\n ...datePickerProps.buttonProps,\n isInvalid: state.isInvalid,\n styleVariant: (() => {\n if (state.isInvalid) return 'critical';\n return state.isOpen ? 'accent' : 'neutral';\n })(),\n onClick: () => (state.isOpen ? state.close() : state.open()),\n } as IconButtonProps;\n\n const calendarComponentProps = {\n ...props.calendarProps,\n ...datePickerProps.calendarProps,\n } as CalendarProps;\n\n return (\n <div className={styles.datePicker} ref={positioningRef}>\n <DatePickerContext.Provider value={{ isInDatePicker: true }}>\n <DateField {...dateFieldProps}>\n <DateField.EndSlot>\n <IconButton\n {...iconButtonProps}\n size=\"sm\"\n emphasis=\"tertiary\"\n iconProps={{ iconName: 'calendar-days', iconPrefix: 'fas' }}\n />\n </DateField.EndSlot>\n </DateField>\n {state.isOpen && (\n <Popover\n state={state}\n triggerRef={positioningRef}\n placement=\"bottom start\"\n hasArrow={false}\n shouldFlip\n >\n <div\n role=\"dialog\"\n className={styles['datePicker__dialog']}\n {...datePickerProps.dialogProps}\n >\n <Calendar {...calendarComponentProps} />\n </div>\n </Popover>\n )}\n </DatePickerContext.Provider>\n </div>\n );\n },\n);\nDatePicker.displayName = 'DatePicker';\n\nexport default DatePicker;\n","import {getFormatOptions as $8b141f2f71e88f85$export$7e319ea407e63bc0, getPlaceholderTime as $8b141f2f71e88f85$export$c5221a78ef73c5e9, getValidationResult as $8b141f2f71e88f85$export$f18627323ab57ac0, useDefaultProps as $8b141f2f71e88f85$export$2440da353cedad43} from \"./utils.mjs\";\nimport {useFormValidationState as $fd2148440a13ec26$export$fc1a364ae1f3ff10} from \"../form/useFormValidationState.mjs\";\nimport {useOverlayTriggerState as $f11fb0bcf1b2687a$export$61c6a8c84e605fb6} from \"../overlays/useOverlayTriggerState.mjs\";\nimport {useControlledState as $3e6197669829fe11$export$40bfa8c7b0832715} from \"../utils/useControlledState.mjs\";\nimport {toCalendarDate as $gC1o7$toCalendarDate, toCalendarDateTime as $gC1o7$toCalendarDateTime, DateFormatter as $gC1o7$DateFormatter} from \"@internationalized/date\";\nimport {useState as $gC1o7$useState, useMemo as $gC1o7$useMemo} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n\n\nfunction $28aae683a942e141$export$87194bb378cc3ac2(props) {\n let overlayState = (0, $f11fb0bcf1b2687a$export$61c6a8c84e605fb6)(props);\n let [value, setValue] = (0, $3e6197669829fe11$export$40bfa8c7b0832715)(props.value, props.defaultValue || null, props.onChange);\n let [initialValue] = (0, $gC1o7$useState)(value);\n let v = value || props.placeholderValue || null;\n let [granularity, defaultTimeZone] = (0, $8b141f2f71e88f85$export$2440da353cedad43)(v, props.granularity);\n let dateValue = value != null ? value.toDate(defaultTimeZone ?? 'UTC') : null;\n let hasTime = granularity === 'hour' || granularity === 'minute' || granularity === 'second';\n let shouldCloseOnSelect = props.shouldCloseOnSelect ?? true;\n let [selectedDate, setSelectedDate] = (0, $gC1o7$useState)(null);\n let [selectedTime, setSelectedTime] = (0, $gC1o7$useState)(null);\n if (value) {\n selectedDate = value;\n if ('hour' in value) selectedTime = value;\n }\n // props.granularity must actually exist in the value if one is provided.\n if (v && !(granularity in v)) throw new Error('Invalid granularity ' + granularity + ' for value ' + v.toString());\n let showEra = value?.calendar.identifier === 'gregory' && value.era === 'BC';\n let formatOpts = (0, $gC1o7$useMemo)(()=>({\n granularity: granularity,\n timeZone: defaultTimeZone,\n hideTimeZone: props.hideTimeZone,\n hourCycle: props.hourCycle,\n shouldForceLeadingZeros: props.shouldForceLeadingZeros,\n showEra: showEra\n }), [\n granularity,\n props.hourCycle,\n props.shouldForceLeadingZeros,\n defaultTimeZone,\n props.hideTimeZone,\n showEra\n ]);\n let { minValue: minValue, maxValue: maxValue, isDateUnavailable: isDateUnavailable } = props;\n let builtinValidation = (0, $gC1o7$useMemo)(()=>(0, $8b141f2f71e88f85$export$f18627323ab57ac0)(value, minValue, maxValue, isDateUnavailable, formatOpts), [\n value,\n minValue,\n maxValue,\n isDateUnavailable,\n formatOpts\n ]);\n let validation = (0, $fd2148440a13ec26$export$fc1a364ae1f3ff10)({\n ...props,\n value: value,\n builtinValidation: builtinValidation\n });\n let isValueInvalid = validation.displayValidation.isInvalid;\n let validationState = props.validationState || (isValueInvalid ? 'invalid' : null);\n let commitValue = (date, time)=>{\n setValue('timeZone' in time ? time.set((0, $gC1o7$toCalendarDate)(date)) : (0, $gC1o7$toCalendarDateTime)(date, time));\n setSelectedDate(null);\n setSelectedTime(null);\n validation.commitValidation();\n };\n // Intercept setValue to make sure the Time section is not changed by date selection in Calendar\n let selectDate = (newValue)=>{\n let shouldClose = typeof shouldCloseOnSelect === 'function' ? shouldCloseOnSelect() : shouldCloseOnSelect;\n if (hasTime) {\n if (selectedTime || shouldClose) commitValue(newValue, selectedTime || (0, $8b141f2f71e88f85$export$c5221a78ef73c5e9)(props.defaultValue || props.placeholderValue));\n else setSelectedDate(newValue);\n } else {\n setValue(newValue);\n validation.commitValidation();\n }\n if (shouldClose) overlayState.setOpen(false);\n };\n let selectTime = (newValue)=>{\n if (selectedDate && newValue) commitValue(selectedDate, newValue);\n else setSelectedTime(newValue);\n };\n return {\n ...validation,\n value: value,\n defaultValue: props.defaultValue ?? initialValue,\n setValue: setValue,\n dateValue: selectedDate,\n timeValue: selectedTime,\n setDateValue: selectDate,\n setTimeValue: selectTime,\n granularity: granularity,\n hasTime: hasTime,\n ...overlayState,\n setOpen (isOpen) {\n // Commit the selected date when the calendar is closed. Use a placeholder time if one wasn't set.\n // If only the time was set and not the date, don't commit. The state will be preserved until\n // the user opens the popover again.\n if (!isOpen && !value && selectedDate && hasTime) commitValue(selectedDate, selectedTime || (0, $8b141f2f71e88f85$export$c5221a78ef73c5e9)(props.defaultValue || props.placeholderValue));\n overlayState.setOpen(isOpen);\n },\n validationState: validationState,\n isInvalid: isValueInvalid,\n formatValue (locale, fieldOptions) {\n if (!dateValue) return '';\n let formatOptions = (0, $8b141f2f71e88f85$export$7e319ea407e63bc0)(fieldOptions, formatOpts);\n let formatter = new (0, $gC1o7$DateFormatter)(locale, formatOptions);\n return formatter.format(dateValue);\n },\n getDateFormatter (locale, formatOptions) {\n let newOptions = {\n ...formatOpts,\n ...formatOptions\n };\n let newFormatOptions = (0, $8b141f2f71e88f85$export$7e319ea407e63bc0)({}, newOptions);\n return new (0, $gC1o7$DateFormatter)(locale, newFormatOptions);\n }\n };\n}\n\n\nexport {$28aae683a942e141$export$87194bb378cc3ac2 as useDatePickerState};\n//# sourceMappingURL=useDatePickerState.mjs.map\n"],"names":["DatePicker","forwardRef","props","forwardedRef","parsedProps","defaultValue","parseDateValue","value","onChange","dateValue","toDate","toISOString","minValue","maxValue","isDateUnavailable","state","overlayState","$f11fb0bcf1b2687a$export$61c6a8c84e605fb6","setValue","$3e6197669829fe11$export$40bfa8c7b0832715","initialValue","$gC1o7$useState","v","placeholderValue","granularity","defaultTimeZone","$8b141f2f71e88f85$export$2440da353cedad43","hasTime","shouldCloseOnSelect","selectedDate","setSelectedDate","selectedTime","setSelectedTime","Error","toString","showEra","calendar","identifier","era","formatOpts","$gC1o7$useMemo","timeZone","hideTimeZone","hourCycle","shouldForceLeadingZeros","builtinValidation","$8b141f2f71e88f85$export$f18627323ab57ac0","validation","$fd2148440a13ec26$export$fc1a364ae1f3ff10","isValueInvalid","displayValidation","isInvalid","validationState","commitValue","date","time","set","$gC1o7$toCalendarDate","$gC1o7$toCalendarDateTime","commitValidation","timeValue","setDateValue","newValue","shouldClose","$8b141f2f71e88f85$export$c5221a78ef73c5e9","setOpen","setTimeValue","isOpen","formatValue","locale","fieldOptions","formatOptions","$8b141f2f71e88f85$export$7e319ea407e63bc0","$gC1o7$DateFormatter","format","getDateFormatter","newOptions","newFormatOptions","useDatePickerState","positioningRef","useObjectRef","datePickerProps","useDatePicker","dateFieldProps","fieldProps","label","description","errorMessage","iconButtonProps","buttonProps","styleVariant","onClick","close","open","calendarComponentProps","calendarProps","className","styles","datePicker","ref","children","jsxs","DatePickerContext","Provider","isInDatePicker","jsx","DateField","EndSlot","IconButton","size","emphasis","iconProps","iconName","iconPrefix","Popover","triggerRef","placement","hasArrow","shouldFlip","role","dialogProps","Calendar","displayName"],"mappings":"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","x_google_ignoreList":[1]}
|
|
@@ -71,5 +71,5 @@ export interface DateRangePickerProps extends Omit<AriaDateRangePickerProps<Date
|
|
|
71
71
|
*/
|
|
72
72
|
calendarProps?: WithoutSharedProps<CalendarRangeProps>;
|
|
73
73
|
}
|
|
74
|
-
export declare const DateRangePicker: (
|
|
74
|
+
export declare const DateRangePicker: import('react').ForwardRefExoticComponent<DateRangePickerProps & import('react').RefAttributes<HTMLDivElement>>;
|
|
75
75
|
export default DateRangePicker;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{jsx as e,jsxs as a}from"react/jsx-runtime";import{useState as t,useMemo as r,
|
|
2
|
-
return e("div",{className:
|
|
3
|
-
/* @__PURE__ */a("div",{...
|
|
4
|
-
/* @__PURE__ */e(
|
|
5
|
-
/* @__PURE__ */e(
|
|
6
|
-
/* @__PURE__ */e(
|
|
1
|
+
import{jsx as e,jsxs as a}from"react/jsx-runtime";import{useState as t,useMemo as r,forwardRef as n}from"react";import{useDateRangePicker as l}from"@react-aria/datepicker";import{DateField as i}from"react-aria-components";import{$ as s}from"../../useObjectRef-DIiuqtNU.js";import{CalendarRange as o}from"../CalendarRange/CalendarRange.js";import{Popover as d}from"../Popover/Popover.js";import{IconButton as u}from"../IconButton/IconButton.js";import{d as m,D as c}from"../../DateField-rBq9QuR6.js";import{DatePickerContext as p}from"../DatePicker/DatePickerContext.js";import{Paragraph as f}from"../Paragraph/Paragraph.js";import{parseDateValue as h}from"../../utils/date/date.js";import{$ as g,a as y,f as v,c as C,d as P,e as V}from"../../DatePicker.module-DlLCFGCM.js";import{Field as D}from"../_base/Field/Field.js";import{$ as b,a as T}from"../../useControlledState-CLJIwghQ.js";import{b as Z,h as I}from"../../CalendarDate-uEuHKGse.js";import{g as j}from"../../useCalendarState-BKam8aTi.js";function R(e){return null!=e?.start&&null!=e.end}const k=n((n,k)=>{const F={...n,defaultValue:(()=>{if(n?.defaultValue&&n.defaultValue?.start&&n.defaultValue?.end)return{start:h(n.defaultValue.start),end:h(n.defaultValue.end)}})(),value:(()=>{if(n?.value&&n.value?.start&&n.value?.end)return{start:h(n.value.start),end:h(n.value.end)}})(),onChange:e=>{if(!n.onChange||!e?.start||!e?.end)return;const a={start:e.start.toDate("UTC").toISOString(),end:e.end.toDate("UTC").toISOString()};return n.onChange(a)},minValue:h(n?.minValue),maxValue:h(n?.maxValue),isDateUnavailable:e=>!!n?.isDateUnavailable&&n.isDateUnavailable(e.toDate("UTC").toISOString())},S=function(e){let a=g(e),[n,l]=b(e.value,e.defaultValue||null,e.onChange),[i]=t(n),[s,o]=t(()=>n||{start:null,end:null});null==n&&s.start&&s.end&&(s={start:null,end:null},o(s));let d=n||s,u=e=>{d=e||{start:null,end:null},o(d),R(d)?l(d):l(null)},m=d?.start||d?.end||e.placeholderValue||null,[c,p]=y(m,e.granularity),f="hour"===c||"minute"===c||"second"===c,h=e.shouldCloseOnSelect??!0,[V,D]=t(null),[k,F]=t(null);d&&R(d)&&(V=d,"hour"in d.start&&(k=d));let S=(e,a)=>{u({start:"timeZone"in a.start?a.start.set(Z(e.start)):I(e.start,a.start),end:"timeZone"in a.end?a.end.set(Z(e.end)):I(e.end,a.end)}),D(null),F(null),$.commitValidation()},x=t=>{let r="function"==typeof h?h():h;f?R(t)&&(r||k?.start&&k?.end)?S(t,{start:k?.start||P(e.placeholderValue),end:k?.end||P(e.placeholderValue)}):D(t):R(t)?(u(t),$.commitValidation()):D(t),r&&a.setOpen(!1)},O=e=>{R(V)&&R(e)?S(V,e):F(e)},N="gregory"===d?.start?.calendar.identifier&&"BC"===d.start.era||"gregory"===d?.end?.calendar.identifier&&"BC"===d.end.era,U=r(()=>({granularity:c,timeZone:p,hideTimeZone:e.hideTimeZone,hourCycle:e.hourCycle,shouldForceLeadingZeros:e.shouldForceLeadingZeros,showEra:N}),[c,e.hourCycle,e.shouldForceLeadingZeros,p,e.hideTimeZone,N]),{minValue:_,maxValue:w,isDateUnavailable:B}=e,L=r(()=>v(d,_,w,B,U),[d,_,w,B,U]),$=T({...e,value:n,name:r(()=>[e.startName,e.endName].filter(e=>null!=e),[e.startName,e.endName]),builtinValidation:L}),E=$.displayValidation.isInvalid,q=e.validationState||(E?"invalid":null);return{...$,value:d,defaultValue:e.defaultValue??i,setValue:u,dateRange:V,timeRange:k,granularity:c,hasTime:f,setDate(e,a){x("start"===e?{start:a,end:V?.end??null}:{start:V?.start??null,end:a})},setTime(e,a){O("start"===e?{start:a,end:k?.end??null}:{start:k?.start??null,end:a})},setDateTime(e,a){u("start"===e?{start:a,end:d?.end??null}:{start:d?.start??null,end:a})},setDateRange:x,setTimeRange:O,...a,setOpen(t){t||d?.start&&d?.end||!R(V)||!f||S(V,{start:k?.start||P(e.placeholderValue),end:k?.end||P(e.placeholderValue)}),a.setOpen(t)},validationState:q,isInvalid:E,formatValue(a,t){if(!d||!d.start||!d.end)return null;let r,n="timeZone"in d.start?d.start.timeZone:void 0,l=e.granularity||(d.start&&"minute"in d.start?"minute":"day"),i="timeZone"in d.end?d.end.timeZone:void 0,s=e.granularity||(d.end&&"minute"in d.end?"minute":"day"),o=C(t,{granularity:l,timeZone:n,hideTimeZone:e.hideTimeZone,hourCycle:e.hourCycle,showEra:"gregory"===d.start.calendar.identifier&&"BC"===d.start.era||"gregory"===d.end.calendar.identifier&&"BC"===d.end.era}),u=d.start.toDate(n||"UTC"),m=d.end.toDate(i||"UTC"),c=new j(a,o);if(n===i&&l===s&&0!==d.start.compare(d.end)){try{let e=c.formatRangeToParts(u,m),a=-1;for(let n=0;n<e.length;n++){let t=e[n];if("shared"===t.source&&"literal"===t.type)a=n;else if("endRange"===t.source)break}let t="",r="";for(let n=0;n<e.length;n++)n<a?t+=e[n].value:n>a&&(r+=e[n].value);return{start:t,end:r}}catch{}r=c}else{let n=C(t,{granularity:s,timeZone:i,hideTimeZone:e.hideTimeZone,hourCycle:e.hourCycle});r=new j(a,n)}return{start:c.format(u),end:r.format(m)}},getDateFormatter(e,a){let t={...U,...a},r=C({},t);return new j(e,r)}}}(F),x=s(k),O=l(F,S,x),N={granularity:"day",hideTimeZone:!0},U={...n.startDateFieldProps,...O.startFieldProps,...N},_={...n.endDateFieldProps,...O.endFieldProps,...N},{"aria-labelledby":w,...B}=O.groupProps,L={...O.buttonProps,isInvalid:S.isInvalid,styleVariant:S.isInvalid?"critical":S.isOpen?"accent":"neutral",onClick:()=>S.isOpen?S.close():S.open()},$={...n.calendarProps,...O.calendarProps};/* @__PURE__ */
|
|
2
|
+
return e("div",{className:V.datePicker,ref:x,children:/* @__PURE__ */e(D,{className:V.datePicker__field,as:i,label:n.label,description:n.description,errorMessage:n.errorMessage,isDisabled:n.isDisabled,isRequired:n.isRequired,isInvalid:O.isInvalid,columns:n.columns,maxWidthByChars:n.maxWidthByChars,errorPlacement:n.errorPlacement,optionalTranslation:n.optionalTranslation,errorId:n.errorId,errorPrefix:n.errorPrefix,visuallyHiddenLabel:n.visuallyHiddenLabel,children:/* @__PURE__ */a(p.Provider,{value:{isInDateRangePicker:!0},children:[
|
|
3
|
+
/* @__PURE__ */a("div",{...B,className:`${m.dateInput__wrapper} ${m["dateInput__wrapper--has-background"]}`,children:[
|
|
4
|
+
/* @__PURE__ */e(c,{...U}),
|
|
5
|
+
/* @__PURE__ */e(f,{foregroundColor:n.isDisabled?"disabledPrimary":"secondary",children:"–"}),
|
|
6
|
+
/* @__PURE__ */e(c,{..._,children:/* @__PURE__ */e(c.EndSlot,{children:/* @__PURE__ */e(u,{...L,size:"sm",emphasis:"tertiary",iconProps:{iconName:"calendar-days",iconPrefix:"fas"}})})})]}),S.isOpen&&/* @__PURE__ */e(d,{state:S,triggerRef:x,placement:"bottom start",hasArrow:!1,shouldFlip:!0,children:/* @__PURE__ */e("div",{role:"dialog",className:V.datePicker__dialog,...O.dialogProps,children:/* @__PURE__ */e(o,{...$})})})]})})})});k.displayName="DateRangePicker";export{k as DateRangePicker,k as default};
|
|
7
7
|
//# sourceMappingURL=DateRangePicker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateRangePicker.js","sources":["../../../node_modules/react-stately/node_modules/react-stately/dist/private/datepicker/useDateRangePickerState.mjs","../../../src/components/DateRangePicker/DateRangePicker.tsx"],"sourcesContent":["import {getFormatOptions as $8b141f2f71e88f85$export$7e319ea407e63bc0, getPlaceholderTime as $8b141f2f71e88f85$export$c5221a78ef73c5e9, getRangeValidationResult as $8b141f2f71e88f85$export$80ff8fc0ae339c13, useDefaultProps as $8b141f2f71e88f85$export$2440da353cedad43} from \"./utils.mjs\";\nimport {useFormValidationState as $fd2148440a13ec26$export$fc1a364ae1f3ff10} from \"../form/useFormValidationState.mjs\";\nimport {useOverlayTriggerState as $f11fb0bcf1b2687a$export$61c6a8c84e605fb6} from \"../overlays/useOverlayTriggerState.mjs\";\nimport {useControlledState as $3e6197669829fe11$export$40bfa8c7b0832715} from \"../utils/useControlledState.mjs\";\nimport {toCalendarDate as $ah9vd$toCalendarDate, toCalendarDateTime as $ah9vd$toCalendarDateTime, DateFormatter as $ah9vd$DateFormatter} from \"@internationalized/date\";\nimport {useState as $ah9vd$useState, useMemo as $ah9vd$useMemo} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n\n\nfunction $6de3e3f1a7663217$export$e50a61c1de9f574(props) {\n let overlayState = (0, $f11fb0bcf1b2687a$export$61c6a8c84e605fb6)(props);\n let [controlledValue, setControlledValue] = (0, $3e6197669829fe11$export$40bfa8c7b0832715)(props.value, props.defaultValue || null, props.onChange);\n let [initialValue] = (0, $ah9vd$useState)(controlledValue);\n let [placeholderValue, setPlaceholderValue] = (0, $ah9vd$useState)(()=>controlledValue || {\n start: null,\n end: null\n });\n // Reset the placeholder if the value prop is set to null.\n if (controlledValue == null && placeholderValue.start && placeholderValue.end) {\n placeholderValue = {\n start: null,\n end: null\n };\n setPlaceholderValue(placeholderValue);\n }\n let value = controlledValue || placeholderValue;\n let setValue = (newValue)=>{\n value = newValue || {\n start: null,\n end: null\n };\n setPlaceholderValue(value);\n if ($6de3e3f1a7663217$var$isCompleteRange(value)) setControlledValue(value);\n else setControlledValue(null);\n };\n let v = value?.start || value?.end || props.placeholderValue || null;\n let [granularity, defaultTimeZone] = (0, $8b141f2f71e88f85$export$2440da353cedad43)(v, props.granularity);\n let hasTime = granularity === 'hour' || granularity === 'minute' || granularity === 'second';\n let shouldCloseOnSelect = props.shouldCloseOnSelect ?? true;\n let [dateRange, setSelectedDateRange] = (0, $ah9vd$useState)(null);\n let [timeRange, setSelectedTimeRange] = (0, $ah9vd$useState)(null);\n if (value && $6de3e3f1a7663217$var$isCompleteRange(value)) {\n dateRange = value;\n if ('hour' in value.start) timeRange = value;\n }\n let commitValue = (dateRange, timeRange)=>{\n setValue({\n start: 'timeZone' in timeRange.start ? timeRange.start.set((0, $ah9vd$toCalendarDate)(dateRange.start)) : (0, $ah9vd$toCalendarDateTime)(dateRange.start, timeRange.start),\n end: 'timeZone' in timeRange.end ? timeRange.end.set((0, $ah9vd$toCalendarDate)(dateRange.end)) : (0, $ah9vd$toCalendarDateTime)(dateRange.end, timeRange.end)\n });\n setSelectedDateRange(null);\n setSelectedTimeRange(null);\n validation.commitValidation();\n };\n // Intercept setValue to make sure the Time section is not changed by date selection in Calendar\n let setDateRange = (range)=>{\n let shouldClose = typeof shouldCloseOnSelect === 'function' ? shouldCloseOnSelect() : shouldCloseOnSelect;\n if (hasTime) {\n // Set a placeholder time if the popover is closing so we don't leave the field in an incomplete state.\n if ($6de3e3f1a7663217$var$isCompleteRange(range) && (shouldClose || timeRange?.start && timeRange?.end)) commitValue(range, {\n start: timeRange?.start || (0, $8b141f2f71e88f85$export$c5221a78ef73c5e9)(props.placeholderValue),\n end: timeRange?.end || (0, $8b141f2f71e88f85$export$c5221a78ef73c5e9)(props.placeholderValue)\n });\n else setSelectedDateRange(range);\n } else if ($6de3e3f1a7663217$var$isCompleteRange(range)) {\n setValue(range);\n validation.commitValidation();\n } else setSelectedDateRange(range);\n if (shouldClose) overlayState.setOpen(false);\n };\n let setTimeRange = (range)=>{\n if ($6de3e3f1a7663217$var$isCompleteRange(dateRange) && $6de3e3f1a7663217$var$isCompleteRange(range)) commitValue(dateRange, range);\n else setSelectedTimeRange(range);\n };\n let showEra = value?.start?.calendar.identifier === 'gregory' && value.start.era === 'BC' || value?.end?.calendar.identifier === 'gregory' && value.end.era === 'BC';\n let formatOpts = (0, $ah9vd$useMemo)(()=>({\n granularity: granularity,\n timeZone: defaultTimeZone,\n hideTimeZone: props.hideTimeZone,\n hourCycle: props.hourCycle,\n shouldForceLeadingZeros: props.shouldForceLeadingZeros,\n showEra: showEra\n }), [\n granularity,\n props.hourCycle,\n props.shouldForceLeadingZeros,\n defaultTimeZone,\n props.hideTimeZone,\n showEra\n ]);\n let { minValue: minValue, maxValue: maxValue, isDateUnavailable: isDateUnavailable } = props;\n let builtinValidation = (0, $ah9vd$useMemo)(()=>(0, $8b141f2f71e88f85$export$80ff8fc0ae339c13)(value, minValue, maxValue, isDateUnavailable, formatOpts), [\n value,\n minValue,\n maxValue,\n isDateUnavailable,\n formatOpts\n ]);\n let validation = (0, $fd2148440a13ec26$export$fc1a364ae1f3ff10)({\n ...props,\n value: controlledValue,\n name: (0, $ah9vd$useMemo)(()=>[\n props.startName,\n props.endName\n ].filter((n)=>n != null), [\n props.startName,\n props.endName\n ]),\n builtinValidation: builtinValidation\n });\n let isValueInvalid = validation.displayValidation.isInvalid;\n let validationState = props.validationState || (isValueInvalid ? 'invalid' : null);\n return {\n ...validation,\n value: value,\n defaultValue: props.defaultValue ?? initialValue,\n setValue: setValue,\n dateRange: dateRange,\n timeRange: timeRange,\n granularity: granularity,\n hasTime: hasTime,\n setDate (part, date) {\n if (part === 'start') setDateRange({\n start: date,\n end: dateRange?.end ?? null\n });\n else setDateRange({\n start: dateRange?.start ?? null,\n end: date\n });\n },\n setTime (part, time) {\n if (part === 'start') setTimeRange({\n start: time,\n end: timeRange?.end ?? null\n });\n else setTimeRange({\n start: timeRange?.start ?? null,\n end: time\n });\n },\n setDateTime (part, dateTime) {\n if (part === 'start') setValue({\n start: dateTime,\n end: value?.end ?? null\n });\n else setValue({\n start: value?.start ?? null,\n end: dateTime\n });\n },\n setDateRange: setDateRange,\n setTimeRange: setTimeRange,\n ...overlayState,\n setOpen (isOpen) {\n // Commit the selected date range when the calendar is closed. Use a placeholder time if one wasn't set.\n // If only the time range was set and not the date range, don't commit. The state will be preserved until\n // the user opens the popover again.\n if (!isOpen && !(value?.start && value?.end) && $6de3e3f1a7663217$var$isCompleteRange(dateRange) && hasTime) commitValue(dateRange, {\n start: timeRange?.start || (0, $8b141f2f71e88f85$export$c5221a78ef73c5e9)(props.placeholderValue),\n end: timeRange?.end || (0, $8b141f2f71e88f85$export$c5221a78ef73c5e9)(props.placeholderValue)\n });\n overlayState.setOpen(isOpen);\n },\n validationState: validationState,\n isInvalid: isValueInvalid,\n formatValue (locale, fieldOptions) {\n if (!value || !value.start || !value.end) return null;\n let startTimeZone = 'timeZone' in value.start ? value.start.timeZone : undefined;\n let startGranularity = props.granularity || (value.start && 'minute' in value.start ? 'minute' : 'day');\n let endTimeZone = 'timeZone' in value.end ? value.end.timeZone : undefined;\n let endGranularity = props.granularity || (value.end && 'minute' in value.end ? 'minute' : 'day');\n let startOptions = (0, $8b141f2f71e88f85$export$7e319ea407e63bc0)(fieldOptions, {\n granularity: startGranularity,\n timeZone: startTimeZone,\n hideTimeZone: props.hideTimeZone,\n hourCycle: props.hourCycle,\n showEra: value.start.calendar.identifier === 'gregory' && value.start.era === 'BC' || value.end.calendar.identifier === 'gregory' && value.end.era === 'BC'\n });\n let startDate = value.start.toDate(startTimeZone || 'UTC');\n let endDate = value.end.toDate(endTimeZone || 'UTC');\n let startFormatter = new (0, $ah9vd$DateFormatter)(locale, startOptions);\n let endFormatter;\n if (startTimeZone === endTimeZone && startGranularity === endGranularity && value.start.compare(value.end) !== 0) {\n // Use formatRange, as it results in shorter output when some of the fields\n // are shared between the start and end dates (e.g. the same month).\n // Formatting will fail if the end date is before the start date. Fall back below when that happens.\n try {\n let parts = startFormatter.formatRangeToParts(startDate, endDate);\n // Find the separator between the start and end date. This is determined\n // by finding the last shared literal before the end range.\n let separatorIndex = -1;\n for(let i = 0; i < parts.length; i++){\n let part = parts[i];\n if (part.source === 'shared' && part.type === 'literal') separatorIndex = i;\n else if (part.source === 'endRange') break;\n }\n // Now we can combine the parts into start and end strings.\n let start = '';\n let end = '';\n for(let i = 0; i < parts.length; i++){\n if (i < separatorIndex) start += parts[i].value;\n else if (i > separatorIndex) end += parts[i].value;\n }\n return {\n start: start,\n end: end\n };\n } catch {\n // ignore\n }\n endFormatter = startFormatter;\n } else {\n let endOptions = (0, $8b141f2f71e88f85$export$7e319ea407e63bc0)(fieldOptions, {\n granularity: endGranularity,\n timeZone: endTimeZone,\n hideTimeZone: props.hideTimeZone,\n hourCycle: props.hourCycle\n });\n endFormatter = new (0, $ah9vd$DateFormatter)(locale, endOptions);\n }\n return {\n start: startFormatter.format(startDate),\n end: endFormatter.format(endDate)\n };\n },\n getDateFormatter (locale, formatOptions) {\n let newOptions = {\n ...formatOpts,\n ...formatOptions\n };\n let newFormatOptions = (0, $8b141f2f71e88f85$export$7e319ea407e63bc0)({}, newOptions);\n return new (0, $ah9vd$DateFormatter)(locale, newFormatOptions);\n }\n };\n}\nfunction $6de3e3f1a7663217$var$isCompleteRange(value) {\n return value?.start != null && value.end != null;\n}\n\n\nexport {$6de3e3f1a7663217$export$e50a61c1de9f574 as useDateRangePickerState};\n//# sourceMappingURL=useDateRangePickerState.mjs.map\n","import { useRef } from 'react';\nimport { useDateRangePickerState } from 'react-stately';\nimport {\n DateValue,\n useDateRangePicker,\n type AriaDateRangePickerProps,\n} from '@react-aria/datepicker';\nimport { DateField as AriaDateField } from 'react-aria-components';\nimport { type RangeValue } from 'react-aria';\nimport CalendarRange, { CalendarRangeProps } from '../CalendarRange';\nimport Popover from '../Popover';\nimport IconButton, { type IconButtonProps } from '../IconButton';\nimport DateField, { type DateFieldProps } from '../DateField';\nimport { DatePickerContext } from '../DatePicker/DatePickerContext';\nimport Paragraph from '../Paragraph';\nimport { parseDateValue } from '../../utils/date/date';\n\nimport datePickerStyles from '../DatePicker/DatePicker.module.css';\nimport dateFieldStyles from '../DateField/DateField.module.css';\nimport { Field, FieldProps } from '../_base/Field';\n\ntype WithoutSharedProps<T> = Omit<T, keyof DateRangePickerProps>;\n/**\n * Keys from AriaDatePickerProps that are incompatible with our DatePickerProps\n * They only use 'DateValue' when we need to use 'string | DateValue'\n */\ntype DateValueKeys =\n | 'defaultValue'\n | 'value'\n | 'onChange'\n | 'minValue'\n | 'maxValue'\n | 'isDateUnavailable';\n\nexport interface DateRangePickerProps\n extends Omit<AriaDateRangePickerProps<DateValue>, DateValueKeys>,\n FieldProps {\n /**\n * Label for the date field\n */\n label?: DateFieldProps['label'];\n /**\n * Description for the date field shown below the label\n */\n description?: DateFieldProps['description'];\n /**\n * The default value of the date field.\n */\n defaultValue?: RangeValue<string | DateValue>;\n /**\n * The controlled value of the date field.\n */\n value?: RangeValue<string | DateValue>;\n /**\n * Function called when the date field value changes\n */\n onChange?: CalendarRangeProps['onChange'];\n /**\n * The minimum value of the date field.\n */\n minValue?: string | DateValue;\n /**\n * The maximum value of the date field.\n */\n maxValue?: string | DateValue;\n /**\n * Callback function to mark cells as unavailable. Unavailable cells will have `aria-disabled=\"true\"`\n */\n isDateUnavailable?: DateFieldProps['isDateUnavailable'];\n /**\n * Whether the date picker is disabled\n */\n isDisabled?: boolean;\n /**\n * Whether the date picker is invalid\n */\n isInvalid?: boolean;\n /**\n * Whether the date field is required\n */\n isRequired?: boolean;\n /**\n * Message shown when the field is invalid\n */\n errorMessage?: DateFieldProps['errorMessage'];\n /**\n * Props passed to the start date field component\n */\n startDateFieldProps?: WithoutSharedProps<Omit<DateFieldProps, 'children'>>;\n /**\n * Props passed to the start date field component\n */\n endDateFieldProps?: WithoutSharedProps<Omit<DateFieldProps, 'children'>>;\n /**\n * Props passed to the calendar component\n */\n calendarProps?: WithoutSharedProps<CalendarRangeProps>;\n}\n\nexport const DateRangePicker = (props: DateRangePickerProps) => {\n // Change string props to DateValue for internal manipulation\n const parsedProps = {\n ...props,\n // date value\n defaultValue: (() => {\n if (!props?.defaultValue) return undefined;\n if (!props.defaultValue?.start || !props.defaultValue?.end)\n return undefined;\n return {\n start: parseDateValue(props.defaultValue.start),\n end: parseDateValue(props.defaultValue.end),\n };\n })(),\n value: (() => {\n if (!props?.value) return undefined;\n if (!props.value?.start || !props.value?.end) return undefined;\n return {\n start: parseDateValue(props.value.start),\n end: parseDateValue(props.value.end),\n };\n })(),\n onChange: (rangeValue: RangeValue<DateValue>) => {\n if (!props.onChange || !rangeValue?.start || !rangeValue?.end) return;\n const range = {\n start: rangeValue.start.toDate('UTC').toISOString(),\n end: rangeValue.end.toDate('UTC').toISOString(),\n } as RangeValue<string>;\n return props.onChange(range);\n },\n // config\n minValue: parseDateValue(props?.minValue),\n maxValue: parseDateValue(props?.maxValue),\n isDateUnavailable: (dateValue: DateValue) =>\n props?.isDateUnavailable\n ? props.isDateUnavailable(dateValue.toDate('UTC').toISOString())\n : false,\n } as unknown as AriaDateRangePickerProps<DateValue>;\n\n const state = useDateRangePickerState(parsedProps);\n const positioningRef = useRef(null);\n\n const dateRangePickerProps = useDateRangePicker(\n parsedProps,\n state,\n positioningRef,\n );\n\n // Field props\n const sharedDateFieldProps = {\n granularity: 'day',\n hideTimeZone: true,\n };\n\n const startDateFieldProps = {\n ...props.startDateFieldProps,\n ...dateRangePickerProps.startFieldProps,\n ...sharedDateFieldProps,\n } as DateFieldProps;\n\n const endDateFieldProps = {\n ...props.endDateFieldProps,\n ...dateRangePickerProps.endFieldProps,\n ...sharedDateFieldProps,\n } as DateFieldProps;\n\n // Date field group props - remove 'aria-labelledby' as we're not using the default label props\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { 'aria-labelledby': _, ...dateFieldGroupProps } =\n dateRangePickerProps.groupProps;\n\n // Button props\n const iconButtonProps = {\n ...dateRangePickerProps.buttonProps,\n isInvalid: state.isInvalid,\n styleVariant: (() => {\n if (state.isInvalid) return 'critical';\n return state.isOpen ? 'accent' : 'neutral';\n })(),\n onClick: () => (state.isOpen ? state.close() : state.open()),\n } as IconButtonProps;\n\n // Calendar range props\n const calendarComponentProps = {\n ...props.calendarProps,\n ...dateRangePickerProps.calendarProps,\n } as CalendarRangeProps;\n\n return (\n <div className={datePickerStyles.datePicker} ref={positioningRef}>\n <Field\n className={datePickerStyles['datePicker__field']}\n as={AriaDateField}\n label={props.label}\n description={props.description}\n errorMessage={props.errorMessage}\n isDisabled={props.isDisabled}\n isRequired={props.isRequired}\n isInvalid={dateRangePickerProps.isInvalid}\n // Pass field props to main field component\n columns={props.columns}\n maxWidthByChars={props.maxWidthByChars}\n errorPlacement={props.errorPlacement}\n optionalTranslation={props.optionalTranslation}\n errorId={props.errorId}\n errorPrefix={props.errorPrefix}\n visuallyHiddenLabel={props.visuallyHiddenLabel}\n >\n <DatePickerContext.Provider value={{ isInDateRangePicker: true }}>\n <div\n {...dateFieldGroupProps}\n className={`${dateFieldStyles['dateInput__wrapper']} ${dateFieldStyles['dateInput__wrapper--has-background']}`}\n >\n <DateField {...startDateFieldProps}></DateField>\n <Paragraph\n foregroundColor={\n props.isDisabled ? 'disabledPrimary' : 'secondary'\n }\n >\n –\n </Paragraph>\n <DateField {...endDateFieldProps}>\n <DateField.EndSlot>\n <IconButton\n {...iconButtonProps}\n size=\"sm\"\n emphasis=\"tertiary\"\n iconProps={{ iconName: 'calendar-days', iconPrefix: 'fas' }}\n />\n </DateField.EndSlot>\n </DateField>\n </div>\n {state.isOpen && (\n <Popover\n state={state}\n triggerRef={positioningRef}\n placement=\"bottom start\"\n hasArrow={false}\n shouldFlip\n >\n <div\n role=\"dialog\"\n className={datePickerStyles['datePicker__dialog']}\n {...dateRangePickerProps.dialogProps}\n >\n <CalendarRange {...calendarComponentProps} />\n </div>\n </Popover>\n )}\n </DatePickerContext.Provider>\n </Field>\n </div>\n );\n};\n\nexport default DateRangePicker;\n"],"names":["$6de3e3f1a7663217$var$isCompleteRange","value","start","end","DateRangePicker","props","parsedProps","defaultValue","parseDateValue","onChange","rangeValue","range","toDate","toISOString","minValue","maxValue","isDateUnavailable","dateValue","state","overlayState","$f11fb0bcf1b2687a$export$61c6a8c84e605fb6","controlledValue","setControlledValue","$3e6197669829fe11$export$40bfa8c7b0832715","initialValue","$ah9vd$useState","placeholderValue","setPlaceholderValue","setValue","newValue","v","granularity","defaultTimeZone","$8b141f2f71e88f85$export$2440da353cedad43","hasTime","shouldCloseOnSelect","dateRange","setSelectedDateRange","timeRange","setSelectedTimeRange","commitValue","set","$ah9vd$toCalendarDate","$ah9vd$toCalendarDateTime","validation","commitValidation","setDateRange","shouldClose","$8b141f2f71e88f85$export$c5221a78ef73c5e9","setOpen","setTimeRange","showEra","calendar","identifier","era","formatOpts","$ah9vd$useMemo","timeZone","hideTimeZone","hourCycle","shouldForceLeadingZeros","builtinValidation","$8b141f2f71e88f85$export$80ff8fc0ae339c13","$fd2148440a13ec26$export$fc1a364ae1f3ff10","name","startName","endName","filter","n","isValueInvalid","displayValidation","isInvalid","validationState","setDate","part","date","setTime","time","setDateTime","dateTime","isOpen","formatValue","locale","fieldOptions","endFormatter","startTimeZone","startGranularity","endTimeZone","endGranularity","startOptions","$8b141f2f71e88f85$export$7e319ea407e63bc0","startDate","endDate","startFormatter","$ah9vd$DateFormatter","compare","parts","formatRangeToParts","separatorIndex","i","length","source","type","endOptions","format","getDateFormatter","formatOptions","newOptions","newFormatOptions","useDateRangePickerState","positioningRef","useRef","dateRangePickerProps","useDateRangePicker","sharedDateFieldProps","startDateFieldProps","startFieldProps","endDateFieldProps","endFieldProps","_","dateFieldGroupProps","groupProps","iconButtonProps","buttonProps","styleVariant","onClick","close","open","calendarComponentProps","calendarProps","className","datePickerStyles","datePicker","ref","children","jsx","Field","as","AriaDateField","label","description","errorMessage","isDisabled","isRequired","columns","maxWidthByChars","errorPlacement","optionalTranslation","errorId","errorPrefix","visuallyHiddenLabel","jsxs","DatePickerContext","Provider","isInDateRangePicker","dateFieldStyles","DateField","Paragraph","foregroundColor","EndSlot","IconButton","size","emphasis","iconProps","iconName","iconPrefix","Popover","triggerRef","placement","hasArrow","shouldFlip","role","dialogProps","CalendarRange"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"DateRangePicker.js","sources":["../../../node_modules/react-stately/node_modules/react-stately/dist/private/datepicker/useDateRangePickerState.mjs","../../../src/components/DateRangePicker/DateRangePicker.tsx"],"sourcesContent":["import {getFormatOptions as $8b141f2f71e88f85$export$7e319ea407e63bc0, getPlaceholderTime as $8b141f2f71e88f85$export$c5221a78ef73c5e9, getRangeValidationResult as $8b141f2f71e88f85$export$80ff8fc0ae339c13, useDefaultProps as $8b141f2f71e88f85$export$2440da353cedad43} from \"./utils.mjs\";\nimport {useFormValidationState as $fd2148440a13ec26$export$fc1a364ae1f3ff10} from \"../form/useFormValidationState.mjs\";\nimport {useOverlayTriggerState as $f11fb0bcf1b2687a$export$61c6a8c84e605fb6} from \"../overlays/useOverlayTriggerState.mjs\";\nimport {useControlledState as $3e6197669829fe11$export$40bfa8c7b0832715} from \"../utils/useControlledState.mjs\";\nimport {toCalendarDate as $ah9vd$toCalendarDate, toCalendarDateTime as $ah9vd$toCalendarDateTime, DateFormatter as $ah9vd$DateFormatter} from \"@internationalized/date\";\nimport {useState as $ah9vd$useState, useMemo as $ah9vd$useMemo} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n\n\nfunction $6de3e3f1a7663217$export$e50a61c1de9f574(props) {\n let overlayState = (0, $f11fb0bcf1b2687a$export$61c6a8c84e605fb6)(props);\n let [controlledValue, setControlledValue] = (0, $3e6197669829fe11$export$40bfa8c7b0832715)(props.value, props.defaultValue || null, props.onChange);\n let [initialValue] = (0, $ah9vd$useState)(controlledValue);\n let [placeholderValue, setPlaceholderValue] = (0, $ah9vd$useState)(()=>controlledValue || {\n start: null,\n end: null\n });\n // Reset the placeholder if the value prop is set to null.\n if (controlledValue == null && placeholderValue.start && placeholderValue.end) {\n placeholderValue = {\n start: null,\n end: null\n };\n setPlaceholderValue(placeholderValue);\n }\n let value = controlledValue || placeholderValue;\n let setValue = (newValue)=>{\n value = newValue || {\n start: null,\n end: null\n };\n setPlaceholderValue(value);\n if ($6de3e3f1a7663217$var$isCompleteRange(value)) setControlledValue(value);\n else setControlledValue(null);\n };\n let v = value?.start || value?.end || props.placeholderValue || null;\n let [granularity, defaultTimeZone] = (0, $8b141f2f71e88f85$export$2440da353cedad43)(v, props.granularity);\n let hasTime = granularity === 'hour' || granularity === 'minute' || granularity === 'second';\n let shouldCloseOnSelect = props.shouldCloseOnSelect ?? true;\n let [dateRange, setSelectedDateRange] = (0, $ah9vd$useState)(null);\n let [timeRange, setSelectedTimeRange] = (0, $ah9vd$useState)(null);\n if (value && $6de3e3f1a7663217$var$isCompleteRange(value)) {\n dateRange = value;\n if ('hour' in value.start) timeRange = value;\n }\n let commitValue = (dateRange, timeRange)=>{\n setValue({\n start: 'timeZone' in timeRange.start ? timeRange.start.set((0, $ah9vd$toCalendarDate)(dateRange.start)) : (0, $ah9vd$toCalendarDateTime)(dateRange.start, timeRange.start),\n end: 'timeZone' in timeRange.end ? timeRange.end.set((0, $ah9vd$toCalendarDate)(dateRange.end)) : (0, $ah9vd$toCalendarDateTime)(dateRange.end, timeRange.end)\n });\n setSelectedDateRange(null);\n setSelectedTimeRange(null);\n validation.commitValidation();\n };\n // Intercept setValue to make sure the Time section is not changed by date selection in Calendar\n let setDateRange = (range)=>{\n let shouldClose = typeof shouldCloseOnSelect === 'function' ? shouldCloseOnSelect() : shouldCloseOnSelect;\n if (hasTime) {\n // Set a placeholder time if the popover is closing so we don't leave the field in an incomplete state.\n if ($6de3e3f1a7663217$var$isCompleteRange(range) && (shouldClose || timeRange?.start && timeRange?.end)) commitValue(range, {\n start: timeRange?.start || (0, $8b141f2f71e88f85$export$c5221a78ef73c5e9)(props.placeholderValue),\n end: timeRange?.end || (0, $8b141f2f71e88f85$export$c5221a78ef73c5e9)(props.placeholderValue)\n });\n else setSelectedDateRange(range);\n } else if ($6de3e3f1a7663217$var$isCompleteRange(range)) {\n setValue(range);\n validation.commitValidation();\n } else setSelectedDateRange(range);\n if (shouldClose) overlayState.setOpen(false);\n };\n let setTimeRange = (range)=>{\n if ($6de3e3f1a7663217$var$isCompleteRange(dateRange) && $6de3e3f1a7663217$var$isCompleteRange(range)) commitValue(dateRange, range);\n else setSelectedTimeRange(range);\n };\n let showEra = value?.start?.calendar.identifier === 'gregory' && value.start.era === 'BC' || value?.end?.calendar.identifier === 'gregory' && value.end.era === 'BC';\n let formatOpts = (0, $ah9vd$useMemo)(()=>({\n granularity: granularity,\n timeZone: defaultTimeZone,\n hideTimeZone: props.hideTimeZone,\n hourCycle: props.hourCycle,\n shouldForceLeadingZeros: props.shouldForceLeadingZeros,\n showEra: showEra\n }), [\n granularity,\n props.hourCycle,\n props.shouldForceLeadingZeros,\n defaultTimeZone,\n props.hideTimeZone,\n showEra\n ]);\n let { minValue: minValue, maxValue: maxValue, isDateUnavailable: isDateUnavailable } = props;\n let builtinValidation = (0, $ah9vd$useMemo)(()=>(0, $8b141f2f71e88f85$export$80ff8fc0ae339c13)(value, minValue, maxValue, isDateUnavailable, formatOpts), [\n value,\n minValue,\n maxValue,\n isDateUnavailable,\n formatOpts\n ]);\n let validation = (0, $fd2148440a13ec26$export$fc1a364ae1f3ff10)({\n ...props,\n value: controlledValue,\n name: (0, $ah9vd$useMemo)(()=>[\n props.startName,\n props.endName\n ].filter((n)=>n != null), [\n props.startName,\n props.endName\n ]),\n builtinValidation: builtinValidation\n });\n let isValueInvalid = validation.displayValidation.isInvalid;\n let validationState = props.validationState || (isValueInvalid ? 'invalid' : null);\n return {\n ...validation,\n value: value,\n defaultValue: props.defaultValue ?? initialValue,\n setValue: setValue,\n dateRange: dateRange,\n timeRange: timeRange,\n granularity: granularity,\n hasTime: hasTime,\n setDate (part, date) {\n if (part === 'start') setDateRange({\n start: date,\n end: dateRange?.end ?? null\n });\n else setDateRange({\n start: dateRange?.start ?? null,\n end: date\n });\n },\n setTime (part, time) {\n if (part === 'start') setTimeRange({\n start: time,\n end: timeRange?.end ?? null\n });\n else setTimeRange({\n start: timeRange?.start ?? null,\n end: time\n });\n },\n setDateTime (part, dateTime) {\n if (part === 'start') setValue({\n start: dateTime,\n end: value?.end ?? null\n });\n else setValue({\n start: value?.start ?? null,\n end: dateTime\n });\n },\n setDateRange: setDateRange,\n setTimeRange: setTimeRange,\n ...overlayState,\n setOpen (isOpen) {\n // Commit the selected date range when the calendar is closed. Use a placeholder time if one wasn't set.\n // If only the time range was set and not the date range, don't commit. The state will be preserved until\n // the user opens the popover again.\n if (!isOpen && !(value?.start && value?.end) && $6de3e3f1a7663217$var$isCompleteRange(dateRange) && hasTime) commitValue(dateRange, {\n start: timeRange?.start || (0, $8b141f2f71e88f85$export$c5221a78ef73c5e9)(props.placeholderValue),\n end: timeRange?.end || (0, $8b141f2f71e88f85$export$c5221a78ef73c5e9)(props.placeholderValue)\n });\n overlayState.setOpen(isOpen);\n },\n validationState: validationState,\n isInvalid: isValueInvalid,\n formatValue (locale, fieldOptions) {\n if (!value || !value.start || !value.end) return null;\n let startTimeZone = 'timeZone' in value.start ? value.start.timeZone : undefined;\n let startGranularity = props.granularity || (value.start && 'minute' in value.start ? 'minute' : 'day');\n let endTimeZone = 'timeZone' in value.end ? value.end.timeZone : undefined;\n let endGranularity = props.granularity || (value.end && 'minute' in value.end ? 'minute' : 'day');\n let startOptions = (0, $8b141f2f71e88f85$export$7e319ea407e63bc0)(fieldOptions, {\n granularity: startGranularity,\n timeZone: startTimeZone,\n hideTimeZone: props.hideTimeZone,\n hourCycle: props.hourCycle,\n showEra: value.start.calendar.identifier === 'gregory' && value.start.era === 'BC' || value.end.calendar.identifier === 'gregory' && value.end.era === 'BC'\n });\n let startDate = value.start.toDate(startTimeZone || 'UTC');\n let endDate = value.end.toDate(endTimeZone || 'UTC');\n let startFormatter = new (0, $ah9vd$DateFormatter)(locale, startOptions);\n let endFormatter;\n if (startTimeZone === endTimeZone && startGranularity === endGranularity && value.start.compare(value.end) !== 0) {\n // Use formatRange, as it results in shorter output when some of the fields\n // are shared between the start and end dates (e.g. the same month).\n // Formatting will fail if the end date is before the start date. Fall back below when that happens.\n try {\n let parts = startFormatter.formatRangeToParts(startDate, endDate);\n // Find the separator between the start and end date. This is determined\n // by finding the last shared literal before the end range.\n let separatorIndex = -1;\n for(let i = 0; i < parts.length; i++){\n let part = parts[i];\n if (part.source === 'shared' && part.type === 'literal') separatorIndex = i;\n else if (part.source === 'endRange') break;\n }\n // Now we can combine the parts into start and end strings.\n let start = '';\n let end = '';\n for(let i = 0; i < parts.length; i++){\n if (i < separatorIndex) start += parts[i].value;\n else if (i > separatorIndex) end += parts[i].value;\n }\n return {\n start: start,\n end: end\n };\n } catch {\n // ignore\n }\n endFormatter = startFormatter;\n } else {\n let endOptions = (0, $8b141f2f71e88f85$export$7e319ea407e63bc0)(fieldOptions, {\n granularity: endGranularity,\n timeZone: endTimeZone,\n hideTimeZone: props.hideTimeZone,\n hourCycle: props.hourCycle\n });\n endFormatter = new (0, $ah9vd$DateFormatter)(locale, endOptions);\n }\n return {\n start: startFormatter.format(startDate),\n end: endFormatter.format(endDate)\n };\n },\n getDateFormatter (locale, formatOptions) {\n let newOptions = {\n ...formatOpts,\n ...formatOptions\n };\n let newFormatOptions = (0, $8b141f2f71e88f85$export$7e319ea407e63bc0)({}, newOptions);\n return new (0, $ah9vd$DateFormatter)(locale, newFormatOptions);\n }\n };\n}\nfunction $6de3e3f1a7663217$var$isCompleteRange(value) {\n return value?.start != null && value.end != null;\n}\n\n\nexport {$6de3e3f1a7663217$export$e50a61c1de9f574 as useDateRangePickerState};\n//# sourceMappingURL=useDateRangePickerState.mjs.map\n","import { forwardRef } from 'react';\nimport { useDateRangePickerState } from 'react-stately';\nimport {\n DateValue,\n useDateRangePicker,\n type AriaDateRangePickerProps,\n} from '@react-aria/datepicker';\nimport { DateField as AriaDateField } from 'react-aria-components';\nimport { useObjectRef, type RangeValue } from 'react-aria';\nimport CalendarRange, { CalendarRangeProps } from '../CalendarRange';\nimport Popover from '../Popover';\nimport IconButton, { type IconButtonProps } from '../IconButton';\nimport DateField, { type DateFieldProps } from '../DateField';\nimport { DatePickerContext } from '../DatePicker/DatePickerContext';\nimport Paragraph from '../Paragraph';\nimport { parseDateValue } from '../../utils/date/date';\n\nimport datePickerStyles from '../DatePicker/DatePicker.module.css';\nimport dateFieldStyles from '../DateField/DateField.module.css';\nimport { Field, FieldProps } from '../_base/Field';\n\ntype WithoutSharedProps<T> = Omit<T, keyof DateRangePickerProps>;\n/**\n * Keys from AriaDatePickerProps that are incompatible with our DatePickerProps\n * They only use 'DateValue' when we need to use 'string | DateValue'\n */\ntype DateValueKeys =\n | 'defaultValue'\n | 'value'\n | 'onChange'\n | 'minValue'\n | 'maxValue'\n | 'isDateUnavailable';\n\nexport interface DateRangePickerProps\n extends Omit<AriaDateRangePickerProps<DateValue>, DateValueKeys>,\n FieldProps {\n /**\n * Label for the date field\n */\n label?: DateFieldProps['label'];\n /**\n * Description for the date field shown below the label\n */\n description?: DateFieldProps['description'];\n /**\n * The default value of the date field.\n */\n defaultValue?: RangeValue<string | DateValue>;\n /**\n * The controlled value of the date field.\n */\n value?: RangeValue<string | DateValue>;\n /**\n * Function called when the date field value changes\n */\n onChange?: CalendarRangeProps['onChange'];\n /**\n * The minimum value of the date field.\n */\n minValue?: string | DateValue;\n /**\n * The maximum value of the date field.\n */\n maxValue?: string | DateValue;\n /**\n * Callback function to mark cells as unavailable. Unavailable cells will have `aria-disabled=\"true\"`\n */\n isDateUnavailable?: DateFieldProps['isDateUnavailable'];\n /**\n * Whether the date picker is disabled\n */\n isDisabled?: boolean;\n /**\n * Whether the date picker is invalid\n */\n isInvalid?: boolean;\n /**\n * Whether the date field is required\n */\n isRequired?: boolean;\n /**\n * Message shown when the field is invalid\n */\n errorMessage?: DateFieldProps['errorMessage'];\n /**\n * Props passed to the start date field component\n */\n startDateFieldProps?: WithoutSharedProps<Omit<DateFieldProps, 'children'>>;\n /**\n * Props passed to the start date field component\n */\n endDateFieldProps?: WithoutSharedProps<Omit<DateFieldProps, 'children'>>;\n /**\n * Props passed to the calendar component\n */\n calendarProps?: WithoutSharedProps<CalendarRangeProps>;\n}\n\nexport const DateRangePicker = forwardRef<HTMLDivElement, DateRangePickerProps>(\n (props, forwardedRef) => {\n // Change string props to DateValue for internal manipulation\n const parsedProps = {\n ...props,\n // date value\n defaultValue: (() => {\n if (!props?.defaultValue) return undefined;\n if (!props.defaultValue?.start || !props.defaultValue?.end)\n return undefined;\n return {\n start: parseDateValue(props.defaultValue.start),\n end: parseDateValue(props.defaultValue.end),\n };\n })(),\n value: (() => {\n if (!props?.value) return undefined;\n if (!props.value?.start || !props.value?.end) return undefined;\n return {\n start: parseDateValue(props.value.start),\n end: parseDateValue(props.value.end),\n };\n })(),\n onChange: (rangeValue: RangeValue<DateValue>) => {\n if (!props.onChange || !rangeValue?.start || !rangeValue?.end) return;\n const range = {\n start: rangeValue.start.toDate('UTC').toISOString(),\n end: rangeValue.end.toDate('UTC').toISOString(),\n } as RangeValue<string>;\n return props.onChange(range);\n },\n // config\n minValue: parseDateValue(props?.minValue),\n maxValue: parseDateValue(props?.maxValue),\n isDateUnavailable: (dateValue: DateValue) =>\n props?.isDateUnavailable\n ? props.isDateUnavailable(dateValue.toDate('UTC').toISOString())\n : false,\n } as unknown as AriaDateRangePickerProps<DateValue>;\n\n const state = useDateRangePickerState(parsedProps);\n const positioningRef = useObjectRef(forwardedRef);\n\n const dateRangePickerProps = useDateRangePicker(\n parsedProps,\n state,\n positioningRef,\n );\n\n // Field props\n const sharedDateFieldProps = {\n granularity: 'day',\n hideTimeZone: true,\n };\n\n const startDateFieldProps = {\n ...props.startDateFieldProps,\n ...dateRangePickerProps.startFieldProps,\n ...sharedDateFieldProps,\n } as DateFieldProps;\n\n const endDateFieldProps = {\n ...props.endDateFieldProps,\n ...dateRangePickerProps.endFieldProps,\n ...sharedDateFieldProps,\n } as DateFieldProps;\n\n // Date field group props - remove 'aria-labelledby' as we're not using the default label props\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { 'aria-labelledby': _, ...dateFieldGroupProps } =\n dateRangePickerProps.groupProps;\n\n // Button props\n const iconButtonProps = {\n ...dateRangePickerProps.buttonProps,\n isInvalid: state.isInvalid,\n styleVariant: (() => {\n if (state.isInvalid) return 'critical';\n return state.isOpen ? 'accent' : 'neutral';\n })(),\n onClick: () => (state.isOpen ? state.close() : state.open()),\n } as IconButtonProps;\n\n // Calendar range props\n const calendarComponentProps = {\n ...props.calendarProps,\n ...dateRangePickerProps.calendarProps,\n } as CalendarRangeProps;\n\n return (\n <div className={datePickerStyles.datePicker} ref={positioningRef}>\n <Field\n className={datePickerStyles['datePicker__field']}\n as={AriaDateField}\n label={props.label}\n description={props.description}\n errorMessage={props.errorMessage}\n isDisabled={props.isDisabled}\n isRequired={props.isRequired}\n isInvalid={dateRangePickerProps.isInvalid}\n // Pass field props to main field component\n columns={props.columns}\n maxWidthByChars={props.maxWidthByChars}\n errorPlacement={props.errorPlacement}\n optionalTranslation={props.optionalTranslation}\n errorId={props.errorId}\n errorPrefix={props.errorPrefix}\n visuallyHiddenLabel={props.visuallyHiddenLabel}\n >\n <DatePickerContext.Provider value={{ isInDateRangePicker: true }}>\n <div\n {...dateFieldGroupProps}\n className={`${dateFieldStyles['dateInput__wrapper']} ${dateFieldStyles['dateInput__wrapper--has-background']}`}\n >\n <DateField {...startDateFieldProps}></DateField>\n <Paragraph\n foregroundColor={\n props.isDisabled ? 'disabledPrimary' : 'secondary'\n }\n >\n –\n </Paragraph>\n <DateField {...endDateFieldProps}>\n <DateField.EndSlot>\n <IconButton\n {...iconButtonProps}\n size=\"sm\"\n emphasis=\"tertiary\"\n iconProps={{ iconName: 'calendar-days', iconPrefix: 'fas' }}\n />\n </DateField.EndSlot>\n </DateField>\n </div>\n {state.isOpen && (\n <Popover\n state={state}\n triggerRef={positioningRef}\n placement=\"bottom start\"\n hasArrow={false}\n shouldFlip\n >\n <div\n role=\"dialog\"\n className={datePickerStyles['datePicker__dialog']}\n {...dateRangePickerProps.dialogProps}\n >\n <CalendarRange {...calendarComponentProps} />\n </div>\n </Popover>\n )}\n </DatePickerContext.Provider>\n </Field>\n </div>\n );\n },\n);\nDateRangePicker.displayName = 'DateRangePicker';\n\nexport default DateRangePicker;\n"],"names":["$6de3e3f1a7663217$var$isCompleteRange","value","start","end","DateRangePicker","forwardRef","props","forwardedRef","parsedProps","defaultValue","parseDateValue","onChange","rangeValue","range","toDate","toISOString","minValue","maxValue","isDateUnavailable","dateValue","state","overlayState","$f11fb0bcf1b2687a$export$61c6a8c84e605fb6","controlledValue","setControlledValue","$3e6197669829fe11$export$40bfa8c7b0832715","initialValue","$ah9vd$useState","placeholderValue","setPlaceholderValue","setValue","newValue","v","granularity","defaultTimeZone","$8b141f2f71e88f85$export$2440da353cedad43","hasTime","shouldCloseOnSelect","dateRange","setSelectedDateRange","timeRange","setSelectedTimeRange","commitValue","set","$ah9vd$toCalendarDate","$ah9vd$toCalendarDateTime","validation","commitValidation","setDateRange","shouldClose","$8b141f2f71e88f85$export$c5221a78ef73c5e9","setOpen","setTimeRange","showEra","calendar","identifier","era","formatOpts","$ah9vd$useMemo","timeZone","hideTimeZone","hourCycle","shouldForceLeadingZeros","builtinValidation","$8b141f2f71e88f85$export$80ff8fc0ae339c13","$fd2148440a13ec26$export$fc1a364ae1f3ff10","name","startName","endName","filter","n","isValueInvalid","displayValidation","isInvalid","validationState","setDate","part","date","setTime","time","setDateTime","dateTime","isOpen","formatValue","locale","fieldOptions","endFormatter","startTimeZone","startGranularity","endTimeZone","endGranularity","startOptions","$8b141f2f71e88f85$export$7e319ea407e63bc0","startDate","endDate","startFormatter","$ah9vd$DateFormatter","compare","parts","formatRangeToParts","separatorIndex","i","length","source","type","endOptions","format","getDateFormatter","formatOptions","newOptions","newFormatOptions","useDateRangePickerState","positioningRef","useObjectRef","dateRangePickerProps","useDateRangePicker","sharedDateFieldProps","startDateFieldProps","startFieldProps","endDateFieldProps","endFieldProps","_","dateFieldGroupProps","groupProps","iconButtonProps","buttonProps","styleVariant","onClick","close","open","calendarComponentProps","calendarProps","className","datePickerStyles","datePicker","ref","children","jsx","Field","as","AriaDateField","label","description","errorMessage","isDisabled","isRequired","columns","maxWidthByChars","errorPlacement","optionalTranslation","errorId","errorPrefix","visuallyHiddenLabel","jsxs","DatePickerContext","Provider","isInDateRangePicker","dateFieldStyles","DateField","Paragraph","foregroundColor","EndSlot","IconButton","size","emphasis","iconProps","iconName","iconPrefix","Popover","triggerRef","placement","hasArrow","shouldFlip","role","dialogProps","CalendarRange","displayName"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -16,5 +16,5 @@ export interface FieldHeaderProps {
|
|
|
16
16
|
*/
|
|
17
17
|
visuallyHiddenLabel?: string;
|
|
18
18
|
}
|
|
19
|
-
export declare const FieldHeader: (
|
|
19
|
+
export declare const FieldHeader: import('react').ForwardRefExoticComponent<FieldHeaderProps & import('react').RefAttributes<HTMLDivElement>>;
|
|
20
20
|
export default FieldHeader;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{jsxs as
|
|
2
|
-
/* @__PURE__ */
|
|
1
|
+
import{jsxs as r,jsx as i}from"react/jsx-runtime";import{VisuallyHidden as e}from"../VisuallyHidden/VisuallyHidden.js";import l from"../FieldDescription/FieldDescription.js";import{FieldError as d}from"../FieldError/FieldError.js";import{FieldLabel as o}from"../FieldLabel/FieldLabel.js";import{forwardRef as a}from"react";import '../../assets/FieldHeader.css';const s="_fieldHeader_jjofg_1",n="_label-container_jjofg_13",t=a(({label:a,description:t,isInvalid:m,isRequired:c,errorMessage:f,labelFor:p,descriptionId:j,errorId:F,optionalTranslation:h="Optional",showError:v=!0,errorPrefix:b,visuallyHiddenLabel:u},_)=>/* @__PURE__ */r("div",{className:s,"data-invalid":!!m||void 0,ref:_,children:[
|
|
2
|
+
/* @__PURE__ */i("div",{className:n,children:a&&/* @__PURE__ */r(o,{required:!!c||void 0,htmlFor:p,children:[a,!c&&` (${h})`,u&&/* @__PURE__ */i(e,{children:u})]})}),t&&/* @__PURE__ */i(l,{id:j,children:t}),v&&/* @__PURE__ */i(d,{id:F,errorPrefix:b,fieldLabel:a,isInvalid:m,children:f})]}));t.displayName="FieldHeader";export{t as FieldHeader,t as default};
|
|
3
3
|
//# sourceMappingURL=FieldHeader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldHeader.js","sources":["../../../src/components/FieldHeader/FieldHeader.tsx"],"sourcesContent":["import { ValidationResult } from 'react-aria-components';\nimport VisuallyHidden from '../VisuallyHidden/VisuallyHidden';\nimport FieldDescription from '../FieldDescription/FieldDescription';\nimport FieldError from '../FieldError/FieldError';\nimport { FieldLabel } from '../FieldLabel/FieldLabel';\nimport styles from './FieldHeader.module.css';\n\nexport interface FieldHeaderProps {\n /*\n * The label for the FieldHeader\n */\n label?: string;\n /*\n * The description for the FieldHeader\n */\n description?: string;\n /*\n * The error message for the FieldHeader\n */\n errorMessage?: string | ((validation: ValidationResult) => string);\n /*\n * Whether the FieldHeader is invalid\n */\n isInvalid?: boolean;\n /*\n * Whether the FieldHeader is required\n */\n isRequired?: boolean;\n /*\n * The id of the element the label is associated with\n */\n labelFor?: string;\n /*\n * The id of the description element\n */\n descriptionId?: string;\n /*\n * The id of the error message element\n */\n errorId?: string;\n /*\n * Optional translation for the Optional text, used for localization\n * @default 'Optional'\n */\n optionalTranslation?: string;\n /*\n * Whether to show the error in this header (for error placement control)\n * @default true\n */\n showError?: boolean;\n /*\n * Prefix text for screen readers only in error messages\n * @default 'Error:'\n */\n errorPrefix?: string;\n /**\n * Additional context for screen readers, rendered visually hidden next to the label.\n */\n visuallyHiddenLabel?: string;\n}\n\nexport const FieldHeader = ({\n
|
|
1
|
+
{"version":3,"file":"FieldHeader.js","sources":["../../../src/components/FieldHeader/FieldHeader.tsx"],"sourcesContent":["import { ValidationResult } from 'react-aria-components';\nimport VisuallyHidden from '../VisuallyHidden/VisuallyHidden';\nimport FieldDescription from '../FieldDescription/FieldDescription';\nimport FieldError from '../FieldError/FieldError';\nimport { FieldLabel } from '../FieldLabel/FieldLabel';\nimport styles from './FieldHeader.module.css';\nimport { forwardRef } from 'react';\n\nexport interface FieldHeaderProps {\n /*\n * The label for the FieldHeader\n */\n label?: string;\n /*\n * The description for the FieldHeader\n */\n description?: string;\n /*\n * The error message for the FieldHeader\n */\n errorMessage?: string | ((validation: ValidationResult) => string);\n /*\n * Whether the FieldHeader is invalid\n */\n isInvalid?: boolean;\n /*\n * Whether the FieldHeader is required\n */\n isRequired?: boolean;\n /*\n * The id of the element the label is associated with\n */\n labelFor?: string;\n /*\n * The id of the description element\n */\n descriptionId?: string;\n /*\n * The id of the error message element\n */\n errorId?: string;\n /*\n * Optional translation for the Optional text, used for localization\n * @default 'Optional'\n */\n optionalTranslation?: string;\n /*\n * Whether to show the error in this header (for error placement control)\n * @default true\n */\n showError?: boolean;\n /*\n * Prefix text for screen readers only in error messages\n * @default 'Error:'\n */\n errorPrefix?: string;\n /**\n * Additional context for screen readers, rendered visually hidden next to the label.\n */\n visuallyHiddenLabel?: string;\n}\n\nexport const FieldHeader = forwardRef<HTMLDivElement, FieldHeaderProps>(\n (\n {\n label,\n description,\n isInvalid,\n isRequired,\n errorMessage,\n labelFor,\n descriptionId,\n errorId,\n optionalTranslation = 'Optional',\n showError = true,\n errorPrefix,\n visuallyHiddenLabel,\n },\n forwardedRef,\n ) => {\n return (\n <div\n className={styles.fieldHeader}\n data-invalid={isInvalid ? true : undefined}\n ref={forwardedRef}\n >\n <div className={styles['label-container']}>\n {label && (\n <FieldLabel\n required={isRequired ? true : undefined}\n htmlFor={labelFor}\n >\n {label}\n {!isRequired && ` (${optionalTranslation})`}\n {visuallyHiddenLabel && (\n <VisuallyHidden>{visuallyHiddenLabel}</VisuallyHidden>\n )}\n </FieldLabel>\n )}\n </div>\n {description && (\n <FieldDescription id={descriptionId}>{description}</FieldDescription>\n )}\n {showError && (\n <FieldError\n id={errorId}\n errorPrefix={errorPrefix}\n fieldLabel={label}\n isInvalid={isInvalid}\n >\n {errorMessage}\n </FieldError>\n )}\n </div>\n );\n },\n);\nFieldHeader.displayName = 'FieldHeader';\n\nexport default FieldHeader;\n"],"names":["FieldHeader","forwardRef","label","description","isInvalid","isRequired","errorMessage","labelFor","descriptionId","errorId","optionalTranslation","showError","errorPrefix","visuallyHiddenLabel","forwardedRef","jsxs","className","styles","ref","children","jsx","FieldLabel","required","htmlFor","VisuallyHidden","FieldDescription","id","FieldError","fieldLabel","displayName"],"mappings":"gYA8DaA,EAAcC,EACzB,EAEIC,QACAC,cACAC,YACAC,aACAC,eACAC,WACAC,gBACAC,UACAC,sBAAsB,WACtBC,aAAY,EACZC,cACAC,uBAEFC,mBAGEC,EAAC,MAAA,CACCC,UAAWC,EACX,iBAAcb,QAAmB,EACjCc,IAAKJ,EAELK,SAAA;eAAAC,EAAC,MAAA,CAAIJ,UAAWC,EACbE,SAAAjB,kBACCa,EAACM,EAAA,CACCC,WAAUjB,QAAoB,EAC9BkB,QAAShB,EAERY,SAAA,CAAAjB,GACCG,GAAc,KAAKK,KACpBG,kBACCO,EAACI,EAAA,CAAgBL,SAAAN,SAKxBV,oBACEsB,EAAA,CAAiBC,GAAIlB,EAAgBW,SAAAhB,IAEvCQ,kBACCS,EAACO,EAAA,CACCD,GAAIjB,EACJG,cACAgB,WAAY1B,EACZE,YAECe,SAAAb,QAObN,EAAY6B,YAAc"}
|
|
@@ -9,5 +9,5 @@ export interface FormProps extends FormAriaProps {
|
|
|
9
9
|
*/
|
|
10
10
|
maxWidth?: 'default' | 'fullWidth';
|
|
11
11
|
}
|
|
12
|
-
export declare const Form:
|
|
12
|
+
export declare const Form: React.ForwardRefExoticComponent<FormProps & React.RefAttributes<HTMLFormElement>>;
|
|
13
13
|
export default Form;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as a}from"react/jsx-runtime";import{Form as t}from"react-aria-components";import{c as
|
|
1
|
+
import{jsx as a}from"react/jsx-runtime";import{forwardRef as r}from"react";import{Form as t}from"react-aria-components";import{c as m}from"../../index-CCUt_dAN.js";import '../../assets/Form.css';const e=m("_form_z7r30_1",{variants:{maxWidth:{default:"_form--default_z7r30_12",fullWidth:"_form--fullWidth_z7r30_8"},defaultVariants:{maxWidth:"default"}}}),i=r(({children:r,maxWidth:m="default",...i},o)=>/* @__PURE__ */a(t,{className:e({maxWidth:m}),...i,ref:o,children:r}));i.displayName="Form";export{i as Form,i as default};
|
|
2
2
|
//# sourceMappingURL=Form.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Form.js","sources":["../../../src/components/Form/Form.tsx"],"sourcesContent":["import React from 'react';\nimport styles from './Form.module.css';\nimport {\n Form as FormAria,\n FormProps as FormAriaProps,\n} from 'react-aria-components';\nimport { cva } from 'class-variance-authority';\n\nconst form = cva(styles['form'], {\n variants: {\n maxWidth: {\n default: styles['form--default'],\n fullWidth: styles['form--fullWidth'],\n },\n defaultVariants: { maxWidth: 'default' },\n },\n});\n\nexport interface FormProps extends FormAriaProps {\n children?: React.ReactNode;\n /**\n * Controls the maximum width of the form container\n * Default is a constrained width defined by the design token (`--alto-form-max-width`)\n * @default \"default\"\n */\n maxWidth?: 'default' | 'fullWidth';\n}\n\nexport const Form = (
|
|
1
|
+
{"version":3,"file":"Form.js","sources":["../../../src/components/Form/Form.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport styles from './Form.module.css';\nimport {\n Form as FormAria,\n FormProps as FormAriaProps,\n} from 'react-aria-components';\nimport { cva } from 'class-variance-authority';\n\nconst form = cva(styles['form'], {\n variants: {\n maxWidth: {\n default: styles['form--default'],\n fullWidth: styles['form--fullWidth'],\n },\n defaultVariants: { maxWidth: 'default' },\n },\n});\n\nexport interface FormProps extends FormAriaProps {\n children?: React.ReactNode;\n /**\n * Controls the maximum width of the form container\n * Default is a constrained width defined by the design token (`--alto-form-max-width`)\n * @default \"default\"\n */\n maxWidth?: 'default' | 'fullWidth';\n}\n\nexport const Form = forwardRef<HTMLFormElement, FormProps>(\n ({ children, maxWidth = 'default', ...props }, forwardedRef) => {\n return (\n <FormAria className={form({ maxWidth })} {...props} ref={forwardedRef}>\n {children}\n </FormAria>\n );\n },\n);\nForm.displayName = 'Form';\n\nexport default Form;\n"],"names":["form","cva","variants","maxWidth","default","fullWidth","defaultVariants","Form","forwardRef","children","props","forwardedRef","jsx","FormAria","className","ref","displayName"],"mappings":"0KAQMA,EAAOC,kBAAoB,CAC/BC,SAAU,CACRC,SAAU,CACRC,kCACAC,sCAEFC,gBAAiB,CAAEH,SAAU,cAcpBI,EAAOC,EAClB,EAAGC,WAAUN,WAAW,aAAcO,GAASC,mBAE3CC,EAACC,EAAA,CAASC,UAAWd,EAAK,CAAEG,gBAAiBO,EAAOK,IAAKJ,EACtDF,cAKTF,EAAKS,YAAc"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{jsx as e}from"react/jsx-runtime";import{c as
|
|
2
|
-
return e(t,{className:[n({size:d,textAlign:u,truncate:c}),
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{c as _}from"../../index-CCUt_dAN.js";import{foregroundColorVariants as s}from"../../utils/foregroundColour/foregroundColor.js";import{getBaseValue as l,generateResponsiveClasses as t}from"../../utils/breakpoint/responsiveSSR.js";import '../../assets/Heading.css';const i={heading:"_heading_eo0p3_1","size--xxs":"_size--xxs_eo0p3_48","size--xs":"_size--xs_eo0p3_51","size--sm":"_size--sm_eo0p3_54","size--md":"_size--md_eo0p3_57","size--lg":"_size--lg_eo0p3_60","size--xl":"_size--xl_eo0p3_63","align--start":"_align--start_eo0p3_80","align--center":"_align--center_eo0p3_83","align--end":"_align--end_eo0p3_86","truncate--true":"_truncate--true_eo0p3_106","truncate--false":"_truncate--false_eo0p3_110","sm:size--xxs":"_sm:size--xxs_eo0p3_1","sm:size--xs":"_sm:size--xs_eo0p3_1","sm:size--sm":"_sm:size--sm_eo0p3_1","sm:size--md":"_sm:size--md_eo0p3_1","sm:size--lg":"_sm:size--lg_eo0p3_1","sm:size--xl":"_sm:size--xl_eo0p3_1","sm:align--start":"_sm:align--start_eo0p3_1","sm:align--center":"_sm:align--center_eo0p3_1","sm:align--end":"_sm:align--end_eo0p3_1","sm:truncate--true":"_sm:truncate--true_eo0p3_1","sm:truncate--false":"_sm:truncate--false_eo0p3_1","md:size--xxs":"_md:size--xxs_eo0p3_1","md:size--xs":"_md:size--xs_eo0p3_1","md:size--sm":"_md:size--sm_eo0p3_1","md:size--md":"_md:size--md_eo0p3_1","md:size--lg":"_md:size--lg_eo0p3_1","md:size--xl":"_md:size--xl_eo0p3_1","md:align--start":"_md:align--start_eo0p3_1","md:align--center":"_md:align--center_eo0p3_1","md:align--end":"_md:align--end_eo0p3_1","md:truncate--true":"_md:truncate--true_eo0p3_1","md:truncate--false":"_md:truncate--false_eo0p3_1","lg:size--xxs":"_lg:size--xxs_eo0p3_1","lg:size--xs":"_lg:size--xs_eo0p3_1","lg:size--sm":"_lg:size--sm_eo0p3_1","lg:size--md":"_lg:size--md_eo0p3_1","lg:size--lg":"_lg:size--lg_eo0p3_1","lg:size--xl":"_lg:size--xl_eo0p3_1","lg:align--start":"_lg:align--start_eo0p3_1","lg:align--center":"_lg:align--center_eo0p3_1","lg:align--end":"_lg:align--end_eo0p3_1","lg:truncate--true":"_lg:truncate--true_eo0p3_1","lg:truncate--false":"_lg:truncate--false_eo0p3_1","xl:size--xxs":"_xl:size--xxs_eo0p3_1","xl:size--xs":"_xl:size--xs_eo0p3_1","xl:size--sm":"_xl:size--sm_eo0p3_1","xl:size--md":"_xl:size--md_eo0p3_1","xl:size--lg":"_xl:size--lg_eo0p3_1","xl:size--xl":"_xl:size--xl_eo0p3_1","xl:align--start":"_xl:align--start_eo0p3_1","xl:align--center":"_xl:align--center_eo0p3_1","xl:align--end":"_xl:align--end_eo0p3_1","xl:truncate--true":"_xl:truncate--true_eo0p3_1","xl:truncate--false":"_xl:truncate--false_eo0p3_1","xxl:size--xxs":"_xxl:size--xxs_eo0p3_1","xxl:size--xs":"_xxl:size--xs_eo0p3_1","xxl:size--sm":"_xxl:size--sm_eo0p3_1","xxl:size--md":"_xxl:size--md_eo0p3_1","xxl:size--lg":"_xxl:size--lg_eo0p3_1","xxl:size--xl":"_xxl:size--xl_eo0p3_1","xxl:align--start":"_xxl:align--start_eo0p3_1","xxl:align--center":"_xxl:align--center_eo0p3_1","xxl:align--end":"_xxl:align--end_eo0p3_1","xxl:truncate--true":"_xxl:truncate--true_eo0p3_1","xxl:truncate--false":"_xxl:truncate--false_eo0p3_1"},x=t(i),n=_(i.heading,{variants:{size:{xxs:i["size--xxs"],xs:i["size--xs"],sm:i["size--sm"],md:i["size--md"],lg:i["size--lg"],xl:i["size--xl"]},textAlign:{start:i["align--start"],center:i["align--center"],end:i["align--end"]},truncate:{true:i["truncate--true"],false:i["truncate--false"]}},defaultVariants:{size:"md",textAlign:"start"}}),a={h1:"xl",h2:"lg",h3:"md",h4:"sm",h5:"xs",h6:"xxs",span:"md",legend:"sm"},r=({children:_,as:t="h1",size:i,foregroundColor:r="accentSecondary",textAlign:o="start",truncate:g=!1,...m})=>{const z=a[t]??"md",p=i??z,d=l(p,z),u=l(o,"start"),c=l(g,!1),f=x(p,"size"),h=x(o,"align"),j=x(g,"truncate");/* @__PURE__ */
|
|
2
|
+
return e(t,{className:[n({size:d,textAlign:u,truncate:c}),s({foregroundColor:r}),...f,...h,...j].filter(Boolean).join(" "),...m,children:_})};export{a as DEFAULT_HEADING_SIZE_MAP,r as Heading,r as default};
|
|
3
3
|
//# sourceMappingURL=Heading.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Heading.js","sources":["../../../src/components/Heading/Heading.tsx"],"sourcesContent":["import React, { HTMLAttributes } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport styles from './Heading.module.css';\nimport {\n foregroundColorVariants,\n type ForegroundVariants,\n} from '../../utils/foregroundColour/foregroundColor';\nimport
|
|
1
|
+
{"version":3,"file":"Heading.js","sources":["../../../src/components/Heading/Heading.tsx"],"sourcesContent":["import React, { HTMLAttributes } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport styles from './Heading.module.css';\nimport {\n foregroundColorVariants,\n type ForegroundVariants,\n} from '../../utils/foregroundColour/foregroundColor';\nimport {\n getBaseValue,\n generateResponsiveClasses,\n type WithResponsiveProps,\n} from '../../utils/breakpoint/responsiveSSR';\n\nconst getResponsiveClasses = generateResponsiveClasses(styles);\n\nconst heading = cva(styles.heading, {\n variants: {\n size: {\n xxs: styles['size--xxs'],\n xs: styles['size--xs'],\n sm: styles['size--sm'],\n md: styles['size--md'],\n lg: styles['size--lg'],\n xl: styles['size--xl'],\n },\n textAlign: {\n start: styles['align--start'],\n center: styles['align--center'],\n end: styles['align--end'],\n },\n truncate: {\n true: styles['truncate--true'],\n false: styles['truncate--false'],\n },\n },\n defaultVariants: {\n size: 'md',\n textAlign: 'start',\n },\n});\n\ntype HeadingVariants = VariantProps<typeof heading>;\ntype HeadingLevel = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'span' | 'legend';\ntype HeadingSize = 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport const DEFAULT_HEADING_SIZE_MAP: Record<HeadingLevel, HeadingSize> = {\n h1: 'xl',\n h2: 'lg',\n h3: 'md',\n h4: 'sm',\n h5: 'xs',\n h6: 'xxs',\n span: 'md', // Default for span elements\n legend: 'sm', // Default for legend elements\n};\n\nexport interface BaseProps\n extends HeadingVariants,\n HTMLAttributes<HTMLHeadingElement | HTMLSpanElement | HTMLLegendElement> {\n /**\n * children\n */\n children: React.ReactNode;\n\n /**\n * The heading element to render\n */\n as?: HeadingLevel;\n\n /**\n * **[Responsive]** The size of the heading\n */\n size?: HeadingSize;\n\n /**\n * The foreground color of the heading\n */\n foregroundColor?: ForegroundVariants['foregroundColor'];\n\n /**\n * **[Responsive]** The text alignment of the heading\n */\n textAlign?: 'start' | 'center' | 'end';\n\n /**\n * **[Responsive]** Truncate text with ellipsis\n * @default false\n */\n truncate?: boolean;\n}\n\n// ResponsivePropKeys are the keys of the props that can accept responsive values (base + breakpoint-specific)\ntype ResponsivePropKeys = 'size' | 'textAlign' | 'truncate';\n\nexport type HeadingProps = WithResponsiveProps<BaseProps, ResponsivePropKeys>;\n\nexport const Heading = ({\n children,\n as: Component = 'h1',\n size,\n foregroundColor = 'accentSecondary',\n textAlign = 'start',\n truncate = false,\n ...props\n}: HeadingProps) => {\n // Determine the default size based on heading level, falling back to 'md' if not specified\n const defaultSize = DEFAULT_HEADING_SIZE_MAP[Component] ?? 'md';\n\n // Use the provided size or fall back to the default size based on heading level\n const effectiveSize = size ?? defaultSize;\n\n // Get the base values for size and textAlign to apply the correct default variants\n const baseSize = getBaseValue(effectiveSize, defaultSize);\n const baseAlign = getBaseValue(textAlign, 'start');\n const truncateBase = getBaseValue(truncate, false);\n\n // Generate responsive classes for size and textAlign\n const sizeResp = getResponsiveClasses(effectiveSize, 'size');\n const alignResp = getResponsiveClasses(textAlign, 'align');\n const truncateResp = getResponsiveClasses(truncate, 'truncate');\n\n return (\n <Component\n className={[\n heading({\n size: baseSize,\n textAlign: baseAlign,\n truncate: truncateBase,\n }),\n foregroundColorVariants({ foregroundColor }),\n ...sizeResp,\n ...alignResp,\n ...truncateResp,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n >\n {children}\n </Component>\n );\n};\n\nexport default Heading;\n"],"names":["getResponsiveClasses","generateResponsiveClasses","styles","heading","cva","variants","size","xxs","xs","sm","md","lg","xl","textAlign","start","center","end","truncate","true","false","defaultVariants","DEFAULT_HEADING_SIZE_MAP","h1","h2","h3","h4","h5","h6","span","legend","Heading","children","as","Component","foregroundColor","props","defaultSize","effectiveSize","baseSize","getBaseValue","baseAlign","truncateBase","sizeResp","alignResp","truncateResp","jsx","className","foregroundColorVariants","filter","Boolean","join"],"mappings":"g9FAaMA,EAAuBC,EAA0BC,GAEjDC,EAAUC,EAAIF,EAAOC,QAAS,CAClCE,SAAU,CACRC,KAAM,CACJC,IAAKL,EAAO,aACZM,GAAIN,EAAO,YACXO,GAAIP,EAAO,YACXQ,GAAIR,EAAO,YACXS,GAAIT,EAAO,YACXU,GAAIV,EAAO,aAEbW,UAAW,CACTC,MAAOZ,EAAO,gBACda,OAAQb,EAAO,iBACfc,IAAKd,EAAO,eAEde,SAAU,CACRC,KAAMhB,EAAO,kBACbiB,MAAOjB,EAAO,qBAGlBkB,gBAAiB,CACfd,KAAM,KACNO,UAAW,WAQFQ,EAA8D,CACzEC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,MACJC,KAAM,KACNC,OAAQ,MA2CGC,EAAU,EACrBC,WACAC,GAAIC,EAAY,KAChB3B,OACA4B,kBAAkB,kBAClBrB,YAAY,QACZI,YAAW,KACRkB,MAGH,MAAMC,EAAcf,EAAyBY,IAAc,KAGrDI,EAAgB/B,GAAQ8B,EAGxBE,EAAWC,EAAaF,EAAeD,GACvCI,EAAYD,EAAa1B,EAAW,SACpC4B,EAAeF,EAAatB,GAAU,GAGtCyB,EAAW1C,EAAqBqC,EAAe,QAC/CM,EAAY3C,EAAqBa,EAAW,SAC5C+B,EAAe5C,EAAqBiB,EAAU;AAEpD,OACE4B,EAACZ,EAAA,CACCa,UAAW,CACT3C,EAAQ,CACNG,KAAMgC,EACNzB,UAAW2B,EACXvB,SAAUwB,IAEZM,EAAwB,CAAEb,uBACvBQ,KACAC,KACAC,GAEFI,OAAOC,SACPC,KAAK,QACJf,EAEHJ"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { SectionProps } from '../Section';
|
|
3
|
+
import { ResponsiveValue, WithResponsiveProps } from '../../utils/breakpoint/responsiveSSR';
|
|
4
|
+
type IntroSectionAlignContent = 'start' | 'center';
|
|
5
|
+
interface IntroSectionBaseProps {
|
|
6
|
+
children?: React.ReactNode;
|
|
7
|
+
alignContent?: IntroSectionAlignContent;
|
|
8
|
+
paddingTop?: SectionProps['paddingTop'];
|
|
9
|
+
paddingBottom?: SectionProps['paddingBottom'];
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
export type IntroSectionProps = WithResponsiveProps<IntroSectionBaseProps, 'alignContent' | 'paddingTop' | 'paddingBottom'>;
|
|
13
|
+
export interface IntroSectionHeaderProps {
|
|
14
|
+
/** Primary heading text rendered inside an `<h1>`. */
|
|
15
|
+
title?: string;
|
|
16
|
+
/** Secondary subtitle text rendered below the title. */
|
|
17
|
+
subtitle?: string;
|
|
18
|
+
/** Slot subcomponents to render within the header (e.g. `IntroSection.StartSlot`, `IntroSection.EndSlot`). */
|
|
19
|
+
children?: React.ReactNode;
|
|
20
|
+
/** Additional CSS class names applied to the `<header>` element. */
|
|
21
|
+
className?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface IntroSectionActionsProps {
|
|
24
|
+
actions?: React.ReactNode;
|
|
25
|
+
children?: React.ReactNode;
|
|
26
|
+
alignContent?: ResponsiveValue<IntroSectionAlignContent>;
|
|
27
|
+
className?: string;
|
|
28
|
+
}
|
|
29
|
+
export interface IntroSectionSlotProps {
|
|
30
|
+
/** Content to render inside the slot. */
|
|
31
|
+
children: React.ReactNode;
|
|
32
|
+
/** Additional CSS class names applied to the slot wrapper. */
|
|
33
|
+
className?: string;
|
|
34
|
+
}
|
|
35
|
+
interface IntroSectionComponent extends React.FC<IntroSectionProps> {
|
|
36
|
+
Header: React.FC<IntroSectionHeaderProps>;
|
|
37
|
+
Actions: React.FC<IntroSectionActionsProps>;
|
|
38
|
+
StartSlot: React.FC<IntroSectionSlotProps>;
|
|
39
|
+
EndSlot: React.FC<IntroSectionSlotProps>;
|
|
40
|
+
}
|
|
41
|
+
export declare const IntroSection: IntroSectionComponent;
|
|
42
|
+
export default IntroSection;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{jsxs as n,jsx as t}from"react/jsx-runtime";import e from"../Section/Section.js";import{Heading as i}from"../Heading/Heading.js";import{SubHeading as o}from"../SubHeading/SubHeading.js";import{getBaseValueOrUndefined as a,generateResponsiveClasses as r}from"../../utils/breakpoint/responsiveSSR.js";import{responsiveToCssVars as s}from"../../utils/breakpoint/responsiveToCssVars.js";import{a as l}from"../../flex-BfhdHBb6.js";import{a as c}from"../../padding-nClUzhWp.js";import '../../assets/IntroSection.css';const d={"intro-section":"_intro-section_kainb_1","intro-section__header":"_intro-section__header_kainb_13","intro-section__actions":"_intro-section__actions_kainb_20","intro-section__heading":"_intro-section__heading_kainb_37","intro-section__subheading":"_intro-section__subheading_kainb_42","intro-section__start-slot":"_intro-section__start-slot_kainb_55","intro-section__end-slot":"_intro-section__end-slot_kainb_62"},_=r(l),m=r(c),p=n=>"center"===n?"center":"flexStart",f=(n,t="default")=>null==n?t:"object"==typeof n?null!=n.base?n:{base:t,...n}:n,g=({title:e,subtitle:a,children:r,className:s})=>{const l=(e??"").trim().length>0,c=(a??"").trim().length>0;return l||c||r?/* @__PURE__ */n("header",{className:[d["intro-section__header"],s].filter(Boolean).join(" "),children:[l?/* @__PURE__ */t("div",{className:d["intro-section__heading"],children:/* @__PURE__ */t(i,{as:"h1",foregroundColor:"accentSecondary",children:e})}):null,c?/* @__PURE__ */t("div",{className:d["intro-section__subheading"],children:/* @__PURE__ */t(o,{as:"span",size:"xs",foregroundColor:"secondary",children:a})}):null,r]}):null},u=({actions:n,children:e,alignContent:i,className:o})=>{const a=s(i??null,{varPrefix:"--intro-section-actions-text-align",normalise:n=>"center"===n?"center":"start"});/* @__PURE__ */
|
|
2
|
+
return t("div",{style:a,className:[d["intro-section__actions"],o].filter(Boolean).join(" "),children:n??e})},h=({children:n,className:e})=>/* @__PURE__ */t("div",{className:[d["intro-section__start-slot"],e].filter(Boolean).join(" "),children:n}),b=({children:n,className:e})=>/* @__PURE__ */t("div",{className:[d["intro-section__end-slot"],e].filter(Boolean).join(" "),children:n}),S=({children:n,alignContent:i,paddingTop:o,paddingBottom:r,className:l})=>{const c=f(o),g=f(r,"sm"),u="object"==typeof i?Object.fromEntries(Object.entries(i).filter(([,n])=>null!=n).map(([n,t])=>[n,p(t)])):null,h="object"==typeof i?p(a(i)??"start"):null!=i?p(i):"flexStart",b=_(u,"flex-align-items"),S=a(c)??"default",j=a(g)??"sm",N=m(c,"padding-top"),x=m(g,"padding-bottom"),y=s(i??null,{varPrefix:"--intro-section-text-align",normalise:n=>"center"===n?"center":"start"});/* @__PURE__ */
|
|
3
|
+
return t(e,{containerMaxWidth:"page",backgroundColor:"base",paddingX:"default",paddingTop:S,paddingBottom:j,style:y,className:[d["intro-section"],l,...N,...x].filter(Boolean).join(" "),children:/* @__PURE__ */t(e.Container,{flexDirection:"column",alignItems:h,className:b.join(" "),children:n})})};S.Header=g,S.Actions=u,S.StartSlot=h,S.EndSlot=b,g.displayName="IntroSection.Header",u.displayName="IntroSection.Actions",h.displayName="IntroSection.StartSlot",b.displayName="IntroSection.EndSlot",S.displayName="IntroSection";export{S as IntroSection,S as default};
|
|
4
|
+
//# sourceMappingURL=IntroSection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IntroSection.js","sources":["../../../src/components/IntroSection/IntroSection.tsx"],"sourcesContent":["import React from 'react';\nimport Section from '../Section';\nimport type { SectionProps } from '../Section';\nimport Heading from '../Heading';\nimport SubHeading from '../SubHeading';\nimport {\n generateResponsiveClasses,\n getBaseValueOrUndefined,\n type ResponsiveValue,\n type WithResponsiveProps,\n} from '../../utils/breakpoint/responsiveSSR';\nimport { responsiveToCssVars } from '../../utils/breakpoint/responsiveToCssVars';\nimport flexStyles from '../../utils/flex/flex.module.css';\nimport paddingStyles from '../../utils/padding/padding.module.css';\nimport styles from './IntroSection.module.css';\n\ntype IntroSectionAlignContent = 'start' | 'center';\ntype AlignItemsValue = 'flexStart' | 'center';\n\nconst getFlexResponsiveClasses = generateResponsiveClasses(flexStyles);\nconst getPaddingResponsiveClasses = generateResponsiveClasses(paddingStyles);\n\nconst toAlignItems = (v: IntroSectionAlignContent): AlignItemsValue =>\n v === 'center' ? 'center' : 'flexStart';\n\nconst withDefaultPadding = (\n value: SectionProps['paddingTop'],\n defaultValue: Extract<\n NonNullable<SectionProps['paddingTop']>,\n string\n > = 'default',\n): SectionProps['paddingTop'] => {\n if (value == null) {\n return defaultValue;\n }\n\n if (typeof value === 'object') {\n return value.base != null ? value : { base: defaultValue, ...value };\n }\n\n return value;\n};\n\ninterface IntroSectionBaseProps {\n children?: React.ReactNode;\n alignContent?: IntroSectionAlignContent;\n paddingTop?: SectionProps['paddingTop'];\n paddingBottom?: SectionProps['paddingBottom'];\n className?: string;\n}\n\nexport type IntroSectionProps = WithResponsiveProps<\n IntroSectionBaseProps,\n 'alignContent' | 'paddingTop' | 'paddingBottom'\n>;\n\nexport interface IntroSectionHeaderProps {\n /** Primary heading text rendered inside an `<h1>`. */\n title?: string;\n /** Secondary subtitle text rendered below the title. */\n subtitle?: string;\n /** Slot subcomponents to render within the header (e.g. `IntroSection.StartSlot`, `IntroSection.EndSlot`). */\n children?: React.ReactNode;\n /** Additional CSS class names applied to the `<header>` element. */\n className?: string;\n}\n\nconst IntroSectionHeader = ({\n title,\n subtitle,\n children,\n className,\n}: IntroSectionHeaderProps) => {\n const hasTitle = (title ?? '').trim().length > 0;\n const hasSubtitle = (subtitle ?? '').trim().length > 0;\n\n if (!hasTitle && !hasSubtitle && !children) {\n return null;\n }\n\n return (\n <header\n className={[styles['intro-section__header'], className]\n .filter(Boolean)\n .join(' ')}\n >\n {hasTitle ? (\n <div className={styles['intro-section__heading']}>\n <Heading as=\"h1\" foregroundColor=\"accentSecondary\">\n {title}\n </Heading>\n </div>\n ) : null}\n\n {hasSubtitle ? (\n <div className={styles['intro-section__subheading']}>\n <SubHeading as=\"span\" size=\"xs\" foregroundColor=\"secondary\">\n {subtitle}\n </SubHeading>\n </div>\n ) : null}\n\n {children}\n </header>\n );\n};\n\nexport interface IntroSectionActionsProps {\n actions?: React.ReactNode;\n children?: React.ReactNode;\n alignContent?: ResponsiveValue<IntroSectionAlignContent>;\n className?: string;\n}\n\nconst Actions = ({\n actions,\n children,\n alignContent,\n className,\n}: IntroSectionActionsProps) => {\n const actionsTextAlignVars = responsiveToCssVars(alignContent ?? null, {\n varPrefix: '--intro-section-actions-text-align',\n normalise: (value) => (value === 'center' ? 'center' : 'start'),\n });\n\n return (\n <div\n style={actionsTextAlignVars}\n className={[styles['intro-section__actions'], className]\n .filter(Boolean)\n .join(' ')}\n >\n {actions ?? children}\n </div>\n );\n};\n\nexport interface IntroSectionSlotProps {\n /** Content to render inside the slot. */\n children: React.ReactNode;\n /** Additional CSS class names applied to the slot wrapper. */\n className?: string;\n}\n\nconst StartSlot = ({ children, className }: IntroSectionSlotProps) => (\n <div\n className={[styles['intro-section__start-slot'], className]\n .filter(Boolean)\n .join(' ')}\n >\n {children}\n </div>\n);\n\nconst EndSlot = ({ children, className }: IntroSectionSlotProps) => (\n <div\n className={[styles['intro-section__end-slot'], className]\n .filter(Boolean)\n .join(' ')}\n >\n {children}\n </div>\n);\n\ninterface IntroSectionComponent extends React.FC<IntroSectionProps> {\n Header: React.FC<IntroSectionHeaderProps>;\n Actions: React.FC<IntroSectionActionsProps>;\n StartSlot: React.FC<IntroSectionSlotProps>;\n EndSlot: React.FC<IntroSectionSlotProps>;\n}\n\nexport const IntroSection = (({\n children,\n alignContent,\n paddingTop,\n paddingBottom,\n className,\n}: IntroSectionProps) => {\n const resolvedPaddingTop = withDefaultPadding(paddingTop);\n const resolvedPaddingBottom = withDefaultPadding(paddingBottom, 'sm');\n\n // Map the responsive alignContent object to Section's alignItems values\n const mappedResponsive =\n typeof alignContent === 'object'\n ? (Object.fromEntries(\n Object.entries(alignContent)\n .filter(([, v]) => v != null)\n .map(([bp, v]) => [\n bp,\n toAlignItems(v as IntroSectionAlignContent),\n ]),\n ) as Record<string, AlignItemsValue>)\n : null;\n\n // Resolve the base (non-responsive) alignItems value\n const baseAlignItems: AlignItemsValue =\n typeof alignContent === 'object'\n ? toAlignItems(\n (getBaseValueOrUndefined(alignContent) as IntroSectionAlignContent) ??\n 'start',\n )\n : alignContent != null\n ? toAlignItems(alignContent as IntroSectionAlignContent)\n : 'flexStart';\n\n // Generate responsive breakpoint classes with the correct CSS prefix\n const responsiveAlignClasses = getFlexResponsiveClasses(\n mappedResponsive,\n 'flex-align-items',\n );\n\n const basePaddingTop =\n getBaseValueOrUndefined(resolvedPaddingTop) ?? 'default';\n const basePaddingBottom =\n getBaseValueOrUndefined(resolvedPaddingBottom) ?? 'sm';\n\n const responsivePaddingTopClasses = getPaddingResponsiveClasses(\n resolvedPaddingTop,\n 'padding-top',\n );\n const responsivePaddingBottomClasses = getPaddingResponsiveClasses(\n resolvedPaddingBottom,\n 'padding-bottom',\n );\n\n const textAlignVars = responsiveToCssVars(alignContent ?? null, {\n varPrefix: '--intro-section-text-align',\n normalise: (value) => (value === 'center' ? 'center' : 'start'),\n });\n\n return (\n <Section\n containerMaxWidth=\"page\"\n backgroundColor=\"base\"\n paddingX=\"default\"\n paddingTop={basePaddingTop}\n paddingBottom={basePaddingBottom}\n style={textAlignVars}\n className={[\n styles['intro-section'],\n className,\n ...responsivePaddingTopClasses,\n ...responsivePaddingBottomClasses,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <Section.Container\n flexDirection=\"column\"\n alignItems={baseAlignItems}\n className={responsiveAlignClasses.join(' ')}\n >\n {children}\n </Section.Container>\n </Section>\n );\n}) as IntroSectionComponent;\n\nIntroSection.Header = IntroSectionHeader;\nIntroSection.Actions = Actions;\nIntroSection.StartSlot = StartSlot;\nIntroSection.EndSlot = EndSlot;\n\nIntroSectionHeader.displayName = 'IntroSection.Header';\nActions.displayName = 'IntroSection.Actions';\nStartSlot.displayName = 'IntroSection.StartSlot';\nEndSlot.displayName = 'IntroSection.EndSlot';\nIntroSection.displayName = 'IntroSection';\n\nexport default IntroSection;\n"],"names":["getFlexResponsiveClasses","generateResponsiveClasses","flexStyles","getPaddingResponsiveClasses","paddingStyles","toAlignItems","v","withDefaultPadding","value","defaultValue","base","IntroSectionHeader","title","subtitle","children","className","hasTitle","trim","length","hasSubtitle","jsxs","styles","filter","Boolean","join","jsx","Heading","as","foregroundColor","SubHeading","size","Actions","actions","alignContent","actionsTextAlignVars","responsiveToCssVars","varPrefix","normalise","style","StartSlot","EndSlot","IntroSection","paddingTop","paddingBottom","resolvedPaddingTop","resolvedPaddingBottom","mappedResponsive","Object","fromEntries","entries","map","bp","baseAlignItems","getBaseValueOrUndefined","responsiveAlignClasses","basePaddingTop","basePaddingBottom","responsivePaddingTopClasses","responsivePaddingBottomClasses","textAlignVars","Section","containerMaxWidth","backgroundColor","paddingX","Container","flexDirection","alignItems","Header","displayName"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|