@frontify/fondue-components 29.0.0 → 29.0.1

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.
Files changed (87) hide show
  1. package/dist/fondue-components111.js +15 -3
  2. package/dist/fondue-components111.js.map +1 -1
  3. package/dist/fondue-components112.js +127 -5
  4. package/dist/fondue-components112.js.map +1 -1
  5. package/dist/fondue-components113.js +11 -17
  6. package/dist/fondue-components113.js.map +1 -1
  7. package/dist/fondue-components114.js +36 -14
  8. package/dist/fondue-components114.js.map +1 -1
  9. package/dist/fondue-components115.js +14 -15
  10. package/dist/fondue-components115.js.map +1 -1
  11. package/dist/fondue-components116.js +15 -111
  12. package/dist/fondue-components116.js.map +1 -1
  13. package/dist/fondue-components117.js +110 -12
  14. package/dist/fondue-components117.js.map +1 -1
  15. package/dist/fondue-components118.js +13 -17
  16. package/dist/fondue-components118.js.map +1 -1
  17. package/dist/fondue-components119.js +17 -13
  18. package/dist/fondue-components119.js.map +1 -1
  19. package/dist/fondue-components120.js +12 -126
  20. package/dist/fondue-components120.js.map +1 -1
  21. package/dist/fondue-components121.js +217 -11
  22. package/dist/fondue-components121.js.map +1 -1
  23. package/dist/fondue-components122.js +17 -34
  24. package/dist/fondue-components122.js.map +1 -1
  25. package/dist/fondue-components123.js +14 -214
  26. package/dist/fondue-components123.js.map +1 -1
  27. package/dist/fondue-components124.js +149 -17
  28. package/dist/fondue-components124.js.map +1 -1
  29. package/dist/fondue-components125.js +44 -16
  30. package/dist/fondue-components125.js.map +1 -1
  31. package/dist/fondue-components126.js +4 -150
  32. package/dist/fondue-components126.js.map +1 -1
  33. package/dist/fondue-components127.js +4 -44
  34. package/dist/fondue-components127.js.map +1 -1
  35. package/dist/fondue-components128.js +28 -169
  36. package/dist/fondue-components128.js.map +1 -1
  37. package/dist/fondue-components130.js +41 -9
  38. package/dist/fondue-components130.js.map +1 -1
  39. package/dist/fondue-components131.js +6 -256
  40. package/dist/fondue-components131.js.map +1 -1
  41. package/dist/fondue-components132.js +11 -28
  42. package/dist/fondue-components132.js.map +1 -1
  43. package/dist/fondue-components133.js +74 -0
  44. package/dist/fondue-components133.js.map +1 -0
  45. package/dist/fondue-components134.js +14 -40
  46. package/dist/fondue-components134.js.map +1 -1
  47. package/dist/fondue-components135.js +7 -6
  48. package/dist/fondue-components135.js.map +1 -1
  49. package/dist/fondue-components136.js +88 -11
  50. package/dist/fondue-components136.js.map +1 -1
  51. package/dist/fondue-components137.js +79 -69
  52. package/dist/fondue-components137.js.map +1 -1
  53. package/dist/fondue-components138.js +30 -14
  54. package/dist/fondue-components138.js.map +1 -1
  55. package/dist/fondue-components139.js +170 -7
  56. package/dist/fondue-components139.js.map +1 -1
  57. package/dist/fondue-components140.js +57 -86
  58. package/dist/fondue-components140.js.map +1 -1
  59. package/dist/fondue-components141.js +9 -81
  60. package/dist/fondue-components141.js.map +1 -1
  61. package/dist/fondue-components142.js +254 -29
  62. package/dist/fondue-components142.js.map +1 -1
  63. package/dist/fondue-components145.js +2 -2
  64. package/dist/fondue-components147.js +2 -2
  65. package/dist/fondue-components148.js +1 -1
  66. package/dist/fondue-components43.js +2 -2
  67. package/dist/fondue-components50.js +1 -1
  68. package/dist/fondue-components60.js +2 -2
  69. package/dist/fondue-components61.js +3 -3
  70. package/dist/fondue-components62.js +2 -2
  71. package/dist/fondue-components74.js +2 -2
  72. package/dist/fondue-components77.js +1 -1
  73. package/dist/fondue-components78.js +1 -1
  74. package/dist/fondue-components79.js +1 -1
  75. package/dist/fondue-components82.js +1 -1
  76. package/dist/fondue-components84.js +2 -2
  77. package/dist/fondue-components90.js +2 -2
  78. package/dist/fondue-components91.js +2 -2
  79. package/dist/fondue-components92.js +2 -2
  80. package/dist/fondue-components93.js +2 -2
  81. package/dist/fondue-components94.js +1 -1
  82. package/dist/fondue-components95.js +1 -1
  83. package/dist/index.d.ts +2 -2
  84. package/dist/style.css +1 -1
  85. package/package.json +1 -1
  86. package/dist/fondue-components129.js +0 -63
  87. package/dist/fondue-components129.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"fondue-components117.js","sources":["../src/components/DatePicker/hooks/useDateRange.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { useMemo, useState } from 'react';\nimport { type DateRange as InternalDayPickerDateRange, type OnSelectHandler } from 'react-day-picker';\n\nimport { transformDateRangeToPickerDateRange, transformPickerDateRangeToDateRange } from '../helpers/dateTransformer';\nimport { type DatePickerDateRange } from '../types';\n\nexport const useDateRange = (selected: DatePickerDateRange, onSelect?: (dateRange: DatePickerDateRange) => void) => {\n const [internalSelectedDateRange, setInternalSelectedDateRange] = useState<DatePickerDateRange>(selected);\n const [prevSelected, setPrevSelected] = useState<DatePickerDateRange | undefined>(selected);\n\n if (prevSelected !== selected) {\n setPrevSelected(selected);\n setInternalSelectedDateRange(selected);\n }\n\n const selectedDateRange = useMemo(() => {\n return transformDateRangeToPickerDateRange(internalSelectedDateRange);\n }, [internalSelectedDateRange]);\n\n const handleSelect: OnSelectHandler<InternalDayPickerDateRange> = (pickerDateRange) => {\n const dateRange = transformPickerDateRangeToDateRange(pickerDateRange);\n\n if (dateRange) {\n onSelect?.(dateRange);\n setInternalSelectedDateRange(dateRange);\n }\n };\n\n return {\n selectedDateRange,\n handleSelect,\n };\n};\n"],"names":["useDateRange","selected","onSelect","internalSelectedDateRange","setInternalSelectedDateRange","useState","prevSelected","setPrevSelected","useMemo","transformDateRangeToPickerDateRange","pickerDateRange","dateRange","transformPickerDateRangeToDateRange"],"mappings":";;AAQO,MAAMA,IAAe,CAACC,GAA+BC,MAAwD;AAChH,QAAM,CAACC,GAA2BC,CAA4B,IAAIC,EAA8BJ,CAAQ,GAClG,CAACK,GAAcC,CAAe,IAAIF,EAA0CJ,CAAQ;AAE1F,SAAIK,MAAiBL,MACjBM,EAAgBN,CAAQ,GACxBG,EAA6BH,CAAQ,IAgBlC;AAAA,IACH,mBAdsBO,EAAQ,MACvBC,EAAoCN,CAAyB,GACrE,CAACA,CAAyB,CAAC;AAAA,IAa1B,cAX8D,CAACO,MAAoB;AACnF,YAAMC,IAAYC,EAAoCF,CAAe;AAErE,MAAIC,MACAT,KAAA,QAAAA,EAAWS,IACXP,EAA6BO,CAAS;AAAA,IAE9C;AAAA,EAII;AAER;"}
1
+ {"version":3,"file":"fondue-components117.js","sources":["../src/components/DatePicker/DatePickerCalendar.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { IconArrowLeft, IconArrowRight } from '@frontify/fondue-icons';\nimport { forwardRef, useEffect, useMemo, useRef } from 'react';\nimport {\n getDefaultClassNames,\n DayPicker,\n type PreviousMonthButtonProps,\n type NextMonthButtonProps,\n type OnSelectHandler,\n type DateRange as InternalDayPickerDateRange,\n type CustomComponents,\n type Matcher,\n type DayButtonProps,\n} from 'react-day-picker';\nimport 'react-day-picker/style.css';\n\nimport { Button } from '../Button/Button';\nimport { useFondueTheme } from '../ThemeProvider/ThemeProvider';\n\nimport styles from './styles/datePickerCalendar.module.scss';\n\ntype DatePickerCalendarSingleModeProps = {\n mode: 'single';\n required: true;\n selected: Date | undefined;\n onSelect: OnSelectHandler<Date>;\n};\ntype DatePickerCalendarRangeModeProps = {\n mode: 'range';\n required: true;\n selected: InternalDayPickerDateRange | undefined;\n onSelect: OnSelectHandler<InternalDayPickerDateRange>;\n modifiers?: Record<string, Matcher>;\n onDayMouseEnter?: (day: Date) => void;\n onDayMouseLeave?: (day: Date) => void;\n};\n\ntype DatePickerCalendarModeProps = DatePickerCalendarSingleModeProps | DatePickerCalendarRangeModeProps;\n\ntype DisabledDates = { before: Date } | { after: Date };\n\nexport type DatePickerBaseProps = {\n /** The days to be disabled. */\n disabledDates?: DisabledDates | DisabledDates[];\n /** The test id applied to the wrapper and forwarded to DayPicker. */\n 'data-test-id'?: string;\n};\n\ntype DatePickerCalendarProps = DatePickerBaseProps & DatePickerCalendarModeProps;\n\nexport const DatePickerCalendar = forwardRef<HTMLDivElement, DatePickerCalendarProps>(\n ({ 'data-test-id': dataTestId = 'fondue-date-picker-calendar', disabledDates, ...modeProps }, ref): JSX.Element => {\n const defaultClassNames = getDefaultClassNames();\n const {\n dir,\n translations: { dateLocale },\n } = useFondueTheme();\n\n const defaultMonth = useMemo(() => {\n if (modeProps.mode === 'single') {\n return modeProps.selected;\n }\n return modeProps.selected?.from;\n }, [modeProps]);\n\n return (\n <div ref={ref} data-test-id={dataTestId} className={styles.wrapper}>\n <DayPicker\n navLayout=\"around\"\n data-test-id={dataTestId}\n locale={dateLocale}\n components={getCustomComponents()}\n showOutsideDays\n disabled={disabledDates}\n defaultMonth={defaultMonth}\n dir={dir}\n timeZone=\"UTC\"\n classNames={{\n root: `${defaultClassNames.root} ${styles.root}`,\n day: `${styles.day}`,\n selected: `${styles.selected}`,\n week: `${defaultClassNames.week} ${styles.week}`,\n weekday: `${styles.weekday}`,\n weekdays: `${defaultClassNames.weekdays} ${styles.weekdays}`,\n range_start: `${styles.selectedStart}`,\n range_end: `${styles.selectedEnd}`,\n range_middle: `${styles.selectedMiddle}`,\n disabled: `${styles.disabled}`,\n outside: `${styles.outside}`,\n }}\n {...modeProps}\n modifiersClassNames={{\n hoverAfter: `${styles.hoverAfter}`,\n hoverBefore: `${styles.hoverBefore}`,\n hoverSelected: `${styles.hoverSelected}`,\n }}\n />\n </div>\n );\n },\n);\nDatePickerCalendar.displayName = 'DatePickerCalendar';\n\nconst getCustomComponents = (): Partial<CustomComponents> => ({\n DayButton: ({ day, modifiers, onClick, onMouseEnter, onMouseLeave, ...props }: DayButtonProps): JSX.Element => {\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n useEffect(() => {\n if (modifiers.focused) {\n buttonRef.current?.focus();\n }\n }, [modifiers.focused]);\n\n return (\n <button\n {...props}\n ref={buttonRef}\n className={styles.dayButton}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n type=\"button\"\n >\n <div className={`${styles.dayContent} ${styles.button}`}>{day.date.getDate()}</div>\n </button>\n );\n },\n PreviousMonthButton: ({\n onClick,\n 'aria-label': ariaLabel,\n 'aria-disabled': ariaDisabled,\n }: PreviousMonthButtonProps): JSX.Element => {\n return (\n <div className={`${styles.toggleMonthButtonContainer} `}>\n <Button\n emphasis=\"weak\"\n size=\"small\"\n aspect=\"square\"\n aria-label={ariaLabel}\n aria-disabled={ariaDisabled}\n onPress={(event) => {\n if (event) {\n onClick?.(event);\n }\n }}\n >\n <IconArrowLeft size={16} />\n </Button>\n </div>\n );\n },\n NextMonthButton: ({\n onClick,\n 'aria-label': ariaLabel,\n 'aria-disabled': ariaDisabled,\n }: NextMonthButtonProps): JSX.Element => {\n return (\n <div className={`${styles.toggleMonthButtonContainer} ${styles.nextMonthButtonContainer}`}>\n <Button\n emphasis=\"weak\"\n size=\"small\"\n aspect=\"square\"\n aria-label={ariaLabel}\n aria-disabled={ariaDisabled}\n onPress={(event) => {\n if (event) {\n onClick?.(event);\n }\n }}\n >\n <IconArrowRight size={16} />\n </Button>\n </div>\n );\n },\n});\n"],"names":["DatePickerCalendar","forwardRef","dataTestId","disabledDates","modeProps","ref","defaultClassNames","getDefaultClassNames","dir","dateLocale","useFondueTheme","defaultMonth","useMemo","_a","styles","jsx","DayPicker","getCustomComponents","day","modifiers","onClick","onMouseEnter","onMouseLeave","props","buttonRef","useRef","useEffect","ariaLabel","ariaDisabled","Button","event","IconArrowLeft","IconArrowRight"],"mappings":"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"}
@@ -1,20 +1,16 @@
1
- import { useMemo as o } from "react";
2
- const f = {
3
- hoverBefore: !1,
4
- hoverAfter: !1,
5
- hoverSelected: !1
6
- }, h = (r) => ({
7
- hoverModifiers: o(() => !(r != null && r.from) || !(r != null && r.to) || (r == null ? void 0 : r.to.getTime()) > (r == null ? void 0 : r.from.getTime()) ? f : {
8
- hoverBefore: {
9
- before: r == null ? void 0 : r.from
10
- },
11
- hoverAfter: {
12
- after: r == null ? void 0 : r.to
13
- },
14
- hoverSelected: r == null ? void 0 : r.from
15
- }, [r])
16
- });
1
+ import { useState as o, useMemo as D } from "react";
2
+ import { transformDateRangeToPickerDateRange as c, transformPickerDateRangeToDateRange as i } from "./fondue-components128.js";
3
+ const l = (e, t) => {
4
+ const [n, r] = o(e), [s, g] = o(e);
5
+ return s !== e && (g(e), r(e)), {
6
+ selectedDateRange: D(() => c(n), [n]),
7
+ handleSelect: (R) => {
8
+ const a = i(R);
9
+ a && (t == null || t(a), r(a));
10
+ }
11
+ };
12
+ };
17
13
  export {
18
- h as useRangeHover
14
+ l as useDateRange
19
15
  };
20
16
  //# sourceMappingURL=fondue-components118.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fondue-components118.js","sources":["../src/components/DatePicker/hooks/useRangeHover.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { useMemo } from 'react';\nimport { type DateRange as InternalDayPickerDateRange } from 'react-day-picker';\n\ntype RangeHoverModifiers = {\n hoverBefore:\n | {\n before: Date;\n }\n | false;\n hoverAfter:\n | {\n after: Date;\n }\n | false;\n hoverSelected: Date | false;\n};\n\nconst DISABLED_MODIFIERS: RangeHoverModifiers = {\n hoverBefore: false,\n hoverAfter: false,\n hoverSelected: false,\n};\n\nexport const useRangeHover = (selectedDateRange?: InternalDayPickerDateRange) => {\n const hoverModifiers = useMemo(() => {\n if (\n !selectedDateRange?.from ||\n !selectedDateRange?.to ||\n selectedDateRange?.to.getTime() > selectedDateRange?.from.getTime()\n ) {\n return DISABLED_MODIFIERS;\n }\n return {\n hoverBefore: {\n before: selectedDateRange?.from,\n },\n hoverAfter: {\n after: selectedDateRange?.to,\n },\n hoverSelected: selectedDateRange?.from,\n };\n }, [selectedDateRange]);\n\n return {\n hoverModifiers,\n };\n};\n"],"names":["DISABLED_MODIFIERS","useRangeHover","selectedDateRange","useMemo"],"mappings":";AAmBA,MAAMA,IAA0C;AAAA,EAC5C,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,eAAe;AACnB,GAEaC,IAAgB,CAACC,OAoBnB;AAAA,EACH,gBApBmBC,EAAQ,MAEvB,EAACD,KAAA,QAAAA,EAAmB,SACpB,EAACA,KAAA,QAAAA,EAAmB,QACpBA,KAAA,gBAAAA,EAAmB,GAAG,cAAYA,KAAA,gBAAAA,EAAmB,KAAK,aAEnDF,IAEJ;AAAA,IACH,aAAa;AAAA,MACT,QAAQE,KAAA,gBAAAA,EAAmB;AAAA,IAAA;AAAA,IAE/B,YAAY;AAAA,MACR,OAAOA,KAAA,gBAAAA,EAAmB;AAAA,IAAA;AAAA,IAE9B,eAAeA,KAAA,gBAAAA,EAAmB;AAAA,EAAA,GAEvC,CAACA,CAAiB,CAAC;AAGlB;"}
1
+ {"version":3,"file":"fondue-components118.js","sources":["../src/components/DatePicker/hooks/useDateRange.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { useMemo, useState } from 'react';\nimport { type DateRange as InternalDayPickerDateRange, type OnSelectHandler } from 'react-day-picker';\n\nimport { transformDateRangeToPickerDateRange, transformPickerDateRangeToDateRange } from '../helpers/dateTransformer';\nimport { type DatePickerDateRange } from '../types';\n\nexport const useDateRange = (selected: DatePickerDateRange, onSelect?: (dateRange: DatePickerDateRange) => void) => {\n const [internalSelectedDateRange, setInternalSelectedDateRange] = useState<DatePickerDateRange>(selected);\n const [prevSelected, setPrevSelected] = useState<DatePickerDateRange | undefined>(selected);\n\n if (prevSelected !== selected) {\n setPrevSelected(selected);\n setInternalSelectedDateRange(selected);\n }\n\n const selectedDateRange = useMemo(() => {\n return transformDateRangeToPickerDateRange(internalSelectedDateRange);\n }, [internalSelectedDateRange]);\n\n const handleSelect: OnSelectHandler<InternalDayPickerDateRange> = (pickerDateRange) => {\n const dateRange = transformPickerDateRangeToDateRange(pickerDateRange);\n\n if (dateRange) {\n onSelect?.(dateRange);\n setInternalSelectedDateRange(dateRange);\n }\n };\n\n return {\n selectedDateRange,\n handleSelect,\n };\n};\n"],"names":["useDateRange","selected","onSelect","internalSelectedDateRange","setInternalSelectedDateRange","useState","prevSelected","setPrevSelected","useMemo","transformDateRangeToPickerDateRange","pickerDateRange","dateRange","transformPickerDateRangeToDateRange"],"mappings":";;AAQO,MAAMA,IAAe,CAACC,GAA+BC,MAAwD;AAChH,QAAM,CAACC,GAA2BC,CAA4B,IAAIC,EAA8BJ,CAAQ,GAClG,CAACK,GAAcC,CAAe,IAAIF,EAA0CJ,CAAQ;AAE1F,SAAIK,MAAiBL,MACjBM,EAAgBN,CAAQ,GACxBG,EAA6BH,CAAQ,IAgBlC;AAAA,IACH,mBAdsBO,EAAQ,MACvBC,EAAoCN,CAAyB,GACrE,CAACA,CAAyB,CAAC;AAAA,IAa1B,cAX8D,CAACO,MAAoB;AACnF,YAAMC,IAAYC,EAAoCF,CAAe;AAErE,MAAIC,MACAT,KAAA,QAAAA,EAAWS,IACXP,EAA6BO,CAAS;AAAA,IAE9C;AAAA,EAII;AAER;"}
@@ -1,16 +1,20 @@
1
- import { useState as o, useMemo as i } from "react";
2
- import { transformDatePickerDateToDate as m, transformDateToDatePickerDate as d } from "./fondue-components132.js";
3
- const P = (e, t) => {
4
- const [a, r] = o(e), [D, s] = o(e);
5
- return D !== e && (s(e), r(e)), {
6
- selectedDate: i(() => m(a), [a]),
7
- handleSelect: (c) => {
8
- const n = d(c);
9
- r(n), t == null || t(n);
10
- }
11
- };
12
- };
1
+ import { useMemo as o } from "react";
2
+ const f = {
3
+ hoverBefore: !1,
4
+ hoverAfter: !1,
5
+ hoverSelected: !1
6
+ }, h = (r) => ({
7
+ hoverModifiers: o(() => !(r != null && r.from) || !(r != null && r.to) || (r == null ? void 0 : r.to.getTime()) > (r == null ? void 0 : r.from.getTime()) ? f : {
8
+ hoverBefore: {
9
+ before: r == null ? void 0 : r.from
10
+ },
11
+ hoverAfter: {
12
+ after: r == null ? void 0 : r.to
13
+ },
14
+ hoverSelected: r == null ? void 0 : r.from
15
+ }, [r])
16
+ });
13
17
  export {
14
- P as useSingleDate
18
+ h as useRangeHover
15
19
  };
16
20
  //# sourceMappingURL=fondue-components119.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fondue-components119.js","sources":["../src/components/DatePicker/hooks/useSingleDate.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { useMemo, useState } from 'react';\nimport { type OnSelectHandler } from 'react-day-picker';\n\nimport { transformDatePickerDateToDate, transformDateToDatePickerDate } from '../helpers/dateTransformer';\nimport { type DatePickerDate } from '../types';\n\nexport const useSingleDate = (selected?: DatePickerDate, onSelect?: (date?: DatePickerDate) => void) => {\n const [internalSelectedDate, setInternalSelectedDate] = useState<DatePickerDate | undefined>(selected);\n const [prevSelected, setPrevSelected] = useState<DatePickerDate | undefined>(selected);\n\n if (prevSelected !== selected) {\n setPrevSelected(selected);\n setInternalSelectedDate(selected);\n }\n\n const selectedDate = useMemo(() => {\n return transformDatePickerDateToDate(internalSelectedDate);\n }, [internalSelectedDate]);\n\n const handleSelect: OnSelectHandler<Date> = (date) => {\n const datePickerDate = transformDateToDatePickerDate(date);\n\n setInternalSelectedDate(datePickerDate);\n onSelect?.(datePickerDate);\n };\n\n return {\n selectedDate,\n handleSelect,\n };\n};\n"],"names":["useSingleDate","selected","onSelect","internalSelectedDate","setInternalSelectedDate","useState","prevSelected","setPrevSelected","useMemo","transformDatePickerDateToDate","date","datePickerDate","transformDateToDatePickerDate"],"mappings":";;AAQO,MAAMA,IAAgB,CAACC,GAA2BC,MAA+C;AACpG,QAAM,CAACC,GAAsBC,CAAuB,IAAIC,EAAqCJ,CAAQ,GAC/F,CAACK,GAAcC,CAAe,IAAIF,EAAqCJ,CAAQ;AAErF,SAAIK,MAAiBL,MACjBM,EAAgBN,CAAQ,GACxBG,EAAwBH,CAAQ,IAc7B;AAAA,IACH,cAZiBO,EAAQ,MAClBC,EAA8BN,CAAoB,GAC1D,CAACA,CAAoB,CAAC;AAAA,IAWrB,cATwC,CAACO,MAAS;AAClD,YAAMC,IAAiBC,EAA8BF,CAAI;AAEzD,MAAAN,EAAwBO,CAAc,GACtCT,KAAA,QAAAA,EAAWS;AAAA,IACf;AAAA,EAII;AAER;"}
1
+ {"version":3,"file":"fondue-components119.js","sources":["../src/components/DatePicker/hooks/useRangeHover.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { useMemo } from 'react';\nimport { type DateRange as InternalDayPickerDateRange } from 'react-day-picker';\n\ntype RangeHoverModifiers = {\n hoverBefore:\n | {\n before: Date;\n }\n | false;\n hoverAfter:\n | {\n after: Date;\n }\n | false;\n hoverSelected: Date | false;\n};\n\nconst DISABLED_MODIFIERS: RangeHoverModifiers = {\n hoverBefore: false,\n hoverAfter: false,\n hoverSelected: false,\n};\n\nexport const useRangeHover = (selectedDateRange?: InternalDayPickerDateRange) => {\n const hoverModifiers = useMemo(() => {\n if (\n !selectedDateRange?.from ||\n !selectedDateRange?.to ||\n selectedDateRange?.to.getTime() > selectedDateRange?.from.getTime()\n ) {\n return DISABLED_MODIFIERS;\n }\n return {\n hoverBefore: {\n before: selectedDateRange?.from,\n },\n hoverAfter: {\n after: selectedDateRange?.to,\n },\n hoverSelected: selectedDateRange?.from,\n };\n }, [selectedDateRange]);\n\n return {\n hoverModifiers,\n };\n};\n"],"names":["DISABLED_MODIFIERS","useRangeHover","selectedDateRange","useMemo"],"mappings":";AAmBA,MAAMA,IAA0C;AAAA,EAC5C,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,eAAe;AACnB,GAEaC,IAAgB,CAACC,OAoBnB;AAAA,EACH,gBApBmBC,EAAQ,MAEvB,EAACD,KAAA,QAAAA,EAAmB,SACpB,EAACA,KAAA,QAAAA,EAAmB,QACpBA,KAAA,gBAAAA,EAAmB,GAAG,cAAYA,KAAA,gBAAAA,EAAmB,KAAK,aAEnDF,IAEJ;AAAA,IACH,aAAa;AAAA,MACT,QAAQE,KAAA,gBAAAA,EAAmB;AAAA,IAAA;AAAA,IAE/B,YAAY;AAAA,MACR,OAAOA,KAAA,gBAAAA,EAAmB;AAAA,IAAA;AAAA,IAE9B,eAAeA,KAAA,gBAAAA,EAAmB;AAAA,EAAA,GAEvC,CAACA,CAAiB,CAAC;AAGlB;"}
@@ -1,130 +1,16 @@
1
- import { useCallback as c } from "react";
2
- import { deepEqual as f } from "./fondue-components128.js";
3
- import { defaultSortableTransition as x, Sortable as R } from "./fondue-components84.js";
4
- import { isSortable as rr } from "./fondue-components84.js";
5
- import { useInstance as T } from "@dnd-kit/react";
6
- import { useDeepSignal as V, useOnValueChange as i, useIsomorphicLayoutEffect as k, useOnElementChange as m, useImmediateEffect as q } from "./fondue-components129.js";
7
- import { currentValue as v } from "./fondue-components130.js";
8
- import { batch as L } from "./fondue-components131.js";
9
- var N = Object.defineProperty, U = Object.defineProperties, z = Object.getOwnPropertyDescriptors, I = Object.getOwnPropertySymbols, A = Object.prototype.hasOwnProperty, B = Object.prototype.propertyIsEnumerable, j = (o, t, a) => t in o ? N(o, t, { enumerable: !0, configurable: !0, writable: !0, value: a }) : o[t] = a, _ = (o, t) => {
10
- for (var a in t || (t = {}))
11
- A.call(t, a) && j(o, a, t[a]);
12
- if (I)
13
- for (var a of I(t))
14
- B.call(t, a) && j(o, a, t[a]);
15
- return o;
16
- }, F = (o, t) => U(o, z(t));
17
- function Y(o) {
18
- const {
19
- accept: t,
20
- collisionDetector: a,
21
- collisionPriority: b,
22
- id: O,
23
- data: p,
24
- element: h,
25
- handle: y,
26
- index: g,
27
- group: D,
28
- disabled: P,
29
- feedback: d,
30
- modifiers: S,
31
- sensors: w,
32
- target: C,
33
- type: E
34
- } = o, l = _(_({}, x), o.transition), r = T((e) => new R(
35
- F(_({}, o), {
36
- transition: l,
37
- register: !1,
38
- handle: v(y),
39
- element: v(h),
40
- target: v(C),
41
- feedback: d
42
- }),
43
- e
44
- )), u = V(r, G);
45
- return i(O, () => r.id = O), k(() => {
46
- L(() => {
47
- r.group = D, r.index = g;
48
- });
49
- }, [r, D, g]), i(E, () => r.type = E), i(
50
- t,
51
- () => r.accept = t,
52
- void 0,
53
- f
54
- ), i(p, () => p && (r.data = p)), i(
55
- g,
56
- () => {
57
- var e;
58
- (e = r.manager) != null && e.dragOperation.status.idle && (l != null && l.idle) && r.refreshShape();
59
- },
60
- q
61
- ), m(y, (e) => r.handle = e), m(h, (e) => r.element = e), m(C, (e) => r.target = e), i(P, () => r.disabled = P === !0), i(w, () => r.sensors = w), i(
62
- a,
63
- () => r.collisionDetector = a
64
- ), i(
65
- b,
66
- () => r.collisionPriority = b
67
- ), i(d, () => r.feedback = d ?? "default"), i(
68
- l,
69
- () => r.transition = l,
70
- void 0,
71
- f
72
- ), i(
73
- S,
74
- () => r.modifiers = S,
75
- void 0,
76
- f
77
- ), i(
78
- o.alignment,
79
- () => r.alignment = o.alignment
80
- ), {
81
- sortable: u,
82
- get isDragging() {
83
- return u.isDragging;
84
- },
85
- get isDropping() {
86
- return u.isDropping;
87
- },
88
- get isDragSource() {
89
- return u.isDragSource;
90
- },
91
- get isDropTarget() {
92
- return u.isDropTarget;
93
- },
94
- handleRef: c(
95
- (e) => {
96
- r.handle = e ?? void 0;
97
- },
98
- [r]
99
- ),
100
- ref: c(
101
- (e) => {
102
- var n, s;
103
- !e && ((n = r.element) != null && n.isConnected) && !((s = r.manager) != null && s.dragOperation.status.idle) || (r.element = e ?? void 0);
104
- },
105
- [r]
106
- ),
107
- sourceRef: c(
108
- (e) => {
109
- var n, s;
110
- !e && ((n = r.source) != null && n.isConnected) && !((s = r.manager) != null && s.dragOperation.status.idle) || (r.source = e ?? void 0);
111
- },
112
- [r]
113
- ),
114
- targetRef: c(
115
- (e) => {
116
- var n, s;
117
- !e && ((n = r.target) != null && n.isConnected) && !((s = r.manager) != null && s.dragOperation.status.idle) || (r.target = e ?? void 0);
118
- },
119
- [r]
120
- )
1
+ import { useState as o, useMemo as i } from "react";
2
+ import { transformDatePickerDateToDate as m, transformDateToDatePickerDate as d } from "./fondue-components128.js";
3
+ const P = (e, t) => {
4
+ const [a, r] = o(e), [D, s] = o(e);
5
+ return D !== e && (s(e), r(e)), {
6
+ selectedDate: i(() => m(a), [a]),
7
+ handleSelect: (c) => {
8
+ const n = d(c);
9
+ r(n), t == null || t(n);
10
+ }
121
11
  };
122
- }
123
- function G(o, t, a) {
124
- return !!(o === "isDragSource" && !a && t);
125
- }
12
+ };
126
13
  export {
127
- rr as isSortable,
128
- Y as useSortable
14
+ P as useSingleDate
129
15
  };
130
16
  //# sourceMappingURL=fondue-components120.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fondue-components120.js","sources":["../../../node_modules/.pnpm/@dnd-kit+react@0.3.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@dnd-kit/react/sortable.js"],"sourcesContent":["import { useCallback } from 'react';\nimport { batch, deepEqual } from '@dnd-kit/state';\nimport { defaultSortableTransition, Sortable } from '@dnd-kit/dom/sortable';\nexport { isSortable, isSortableOperation } from '@dnd-kit/dom/sortable';\nimport { useInstance } from '@dnd-kit/react';\nimport { useDeepSignal, useOnValueChange, useIsomorphicLayoutEffect, useImmediateEffect, useOnElementChange } from '@dnd-kit/react/hooks';\nimport { currentValue } from '@dnd-kit/react/utilities';\n\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nfunction useSortable(input) {\n const {\n accept,\n collisionDetector,\n collisionPriority,\n id,\n data,\n element,\n handle,\n index,\n group,\n disabled,\n feedback,\n modifiers,\n sensors,\n target,\n type\n } = input;\n const transition = __spreadValues(__spreadValues({}, defaultSortableTransition), input.transition);\n const sortable = useInstance((manager) => {\n return new Sortable(\n __spreadProps(__spreadValues({}, input), {\n transition,\n register: false,\n handle: currentValue(handle),\n element: currentValue(element),\n target: currentValue(target),\n feedback\n }),\n manager\n );\n });\n const trackedSortable = useDeepSignal(sortable, shouldUpdateSynchronously);\n useOnValueChange(id, () => sortable.id = id);\n useIsomorphicLayoutEffect(() => {\n batch(() => {\n sortable.group = group;\n sortable.index = index;\n });\n }, [sortable, group, index]);\n useOnValueChange(type, () => sortable.type = type);\n useOnValueChange(\n accept,\n () => sortable.accept = accept,\n void 0,\n deepEqual\n );\n useOnValueChange(data, () => data && (sortable.data = data));\n useOnValueChange(\n index,\n () => {\n var _a;\n if (((_a = sortable.manager) == null ? void 0 : _a.dragOperation.status.idle) && (transition == null ? void 0 : transition.idle)) {\n sortable.refreshShape();\n }\n },\n useImmediateEffect\n );\n useOnElementChange(handle, (handle2) => sortable.handle = handle2);\n useOnElementChange(element, (element2) => sortable.element = element2);\n useOnElementChange(target, (target2) => sortable.target = target2);\n useOnValueChange(disabled, () => sortable.disabled = disabled === true);\n useOnValueChange(sensors, () => sortable.sensors = sensors);\n useOnValueChange(\n collisionDetector,\n () => sortable.collisionDetector = collisionDetector\n );\n useOnValueChange(\n collisionPriority,\n () => sortable.collisionPriority = collisionPriority\n );\n useOnValueChange(feedback, () => sortable.feedback = feedback != null ? feedback : \"default\");\n useOnValueChange(\n transition,\n () => sortable.transition = transition,\n void 0,\n deepEqual\n );\n useOnValueChange(\n modifiers,\n () => sortable.modifiers = modifiers,\n void 0,\n deepEqual\n );\n useOnValueChange(\n input.alignment,\n () => sortable.alignment = input.alignment\n );\n return {\n sortable: trackedSortable,\n get isDragging() {\n return trackedSortable.isDragging;\n },\n get isDropping() {\n return trackedSortable.isDropping;\n },\n get isDragSource() {\n return trackedSortable.isDragSource;\n },\n get isDropTarget() {\n return trackedSortable.isDropTarget;\n },\n handleRef: useCallback(\n (element2) => {\n sortable.handle = element2 != null ? element2 : void 0;\n },\n [sortable]\n ),\n ref: useCallback(\n (element2) => {\n var _a, _b;\n if (!element2 && ((_a = sortable.element) == null ? void 0 : _a.isConnected) && !((_b = sortable.manager) == null ? void 0 : _b.dragOperation.status.idle)) {\n return;\n }\n sortable.element = element2 != null ? element2 : void 0;\n },\n [sortable]\n ),\n sourceRef: useCallback(\n (element2) => {\n var _a, _b;\n if (!element2 && ((_a = sortable.source) == null ? void 0 : _a.isConnected) && !((_b = sortable.manager) == null ? void 0 : _b.dragOperation.status.idle)) {\n return;\n }\n sortable.source = element2 != null ? element2 : void 0;\n },\n [sortable]\n ),\n targetRef: useCallback(\n (element2) => {\n var _a, _b;\n if (!element2 && ((_a = sortable.target) == null ? void 0 : _a.isConnected) && !((_b = sortable.manager) == null ? void 0 : _b.dragOperation.status.idle)) {\n return;\n }\n sortable.target = element2 != null ? element2 : void 0;\n },\n [sortable]\n )\n };\n}\nfunction shouldUpdateSynchronously(key, oldValue, newValue) {\n if (key === \"isDragSource\" && !newValue && oldValue) return true;\n return false;\n}\n\nexport { useSortable };\n//# sourceMappingURL=sortable.js.map\n//# sourceMappingURL=sortable.js.map"],"names":["__defProp","__defProps","__getOwnPropDescs","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","obj","key","value","__spreadValues","a","b","prop","__spreadProps","useSortable","input","accept","collisionDetector","collisionPriority","id","data","element","handle","index","group","disabled","feedback","modifiers","sensors","target","type","transition","defaultSortableTransition","sortable","useInstance","manager","Sortable","currentValue","trackedSortable","useDeepSignal","shouldUpdateSynchronously","useOnValueChange","useIsomorphicLayoutEffect","batch","deepEqual","_a","useImmediateEffect","useOnElementChange","handle2","element2","target2","useCallback","_b","oldValue","newValue"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"fondue-components120.js","sources":["../src/components/DatePicker/hooks/useSingleDate.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { useMemo, useState } from 'react';\nimport { type OnSelectHandler } from 'react-day-picker';\n\nimport { transformDatePickerDateToDate, transformDateToDatePickerDate } from '../helpers/dateTransformer';\nimport { type DatePickerDate } from '../types';\n\nexport const useSingleDate = (selected?: DatePickerDate, onSelect?: (date?: DatePickerDate) => void) => {\n const [internalSelectedDate, setInternalSelectedDate] = useState<DatePickerDate | undefined>(selected);\n const [prevSelected, setPrevSelected] = useState<DatePickerDate | undefined>(selected);\n\n if (prevSelected !== selected) {\n setPrevSelected(selected);\n setInternalSelectedDate(selected);\n }\n\n const selectedDate = useMemo(() => {\n return transformDatePickerDateToDate(internalSelectedDate);\n }, [internalSelectedDate]);\n\n const handleSelect: OnSelectHandler<Date> = (date) => {\n const datePickerDate = transformDateToDatePickerDate(date);\n\n setInternalSelectedDate(datePickerDate);\n onSelect?.(datePickerDate);\n };\n\n return {\n selectedDate,\n handleSelect,\n };\n};\n"],"names":["useSingleDate","selected","onSelect","internalSelectedDate","setInternalSelectedDate","useState","prevSelected","setPrevSelected","useMemo","transformDatePickerDateToDate","date","datePickerDate","transformDateToDatePickerDate"],"mappings":";;AAQO,MAAMA,IAAgB,CAACC,GAA2BC,MAA+C;AACpG,QAAM,CAACC,GAAsBC,CAAuB,IAAIC,EAAqCJ,CAAQ,GAC/F,CAACK,GAAcC,CAAe,IAAIF,EAAqCJ,CAAQ;AAErF,SAAIK,MAAiBL,MACjBM,EAAgBN,CAAQ,GACxBG,EAAwBH,CAAQ,IAc7B;AAAA,IACH,cAZiBO,EAAQ,MAClBC,EAA8BN,CAAoB,GAC1D,CAACA,CAAoB,CAAC;AAAA,IAWrB,cATwC,CAACO,MAAS;AAClD,YAAMC,IAAiBC,EAA8BF,CAAI;AAEzD,MAAAN,EAAwBO,CAAc,GACtCT,KAAA,QAAAA,EAAWS;AAAA,IACf;AAAA,EAII;AAER;"}
@@ -1,14 +1,220 @@
1
- import { createContext as t, useContext as r } from "react";
2
- const e = t({
3
- itemId: "",
4
- dragHandleRef: () => null,
5
- hasHandle: !1
6
- });
7
- e.displayName = "OrderableItemContext";
8
- const a = e.Provider, n = () => r(e);
1
+ import { jsxs as g, jsx as n, Fragment as ue } from "react/jsx-runtime";
2
+ import { IconCaretDown as me } from "@frontify/fondue-icons";
3
+ import * as H from "@radix-ui/react-popover";
4
+ import { useMultipleSelection as K, useCombobox as s } from "downshift";
5
+ import { forwardRef as be, useRef as he, useCallback as fe, useState as ge, useMemo as j } from "react";
6
+ import { LoadingCircle as pe } from "./fondue-components21.js";
7
+ import { useTranslation as Ce } from "./fondue-components42.js";
8
+ import { useBadgeItems as ye } from "./fondue-components131.js";
9
+ import { useFocusRing as Ie } from "./fondue-components132.js";
10
+ import { useSelectData as ve } from "./fondue-components133.js";
11
+ import { useSelectionDescription as Be } from "./fondue-components134.js";
12
+ import c from "./fondue-components125.js";
13
+ import { ClearButton as xe } from "./fondue-components135.js";
14
+ import { CollapsibleBadges as Se } from "./fondue-components136.js";
15
+ import { SelectMenu as we } from "./fondue-components137.js";
16
+ import { ForwardedRefSelectSlot as De } from "./fondue-components95.js";
17
+ import { StatusIcons as Re } from "./fondue-components138.js";
18
+ const z = ({
19
+ children: E,
20
+ selectedItemValues: i,
21
+ onItemSelect: m,
22
+ onClear: $,
23
+ placeholder: x = "",
24
+ status: p = "neutral",
25
+ disabled: b,
26
+ "data-test-id": d = "fondue-select-combobox",
27
+ alignMenu: _ = "start",
28
+ side: q = "bottom",
29
+ id: G,
30
+ viewportCollisionPadding: J = "compact",
31
+ getAsyncItems: C,
32
+ onEscapeKeyDown: Q,
33
+ multiple: o,
34
+ ...a
35
+ }, U) => {
36
+ const h = he(null), W = fe((e) => {
37
+ h.current = e;
38
+ }, []), { t: X } = Ce(), { inputSlots: Y, menuSlots: Z, items: y, filterText: A, clearButton: S, getItemByValue: r, setFilterText: I, asyncItemStatus: w } = ve(E, C), { wasClickedRef: V, onMouseDown: D, onFocus: R, onBlur: ee } = Ie(), { selectionDescriptionId: L, selectionDescription: O } = Be(
39
+ o,
40
+ i,
41
+ r
42
+ ), te = ye(i, r), [ae, k] = ge(!1), M = j(() => i.map((e) => r(e)).filter((e) => e !== void 0 && "value" in e && "label" in e), [i, r]), ne = K(
43
+ o ? {
44
+ selectedItems: M,
45
+ onStateChange({ selectedItems: e, type: l }) {
46
+ if (l === K.stateChangeTypes.SelectedItemKeyDownBackspace) {
47
+ const t = M.find((u) => !(e != null && e.includes(u)));
48
+ t && m(t.value);
49
+ }
50
+ }
51
+ } : { selectedItems: [] }
52
+ ), oe = o ? ne.removeSelectedItem : () => {
53
+ }, {
54
+ getInputProps: f,
55
+ getToggleButtonProps: ie,
56
+ getMenuProps: le,
57
+ getItemProps: re,
58
+ reset: N,
59
+ selectedItem: v,
60
+ isOpen: T,
61
+ highlightedIndex: se,
62
+ inputValue: B
63
+ } = s({
64
+ items: y,
65
+ selectedItem: o ? null : r(i[0]),
66
+ defaultHighlightedIndex: 0,
67
+ toggleButtonId: G,
68
+ // Only set labelId if aria-labelledby is explicitly provided, otherwise downshift generates an orphan ID
69
+ ..."aria-labelledby" in a && a["aria-labelledby"] ? { labelId: a["aria-labelledby"] } : {},
70
+ onSelectedItemChange: ({ selectedItem: e }) => {
71
+ e && m(e.value), o && I("");
72
+ },
73
+ onInputValueChange: ({ inputValue: e }) => {
74
+ I(e);
75
+ },
76
+ onIsOpenChange: () => {
77
+ k(!1), I("");
78
+ },
79
+ onHighlightedIndexChange: () => {
80
+ k(!0);
81
+ },
82
+ itemToString: (e) => e ? e.label : "",
83
+ stateReducer: (e, l) => {
84
+ const { changes: t, type: u } = l;
85
+ if (o)
86
+ switch (u) {
87
+ case s.stateChangeTypes.InputKeyDownEnter:
88
+ case s.stateChangeTypes.ItemClick:
89
+ return {
90
+ ...t,
91
+ isOpen: !0,
92
+ highlightedIndex: e.highlightedIndex,
93
+ inputValue: ""
94
+ };
95
+ case s.stateChangeTypes.InputBlur:
96
+ return {
97
+ ...t,
98
+ inputValue: ""
99
+ };
100
+ }
101
+ else
102
+ switch (u) {
103
+ case s.stateChangeTypes.InputKeyDownEnter:
104
+ case s.stateChangeTypes.ItemClick:
105
+ t.selectedItem && e.selectedItem && t.selectedItem.value === e.selectedItem.value && m(t.selectedItem.value);
106
+ break;
107
+ }
108
+ return t;
109
+ }
110
+ }), F = j(() => o ? !1 : !C && !y.find((e) => e.label.toLowerCase().includes(B.toLowerCase())), [B, y, C, o]) || !!w.error || p === "error", ce = (e, l) => {
111
+ const t = r(e);
112
+ t && (oe(t), m(e), h.current && (h.current.focus(), l && (h.current.dataset.showFocusRing = "false")));
113
+ }, de = () => {
114
+ $(), N();
115
+ }, P = (e) => {
116
+ var l, t;
117
+ ee(e), o || ((v == null ? void 0 : v.label) ?? "").toLocaleLowerCase() !== B.toLocaleLowerCase() && N(), f().onBlur && ((t = (l = f()).onBlur) == null || t.call(l, e));
118
+ };
119
+ return /* @__PURE__ */ g(H.Root, { open: T, children: [
120
+ /* @__PURE__ */ n(H.Anchor, { asChild: !0, children: /* @__PURE__ */ g(
121
+ "div",
122
+ {
123
+ ref: U,
124
+ className: c.root,
125
+ "data-status": F ? "error" : p,
126
+ "data-disabled": b,
127
+ "data-empty": i.length === 0,
128
+ children: [
129
+ o ? /* @__PURE__ */ g(ue, { children: [
130
+ /* @__PURE__ */ n("span", { id: L, className: c.srOnly, children: O }),
131
+ /* @__PURE__ */ n(
132
+ Se,
133
+ {
134
+ items: te,
135
+ onDismiss: ce,
136
+ selectedCount: i.length,
137
+ children: /* @__PURE__ */ n(
138
+ "input",
139
+ {
140
+ ...f({
141
+ ref: W,
142
+ "aria-label": "aria-label" in a ? a["aria-label"] : void 0,
143
+ // Remove auto-generated aria-labelledby if not explicitly provided
144
+ "aria-labelledby": "aria-labelledby" in a && a["aria-labelledby"] ? a["aria-labelledby"] : void 0,
145
+ "aria-describedby": O ? L : void 0
146
+ }),
147
+ "data-test-id": d,
148
+ placeholder: i.length === 0 ? x : "",
149
+ className: c.multiSelectInput,
150
+ disabled: b,
151
+ onMouseDown: D,
152
+ onFocus: R,
153
+ onBlur: P
154
+ }
155
+ )
156
+ }
157
+ )
158
+ ] }) : /* @__PURE__ */ n(
159
+ "input",
160
+ {
161
+ ...f({
162
+ "aria-label": "aria-label" in a ? a["aria-label"] : void 0,
163
+ // Remove auto-generated aria-labelledby if not explicitly provided
164
+ "aria-labelledby": "aria-labelledby" in a && a["aria-labelledby"] ? a["aria-labelledby"] : void 0
165
+ }),
166
+ "data-test-id": d,
167
+ placeholder: x,
168
+ className: c.input,
169
+ disabled: b,
170
+ onMouseDown: D,
171
+ onFocus: R,
172
+ onBlur: P
173
+ }
174
+ ),
175
+ Y,
176
+ S ? /* @__PURE__ */ n(xe, { onClear: de, children: S }) : null,
177
+ w.isLoading && T ? /* @__PURE__ */ n(De, { name: "right", "data-test-id": `${d}-right-slot`, children: /* @__PURE__ */ n(pe, { size: "x-small", "data-test-id": `${d}-loading-circle` }) }) : null,
178
+ /* @__PURE__ */ g("div", { className: c.icons, children: [
179
+ /* @__PURE__ */ n(
180
+ "button",
181
+ {
182
+ "aria-label": X("Select_toggleMenu"),
183
+ ...ie(),
184
+ type: "button",
185
+ disabled: b,
186
+ onMouseDown: () => {
187
+ V.current = !0;
188
+ },
189
+ children: /* @__PURE__ */ n(me, { size: 16, className: c.caret })
190
+ }
191
+ ),
192
+ /* @__PURE__ */ n(Re, { status: p, hasError: F, dataTestId: d })
193
+ ] })
194
+ ]
195
+ }
196
+ ) }),
197
+ /* @__PURE__ */ n(
198
+ we,
199
+ {
200
+ align: _,
201
+ side: q,
202
+ highlightedIndex: se,
203
+ filterText: A,
204
+ getMenuProps: le,
205
+ getItemProps: re,
206
+ selectedItemValues: i,
207
+ hasInteractedSinceOpening: ae,
208
+ viewportCollisionPadding: J,
209
+ onEscapeKeyDown: Q,
210
+ children: Z
211
+ }
212
+ )
213
+ ] });
214
+ };
215
+ z.displayName = "Select.Combobox";
216
+ const Qe = be(z);
9
217
  export {
10
- e as OrderableItemContext,
11
- a as OrderableItemContextProvider,
12
- n as useOrderableItemContext
218
+ Qe as ComboboxBase
13
219
  };
14
220
  //# sourceMappingURL=fondue-components121.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fondue-components121.js","sources":["../src/components/OrderableList/hooks/useOrderedListItemContext.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { createContext, useContext } from 'react';\n\ntype OrderableItemContextType = {\n itemId: string;\n dragHandleRef: (element: Element | null) => void;\n hasHandle: boolean;\n selected?: boolean;\n onSelect?: (isSelected: boolean) => void;\n};\n\nexport const OrderableItemContext = createContext<OrderableItemContextType>({\n itemId: '',\n dragHandleRef: () => null,\n hasHandle: false,\n});\nOrderableItemContext.displayName = 'OrderableItemContext';\n\nexport const OrderableItemContextProvider = OrderableItemContext.Provider;\n\nexport const useOrderableItemContext = (): OrderableItemContextType => useContext(OrderableItemContext);\n"],"names":["OrderableItemContext","createContext","OrderableItemContextProvider","useOrderableItemContext","useContext"],"mappings":";AAYO,MAAMA,IAAuBC,EAAwC;AAAA,EACxE,QAAQ;AAAA,EACR,eAAe,MAAM;AAAA,EACrB,WAAW;AACf,CAAC;AACDD,EAAqB,cAAc;AAE5B,MAAME,IAA+BF,EAAqB,UAEpDG,IAA0B,MAAgCC,EAAWJ,CAAoB;"}
1
+ {"version":3,"file":"fondue-components121.js","sources":["../src/components/Select/components/ComboboxBase.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { IconCaretDown } from '@frontify/fondue-icons';\nimport * as RadixPopover from '@radix-ui/react-popover';\nimport { useCombobox, useMultipleSelection } from 'downshift';\nimport {\n forwardRef,\n useCallback,\n useMemo,\n useRef,\n useState,\n type FocusEvent,\n type ForwardedRef,\n type ReactNode,\n} from 'react';\n\nimport { LoadingCircle } from '#/components/LoadingCircle/LoadingCircle.tsx';\nimport { type CommonAriaProps } from '#/helpers/aria';\nimport { useTranslation } from '#/hooks/useTranslation';\n\nimport { useBadgeItems } from '../hooks/useBadgeItems';\nimport { useFocusRing } from '../hooks/useFocusRing';\nimport { useSelectData, type AsyncItemsFetcher } from '../hooks/useSelectData';\nimport { useSelectionDescription } from '../hooks/useSelectionDescription';\nimport styles from '../styles/select.module.scss';\n\nimport { ClearButton } from './ClearButton';\nimport { CollapsibleBadges } from './CollapsibleBadges';\nimport { SelectMenu, type SelectMenuViewportCollisionPadding } from './SelectMenu';\nimport { ForwardedRefSelectSlot } from './SelectSlot';\nimport { StatusIcons } from './StatusIcons';\n\ntype SelectItem = {\n value: string;\n label: string;\n children?: ReactNode;\n};\n\nexport type ComboboxSharedProps = {\n /**\n * Children of the Combobox component. This can contain the `Select.Slot` components for the label, decorators, clear action and menu\n */\n children?: ReactNode;\n /**\n * The placeholder in the combobox component\n */\n placeholder?: string;\n /**\n * Status of the text input\n * @default \"neutral\"\n */\n status?: 'neutral' | 'success' | 'error';\n /**\n * Disables the combobox component\n */\n disabled?: boolean;\n /**\n * The alignment of the menu\n * @default \"start\"\n */\n alignMenu?: 'start' | 'center' | 'end';\n /**\n * Defines the preferred side of the combobox. It will not be respected if there are collisions with the viewport\n * @default \"bottom\"\n */\n side?: 'left' | 'right' | 'bottom' | 'top';\n /**\n * Id of the combobox component\n */\n id?: string;\n /**\n * The data test id of the combobox component\n */\n 'data-test-id'?: string;\n /**\n * Define the minimum distance between the select menu and the viewport edge\n * @default 'compact'\n */\n viewportCollisionPadding?: SelectMenuViewportCollisionPadding;\n /**\n * Function to fetch items asynchronously\n */\n getAsyncItems?: AsyncItemsFetcher;\n /**\n * Event handler called when the escape key is pressed\n */\n onEscapeKeyDown?: (event: KeyboardEvent) => void;\n} & CommonAriaProps;\n\ntype ComboboxBaseProps = ComboboxSharedProps & {\n /**\n * The currently selected item values\n */\n selectedItemValues: string[];\n /**\n * Callback fired when an item is selected or deselected\n */\n onItemSelect: (value?: string) => void;\n /**\n * Callback fired when the selection is cleared\n */\n onClear: () => void;\n /**\n * Whether the combobox allows multiple selections\n */\n multiple: boolean;\n};\n\nconst ComboboxBaseInput = (\n {\n children,\n selectedItemValues,\n onItemSelect,\n onClear,\n placeholder = '',\n status = 'neutral',\n disabled,\n 'data-test-id': dataTestId = 'fondue-select-combobox',\n alignMenu = 'start',\n side = 'bottom',\n id,\n viewportCollisionPadding = 'compact',\n getAsyncItems,\n onEscapeKeyDown,\n multiple,\n ...props\n }: ComboboxBaseProps,\n forwardedRef: ForwardedRef<HTMLDivElement>,\n): ReactNode => {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const inputCallbackRef = useCallback((node: HTMLInputElement | null): void => {\n inputRef.current = node;\n }, []);\n const { t } = useTranslation();\n const { inputSlots, menuSlots, items, filterText, clearButton, getItemByValue, setFilterText, asyncItemStatus } =\n useSelectData(children, getAsyncItems);\n const { wasClickedRef, onMouseDown, onFocus, onBlur } = useFocusRing();\n const { selectionDescriptionId, selectionDescription } = useSelectionDescription(\n multiple,\n selectedItemValues,\n getItemByValue,\n );\n const badgeItems = useBadgeItems(selectedItemValues, getItemByValue);\n\n const [hasInteractedSinceOpening, setHasInteractedSinceOpening] = useState(false);\n\n const selectedItems = useMemo((): SelectItem[] => {\n return selectedItemValues\n .map((value) => getItemByValue(value))\n .filter((item): item is SelectItem => item !== undefined && 'value' in item && 'label' in item);\n }, [selectedItemValues, getItemByValue]);\n\n const multipleSelectionResult = useMultipleSelection<SelectItem>(\n multiple\n ? {\n selectedItems,\n onStateChange({ selectedItems: newSelectedItems, type }) {\n if (type === useMultipleSelection.stateChangeTypes.SelectedItemKeyDownBackspace) {\n const removedItem = selectedItems.find((item) => !newSelectedItems?.includes(item));\n if (removedItem) {\n onItemSelect(removedItem.value);\n }\n }\n },\n }\n : { selectedItems: [] },\n );\n const removeSelectedItem = multiple ? multipleSelectionResult.removeSelectedItem : (): void => {};\n\n const {\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n reset,\n selectedItem,\n isOpen,\n highlightedIndex,\n inputValue,\n } = useCombobox<SelectItem>({\n items,\n selectedItem: multiple ? null : (getItemByValue(selectedItemValues[0]) as SelectItem | null | undefined),\n defaultHighlightedIndex: 0,\n toggleButtonId: id,\n // Only set labelId if aria-labelledby is explicitly provided, otherwise downshift generates an orphan ID\n ...('aria-labelledby' in props && props['aria-labelledby'] ? { labelId: props['aria-labelledby'] } : {}),\n onSelectedItemChange: ({ selectedItem }) => {\n if (selectedItem) {\n onItemSelect(selectedItem.value);\n }\n if (multiple) {\n setFilterText('');\n }\n },\n onInputValueChange: ({ inputValue }) => {\n setFilterText(inputValue);\n },\n onIsOpenChange: () => {\n setHasInteractedSinceOpening(false);\n setFilterText('');\n },\n onHighlightedIndexChange: () => {\n setHasInteractedSinceOpening(true);\n },\n itemToString: (item) => (item ? item.label : ''),\n stateReducer: (state, actionAndChanges) => {\n const { changes, type } = actionAndChanges;\n if (multiple) {\n switch (type) {\n case useCombobox.stateChangeTypes.InputKeyDownEnter:\n case useCombobox.stateChangeTypes.ItemClick:\n return {\n ...changes,\n isOpen: true,\n highlightedIndex: state.highlightedIndex,\n inputValue: '',\n };\n case useCombobox.stateChangeTypes.InputBlur:\n // Select item on blur (Tab key) but clear the input\n return {\n ...changes,\n inputValue: '',\n };\n }\n } else {\n // For single select, handle re-selection of the same item\n // onSelectedItemChange doesn't fire when selecting the same item, so we call onItemSelect here\n switch (type) {\n case useCombobox.stateChangeTypes.InputKeyDownEnter:\n case useCombobox.stateChangeTypes.ItemClick:\n if (\n changes.selectedItem &&\n state.selectedItem &&\n changes.selectedItem.value === state.selectedItem.value\n ) {\n onItemSelect(changes.selectedItem.value);\n }\n break;\n }\n }\n return changes;\n },\n });\n\n const valueInvalid = useMemo(() => {\n if (multiple) {\n return false;\n }\n return !getAsyncItems && !items.find((item) => item.label.toLowerCase().includes(inputValue.toLowerCase()));\n }, [inputValue, items, getAsyncItems, multiple]);\n\n const hasError = valueInvalid || !!asyncItemStatus.error || status === 'error';\n\n const handleDismissBadge = (value: string, preventFocusRing: boolean): void => {\n const item = getItemByValue(value) as SelectItem | undefined;\n if (item) {\n removeSelectedItem(item);\n onItemSelect(value);\n if (inputRef.current) {\n inputRef.current.focus();\n if (preventFocusRing) {\n inputRef.current.dataset.showFocusRing = 'false';\n }\n }\n }\n };\n\n const handleClear = (): void => {\n onClear();\n reset();\n };\n\n const handleBlur = (blurEvent: FocusEvent<HTMLInputElement, Element>): void => {\n onBlur(blurEvent);\n\n if (!multiple) {\n const selectedItemLabel = selectedItem?.label ?? '';\n const isOutdated = selectedItemLabel.toLocaleLowerCase() !== inputValue.toLocaleLowerCase();\n\n if (isOutdated) {\n reset();\n }\n }\n\n if (getInputProps().onBlur) {\n getInputProps().onBlur?.(blurEvent);\n }\n };\n\n return (\n <RadixPopover.Root open={isOpen}>\n <RadixPopover.Anchor asChild>\n <div\n ref={forwardedRef}\n className={styles.root}\n data-status={hasError ? 'error' : status}\n data-disabled={disabled}\n data-empty={selectedItemValues.length === 0}\n >\n {multiple ? (\n <>\n {/* Hidden description for screen readers - announced on focus */}\n <span id={selectionDescriptionId} className={styles.srOnly}>\n {selectionDescription}\n </span>\n <CollapsibleBadges\n items={badgeItems}\n onDismiss={handleDismissBadge}\n selectedCount={selectedItemValues.length}\n >\n <input\n // eslint-disable-next-line react-hooks/refs\n {...getInputProps({\n ref: inputCallbackRef,\n 'aria-label': 'aria-label' in props ? props['aria-label'] : undefined,\n // Remove auto-generated aria-labelledby if not explicitly provided\n 'aria-labelledby':\n 'aria-labelledby' in props && props['aria-labelledby']\n ? props['aria-labelledby']\n : undefined,\n 'aria-describedby': selectionDescription ? selectionDescriptionId : undefined,\n })}\n data-test-id={dataTestId}\n placeholder={selectedItemValues.length === 0 ? placeholder : ''}\n className={styles.multiSelectInput}\n disabled={disabled}\n onMouseDown={onMouseDown}\n onFocus={onFocus}\n onBlur={handleBlur}\n />\n </CollapsibleBadges>\n </>\n ) : (\n <input\n {...getInputProps({\n 'aria-label': 'aria-label' in props ? props['aria-label'] : undefined,\n // Remove auto-generated aria-labelledby if not explicitly provided\n 'aria-labelledby':\n 'aria-labelledby' in props && props['aria-labelledby']\n ? props['aria-labelledby']\n : undefined,\n })}\n data-test-id={dataTestId}\n placeholder={placeholder}\n className={styles.input}\n disabled={disabled}\n onMouseDown={onMouseDown}\n onFocus={onFocus}\n onBlur={handleBlur}\n />\n )}\n {inputSlots}\n {clearButton ? <ClearButton onClear={handleClear}>{clearButton}</ClearButton> : null}\n {asyncItemStatus.isLoading && isOpen ? (\n <ForwardedRefSelectSlot name=\"right\" data-test-id={`${dataTestId}-right-slot`}>\n <LoadingCircle size=\"x-small\" data-test-id={`${dataTestId}-loading-circle`} />\n </ForwardedRefSelectSlot>\n ) : null}\n <div className={styles.icons}>\n <button\n aria-label={t('Select_toggleMenu')}\n {...getToggleButtonProps()}\n type=\"button\"\n disabled={disabled}\n onMouseDown={() => {\n wasClickedRef.current = true;\n }}\n >\n <IconCaretDown size={16} className={styles.caret} />\n </button>\n <StatusIcons status={status} hasError={hasError} dataTestId={dataTestId} />\n </div>\n </div>\n </RadixPopover.Anchor>\n\n <SelectMenu\n align={alignMenu}\n side={side}\n highlightedIndex={highlightedIndex}\n filterText={filterText}\n getMenuProps={getMenuProps}\n getItemProps={getItemProps}\n selectedItemValues={selectedItemValues}\n hasInteractedSinceOpening={hasInteractedSinceOpening}\n viewportCollisionPadding={viewportCollisionPadding}\n onEscapeKeyDown={onEscapeKeyDown}\n >\n {menuSlots}\n </SelectMenu>\n </RadixPopover.Root>\n );\n};\nComboboxBaseInput.displayName = 'Select.Combobox';\n\nexport const ComboboxBase = forwardRef<HTMLDivElement, ComboboxBaseProps>(ComboboxBaseInput);\n"],"names":["ComboboxBaseInput","children","selectedItemValues","onItemSelect","onClear","placeholder","status","disabled","dataTestId","alignMenu","side","id","viewportCollisionPadding","getAsyncItems","onEscapeKeyDown","multiple","props","forwardedRef","inputRef","useRef","inputCallbackRef","useCallback","node","t","useTranslation","inputSlots","menuSlots","items","filterText","clearButton","getItemByValue","setFilterText","asyncItemStatus","useSelectData","wasClickedRef","onMouseDown","onFocus","onBlur","useFocusRing","selectionDescriptionId","selectionDescription","useSelectionDescription","badgeItems","useBadgeItems","hasInteractedSinceOpening","setHasInteractedSinceOpening","useState","selectedItems","useMemo","value","item","multipleSelectionResult","useMultipleSelection","newSelectedItems","type","removedItem","removeSelectedItem","getInputProps","getToggleButtonProps","getMenuProps","getItemProps","reset","selectedItem","isOpen","highlightedIndex","inputValue","useCombobox","state","actionAndChanges","changes","hasError","handleDismissBadge","preventFocusRing","handleClear","handleBlur","blurEvent","_b","_a","jsxs","RadixPopover","jsx","styles","Fragment","CollapsibleBadges","ClearButton","ForwardedRefSelectSlot","LoadingCircle","IconCaretDown","StatusIcons","SelectMenu","ComboboxBase","forwardRef"],"mappings":"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"}