@salt-ds/lab 1.0.0-alpha.52 → 1.0.0-alpha.53
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/css/salt-lab.css +279 -38
- package/dist-cjs/breadcrumbs/internal/BreadcrumbsCollapsed.js +3 -2
- package/dist-cjs/breadcrumbs/internal/BreadcrumbsCollapsed.js.map +1 -1
- package/dist-cjs/calendar/Calendar.js +55 -26
- package/dist-cjs/calendar/Calendar.js.map +1 -1
- package/dist-cjs/calendar/CalendarDateGrid.css.js +6 -0
- package/dist-cjs/calendar/CalendarDateGrid.css.js.map +1 -0
- package/dist-cjs/calendar/{internal/CalendarCarousel.js → CalendarDateGrid.js} +37 -14
- package/dist-cjs/calendar/CalendarDateGrid.js.map +1 -0
- package/dist-cjs/calendar/CalendarNavigation.js +7 -5
- package/dist-cjs/calendar/CalendarNavigation.js.map +1 -1
- package/dist-cjs/calendar/{internal/CalendarWeekHeader.js → CalendarWeekHeader.js} +4 -3
- package/dist-cjs/calendar/CalendarWeekHeader.js.map +1 -0
- package/dist-cjs/calendar/internal/CalendarDay.css.js +1 -1
- package/dist-cjs/calendar/internal/CalendarMonth.js.map +1 -1
- package/dist-cjs/calendar/useCalendar.js +2 -4
- package/dist-cjs/calendar/useCalendar.js.map +1 -1
- package/dist-cjs/calendar/useCalendarSelection.js +16 -43
- package/dist-cjs/calendar/useCalendarSelection.js.map +1 -1
- package/dist-cjs/carousel/Carousel.js +5 -5
- package/dist-cjs/carousel/Carousel.js.map +1 -1
- package/dist-cjs/cascading-menu/CascadingMenuItem.js +2 -2
- package/dist-cjs/cascading-menu/CascadingMenuItem.js.map +1 -1
- package/dist-cjs/contact-details/ContactMetadata.js +2 -2
- package/dist-cjs/contact-details/ContactMetadata.js.map +1 -1
- package/dist-cjs/date-input/DateInputRange.js +2 -0
- package/dist-cjs/date-input/DateInputRange.js.map +1 -1
- package/dist-cjs/date-input/DateInputSingle.js +2 -0
- package/dist-cjs/date-input/DateInputSingle.js.map +1 -1
- package/dist-cjs/date-picker/DatePicker.js +40 -5
- package/dist-cjs/date-picker/DatePicker.js.map +1 -1
- package/dist-cjs/date-picker/DatePickerActions.js +7 -3
- package/dist-cjs/date-picker/DatePickerActions.js.map +1 -1
- package/dist-cjs/date-picker/DatePickerRangeInput.js +5 -4
- package/dist-cjs/date-picker/DatePickerRangeInput.js.map +1 -1
- package/dist-cjs/date-picker/DatePickerRangePanel.js +33 -9
- package/dist-cjs/date-picker/DatePickerRangePanel.js.map +1 -1
- package/dist-cjs/date-picker/DatePickerSingleInput.js +5 -4
- package/dist-cjs/date-picker/DatePickerSingleInput.js.map +1 -1
- package/dist-cjs/date-picker/DatePickerSinglePanel.js +19 -5
- package/dist-cjs/date-picker/DatePickerSinglePanel.js.map +1 -1
- package/dist-cjs/date-picker/useDatePicker.js +91 -63
- package/dist-cjs/date-picker/useDatePicker.js.map +1 -1
- package/dist-cjs/dropdown/DropdownButton.js +4 -2
- package/dist-cjs/dropdown/DropdownButton.js.map +1 -1
- package/dist-cjs/index.js +10 -0
- package/dist-cjs/index.js.map +1 -1
- package/dist-cjs/menu-button/MenuButtonTrigger.js +2 -2
- package/dist-cjs/menu-button/MenuButtonTrigger.js.map +1 -1
- package/dist-cjs/query-input/internal/CategoryListItem.js +2 -2
- package/dist-cjs/query-input/internal/CategoryListItem.js.map +1 -1
- package/dist-cjs/query-input/internal/ValueList.js +2 -2
- package/dist-cjs/query-input/internal/ValueList.js.map +1 -1
- package/dist-cjs/search-input/SearchInput.js +2 -1
- package/dist-cjs/search-input/SearchInput.js.map +1 -1
- package/dist-cjs/static-list/StaticList.css.js +6 -0
- package/dist-cjs/static-list/StaticList.css.js.map +1 -0
- package/dist-cjs/static-list/StaticList.js +32 -0
- package/dist-cjs/static-list/StaticList.js.map +1 -0
- package/dist-cjs/static-list/StaticListItem.css.js +6 -0
- package/dist-cjs/static-list/StaticListItem.css.js.map +1 -0
- package/dist-cjs/static-list/StaticListItem.js +33 -0
- package/dist-cjs/static-list/StaticListItem.js.map +1 -0
- package/dist-cjs/static-list/StaticListItemContent.css.js +6 -0
- package/dist-cjs/static-list/StaticListItemContent.css.js.map +1 -0
- package/dist-cjs/static-list/StaticListItemContent.js +30 -0
- package/dist-cjs/static-list/StaticListItemContent.js.map +1 -0
- package/dist-cjs/stepped-tracker/TrackerStep/TrackerStep.js +8 -8
- package/dist-cjs/stepped-tracker/TrackerStep/TrackerStep.js.map +1 -1
- package/dist-cjs/stepper-input/StepperInput.css.js +1 -1
- package/dist-cjs/stepper-input/StepperInput.js +214 -29
- package/dist-cjs/stepper-input/StepperInput.js.map +1 -1
- package/dist-cjs/stepper-input/internal/useActivateWhileMouseDown.js +54 -0
- package/dist-cjs/stepper-input/internal/useActivateWhileMouseDown.js.map +1 -0
- package/dist-cjs/stepper-input/internal/utils.js +43 -0
- package/dist-cjs/stepper-input/internal/utils.js.map +1 -0
- package/dist-cjs/stepper-input/useStepperInput.js +88 -172
- package/dist-cjs/stepper-input/useStepperInput.js.map +1 -1
- package/dist-cjs/tabs/Tab.js +14 -12
- package/dist-cjs/tabs/Tab.js.map +1 -1
- package/dist-cjs/tabs/Tabstrip.js +2 -1
- package/dist-cjs/tabs/Tabstrip.js.map +1 -1
- package/dist-cjs/tabs-next/OverflowMenu.js +2 -2
- package/dist-cjs/tabs-next/OverflowMenu.js.map +1 -1
- package/dist-cjs/tokenized-input/TokenizedInputBase.js +3 -3
- package/dist-cjs/tokenized-input/TokenizedInputBase.js.map +1 -1
- package/dist-cjs/tokenized-input/internal/InputPill.js +2 -2
- package/dist-cjs/tokenized-input/internal/InputPill.js.map +1 -1
- package/dist-cjs/tokenized-input-next/TokenizedInputNext.js +3 -3
- package/dist-cjs/tokenized-input-next/TokenizedInputNext.js.map +1 -1
- package/dist-cjs/tokenized-input-next/internal/InputPill.js +2 -2
- package/dist-cjs/tokenized-input-next/internal/InputPill.js.map +1 -1
- package/dist-cjs/toolbar/overflow-panel/OverflowPanel.js +2 -2
- package/dist-cjs/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
- package/dist-es/breadcrumbs/internal/BreadcrumbsCollapsed.js +3 -2
- package/dist-es/breadcrumbs/internal/BreadcrumbsCollapsed.js.map +1 -1
- package/dist-es/calendar/Calendar.js +57 -28
- package/dist-es/calendar/Calendar.js.map +1 -1
- package/dist-es/calendar/CalendarDateGrid.css.js +4 -0
- package/dist-es/calendar/CalendarDateGrid.css.js.map +1 -0
- package/dist-es/calendar/{internal/CalendarCarousel.js → CalendarDateGrid.js} +37 -14
- package/dist-es/calendar/CalendarDateGrid.js.map +1 -0
- package/dist-es/calendar/CalendarNavigation.js +8 -6
- package/dist-es/calendar/CalendarNavigation.js.map +1 -1
- package/dist-es/calendar/{internal/CalendarWeekHeader.js → CalendarWeekHeader.js} +4 -3
- package/dist-es/calendar/CalendarWeekHeader.js.map +1 -0
- package/dist-es/calendar/internal/CalendarDay.css.js +1 -1
- package/dist-es/calendar/internal/CalendarMonth.js.map +1 -1
- package/dist-es/calendar/useCalendar.js +2 -4
- package/dist-es/calendar/useCalendar.js.map +1 -1
- package/dist-es/calendar/useCalendarSelection.js +16 -43
- package/dist-es/calendar/useCalendarSelection.js.map +1 -1
- package/dist-es/carousel/Carousel.js +6 -6
- package/dist-es/carousel/Carousel.js.map +1 -1
- package/dist-es/cascading-menu/CascadingMenuItem.js +3 -3
- package/dist-es/cascading-menu/CascadingMenuItem.js.map +1 -1
- package/dist-es/contact-details/ContactMetadata.js +3 -3
- package/dist-es/contact-details/ContactMetadata.js.map +1 -1
- package/dist-es/date-input/DateInputRange.js +2 -0
- package/dist-es/date-input/DateInputRange.js.map +1 -1
- package/dist-es/date-input/DateInputSingle.js +2 -0
- package/dist-es/date-input/DateInputSingle.js.map +1 -1
- package/dist-es/date-picker/DatePicker.js +40 -5
- package/dist-es/date-picker/DatePicker.js.map +1 -1
- package/dist-es/date-picker/DatePickerActions.js +7 -3
- package/dist-es/date-picker/DatePickerActions.js.map +1 -1
- package/dist-es/date-picker/DatePickerRangeInput.js +5 -4
- package/dist-es/date-picker/DatePickerRangeInput.js.map +1 -1
- package/dist-es/date-picker/DatePickerRangePanel.js +33 -9
- package/dist-es/date-picker/DatePickerRangePanel.js.map +1 -1
- package/dist-es/date-picker/DatePickerSingleInput.js +5 -4
- package/dist-es/date-picker/DatePickerSingleInput.js.map +1 -1
- package/dist-es/date-picker/DatePickerSinglePanel.js +19 -5
- package/dist-es/date-picker/DatePickerSinglePanel.js.map +1 -1
- package/dist-es/date-picker/useDatePicker.js +92 -64
- package/dist-es/date-picker/useDatePicker.js.map +1 -1
- package/dist-es/dropdown/DropdownButton.js +6 -4
- package/dist-es/dropdown/DropdownButton.js.map +1 -1
- package/dist-es/index.js +5 -0
- package/dist-es/index.js.map +1 -1
- package/dist-es/menu-button/MenuButtonTrigger.js +3 -3
- package/dist-es/menu-button/MenuButtonTrigger.js.map +1 -1
- package/dist-es/query-input/internal/CategoryListItem.js +3 -3
- package/dist-es/query-input/internal/CategoryListItem.js.map +1 -1
- package/dist-es/query-input/internal/ValueList.js +3 -3
- package/dist-es/query-input/internal/ValueList.js.map +1 -1
- package/dist-es/search-input/SearchInput.js +3 -2
- package/dist-es/search-input/SearchInput.js.map +1 -1
- package/dist-es/static-list/StaticList.css.js +4 -0
- package/dist-es/static-list/StaticList.css.js.map +1 -0
- package/dist-es/static-list/StaticList.js +28 -0
- package/dist-es/static-list/StaticList.js.map +1 -0
- package/dist-es/static-list/StaticListItem.css.js +4 -0
- package/dist-es/static-list/StaticListItem.css.js.map +1 -0
- package/dist-es/static-list/StaticListItem.js +29 -0
- package/dist-es/static-list/StaticListItem.js.map +1 -0
- package/dist-es/static-list/StaticListItemContent.css.js +4 -0
- package/dist-es/static-list/StaticListItemContent.css.js.map +1 -0
- package/dist-es/static-list/StaticListItemContent.js +26 -0
- package/dist-es/static-list/StaticListItemContent.js.map +1 -0
- package/dist-es/stepped-tracker/TrackerStep/TrackerStep.js +9 -9
- package/dist-es/stepped-tracker/TrackerStep/TrackerStep.js.map +1 -1
- package/dist-es/stepper-input/StepperInput.css.js +1 -1
- package/dist-es/stepper-input/StepperInput.js +216 -31
- package/dist-es/stepper-input/StepperInput.js.map +1 -1
- package/dist-es/stepper-input/internal/useActivateWhileMouseDown.js +50 -0
- package/dist-es/stepper-input/internal/useActivateWhileMouseDown.js.map +1 -0
- package/dist-es/stepper-input/internal/utils.js +32 -0
- package/dist-es/stepper-input/internal/utils.js.map +1 -0
- package/dist-es/stepper-input/useStepperInput.js +88 -172
- package/dist-es/stepper-input/useStepperInput.js.map +1 -1
- package/dist-es/tabs/Tab.js +15 -13
- package/dist-es/tabs/Tab.js.map +1 -1
- package/dist-es/tabs/Tabstrip.js +4 -3
- package/dist-es/tabs/Tabstrip.js.map +1 -1
- package/dist-es/tabs-next/OverflowMenu.js +3 -3
- package/dist-es/tabs-next/OverflowMenu.js.map +1 -1
- package/dist-es/tokenized-input/TokenizedInputBase.js +3 -3
- package/dist-es/tokenized-input/TokenizedInputBase.js.map +1 -1
- package/dist-es/tokenized-input/internal/InputPill.js +2 -2
- package/dist-es/tokenized-input/internal/InputPill.js.map +1 -1
- package/dist-es/tokenized-input-next/TokenizedInputNext.js +3 -3
- package/dist-es/tokenized-input-next/TokenizedInputNext.js.map +1 -1
- package/dist-es/tokenized-input-next/internal/InputPill.js +2 -2
- package/dist-es/tokenized-input-next/internal/InputPill.js.map +1 -1
- package/dist-es/toolbar/overflow-panel/OverflowPanel.js +3 -3
- package/dist-es/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
- package/dist-types/calendar/Calendar.d.ts +2 -15
- package/dist-types/calendar/CalendarDateGrid.d.ts +10 -0
- package/dist-types/calendar/{internal/CalendarWeekHeader.d.ts → CalendarWeekHeader.d.ts} +1 -1
- package/dist-types/calendar/index.d.ts +2 -0
- package/dist-types/calendar/internal/CalendarMonth.d.ts +9 -1
- package/dist-types/calendar/useCalendarSelection.d.ts +0 -7
- package/dist-types/date-picker/DatePickerRangePanel.d.ts +17 -1
- package/dist-types/date-picker/DatePickerSinglePanel.d.ts +9 -1
- package/dist-types/index.d.ts +1 -0
- package/dist-types/static-list/StaticList.d.ts +8 -0
- package/dist-types/static-list/StaticListItem.d.ts +4 -0
- package/dist-types/static-list/StaticListItemContent.d.ts +8 -0
- package/dist-types/static-list/index.d.ts +3 -0
- package/dist-types/stepper-input/StepperInput.d.ts +66 -19
- package/dist-types/stepper-input/internal/useActivateWhileMouseDown.d.ts +5 -0
- package/dist-types/stepper-input/internal/utils.d.ts +8 -0
- package/dist-types/stepper-input/useStepperInput.d.ts +21 -8
- package/package.json +2 -2
- package/dist-cjs/calendar/internal/CalendarCarousel.css.js +0 -6
- package/dist-cjs/calendar/internal/CalendarCarousel.css.js.map +0 -1
- package/dist-cjs/calendar/internal/CalendarCarousel.js.map +0 -1
- package/dist-cjs/calendar/internal/CalendarWeekHeader.js.map +0 -1
- package/dist-cjs/stepper-input/internal/useSpinner.js +0 -33
- package/dist-cjs/stepper-input/internal/useSpinner.js.map +0 -1
- package/dist-es/calendar/internal/CalendarCarousel.css.js +0 -4
- package/dist-es/calendar/internal/CalendarCarousel.css.js.map +0 -1
- package/dist-es/calendar/internal/CalendarCarousel.js.map +0 -1
- package/dist-es/calendar/internal/CalendarWeekHeader.js.map +0 -1
- package/dist-es/stepper-input/internal/useSpinner.js +0 -29
- package/dist-es/stepper-input/internal/useSpinner.js.map +0 -1
- package/dist-types/calendar/internal/CalendarCarousel.d.ts +0 -3
- package/dist-types/stepper-input/internal/useSpinner.d.ts +0 -5
- /package/dist-cjs/calendar/{internal/CalendarWeekHeader.css.js → CalendarWeekHeader.css.js} +0 -0
- /package/dist-cjs/calendar/{internal/CalendarWeekHeader.css.js.map → CalendarWeekHeader.css.js.map} +0 -0
- /package/dist-es/calendar/{internal/CalendarWeekHeader.css.js → CalendarWeekHeader.css.js} +0 -0
- /package/dist-es/calendar/{internal/CalendarWeekHeader.css.js.map → CalendarWeekHeader.css.js.map} +0 -0
|
@@ -11,6 +11,8 @@ var clsx = require('clsx');
|
|
|
11
11
|
var react = require('react');
|
|
12
12
|
var Calendar = require('../calendar/Calendar.js');
|
|
13
13
|
var CalendarNavigation = require('../calendar/CalendarNavigation.js');
|
|
14
|
+
var CalendarWeekHeader = require('../calendar/CalendarWeekHeader.js');
|
|
15
|
+
var CalendarDateGrid = require('../calendar/CalendarDateGrid.js');
|
|
14
16
|
require('../calendar/internal/CalendarContext.js');
|
|
15
17
|
var formatDate = require('../calendar/formatDate.js');
|
|
16
18
|
require('../calendar/useCalendarSelection.js');
|
|
@@ -31,13 +33,16 @@ const withBaseName = core.makePrefixer("saltDatePickerPanel");
|
|
|
31
33
|
const DatePickerSinglePanel = react.forwardRef(function DatePickerSinglePanel2(props, ref) {
|
|
32
34
|
const {
|
|
33
35
|
CalendarProps,
|
|
36
|
+
CalendarWeekHeaderProps,
|
|
34
37
|
CalendarNavigationProps,
|
|
38
|
+
CalendarDataGridProps,
|
|
35
39
|
className,
|
|
36
40
|
defaultVisibleMonth,
|
|
37
41
|
visibleMonth: visibleMonthProp,
|
|
38
42
|
onVisibleMonthChange,
|
|
39
43
|
helperText,
|
|
40
|
-
onSelect
|
|
44
|
+
onSelect,
|
|
45
|
+
...rest
|
|
41
46
|
} = props;
|
|
42
47
|
const targetWindow = window.useWindow();
|
|
43
48
|
styles.useComponentCssInjection({
|
|
@@ -110,6 +115,7 @@ const DatePickerSinglePanel = react.forwardRef(function DatePickerSinglePanel2(p
|
|
|
110
115
|
gap: 0,
|
|
111
116
|
className: clsx__default["default"](className, withBaseName("container")),
|
|
112
117
|
ref,
|
|
118
|
+
...rest,
|
|
113
119
|
children: [
|
|
114
120
|
helperText && /* @__PURE__ */ jsxRuntime.jsx(core.FlexItem, {
|
|
115
121
|
className: withBaseName("header"),
|
|
@@ -121,12 +127,20 @@ const DatePickerSinglePanel = react.forwardRef(function DatePickerSinglePanel2(p
|
|
|
121
127
|
gap: 0,
|
|
122
128
|
children: /* @__PURE__ */ jsxRuntime.jsx(core.FormFieldContext.Provider, {
|
|
123
129
|
value: {},
|
|
124
|
-
children: /* @__PURE__ */ jsxRuntime.
|
|
130
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(Calendar.Calendar, {
|
|
125
131
|
selectionVariant: "single",
|
|
126
132
|
...baseCalendarProps,
|
|
127
|
-
children:
|
|
128
|
-
|
|
129
|
-
|
|
133
|
+
children: [
|
|
134
|
+
/* @__PURE__ */ jsxRuntime.jsx(CalendarNavigation.CalendarNavigation, {
|
|
135
|
+
...CalendarNavigationProps
|
|
136
|
+
}),
|
|
137
|
+
/* @__PURE__ */ jsxRuntime.jsx(CalendarWeekHeader.CalendarWeekHeader, {
|
|
138
|
+
...CalendarWeekHeaderProps
|
|
139
|
+
}),
|
|
140
|
+
/* @__PURE__ */ jsxRuntime.jsx(CalendarDateGrid.CalendarDateGrid, {
|
|
141
|
+
...CalendarDataGridProps
|
|
142
|
+
})
|
|
143
|
+
]
|
|
130
144
|
})
|
|
131
145
|
})
|
|
132
146
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePickerSinglePanel.js","sources":["../src/date-picker/DatePickerSinglePanel.tsx"],"sourcesContent":["import {\n type DateValue,\n getLocalTimeZone,\n startOfMonth,\n today,\n} from \"@internationalized/date\";\nimport {\n FlexItem,\n FlexLayout,\n FormFieldContext,\n type FormFieldContextValue,\n FormFieldHelperText,\n StackLayout,\n makePrefixer,\n useControlled,\n} from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport clsx from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type SyntheticEvent,\n forwardRef,\n useCallback,\n useState,\n} from \"react\";\nimport {\n CalendarNavigation,\n type CalendarNavigationProps,\n type CalendarSingleProps,\n getCurrentLocale,\n} from \"../calendar\";\nimport { Calendar, type SingleDateSelection } from \"../calendar\";\nimport datePickerPanelCss from \"./DatePickerPanel.css\";\nimport { useDatePickerContext } from \"./index\";\n\n/**\n * Props for the DatePickerSinglePanel component.\n * @template T - The type of the selected date.\n */\nexport interface DatePickerSinglePanelProps<T>\n extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * Callback fired when a date is selected.\n * @param event - The synthetic event.\n * @param selectedDate - The selected date or null.\n */\n onSelect?: (event: SyntheticEvent, selectedDate?: T | null) => void;\n\n /**\n * Helper text to be displayed below the date picker.\n */\n helperText?: string;\n\n /**\n * The currently visible month.\n */\n visibleMonth?: DateValue;\n\n /**\n * The default visible month.\n */\n defaultVisibleMonth?: DateValue;\n\n /**\n * Callback fired when the visible month changes.\n * @param event - The synthetic event.\n * @param visibleMonth - The new visible month.\n */\n onVisibleMonthChange?: (\n event: SyntheticEvent,\n visibleMonth: DateValue,\n ) => void;\n\n /**\n * Props to be passed to the Calendar component.\n */\n CalendarProps?: Partial<\n Omit<\n CalendarSingleProps,\n | \"selectionVariant\"\n | \"selectedDate\"\n | \"defaultSelectedDate\"\n | \"onSelectedDateChange\"\n | \"onVisibleMonthChange\"\n >\n >;\n\n /**\n * Props to be passed to the CalendarNavigation component.\n */\n CalendarNavigationProps?: CalendarNavigationProps;\n}\n\nconst withBaseName = makePrefixer(\"saltDatePickerPanel\");\n\nexport const DatePickerSinglePanel = forwardRef<\n HTMLDivElement,\n DatePickerSinglePanelProps<SingleDateSelection>\n>(function DatePickerSinglePanel(props, ref) {\n const {\n CalendarProps,\n CalendarNavigationProps,\n className,\n defaultVisibleMonth,\n visibleMonth: visibleMonthProp,\n onVisibleMonthChange,\n helperText,\n onSelect,\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-date-picker-single-panel\",\n css: datePickerPanelCss,\n window: targetWindow,\n });\n\n const {\n state: {\n selectedDate,\n timeZone = getLocalTimeZone(),\n minDate = startOfMonth(today(timeZone)),\n maxDate = minDate.add({ months: 1 }),\n locale = getCurrentLocale(),\n },\n helpers: { setSelectedDate },\n } = useDatePickerContext({ selectionVariant: \"single\" });\n\n const [hoveredDate, setHoveredDate] = useState<DateValue | null>(null);\n\n const [uncontrolledDefaultVisibleMonth] = useState(\n () => defaultVisibleMonth || startOfMonth(selectedDate || today(timeZone)),\n );\n const [visibleMonth, setVisibleMonth] = useControlled({\n controlled: visibleMonthProp,\n default: uncontrolledDefaultVisibleMonth,\n name: \"DatePickerSinglePanel\",\n state: \"visibleMonth\",\n });\n\n const handleSelectedDateChange = useCallback(\n (event: SyntheticEvent, newDate: SingleDateSelection | null) => {\n setSelectedDate(newDate, false);\n onSelect?.(event, newDate);\n },\n [setSelectedDate, onSelect],\n );\n\n const handleHoveredDateChange = useCallback(\n (event: SyntheticEvent, newHoveredDate: SingleDateSelection | null) => {\n setHoveredDate(newHoveredDate);\n if (newHoveredDate && CalendarProps?.onHoveredDateChange) {\n CalendarProps.onHoveredDateChange(event, newHoveredDate);\n }\n },\n [CalendarProps?.onHoveredDateChange],\n );\n\n const handleVisibleMonthChange = useCallback(\n (event: SyntheticEvent, newVisibleMonth: DateValue) => {\n setVisibleMonth(newVisibleMonth);\n if (onVisibleMonthChange) {\n onVisibleMonthChange(event, newVisibleMonth);\n }\n },\n [onVisibleMonthChange],\n );\n\n const baseCalendarProps: Partial<CalendarSingleProps> = {\n selectionVariant: \"single\",\n visibleMonth,\n hoveredDate,\n onHoveredDateChange: handleHoveredDateChange,\n onVisibleMonthChange: handleVisibleMonthChange,\n onSelectedDateChange: handleSelectedDateChange,\n hideOutOfRangeDates: true,\n selectedDate,\n minDate,\n maxDate,\n locale,\n timeZone,\n ...CalendarProps,\n };\n\n return (\n <StackLayout\n separators\n gap={0}\n className={clsx(className, withBaseName(\"container\"))}\n ref={ref}\n >\n {helperText && (\n <FlexItem className={withBaseName(\"header\")}>\n <FormFieldHelperText>{helperText}</FormFieldHelperText>\n </FlexItem>\n )}\n <FlexLayout gap={0}>\n {/* Avoid Dropdowns in Calendar inheriting the FormField's state */}\n <FormFieldContext.Provider value={{} as FormFieldContextValue}>\n <Calendar selectionVariant=\"single\" {...baseCalendarProps}>\n <CalendarNavigation {...CalendarNavigationProps} />\n </Calendar>\n </FormFieldContext.Provider>\n </FlexLayout>\n </StackLayout>\n );\n});\n"],"names":["makePrefixer","forwardRef","DatePickerSinglePanel","useWindow","useComponentCssInjection","datePickerPanelCss","getLocalTimeZone","startOfMonth","today","getCurrentLocale","useDatePickerContext","useState","useControlled","useCallback","jsxs","StackLayout","clsx","jsx","FlexItem","FormFieldHelperText","FlexLayout","FormFieldContext","Calendar","CalendarNavigation"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DatePickerSinglePanel.js","sources":["../src/date-picker/DatePickerSinglePanel.tsx"],"sourcesContent":["import {\n type DateValue,\n getLocalTimeZone,\n startOfMonth,\n today,\n} from \"@internationalized/date\";\nimport {\n FlexItem,\n FlexLayout,\n FormFieldContext,\n type FormFieldContextValue,\n FormFieldHelperText,\n StackLayout,\n makePrefixer,\n useControlled,\n} from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport clsx from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type SyntheticEvent,\n forwardRef,\n useCallback,\n useState,\n} from \"react\";\nimport {\n CalendarDateGrid,\n type CalendarDateGridProps,\n CalendarNavigation,\n type CalendarNavigationProps,\n type CalendarSingleProps,\n CalendarWeekHeader,\n type CalendarWeekHeaderProps,\n getCurrentLocale,\n} from \"../calendar\";\nimport { Calendar, type SingleDateSelection } from \"../calendar\";\nimport datePickerPanelCss from \"./DatePickerPanel.css\";\nimport { useDatePickerContext } from \"./index\";\n\n/**\n * Props for the DatePickerSinglePanel component.\n * @template T - The type of the selected date.\n */\nexport interface DatePickerSinglePanelProps<T>\n extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * Callback fired when a date is selected.\n * @param event - The synthetic event.\n * @param selectedDate - The selected date or null.\n */\n onSelect?: (event: SyntheticEvent, selectedDate?: T | null) => void;\n\n /**\n * Helper text to be displayed below the date picker.\n */\n helperText?: string;\n\n /**\n * The currently visible month.\n */\n visibleMonth?: DateValue;\n\n /**\n * The default visible month.\n */\n defaultVisibleMonth?: DateValue;\n\n /**\n * Callback fired when the visible month changes.\n * @param event - The synthetic event.\n * @param visibleMonth - The new visible month.\n */\n onVisibleMonthChange?: (\n event: SyntheticEvent,\n visibleMonth: DateValue,\n ) => void;\n\n /**\n * Props to be passed to the Calendar component.\n */\n CalendarProps?: Partial<\n Omit<\n CalendarSingleProps,\n | \"selectionVariant\"\n | \"selectedDate\"\n | \"defaultSelectedDate\"\n | \"onSelectedDateChange\"\n | \"onVisibleMonthChange\"\n >\n >;\n /**\n * Props to be passed to the CalendarNavigation component.\n */\n CalendarNavigationProps?: CalendarNavigationProps;\n /**\n * Props to be passed to the CalendarWeekHeader component.\n */\n CalendarWeekHeaderProps?: CalendarWeekHeaderProps;\n /**\n * Props to be passed to the CalendarDataGrid component.\n */\n CalendarDataGridProps?: CalendarDateGridProps;\n}\n\nconst withBaseName = makePrefixer(\"saltDatePickerPanel\");\n\nexport const DatePickerSinglePanel = forwardRef<\n HTMLDivElement,\n DatePickerSinglePanelProps<SingleDateSelection>\n>(function DatePickerSinglePanel(props, ref) {\n const {\n CalendarProps,\n CalendarWeekHeaderProps,\n CalendarNavigationProps,\n CalendarDataGridProps,\n className,\n defaultVisibleMonth,\n visibleMonth: visibleMonthProp,\n onVisibleMonthChange,\n helperText,\n onSelect,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-date-picker-single-panel\",\n css: datePickerPanelCss,\n window: targetWindow,\n });\n\n const {\n state: {\n selectedDate,\n timeZone = getLocalTimeZone(),\n minDate = startOfMonth(today(timeZone)),\n maxDate = minDate.add({ months: 1 }),\n locale = getCurrentLocale(),\n },\n helpers: { setSelectedDate },\n } = useDatePickerContext({ selectionVariant: \"single\" });\n\n const [hoveredDate, setHoveredDate] = useState<DateValue | null>(null);\n\n const [uncontrolledDefaultVisibleMonth] = useState(\n () => defaultVisibleMonth || startOfMonth(selectedDate || today(timeZone)),\n );\n const [visibleMonth, setVisibleMonth] = useControlled({\n controlled: visibleMonthProp,\n default: uncontrolledDefaultVisibleMonth,\n name: \"DatePickerSinglePanel\",\n state: \"visibleMonth\",\n });\n\n const handleSelectedDateChange = useCallback(\n (event: SyntheticEvent, newDate: SingleDateSelection | null) => {\n setSelectedDate(newDate, false);\n onSelect?.(event, newDate);\n },\n [setSelectedDate, onSelect],\n );\n\n const handleHoveredDateChange = useCallback(\n (event: SyntheticEvent, newHoveredDate: SingleDateSelection | null) => {\n setHoveredDate(newHoveredDate);\n if (newHoveredDate && CalendarProps?.onHoveredDateChange) {\n CalendarProps.onHoveredDateChange(event, newHoveredDate);\n }\n },\n [CalendarProps?.onHoveredDateChange],\n );\n\n const handleVisibleMonthChange = useCallback(\n (event: SyntheticEvent, newVisibleMonth: DateValue) => {\n setVisibleMonth(newVisibleMonth);\n if (onVisibleMonthChange) {\n onVisibleMonthChange(event, newVisibleMonth);\n }\n },\n [onVisibleMonthChange],\n );\n\n const baseCalendarProps: Partial<CalendarSingleProps> = {\n selectionVariant: \"single\",\n visibleMonth,\n hoveredDate,\n onHoveredDateChange: handleHoveredDateChange,\n onVisibleMonthChange: handleVisibleMonthChange,\n onSelectedDateChange: handleSelectedDateChange,\n hideOutOfRangeDates: true,\n selectedDate,\n minDate,\n maxDate,\n locale,\n timeZone,\n ...CalendarProps,\n };\n\n return (\n <StackLayout\n separators\n gap={0}\n className={clsx(className, withBaseName(\"container\"))}\n ref={ref}\n {...rest}\n >\n {helperText && (\n <FlexItem className={withBaseName(\"header\")}>\n <FormFieldHelperText>{helperText}</FormFieldHelperText>\n </FlexItem>\n )}\n <FlexLayout gap={0}>\n {/* Avoid Dropdowns in Calendar inheriting the FormField's state */}\n <FormFieldContext.Provider value={{} as FormFieldContextValue}>\n <Calendar selectionVariant=\"single\" {...baseCalendarProps}>\n <CalendarNavigation {...CalendarNavigationProps} />\n <CalendarWeekHeader {...CalendarWeekHeaderProps} />\n <CalendarDateGrid {...CalendarDataGridProps} />\n </Calendar>\n </FormFieldContext.Provider>\n </FlexLayout>\n </StackLayout>\n );\n});\n"],"names":["makePrefixer","forwardRef","DatePickerSinglePanel","useWindow","useComponentCssInjection","datePickerPanelCss","getLocalTimeZone","startOfMonth","today","getCurrentLocale","useDatePickerContext","useState","useControlled","useCallback","jsxs","StackLayout","clsx","jsx","FlexItem","FormFieldHelperText","FlexLayout","FormFieldContext","Calendar","CalendarNavigation","CalendarWeekHeader","CalendarDateGrid"],"mappings":"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"}
|
|
@@ -7,6 +7,8 @@ var core = require('@salt-ds/core');
|
|
|
7
7
|
var react = require('react');
|
|
8
8
|
require('../calendar/Calendar.js');
|
|
9
9
|
require('../calendar/CalendarNavigation.js');
|
|
10
|
+
require('../calendar/CalendarWeekHeader.js');
|
|
11
|
+
require('../calendar/CalendarDateGrid.js');
|
|
10
12
|
require('../calendar/internal/CalendarContext.js');
|
|
11
13
|
var formatDate = require('../calendar/formatDate.js');
|
|
12
14
|
var useCalendarSelection = require('../calendar/useCalendarSelection.js');
|
|
@@ -25,11 +27,16 @@ function useDatePicker(props, ref) {
|
|
|
25
27
|
maxDate: maxDateProp,
|
|
26
28
|
timeZone = date.getLocalTimeZone(),
|
|
27
29
|
locale = formatDate.getCurrentLocale(),
|
|
28
|
-
onCancel
|
|
29
|
-
...rest
|
|
30
|
+
onCancel
|
|
30
31
|
} = props;
|
|
31
|
-
const minDate =
|
|
32
|
-
|
|
32
|
+
const minDate = react.useMemo(
|
|
33
|
+
() => minDateProp != null ? minDateProp : date.startOfMonth(new date.CalendarDate(useCalendarSelection.CALENDAR_MIN_YEAR, 1, 1)),
|
|
34
|
+
[minDateProp]
|
|
35
|
+
);
|
|
36
|
+
const maxDate = react.useMemo(
|
|
37
|
+
() => maxDateProp != null ? maxDateProp : date.endOfMonth(new date.CalendarDate(useCalendarSelection.CALENDAR_MAX_YEAR, 1, 1)),
|
|
38
|
+
[maxDateProp]
|
|
39
|
+
);
|
|
33
40
|
const datePickerRef = react.useRef(null);
|
|
34
41
|
const containerRef = core.useForkRef(ref, datePickerRef);
|
|
35
42
|
const {
|
|
@@ -59,29 +66,40 @@ function useDatePicker(props, ref) {
|
|
|
59
66
|
onApply == null ? void 0 : onApply(appliedDate, error);
|
|
60
67
|
}
|
|
61
68
|
};
|
|
62
|
-
const setSelectedSingleDate = (
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
const setSelectedSingleDate = react.useCallback(
|
|
70
|
+
(selection, error) => {
|
|
71
|
+
let nextDate;
|
|
72
|
+
if (error || !selection) {
|
|
73
|
+
nextDate = selection;
|
|
74
|
+
} else {
|
|
75
|
+
let dateAfterMinDate = true;
|
|
76
|
+
let dateBeforeMaxDate = true;
|
|
77
|
+
if (minDate && selection) {
|
|
78
|
+
dateAfterMinDate = selection.compare(minDate) >= 0;
|
|
79
|
+
}
|
|
80
|
+
if (maxDate && selection) {
|
|
81
|
+
dateBeforeMaxDate = selection.compare(maxDate) <= 0;
|
|
82
|
+
}
|
|
83
|
+
nextDate = dateAfterMinDate && dateBeforeMaxDate ? selection : null;
|
|
71
84
|
}
|
|
72
|
-
|
|
73
|
-
|
|
85
|
+
setSelectedDate(nextDate);
|
|
86
|
+
if (selectionVariant === "single") {
|
|
87
|
+
onSelectedDateChange == null ? void 0 : onSelectedDateChange(nextDate, error);
|
|
74
88
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
89
|
+
if (!enableApply) {
|
|
90
|
+
setOpen(false);
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
[
|
|
94
|
+
enableApply,
|
|
95
|
+
minDate,
|
|
96
|
+
maxDate,
|
|
97
|
+
onSelectedDateChange,
|
|
98
|
+
selectionVariant,
|
|
99
|
+
setSelectedDate,
|
|
100
|
+
setOpen
|
|
101
|
+
]
|
|
102
|
+
);
|
|
85
103
|
const applyRange = (appliedDate, error) => {
|
|
86
104
|
setCancelled(false);
|
|
87
105
|
if ((appliedDate == null ? void 0 : appliedDate.startDate) && (appliedDate == null ? void 0 : appliedDate.endDate)) {
|
|
@@ -91,45 +109,56 @@ function useDatePicker(props, ref) {
|
|
|
91
109
|
onApply == null ? void 0 : onApply(appliedDate, error);
|
|
92
110
|
}
|
|
93
111
|
};
|
|
94
|
-
const setSelectedRangeDate = (
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
112
|
+
const setSelectedRangeDate = react.useCallback(
|
|
113
|
+
(selection, error) => {
|
|
114
|
+
let nextDate;
|
|
115
|
+
let nextError = { ...error };
|
|
116
|
+
let startDateInRange = true;
|
|
117
|
+
let endDateInRange = true;
|
|
118
|
+
if ((error == null ? void 0 : error.startDate) || (error == null ? void 0 : error.endDate) || !selection) {
|
|
119
|
+
nextDate = selection;
|
|
120
|
+
} else {
|
|
121
|
+
if (maxDate && (selection == null ? void 0 : selection.startDate)) {
|
|
122
|
+
startDateInRange = selection.startDate.compare(minDate) >= 0;
|
|
123
|
+
}
|
|
124
|
+
if (maxDate && (selection == null ? void 0 : selection.endDate)) {
|
|
125
|
+
endDateInRange = (selection == null ? void 0 : selection.endDate) && selection.endDate.compare(maxDate) <= 0;
|
|
126
|
+
}
|
|
127
|
+
if (!startDateInRange && !endDateInRange) {
|
|
128
|
+
nextDate = null;
|
|
129
|
+
nextError = {
|
|
130
|
+
startDate: "is before min date",
|
|
131
|
+
endDate: "is after max date"
|
|
132
|
+
};
|
|
133
|
+
} else {
|
|
134
|
+
nextDate = {
|
|
135
|
+
startDate: selection.startDate || null,
|
|
136
|
+
endDate: selection.endDate || null
|
|
137
|
+
};
|
|
138
|
+
nextError = {
|
|
139
|
+
startDate: !startDateInRange ? "is before min date" : nextError.startDate,
|
|
140
|
+
endDate: !endDateInRange ? "is after max date" : nextError.endDate
|
|
141
|
+
};
|
|
142
|
+
}
|
|
104
143
|
}
|
|
105
|
-
|
|
106
|
-
|
|
144
|
+
setSelectedDate(nextDate);
|
|
145
|
+
if (selectionVariant === "range") {
|
|
146
|
+
onSelectedDateChange == null ? void 0 : onSelectedDateChange(nextDate, nextError);
|
|
107
147
|
}
|
|
108
|
-
if (!
|
|
109
|
-
|
|
110
|
-
nextError = {
|
|
111
|
-
startDate: "is before min date",
|
|
112
|
-
endDate: "is after max date"
|
|
113
|
-
};
|
|
114
|
-
} else {
|
|
115
|
-
nextDate = {
|
|
116
|
-
startDate: selection.startDate || null,
|
|
117
|
-
endDate: selection.endDate || null
|
|
118
|
-
};
|
|
119
|
-
nextError = {
|
|
120
|
-
startDate: !startDateInRange ? "is before min date" : nextError.startDate,
|
|
121
|
-
endDate: !endDateInRange ? "is after max date" : nextError.endDate
|
|
122
|
-
};
|
|
148
|
+
if (!enableApply && (nextDate == null ? void 0 : nextDate.startDate) && (nextDate == null ? void 0 : nextDate.endDate)) {
|
|
149
|
+
setOpen(false);
|
|
123
150
|
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
151
|
+
},
|
|
152
|
+
[
|
|
153
|
+
enableApply,
|
|
154
|
+
minDate,
|
|
155
|
+
maxDate,
|
|
156
|
+
onSelectedDateChange,
|
|
157
|
+
selectionVariant,
|
|
158
|
+
setSelectedDate,
|
|
159
|
+
setOpen
|
|
160
|
+
]
|
|
161
|
+
);
|
|
133
162
|
const cancel = () => {
|
|
134
163
|
setCancelled(true);
|
|
135
164
|
setOpen(false);
|
|
@@ -147,8 +176,7 @@ function useDatePicker(props, ref) {
|
|
|
147
176
|
minDate,
|
|
148
177
|
maxDate,
|
|
149
178
|
locale,
|
|
150
|
-
timeZone
|
|
151
|
-
...rest
|
|
179
|
+
timeZone
|
|
152
180
|
},
|
|
153
181
|
helpers: {
|
|
154
182
|
cancel,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDatePicker.js","sources":["../src/date-picker/useDatePicker.ts"],"sourcesContent":["import {\n CalendarDate,\n type DateValue,\n endOfMonth,\n getLocalTimeZone,\n startOfMonth,\n} from \"@internationalized/date\";\nimport { useControlled, useForkRef, useFormFieldProps } from \"@salt-ds/core\";\nimport { useEffect, useRef, useState } from \"react\";\nimport {\n CALENDAR_MAX_YEAR,\n CALENDAR_MIN_YEAR,\n type DateRangeSelection,\n type SingleDateSelection,\n getCurrentLocale,\n} from \"../calendar\";\nimport type {\n RangeDatePickerError,\n RangeDatePickerState,\n SingleDatePickerError,\n SingleDatePickerState,\n} from \"./DatePickerContext\";\nimport { useDatePickerOverlay } from \"./DatePickerOverlayProvider\";\n\ninterface UseDatePickerBaseProps<T> {\n /** If `true`, the component is disabled. */\n disabled?: boolean;\n /** If `true`, the component is read-only. */\n readOnly?: boolean;\n /**\n * The selected date. The selected date will be controlled when this prop is provided.\n */\n selectedDate?: T | null;\n /**\n * The initial selected date, when the selected date is uncontrolled.\n */\n defaultSelectedDate?: UseDatePickerBaseProps<T>[\"selectedDate\"];\n /**\n * The minimum date for the range, default is 1900.\n */\n minDate?: DateValue;\n /**\n * The maximum date for the range, default is 2100.\n */\n maxDate?: DateValue;\n /**\n * Handler for when the date selection is cancelled.\n */\n onCancel?: () => void;\n /**\n * Time zone of the date selection, defaults to the current time zone of the user.\n */\n timeZone?: string;\n /**\n * Locale of the date selection, defaults to the current locale of the user.\n */\n locale?: string;\n}\n\n/**\n * Props for single date selection.\n *\n * @typedef {UseDatePickerBaseProps<SingleDateSelection>} UseDatePickerSingleProps\n * @property {\"single\"} selectionVariant - Single date selection.\n * @property {(selectedSingleDate: SingleDateSelection | null, singleError: string | false) => void} [onSelectedDateChange] - Handler called when the selected date changes.\n * @property {(appliedSingleDate: SingleDateSelection | null, singleError: string | false) => void} [onApply] - Handler called when the selected date is confirmed/applied.\n */\nexport interface UseDatePickerSingleProps\n extends UseDatePickerBaseProps<SingleDateSelection> {\n /**\n * Single date selection.\n */\n selectionVariant: \"single\";\n /**\n * Handler called when the selected date changes.\n * @param {SingleDateSelection | null} selectedSingleDate - The selected date.\n * @param {string | false} singleError - Error returned by the parser or `false`.\n */\n onSelectedDateChange?: (\n selectedSingleDate: SingleDateSelection | null,\n singleError: string | false,\n ) => void;\n /**\n * Handler called when the selected date is confirmed/applied.\n * @param {SingleDateSelection | null} appliedSingleDate - The selected date.\n * @param {string | false} singleError - Error returned by the parser or `false`.\n */\n onApply?: (\n appliedSingleDate: SingleDateSelection | null,\n singleError: string | false,\n ) => void;\n}\n\n/**\n * Props for date range selection.\n *\n * @typedef {UseDatePickerBaseProps<DateRangeSelection>} UseDatePickerRangeProps\n * @property {\"range\"} selectionVariant - Date range selection.\n * @property {(selectedRangeDate: DateRangeSelection | null, rangeError: { startDate: string | false; endDate: string | false }) => void} [onSelectedDateChange] - Handler called when the selected date changes.\n * @property {(appliedRangeDate: DateRangeSelection | null, rangeError: { startDate: string | false; endDate: string | false }) => void} [onApply] - Handler called when the selected date is confirmed/applied.\n */\nexport interface UseDatePickerRangeProps\n extends UseDatePickerBaseProps<DateRangeSelection> {\n /**\n * Date range selection.\n */\n selectionVariant: \"range\";\n /**\n * Handler called when the selected date changes.\n * @param {DateRangeSelection | null} selectedRangeDate - The selected date.\n * @param {{ startDate: string | false; endDate: string | false }} rangeError - Error returned by the parser or `false`.\n */\n onSelectedDateChange?: (\n selectedRangeDate: DateRangeSelection | null,\n rangeError: { startDate: string | false; endDate: string | false },\n ) => void;\n /**\n * Handler called when the selected date is confirmed/applied.\n * @param {DateRangeSelection | null} appliedRangeDate - The selected date.\n * @param {{ startDate: string | false; endDate: string | false }} rangeError - Error returned by the parser or `false`.\n */\n onApply?: (\n appliedRangeDate: DateRangeSelection | null,\n rangeError: { startDate: string | false; endDate: string | false },\n ) => void;\n}\n\n/**\n * Props for the useDatePicker hook.\n *\n * @template SelectionVariant\n * @typedef {SelectionVariant extends \"single\" ? UseDatePickerSingleProps : SelectionVariant extends \"range\" ? UseDatePickerRangeProps : never} UseDatePickerProps\n */\nexport type UseDatePickerProps<SelectionVariant> =\n SelectionVariant extends \"single\"\n ? UseDatePickerSingleProps\n : SelectionVariant extends \"range\"\n ? UseDatePickerRangeProps\n : never;\n\n/**\n * Custom hook for managing date picker state.\n *\n * @template SelectionVariant\n * @param {UseDatePickerProps<SelectionVariant>} props - The props for the date picker.\n * @param {React.ForwardedRef<HTMLDivElement>} ref - The ref for the date picker container.\n * @returns {DatePickerState<SelectionVariant extends \"single\" ? SingleDateSelection : DateRangeSelection>} The date picker state and helpers.\n */\nexport function useDatePicker<SelectionVariant extends \"single\" | \"range\">(\n props: UseDatePickerProps<SelectionVariant>,\n ref: React.ForwardedRef<HTMLDivElement>,\n): SingleDatePickerState | RangeDatePickerState {\n const {\n readOnly = false,\n disabled,\n selectionVariant,\n defaultSelectedDate = null,\n selectedDate: selectedDateProp,\n onSelectedDateChange,\n onApply,\n minDate: minDateProp,\n maxDate: maxDateProp,\n timeZone = getLocalTimeZone(),\n locale = getCurrentLocale(),\n onCancel,\n ...rest\n } = props;\n\n const minDate: DateValue =\n minDateProp ?? startOfMonth(new CalendarDate(CALENDAR_MIN_YEAR, 1, 1));\n const maxDate: DateValue =\n maxDateProp ?? endOfMonth(new CalendarDate(CALENDAR_MAX_YEAR, 1, 1));\n\n const datePickerRef = useRef<HTMLDivElement>(null);\n const containerRef = useForkRef(ref, datePickerRef);\n\n const {\n state: { open },\n helpers: { setOpen },\n } = useDatePickerOverlay();\n\n const [selectedDate, setSelectedDate] = useControlled({\n controlled: selectedDateProp,\n default: defaultSelectedDate,\n name: \"DatePicker\",\n state: \"selectedDate\",\n });\n\n const [enableApply, setEnableApply] = useState<boolean>(false);\n const [cancelled, setCancelled] = useState<boolean>(false);\n\n useEffect(() => {\n if (open) {\n setCancelled(false);\n }\n }, [open]);\n\n const { disabled: formFieldDisabled, readOnly: formFieldReadOnly } =\n useFormFieldProps();\n const isReadOnly = readOnly || formFieldReadOnly || false;\n const isDisabled = disabled || formFieldDisabled || false;\n\n const applySingle = (\n appliedDate: SingleDateSelection | null,\n error: SingleDatePickerError,\n ): void => {\n setCancelled(false);\n setOpen(false);\n if (selectionVariant === \"single\") {\n onApply?.(appliedDate, error);\n }\n };\n\n const setSelectedSingleDate = (\n selection: SingleDateSelection | null,\n error: SingleDatePickerError,\n ) => {\n let nextDate: typeof selection;\n let nextError = error;\n if (error || !selection) {\n nextDate = selection;\n } else {\n let dateAfterMinDate = true;\n let dateBeforeMaxDate = true;\n if (minDate && selection) {\n dateAfterMinDate = selection.compare(minDate) >= 0;\n }\n if (maxDate && selection) {\n dateBeforeMaxDate = selection.compare(maxDate) <= 0;\n }\n nextDate = dateAfterMinDate && dateBeforeMaxDate ? selection : null;\n nextError = !dateAfterMinDate ? \"is before min date\" : nextError;\n nextError = !dateBeforeMaxDate ? \"is after max date\" : nextError;\n }\n setSelectedDate(nextDate);\n if (selectionVariant === \"single\") {\n onSelectedDateChange?.(nextDate, error);\n }\n\n if (!enableApply) {\n setOpen(false);\n }\n };\n\n const applyRange = (\n appliedDate: DateRangeSelection | null,\n error: RangeDatePickerError,\n ): void => {\n setCancelled(false);\n if (appliedDate?.startDate && appliedDate?.endDate) {\n setOpen(false);\n }\n if (selectionVariant === \"range\") {\n onApply?.(appliedDate, error);\n }\n };\n\n const setSelectedRangeDate = (\n selection: DateRangeSelection | null,\n error: RangeDatePickerError,\n ) => {\n let nextDate: typeof selection;\n let nextError = { ...error };\n let startDateInRange = true;\n let endDateInRange = true;\n if (error?.startDate || error?.endDate || !selection) {\n nextDate = selection;\n } else {\n if (maxDate && selection?.startDate) {\n startDateInRange = selection.startDate.compare(minDate) >= 0;\n }\n if (maxDate && selection?.endDate) {\n endDateInRange =\n selection?.endDate && selection.endDate.compare(maxDate) <= 0;\n }\n if (!startDateInRange && !endDateInRange) {\n nextDate = null;\n nextError = {\n startDate: \"is before min date\",\n endDate: \"is after max date\",\n };\n } else {\n nextDate = {\n startDate: selection.startDate || null,\n endDate: selection.endDate || null,\n };\n nextError = {\n startDate: !startDateInRange\n ? \"is before min date\"\n : nextError.startDate,\n endDate: !endDateInRange ? \"is after max date\" : nextError.endDate,\n };\n }\n }\n setSelectedDate(nextDate);\n if (selectionVariant === \"range\") {\n onSelectedDateChange?.(nextDate, nextError);\n }\n if (!enableApply && nextDate?.startDate && nextDate?.endDate) {\n setOpen(false);\n }\n };\n\n const cancel = () => {\n setCancelled(true);\n setOpen(false);\n onCancel?.();\n };\n\n const returnValue = {\n state: {\n selectionVariant,\n selectedDate,\n cancelled,\n enableApply,\n disabled: isDisabled,\n readOnly: isReadOnly,\n containerRef,\n minDate,\n maxDate,\n locale,\n timeZone,\n ...rest,\n },\n helpers: {\n cancel,\n setEnableApply,\n },\n };\n if (props.selectionVariant === \"range\") {\n return {\n ...returnValue,\n helpers: {\n ...returnValue.helpers,\n apply: applyRange,\n setSelectedDate: setSelectedRangeDate,\n },\n } as RangeDatePickerState;\n }\n return {\n ...returnValue,\n helpers: {\n ...returnValue.helpers,\n apply: applySingle,\n setSelectedDate: setSelectedSingleDate,\n },\n } as SingleDatePickerState;\n}\n"],"names":["getLocalTimeZone","getCurrentLocale","startOfMonth","CalendarDate","CALENDAR_MIN_YEAR","endOfMonth","CALENDAR_MAX_YEAR","useRef","useForkRef","useDatePickerOverlay","useControlled","useState","useEffect","useFormFieldProps"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useDatePicker.js","sources":["../src/date-picker/useDatePicker.ts"],"sourcesContent":["import {\n CalendarDate,\n type DateValue,\n endOfMonth,\n getLocalTimeZone,\n startOfMonth,\n} from \"@internationalized/date\";\nimport { useControlled, useForkRef, useFormFieldProps } from \"@salt-ds/core\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n CALENDAR_MAX_YEAR,\n CALENDAR_MIN_YEAR,\n type DateRangeSelection,\n type SingleDateSelection,\n getCurrentLocale,\n} from \"../calendar\";\nimport type {\n RangeDatePickerError,\n RangeDatePickerState,\n SingleDatePickerError,\n SingleDatePickerState,\n} from \"./DatePickerContext\";\nimport { useDatePickerOverlay } from \"./DatePickerOverlayProvider\";\n\ninterface UseDatePickerBaseProps<T> {\n /** If `true`, the component is disabled. */\n disabled?: boolean;\n /** If `true`, the component is read-only. */\n readOnly?: boolean;\n /**\n * The selected date. The selected date will be controlled when this prop is provided.\n */\n selectedDate?: T | null;\n /**\n * The initial selected date, when the selected date is uncontrolled.\n */\n defaultSelectedDate?: UseDatePickerBaseProps<T>[\"selectedDate\"];\n /**\n * The minimum date for the range, default is 1900.\n */\n minDate?: DateValue;\n /**\n * The maximum date for the range, default is 2100.\n */\n maxDate?: DateValue;\n /**\n * Handler for when the date selection is cancelled.\n */\n onCancel?: () => void;\n /**\n * Time zone of the date selection, defaults to the current time zone of the user.\n */\n timeZone?: string;\n /**\n * Locale of the date selection, defaults to the current locale of the user.\n */\n locale?: string;\n}\n\n/**\n * Props for single date selection.\n *\n * @typedef {UseDatePickerBaseProps<SingleDateSelection>} UseDatePickerSingleProps\n * @property {\"single\"} selectionVariant - Single date selection.\n * @property {(selectedSingleDate: SingleDateSelection | null, singleError: string | false) => void} [onSelectedDateChange] - Handler called when the selected date changes.\n * @property {(appliedSingleDate: SingleDateSelection | null, singleError: string | false) => void} [onApply] - Handler called when the selected date is confirmed/applied.\n */\nexport interface UseDatePickerSingleProps\n extends UseDatePickerBaseProps<SingleDateSelection> {\n /**\n * Single date selection.\n */\n selectionVariant: \"single\";\n /**\n * Handler called when the selected date changes.\n * @param {SingleDateSelection | null} selectedSingleDate - The selected date.\n * @param {string | false} singleError - Error returned by the parser or `false`.\n */\n onSelectedDateChange?: (\n selectedSingleDate: SingleDateSelection | null,\n singleError: string | false,\n ) => void;\n /**\n * Handler called when the selected date is confirmed/applied.\n * @param {SingleDateSelection | null} appliedSingleDate - The selected date.\n * @param {string | false} singleError - Error returned by the parser or `false`.\n */\n onApply?: (\n appliedSingleDate: SingleDateSelection | null,\n singleError: string | false,\n ) => void;\n}\n\n/**\n * Props for date range selection.\n *\n * @typedef {UseDatePickerBaseProps<DateRangeSelection>} UseDatePickerRangeProps\n * @property {\"range\"} selectionVariant - Date range selection.\n * @property {(selectedRangeDate: DateRangeSelection | null, rangeError: { startDate: string | false; endDate: string | false }) => void} [onSelectedDateChange] - Handler called when the selected date changes.\n * @property {(appliedRangeDate: DateRangeSelection | null, rangeError: { startDate: string | false; endDate: string | false }) => void} [onApply] - Handler called when the selected date is confirmed/applied.\n */\nexport interface UseDatePickerRangeProps\n extends UseDatePickerBaseProps<DateRangeSelection> {\n /**\n * Date range selection.\n */\n selectionVariant: \"range\";\n /**\n * Handler called when the selected date changes.\n * @param {DateRangeSelection | null} selectedRangeDate - The selected date.\n * @param {{ startDate: string | false; endDate: string | false }} rangeError - Error returned by the parser or `false`.\n */\n onSelectedDateChange?: (\n selectedRangeDate: DateRangeSelection | null,\n rangeError: { startDate: string | false; endDate: string | false },\n ) => void;\n /**\n * Handler called when the selected date is confirmed/applied.\n * @param {DateRangeSelection | null} appliedRangeDate - The selected date.\n * @param {{ startDate: string | false; endDate: string | false }} rangeError - Error returned by the parser or `false`.\n */\n onApply?: (\n appliedRangeDate: DateRangeSelection | null,\n rangeError: { startDate: string | false; endDate: string | false },\n ) => void;\n}\n\n/**\n * Props for the useDatePicker hook.\n *\n * @template SelectionVariant\n * @typedef {SelectionVariant extends \"single\" ? UseDatePickerSingleProps : SelectionVariant extends \"range\" ? UseDatePickerRangeProps : never} UseDatePickerProps\n */\nexport type UseDatePickerProps<SelectionVariant> =\n SelectionVariant extends \"single\"\n ? UseDatePickerSingleProps\n : SelectionVariant extends \"range\"\n ? UseDatePickerRangeProps\n : never;\n\n/**\n * Custom hook for managing date picker state.\n *\n * @template SelectionVariant\n * @param {UseDatePickerProps<SelectionVariant>} props - The props for the date picker.\n * @param {React.ForwardedRef<HTMLDivElement>} ref - The ref for the date picker container.\n * @returns {DatePickerState<SelectionVariant extends \"single\" ? SingleDateSelection : DateRangeSelection>} The date picker state and helpers.\n */\nexport function useDatePicker<SelectionVariant extends \"single\" | \"range\">(\n props: UseDatePickerProps<SelectionVariant>,\n ref: React.ForwardedRef<HTMLDivElement>,\n): SingleDatePickerState | RangeDatePickerState {\n const {\n readOnly = false,\n disabled,\n selectionVariant,\n defaultSelectedDate = null,\n selectedDate: selectedDateProp,\n onSelectedDateChange,\n onApply,\n minDate: minDateProp,\n maxDate: maxDateProp,\n timeZone = getLocalTimeZone(),\n locale = getCurrentLocale(),\n onCancel,\n } = props;\n\n const minDate: DateValue = useMemo(\n () =>\n minDateProp ?? startOfMonth(new CalendarDate(CALENDAR_MIN_YEAR, 1, 1)),\n [minDateProp],\n );\n const maxDate: DateValue = useMemo(\n () => maxDateProp ?? endOfMonth(new CalendarDate(CALENDAR_MAX_YEAR, 1, 1)),\n [maxDateProp],\n );\n\n const datePickerRef = useRef<HTMLDivElement>(null);\n const containerRef = useForkRef(ref, datePickerRef);\n\n const {\n state: { open },\n helpers: { setOpen },\n } = useDatePickerOverlay();\n\n const [selectedDate, setSelectedDate] = useControlled({\n controlled: selectedDateProp,\n default: defaultSelectedDate,\n name: \"DatePicker\",\n state: \"selectedDate\",\n });\n\n const [enableApply, setEnableApply] = useState<boolean>(false);\n const [cancelled, setCancelled] = useState<boolean>(false);\n\n useEffect(() => {\n if (open) {\n setCancelled(false);\n }\n }, [open]);\n\n const { disabled: formFieldDisabled, readOnly: formFieldReadOnly } =\n useFormFieldProps();\n const isReadOnly = readOnly || formFieldReadOnly || false;\n const isDisabled = disabled || formFieldDisabled || false;\n\n const applySingle = (\n appliedDate: SingleDateSelection | null,\n error: SingleDatePickerError,\n ): void => {\n setCancelled(false);\n setOpen(false);\n if (selectionVariant === \"single\") {\n onApply?.(appliedDate, error);\n }\n };\n\n const setSelectedSingleDate = useCallback(\n (selection: SingleDateSelection | null, error: SingleDatePickerError) => {\n let nextDate: typeof selection;\n let nextError = error;\n if (error || !selection) {\n nextDate = selection;\n } else {\n let dateAfterMinDate = true;\n let dateBeforeMaxDate = true;\n if (minDate && selection) {\n dateAfterMinDate = selection.compare(minDate) >= 0;\n }\n if (maxDate && selection) {\n dateBeforeMaxDate = selection.compare(maxDate) <= 0;\n }\n nextDate = dateAfterMinDate && dateBeforeMaxDate ? selection : null;\n nextError = !dateAfterMinDate ? \"is before min date\" : nextError;\n nextError = !dateBeforeMaxDate ? \"is after max date\" : nextError;\n }\n setSelectedDate(nextDate);\n if (selectionVariant === \"single\") {\n onSelectedDateChange?.(nextDate, error);\n }\n\n if (!enableApply) {\n setOpen(false);\n }\n },\n [\n enableApply,\n minDate,\n maxDate,\n onSelectedDateChange,\n selectionVariant,\n setSelectedDate,\n setOpen,\n ],\n );\n\n const applyRange = (\n appliedDate: DateRangeSelection | null,\n error: RangeDatePickerError,\n ): void => {\n setCancelled(false);\n if (appliedDate?.startDate && appliedDate?.endDate) {\n setOpen(false);\n }\n if (selectionVariant === \"range\") {\n onApply?.(appliedDate, error);\n }\n };\n\n const setSelectedRangeDate = useCallback(\n (selection: DateRangeSelection | null, error: RangeDatePickerError) => {\n let nextDate: typeof selection;\n let nextError = { ...error };\n let startDateInRange = true;\n let endDateInRange = true;\n if (error?.startDate || error?.endDate || !selection) {\n nextDate = selection;\n } else {\n if (maxDate && selection?.startDate) {\n startDateInRange = selection.startDate.compare(minDate) >= 0;\n }\n if (maxDate && selection?.endDate) {\n endDateInRange =\n selection?.endDate && selection.endDate.compare(maxDate) <= 0;\n }\n if (!startDateInRange && !endDateInRange) {\n nextDate = null;\n nextError = {\n startDate: \"is before min date\",\n endDate: \"is after max date\",\n };\n } else {\n nextDate = {\n startDate: selection.startDate || null,\n endDate: selection.endDate || null,\n };\n nextError = {\n startDate: !startDateInRange\n ? \"is before min date\"\n : nextError.startDate,\n endDate: !endDateInRange ? \"is after max date\" : nextError.endDate,\n };\n }\n }\n setSelectedDate(nextDate);\n if (selectionVariant === \"range\") {\n onSelectedDateChange?.(nextDate, nextError);\n }\n if (!enableApply && nextDate?.startDate && nextDate?.endDate) {\n setOpen(false);\n }\n },\n [\n enableApply,\n minDate,\n maxDate,\n onSelectedDateChange,\n selectionVariant,\n setSelectedDate,\n setOpen,\n ],\n );\n\n const cancel = () => {\n setCancelled(true);\n setOpen(false);\n onCancel?.();\n };\n\n const returnValue = {\n state: {\n selectionVariant,\n selectedDate,\n cancelled,\n enableApply,\n disabled: isDisabled,\n readOnly: isReadOnly,\n containerRef,\n minDate,\n maxDate,\n locale,\n timeZone,\n },\n helpers: {\n cancel,\n setEnableApply,\n },\n };\n if (props.selectionVariant === \"range\") {\n return {\n ...returnValue,\n helpers: {\n ...returnValue.helpers,\n apply: applyRange,\n setSelectedDate: setSelectedRangeDate,\n },\n } as RangeDatePickerState;\n }\n return {\n ...returnValue,\n helpers: {\n ...returnValue.helpers,\n apply: applySingle,\n setSelectedDate: setSelectedSingleDate,\n },\n } as SingleDatePickerState;\n}\n"],"names":["getLocalTimeZone","getCurrentLocale","useMemo","startOfMonth","CalendarDate","CALENDAR_MIN_YEAR","endOfMonth","CALENDAR_MAX_YEAR","useRef","useForkRef","useDatePickerOverlay","useControlled","useState","useEffect","useFormFieldProps","useCallback"],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ var DropdownButton$1 = require('./DropdownButton.css.js');
|
|
|
15
15
|
|
|
16
16
|
const withBaseName = core.makePrefixer("saltDropdownButton");
|
|
17
17
|
const DropdownButton = react.forwardRef(function DropdownButton2({
|
|
18
|
-
IconComponent
|
|
18
|
+
IconComponent,
|
|
19
19
|
ariaHideOptionRole,
|
|
20
20
|
className,
|
|
21
21
|
disabled,
|
|
@@ -35,6 +35,8 @@ const DropdownButton = react.forwardRef(function DropdownButton2({
|
|
|
35
35
|
css: DropdownButton$1,
|
|
36
36
|
window: targetWindow
|
|
37
37
|
});
|
|
38
|
+
const { ExpandIcon } = core.useIcon();
|
|
39
|
+
const Icon = IconComponent === void 0 ? ExpandIcon : IconComponent;
|
|
38
40
|
const { inFormField } = useFormFieldLegacyProps.useFormFieldLegacyProps();
|
|
39
41
|
return /* @__PURE__ */ jsxRuntime.jsx(core.Button, {
|
|
40
42
|
className: clsx.clsx(
|
|
@@ -61,7 +63,7 @@ const DropdownButton = react.forwardRef(function DropdownButton2({
|
|
|
61
63
|
role: "option",
|
|
62
64
|
children: label
|
|
63
65
|
}),
|
|
64
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
66
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon, {
|
|
65
67
|
className: withBaseName("icon"),
|
|
66
68
|
size: iconSize,
|
|
67
69
|
"aria-label": null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownButton.js","sources":["../src/dropdown/DropdownButton.tsx"],"sourcesContent":["import { Button, type ButtonProps, makePrefixer } from \"@salt-ds/core\";\nimport {
|
|
1
|
+
{"version":3,"file":"DropdownButton.js","sources":["../src/dropdown/DropdownButton.tsx"],"sourcesContent":["import { Button, type ButtonProps, makePrefixer, useIcon } from \"@salt-ds/core\";\nimport { DEFAULT_ICON_SIZE, type IconProps } from \"@salt-ds/icons\";\nimport { clsx } from \"clsx\";\nimport {\n type AriaAttributes,\n type ComponentType,\n type ForwardedRef,\n forwardRef,\n} from \"react\";\nimport { useFormFieldLegacyProps } from \"../form-field-context-legacy\";\n\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport dropdownButtonCss from \"./DropdownButton.css\";\n\nexport interface DropdownButtonProps extends ButtonProps {\n /**\n * Replace the default Icon component\n */\n IconComponent?: ComponentType<any>;\n /**\n * Whether the dropdown button should hide role='option' via 'aria-hidden'\n */\n ariaHideOptionRole?: boolean;\n /**\n * If, `true`, the Dropdown button will occupy the full width of it's container\n */\n fullWidth?: boolean;\n /**\n * Sets the size of the down arrow icon. If this is not specified, a default size based on density is used.\n */\n iconSize?: IconProps[\"size\"];\n /**\n * Is the dropdown list open\n */\n isOpen?: boolean;\n /**\n * Label for the dropdown button\n */\n label?: string;\n /**\n * Id for the label. This is needed for ARIA attributes.\n */\n labelId?: string;\n /**\n * When the dropdown is collapsed this value is set as aria-posinset on the span containing the selected value\n * **/\n posInSet?: number;\n /**\n * When the dropdown is collapsed this value is set as aria-setsize on the span containing the selected value\n * **/\n setSize?: number;\n /**\n *\n * **/\n labelAriaAttributes?: Pick<\n AriaAttributes,\n \"aria-posinset\" | \"aria-setsize\" | \"aria-selected\"\n >;\n}\n\nconst withBaseName = makePrefixer(\"saltDropdownButton\");\n\nexport const DropdownButton = forwardRef(function DropdownButton(\n {\n IconComponent,\n ariaHideOptionRole,\n className,\n disabled,\n iconSize = DEFAULT_ICON_SIZE,\n isOpen,\n label,\n labelId,\n fullWidth,\n posInSet,\n setSize,\n labelAriaAttributes,\n ...rest\n }: DropdownButtonProps,\n ref: ForwardedRef<HTMLButtonElement>,\n) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-dropdown-button\",\n css: dropdownButtonCss,\n window: targetWindow,\n });\n const { ExpandIcon } = useIcon();\n const Icon = IconComponent === undefined ? ExpandIcon : IconComponent;\n const { inFormField } = useFormFieldLegacyProps();\n // FIXME: use polymorphic button\n // We don't want the 'button' tag to be shown in the DOM to trigger some accessibility testing\n // tool's false alarm on role of 'listbox'\n return (\n <Button\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"fullwidth\")]: fullWidth,\n [withBaseName(\"formField\")]: inFormField,\n },\n className,\n )}\n data-testid=\"dropdown-button\"\n disabled={disabled}\n variant=\"secondary\"\n {...rest}\n ref={ref}\n >\n <div className={withBaseName(\"content\")}>\n <span\n // 'hidden' so that screen reader won't be confused the additional 'option' which is just a label\n aria-hidden={ariaHideOptionRole ? \"true\" : undefined}\n {...labelAriaAttributes}\n className={withBaseName(\"buttonLabel\")}\n id={labelId}\n // 'option' role here is to suppress accessibility testing tool warning about 'listbox' missing children role.\n role=\"option\"\n >\n {label}\n </span>\n <Icon\n className={withBaseName(\"icon\")}\n size={iconSize}\n aria-label={null}\n aria-hidden=\"true\"\n />\n </div>\n </Button>\n );\n});\n"],"names":["makePrefixer","forwardRef","DropdownButton","DEFAULT_ICON_SIZE","useWindow","useComponentCssInjection","dropdownButtonCss","useIcon","useFormFieldLegacyProps","jsx","Button","clsx","jsxs"],"mappings":";;;;;;;;;;;;;;;AA8DA,MAAM,YAAA,GAAeA,kBAAa,oBAAoB,CAAA,CAAA;AAEzC,MAAA,cAAA,GAAiBC,gBAAW,CAAA,SAASC,eAChD,CAAA;AAAA,EACE,aAAA;AAAA,EACA,kBAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAW,GAAAC,uBAAA;AAAA,EACX,MAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,mBAAA;AAAA,EACG,GAAA,IAAA;AACL,CAAA,EACA,GACA,EAAA;AACA,EAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,sBAAA;AAAA,IACR,GAAK,EAAAC,gBAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AACD,EAAM,MAAA,EAAE,UAAW,EAAA,GAAIC,YAAQ,EAAA,CAAA;AAC/B,EAAM,MAAA,IAAA,GAAO,aAAkB,KAAA,KAAA,CAAA,GAAY,UAAa,GAAA,aAAA,CAAA;AACxD,EAAM,MAAA,EAAE,WAAY,EAAA,GAAIC,+CAAwB,EAAA,CAAA;AAIhD,EAAA,uBACGC,cAAA,CAAAC,WAAA,EAAA;AAAA,IACC,SAAW,EAAAC,SAAA;AAAA,MACT,YAAa,EAAA;AAAA,MACb;AAAA,QACE,CAAC,YAAa,CAAA,WAAW,CAAI,GAAA,SAAA;AAAA,QAC7B,CAAC,YAAa,CAAA,WAAW,CAAI,GAAA,WAAA;AAAA,OAC/B;AAAA,MACA,SAAA;AAAA,KACF;AAAA,IACA,aAAY,EAAA,iBAAA;AAAA,IACZ,QAAA;AAAA,IACA,OAAQ,EAAA,WAAA;AAAA,IACP,GAAG,IAAA;AAAA,IACJ,GAAA;AAAA,IAEA,QAAC,kBAAAC,eAAA,CAAA,KAAA,EAAA;AAAA,MAAI,SAAA,EAAW,aAAa,SAAS,CAAA;AAAA,MACpC,QAAA,EAAA;AAAA,wBAACH,cAAA,CAAA,MAAA,EAAA;AAAA,UAEC,aAAA,EAAa,qBAAqB,MAAS,GAAA,KAAA,CAAA;AAAA,UAC1C,GAAG,mBAAA;AAAA,UACJ,SAAA,EAAW,aAAa,aAAa,CAAA;AAAA,UACrC,EAAI,EAAA,OAAA;AAAA,UAEJ,IAAK,EAAA,QAAA;AAAA,UAEJ,QAAA,EAAA,KAAA;AAAA,SACH,CAAA;AAAA,wBACCA,cAAA,CAAA,IAAA,EAAA;AAAA,UACC,SAAA,EAAW,aAAa,MAAM,CAAA;AAAA,UAC9B,IAAM,EAAA,QAAA;AAAA,UACN,YAAY,EAAA,IAAA;AAAA,UACZ,aAAY,EAAA,MAAA;AAAA,SACd,CAAA;AAAA,OAAA;AAAA,KACF,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ,CAAC;;;;"}
|
package/dist-cjs/index.js
CHANGED
|
@@ -30,6 +30,8 @@ var ButtonBar = require('./button-bar/ButtonBar.js');
|
|
|
30
30
|
var OrderedButton = require('./button-bar/OrderedButton.js');
|
|
31
31
|
var Calendar = require('./calendar/Calendar.js');
|
|
32
32
|
var CalendarNavigation = require('./calendar/CalendarNavigation.js');
|
|
33
|
+
var CalendarWeekHeader = require('./calendar/CalendarWeekHeader.js');
|
|
34
|
+
var CalendarDateGrid = require('./calendar/CalendarDateGrid.js');
|
|
33
35
|
var useCalendarDay = require('./calendar/useCalendarDay.js');
|
|
34
36
|
var useCalendar = require('./calendar/useCalendar.js');
|
|
35
37
|
var useCalendarSelection = require('./calendar/useCalendarSelection.js');
|
|
@@ -120,6 +122,9 @@ var SearchInput = require('./search-input/SearchInput.js');
|
|
|
120
122
|
var SkipLink = require('./skip-link/SkipLink.js');
|
|
121
123
|
var SkipLinks = require('./skip-link/SkipLinks.js');
|
|
122
124
|
var Slider = require('./slider/Slider.js');
|
|
125
|
+
var StaticList = require('./static-list/StaticList.js');
|
|
126
|
+
var StaticListItem = require('./static-list/StaticListItem.js');
|
|
127
|
+
var StaticListItemContent = require('./static-list/StaticListItemContent.js');
|
|
123
128
|
var SteppedTracker = require('./stepped-tracker/SteppedTracker.js');
|
|
124
129
|
var TrackerStep = require('./stepped-tracker/TrackerStep/TrackerStep.js');
|
|
125
130
|
var StepLabel = require('./stepped-tracker/StepLabel/StepLabel.js');
|
|
@@ -173,6 +178,8 @@ exports.DefaultButtonsOrderByVariant = ButtonBar.DefaultButtonsOrderByVariant;
|
|
|
173
178
|
exports.OrderedButton = OrderedButton.OrderedButton;
|
|
174
179
|
exports.Calendar = Calendar.Calendar;
|
|
175
180
|
exports.CalendarNavigation = CalendarNavigation.CalendarNavigation;
|
|
181
|
+
exports.CalendarWeekHeader = CalendarWeekHeader.CalendarWeekHeader;
|
|
182
|
+
exports.CalendarDateGrid = CalendarDateGrid.CalendarDateGrid;
|
|
176
183
|
exports.useCalendarDay = useCalendarDay.useCalendarDay;
|
|
177
184
|
exports.useCalendar = useCalendar.useCalendar;
|
|
178
185
|
exports.CALENDAR_MAX_YEAR = useCalendarSelection.CALENDAR_MAX_YEAR;
|
|
@@ -311,6 +318,9 @@ exports.SearchInput = SearchInput.SearchInput;
|
|
|
311
318
|
exports.SkipLink = SkipLink.SkipLink;
|
|
312
319
|
exports.SkipLinks = SkipLinks.SkipLinks;
|
|
313
320
|
exports.Slider = Slider.Slider;
|
|
321
|
+
exports.StaticList = StaticList.StaticList;
|
|
322
|
+
exports.StaticListItem = StaticListItem.StaticListItem;
|
|
323
|
+
exports.StaticListItemContent = StaticListItemContent.StaticListItemContent;
|
|
314
324
|
exports.SteppedTracker = SteppedTracker.SteppedTracker;
|
|
315
325
|
exports.TrackerStep = TrackerStep.TrackerStep;
|
|
316
326
|
exports.StepLabel = StepLabel.StepLabel;
|
package/dist-cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -4,7 +4,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
var core = require('@salt-ds/core');
|
|
7
|
-
var icons = require('@salt-ds/icons');
|
|
8
7
|
var clsx = require('clsx');
|
|
9
8
|
var react = require('react');
|
|
10
9
|
var styles = require('@salt-ds/styles');
|
|
@@ -19,6 +18,7 @@ const MenuButtonTrigger = react.forwardRef(function MenuButtonTrigger2({ classNa
|
|
|
19
18
|
css: MenuButtonTrigger$1,
|
|
20
19
|
window: targetWindow
|
|
21
20
|
});
|
|
21
|
+
const { ExpandIcon } = core.useIcon();
|
|
22
22
|
return /* @__PURE__ */ jsxRuntime.jsxs(core.Button, {
|
|
23
23
|
ref,
|
|
24
24
|
className: clsx.clsx(withBaseName(), className, {
|
|
@@ -28,7 +28,7 @@ const MenuButtonTrigger = react.forwardRef(function MenuButtonTrigger2({ classNa
|
|
|
28
28
|
...rest,
|
|
29
29
|
children: [
|
|
30
30
|
children,
|
|
31
|
-
!hideCaret && /* @__PURE__ */ jsxRuntime.jsx(
|
|
31
|
+
!hideCaret && /* @__PURE__ */ jsxRuntime.jsx(ExpandIcon, {
|
|
32
32
|
className: withBaseName("caretIcon"),
|
|
33
33
|
"data-testid": "menu-button-trigger-caret"
|
|
34
34
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuButtonTrigger.js","sources":["../src/menu-button/MenuButtonTrigger.tsx"],"sourcesContent":["import { Button, type ButtonProps, makePrefixer } from \"@salt-ds/core\";\nimport {
|
|
1
|
+
{"version":3,"file":"MenuButtonTrigger.js","sources":["../src/menu-button/MenuButtonTrigger.tsx"],"sourcesContent":["import { Button, type ButtonProps, makePrefixer, useIcon } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport { type ReactNode, forwardRef } from \"react\";\n\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport menuButtonTrigger from \"./MenuButtonTrigger.css\";\n\nconst withBaseName = makePrefixer(\"saltMenuButtonTrigger\");\n\nexport interface MenuButtonTriggerProps extends ButtonProps {\n className?: string;\n hideCaret?: boolean;\n isMenuOpen?: boolean;\n children?: ReactNode;\n}\n\nexport const MenuButtonTrigger = forwardRef<\n HTMLButtonElement,\n MenuButtonTriggerProps\n>(function MenuButtonTrigger(\n { className, hideCaret, isMenuOpen, children, ...rest },\n ref,\n) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-menu-button-trigger\",\n css: menuButtonTrigger,\n window: targetWindow,\n });\n const { ExpandIcon } = useIcon();\n\n return (\n <Button\n ref={ref}\n className={clsx(withBaseName(), className, {\n [withBaseName(\"buttonOpen\")]: isMenuOpen,\n })}\n data-testid=\"menu-button-trigger\"\n {...rest}\n >\n {children}\n {!hideCaret && (\n <ExpandIcon\n className={withBaseName(\"caretIcon\")}\n data-testid=\"menu-button-trigger-caret\"\n />\n )}\n </Button>\n );\n});\n"],"names":["makePrefixer","forwardRef","MenuButtonTrigger","useWindow","useComponentCssInjection","menuButtonTrigger","useIcon","jsxs","Button","clsx","jsx"],"mappings":";;;;;;;;;;;;AASA,MAAM,YAAA,GAAeA,kBAAa,uBAAuB,CAAA,CAAA;AAS5C,MAAA,iBAAA,GAAoBC,gBAG/B,CAAA,SAASC,kBACT,CAAA,EAAE,SAAW,EAAA,SAAA,EAAW,UAAY,EAAA,QAAA,EAAA,GAAa,IAAK,EAAA,EACtD,GACA,EAAA;AACA,EAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,0BAAA;AAAA,IACR,GAAK,EAAAC,mBAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AACD,EAAM,MAAA,EAAE,UAAW,EAAA,GAAIC,YAAQ,EAAA,CAAA;AAE/B,EAAA,uBACGC,eAAA,CAAAC,WAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAW,EAAA;AAAA,MACzC,CAAC,YAAa,CAAA,YAAY,CAAI,GAAA,UAAA;AAAA,KAC/B,CAAA;AAAA,IACD,aAAY,EAAA,qBAAA;AAAA,IACX,GAAG,IAAA;AAAA,IAEH,QAAA,EAAA;AAAA,MAAA,QAAA;AAAA,MACA,CAAC,6BACCC,cAAA,CAAA,UAAA,EAAA;AAAA,QACC,SAAA,EAAW,aAAa,WAAW,CAAA;AAAA,QACnC,aAAY,EAAA,2BAAA;AAAA,OACd,CAAA;AAAA,KAAA;AAAA,GAEJ,CAAA,CAAA;AAEJ,CAAC;;;;"}
|
|
@@ -4,7 +4,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
var core = require('@salt-ds/core');
|
|
7
|
-
var icons = require('@salt-ds/icons');
|
|
8
7
|
var react = require('react');
|
|
9
8
|
require('../../list/Highlighter.js');
|
|
10
9
|
var ListItem = require('../../list/ListItem.js');
|
|
@@ -19,6 +18,7 @@ const withBaseName = core.makePrefixer("saltCategoryListItem");
|
|
|
19
18
|
const CategoryListItem = function CategoryListItem2({ item: category, ...props }) {
|
|
20
19
|
const textRef = react.useRef(null);
|
|
21
20
|
const context = CategoryListContext.useCategoryListContext();
|
|
21
|
+
const { ExpandGroupIcon } = core.useIcon();
|
|
22
22
|
const textStyle = react.useMemo(
|
|
23
23
|
() => ({
|
|
24
24
|
minWidth: context.width
|
|
@@ -50,7 +50,7 @@ const CategoryListItem = function CategoryListItem2({ item: category, ...props }
|
|
|
50
50
|
})
|
|
51
51
|
]
|
|
52
52
|
}),
|
|
53
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
53
|
+
/* @__PURE__ */ jsxRuntime.jsx(ExpandGroupIcon, {
|
|
54
54
|
className: withBaseName("chevron")
|
|
55
55
|
})
|
|
56
56
|
]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CategoryListItem.js","sources":["../src/query-input/internal/CategoryListItem.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport {
|
|
1
|
+
{"version":3,"file":"CategoryListItem.js","sources":["../src/query-input/internal/CategoryListItem.tsx"],"sourcesContent":["import { makePrefixer, useIcon } from \"@salt-ds/core\";\nimport { type CSSProperties, useMemo, useRef } from \"react\";\nimport { ListItem, type ListItemProps, type ListItemType } from \"../../list\";\nimport type { QueryInputCategory } from \"../queryInputTypes\";\nimport { useCategoryListContext } from \"./CategoryListContext\";\n\nconst withBaseName = makePrefixer(\"saltCategoryListItem\");\n\nexport interface CategoryListItemProps\n extends ListItemProps<QueryInputCategory> {\n category: QueryInputCategory;\n}\n\nexport const CategoryListItem: ListItemType<QueryInputCategory> =\n function CategoryListItem({ item: category, ...props }) {\n const textRef = useRef<HTMLDivElement>(null);\n const context = useCategoryListContext();\n const { ExpandGroupIcon } = useIcon();\n const textStyle: CSSProperties = useMemo(\n () => ({\n minWidth: context.width,\n }),\n [context.width],\n );\n\n return (\n <ListItem {...props} label={category?.name}>\n <div ref={textRef} className={withBaseName(\"text\")} style={textStyle}>\n {category?.name}\n </div>\n <div className={withBaseName(\"valuesContainer\")}>\n <span>(</span>\n <span className={withBaseName(\"values\")}>\n {category?.values.join(\", \")}\n </span>\n <span>)</span>\n </div>\n <ExpandGroupIcon className={withBaseName(\"chevron\")} />\n </ListItem>\n );\n };\n"],"names":["makePrefixer","CategoryListItem","useRef","useCategoryListContext","useIcon","useMemo","jsxs","ListItem","jsx"],"mappings":";;;;;;;;;;;;;;;;AAMA,MAAM,YAAA,GAAeA,kBAAa,sBAAsB,CAAA,CAAA;AAOjD,MAAM,mBACX,SAASC,iBAAAA,CAAiB,EAAE,IAAM,EAAA,QAAA,EAAA,GAAa,OAAS,EAAA;AACtD,EAAM,MAAA,OAAA,GAAUC,aAAuB,IAAI,CAAA,CAAA;AAC3C,EAAA,MAAM,UAAUC,0CAAuB,EAAA,CAAA;AACvC,EAAM,MAAA,EAAE,eAAgB,EAAA,GAAIC,YAAQ,EAAA,CAAA;AACpC,EAAA,MAAM,SAA2B,GAAAC,aAAA;AAAA,IAC/B,OAAO;AAAA,MACL,UAAU,OAAQ,CAAA,KAAA;AAAA,KACpB,CAAA;AAAA,IACA,CAAC,QAAQ,KAAK,CAAA;AAAA,GAChB,CAAA;AAEA,EAAA,uBACGC,eAAA,CAAAC,iBAAA,EAAA;AAAA,IAAU,GAAG,KAAA;AAAA,IAAO,OAAO,QAAU,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,IAAA;AAAA,IACpC,QAAA,EAAA;AAAA,sBAACC,cAAA,CAAA,KAAA,EAAA;AAAA,QAAI,GAAK,EAAA,OAAA;AAAA,QAAS,SAAA,EAAW,aAAa,MAAM,CAAA;AAAA,QAAG,KAAO,EAAA,SAAA;AAAA,QACxD,QAAU,EAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,IAAA;AAAA,OACb,CAAA;AAAA,sBACCF,eAAA,CAAA,KAAA,EAAA;AAAA,QAAI,SAAA,EAAW,aAAa,iBAAiB,CAAA;AAAA,QAC5C,QAAA,EAAA;AAAA,0BAACE,cAAA,CAAA,MAAA,EAAA;AAAA,YAAK,QAAA,EAAA,GAAA;AAAA,WAAC,CAAA;AAAA,0BACNA,cAAA,CAAA,MAAA,EAAA;AAAA,YAAK,SAAA,EAAW,aAAa,QAAQ,CAAA;AAAA,YACnC,QAAA,EAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAU,OAAO,IAAK,CAAA,IAAA,CAAA;AAAA,WACzB,CAAA;AAAA,0BACCA,cAAA,CAAA,MAAA,EAAA;AAAA,YAAK,QAAA,EAAA,GAAA;AAAA,WAAC,CAAA;AAAA,SAAA;AAAA,OACT,CAAA;AAAA,sBACCA,cAAA,CAAA,eAAA,EAAA;AAAA,QAAgB,SAAA,EAAW,aAAa,SAAS,CAAA;AAAA,OAAG,CAAA;AAAA,KAAA;AAAA,GACvD,CAAA,CAAA;AAEJ;;;;"}
|
|
@@ -4,7 +4,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
var core = require('@salt-ds/core');
|
|
7
|
-
var icons = require('@salt-ds/icons');
|
|
8
7
|
require('../../list/Highlighter.js');
|
|
9
8
|
var ListItem = require('../../list/ListItem.js');
|
|
10
9
|
var List = require('../../list/List.js');
|
|
@@ -25,6 +24,7 @@ function ValueList(props) {
|
|
|
25
24
|
highlightedValueIndex,
|
|
26
25
|
setHighlightedValueIndex
|
|
27
26
|
} = props;
|
|
27
|
+
const { PreviousIcon } = core.useIcon();
|
|
28
28
|
const handleSelect = (_, value) => {
|
|
29
29
|
onValueToggle(category, value);
|
|
30
30
|
};
|
|
@@ -51,7 +51,7 @@ function ValueList(props) {
|
|
|
51
51
|
onClick: onBack,
|
|
52
52
|
selectable: false,
|
|
53
53
|
children: [
|
|
54
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
54
|
+
/* @__PURE__ */ jsxRuntime.jsx(PreviousIcon, {}),
|
|
55
55
|
/* @__PURE__ */ jsxRuntime.jsx("div", {
|
|
56
56
|
className: withBaseName("category"),
|
|
57
57
|
children: category ? category.name : ""
|