@salt-ds/lab 1.0.0-alpha.70 → 1.0.0-alpha.71
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/CHANGELOG.md +53 -0
- package/css/salt-lab.css +192 -302
- package/dist-cjs/app-header/AppHeader.css.js +1 -1
- package/dist-cjs/calendar/CalendarWeekHeader.css.js +1 -1
- package/dist-cjs/calendar/internal/CalendarDay.css.js +1 -1
- package/dist-cjs/calendar/internal/CalendarMonth.css.js +1 -1
- package/dist-cjs/cascading-menu/CascadingMenuItem.css.js +1 -1
- package/dist-cjs/color-chooser/ColorChooser.css.js +1 -1
- package/dist-cjs/color-chooser/ColorPicker.css.js +1 -1
- package/dist-cjs/color-chooser/HexInput.css.js +1 -1
- package/dist-cjs/color-chooser/RGBAInput.css.js +1 -1
- package/dist-cjs/color-chooser/Swatch.css.js +1 -1
- package/dist-cjs/combo-box/useCombobox.js.map +1 -1
- package/dist-cjs/common-hooks/selectionTypes.js.map +1 -1
- package/dist-cjs/common-hooks/useCollapsibleGroups.js.map +1 -1
- package/dist-cjs/common-hooks/useKeyboardNavigation.js.map +1 -1
- package/dist-cjs/common-hooks/useKeyboardNavigationPanel.js.map +1 -1
- package/dist-cjs/date-input/DateInput.css.js +1 -1
- package/dist-cjs/date-picker/DatePickerOverlay.css.js +1 -1
- package/dist-cjs/date-picker/DatePickerPanel.css.js +1 -1
- package/dist-cjs/form-field-legacy/FormFieldLegacy.css.js +1 -1
- package/dist-cjs/form-field-legacy/FormLabel.css.js +1 -1
- package/dist-cjs/index.js +0 -8
- package/dist-cjs/index.js.map +1 -1
- package/dist-cjs/input-legacy/InputLegacy.css.js +1 -1
- package/dist-cjs/list/List.css.js +1 -1
- package/dist-cjs/list/ListItem.css.js +1 -1
- package/dist-cjs/list/useList.js.map +1 -1
- package/dist-cjs/list-deprecated/List.css.js +1 -1
- package/dist-cjs/list-deprecated/ListItem.css.js +1 -1
- package/dist-cjs/list-next/ListItemNext.css.js +1 -1
- package/dist-cjs/list-next/ListNext.css.js +1 -1
- package/dist-cjs/logo/LogoSeparator.css.js +1 -1
- package/dist-cjs/number-input/NumberInput.css.js +1 -1
- package/dist-cjs/number-input/NumberInput.js +146 -79
- package/dist-cjs/number-input/NumberInput.js.map +1 -1
- package/dist-cjs/number-input/internal/useCaret.js +34 -0
- package/dist-cjs/number-input/internal/useCaret.js.map +1 -0
- package/dist-cjs/number-input/internal/utils.js +56 -14
- package/dist-cjs/number-input/internal/utils.js.map +1 -1
- package/dist-cjs/number-input/useNumberInput.js +34 -26
- package/dist-cjs/number-input/useNumberInput.js.map +1 -1
- package/dist-cjs/portal/Portal.js.map +1 -1
- package/dist-cjs/query-input/QueryInput.css.js +1 -1
- package/dist-cjs/responsive/OverflowReducer.js.map +1 -1
- package/dist-cjs/system-status/SystemStatus.css.js +1 -1
- package/dist-cjs/tabs/Tabstrip.css.js +1 -1
- package/dist-cjs/tabs/drag-drop/Draggable.css.js +1 -1
- package/dist-cjs/tabs-next/TabBar.css.js +1 -1
- package/dist-cjs/tabs-next/TabNext.css.js +1 -1
- package/dist-cjs/tabs-next/TabOverflowList.css.js +1 -1
- package/dist-cjs/tokenized-input/TokenizedInput.css.js +1 -1
- package/dist-cjs/tokenized-input-next/TokenizedInputNext.css.js +1 -1
- package/dist-cjs/toolbar/overflow-panel/OverflowPanel.css.js +1 -1
- package/dist-cjs/toolbar/overflow-panel/OverflowSeparator.css.js +1 -1
- package/dist-cjs/tree/useTree.js.map +1 -1
- package/dist-es/app-header/AppHeader.css.js +1 -1
- package/dist-es/calendar/CalendarWeekHeader.css.js +1 -1
- package/dist-es/calendar/internal/CalendarDay.css.js +1 -1
- package/dist-es/calendar/internal/CalendarMonth.css.js +1 -1
- package/dist-es/cascading-menu/CascadingMenuItem.css.js +1 -1
- package/dist-es/color-chooser/ColorChooser.css.js +1 -1
- package/dist-es/color-chooser/ColorPicker.css.js +1 -1
- package/dist-es/color-chooser/HexInput.css.js +1 -1
- package/dist-es/color-chooser/RGBAInput.css.js +1 -1
- package/dist-es/color-chooser/Swatch.css.js +1 -1
- package/dist-es/combo-box/useCombobox.js.map +1 -1
- package/dist-es/common-hooks/selectionTypes.js.map +1 -1
- package/dist-es/common-hooks/useCollapsibleGroups.js.map +1 -1
- package/dist-es/common-hooks/useKeyboardNavigation.js.map +1 -1
- package/dist-es/common-hooks/useKeyboardNavigationPanel.js.map +1 -1
- package/dist-es/date-input/DateInput.css.js +1 -1
- package/dist-es/date-picker/DatePickerOverlay.css.js +1 -1
- package/dist-es/date-picker/DatePickerPanel.css.js +1 -1
- package/dist-es/form-field-legacy/FormFieldLegacy.css.js +1 -1
- package/dist-es/form-field-legacy/FormLabel.css.js +1 -1
- package/dist-es/index.js +0 -4
- package/dist-es/index.js.map +1 -1
- package/dist-es/input-legacy/InputLegacy.css.js +1 -1
- package/dist-es/list/List.css.js +1 -1
- package/dist-es/list/ListItem.css.js +1 -1
- package/dist-es/list/useList.js.map +1 -1
- package/dist-es/list-deprecated/List.css.js +1 -1
- package/dist-es/list-deprecated/ListItem.css.js +1 -1
- package/dist-es/list-next/ListItemNext.css.js +1 -1
- package/dist-es/list-next/ListNext.css.js +1 -1
- package/dist-es/logo/LogoSeparator.css.js +1 -1
- package/dist-es/number-input/NumberInput.css.js +1 -1
- package/dist-es/number-input/NumberInput.js +149 -82
- package/dist-es/number-input/NumberInput.js.map +1 -1
- package/dist-es/number-input/internal/useCaret.js +32 -0
- package/dist-es/number-input/internal/useCaret.js.map +1 -0
- package/dist-es/number-input/internal/utils.js +52 -10
- package/dist-es/number-input/internal/utils.js.map +1 -1
- package/dist-es/number-input/useNumberInput.js +35 -27
- package/dist-es/number-input/useNumberInput.js.map +1 -1
- package/dist-es/portal/Portal.js.map +1 -1
- package/dist-es/query-input/QueryInput.css.js +1 -1
- package/dist-es/responsive/OverflowReducer.js.map +1 -1
- package/dist-es/system-status/SystemStatus.css.js +1 -1
- package/dist-es/tabs/Tabstrip.css.js +1 -1
- package/dist-es/tabs/drag-drop/Draggable.css.js +1 -1
- package/dist-es/tabs-next/TabBar.css.js +1 -1
- package/dist-es/tabs-next/TabNext.css.js +1 -1
- package/dist-es/tabs-next/TabOverflowList.css.js +1 -1
- package/dist-es/tokenized-input/TokenizedInput.css.js +1 -1
- package/dist-es/tokenized-input-next/TokenizedInputNext.css.js +1 -1
- package/dist-es/toolbar/overflow-panel/OverflowPanel.css.js +1 -1
- package/dist-es/toolbar/overflow-panel/OverflowSeparator.css.js +1 -1
- package/dist-es/tree/useTree.js.map +1 -1
- package/dist-types/app-header/AppHeader.d.ts +1 -1
- package/dist-types/button-bar/ButtonBar.d.ts +3 -3
- package/dist-types/calendar/Calendar.d.ts +1 -1
- package/dist-types/calendar/CalendarWeekHeader.d.ts +1 -1
- package/dist-types/calendar/useCalendar.d.ts +1 -1
- package/dist-types/calendar/useCalendarDay.d.ts +2 -1
- package/dist-types/calendar/useCalendarSelection.d.ts +5 -5
- package/dist-types/cascading-menu/internal/CascadingMenuAction.d.ts +2 -2
- package/dist-types/cascading-menu/internal/menuPositioning.d.ts +1 -1
- package/dist-types/cascading-menu/internal/stateUtils.d.ts +2 -2
- package/dist-types/cascading-menu/internal/useClickAway.d.ts +1 -1
- package/dist-types/cascading-menu/internal/useRefsManager.d.ts +1 -1
- package/dist-types/cascading-menu/internal/useStateReducer.d.ts +2 -2
- package/dist-types/cascading-menu/stateChangeTypes.d.ts +1 -1
- package/dist-types/color-chooser/Color.d.ts +1 -1
- package/dist-types/color-chooser/DictTabs.d.ts +1 -1
- package/dist-types/color-chooser/color-utils.d.ts +1 -1
- package/dist-types/combo-box/ComboBox.d.ts +3 -3
- package/dist-types/combo-box/useCombobox.d.ts +1 -1
- package/dist-types/combo-box-deprecated/ComboBoxDeprecated.d.ts +3 -3
- package/dist-types/combo-box-deprecated/filterHelpers.d.ts +1 -1
- package/dist-types/combo-box-deprecated/internal/DefaultComboBox.d.ts +1 -1
- package/dist-types/combo-box-deprecated/internal/MultiSelectComboBox.d.ts +1 -1
- package/dist-types/combo-box-deprecated/internal/useComboBox.d.ts +98 -97
- package/dist-types/combo-box-deprecated/internal/useMultiSelectComboBox.d.ts +214 -212
- package/dist-types/combo-box-deprecated/internal/usePopperStatus.d.ts +3 -3
- package/dist-types/common-hooks/collectionTypes.d.ts +3 -3
- package/dist-types/common-hooks/itemToString.d.ts +1 -1
- package/dist-types/common-hooks/navigationTypes.d.ts +4 -4
- package/dist-types/common-hooks/selectionTypes.d.ts +10 -10
- package/dist-types/common-hooks/useKeyboardNavigation.d.ts +1 -1
- package/dist-types/common-hooks/useSelection.d.ts +2 -2
- package/dist-types/common-hooks/utils/collection-item-utils.d.ts +2 -2
- package/dist-types/common-hooks/utils/filter-utils.d.ts +2 -2
- package/dist-types/contact-details/ContactAction.d.ts +1 -1
- package/dist-types/contact-details/ContactAvatar.d.ts +1 -1
- package/dist-types/contact-details/ContactDetails.d.ts +1 -1
- package/dist-types/date-input/DateInputRange.d.ts +2 -2
- package/dist-types/date-input/DateInputSingle.d.ts +1 -1
- package/dist-types/date-picker/DatePicker.d.ts +1 -1
- package/dist-types/date-picker/DatePickerActions.d.ts +1 -1
- package/dist-types/date-picker/DatePickerContext.d.ts +1 -1
- package/dist-types/date-picker/DatePickerOverlayProvider.d.ts +1 -1
- package/dist-types/date-picker/DatePickerRangeGridPanel.d.ts +1 -1
- package/dist-types/date-picker/DatePickerSingleGridPanel.d.ts +1 -1
- package/dist-types/date-picker/DatePickerSinglePanel.d.ts +1 -1
- package/dist-types/date-picker/useDatePicker.d.ts +1 -1
- package/dist-types/deck-layout/DeckLayout.d.ts +3 -3
- package/dist-types/dropdown/Dropdown.d.ts +3 -3
- package/dist-types/dropdown/DropdownBase.d.ts +1 -1
- package/dist-types/dropdown/dropdownTypes.d.ts +1 -1
- package/dist-types/dropdown/useClickAway.d.ts +1 -1
- package/dist-types/dropdown/useDropdown.d.ts +1 -1
- package/dist-types/focus-manager/internal/findAllTabbableElements.d.ts +1 -1
- package/dist-types/form-field-legacy/FormFieldLegacy.d.ts +5 -5
- package/dist-types/form-field-legacy/NecessityIndicator.d.ts +1 -1
- package/dist-types/form-field-legacy/StatusIndicator.d.ts +1 -1
- package/dist-types/formatted-input/FormattedInput.d.ts +1 -1
- package/dist-types/index.d.ts +0 -1
- package/dist-types/input-legacy/StaticInputAdornment.d.ts +1 -1
- package/dist-types/layer-layout/LayerLayout.d.ts +1 -1
- package/dist-types/list/List.d.ts +3 -3
- package/dist-types/list/ListItem.d.ts +1 -1
- package/dist-types/list/VirtualizedList.d.ts +3 -3
- package/dist-types/list/listTypes.d.ts +2 -2
- package/dist-types/list/useList.d.ts +1 -1
- package/dist-types/list/useVirtualization.d.ts +1 -1
- package/dist-types/list-deprecated/List.d.ts +2 -2
- package/dist-types/list-deprecated/ListBase.d.ts +2 -2
- package/dist-types/list-deprecated/ListItem.d.ts +1 -1
- package/dist-types/list-deprecated/ListItemContext.d.ts +1 -1
- package/dist-types/list-deprecated/ListProps.d.ts +5 -5
- package/dist-types/list-deprecated/itemToString.d.ts +1 -1
- package/dist-types/list-deprecated/useListItem.d.ts +2 -2
- package/dist-types/localization-provider/LocalizationProvider.d.ts +3 -3
- package/dist-types/logo/Logo.d.ts +1 -1
- package/dist-types/logo/LogoSeparator.d.ts +1 -1
- package/dist-types/number-input/NumberInput.d.ts +49 -27
- package/dist-types/number-input/internal/useCaret.d.ts +5 -0
- package/dist-types/number-input/internal/useInterval.d.ts +1 -1
- package/dist-types/number-input/internal/utils.d.ts +5 -5
- package/dist-types/number-input/useNumberInput.d.ts +11 -6
- package/dist-types/query-input/useQueryInput.d.ts +1 -1
- package/dist-types/responsive/OverflowReducer.d.ts +4 -4
- package/dist-types/responsive/overflowTypes.d.ts +20 -20
- package/dist-types/responsive/overflowUtils.d.ts +3 -3
- package/dist-types/responsive/useOverflowCollectionItems.d.ts +1 -1
- package/dist-types/responsive/useOverflowLayout.d.ts +1 -1
- package/dist-types/responsive/useResizeObserver.d.ts +2 -2
- package/dist-types/responsive/utils.d.ts +3 -3
- package/dist-types/tabs/Tab.d.ts +20 -19
- package/dist-types/tabs/Tabs.d.ts +1 -1
- package/dist-types/tabs/TabsTypes.d.ts +7 -7
- package/dist-types/tabs/drag-drop/Draggable.d.ts +2 -2
- package/dist-types/tabs/drag-drop/DropIndicator.d.ts +1 -1
- package/dist-types/tabs/drag-drop/drag-utils.d.ts +26 -22
- package/dist-types/tabs/drag-drop/dragDropTypes.d.ts +5 -5
- package/dist-types/tabs/drag-drop/useDragSpacers.d.ts +1 -1
- package/dist-types/tabs/useActivationIndicator.d.ts +1 -1
- package/dist-types/tabs/useEditableItem.d.ts +1 -1
- package/dist-types/tabs/useKeyboardNavigation.d.ts +1 -1
- package/dist-types/tabs/useSelection.d.ts +3 -3
- package/dist-types/tabs-next/hooks/useCollection.d.ts +1 -1
- package/dist-types/tokenized-input/TokenizedInput.d.ts +2 -2
- package/dist-types/tokenized-input/TokenizedInputBase.d.ts +5 -5
- package/dist-types/tokenized-input/internal/InputPill.d.ts +1 -1
- package/dist-types/tokenized-input/internal/isPlainObject.d.ts +1 -1
- package/dist-types/tokenized-input/useTokenizedInput.d.ts +1 -1
- package/dist-types/tokenized-input-next/TokenizedInputNext.d.ts +2 -2
- package/dist-types/tokenized-input-next/internal/InputPill.d.ts +1 -1
- package/dist-types/toolbar/ToolbarButton.d.ts +3 -3
- package/dist-types/toolbar/ToolbarProps.d.ts +1 -1
- package/dist-types/toolbar/TooltrayProps.d.ts +2 -2
- package/dist-types/toolbar/internal/ToolbarButtonRefsContext.d.ts +1 -1
- package/dist-types/toolbar/internal/renderTrayTools.d.ts +1 -1
- package/dist-types/tree/useTree.d.ts +1 -1
- package/dist-types/utils/forwardCallbackProps.d.ts +1 -1
- package/dist-types/utils/isEmail.d.ts +1 -1
- package/dist-types/utils/useClickOutside.d.ts +1 -1
- package/dist-types/utils/useSlideSelection.d.ts +1 -1
- package/dist-types/window/ElectronWindow.d.ts +1 -1
- package/dist-types/window/WindowContext.d.ts +4 -4
- package/package.json +2 -2
- package/dist-cjs/carousel/Carousel.css.js +0 -6
- package/dist-cjs/carousel/Carousel.css.js.map +0 -1
- package/dist-cjs/carousel/Carousel.js +0 -62
- package/dist-cjs/carousel/Carousel.js.map +0 -1
- package/dist-cjs/carousel/CarouselContext.js +0 -62
- package/dist-cjs/carousel/CarouselContext.js.map +0 -1
- package/dist-cjs/carousel/CarouselControls.css.js +0 -6
- package/dist-cjs/carousel/CarouselControls.css.js.map +0 -1
- package/dist-cjs/carousel/CarouselControls.js +0 -122
- package/dist-cjs/carousel/CarouselControls.js.map +0 -1
- package/dist-cjs/carousel/CarouselReducer.js +0 -77
- package/dist-cjs/carousel/CarouselReducer.js.map +0 -1
- package/dist-cjs/carousel/CarouselSlide.css.js +0 -6
- package/dist-cjs/carousel/CarouselSlide.css.js.map +0 -1
- package/dist-cjs/carousel/CarouselSlide.js +0 -110
- package/dist-cjs/carousel/CarouselSlide.js.map +0 -1
- package/dist-cjs/carousel/CarouselSlider.css.js +0 -6
- package/dist-cjs/carousel/CarouselSlider.css.js.map +0 -1
- package/dist-cjs/carousel/CarouselSlider.js +0 -93
- package/dist-cjs/carousel/CarouselSlider.js.map +0 -1
- package/dist-es/carousel/Carousel.css.js +0 -4
- package/dist-es/carousel/Carousel.css.js.map +0 -1
- package/dist-es/carousel/Carousel.js +0 -60
- package/dist-es/carousel/Carousel.js.map +0 -1
- package/dist-es/carousel/CarouselContext.js +0 -58
- package/dist-es/carousel/CarouselContext.js.map +0 -1
- package/dist-es/carousel/CarouselControls.css.js +0 -4
- package/dist-es/carousel/CarouselControls.css.js.map +0 -1
- package/dist-es/carousel/CarouselControls.js +0 -120
- package/dist-es/carousel/CarouselControls.js.map +0 -1
- package/dist-es/carousel/CarouselReducer.js +0 -75
- package/dist-es/carousel/CarouselReducer.js.map +0 -1
- package/dist-es/carousel/CarouselSlide.css.js +0 -4
- package/dist-es/carousel/CarouselSlide.css.js.map +0 -1
- package/dist-es/carousel/CarouselSlide.js +0 -108
- package/dist-es/carousel/CarouselSlide.js.map +0 -1
- package/dist-es/carousel/CarouselSlider.css.js +0 -4
- package/dist-es/carousel/CarouselSlider.css.js.map +0 -1
- package/dist-es/carousel/CarouselSlider.js +0 -91
- package/dist-es/carousel/CarouselSlider.js.map +0 -1
- package/dist-types/carousel/Carousel.d.ts +0 -23
- package/dist-types/carousel/CarouselContext.d.ts +0 -11
- package/dist-types/carousel/CarouselControls.d.ts +0 -26
- package/dist-types/carousel/CarouselReducer.d.ts +0 -30
- package/dist-types/carousel/CarouselSlide.d.ts +0 -32
- package/dist-types/carousel/CarouselSlider.d.ts +0 -13
- package/dist-types/carousel/index.d.ts +0 -4
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type KeyboardEvent } from "react";
|
|
2
2
|
import type { OverflowItem } from "../responsive";
|
|
3
|
-
export
|
|
3
|
+
export type ExitEditModeHandler = (originalValue: string, editedValue: string, allowDeactivation: boolean, tabIndex: number) => void;
|
|
4
4
|
export interface Editable {
|
|
5
5
|
editing: boolean;
|
|
6
6
|
onEnterEditMode: () => void;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type FocusEvent, type FocusEventHandler, type KeyboardEvent, type MouseEvent, type MouseEventHandler } from "react";
|
|
2
2
|
import type { OverflowItem } from "../responsive";
|
|
3
|
-
|
|
3
|
+
type orientationType = "horizontal" | "vertical";
|
|
4
4
|
export interface ContainerNavigationProps {
|
|
5
5
|
onBlur: FocusEventHandler;
|
|
6
6
|
onFocus: FocusEventHandler;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { type KeyboardEvent, type MouseEvent } from "react";
|
|
2
2
|
export declare const isTabElement: (el: HTMLElement) => boolean;
|
|
3
3
|
export declare const useSelection: ({ defaultSelected, highlightedIdx, onSelectionChange, selected: selectedProp, }: {
|
|
4
|
-
defaultSelected?: number
|
|
4
|
+
defaultSelected?: number;
|
|
5
5
|
highlightedIdx: number;
|
|
6
|
-
onSelectionChange?: (
|
|
7
|
-
selected?: number | null
|
|
6
|
+
onSelectionChange?: (tabIndex: number) => void;
|
|
7
|
+
selected?: number | null;
|
|
8
8
|
}) => {
|
|
9
9
|
activateTab: (tabIndex: number) => void;
|
|
10
10
|
isControlled: boolean;
|
|
@@ -8,7 +8,7 @@ interface UseCollectionProps {
|
|
|
8
8
|
}
|
|
9
9
|
export declare function useCollection({ wrap }: UseCollectionProps): {
|
|
10
10
|
registerItem: (item: Item) => () => import("react").MutableRefObject<Item[]>;
|
|
11
|
-
item: (id?: string | null
|
|
11
|
+
item: (id?: string | null) => Item | null;
|
|
12
12
|
getNext: (current: string) => Item | null;
|
|
13
13
|
getPrevious: (current: string) => Item | null;
|
|
14
14
|
getFirst: () => Item | null;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { type UseTooltipProps } from "@salt-ds/core";
|
|
2
2
|
import { type ComponentType } from "react";
|
|
3
3
|
import { type TokenizedInputBaseProps } from "./TokenizedInputBase";
|
|
4
|
-
export
|
|
5
|
-
export
|
|
4
|
+
export type StringToItem<Item> = (selectedItems: Array<Item>, value: string) => Item | null | undefined;
|
|
5
|
+
export type ChangeHandler<Item> = (selectedItems: Item[] | undefined) => void;
|
|
6
6
|
export interface TokenizedInputProps<Item> extends Omit<TokenizedInputBaseProps<Item>, "activeIndices" | "focused" | "highlightedIndex" | "helpers" | "onRemoveItem"> {
|
|
7
7
|
Tooltip?: ComponentType;
|
|
8
8
|
delimiter?: string | Array<string>;
|
|
@@ -2,9 +2,9 @@ import { type ButtonProps } from "@salt-ds/core";
|
|
|
2
2
|
import { type ChangeEventHandler, type FocusEventHandler, type ForwardedRef, type HTMLAttributes, type KeyboardEventHandler, type ReactElement, type ReactEventHandler, type Ref, type SyntheticEvent } from "react";
|
|
3
3
|
import { type InputLegacyProps as InputProps } from "../input-legacy";
|
|
4
4
|
import type { TokenizedInputHelpers, TokenizedInputState } from "./useTokenizedInput";
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
export
|
|
5
|
+
export type RemoveItemHandler = (itemIndex: number) => void;
|
|
6
|
+
export type ItemToString<Item> = (item: Item) => string;
|
|
7
|
+
export type ExpandButtonProps = Pick<ButtonProps, "role" | "aria-roledescription" | "aria-describedby"> & {
|
|
8
8
|
accessibleText?: string;
|
|
9
9
|
};
|
|
10
10
|
export interface TokenizedInputBaseProps<Item> extends Partial<TokenizedInputState<Item>>, Omit<HTMLAttributes<HTMLDivElement>, "onFocus" | "onBlur" | "onChange" | "onKeyUp" | "onKeyDown"> {
|
|
@@ -28,5 +28,5 @@ export interface TokenizedInputBaseProps<Item> extends Partial<TokenizedInputSta
|
|
|
28
28
|
onClear?: ReactEventHandler;
|
|
29
29
|
}
|
|
30
30
|
export declare const TokenizedInputBase: <Item>(p: TokenizedInputBaseProps<Item> & {
|
|
31
|
-
ref?: ForwardedRef<HTMLDivElement
|
|
32
|
-
}) => ReactElement<TokenizedInputBaseProps<Item
|
|
31
|
+
ref?: ForwardedRef<HTMLDivElement>;
|
|
32
|
+
}) => ReactElement<TokenizedInputBaseProps<Item>>;
|
|
@@ -17,7 +17,7 @@ export interface TokenizedInputHelpers<Item> {
|
|
|
17
17
|
setSelectedItems: (selectedItems: Array<Item>) => void;
|
|
18
18
|
updateExpanded: (expanded: boolean) => void;
|
|
19
19
|
}
|
|
20
|
-
|
|
20
|
+
type useTokenizedInputResult<Item> = {
|
|
21
21
|
/**
|
|
22
22
|
* Used to do auto focus. It should be set to the actual input node.
|
|
23
23
|
*/
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { type ButtonProps, type NecessityType, type ValidationStatus } from "@salt-ds/core";
|
|
2
2
|
import { type ChangeEventHandler, type FocusEventHandler, type HTMLAttributes, type KeyboardEventHandler, type ReactEventHandler, type Ref, type SyntheticEvent, type TextareaHTMLAttributes } from "react";
|
|
3
3
|
import { type TokenizedInputNextState } from "./useTokenizedInputNext";
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
type ChangeHandler<Item> = (event: SyntheticEvent, selectedItems: Item[] | undefined) => void;
|
|
5
|
+
type ExpandButtonProps = Pick<ButtonProps, "role" | "aria-roledescription" | "aria-describedby"> & {
|
|
6
6
|
"aria-label"?: string;
|
|
7
7
|
};
|
|
8
8
|
export interface TokenizedInputNextProps<Item> extends Partial<TokenizedInputNextState<Item>>, Omit<HTMLAttributes<HTMLDivElement>, "onFocus" | "onBlur" | "onChange" | "onKeyUp" | "onKeyDown"> {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type PillProps } from "@salt-ds/core";
|
|
2
2
|
import { type MutableRefObject, type SyntheticEvent } from "react";
|
|
3
|
-
export
|
|
3
|
+
export type InputPillProps = PillProps & {
|
|
4
4
|
/**
|
|
5
5
|
* A ref object holds pills index map to width.
|
|
6
6
|
*/
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { type ButtonProps } from "@salt-ds/core";
|
|
2
|
-
export
|
|
2
|
+
export type ToolbarButtonProps = ButtonProps & {
|
|
3
3
|
overflowLabel?: string;
|
|
4
4
|
label?: string;
|
|
5
5
|
};
|
|
6
6
|
export declare const ToolbarButton: import("react").ForwardRefExoticComponent<ButtonProps & {
|
|
7
|
-
overflowLabel?: string
|
|
8
|
-
label?: string
|
|
7
|
+
overflowLabel?: string;
|
|
8
|
+
label?: string;
|
|
9
9
|
} & import("react").RefAttributes<HTMLButtonElement>>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { TooltipProps } from "@salt-ds/core";
|
|
2
2
|
import type { ComponentType, HTMLAttributes, ReactNode } from "react";
|
|
3
|
-
export
|
|
3
|
+
export type OrientationShape = "vertical" | "horizontal";
|
|
4
4
|
export interface ToolbarAlignmentProps {
|
|
5
5
|
alignCenter?: true | undefined;
|
|
6
6
|
alignEnd?: true | undefined;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { HTMLAttributes } from "react";
|
|
2
2
|
import type { OrientationShape, ToolbarAlignmentProps } from "./ToolbarProps";
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
type collapsibleType = "dynamic" | "instant";
|
|
4
|
+
type booleanAttribute = "true" | "false";
|
|
5
5
|
export interface TooltrayProps extends ToolbarAlignmentProps, HTMLAttributes<HTMLDivElement> {
|
|
6
6
|
collapse?: boolean;
|
|
7
7
|
collapsed?: boolean;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { type ReactNode } from "react";
|
|
2
2
|
import type { OverflowCollectionHookResult, OverflowItem } from "../../responsive/overflowTypes";
|
|
3
3
|
import type { OrientationShape } from "../ToolbarProps";
|
|
4
|
-
export declare const renderTrayTools: (collectionHook: OverflowCollectionHookResult, overflowedItems: OverflowItem[], orientation: OrientationShape, collapsed?:
|
|
4
|
+
export declare const renderTrayTools: (collectionHook: OverflowCollectionHookResult, overflowedItems: OverflowItem[], orientation: OrientationShape, collapsed?: boolean | string) => ReactNode;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { type SelectionStrategy } from "../common-hooks";
|
|
2
2
|
import type { TreeHookProps, TreeHookResult } from "./treeTypes";
|
|
3
|
-
export declare const useTree: <Item,
|
|
3
|
+
export declare const useTree: <Item, Selection extends SelectionStrategy = "default">({ collectionHook, containerRef, contentRef, defaultSelected, disabled, onSelect, onSelectionChange, onToggle, onHighlight: onHighlightProp, selected: selectedProp, selectionStrategy, }: TreeHookProps<Item, Selection>) => TreeHookResult<Item, Selection>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const isEmail: (value?: string
|
|
1
|
+
export declare const isEmail: (value?: string) => boolean;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Ref } from "react";
|
|
2
|
-
|
|
2
|
+
type MouseEvents = keyof {
|
|
3
3
|
[K in keyof GlobalEventHandlersEventMap as GlobalEventHandlersEventMap[K] extends MouseEvent ? K : never]: GlobalEventHandlersEventMap[K];
|
|
4
4
|
};
|
|
5
5
|
export declare function useClickOutside<Element extends HTMLElement>(handler: () => void, triggerEvents?: MouseEvents[], containers?: HTMLElement[]): Ref<Element>;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { LayoutAnimationTransition } from "../deck-layout";
|
|
2
|
-
export declare const useSlideSelection: (initialValue?: number
|
|
2
|
+
export declare const useSlideSelection: (initialValue?: number) => [LayoutAnimationTransition | undefined, number, (sliderIndex: number, transition?: LayoutAnimationTransition) => void];
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export declare const ElectronWindow: import("react").ForwardRefExoticComponent<{
|
|
2
|
-
open?: boolean
|
|
2
|
+
open?: boolean;
|
|
3
3
|
} & Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { type ComponentPropsWithoutRef } from "react";
|
|
2
|
-
export
|
|
2
|
+
export type WindowProps = {
|
|
3
3
|
open?: boolean;
|
|
4
4
|
} & ComponentPropsWithoutRef<"div">;
|
|
5
5
|
export declare const Window: import("react").ForwardRefExoticComponent<{
|
|
6
|
-
open?: boolean
|
|
6
|
+
open?: boolean;
|
|
7
7
|
} & Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
8
8
|
export declare const WindowContext: import("react").Context<import("react").ForwardRefExoticComponent<{
|
|
9
|
-
open?: boolean
|
|
9
|
+
open?: boolean;
|
|
10
10
|
} & Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>>;
|
|
11
11
|
export declare const useWindow: () => import("react").ForwardRefExoticComponent<{
|
|
12
|
-
open?: boolean
|
|
12
|
+
open?: boolean;
|
|
13
13
|
} & Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
14
14
|
export declare const isDesktop: boolean;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@salt-ds/lab",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.71",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
],
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@floating-ui/react": "^0.26.28",
|
|
24
|
-
"@salt-ds/core": "^1.47.
|
|
24
|
+
"@salt-ds/core": "^1.47.1",
|
|
25
25
|
"@salt-ds/date-adapters": "0.1.0-alpha.4",
|
|
26
26
|
"@salt-ds/icons": "^1.14.0",
|
|
27
27
|
"@salt-ds/styles": "0.2.1",
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var css_248z = ".saltCarousel {\n display: grid;\n grid-row-gap: var(--salt-spacing-100);\n grid-template-areas: \"controls\" \"slider\";\n grid-template-rows: auto 1fr;\n}\n\n.saltCarousel.saltCarousel-bottom {\n grid-template-areas: \"slider\" \"controls\";\n grid-template-rows: 1fr auto;\n}\n";
|
|
4
|
-
|
|
5
|
-
module.exports = css_248z;
|
|
6
|
-
//# sourceMappingURL=Carousel.css.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Carousel.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
var core = require('@salt-ds/core');
|
|
5
|
-
var styles = require('@salt-ds/styles');
|
|
6
|
-
var window = require('@salt-ds/window');
|
|
7
|
-
var clsx = require('clsx');
|
|
8
|
-
var react = require('react');
|
|
9
|
-
var Carousel$1 = require('./Carousel.css.js');
|
|
10
|
-
var CarouselContext = require('./CarouselContext.js');
|
|
11
|
-
|
|
12
|
-
const withBaseName = core.makePrefixer("saltCarousel");
|
|
13
|
-
const Carousel = react.forwardRef(
|
|
14
|
-
function Carousel2({
|
|
15
|
-
defaultActiveSlideIndex = 0,
|
|
16
|
-
activeSlideIndex,
|
|
17
|
-
visibleSlides: visibleSlidesProp = 1,
|
|
18
|
-
children,
|
|
19
|
-
controlsPlacement = "top",
|
|
20
|
-
id: idProp,
|
|
21
|
-
...rest
|
|
22
|
-
}, ref) {
|
|
23
|
-
const targetWindow = window.useWindow();
|
|
24
|
-
styles.useComponentCssInjection({
|
|
25
|
-
testId: "salt-carousel",
|
|
26
|
-
css: Carousel$1,
|
|
27
|
-
window: targetWindow
|
|
28
|
-
});
|
|
29
|
-
const { matchedBreakpoints } = core.useBreakpoint();
|
|
30
|
-
const visibleSlides = core.resolveResponsiveValue(
|
|
31
|
-
visibleSlidesProp,
|
|
32
|
-
matchedBreakpoints
|
|
33
|
-
);
|
|
34
|
-
const id = core.useId(idProp);
|
|
35
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
36
|
-
CarouselContext.CarouselProvider,
|
|
37
|
-
{
|
|
38
|
-
defaultActiveSlideIndex,
|
|
39
|
-
activeSlideIndex,
|
|
40
|
-
visibleSlides,
|
|
41
|
-
id,
|
|
42
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
43
|
-
"section",
|
|
44
|
-
{
|
|
45
|
-
role: "region",
|
|
46
|
-
className: clsx.clsx(withBaseName(), {
|
|
47
|
-
[withBaseName(controlsPlacement)]: controlsPlacement === "bottom"
|
|
48
|
-
}),
|
|
49
|
-
"aria-roledescription": "carousel",
|
|
50
|
-
id,
|
|
51
|
-
ref,
|
|
52
|
-
...rest,
|
|
53
|
-
children
|
|
54
|
-
}
|
|
55
|
-
)
|
|
56
|
-
}
|
|
57
|
-
);
|
|
58
|
-
}
|
|
59
|
-
);
|
|
60
|
-
|
|
61
|
-
exports.Carousel = Carousel;
|
|
62
|
-
//# sourceMappingURL=Carousel.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Carousel.js","sources":["../src/carousel/Carousel.tsx"],"sourcesContent":["import {\n type ResponsiveProp,\n makePrefixer,\n resolveResponsiveValue,\n useBreakpoint,\n useId,\n} from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { type HTMLAttributes, forwardRef } from \"react\";\nimport carouselCss from \"./Carousel.css\";\nimport { CarouselProvider } from \"./CarouselContext\";\n\nconst withBaseName = makePrefixer(\"saltCarousel\");\n\nexport interface CarouselProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * The initial Index enables you to select the active slide in the carousel.\n * Optional, default 0.\n **/\n defaultActiveSlideIndex?: number;\n /**\n * Controlled index of active slide in the carousel.\n **/\n activeSlideIndex?: number;\n /**\n * Set the placement of the CarouselControls relative to the CarouselSlider element. Defaults to `top`.\n */\n controlsPlacement?: \"top\" | \"bottom\";\n /**\n * Number of slides visible at a time.\n * Optional, default 1.\n **/\n visibleSlides?: ResponsiveProp<number>;\n}\n\nexport const Carousel = forwardRef<HTMLDivElement, CarouselProps>(\n function Carousel(\n {\n defaultActiveSlideIndex = 0,\n activeSlideIndex,\n visibleSlides: visibleSlidesProp = 1,\n children,\n controlsPlacement = \"top\",\n id: idProp,\n ...rest\n },\n ref,\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-carousel\",\n css: carouselCss,\n window: targetWindow,\n });\n const { matchedBreakpoints } = useBreakpoint();\n\n const visibleSlides = resolveResponsiveValue(\n visibleSlidesProp,\n matchedBreakpoints,\n );\n const id = useId(idProp);\n return (\n <CarouselProvider\n defaultActiveSlideIndex={defaultActiveSlideIndex}\n activeSlideIndex={activeSlideIndex}\n visibleSlides={visibleSlides}\n id={id}\n >\n <section\n role=\"region\"\n className={clsx(withBaseName(), {\n [withBaseName(controlsPlacement)]: controlsPlacement === \"bottom\",\n })}\n aria-roledescription=\"carousel\"\n id={id}\n ref={ref}\n {...rest}\n >\n {children}\n </section>\n </CarouselProvider>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","Carousel","useWindow","useComponentCssInjection","carouselCss","useBreakpoint","resolveResponsiveValue","useId","jsx","CarouselProvider","clsx"],"mappings":";;;;;;;;;;;AAcA,MAAM,YAAA,GAAeA,kBAAa,cAAc,CAAA;AAuBzC,MAAM,QAAW,GAAAC,gBAAA;AAAA,EACtB,SAASC,SACP,CAAA;AAAA,IACE,uBAA0B,GAAA,CAAA;AAAA,IAC1B,gBAAA;AAAA,IACA,eAAe,iBAAoB,GAAA,CAAA;AAAA,IACnC,QAAA;AAAA,IACA,iBAAoB,GAAA,KAAA;AAAA,IACpB,EAAI,EAAA,MAAA;AAAA,IACJ,GAAG;AAAA,KAEL,GACA,EAAA;AACA,IAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,eAAA;AAAA,MACR,GAAK,EAAAC,UAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AACD,IAAM,MAAA,EAAE,kBAAmB,EAAA,GAAIC,kBAAc,EAAA;AAE7C,IAAA,MAAM,aAAgB,GAAAC,2BAAA;AAAA,MACpB,iBAAA;AAAA,MACA;AAAA,KACF;AACA,IAAM,MAAA,EAAA,GAAKC,WAAM,MAAM,CAAA;AACvB,IACE,uBAAAC,cAAA;AAAA,MAACC,gCAAA;AAAA,MAAA;AAAA,QACC,uBAAA;AAAA,QACA,gBAAA;AAAA,QACA,aAAA;AAAA,QACA,EAAA;AAAA,QAEA,QAAA,kBAAAD,cAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACC,IAAK,EAAA,QAAA;AAAA,YACL,SAAA,EAAWE,SAAK,CAAA,YAAA,EAAgB,EAAA;AAAA,cAC9B,CAAC,YAAA,CAAa,iBAAiB,CAAC,GAAG,iBAAsB,KAAA;AAAA,aAC1D,CAAA;AAAA,YACD,sBAAqB,EAAA,UAAA;AAAA,YACrB,EAAA;AAAA,YACA,GAAA;AAAA,YACC,GAAG,IAAA;AAAA,YAEH;AAAA;AAAA;AACH;AAAA,KACF;AAAA;AAGN;;;;"}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
var core = require('@salt-ds/core');
|
|
5
|
-
var react = require('react');
|
|
6
|
-
var CarouselReducer = require('./CarouselReducer.js');
|
|
7
|
-
|
|
8
|
-
const CarouselStateContext = core.createContext(
|
|
9
|
-
"CarouselStateContext",
|
|
10
|
-
{
|
|
11
|
-
slides: /* @__PURE__ */ new Map(),
|
|
12
|
-
activeSlideIndex: 0,
|
|
13
|
-
visibleSlides: 1,
|
|
14
|
-
focusedSlideIndex: 0,
|
|
15
|
-
carouselId: void 0
|
|
16
|
-
}
|
|
17
|
-
);
|
|
18
|
-
const CarouselDispatchContext = core.createContext(
|
|
19
|
-
"CarouselDispatchContext",
|
|
20
|
-
() => {
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
);
|
|
24
|
-
function CarouselProvider({
|
|
25
|
-
children,
|
|
26
|
-
activeSlideIndex: activeSlideIndexProp,
|
|
27
|
-
defaultActiveSlideIndex = 0,
|
|
28
|
-
visibleSlides = 1,
|
|
29
|
-
id
|
|
30
|
-
}) {
|
|
31
|
-
const [activeSlideIndex, setActiveSlideIndex] = core.useControlled({
|
|
32
|
-
controlled: activeSlideIndexProp,
|
|
33
|
-
default: defaultActiveSlideIndex,
|
|
34
|
-
name: "Carousel",
|
|
35
|
-
state: "activeSlideIndex"
|
|
36
|
-
});
|
|
37
|
-
const [state, dispatch] = react.useReducer(CarouselReducer.carouselReducer, {
|
|
38
|
-
slides: /* @__PURE__ */ new Map(),
|
|
39
|
-
focusedSlideIndex: activeSlideIndex,
|
|
40
|
-
activeSlideIndex,
|
|
41
|
-
visibleSlides,
|
|
42
|
-
carouselId: id
|
|
43
|
-
});
|
|
44
|
-
react.useEffect(() => {
|
|
45
|
-
dispatch({
|
|
46
|
-
type: "updateSlideCount",
|
|
47
|
-
payload: visibleSlides
|
|
48
|
-
});
|
|
49
|
-
}, [visibleSlides]);
|
|
50
|
-
react.useEffect(() => {
|
|
51
|
-
dispatch({
|
|
52
|
-
type: "moveToIndex",
|
|
53
|
-
payload: activeSlideIndex
|
|
54
|
-
});
|
|
55
|
-
}, [activeSlideIndex]);
|
|
56
|
-
return /* @__PURE__ */ jsxRuntime.jsx(CarouselStateContext.Provider, { value: state, children: /* @__PURE__ */ jsxRuntime.jsx(CarouselDispatchContext.Provider, { value: dispatch, children }) });
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
exports.CarouselDispatchContext = CarouselDispatchContext;
|
|
60
|
-
exports.CarouselProvider = CarouselProvider;
|
|
61
|
-
exports.CarouselStateContext = CarouselStateContext;
|
|
62
|
-
//# sourceMappingURL=CarouselContext.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CarouselContext.js","sources":["../src/carousel/CarouselContext.tsx"],"sourcesContent":["import { createContext, useControlled } from \"@salt-ds/core\";\nimport { type ReactNode, useEffect, useReducer } from \"react\";\nimport {\n type CarouselReducerDispatch,\n type CarouselReducerState,\n carouselReducer,\n} from \"./CarouselReducer\";\n\nexport const CarouselStateContext = createContext<CarouselReducerState>(\n \"CarouselStateContext\",\n {\n slides: new Map(),\n activeSlideIndex: 0,\n visibleSlides: 1,\n focusedSlideIndex: 0,\n carouselId: undefined,\n },\n);\nexport const CarouselDispatchContext = createContext<CarouselReducerDispatch>(\n \"CarouselDispatchContext\",\n () => {\n return;\n },\n);\n\nexport function CarouselProvider({\n children,\n activeSlideIndex: activeSlideIndexProp,\n defaultActiveSlideIndex = 0,\n visibleSlides = 1,\n id,\n}: {\n children: ReactNode;\n activeSlideIndex?: number;\n defaultActiveSlideIndex?: number;\n visibleSlides?: number;\n id?: string;\n}) {\n const [activeSlideIndex, setActiveSlideIndex] = useControlled({\n controlled: activeSlideIndexProp,\n default: defaultActiveSlideIndex,\n name: \"Carousel\",\n state: \"activeSlideIndex\",\n });\n const [state, dispatch] = useReducer(carouselReducer, {\n slides: new Map(),\n focusedSlideIndex: activeSlideIndex,\n activeSlideIndex,\n visibleSlides,\n carouselId: id,\n });\n\n useEffect(() => {\n dispatch({\n type: \"updateSlideCount\",\n payload: visibleSlides,\n });\n }, [visibleSlides]);\n\n useEffect(() => {\n dispatch({\n type: \"moveToIndex\",\n payload: activeSlideIndex,\n });\n }, [activeSlideIndex]);\n\n return (\n <CarouselStateContext.Provider value={state}>\n <CarouselDispatchContext.Provider value={dispatch}>\n {children}\n </CarouselDispatchContext.Provider>\n </CarouselStateContext.Provider>\n );\n}\n"],"names":["createContext","useControlled","useReducer","carouselReducer","useEffect","jsx"],"mappings":";;;;;;;AAQO,MAAM,oBAAuB,GAAAA,kBAAA;AAAA,EAClC,sBAAA;AAAA,EACA;AAAA,IACE,MAAA,sBAAY,GAAI,EAAA;AAAA,IAChB,gBAAkB,EAAA,CAAA;AAAA,IAClB,aAAe,EAAA,CAAA;AAAA,IACf,iBAAmB,EAAA,CAAA;AAAA,IACnB,UAAY,EAAA;AAAA;AAEhB;AACO,MAAM,uBAA0B,GAAAA,kBAAA;AAAA,EACrC,yBAAA;AAAA,EACA,MAAM;AACJ,IAAA;AAAA;AAEJ;AAEO,SAAS,gBAAiB,CAAA;AAAA,EAC/B,QAAA;AAAA,EACA,gBAAkB,EAAA,oBAAA;AAAA,EAClB,uBAA0B,GAAA,CAAA;AAAA,EAC1B,aAAgB,GAAA,CAAA;AAAA,EAChB;AACF,CAMG,EAAA;AACD,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIC,kBAAc,CAAA;AAAA,IAC5D,UAAY,EAAA,oBAAA;AAAA,IACZ,OAAS,EAAA,uBAAA;AAAA,IACT,IAAM,EAAA,UAAA;AAAA,IACN,KAAO,EAAA;AAAA,GACR,CAAA;AACD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIC,iBAAWC,+BAAiB,EAAA;AAAA,IACpD,MAAA,sBAAY,GAAI,EAAA;AAAA,IAChB,iBAAmB,EAAA,gBAAA;AAAA,IACnB,gBAAA;AAAA,IACA,aAAA;AAAA,IACA,UAAY,EAAA;AAAA,GACb,CAAA;AAED,EAAAC,eAAA,CAAU,MAAM;AACd,IAAS,QAAA,CAAA;AAAA,MACP,IAAM,EAAA,kBAAA;AAAA,MACN,OAAS,EAAA;AAAA,KACV,CAAA;AAAA,GACH,EAAG,CAAC,aAAa,CAAC,CAAA;AAElB,EAAAA,eAAA,CAAU,MAAM;AACd,IAAS,QAAA,CAAA;AAAA,MACP,IAAM,EAAA,aAAA;AAAA,MACN,OAAS,EAAA;AAAA,KACV,CAAA;AAAA,GACH,EAAG,CAAC,gBAAgB,CAAC,CAAA;AAErB,EAAA,uBACGC,cAAA,CAAA,oBAAA,CAAqB,QAArB,EAAA,EAA8B,KAAO,EAAA,KAAA,EACpC,QAAC,kBAAAA,cAAA,CAAA,uBAAA,CAAwB,QAAxB,EAAA,EAAiC,KAAO,EAAA,QAAA,EACtC,UACH,CACF,EAAA,CAAA;AAEJ;;;;;;"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var css_248z = ".saltCarouselControls {\n display: flex;\n gap: var(--salt-spacing-100);\n align-items: center;\n grid-area: controls;\n}\n.saltCarouselControls-container {\n display: flex;\n flex-flow: wrap;\n align-items: center;\n gap: var(--salt-spacing-100);\n justify-content: space-between;\n}\n.saltCarouselControls-container:last-child {\n margin-left: auto;\n}\n.saltCarouselControls-container h2 {\n margin: 0;\n}\n\n.saltCarouselControls-sr-only {\n display: none;\n}\n.saltCarouselControls:focus-within .saltCarouselControls-sr-only {\n display: block;\n position: fixed;\n top: 0;\n left: 0;\n transform: translate(-100%, -100%);\n}\n";
|
|
4
|
-
|
|
5
|
-
module.exports = css_248z;
|
|
6
|
-
//# sourceMappingURL=CarouselControls.css.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CarouselControls.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
var core = require('@salt-ds/core');
|
|
5
|
-
var styles = require('@salt-ds/styles');
|
|
6
|
-
var window = require('@salt-ds/window');
|
|
7
|
-
var react = require('react');
|
|
8
|
-
var CarouselContext = require('./CarouselContext.js');
|
|
9
|
-
var CarouselControls$1 = require('./CarouselControls.css.js');
|
|
10
|
-
|
|
11
|
-
const withBaseName = core.makePrefixer("saltCarouselControls");
|
|
12
|
-
const CarouselControls = react.forwardRef(function CarouselControls2({
|
|
13
|
-
onPrevious,
|
|
14
|
-
onNext,
|
|
15
|
-
disabled,
|
|
16
|
-
className,
|
|
17
|
-
title,
|
|
18
|
-
labelPlacement = "right",
|
|
19
|
-
...rest
|
|
20
|
-
}, ref) {
|
|
21
|
-
var _a;
|
|
22
|
-
const targetWindow = window.useWindow();
|
|
23
|
-
styles.useComponentCssInjection({
|
|
24
|
-
testId: "salt-carousel-controls",
|
|
25
|
-
css: CarouselControls$1,
|
|
26
|
-
window: targetWindow
|
|
27
|
-
});
|
|
28
|
-
const { slides, carouselId, activeSlideIndex, visibleSlides } = react.useContext(CarouselContext.CarouselStateContext);
|
|
29
|
-
const dispatch = react.useContext(CarouselContext.CarouselDispatchContext);
|
|
30
|
-
const slideCount = slides.size;
|
|
31
|
-
const { NextIcon, PreviousIcon } = core.useIcon();
|
|
32
|
-
const [isFocused, setIsFocused] = react.useState(false);
|
|
33
|
-
function handleFocusCapture() {
|
|
34
|
-
!isFocused && setIsFocused(true);
|
|
35
|
-
}
|
|
36
|
-
function handleBlurCapture() {
|
|
37
|
-
isFocused && setIsFocused(false);
|
|
38
|
-
}
|
|
39
|
-
const prevButtonRef = react.useRef(null);
|
|
40
|
-
const nextButtonRef = react.useRef(null);
|
|
41
|
-
const slideIds = [...slides.keys()];
|
|
42
|
-
const currentId = slideIds[activeSlideIndex] || null;
|
|
43
|
-
const prevId = slideIds[activeSlideIndex - 1] || null;
|
|
44
|
-
const nextId = slideIds[activeSlideIndex + 1] || null;
|
|
45
|
-
const isOnFirstSlide = activeSlideIndex === 0;
|
|
46
|
-
const isOnLastSlide = activeSlideIndex === slideCount - visibleSlides;
|
|
47
|
-
const isAnnouncerOn = nextButtonRef.current === document.activeElement || prevButtonRef.current === document.activeElement;
|
|
48
|
-
const currentSlideDescription = visibleSlides === 1 && currentId && ((_a = slides.get(currentId)) == null ? void 0 : _a.slideDescription) || void 0;
|
|
49
|
-
const controlsLabel = slideCount >= 1 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
50
|
-
core.Text,
|
|
51
|
-
{
|
|
52
|
-
as: "span",
|
|
53
|
-
"aria-live": isAnnouncerOn ? "polite" : void 0,
|
|
54
|
-
"aria-atomic": "false",
|
|
55
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs("strong", { children: [
|
|
56
|
-
`${activeSlideIndex + 1} ${visibleSlides > 1 && slideCount > 1 ? ` - ${activeSlideIndex + visibleSlides}` : ""} of
|
|
57
|
-
${slideCount}`,
|
|
58
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "saltCarouselControls-sr-only", children: currentSlideDescription })
|
|
59
|
-
] })
|
|
60
|
-
}
|
|
61
|
-
);
|
|
62
|
-
function handlePrevClick(event) {
|
|
63
|
-
if (!prevId) return;
|
|
64
|
-
dispatch({ type: "scroll", payload: prevId });
|
|
65
|
-
onPrevious == null ? void 0 : onPrevious(event, slideIds.indexOf(prevId));
|
|
66
|
-
}
|
|
67
|
-
function handleNextClick(event) {
|
|
68
|
-
if (!nextId) return;
|
|
69
|
-
dispatch({ type: "scroll", payload: nextId });
|
|
70
|
-
onNext == null ? void 0 : onNext(event, slideIds.indexOf(nextId));
|
|
71
|
-
}
|
|
72
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: withBaseName("container"), ref, ...rest, children: [
|
|
73
|
-
title,
|
|
74
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
75
|
-
"div",
|
|
76
|
-
{
|
|
77
|
-
className: withBaseName(),
|
|
78
|
-
ref,
|
|
79
|
-
...rest,
|
|
80
|
-
onFocusCapture: handleFocusCapture,
|
|
81
|
-
onBlurCapture: handleBlurCapture,
|
|
82
|
-
children: [
|
|
83
|
-
(labelPlacement === "left" || title) && controlsLabel,
|
|
84
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
85
|
-
core.Button,
|
|
86
|
-
{
|
|
87
|
-
ref: prevButtonRef,
|
|
88
|
-
focusableWhenDisabled: true,
|
|
89
|
-
appearance: "bordered",
|
|
90
|
-
sentiment: "neutral",
|
|
91
|
-
className: withBaseName("prev-button"),
|
|
92
|
-
onClick: handlePrevClick,
|
|
93
|
-
disabled: isOnFirstSlide || disabled,
|
|
94
|
-
"aria-controls": carouselId,
|
|
95
|
-
"aria-label": `Previous slide${visibleSlides > 1 ? "s" : ""}`,
|
|
96
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(PreviousIcon, { "aria-hidden": true })
|
|
97
|
-
}
|
|
98
|
-
),
|
|
99
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
100
|
-
core.Button,
|
|
101
|
-
{
|
|
102
|
-
ref: nextButtonRef,
|
|
103
|
-
focusableWhenDisabled: true,
|
|
104
|
-
appearance: "bordered",
|
|
105
|
-
sentiment: "neutral",
|
|
106
|
-
className: withBaseName("next-button"),
|
|
107
|
-
onClick: handleNextClick,
|
|
108
|
-
disabled: isOnLastSlide || disabled,
|
|
109
|
-
"aria-controls": carouselId,
|
|
110
|
-
"aria-label": `Next slide${visibleSlides > 1 ? "s" : ""}`,
|
|
111
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(NextIcon, { "aria-hidden": true })
|
|
112
|
-
}
|
|
113
|
-
),
|
|
114
|
-
labelPlacement === "right" && !title && controlsLabel
|
|
115
|
-
]
|
|
116
|
-
}
|
|
117
|
-
)
|
|
118
|
-
] });
|
|
119
|
-
});
|
|
120
|
-
|
|
121
|
-
exports.CarouselControls = CarouselControls;
|
|
122
|
-
//# sourceMappingURL=CarouselControls.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CarouselControls.js","sources":["../src/carousel/CarouselControls.tsx"],"sourcesContent":["import { Button, Text, makePrefixer, useIcon } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport {\n type HTMLAttributes,\n type MouseEvent,\n type ReactNode,\n type SyntheticEvent,\n forwardRef,\n useContext,\n useRef,\n useState,\n} from \"react\";\nimport {\n CarouselDispatchContext,\n CarouselStateContext,\n} from \"./CarouselContext\";\n\nimport carouselControlsCss from \"./CarouselControls.css\";\n\nconst withBaseName = makePrefixer(\"saltCarouselControls\");\n\nexport interface CarouselControlsProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"title\"> {\n /**\n * Callback when Back button is clicked.\n */\n onPrevious?: (\n event: SyntheticEvent<HTMLButtonElement>,\n index: number,\n ) => void;\n /**\n * Callback when Next button is clicked.\n */\n onNext?: (event: SyntheticEvent<HTMLButtonElement>, index: number) => void;\n /**\n * Location of the label relative to the controls.\n *\n * Either 'left', or 'right'`.\n */\n labelPlacement?: \"left\" | \"right\";\n /**\n * If `true`, the carousel controls will be disabled.\n * **/\n disabled?: boolean;\n /**\n * The title of the carousel that accompanies the controls.\n */\n title?: ReactNode;\n}\n\nexport const CarouselControls = forwardRef<\n HTMLDivElement,\n CarouselControlsProps\n>(function CarouselControls(\n {\n onPrevious,\n onNext,\n disabled,\n className,\n title,\n labelPlacement = \"right\",\n ...rest\n },\n ref,\n) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-carousel-controls\",\n css: carouselControlsCss,\n window: targetWindow,\n });\n const { slides, carouselId, activeSlideIndex, visibleSlides } =\n useContext(CarouselStateContext);\n const dispatch = useContext(CarouselDispatchContext);\n\n const slideCount = slides.size;\n const { NextIcon, PreviousIcon } = useIcon();\n\n const [isFocused, setIsFocused] = useState(false);\n function handleFocusCapture() {\n !isFocused && setIsFocused(true);\n }\n function handleBlurCapture() {\n isFocused && setIsFocused(false);\n }\n\n const prevButtonRef = useRef<HTMLButtonElement>(null);\n const nextButtonRef = useRef<HTMLButtonElement>(null);\n const slideIds = [...slides.keys()];\n\n const currentId = slideIds[activeSlideIndex] || null;\n const prevId = slideIds[activeSlideIndex - 1] || null;\n const nextId = slideIds[activeSlideIndex + 1] || null;\n\n const isOnFirstSlide = activeSlideIndex === 0;\n const isOnLastSlide = activeSlideIndex === slideCount - visibleSlides;\n\n const isAnnouncerOn =\n nextButtonRef.current === document.activeElement ||\n prevButtonRef.current === document.activeElement;\n\n const currentSlideDescription =\n (visibleSlides === 1 &&\n currentId &&\n slides.get(currentId)?.slideDescription) ||\n undefined;\n\n const controlsLabel = slideCount >= 1 && (\n <Text\n as=\"span\"\n aria-live={isAnnouncerOn ? \"polite\" : undefined}\n aria-atomic=\"false\"\n >\n <strong>\n {`${activeSlideIndex + 1} ${visibleSlides > 1 && slideCount > 1 ? ` - ${activeSlideIndex + visibleSlides}` : \"\"} of\n ${slideCount}`}\n\n {\n <span className=\"saltCarouselControls-sr-only\">\n {currentSlideDescription}\n </span>\n }\n </strong>\n </Text>\n );\n\n function handlePrevClick(event: MouseEvent<HTMLButtonElement>) {\n if (!prevId) return;\n dispatch({ type: \"scroll\", payload: prevId });\n onPrevious?.(event, slideIds.indexOf(prevId));\n }\n\n function handleNextClick(event: MouseEvent<HTMLButtonElement>) {\n if (!nextId) return;\n dispatch({ type: \"scroll\", payload: nextId });\n onNext?.(event, slideIds.indexOf(nextId));\n }\n\n return (\n <div className={withBaseName(\"container\")} ref={ref} {...rest}>\n {title}\n <div\n className={withBaseName()}\n ref={ref}\n {...rest}\n onFocusCapture={handleFocusCapture}\n onBlurCapture={handleBlurCapture}\n >\n {(labelPlacement === \"left\" || title) && controlsLabel}\n <Button\n ref={prevButtonRef}\n focusableWhenDisabled\n appearance=\"bordered\"\n sentiment=\"neutral\"\n className={withBaseName(\"prev-button\")}\n onClick={handlePrevClick}\n disabled={isOnFirstSlide || disabled}\n aria-controls={carouselId}\n aria-label={`Previous slide${visibleSlides > 1 ? \"s\" : \"\"}`}\n >\n <PreviousIcon aria-hidden />\n </Button>\n <Button\n ref={nextButtonRef}\n focusableWhenDisabled\n appearance=\"bordered\"\n sentiment=\"neutral\"\n className={withBaseName(\"next-button\")}\n onClick={handleNextClick}\n disabled={isOnLastSlide || disabled}\n aria-controls={carouselId}\n aria-label={`Next slide${visibleSlides > 1 ? \"s\" : \"\"}`}\n >\n <NextIcon aria-hidden />\n </Button>\n {labelPlacement === \"right\" && !title && controlsLabel}\n </div>\n </div>\n );\n});\n"],"names":["makePrefixer","forwardRef","CarouselControls","useWindow","useComponentCssInjection","carouselControlsCss","useContext","CarouselStateContext","CarouselDispatchContext","useIcon","useState","useRef","jsx","Text","jsxs","Button"],"mappings":"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"}
|