@apipass/design-system 8.0.0 → 8.2.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/lib/embedded-styles.js +2 -2
- package/dist/lib/lib.index.cjs +1 -1
- package/dist/lib/lib.index.js +775 -773
- package/dist/lib/style.css +1 -1
- package/dist/lib/ui/primitives/DateRangePicker/DateRangePicker.cjs +1 -1
- package/dist/lib/ui/primitives/DateRangePicker/DateRangePicker.cjs.map +1 -1
- package/dist/lib/ui/primitives/DateRangePicker/DateRangePicker.js +235 -229
- package/dist/lib/ui/primitives/DateRangePicker/DateRangePicker.js.map +1 -1
- package/dist/lib/ui/primitives/DateRangePicker/dateRangePresets.cjs +1 -1
- package/dist/lib/ui/primitives/DateRangePicker/dateRangePresets.cjs.map +1 -1
- package/dist/lib/ui/primitives/DateRangePicker/dateRangePresets.js +26 -21
- package/dist/lib/ui/primitives/DateRangePicker/dateRangePresets.js.map +1 -1
- package/dist/lib/ui/primitives/Select/MultiSelect.cjs +1 -1
- package/dist/lib/ui/primitives/Select/MultiSelect.cjs.map +1 -1
- package/dist/lib/ui/primitives/Select/MultiSelect.js +138 -68
- package/dist/lib/ui/primitives/Select/MultiSelect.js.map +1 -1
- package/dist/types/ui/primitives/DateRangePicker/DateRangePicker.d.ts +3 -2
- package/dist/types/ui/primitives/DateRangePicker/dateRangePresets.d.ts +5 -0
- package/dist/types/ui/primitives/Select/MultiSelect.d.ts +17 -3
- package/package.json +8 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateRangePicker.js","sources":["../../../../../src/ui/primitives/DateRangePicker/DateRangePicker.tsx"],"sourcesContent":["import {\n Time,\n getLocalTimeZone,\n toCalendarDate,\n toCalendarDateTime,\n type DateValue,\n} from \"@internationalized/date\";\nimport { clsx } from \"clsx\";\nimport { useOverlayPortalContainer } from \"hooks\";\nimport {\n IconCalendar,\n IconCheck,\n IconChevronDown,\n IconChevronLeft,\n IconChevronRight,\n} from \"icons\";\nimport {\n Button,\n Description,\n Field,\n Label,\n ListBox,\n ListBoxItem,\n Text,\n TextSmallStrong,\n} from \"primitives\";\nimport { useContext, useEffect, useMemo, useState } from \"react\";\nimport {\n Button as RACButton,\n CalendarCell as RACCalendarCell,\n CalendarGrid as RACCalendarGrid,\n DateField as RACDateField,\n DateInput as RACDateInput,\n DateSegment as RACDateSegment,\n Dialog as RACDialog,\n DialogTrigger as RACDialogTrigger,\n Group as RACGroup,\n Heading as RACHeading,\n I18nProvider as RACI18nProvider,\n Label as RACLabel,\n Popover as RACPopover,\n RangeCalendar as RACRangeCalendar,\n RangeCalendarStateContext,\n useLocale,\n type TimeValue,\n} from \"react-aria-components\";\nimport {\n createDateRangePresets,\n type DateRangePresetKey,\n} from \"./dateRangePresets\";\nimport \"./daterangepicker.css\";\n\nconst dayStartTime = () => new Time(0, 0, 0);\nconst dayEndTime = () => new Time(23, 59, 59);\n\nfunction CalendarAnchorSync({\n onAnchorChange,\n}: {\n onAnchorChange: (anchor: DateValue | null) => void;\n}) {\n const state = useContext(RangeCalendarStateContext);\n const anchor = state?.anchorDate ?? null;\n const anchorKey = anchor?.toString();\n useEffect(() => {\n onAnchorChange(anchor);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [anchorKey]);\n return null;\n}\n\nexport interface DateRangePreset {\n id: string;\n label: string;\n getValue: () => { start: DateValue; end: DateValue };\n}\n\nexport interface DateRangePickerValue {\n preset?: DateRangePreset;\n start: DateValue | null;\n end: DateValue | null;\n}\n\nexport interface DateRangePickerLabels {\n placeholder: string;\n relativeLabel: string;\n absoluteLabel: string;\n startDateLabel: string;\n endDateLabel: string;\n cancelLabel?: string | null;\n applyLabel?: string | null;\n}\n\nexport interface DateRangePickerProps {\n className?: string;\n locale?: string;\n label?: string;\n \"aria-label\"?: string;\n description?: string;\n errorMessage?: string;\n labels: DateRangePickerLabels;\n intervals?: DateRangePreset[];\n presetKeys?: DateRangePresetKey[];\n presetLabels?: Record<DateRangePresetKey, string>;\n hideTime?: boolean;\n minValue?: DateValue;\n maxValue?: DateValue;\n timezone?: string;\n isDisabled?: boolean;\n isRequired?: boolean;\n value?: DateRangePickerValue;\n defaultValue?: DateRangePickerValue;\n onChange?: (value: DateRangePickerValue) => void;\n}\n\ntype DateRange = { start: DateValue; end: DateValue };\n\ntype DraftState = {\n range: DateRange | null;\n startTime: TimeValue | null;\n endTime: TimeValue | null;\n preset?: DateRangePreset;\n};\n\nconst timeFromDateValue = (date: DateValue | null): TimeValue | null =>\n date && \"hour\" in date ? new Time(date.hour, date.minute, date.second) : null;\n\nconst toDraftState = (value?: DateRangePickerValue): DraftState => {\n if (!value || (!value.start && !value.end)) {\n return { range: null, startTime: null, endTime: null, preset: value?.preset };\n }\n const range =\n value.start && value.end\n ? { start: toCalendarDate(value.start), end: toCalendarDate(value.end) }\n : null;\n return {\n range,\n startTime: timeFromDateValue(value.start),\n endTime: timeFromDateValue(value.end),\n preset: value.preset,\n };\n};\n\nconst combineDateAndTime = (\n date: DateValue | undefined,\n time: TimeValue | null,\n hideTime: boolean,\n): DateValue | null => {\n if (!date) return null;\n const calendarDate = toCalendarDate(date);\n if (hideTime || !time) return calendarDate;\n return toCalendarDateTime(calendarDate, time);\n};\n\nconst draftToValue = (\n draft: DraftState,\n hideTime: boolean,\n): DateRangePickerValue => ({\n preset: draft.preset,\n start: combineDateAndTime(draft.range?.start, draft.startTime, hideTime),\n end: combineDateAndTime(draft.range?.end, draft.endTime, hideTime),\n});\n\nexport function DateRangePicker({\n className,\n locale: localeProp,\n label,\n \"aria-label\": ariaLabel,\n description,\n errorMessage,\n labels,\n intervals: intervalsProp,\n presetKeys,\n presetLabels,\n hideTime = false,\n minValue,\n maxValue,\n timezone: timezoneProp,\n isDisabled = false,\n isRequired = false,\n value,\n defaultValue,\n onChange,\n}: DateRangePickerProps) {\n // Sem container explícito o popover faz portal no document.body — fora da\n // shadow root do MFE, sem CSS. Ver ui/hooks/useOverlayPortal.\n const portalContainer = useOverlayPortalContainer();\n const { locale: ambientLocale } = useLocale();\n const locale = localeProp ?? ambientLocale ?? \"pt-BR\";\n const timezone = timezoneProp ?? getLocalTimeZone();\n const {\n placeholder,\n relativeLabel,\n absoluteLabel,\n startDateLabel,\n endDateLabel,\n cancelLabel,\n applyLabel,\n } = labels;\n\n const intervals = useMemo(() => {\n if (intervalsProp) return intervalsProp;\n if (!presetKeys) return undefined;\n if (!presetLabels) {\n throw new Error(\n \"DateRangePicker: `presetLabels` is required when `presetKeys` is provided.\",\n );\n }\n return createDateRangePresets({\n locale,\n timezone,\n include: presetKeys,\n labels: presetLabels,\n });\n }, [intervalsProp, presetKeys, presetLabels, locale, timezone]);\n\n const [committed, setCommitted] = useState<DraftState>(() =>\n toDraftState(value ?? defaultValue),\n );\n const [draft, setDraft] = useState<DraftState>(committed);\n const [previewStart, setPreviewStart] = useState<DateValue | null>(null);\n const [isOpen, setIsOpen] = useState(false);\n\n useEffect(() => {\n if (value !== undefined) setCommitted(toDraftState(value));\n }, [value]);\n\n const clearPreset = (next: DraftState): DraftState => ({\n ...next,\n preset: undefined,\n });\n\n const withDefaultTimes = (next: DraftState): DraftState =>\n hideTime\n ? next\n : {\n ...next,\n startTime: next.startTime ?? dayStartTime(),\n endTime: next.endTime ?? dayEndTime(),\n };\n\n const handleOpenChange = (open: boolean) => {\n if (open) {\n setDraft(committed);\n setPreviewStart(null);\n }\n setIsOpen(open);\n };\n\n const selectPreset = (preset: DateRangePreset) => {\n setPreviewStart(null);\n const { start, end } = preset.getValue();\n setDraft({\n range: { start: toCalendarDate(start), end: toCalendarDate(end) },\n startTime: timeFromDateValue(start),\n endTime: timeFromDateValue(end),\n preset,\n });\n };\n\n const handleAnchorChange = (anchor: DateValue | null) => {\n setPreviewStart(anchor);\n if (anchor && !hideTime) {\n setDraft((current) =>\n clearPreset({\n ...current,\n startTime: current.startTime ?? dayStartTime(),\n }),\n );\n }\n };\n\n const setRange = (range: DateRange | null) => {\n setPreviewStart(null);\n setDraft((current) => withDefaultTimes(clearPreset({ ...current, range })));\n };\n\n const setStartField = (dateTime: DateValue | null) => {\n if (!dateTime) return;\n setPreviewStart(null);\n const date = toCalendarDate(dateTime);\n const time = timeFromDateValue(dateTime);\n setDraft((current) => {\n const nextStartTime = hideTime\n ? current.startTime\n : (time ?? current.startTime ?? dayStartTime());\n const start = combineDateAndTime(date, nextStartTime, hideTime);\n const currentEnd = combineDateAndTime(\n current.range?.end,\n current.endTime,\n hideTime,\n );\n const pushEnd = Boolean(start && currentEnd && currentEnd.compare(start) < 0);\n return clearPreset({\n ...current,\n range: {\n start: date,\n end: pushEnd || !current.range?.end ? date : current.range.end,\n },\n startTime: nextStartTime,\n endTime: pushEnd ? nextStartTime : current.endTime,\n });\n });\n };\n\n const setEndField = (dateTime: DateValue | null) => {\n if (!dateTime) return;\n const date = toCalendarDate(dateTime);\n const time = timeFromDateValue(dateTime);\n setDraft((current) => {\n const nextEndTime = hideTime\n ? current.endTime\n : (time ?? current.endTime ?? dayEndTime());\n const end = combineDateAndTime(date, nextEndTime, hideTime);\n const start = combineDateAndTime(\n current.range?.start,\n current.startTime,\n hideTime,\n );\n if (start && end && end.compare(start) < 0) return current;\n return clearPreset({\n ...current,\n range: { start: current.range?.start ?? date, end: date },\n endTime: nextEndTime,\n });\n });\n };\n\n const apply = () => {\n setCommitted(draft);\n onChange?.(draftToValue(draft, hideTime));\n setIsOpen(false);\n };\n\n const cancel = () => setIsOpen(false);\n\n const showFooter = Boolean(cancelLabel || applyLabel);\n\n const triggerText = () => {\n if (committed.preset) return committed.preset.label;\n if (committed.range) {\n const format = (date: DateValue) =>\n date\n .toDate(timezone)\n .toLocaleString(locale, {\n day: \"2-digit\",\n month: \"2-digit\",\n year: \"numeric\",\n ...(hideTime\n ? {}\n : { hour: \"2-digit\", minute: \"2-digit\", second: \"2-digit\" }),\n });\n const start = combineDateAndTime(\n committed.range.start,\n committed.startTime,\n hideTime,\n );\n const end = combineDateAndTime(\n committed.range.end,\n committed.endTime,\n hideTime,\n );\n if (start && end) return `${format(start)} — ${format(end)}`;\n }\n return null;\n };\n\n const selectedText = triggerText();\n const hasPresets = Boolean(intervals && intervals.length > 0);\n const fieldGranularity = hideTime ? \"day\" : \"second\";\n const startFieldValue = combineDateAndTime(\n draft.range?.start ?? previewStart ?? undefined,\n draft.startTime,\n hideTime,\n );\n const endFieldValue = combineDateAndTime(\n draft.range?.end ?? undefined,\n draft.endTime,\n hideTime,\n );\n\n const content = (\n <Field className={clsx(className, \"date-range-picker\")}>\n {label && <Label>{label}</Label>}\n <RACDialogTrigger isOpen={isOpen} onOpenChange={handleOpenChange}>\n <RACButton\n className=\"date-range-picker-trigger\"\n isDisabled={isDisabled}\n aria-label={label ? undefined : (ariaLabel ?? placeholder)}\n aria-required={isRequired || undefined}\n data-invalid={errorMessage ? true : undefined}\n >\n {committed.preset ? (\n <span className=\"date-range-picker-preset-badge\">\n <IconCalendar aria-hidden=\"true\" />\n {committed.preset.label}\n </span>\n ) : (\n <span\n className=\"date-range-picker-value\"\n data-placeholder={selectedText ? undefined : true}\n >\n {selectedText ?? placeholder}\n </span>\n )}\n <IconChevronDown aria-hidden=\"true\" />\n </RACButton>\n <RACPopover\n className=\"date-range-picker-popover\"\n placement=\"bottom start\"\n UNSTABLE_portalContainer={portalContainer}\n >\n <RACDialog className=\"date-range-picker-dialog\">\n <div className=\"date-range-picker-body\">\n {hasPresets && (\n <div className=\"date-range-picker-presets\">\n <TextSmallStrong className=\"date-range-picker-section-title\">\n {relativeLabel}\n </TextSmallStrong>\n <ListBox\n aria-label={relativeLabel}\n className=\"date-range-picker-presets-list\"\n selectionMode=\"single\"\n selectedKeys={draft.preset ? [draft.preset.id] : []}\n items={intervals}\n onSelectionChange={(keys) => {\n const [id] = [...keys];\n const preset = intervals?.find((item) => item.id === id);\n if (preset) selectPreset(preset);\n }}\n >\n {(item) => (\n <ListBoxItem\n id={item.id}\n textValue={item.label}\n className=\"date-range-picker-preset-item\"\n >\n <span>{item.label}</span>\n <IconCheck\n aria-hidden=\"true\"\n className=\"date-range-picker-preset-check\"\n />\n </ListBoxItem>\n )}\n </ListBox>\n </div>\n )}\n\n <div className=\"date-range-picker-absolute\">\n <TextSmallStrong className=\"date-range-picker-section-title\">\n {absoluteLabel}\n </TextSmallStrong>\n\n <div className=\"date-range-picker-fields\">\n <RACDateField\n className=\"date-range-picker-datefield\"\n granularity={fieldGranularity}\n value={startFieldValue}\n minValue={minValue}\n maxValue={endFieldValue ?? maxValue}\n onChange={setStartField}\n >\n <RACLabel className=\"date-range-picker-field-label\">\n {startDateLabel}\n </RACLabel>\n <RACGroup className=\"date-range-picker-input\">\n <RACDateInput>\n {(segment) => <RACDateSegment segment={segment} />}\n </RACDateInput>\n <IconCalendar aria-hidden=\"true\" />\n </RACGroup>\n </RACDateField>\n\n <RACDateField\n className=\"date-range-picker-datefield\"\n granularity={fieldGranularity}\n value={endFieldValue}\n minValue={startFieldValue ?? minValue}\n maxValue={maxValue}\n onChange={setEndField}\n >\n <RACLabel className=\"date-range-picker-field-label\">\n {endDateLabel}\n </RACLabel>\n <RACGroup className=\"date-range-picker-input\">\n <RACDateInput>\n {(segment) => <RACDateSegment segment={segment} />}\n </RACDateInput>\n <IconCalendar aria-hidden=\"true\" />\n </RACGroup>\n </RACDateField>\n </div>\n\n <RACRangeCalendar\n className=\"date-range-picker-calendar\"\n aria-label={absoluteLabel}\n value={draft.range}\n minValue={minValue}\n maxValue={maxValue}\n onChange={setRange}\n >\n <CalendarAnchorSync onAnchorChange={handleAnchorChange} />\n <header className=\"date-range-picker-calendar-header\">\n <RACButton\n slot=\"previous\"\n className=\"date-range-picker-calendar-nav\"\n >\n <IconChevronLeft aria-hidden=\"true\" />\n </RACButton>\n <RACHeading className=\"date-range-picker-calendar-heading\" />\n <RACButton\n slot=\"next\"\n className=\"date-range-picker-calendar-nav\"\n >\n <IconChevronRight aria-hidden=\"true\" />\n </RACButton>\n </header>\n <RACCalendarGrid className=\"date-range-picker-calendar-grid\">\n {(date) => (\n <RACCalendarCell\n date={date}\n className=\"date-range-picker-calendar-cell\"\n />\n )}\n </RACCalendarGrid>\n </RACRangeCalendar>\n </div>\n </div>\n\n {showFooter && (\n <div className=\"date-range-picker-actions\">\n {cancelLabel && (\n <Button variant=\"neutral\" size=\"small\" onPress={cancel}>\n {cancelLabel}\n </Button>\n )}\n {applyLabel && (\n <Button variant=\"primary\" size=\"small\" onPress={apply}>\n {applyLabel}\n </Button>\n )}\n </div>\n )}\n </RACDialog>\n </RACPopover>\n </RACDialogTrigger>\n {description && <Description>{description}</Description>}\n {errorMessage && (\n <Text className=\"date-range-picker-error\" elementType=\"span\">\n {errorMessage}\n </Text>\n )}\n </Field>\n );\n\n return localeProp ? (\n <RACI18nProvider locale={localeProp}>{content}</RACI18nProvider>\n ) : (\n content\n );\n}\n"],"names":["dayStartTime","Time","dayEndTime","CalendarAnchorSync","onAnchorChange","state","useContext","RangeCalendarStateContext","anchor","anchorKey","useEffect","timeFromDateValue","date","toDraftState","value","toCalendarDate","combineDateAndTime","time","hideTime","calendarDate","toCalendarDateTime","draftToValue","draft","_a","_b","DateRangePicker","className","localeProp","label","ariaLabel","description","errorMessage","labels","intervalsProp","presetKeys","presetLabels","minValue","maxValue","timezoneProp","isDisabled","isRequired","defaultValue","onChange","portalContainer","useOverlayPortalContainer","ambientLocale","useLocale","locale","timezone","getLocalTimeZone","placeholder","relativeLabel","absoluteLabel","startDateLabel","endDateLabel","cancelLabel","applyLabel","intervals","useMemo","createDateRangePresets","committed","setCommitted","useState","setDraft","previewStart","setPreviewStart","isOpen","setIsOpen","clearPreset","next","withDefaultTimes","handleOpenChange","open","selectPreset","preset","start","end","handleAnchorChange","current","setRange","range","setStartField","dateTime","nextStartTime","currentEnd","pushEnd","setEndField","nextEndTime","apply","cancel","showFooter","selectedText","format","hasPresets","fieldGranularity","startFieldValue","endFieldValue","content","jsxs","Field","clsx","jsx","Label","RACDialogTrigger","RACButton","IconCalendar","IconChevronDown","RACPopover","RACDialog","TextSmallStrong","ListBox","keys","id","item","ListBoxItem","IconCheck","RACDateField","RACLabel","RACGroup","RACDateInput","segment","RACDateSegment","RACRangeCalendar","IconChevronLeft","RACHeading","IconChevronRight","RACCalendarGrid","RACCalendarCell","Button","Description","Text","RACI18nProvider"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DateRangePicker.js","sources":["../../../../../src/ui/primitives/DateRangePicker/DateRangePicker.tsx"],"sourcesContent":["import {\n Time,\n getLocalTimeZone,\n toCalendarDate,\n toCalendarDateTime,\n toTimeZone,\n type DateValue,\n type ZonedDateTime,\n} from \"@internationalized/date\";\nimport { clsx } from \"clsx\";\nimport { useOverlayPortalContainer } from \"hooks\";\nimport {\n IconCalendar,\n IconCheck,\n IconChevronDown,\n IconChevronLeft,\n IconChevronRight,\n} from \"icons\";\nimport {\n Button,\n Description,\n Field,\n Label,\n ListBox,\n ListBoxItem,\n Text,\n TextSmallStrong,\n} from \"primitives\";\nimport { useContext, useEffect, useMemo, useState } from \"react\";\nimport {\n Button as RACButton,\n CalendarCell as RACCalendarCell,\n CalendarGrid as RACCalendarGrid,\n DateField as RACDateField,\n DateInput as RACDateInput,\n DateSegment as RACDateSegment,\n Dialog as RACDialog,\n DialogTrigger as RACDialogTrigger,\n Group as RACGroup,\n Heading as RACHeading,\n I18nProvider as RACI18nProvider,\n Label as RACLabel,\n Popover as RACPopover,\n RangeCalendar as RACRangeCalendar,\n RangeCalendarStateContext,\n useLocale,\n type TimeValue,\n} from \"react-aria-components\";\nimport {\n createDateRangePresets,\n type DateRangePresetKey,\n type FirstDayOfWeek,\n} from \"./dateRangePresets\";\nimport \"./daterangepicker.css\";\n\nconst dayStartTime = () => new Time(0, 0, 0);\nconst dayEndTime = () => new Time(23, 59, 59);\n\nfunction CalendarAnchorSync({\n onAnchorChange,\n}: {\n onAnchorChange: (anchor: DateValue | null) => void;\n}) {\n const state = useContext(RangeCalendarStateContext);\n const anchor = state?.anchorDate ?? null;\n const anchorKey = anchor?.toString();\n useEffect(() => {\n onAnchorChange(anchor);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [anchorKey]);\n return null;\n}\n\nexport interface DateRangePreset {\n id: string;\n label: string;\n getValue: () => { start: DateValue; end: DateValue };\n}\n\nexport interface DateRangePickerValue {\n preset?: DateRangePreset;\n start: DateValue | null;\n end: DateValue | null;\n}\n\nexport interface DateRangePickerLabels {\n placeholder: string;\n relativeLabel: string;\n absoluteLabel: string;\n startDateLabel: string;\n endDateLabel: string;\n cancelLabel?: string | null;\n applyLabel?: string | null;\n}\n\nexport interface DateRangePickerProps {\n className?: string;\n locale?: string;\n label?: string;\n \"aria-label\"?: string;\n description?: string;\n errorMessage?: string;\n labels: DateRangePickerLabels;\n intervals?: DateRangePreset[];\n presetKeys?: DateRangePresetKey[];\n presetLabels?: Record<DateRangePresetKey, string>;\n hideTime?: boolean;\n minValue?: DateValue;\n maxValue?: DateValue;\n timezone?: string;\n firstDayOfWeek?: FirstDayOfWeek;\n isDisabled?: boolean;\n isRequired?: boolean;\n value?: DateRangePickerValue;\n defaultValue?: DateRangePickerValue;\n onChange?: (value: DateRangePickerValue) => void;\n}\n\ntype DateRange = { start: DateValue; end: DateValue };\n\ntype DraftState = {\n range: DateRange | null;\n startTime: TimeValue | null;\n endTime: TimeValue | null;\n preset?: DateRangePreset;\n};\n\nconst timeFromDateValue = (date: DateValue | null): TimeValue | null =>\n date && \"hour\" in date ? new Time(date.hour, date.minute, date.second) : null;\n\nconst inTimeZone = (date: DateValue, timezone: string): DateValue =>\n \"timeZone\" in date ? toTimeZone(date as ZonedDateTime, timezone) : date;\n\nconst toDraftState = (value: DateRangePickerValue | undefined, timezone: string): DraftState => {\n if (!value || (!value.start && !value.end)) {\n return { range: null, startTime: null, endTime: null, preset: value?.preset };\n }\n const start: DateValue | null = value.start && inTimeZone(value.start, timezone);\n const end: DateValue | null = value.end && inTimeZone(value.end, timezone);\n const range =\n start && end ? { start: toCalendarDate(start), end: toCalendarDate(end) } : null;\n return {\n range,\n startTime: timeFromDateValue(start),\n endTime: timeFromDateValue(end),\n preset: value.preset,\n };\n};\n\nconst combineDateAndTime = (\n date: DateValue | undefined,\n time: TimeValue | null,\n hideTime: boolean,\n): DateValue | null => {\n if (!date) return null;\n const calendarDate = toCalendarDate(date);\n if (hideTime || !time) return calendarDate;\n return toCalendarDateTime(calendarDate, time);\n};\n\nconst draftToValue = (\n draft: DraftState,\n hideTime: boolean,\n): DateRangePickerValue => ({\n preset: draft.preset,\n start: combineDateAndTime(draft.range?.start, draft.startTime, hideTime),\n end: combineDateAndTime(draft.range?.end, draft.endTime, hideTime),\n});\n\nexport function DateRangePicker({\n className,\n locale: localeProp,\n label,\n \"aria-label\": ariaLabel,\n description,\n errorMessage,\n labels,\n intervals: intervalsProp,\n presetKeys,\n presetLabels,\n hideTime = false,\n minValue,\n maxValue,\n timezone: timezoneProp,\n firstDayOfWeek,\n isDisabled = false,\n isRequired = false,\n value,\n defaultValue,\n onChange,\n}: DateRangePickerProps) {\n // Sem container explícito o popover faz portal no document.body — fora da\n // shadow root do MFE, sem CSS. Ver ui/hooks/useOverlayPortal.\n const portalContainer = useOverlayPortalContainer();\n const { locale: ambientLocale } = useLocale();\n const locale = localeProp ?? ambientLocale ?? \"pt-BR\";\n const timezone = timezoneProp ?? getLocalTimeZone();\n const {\n placeholder,\n relativeLabel,\n absoluteLabel,\n startDateLabel,\n endDateLabel,\n cancelLabel,\n applyLabel,\n } = labels;\n\n const intervals = useMemo(() => {\n if (intervalsProp) return intervalsProp;\n if (!presetKeys) return undefined;\n if (!presetLabels) {\n throw new Error(\n \"DateRangePicker: `presetLabels` is required when `presetKeys` is provided.\",\n );\n }\n return createDateRangePresets({\n timezone: timezoneProp,\n firstDayOfWeek,\n include: presetKeys,\n labels: presetLabels,\n });\n }, [intervalsProp, presetKeys, presetLabels, firstDayOfWeek, timezoneProp]);\n\n const [committed, setCommitted] = useState<DraftState>(() =>\n toDraftState(value ?? defaultValue, timezone),\n );\n const [draft, setDraft] = useState<DraftState>(committed);\n const [previewStart, setPreviewStart] = useState<DateValue | null>(null);\n const [isOpen, setIsOpen] = useState(false);\n\n useEffect(() => {\n if (value !== undefined) setCommitted(toDraftState(value, timezone));\n }, [value, timezone]);\n\n const clearPreset = (next: DraftState): DraftState => ({\n ...next,\n preset: undefined,\n });\n\n const withDefaultTimes = (next: DraftState): DraftState =>\n hideTime\n ? next\n : {\n ...next,\n startTime: next.startTime ?? dayStartTime(),\n endTime: next.endTime ?? dayEndTime(),\n };\n\n const handleOpenChange = (open: boolean) => {\n if (open) {\n setDraft(committed);\n setPreviewStart(null);\n }\n setIsOpen(open);\n };\n\n const selectPreset = (preset: DateRangePreset) => {\n setPreviewStart(null);\n const presetRange = preset.getValue();\n const start: DateValue = inTimeZone(presetRange.start, timezone);\n const end: DateValue = inTimeZone(presetRange.end, timezone);\n setDraft({\n range: { start: toCalendarDate(start), end: toCalendarDate(end) },\n startTime: timeFromDateValue(start),\n endTime: timeFromDateValue(end),\n preset,\n });\n };\n\n const handleAnchorChange = (anchor: DateValue | null) => {\n setPreviewStart(anchor);\n if (anchor && !hideTime) {\n setDraft((current) =>\n clearPreset({\n ...current,\n startTime: current.startTime ?? dayStartTime(),\n }),\n );\n }\n };\n\n const setRange = (range: DateRange | null) => {\n setPreviewStart(null);\n setDraft((current) => withDefaultTimes(clearPreset({ ...current, range })));\n };\n\n const setStartField = (dateTime: DateValue | null) => {\n if (!dateTime) return;\n setPreviewStart(null);\n const date = toCalendarDate(dateTime);\n const time = timeFromDateValue(dateTime);\n setDraft((current) => {\n const nextStartTime = hideTime\n ? current.startTime\n : (time ?? current.startTime ?? dayStartTime());\n const start = combineDateAndTime(date, nextStartTime, hideTime);\n const currentEnd = combineDateAndTime(\n current.range?.end,\n current.endTime,\n hideTime,\n );\n const pushEnd = Boolean(start && currentEnd && currentEnd.compare(start) < 0);\n return clearPreset({\n ...current,\n range: {\n start: date,\n end: pushEnd || !current.range?.end ? date : current.range.end,\n },\n startTime: nextStartTime,\n endTime: pushEnd ? nextStartTime : current.endTime,\n });\n });\n };\n\n const setEndField = (dateTime: DateValue | null) => {\n if (!dateTime) return;\n const date = toCalendarDate(dateTime);\n const time = timeFromDateValue(dateTime);\n setDraft((current) => {\n const nextEndTime = hideTime\n ? current.endTime\n : (time ?? current.endTime ?? dayEndTime());\n const end = combineDateAndTime(date, nextEndTime, hideTime);\n const start = combineDateAndTime(\n current.range?.start,\n current.startTime,\n hideTime,\n );\n if (start && end && end.compare(start) < 0) return current;\n return clearPreset({\n ...current,\n range: { start: current.range?.start ?? date, end: date },\n endTime: nextEndTime,\n });\n });\n };\n\n const apply = () => {\n setCommitted(draft);\n onChange?.(draftToValue(draft, hideTime));\n setIsOpen(false);\n };\n\n const cancel = () => setIsOpen(false);\n\n const showFooter = Boolean(cancelLabel || applyLabel);\n\n const triggerText = () => {\n if (committed.preset) return committed.preset.label;\n if (committed.range) {\n const format = (date: DateValue) =>\n date\n .toDate(timezone)\n .toLocaleString(locale, {\n day: \"2-digit\",\n month: \"2-digit\",\n year: \"numeric\",\n ...(hideTime\n ? {}\n : { hour: \"2-digit\", minute: \"2-digit\", second: \"2-digit\" }),\n });\n const start = combineDateAndTime(\n committed.range.start,\n committed.startTime,\n hideTime,\n );\n const end = combineDateAndTime(\n committed.range.end,\n committed.endTime,\n hideTime,\n );\n if (start && end) return `${format(start)} — ${format(end)}`;\n }\n return null;\n };\n\n const selectedText = triggerText();\n const hasPresets = Boolean(intervals && intervals.length > 0);\n const fieldGranularity = hideTime ? \"day\" : \"second\";\n const startFieldValue = combineDateAndTime(\n draft.range?.start ?? previewStart ?? undefined,\n draft.startTime,\n hideTime,\n );\n const endFieldValue = combineDateAndTime(\n draft.range?.end ?? undefined,\n draft.endTime,\n hideTime,\n );\n\n const content = (\n <Field className={clsx(className, \"date-range-picker\")}>\n {label && <Label>{label}</Label>}\n <RACDialogTrigger isOpen={isOpen} onOpenChange={handleOpenChange}>\n <RACButton\n className=\"date-range-picker-trigger\"\n isDisabled={isDisabled}\n aria-label={label ? undefined : (ariaLabel ?? placeholder)}\n aria-required={isRequired || undefined}\n data-invalid={errorMessage ? true : undefined}\n >\n {committed.preset ? (\n <span className=\"date-range-picker-preset-badge\">\n <IconCalendar aria-hidden=\"true\" />\n {committed.preset.label}\n </span>\n ) : (\n <span\n className=\"date-range-picker-value\"\n data-placeholder={selectedText ? undefined : true}\n >\n {selectedText ?? placeholder}\n </span>\n )}\n <IconChevronDown aria-hidden=\"true\" />\n </RACButton>\n <RACPopover\n className=\"date-range-picker-popover\"\n placement=\"bottom start\"\n UNSTABLE_portalContainer={portalContainer}\n >\n <RACDialog className=\"date-range-picker-dialog\">\n <div className=\"date-range-picker-body\">\n {hasPresets && (\n <div className=\"date-range-picker-presets\">\n <TextSmallStrong className=\"date-range-picker-section-title\">\n {relativeLabel}\n </TextSmallStrong>\n <ListBox\n aria-label={relativeLabel}\n className=\"date-range-picker-presets-list\"\n selectionMode=\"single\"\n selectedKeys={draft.preset ? [draft.preset.id] : []}\n items={intervals}\n onSelectionChange={(keys) => {\n const [id] = [...keys];\n const preset = intervals?.find((item) => item.id === id);\n if (preset) selectPreset(preset);\n }}\n >\n {(item) => (\n <ListBoxItem\n id={item.id}\n textValue={item.label}\n className=\"date-range-picker-preset-item\"\n >\n <span>{item.label}</span>\n <IconCheck\n aria-hidden=\"true\"\n className=\"date-range-picker-preset-check\"\n />\n </ListBoxItem>\n )}\n </ListBox>\n </div>\n )}\n\n <div className=\"date-range-picker-absolute\">\n <TextSmallStrong className=\"date-range-picker-section-title\">\n {absoluteLabel}\n </TextSmallStrong>\n\n <div className=\"date-range-picker-fields\">\n <RACDateField\n className=\"date-range-picker-datefield\"\n granularity={fieldGranularity}\n value={startFieldValue}\n minValue={minValue}\n maxValue={endFieldValue ?? maxValue}\n onChange={setStartField}\n >\n <RACLabel className=\"date-range-picker-field-label\">\n {startDateLabel}\n </RACLabel>\n <RACGroup className=\"date-range-picker-input\">\n <RACDateInput>\n {(segment) => <RACDateSegment segment={segment} />}\n </RACDateInput>\n <IconCalendar aria-hidden=\"true\" />\n </RACGroup>\n </RACDateField>\n\n <RACDateField\n className=\"date-range-picker-datefield\"\n granularity={fieldGranularity}\n value={endFieldValue}\n minValue={startFieldValue ?? minValue}\n maxValue={maxValue}\n onChange={setEndField}\n >\n <RACLabel className=\"date-range-picker-field-label\">\n {endDateLabel}\n </RACLabel>\n <RACGroup className=\"date-range-picker-input\">\n <RACDateInput>\n {(segment) => <RACDateSegment segment={segment} />}\n </RACDateInput>\n <IconCalendar aria-hidden=\"true\" />\n </RACGroup>\n </RACDateField>\n </div>\n\n <RACRangeCalendar\n className=\"date-range-picker-calendar\"\n aria-label={absoluteLabel}\n value={draft.range}\n minValue={minValue}\n maxValue={maxValue}\n onChange={setRange}\n >\n <CalendarAnchorSync onAnchorChange={handleAnchorChange} />\n <header className=\"date-range-picker-calendar-header\">\n <RACButton\n slot=\"previous\"\n className=\"date-range-picker-calendar-nav\"\n >\n <IconChevronLeft aria-hidden=\"true\" />\n </RACButton>\n <RACHeading className=\"date-range-picker-calendar-heading\" />\n <RACButton\n slot=\"next\"\n className=\"date-range-picker-calendar-nav\"\n >\n <IconChevronRight aria-hidden=\"true\" />\n </RACButton>\n </header>\n <RACCalendarGrid className=\"date-range-picker-calendar-grid\">\n {(date) => (\n <RACCalendarCell\n date={date}\n className=\"date-range-picker-calendar-cell\"\n />\n )}\n </RACCalendarGrid>\n </RACRangeCalendar>\n </div>\n </div>\n\n {showFooter && (\n <div className=\"date-range-picker-actions\">\n {cancelLabel && (\n <Button variant=\"neutral\" size=\"small\" onPress={cancel}>\n {cancelLabel}\n </Button>\n )}\n {applyLabel && (\n <Button variant=\"primary\" size=\"small\" onPress={apply}>\n {applyLabel}\n </Button>\n )}\n </div>\n )}\n </RACDialog>\n </RACPopover>\n </RACDialogTrigger>\n {description && <Description>{description}</Description>}\n {errorMessage && (\n <Text className=\"date-range-picker-error\" elementType=\"span\">\n {errorMessage}\n </Text>\n )}\n </Field>\n );\n\n return localeProp ? (\n <RACI18nProvider locale={localeProp}>{content}</RACI18nProvider>\n ) : (\n content\n );\n}\n"],"names":["dayStartTime","Time","dayEndTime","CalendarAnchorSync","onAnchorChange","state","useContext","RangeCalendarStateContext","anchor","anchorKey","useEffect","timeFromDateValue","date","inTimeZone","timezone","toTimeZone","toDraftState","value","start","end","toCalendarDate","combineDateAndTime","time","hideTime","calendarDate","toCalendarDateTime","draftToValue","draft","_a","_b","DateRangePicker","className","localeProp","label","ariaLabel","description","errorMessage","labels","intervalsProp","presetKeys","presetLabels","minValue","maxValue","timezoneProp","firstDayOfWeek","isDisabled","isRequired","defaultValue","onChange","portalContainer","useOverlayPortalContainer","ambientLocale","useLocale","locale","getLocalTimeZone","placeholder","relativeLabel","absoluteLabel","startDateLabel","endDateLabel","cancelLabel","applyLabel","intervals","useMemo","createDateRangePresets","committed","setCommitted","useState","setDraft","previewStart","setPreviewStart","isOpen","setIsOpen","clearPreset","next","withDefaultTimes","handleOpenChange","open","selectPreset","preset","presetRange","handleAnchorChange","current","setRange","range","setStartField","dateTime","nextStartTime","currentEnd","pushEnd","setEndField","nextEndTime","apply","cancel","showFooter","selectedText","format","hasPresets","fieldGranularity","startFieldValue","endFieldValue","content","jsxs","Field","clsx","jsx","Label","RACDialogTrigger","RACButton","IconCalendar","IconChevronDown","RACPopover","RACDialog","TextSmallStrong","ListBox","keys","id","item","ListBoxItem","IconCheck","RACDateField","RACLabel","RACGroup","RACDateInput","segment","RACDateSegment","RACRangeCalendar","IconChevronLeft","RACHeading","IconChevronRight","RACCalendarGrid","RACCalendarCell","Button","Description","Text","RACI18nProvider"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("@internationalized/date"),c=["last5m","last15m","last30m","last1h","last3h","last6h","last12h","last24h","today","yesterday","last7d","last30d","thisWeek","lastWeek","thisMonth","lastMonth","thisYear","lastYear"],l="America/Sao_Paulo",u="mon",E="en-US",e=t=>t.set({hour:0,minute:0,second:0,millisecond:0}),n=t=>t.set({hour:23,minute:59,second:59,millisecond:999}),o=(t,s)=>a.startOfWeek(t,E,s),h=(t,s)=>a.endOfWeek(t,E,s),_={last5m:t=>({start:t.subtract({minutes:5}),end:t}),last15m:t=>({start:t.subtract({minutes:15}),end:t}),last30m:t=>({start:t.subtract({minutes:30}),end:t}),last1h:t=>({start:t.subtract({hours:1}),end:t}),last3h:t=>({start:t.subtract({hours:3}),end:t}),last6h:t=>({start:t.subtract({hours:6}),end:t}),last12h:t=>({start:t.subtract({hours:12}),end:t}),last24h:t=>({start:t.subtract({hours:24}),end:t}),today:t=>({start:e(t),end:t}),yesterday:t=>{const s=t.subtract({days:1});return{start:e(s),end:n(s)}},last7d:t=>({start:e(t.subtract({days:6})),end:t}),last30d:t=>({start:e(t.subtract({days:29})),end:t}),thisWeek:(t,s)=>({start:e(o(t,s)),end:t}),lastWeek:(t,s)=>{const r=o(t,s).subtract({weeks:1});return{start:e(r),end:n(h(r,s))}},thisMonth:t=>({start:e(a.startOfMonth(t)),end:t}),lastMonth:t=>{const s=a.startOfMonth(t).subtract({months:1});return{start:e(s),end:n(a.endOfMonth(s))}},thisYear:t=>({start:e(a.startOfYear(t)),end:t}),lastYear:t=>{const s=a.startOfYear(t).subtract({years:1});return{start:e(s),end:n(a.endOfYear(s))}}};function O(t){const s=t.timezone??l,r=t.firstDayOfWeek??u;return(t.include??c).map(d=>({id:d,label:t.labels[d],getValue:()=>_[d](a.now(s),r)}))}exports.DATE_RANGE_PRESET_ORDER=c;exports.DEFAULT_DATE_RANGE_PRESET_TIMEZONE=l;exports.DEFAULT_FIRST_DAY_OF_WEEK=u;exports.createDateRangePresets=O;
|
|
2
2
|
//# sourceMappingURL=dateRangePresets.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dateRangePresets.cjs","sources":["../../../../../src/ui/primitives/DateRangePicker/dateRangePresets.ts"],"sourcesContent":["import {\n endOfMonth,\n endOfWeek,\n endOfYear,\n
|
|
1
|
+
{"version":3,"file":"dateRangePresets.cjs","sources":["../../../../../src/ui/primitives/DateRangePicker/dateRangePresets.ts"],"sourcesContent":["import {\n endOfMonth,\n endOfWeek,\n endOfYear,\n now,\n startOfMonth,\n startOfWeek,\n startOfYear,\n type ZonedDateTime,\n} from \"@internationalized/date\";\nimport type { DateRangePreset } from \"./DateRangePicker\";\n\nexport type DateRangePresetKey =\n | \"last5m\"\n | \"last15m\"\n | \"last30m\"\n | \"last1h\"\n | \"last3h\"\n | \"last6h\"\n | \"last12h\"\n | \"last24h\"\n | \"today\"\n | \"yesterday\"\n | \"last7d\"\n | \"last30d\"\n | \"thisWeek\"\n | \"lastWeek\"\n | \"thisMonth\"\n | \"lastMonth\"\n | \"thisYear\"\n | \"lastYear\";\n\nexport const DATE_RANGE_PRESET_ORDER: DateRangePresetKey[] = [\n \"last5m\",\n \"last15m\",\n \"last30m\",\n \"last1h\",\n \"last3h\",\n \"last6h\",\n \"last12h\",\n \"last24h\",\n \"today\",\n \"yesterday\",\n \"last7d\",\n \"last30d\",\n \"thisWeek\",\n \"lastWeek\",\n \"thisMonth\",\n \"lastMonth\",\n \"thisYear\",\n \"lastYear\",\n];\n\nexport type FirstDayOfWeek = \"sun\" | \"mon\" | \"tue\" | \"wed\" | \"thu\" | \"fri\" | \"sat\";\n\nexport const DEFAULT_DATE_RANGE_PRESET_TIMEZONE: string = \"America/Sao_Paulo\";\nexport const DEFAULT_FIRST_DAY_OF_WEEK: FirstDayOfWeek = \"mon\";\n\nexport interface CreateDateRangePresetsOptions {\n labels: Record<DateRangePresetKey, string>;\n timezone?: string;\n /** @deprecated Sem efeito desde a CONSOLE-1892: o início da semana vem de `firstDayOfWeek`. */\n locale?: string;\n firstDayOfWeek?: FirstDayOfWeek;\n include?: DateRangePresetKey[];\n}\n\nconst WEEK_CALCULATION_LOCALE: string = \"en-US\";\n\nconst startOfDay = (date: ZonedDateTime) =>\n date.set({ hour: 0, minute: 0, second: 0, millisecond: 0 });\nconst endOfDay = (date: ZonedDateTime) =>\n date.set({ hour: 23, minute: 59, second: 59, millisecond: 999 });\n\nconst startOfWeekOn = (date: ZonedDateTime, firstDayOfWeek: FirstDayOfWeek) =>\n startOfWeek(date, WEEK_CALCULATION_LOCALE, firstDayOfWeek);\nconst endOfWeekOn = (date: ZonedDateTime, firstDayOfWeek: FirstDayOfWeek) =>\n endOfWeek(date, WEEK_CALCULATION_LOCALE, firstDayOfWeek);\n\ntype RangeBuilder = (\n reference: ZonedDateTime,\n firstDayOfWeek: FirstDayOfWeek,\n) => { start: ZonedDateTime; end: ZonedDateTime };\n\nconst BUILDERS: Record<DateRangePresetKey, RangeBuilder> = {\n last5m: (n) => ({ start: n.subtract({ minutes: 5 }), end: n }),\n last15m: (n) => ({ start: n.subtract({ minutes: 15 }), end: n }),\n last30m: (n) => ({ start: n.subtract({ minutes: 30 }), end: n }),\n last1h: (n) => ({ start: n.subtract({ hours: 1 }), end: n }),\n last3h: (n) => ({ start: n.subtract({ hours: 3 }), end: n }),\n last6h: (n) => ({ start: n.subtract({ hours: 6 }), end: n }),\n last12h: (n) => ({ start: n.subtract({ hours: 12 }), end: n }),\n last24h: (n) => ({ start: n.subtract({ hours: 24 }), end: n }),\n today: (n) => ({ start: startOfDay(n), end: n }),\n yesterday: (n) => {\n const day = n.subtract({ days: 1 });\n return { start: startOfDay(day), end: endOfDay(day) };\n },\n last7d: (n) => ({ start: startOfDay(n.subtract({ days: 6 })), end: n }),\n last30d: (n) => ({ start: startOfDay(n.subtract({ days: 29 })), end: n }),\n thisWeek: (n, firstDayOfWeek) => ({\n start: startOfDay(startOfWeekOn(n, firstDayOfWeek)),\n end: n,\n }),\n lastWeek: (n, firstDayOfWeek) => {\n const week = startOfWeekOn(n, firstDayOfWeek).subtract({ weeks: 1 });\n return {\n start: startOfDay(week),\n end: endOfDay(endOfWeekOn(week, firstDayOfWeek)),\n };\n },\n thisMonth: (n) => ({ start: startOfDay(startOfMonth(n)), end: n }),\n lastMonth: (n) => {\n const month = startOfMonth(n).subtract({ months: 1 });\n return { start: startOfDay(month), end: endOfDay(endOfMonth(month)) };\n },\n thisYear: (n) => ({ start: startOfDay(startOfYear(n)), end: n }),\n lastYear: (n) => {\n const year = startOfYear(n).subtract({ years: 1 });\n return { start: startOfDay(year), end: endOfDay(endOfYear(year)) };\n },\n};\n\nexport function createDateRangePresets(\n options: CreateDateRangePresetsOptions,\n): DateRangePreset[] {\n const timezone = options.timezone ?? DEFAULT_DATE_RANGE_PRESET_TIMEZONE;\n const firstDayOfWeek = options.firstDayOfWeek ?? DEFAULT_FIRST_DAY_OF_WEEK;\n const keys = options.include ?? DATE_RANGE_PRESET_ORDER;\n return keys.map((key) => ({\n id: key,\n label: options.labels[key],\n getValue: () => BUILDERS[key](now(timezone), firstDayOfWeek),\n }));\n}\n"],"names":["DATE_RANGE_PRESET_ORDER","DEFAULT_DATE_RANGE_PRESET_TIMEZONE","DEFAULT_FIRST_DAY_OF_WEEK","WEEK_CALCULATION_LOCALE","startOfDay","date","endOfDay","startOfWeekOn","firstDayOfWeek","startOfWeek","endOfWeekOn","endOfWeek","BUILDERS","n","day","week","startOfMonth","month","endOfMonth","startOfYear","year","endOfYear","createDateRangePresets","options","timezone","key","now"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
const
|
|
1
|
+
import { now as u, startOfYear as d, endOfYear as h, startOfMonth as o, endOfMonth as m, startOfWeek as i, endOfWeek as E } from "@internationalized/date";
|
|
2
|
+
const O = [
|
|
3
3
|
"last5m",
|
|
4
4
|
"last15m",
|
|
5
5
|
"last30m",
|
|
@@ -18,7 +18,7 @@ const b = [
|
|
|
18
18
|
"lastMonth",
|
|
19
19
|
"thisYear",
|
|
20
20
|
"lastYear"
|
|
21
|
-
], a = (t) => t.set({ hour: 0, minute: 0, second: 0, millisecond: 0 }),
|
|
21
|
+
], b = "America/Sao_Paulo", y = "mon", l = "en-US", a = (t) => t.set({ hour: 0, minute: 0, second: 0, millisecond: 0 }), r = (t) => t.set({ hour: 23, minute: 59, second: 59, millisecond: 999 }), c = (t, s) => i(t, l, s), f = (t, s) => E(t, l, s), _ = {
|
|
22
22
|
last5m: (t) => ({ start: t.subtract({ minutes: 5 }), end: t }),
|
|
23
23
|
last15m: (t) => ({ start: t.subtract({ minutes: 15 }), end: t }),
|
|
24
24
|
last30m: (t) => ({ start: t.subtract({ minutes: 30 }), end: t }),
|
|
@@ -30,39 +30,44 @@ const b = [
|
|
|
30
30
|
today: (t) => ({ start: a(t), end: t }),
|
|
31
31
|
yesterday: (t) => {
|
|
32
32
|
const s = t.subtract({ days: 1 });
|
|
33
|
-
return { start: a(s), end:
|
|
33
|
+
return { start: a(s), end: r(s) };
|
|
34
34
|
},
|
|
35
|
-
last7d: (t) => ({ start: a(t.subtract({ days: 6 })), end:
|
|
36
|
-
last30d: (t) => ({
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
last7d: (t) => ({ start: a(t.subtract({ days: 6 })), end: t }),
|
|
36
|
+
last30d: (t) => ({ start: a(t.subtract({ days: 29 })), end: t }),
|
|
37
|
+
thisWeek: (t, s) => ({
|
|
38
|
+
start: a(c(t, s)),
|
|
39
|
+
end: t
|
|
39
40
|
}),
|
|
40
|
-
thisWeek: (t, s) => ({ start: a(o(t, s)), end: t }),
|
|
41
41
|
lastWeek: (t, s) => {
|
|
42
|
-
const
|
|
43
|
-
return {
|
|
42
|
+
const e = c(t, s).subtract({ weeks: 1 });
|
|
43
|
+
return {
|
|
44
|
+
start: a(e),
|
|
45
|
+
end: r(f(e, s))
|
|
46
|
+
};
|
|
44
47
|
},
|
|
45
|
-
thisMonth: (t) => ({ start: a(
|
|
48
|
+
thisMonth: (t) => ({ start: a(o(t)), end: t }),
|
|
46
49
|
lastMonth: (t) => {
|
|
47
|
-
const s =
|
|
48
|
-
return { start: a(s), end:
|
|
50
|
+
const s = o(t).subtract({ months: 1 });
|
|
51
|
+
return { start: a(s), end: r(m(s)) };
|
|
49
52
|
},
|
|
50
53
|
thisYear: (t) => ({ start: a(d(t)), end: t }),
|
|
51
54
|
lastYear: (t) => {
|
|
52
55
|
const s = d(t).subtract({ years: 1 });
|
|
53
|
-
return { start: a(s), end:
|
|
56
|
+
return { start: a(s), end: r(h(s)) };
|
|
54
57
|
}
|
|
55
58
|
};
|
|
56
|
-
function
|
|
57
|
-
const s = t.timezone ??
|
|
58
|
-
return (t.include ??
|
|
59
|
+
function D(t) {
|
|
60
|
+
const s = t.timezone ?? b, e = t.firstDayOfWeek ?? y;
|
|
61
|
+
return (t.include ?? O).map((n) => ({
|
|
59
62
|
id: n,
|
|
60
63
|
label: t.labels[n],
|
|
61
|
-
getValue: () =>
|
|
64
|
+
getValue: () => _[n](u(s), e)
|
|
62
65
|
}));
|
|
63
66
|
}
|
|
64
67
|
export {
|
|
65
|
-
|
|
66
|
-
|
|
68
|
+
O as DATE_RANGE_PRESET_ORDER,
|
|
69
|
+
b as DEFAULT_DATE_RANGE_PRESET_TIMEZONE,
|
|
70
|
+
y as DEFAULT_FIRST_DAY_OF_WEEK,
|
|
71
|
+
D as createDateRangePresets
|
|
67
72
|
};
|
|
68
73
|
//# sourceMappingURL=dateRangePresets.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dateRangePresets.js","sources":["../../../../../src/ui/primitives/DateRangePicker/dateRangePresets.ts"],"sourcesContent":["import {\n endOfMonth,\n endOfWeek,\n endOfYear,\n
|
|
1
|
+
{"version":3,"file":"dateRangePresets.js","sources":["../../../../../src/ui/primitives/DateRangePicker/dateRangePresets.ts"],"sourcesContent":["import {\n endOfMonth,\n endOfWeek,\n endOfYear,\n now,\n startOfMonth,\n startOfWeek,\n startOfYear,\n type ZonedDateTime,\n} from \"@internationalized/date\";\nimport type { DateRangePreset } from \"./DateRangePicker\";\n\nexport type DateRangePresetKey =\n | \"last5m\"\n | \"last15m\"\n | \"last30m\"\n | \"last1h\"\n | \"last3h\"\n | \"last6h\"\n | \"last12h\"\n | \"last24h\"\n | \"today\"\n | \"yesterday\"\n | \"last7d\"\n | \"last30d\"\n | \"thisWeek\"\n | \"lastWeek\"\n | \"thisMonth\"\n | \"lastMonth\"\n | \"thisYear\"\n | \"lastYear\";\n\nexport const DATE_RANGE_PRESET_ORDER: DateRangePresetKey[] = [\n \"last5m\",\n \"last15m\",\n \"last30m\",\n \"last1h\",\n \"last3h\",\n \"last6h\",\n \"last12h\",\n \"last24h\",\n \"today\",\n \"yesterday\",\n \"last7d\",\n \"last30d\",\n \"thisWeek\",\n \"lastWeek\",\n \"thisMonth\",\n \"lastMonth\",\n \"thisYear\",\n \"lastYear\",\n];\n\nexport type FirstDayOfWeek = \"sun\" | \"mon\" | \"tue\" | \"wed\" | \"thu\" | \"fri\" | \"sat\";\n\nexport const DEFAULT_DATE_RANGE_PRESET_TIMEZONE: string = \"America/Sao_Paulo\";\nexport const DEFAULT_FIRST_DAY_OF_WEEK: FirstDayOfWeek = \"mon\";\n\nexport interface CreateDateRangePresetsOptions {\n labels: Record<DateRangePresetKey, string>;\n timezone?: string;\n /** @deprecated Sem efeito desde a CONSOLE-1892: o início da semana vem de `firstDayOfWeek`. */\n locale?: string;\n firstDayOfWeek?: FirstDayOfWeek;\n include?: DateRangePresetKey[];\n}\n\nconst WEEK_CALCULATION_LOCALE: string = \"en-US\";\n\nconst startOfDay = (date: ZonedDateTime) =>\n date.set({ hour: 0, minute: 0, second: 0, millisecond: 0 });\nconst endOfDay = (date: ZonedDateTime) =>\n date.set({ hour: 23, minute: 59, second: 59, millisecond: 999 });\n\nconst startOfWeekOn = (date: ZonedDateTime, firstDayOfWeek: FirstDayOfWeek) =>\n startOfWeek(date, WEEK_CALCULATION_LOCALE, firstDayOfWeek);\nconst endOfWeekOn = (date: ZonedDateTime, firstDayOfWeek: FirstDayOfWeek) =>\n endOfWeek(date, WEEK_CALCULATION_LOCALE, firstDayOfWeek);\n\ntype RangeBuilder = (\n reference: ZonedDateTime,\n firstDayOfWeek: FirstDayOfWeek,\n) => { start: ZonedDateTime; end: ZonedDateTime };\n\nconst BUILDERS: Record<DateRangePresetKey, RangeBuilder> = {\n last5m: (n) => ({ start: n.subtract({ minutes: 5 }), end: n }),\n last15m: (n) => ({ start: n.subtract({ minutes: 15 }), end: n }),\n last30m: (n) => ({ start: n.subtract({ minutes: 30 }), end: n }),\n last1h: (n) => ({ start: n.subtract({ hours: 1 }), end: n }),\n last3h: (n) => ({ start: n.subtract({ hours: 3 }), end: n }),\n last6h: (n) => ({ start: n.subtract({ hours: 6 }), end: n }),\n last12h: (n) => ({ start: n.subtract({ hours: 12 }), end: n }),\n last24h: (n) => ({ start: n.subtract({ hours: 24 }), end: n }),\n today: (n) => ({ start: startOfDay(n), end: n }),\n yesterday: (n) => {\n const day = n.subtract({ days: 1 });\n return { start: startOfDay(day), end: endOfDay(day) };\n },\n last7d: (n) => ({ start: startOfDay(n.subtract({ days: 6 })), end: n }),\n last30d: (n) => ({ start: startOfDay(n.subtract({ days: 29 })), end: n }),\n thisWeek: (n, firstDayOfWeek) => ({\n start: startOfDay(startOfWeekOn(n, firstDayOfWeek)),\n end: n,\n }),\n lastWeek: (n, firstDayOfWeek) => {\n const week = startOfWeekOn(n, firstDayOfWeek).subtract({ weeks: 1 });\n return {\n start: startOfDay(week),\n end: endOfDay(endOfWeekOn(week, firstDayOfWeek)),\n };\n },\n thisMonth: (n) => ({ start: startOfDay(startOfMonth(n)), end: n }),\n lastMonth: (n) => {\n const month = startOfMonth(n).subtract({ months: 1 });\n return { start: startOfDay(month), end: endOfDay(endOfMonth(month)) };\n },\n thisYear: (n) => ({ start: startOfDay(startOfYear(n)), end: n }),\n lastYear: (n) => {\n const year = startOfYear(n).subtract({ years: 1 });\n return { start: startOfDay(year), end: endOfDay(endOfYear(year)) };\n },\n};\n\nexport function createDateRangePresets(\n options: CreateDateRangePresetsOptions,\n): DateRangePreset[] {\n const timezone = options.timezone ?? DEFAULT_DATE_RANGE_PRESET_TIMEZONE;\n const firstDayOfWeek = options.firstDayOfWeek ?? DEFAULT_FIRST_DAY_OF_WEEK;\n const keys = options.include ?? DATE_RANGE_PRESET_ORDER;\n return keys.map((key) => ({\n id: key,\n label: options.labels[key],\n getValue: () => BUILDERS[key](now(timezone), firstDayOfWeek),\n }));\n}\n"],"names":["DATE_RANGE_PRESET_ORDER","DEFAULT_DATE_RANGE_PRESET_TIMEZONE","DEFAULT_FIRST_DAY_OF_WEEK","WEEK_CALCULATION_LOCALE","startOfDay","date","endOfDay","startOfWeekOn","firstDayOfWeek","startOfWeek","endOfWeekOn","endOfWeek","BUILDERS","n","day","week","startOfMonth","month","endOfMonth","startOfYear","year","endOfYear","createDateRangePresets","options","timezone","key","now"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),R=require("../../../vendor/clsx/dist/clsx.cjs"),i=require("react"),m=require("react-aria-components");;/* empty css */const B=require("../../icons/IconChevronDown.cjs"),E=require("../../hooks/useOverlayPortal.cjs"),j=require("../Fieldset/Fieldset.cjs"),C=require("../ListBox/ListBox.cjs"),D=require("../Input/Input.cjs");function q(n){const{id:e}=n.props;return e??n.key??""}function F(n){const{textValue:e,children:t}=n.props;return e!==void 0?e:typeof t=="string"?t:""}function I(n,e){i.Children.forEach(n,t=>{i.isValidElement(t)&&e(t)})}function L(n){const e=new Set;return I(n,t=>e.add(q(t))),e}function M(n,e,t){return i.Children.toArray(n).filter(s=>i.isValidElement(s)&&t(F(s),e))}function O(n,e,t){const s=new Set(e.map(String)),o=l=>s.has(String(l)),c=[...n].filter(l=>!o(l)),a=t==="all"?e:[...t].filter(o);return new Set([...c,...a])}function k(n,e){const t=new Set([...e].map(String)),s=[];return I(n,o=>{t.has(String(q(o)))&&s.push(F(o))}),s.join(", ")}function A({children:n,selectedKeys:e,onSelectionChange:t,disallowEmptySelection:s,listLabel:o,searchPlaceholder:c,emptyStateText:a}){const{contains:l}=m.useFilter({sensitivity:"base"}),[v,y]=i.useState(""),f=i.useRef(null),u=M(n,v,l),p=u.map(q);function b(h){var d,g;h.key!=="ArrowDown"||u.length===0||(h.preventDefault(),(g=(d=f.current)==null?void 0:d.querySelector('[role="listbox"]'))==null||g.focus())}return r.jsxs("div",{ref:f,className:"select-search-panel",children:[r.jsx(m.TextField,{"aria-label":c,value:v,onChange:y,autoFocus:!0,children:r.jsx(D.Input,{className:"select-search-input",placeholder:c,onKeyDown:b})}),r.jsx(C.ListBox,{"aria-label":o,selectionMode:"multiple",escapeKeyBehavior:"none",disallowEmptySelection:s,selectedKeys:e,onSelectionChange:h=>t(O(e,p,h)),renderEmptyState:()=>r.jsx("span",{className:"select-empty-state",children:a}),children:u})]})}function V({className:n,label:e,description:t,errorMessage:s,placeholder:o,children:c,selectedKeys:a,onSelectionChange:l,isDisabled:v,isInvalid:y,disallowEmptySelection:f,"aria-label":u,...p}){const b=R.clsx(n,"select-container"),h=E.useOverlayPortalContainer(),d=i.useRef(null),[g,N]=i.useState(),T=i.useCallback(()=>{d.current&&N(`${d.current.offsetWidth}px`)},[]);i.useLayoutEffect(()=>{T();const x=d.current;if(!x||typeof ResizeObserver>"u")return;const w=new ResizeObserver(T);return w.observe(x),()=>w.disconnect()},[T]);const S=k(c,a);return r.jsx("div",{className:b,children:r.jsxs(j.Field,{children:[e&&r.jsx(j.Label,{children:e}),r.jsxs(m.MenuTrigger,{children:[r.jsxs(m.Button,{ref:d,className:"select","aria-label":u,isDisabled:v,"data-invalid":y||void 0,children:[r.jsx("span",{className:"select-value","data-placeholder":S===""||void 0,title:S||void 0,children:S===""?o:S}),r.jsx(B.IconChevronDown,{"aria-hidden":"true"})]}),r.jsx(m.Popover,{className:"select-popover",style:{"--trigger-width":g},UNSTABLE_portalContainer:h,children:p.isSearchable?r.jsx(A,{listLabel:e??u,selectedKeys:a,onSelectionChange:l,disallowEmptySelection:f,searchPlaceholder:p.searchPlaceholder,emptyStateText:p.emptyStateText,children:c}):r.jsx(C.ListBox,{"aria-label":e??u,autoFocus:!0,selectionMode:"multiple",escapeKeyBehavior:"none",disallowEmptySelection:f,selectedKeys:a,onSelectionChange:x=>l(x==="all"?L(c):new Set(x)),children:c})})]}),t&&r.jsx(j.Description,{children:t}),r.jsx(j.FieldError,{children:s})]})})}exports.MultiSelectField=V;
|
|
2
2
|
//# sourceMappingURL=MultiSelect.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiSelect.cjs","sources":["../../../../../src/ui/primitives/Select/MultiSelect.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { useOverlayPortalContainer } from \"hooks\";\nimport { IconChevronDown } from \"icons\";\nimport {\n Description,\n Field,\n FieldError,\n Label,\n ListBox,\n SharedFieldProps,\n} from \"primitives\";\nimport React, { useCallback, useLayoutEffect, useRef, useState } from \"react\";\nimport {\n Button as RACButton,\n MenuTrigger as RACMenuTrigger,\n Popover as RACPopover,\n type Key as RACKey,\n type Selection as RACSelection,\n} from \"react-aria-components\";\nimport \"./select.css\";\n\nfunction itemKey(item: React.ReactElement): string {\n const { id } = item.props as { id?: RACKey };\n return String(id ?? item.key ?? \"\");\n}\n\nfunction itemText(item: React.ReactElement): string {\n const { textValue, children } = item.props as {\n textValue?: string;\n children?: React.ReactNode;\n };\n if (textValue !== undefined) return textValue;\n return typeof children === \"string\" ? children : \"\";\n}\n\nfunction forEachItem(\n children: React.ReactNode,\n visit: (item: React.ReactElement) => void,\n) {\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child)) visit(child);\n });\n}\n\nfunction allItemKeys(children: React.ReactNode): Set<RACKey> {\n const keys = new Set<RACKey>();\n forEachItem(children, (item) => keys.add(itemKey(item)));\n return keys;\n}\n\nfunction selectedItemsText(\n children: React.ReactNode,\n selectedKeys: Iterable<RACKey>,\n): string {\n const selected = new Set([...selectedKeys].map(String));\n const texts: string[] = [];\n forEachItem(children, (item) => {\n if (selected.has(itemKey(item))) texts.push(itemText(item));\n });\n return texts.join(\", \");\n}\n\nexport interface MultiSelectFieldProps extends SharedFieldProps {\n children: React.ReactNode;\n selectedKeys: Iterable<RACKey>;\n onSelectionChange: (keys: Set<RACKey>) => void;\n className?: string;\n isDisabled?: boolean;\n isInvalid?: boolean;\n disallowEmptySelection?: boolean;\n \"aria-label\"?: string;\n}\n\nexport function MultiSelectField({\n className,\n label,\n description,\n errorMessage,\n placeholder,\n children,\n selectedKeys,\n onSelectionChange,\n isDisabled,\n isInvalid,\n disallowEmptySelection,\n \"aria-label\": ariaLabel,\n}: MultiSelectFieldProps) {\n const classNames = clsx(className, \"select-container\");\n const portalContainer = useOverlayPortalContainer();\n const triggerRef = useRef<HTMLButtonElement>(null);\n const [triggerWidth, setTriggerWidth] = useState<string>();\n\n const measureTrigger = useCallback(() => {\n if (triggerRef.current) {\n setTriggerWidth(`${triggerRef.current.offsetWidth}px`);\n }\n }, []);\n\n useLayoutEffect(() => {\n measureTrigger();\n const trigger = triggerRef.current;\n if (!trigger || typeof ResizeObserver === \"undefined\") return;\n const observer = new ResizeObserver(measureTrigger);\n observer.observe(trigger);\n return () => observer.disconnect();\n }, [measureTrigger]);\n\n const chosenText = selectedItemsText(children, selectedKeys);\n\n return (\n <div className={classNames}>\n <Field>\n {label && <Label>{label}</Label>}\n <RACMenuTrigger>\n <RACButton\n ref={triggerRef}\n className=\"select\"\n aria-label={ariaLabel}\n isDisabled={isDisabled}\n data-invalid={isInvalid || undefined}\n >\n <span\n className=\"select-value\"\n data-placeholder={chosenText === \"\" || undefined}\n title={chosenText || undefined}\n >\n {chosenText === \"\" ? placeholder : chosenText}\n </span>\n <IconChevronDown aria-hidden=\"true\" />\n </RACButton>\n <RACPopover\n className=\"select-popover\"\n style={{ \"--trigger-width\": triggerWidth } as React.CSSProperties}\n UNSTABLE_portalContainer={portalContainer}\n >\n <ListBox\n aria-label={label ?? ariaLabel}\n autoFocus\n selectionMode=\"multiple\"\n disallowEmptySelection={disallowEmptySelection}\n selectedKeys={selectedKeys}\n onSelectionChange={(keys: RACSelection) =>\n onSelectionChange(\n keys === \"all\" ? allItemKeys(children) : new Set(keys),\n )\n }\n >\n {children}\n </ListBox>\n </RACPopover>\n </RACMenuTrigger>\n {description && <Description>{description}</Description>}\n <FieldError>{errorMessage}</FieldError>\n </Field>\n </div>\n );\n}\n"],"names":["itemKey","item","id","itemText","textValue","children","forEachItem","visit","React","child","allItemKeys","keys","selectedItemsText","selectedKeys","selected","texts","MultiSelectField","className","label","description","errorMessage","placeholder","onSelectionChange","isDisabled","isInvalid","disallowEmptySelection","ariaLabel","classNames","clsx","portalContainer","useOverlayPortalContainer","triggerRef","useRef","triggerWidth","setTriggerWidth","useState","measureTrigger","useCallback","useLayoutEffect","trigger","observer","chosenText","jsx","Field","Label","RACMenuTrigger","jsxs","RACButton","IconChevronDown","RACPopover","ListBox","Description","FieldError"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MultiSelect.cjs","sources":["../../../../../src/ui/primitives/Select/MultiSelect.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { useOverlayPortalContainer } from \"hooks\";\nimport { IconChevronDown } from \"icons\";\nimport {\n Description,\n Field,\n FieldError,\n Input,\n Label,\n ListBox,\n SharedFieldProps,\n} from \"primitives\";\nimport React, { useCallback, useLayoutEffect, useRef, useState } from \"react\";\nimport {\n Button as RACButton,\n MenuTrigger as RACMenuTrigger,\n Popover as RACPopover,\n TextField as RACTextField,\n useFilter,\n type Key as RACKey,\n type Selection as RACSelection,\n} from \"react-aria-components\";\nimport \"./select.css\";\n\nfunction itemKey(item: React.ReactElement): RACKey {\n const { id } = item.props as { id?: RACKey };\n return id ?? item.key ?? \"\";\n}\n\nfunction itemText(item: React.ReactElement): string {\n const { textValue, children } = item.props as {\n textValue?: string;\n children?: React.ReactNode;\n };\n if (textValue !== undefined) return textValue;\n return typeof children === \"string\" ? children : \"\";\n}\n\nfunction forEachItem(\n children: React.ReactNode,\n visit: (item: React.ReactElement) => void,\n) {\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child)) visit(child);\n });\n}\n\nfunction allItemKeys(children: React.ReactNode): Set<RACKey> {\n const keys = new Set<RACKey>();\n forEachItem(children, (item) => keys.add(itemKey(item)));\n return keys;\n}\n\ntype TextMatcher = (text: string, searchText: string) => boolean;\n\nfunction matchingItems(\n children: React.ReactNode,\n searchText: string,\n matches: TextMatcher,\n): React.ReactElement[] {\n return React.Children.toArray(children).filter(\n (child): child is React.ReactElement =>\n React.isValidElement(child) && matches(itemText(child), searchText),\n );\n}\n\nfunction keepHiddenSelection(\n previousKeys: Iterable<RACKey>,\n visibleKeys: RACKey[],\n visibleSelection: RACSelection,\n): Set<RACKey> {\n const visible = new Set(visibleKeys.map(String));\n const isVisible = (key: RACKey) => visible.has(String(key));\n const hiddenSelected = [...previousKeys].filter((key) => !isVisible(key));\n const visibleSelected =\n visibleSelection === \"all\"\n ? visibleKeys\n : [...visibleSelection].filter(isVisible);\n return new Set([...hiddenSelected, ...visibleSelected]);\n}\n\nfunction selectedItemsText(\n children: React.ReactNode,\n selectedKeys: Iterable<RACKey>,\n): string {\n const selected = new Set([...selectedKeys].map(String));\n const texts: string[] = [];\n forEachItem(children, (item) => {\n if (selected.has(String(itemKey(item)))) texts.push(itemText(item));\n });\n return texts.join(\", \");\n}\n\ninterface MultiSelectOptionsProps {\n children: React.ReactNode;\n selectedKeys: Iterable<RACKey>;\n onSelectionChange: (keys: Set<RACKey>) => void;\n disallowEmptySelection?: boolean;\n}\n\ninterface MultiSelectFieldBaseProps\n extends SharedFieldProps,\n MultiSelectOptionsProps {\n className?: string;\n isDisabled?: boolean;\n isInvalid?: boolean;\n \"aria-label\"?: string;\n}\n\nexport interface MultiSelectSearchProps {\n isSearchable: true;\n searchPlaceholder: string;\n emptyStateText: string;\n}\n\ninterface MultiSelectWithoutSearchProps {\n isSearchable?: false;\n searchPlaceholder?: never;\n emptyStateText?: never;\n}\n\nexport type MultiSelectFieldProps = MultiSelectFieldBaseProps &\n (MultiSelectSearchProps | MultiSelectWithoutSearchProps);\n\nfunction SearchableOptions({\n children,\n selectedKeys,\n onSelectionChange,\n disallowEmptySelection,\n listLabel,\n searchPlaceholder,\n emptyStateText,\n}: MultiSelectOptionsProps &\n Omit<MultiSelectSearchProps, \"isSearchable\"> & { listLabel?: string }) {\n const { contains } = useFilter({ sensitivity: \"base\" });\n const [searchText, setSearchText] = useState(\"\");\n const panelRef = useRef<HTMLDivElement>(null);\n const visibleItems = matchingItems(children, searchText, contains);\n const visibleKeys = visibleItems.map(itemKey);\n\n function moveFocusToList(event: React.KeyboardEvent<HTMLInputElement>) {\n if (event.key !== \"ArrowDown\" || visibleItems.length === 0) return;\n event.preventDefault();\n panelRef.current?.querySelector<HTMLElement>('[role=\"listbox\"]')?.focus();\n }\n\n return (\n <div ref={panelRef} className=\"select-search-panel\">\n <RACTextField\n aria-label={searchPlaceholder}\n value={searchText}\n onChange={setSearchText}\n autoFocus\n >\n <Input\n className=\"select-search-input\"\n placeholder={searchPlaceholder}\n onKeyDown={moveFocusToList}\n />\n </RACTextField>\n <ListBox\n aria-label={listLabel}\n selectionMode=\"multiple\"\n escapeKeyBehavior=\"none\"\n disallowEmptySelection={disallowEmptySelection}\n selectedKeys={selectedKeys}\n onSelectionChange={(keys: RACSelection) =>\n onSelectionChange(keepHiddenSelection(selectedKeys, visibleKeys, keys))\n }\n renderEmptyState={() => (\n <span className=\"select-empty-state\">{emptyStateText}</span>\n )}\n >\n {visibleItems}\n </ListBox>\n </div>\n );\n}\n\nexport function MultiSelectField({\n className,\n label,\n description,\n errorMessage,\n placeholder,\n children,\n selectedKeys,\n onSelectionChange,\n isDisabled,\n isInvalid,\n disallowEmptySelection,\n \"aria-label\": ariaLabel,\n ...searchProps\n}: MultiSelectFieldProps) {\n const classNames = clsx(className, \"select-container\");\n const portalContainer = useOverlayPortalContainer();\n const triggerRef = useRef<HTMLButtonElement>(null);\n const [triggerWidth, setTriggerWidth] = useState<string>();\n\n const measureTrigger = useCallback(() => {\n if (triggerRef.current) {\n setTriggerWidth(`${triggerRef.current.offsetWidth}px`);\n }\n }, []);\n\n useLayoutEffect(() => {\n measureTrigger();\n const trigger = triggerRef.current;\n if (!trigger || typeof ResizeObserver === \"undefined\") return;\n const observer = new ResizeObserver(measureTrigger);\n observer.observe(trigger);\n return () => observer.disconnect();\n }, [measureTrigger]);\n\n const chosenText = selectedItemsText(children, selectedKeys);\n\n return (\n <div className={classNames}>\n <Field>\n {label && <Label>{label}</Label>}\n <RACMenuTrigger>\n <RACButton\n ref={triggerRef}\n className=\"select\"\n aria-label={ariaLabel}\n isDisabled={isDisabled}\n data-invalid={isInvalid || undefined}\n >\n <span\n className=\"select-value\"\n data-placeholder={chosenText === \"\" || undefined}\n title={chosenText || undefined}\n >\n {chosenText === \"\" ? placeholder : chosenText}\n </span>\n <IconChevronDown aria-hidden=\"true\" />\n </RACButton>\n <RACPopover\n className=\"select-popover\"\n style={{ \"--trigger-width\": triggerWidth } as React.CSSProperties}\n UNSTABLE_portalContainer={portalContainer}\n >\n {searchProps.isSearchable ? (\n <SearchableOptions\n listLabel={label ?? ariaLabel}\n selectedKeys={selectedKeys}\n onSelectionChange={onSelectionChange}\n disallowEmptySelection={disallowEmptySelection}\n searchPlaceholder={searchProps.searchPlaceholder}\n emptyStateText={searchProps.emptyStateText}\n >\n {children}\n </SearchableOptions>\n ) : (\n <ListBox\n aria-label={label ?? ariaLabel}\n autoFocus\n selectionMode=\"multiple\"\n escapeKeyBehavior=\"none\"\n disallowEmptySelection={disallowEmptySelection}\n selectedKeys={selectedKeys}\n onSelectionChange={(keys: RACSelection) =>\n onSelectionChange(\n keys === \"all\" ? allItemKeys(children) : new Set(keys),\n )\n }\n >\n {children}\n </ListBox>\n )}\n </RACPopover>\n </RACMenuTrigger>\n {description && <Description>{description}</Description>}\n <FieldError>{errorMessage}</FieldError>\n </Field>\n </div>\n );\n}\n"],"names":["itemKey","item","id","itemText","textValue","children","forEachItem","visit","React","child","allItemKeys","keys","matchingItems","searchText","matches","keepHiddenSelection","previousKeys","visibleKeys","visibleSelection","visible","isVisible","key","hiddenSelected","visibleSelected","selectedItemsText","selectedKeys","selected","texts","SearchableOptions","onSelectionChange","disallowEmptySelection","listLabel","searchPlaceholder","emptyStateText","contains","useFilter","setSearchText","useState","panelRef","useRef","visibleItems","moveFocusToList","event","_b","_a","jsxs","jsx","RACTextField","Input","ListBox","MultiSelectField","className","label","description","errorMessage","placeholder","isDisabled","isInvalid","ariaLabel","searchProps","classNames","clsx","portalContainer","useOverlayPortalContainer","triggerRef","triggerWidth","setTriggerWidth","measureTrigger","useCallback","useLayoutEffect","trigger","observer","chosenText","Field","Label","RACMenuTrigger","RACButton","IconChevronDown","RACPopover","Description","FieldError"],"mappings":"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"}
|