@salt-ds/lab 1.0.0-alpha.50 → 1.0.0-alpha.52
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 -267
- package/dist-cjs/calendar/Calendar.css.js +1 -1
- package/dist-cjs/calendar/Calendar.js +6 -15
- package/dist-cjs/calendar/Calendar.js.map +1 -1
- package/dist-cjs/calendar/CalendarNavigation.css.js +6 -0
- package/dist-cjs/calendar/{internal/CalendarNavigation.js → CalendarNavigation.js} +160 -63
- package/dist-cjs/calendar/CalendarNavigation.js.map +1 -0
- package/dist-cjs/calendar/formatDate.js +56 -0
- package/dist-cjs/calendar/formatDate.js.map +1 -0
- package/dist-cjs/calendar/internal/CalendarCarousel.js +3 -3
- package/dist-cjs/calendar/internal/CalendarCarousel.js.map +1 -1
- package/dist-cjs/calendar/internal/CalendarDay.css.js +1 -1
- package/dist-cjs/calendar/internal/CalendarDay.js +45 -33
- package/dist-cjs/calendar/internal/CalendarDay.js.map +1 -1
- package/dist-cjs/calendar/internal/CalendarMonth.js +3 -2
- package/dist-cjs/calendar/internal/CalendarMonth.js.map +1 -1
- package/dist-cjs/calendar/internal/CalendarWeekHeader.js +3 -3
- package/dist-cjs/calendar/internal/CalendarWeekHeader.js.map +1 -1
- package/dist-cjs/calendar/internal/useFocusManagement.js +7 -4
- package/dist-cjs/calendar/internal/useFocusManagement.js.map +1 -1
- package/dist-cjs/calendar/internal/utils.js +28 -23
- package/dist-cjs/calendar/internal/utils.js.map +1 -1
- package/dist-cjs/calendar/useCalendar.js +94 -45
- package/dist-cjs/calendar/useCalendar.js.map +1 -1
- package/dist-cjs/calendar/useCalendarDay.js +19 -10
- package/dist-cjs/calendar/useCalendarDay.js.map +1 -1
- package/dist-cjs/calendar/useCalendarSelection.js +360 -0
- package/dist-cjs/calendar/useCalendarSelection.js.map +1 -0
- package/dist-cjs/cascading-menu/internal/useMouseHandlers.js.map +1 -1
- package/dist-cjs/color-chooser/ColorChooser.js.map +1 -1
- package/dist-cjs/combo-box-deprecated/ComboBox.css.js +1 -1
- package/dist-cjs/common-hooks/useCollectionItems.js.map +1 -1
- package/dist-cjs/content-status/ContentStatus.css.js +1 -1
- package/dist-cjs/date-input/DateInput.css.js +1 -1
- package/dist-cjs/date-input/DateInputRange.js +355 -0
- package/dist-cjs/date-input/DateInputRange.js.map +1 -0
- package/dist-cjs/date-input/DateInputSingle.js +229 -0
- package/dist-cjs/date-input/DateInputSingle.js.map +1 -0
- package/dist-cjs/date-input/utils.js +65 -0
- package/dist-cjs/date-input/utils.js.map +1 -0
- package/dist-cjs/date-picker/DatePicker.js +40 -148
- package/dist-cjs/date-picker/DatePicker.js.map +1 -1
- package/dist-cjs/date-picker/DatePickerActions.css.js +6 -0
- package/dist-cjs/date-picker/DatePickerActions.css.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerActions.js +102 -0
- package/dist-cjs/date-picker/DatePickerActions.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerContext.js +23 -17
- package/dist-cjs/date-picker/DatePickerContext.js.map +1 -1
- package/dist-cjs/date-picker/DatePickerOverlay.css.js +6 -0
- package/dist-cjs/date-picker/DatePickerOverlay.css.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerOverlay.js +50 -0
- package/dist-cjs/date-picker/DatePickerOverlay.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerOverlayProvider.js +105 -0
- package/dist-cjs/date-picker/DatePickerOverlayProvider.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerPanel.css.js +1 -1
- package/dist-cjs/date-picker/DatePickerRangeInput.js +118 -0
- package/dist-cjs/date-picker/DatePickerRangeInput.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerRangePanel.js +206 -0
- package/dist-cjs/date-picker/DatePickerRangePanel.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerSingleInput.js +97 -0
- package/dist-cjs/date-picker/DatePickerSingleInput.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerSinglePanel.js +138 -0
- package/dist-cjs/date-picker/DatePickerSinglePanel.js.map +1 -0
- package/dist-cjs/date-picker/useDatePicker.js +179 -0
- package/dist-cjs/date-picker/useDatePicker.js.map +1 -0
- package/dist-cjs/dropdown/Dropdown.css.js +1 -1
- package/dist-cjs/dropdown/DropdownBase.js +1 -1
- package/dist-cjs/dropdown/DropdownBase.js.map +1 -1
- package/dist-cjs/dropdown/useDropdown.js.map +1 -1
- package/dist-cjs/form-field-legacy/FormLabel.js.map +1 -1
- package/dist-cjs/index.js +43 -10
- package/dist-cjs/index.js.map +1 -1
- package/dist-cjs/list/List.js.map +1 -1
- package/dist-cjs/menu-button/MenuButtonTrigger.css.js +1 -1
- package/dist-cjs/query-input/QueryInput.css.js +1 -1
- package/dist-cjs/slider/Slider.css.js +1 -1
- package/dist-cjs/slider/Slider.js +53 -105
- package/dist-cjs/slider/Slider.js.map +1 -1
- package/dist-cjs/slider/internal/SliderContext.js +21 -0
- package/dist-cjs/slider/internal/SliderContext.js.map +1 -0
- package/dist-cjs/slider/internal/SliderMarks.js +31 -0
- package/dist-cjs/slider/internal/SliderMarks.js.map +1 -0
- package/dist-cjs/slider/internal/SliderSelection.js +17 -10
- package/dist-cjs/slider/internal/SliderSelection.js.map +1 -1
- package/dist-cjs/slider/internal/SliderThumb.js +77 -0
- package/dist-cjs/slider/internal/SliderThumb.js.map +1 -0
- package/dist-cjs/slider/internal/SliderTrack.js +91 -0
- package/dist-cjs/slider/internal/SliderTrack.js.map +1 -0
- package/dist-cjs/slider/internal/useKeyDownThumb.js +53 -0
- package/dist-cjs/slider/internal/useKeyDownThumb.js.map +1 -0
- package/dist-cjs/slider/internal/utils.js +78 -116
- package/dist-cjs/slider/internal/utils.js.map +1 -1
- package/dist-cjs/stepped-tracker/TrackerStep/TrackerStep.css.js +1 -1
- package/dist-cjs/stepped-tracker/TrackerStep/TrackerStep.js +29 -25
- package/dist-cjs/stepped-tracker/TrackerStep/TrackerStep.js.map +1 -1
- package/dist-cjs/tabs/TabActivationIndicator.css.js +1 -1
- package/dist-cjs/tabs/Tabstrip.css.js +1 -1
- package/dist-cjs/tabs/useTabs.js.map +1 -1
- package/dist-cjs/toolbar/overflow-panel/OverflowPanel.css.js +1 -1
- package/dist-cjs/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
- package/dist-es/calendar/Calendar.css.js +1 -1
- package/dist-es/calendar/Calendar.js +7 -16
- package/dist-es/calendar/Calendar.js.map +1 -1
- package/dist-es/calendar/CalendarNavigation.css.js +4 -0
- package/dist-es/calendar/CalendarNavigation.js +308 -0
- package/dist-es/calendar/CalendarNavigation.js.map +1 -0
- package/dist-es/calendar/formatDate.js +51 -0
- package/dist-es/calendar/formatDate.js.map +1 -0
- package/dist-es/calendar/internal/CalendarCarousel.js +3 -3
- package/dist-es/calendar/internal/CalendarCarousel.js.map +1 -1
- package/dist-es/calendar/internal/CalendarDay.css.js +1 -1
- package/dist-es/calendar/internal/CalendarDay.js +45 -33
- package/dist-es/calendar/internal/CalendarDay.js.map +1 -1
- package/dist-es/calendar/internal/CalendarMonth.js +3 -2
- package/dist-es/calendar/internal/CalendarMonth.js.map +1 -1
- package/dist-es/calendar/internal/CalendarWeekHeader.js +3 -3
- package/dist-es/calendar/internal/CalendarWeekHeader.js.map +1 -1
- package/dist-es/calendar/internal/useFocusManagement.js +7 -4
- package/dist-es/calendar/internal/useFocusManagement.js.map +1 -1
- package/dist-es/calendar/internal/utils.js +29 -23
- package/dist-es/calendar/internal/utils.js.map +1 -1
- package/dist-es/calendar/useCalendar.js +96 -47
- package/dist-es/calendar/useCalendar.js.map +1 -1
- package/dist-es/calendar/useCalendarDay.js +20 -11
- package/dist-es/calendar/useCalendarDay.js.map +1 -1
- package/dist-es/calendar/useCalendarSelection.js +350 -0
- package/dist-es/calendar/useCalendarSelection.js.map +1 -0
- package/dist-es/cascading-menu/internal/useMouseHandlers.js.map +1 -1
- package/dist-es/color-chooser/ColorChooser.js.map +1 -1
- package/dist-es/combo-box-deprecated/ComboBox.css.js +1 -1
- package/dist-es/common-hooks/useCollectionItems.js.map +1 -1
- package/dist-es/content-status/ContentStatus.css.js +1 -1
- package/dist-es/date-input/DateInput.css.js +1 -1
- package/dist-es/date-input/DateInputRange.js +351 -0
- package/dist-es/date-input/DateInputRange.js.map +1 -0
- package/dist-es/date-input/DateInputSingle.js +225 -0
- package/dist-es/date-input/DateInputSingle.js.map +1 -0
- package/dist-es/date-input/utils.js +57 -0
- package/dist-es/date-input/utils.js.map +1 -0
- package/dist-es/date-picker/DatePicker.js +43 -152
- package/dist-es/date-picker/DatePicker.js.map +1 -1
- package/dist-es/date-picker/DatePickerActions.css.js +4 -0
- package/dist-es/date-picker/DatePickerActions.css.js.map +1 -0
- package/dist-es/date-picker/DatePickerActions.js +98 -0
- package/dist-es/date-picker/DatePickerActions.js.map +1 -0
- package/dist-es/date-picker/DatePickerContext.js +22 -17
- package/dist-es/date-picker/DatePickerContext.js.map +1 -1
- package/dist-es/date-picker/DatePickerOverlay.css.js +4 -0
- package/dist-es/date-picker/DatePickerOverlay.css.js.map +1 -0
- package/dist-es/date-picker/DatePickerOverlay.js +46 -0
- package/dist-es/date-picker/DatePickerOverlay.js.map +1 -0
- package/dist-es/date-picker/DatePickerOverlayProvider.js +100 -0
- package/dist-es/date-picker/DatePickerOverlayProvider.js.map +1 -0
- package/dist-es/date-picker/DatePickerPanel.css.js +1 -1
- package/dist-es/date-picker/DatePickerRangeInput.js +114 -0
- package/dist-es/date-picker/DatePickerRangeInput.js.map +1 -0
- package/dist-es/date-picker/DatePickerRangePanel.js +198 -0
- package/dist-es/date-picker/DatePickerRangePanel.js.map +1 -0
- package/dist-es/date-picker/DatePickerSingleInput.js +93 -0
- package/dist-es/date-picker/DatePickerSingleInput.js.map +1 -0
- package/dist-es/date-picker/DatePickerSinglePanel.js +130 -0
- package/dist-es/date-picker/DatePickerSinglePanel.js.map +1 -0
- package/dist-es/date-picker/useDatePicker.js +175 -0
- package/dist-es/date-picker/useDatePicker.js.map +1 -0
- package/dist-es/dropdown/Dropdown.css.js +1 -1
- package/dist-es/dropdown/DropdownBase.js +1 -1
- package/dist-es/dropdown/DropdownBase.js.map +1 -1
- package/dist-es/dropdown/useDropdown.js.map +1 -1
- package/dist-es/form-field-legacy/FormLabel.js.map +1 -1
- package/dist-es/index.js +14 -3
- package/dist-es/index.js.map +1 -1
- package/dist-es/list/List.js.map +1 -1
- package/dist-es/menu-button/MenuButtonTrigger.css.js +1 -1
- package/dist-es/query-input/QueryInput.css.js +1 -1
- package/dist-es/slider/Slider.css.js +1 -1
- package/dist-es/slider/Slider.js +55 -107
- package/dist-es/slider/Slider.js.map +1 -1
- package/dist-es/slider/internal/SliderContext.js +16 -0
- package/dist-es/slider/internal/SliderContext.js.map +1 -0
- package/dist-es/slider/internal/SliderMarks.js +27 -0
- package/dist-es/slider/internal/SliderMarks.js.map +1 -0
- package/dist-es/slider/internal/SliderSelection.js +17 -10
- package/dist-es/slider/internal/SliderSelection.js.map +1 -1
- package/dist-es/slider/internal/SliderThumb.js +73 -0
- package/dist-es/slider/internal/SliderThumb.js.map +1 -0
- package/dist-es/slider/internal/SliderTrack.js +87 -0
- package/dist-es/slider/internal/SliderTrack.js.map +1 -0
- package/dist-es/slider/internal/useKeyDownThumb.js +49 -0
- package/dist-es/slider/internal/useKeyDownThumb.js.map +1 -0
- package/dist-es/slider/internal/utils.js +70 -111
- package/dist-es/slider/internal/utils.js.map +1 -1
- package/dist-es/stepped-tracker/TrackerStep/TrackerStep.css.js +1 -1
- package/dist-es/stepped-tracker/TrackerStep/TrackerStep.js +30 -26
- package/dist-es/stepped-tracker/TrackerStep/TrackerStep.js.map +1 -1
- package/dist-es/tabs/TabActivationIndicator.css.js +1 -1
- package/dist-es/tabs/Tabstrip.css.js +1 -1
- package/dist-es/tabs/useTabs.js.map +1 -1
- package/dist-es/toolbar/overflow-panel/OverflowPanel.css.js +1 -1
- package/dist-es/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
- package/dist-types/calendar/Calendar.d.ts +63 -5
- package/dist-types/calendar/CalendarNavigation.d.ts +57 -0
- package/dist-types/calendar/formatDate.d.ts +14 -0
- package/dist-types/calendar/index.d.ts +3 -1
- package/dist-types/calendar/internal/CalendarDay.d.ts +2 -1
- package/dist-types/calendar/internal/CalendarWeekHeader.d.ts +4 -4
- package/dist-types/calendar/internal/useFocusManagement.d.ts +2 -1
- package/dist-types/calendar/internal/utils.d.ts +7 -8
- package/dist-types/calendar/useCalendar.d.ts +100 -16
- package/dist-types/calendar/useCalendarDay.d.ts +38 -0
- package/dist-types/calendar/useCalendarSelection.d.ts +189 -0
- package/dist-types/date-input/DateInputRange.d.ts +150 -0
- package/dist-types/date-input/DateInputSingle.d.ts +117 -0
- package/dist-types/date-input/index.d.ts +3 -1
- package/dist-types/date-input/utils.d.ts +43 -0
- package/dist-types/date-picker/DatePicker.d.ts +20 -62
- package/dist-types/date-picker/DatePickerActions.d.ts +80 -0
- package/dist-types/date-picker/DatePickerContext.d.ts +180 -17
- package/dist-types/date-picker/DatePickerOverlay.d.ts +11 -0
- package/dist-types/date-picker/DatePickerOverlayProvider.d.ts +67 -0
- package/dist-types/date-picker/DatePickerRangeInput.d.ts +7 -0
- package/dist-types/date-picker/DatePickerRangePanel.d.ts +64 -0
- package/dist-types/date-picker/DatePickerSingleInput.d.ts +7 -0
- package/dist-types/date-picker/DatePickerSinglePanel.d.ts +42 -0
- package/dist-types/date-picker/index.d.ts +7 -0
- package/dist-types/date-picker/useDatePicker.d.ts +112 -0
- package/dist-types/slider/Slider.d.ts +23 -10
- package/dist-types/slider/internal/SliderContext.d.ts +11 -0
- package/dist-types/slider/internal/SliderMarks.d.ts +7 -0
- package/dist-types/slider/internal/SliderSelection.d.ts +3 -3
- package/dist-types/slider/internal/SliderThumb.d.ts +8 -0
- package/dist-types/slider/internal/SliderTrack.d.ts +4 -0
- package/dist-types/slider/internal/index.d.ts +3 -0
- package/dist-types/slider/internal/useKeyDownThumb.d.ts +2 -0
- package/dist-types/slider/internal/utils.d.ts +18 -10
- package/dist-types/slider/types.d.ts +3 -1
- package/dist-types/stepped-tracker/TrackerStep/TrackerStep.d.ts +11 -3
- package/package.json +3 -3
- package/dist-cjs/calendar/internal/CalendarNavigation.css.js +0 -6
- package/dist-cjs/calendar/internal/CalendarNavigation.js.map +0 -1
- package/dist-cjs/calendar/useSelection.js +0 -249
- package/dist-cjs/calendar/useSelection.js.map +0 -1
- package/dist-cjs/date-input/DateInput.js +0 -281
- package/dist-cjs/date-input/DateInput.js.map +0 -1
- package/dist-cjs/date-picker/DatePickerPanel.js +0 -155
- package/dist-cjs/date-picker/DatePickerPanel.js.map +0 -1
- package/dist-cjs/slider/internal/SliderHandle.js +0 -44
- package/dist-cjs/slider/internal/SliderHandle.js.map +0 -1
- package/dist-cjs/slider/internal/SliderMarkLabels.js +0 -45
- package/dist-cjs/slider/internal/SliderMarkLabels.js.map +0 -1
- package/dist-cjs/slider/internal/SliderRail.js +0 -25
- package/dist-cjs/slider/internal/SliderRail.js.map +0 -1
- package/dist-cjs/slider/internal/SliderRailMarks.js +0 -48
- package/dist-cjs/slider/internal/SliderRailMarks.js.map +0 -1
- package/dist-cjs/slider/internal/styles.js +0 -99
- package/dist-cjs/slider/internal/styles.js.map +0 -1
- package/dist-cjs/slider/internal/useSliderKeyDown.js +0 -50
- package/dist-cjs/slider/internal/useSliderKeyDown.js.map +0 -1
- package/dist-cjs/slider/internal/useSliderMouseDown.js +0 -96
- package/dist-cjs/slider/internal/useSliderMouseDown.js.map +0 -1
- package/dist-es/calendar/internal/CalendarNavigation.css.js +0 -4
- package/dist-es/calendar/internal/CalendarNavigation.js +0 -211
- package/dist-es/calendar/internal/CalendarNavigation.js.map +0 -1
- package/dist-es/calendar/useSelection.js +0 -242
- package/dist-es/calendar/useSelection.js.map +0 -1
- package/dist-es/date-input/DateInput.js +0 -277
- package/dist-es/date-input/DateInput.js.map +0 -1
- package/dist-es/date-picker/DatePickerPanel.js +0 -151
- package/dist-es/date-picker/DatePickerPanel.js.map +0 -1
- package/dist-es/slider/internal/SliderHandle.js +0 -40
- package/dist-es/slider/internal/SliderHandle.js.map +0 -1
- package/dist-es/slider/internal/SliderMarkLabels.js +0 -41
- package/dist-es/slider/internal/SliderMarkLabels.js.map +0 -1
- package/dist-es/slider/internal/SliderRail.js +0 -21
- package/dist-es/slider/internal/SliderRail.js.map +0 -1
- package/dist-es/slider/internal/SliderRailMarks.js +0 -44
- package/dist-es/slider/internal/SliderRailMarks.js.map +0 -1
- package/dist-es/slider/internal/styles.js +0 -91
- package/dist-es/slider/internal/styles.js.map +0 -1
- package/dist-es/slider/internal/useSliderKeyDown.js +0 -46
- package/dist-es/slider/internal/useSliderKeyDown.js.map +0 -1
- package/dist-es/slider/internal/useSliderMouseDown.js +0 -92
- package/dist-es/slider/internal/useSliderMouseDown.js.map +0 -1
- package/dist-types/calendar/internal/CalendarNavigation.d.ts +0 -15
- package/dist-types/calendar/useSelection.d.ts +0 -78
- package/dist-types/date-input/DateInput.d.ts +0 -56
- package/dist-types/date-picker/DatePickerPanel.d.ts +0 -10
- package/dist-types/slider/internal/SliderHandle.d.ts +0 -11
- package/dist-types/slider/internal/SliderMarkLabels.d.ts +0 -7
- package/dist-types/slider/internal/SliderRail.d.ts +0 -1
- package/dist-types/slider/internal/SliderRailMarks.d.ts +0 -12
- package/dist-types/slider/internal/styles.d.ts +0 -10
- package/dist-types/slider/internal/useSliderKeyDown.d.ts +0 -4
- package/dist-types/slider/internal/useSliderMouseDown.d.ts +0 -4
- /package/dist-cjs/calendar/{internal/CalendarNavigation.css.js.map → CalendarNavigation.css.js.map} +0 -0
- /package/dist-es/calendar/{internal/CalendarNavigation.css.js.map → CalendarNavigation.css.js.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var css_248z = ".
|
|
3
|
+
var css_248z = ".saltSlider {\n display: grid;\n gap: var(--salt-spacing-100);\n grid-template-columns: auto 1fr auto;\n user-select: none;\n}\n\n.saltSlider-label {\n height: var(--salt-size-base);\n display: flex;\n align-items: center;\n}\n\n.saltSlider-bottomLabel {\n grid-template-columns: 1fr;\n gap: 0;\n}\n.saltSlider-bottomLabel .saltSlider-label {\n height: auto;\n}\n\n.saltSlider-labelMinBottom {\n grid-row: 2;\n grid-column: 1;\n justify-self: start;\n width: min-content;\n}\n\n.saltSlider-labelMaxBottom {\n grid-row: 2;\n grid-column: 1;\n justify-self: end;\n width: min-content;\n}\n\n.saltSliderTrack {\n display: flex;\n position: relative;\n cursor: pointer;\n align-items: center;\n height: var(--salt-size-base);\n}\n\n.saltSliderTrack-rail {\n height: var(--salt-size-bar);\n background: var(--salt-track-borderColor);\n width: 100%;\n position: absolute;\n}\n\n.saltSliderTrack:active {\n cursor: grabbing;\n}\n\n.saltSliderThumb-container {\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n transform: translate(-50%, 0%);\n width: var(--salt-size-base);\n height: var(--salt-size-base);\n}\n\n.saltSliderThumb-tooltip {\n background: var(--salt-container-primary-background);\n border-color: var(--salt-status-info-borderColor);\n border-style: var(--salt-container-borderStyle);\n border-width: var(--salt-size-border);\n line-height: var(--salt-text-lineHeight);\n box-shadow: var(--salt-overlayable-shadow-popout);\n color: var(--salt-content-primary-foreground);\n max-width: var(--saltTooltip-maxWidth, 230px);\n padding: var(--saltTooltip-padding, var(--salt-size-unit));\n position: absolute;\n z-index: var(--salt-zIndex-flyover);\n transform: translate(0, -100%);\n display: none;\n}\n\n.saltSliderThumb-tooltip-arrow {\n position: absolute;\n pointer-events: none;\n top: 100%;\n left: 50%;\n transform: translate(-50%, 0);\n stroke: none;\n fill: var(--salt-container-primary-background);\n stroke: var(--salt-status-info-borderColor);\n stroke-width: var(--salt-size-border);\n width: var(--salt-size-icon);\n height: var(--salt-size-icon);\n}\n\n.saltSliderThumb-tooltip-visible {\n display: block;\n}\n\n.saltSliderThumb-container:hover .saltSliderThumb-tooltip {\n display: block;\n}\n\n.saltSliderThumb {\n position: relative;\n width: var(--salt-size-indicator);\n height: var(--salt-size-selectable);\n background: var(--salt-accent-borderColor);\n}\n\n.saltSliderThumb:focus-visible {\n outline-style: var(--salt-focused-outlineStyle);\n outline-width: var(--salt-focused-outlineWidth);\n outline-offset: var(--salt-focused-outlineOffset);\n outline-color: var(--salt-focused-outlineColor);\n}\n\n.saltSliderSelection {\n height: var(--salt-size-bar);\n background: var(--salt-accent-borderColor);\n align-items: start;\n position: absolute;\n}\n\n.saltSliderSelection-range {\n align-items: center;\n}\n\n.saltSliderMarks {\n position: relative;\n}\n\n.saltSliderMarks-mark {\n position: absolute;\n transform: translate(-50%);\n line-height: var(--salt-text-lineHeight);\n}\n";
|
|
4
4
|
|
|
5
5
|
module.exports = css_248z;
|
|
6
6
|
//# sourceMappingURL=Slider.css.js.map
|
|
@@ -4,42 +4,31 @@ 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 clsx = require('clsx');
|
|
8
|
-
var react = require('react');
|
|
9
|
-
var SliderHandle = require('./internal/SliderHandle.js');
|
|
10
|
-
var SliderMarkLabels = require('./internal/SliderMarkLabels.js');
|
|
11
|
-
var SliderRail = require('./internal/SliderRail.js');
|
|
12
|
-
var SliderRailMarks = require('./internal/SliderRailMarks.js');
|
|
13
|
-
var SliderSelection = require('./internal/SliderSelection.js');
|
|
14
|
-
var styles$1 = require('./internal/styles.js');
|
|
15
|
-
var useSliderKeyDown = require('./internal/useSliderKeyDown.js');
|
|
16
|
-
var useSliderMouseDown = require('./internal/useSliderMouseDown.js');
|
|
17
|
-
var utils = require('./internal/utils.js');
|
|
18
7
|
var styles = require('@salt-ds/styles');
|
|
19
8
|
var window = require('@salt-ds/window');
|
|
9
|
+
var clsx = require('clsx');
|
|
10
|
+
var react = require('react');
|
|
11
|
+
var SliderTrack = require('./internal/SliderTrack.js');
|
|
12
|
+
var SliderMarks = require('./internal/SliderMarks.js');
|
|
13
|
+
var SliderContext = require('./internal/SliderContext.js');
|
|
20
14
|
var Slider$1 = require('./Slider.css.js');
|
|
15
|
+
var utils = require('./internal/utils.js');
|
|
21
16
|
|
|
22
17
|
const withBaseName = core.makePrefixer("saltSlider");
|
|
23
18
|
const defaultMin = 0;
|
|
24
|
-
const defaultMax =
|
|
19
|
+
const defaultMax = 10;
|
|
25
20
|
const defaultStep = 1;
|
|
26
21
|
const Slider = react.forwardRef(function Slider2({
|
|
27
22
|
min = defaultMin,
|
|
28
23
|
max = defaultMax,
|
|
29
24
|
step = defaultStep,
|
|
30
|
-
pageStep = step,
|
|
31
25
|
value: valueProp,
|
|
32
|
-
defaultValue =
|
|
26
|
+
defaultValue = [0],
|
|
33
27
|
onChange,
|
|
34
|
-
label,
|
|
35
28
|
className,
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
marks,
|
|
40
|
-
hideMarks,
|
|
41
|
-
hideMarkLabels,
|
|
42
|
-
...restProps
|
|
29
|
+
"aria-label": ariaLabel,
|
|
30
|
+
marks = "inline",
|
|
31
|
+
...rest
|
|
43
32
|
}, ref) {
|
|
44
33
|
const targetWindow = window.useWindow();
|
|
45
34
|
styles.useComponentCssInjection({
|
|
@@ -47,95 +36,54 @@ const Slider = react.forwardRef(function Slider2({
|
|
|
47
36
|
css: Slider$1,
|
|
48
37
|
window: targetWindow
|
|
49
38
|
});
|
|
50
|
-
const trackRef = react.useRef(null);
|
|
51
39
|
const [value, setValue] = core.useControlled({
|
|
52
|
-
controlled: valueProp,
|
|
40
|
+
controlled: utils.parseValueProp(valueProp, min, max),
|
|
53
41
|
default: defaultValue,
|
|
54
42
|
name: "Slider",
|
|
55
43
|
state: "Value"
|
|
56
44
|
});
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
onKeyDown: disabled ? void 0 : onKeyDown,
|
|
97
|
-
"aria-label": `${label} slider from ${min} to ${max}`,
|
|
98
|
-
role: "group",
|
|
99
|
-
children: [
|
|
100
|
-
label !== void 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", {
|
|
101
|
-
className: withBaseName("label"),
|
|
102
|
-
children: label
|
|
103
|
-
}) : null,
|
|
104
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", {
|
|
105
|
-
className: withBaseName("clickable"),
|
|
106
|
-
onMouseDown: disabled ? void 0 : onMouseDown,
|
|
107
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs("div", {
|
|
108
|
-
className: withBaseName("track"),
|
|
109
|
-
style: trackStyle,
|
|
110
|
-
ref: trackRef,
|
|
111
|
-
children: [
|
|
112
|
-
/* @__PURE__ */ jsxRuntime.jsx(SliderRail.SliderRail, {}),
|
|
113
|
-
marks && !hideMarks ? /* @__PURE__ */ jsxRuntime.jsx(SliderRailMarks.SliderRailMarks, {
|
|
114
|
-
min,
|
|
115
|
-
max,
|
|
116
|
-
marks
|
|
117
|
-
}) : null,
|
|
118
|
-
marks && !hideMarkLabels ? /* @__PURE__ */ jsxRuntime.jsx(SliderMarkLabels.SliderMarkLabels, {
|
|
119
|
-
min,
|
|
120
|
-
max,
|
|
121
|
-
marks
|
|
122
|
-
}) : null,
|
|
123
|
-
/* @__PURE__ */ jsxRuntime.jsx(SliderSelection.SliderSelection, {
|
|
124
|
-
valueLength
|
|
125
|
-
}),
|
|
126
|
-
(Array.isArray(value) ? value : [value]).map((v, i) => /* @__PURE__ */ jsxRuntime.jsx(SliderHandle.SliderHandle, {
|
|
127
|
-
min,
|
|
128
|
-
max,
|
|
129
|
-
value: v,
|
|
130
|
-
index: i,
|
|
131
|
-
disabled: !!disabled,
|
|
132
|
-
valueLength,
|
|
133
|
-
style: handleStyles[i]
|
|
134
|
-
}, i))
|
|
135
|
-
]
|
|
45
|
+
const handleSliderChange = (value2) => {
|
|
46
|
+
setValue(value2);
|
|
47
|
+
onChange == null ? void 0 : onChange(value2);
|
|
48
|
+
};
|
|
49
|
+
return /* @__PURE__ */ jsxRuntime.jsx(SliderContext.SliderContext.Provider, {
|
|
50
|
+
value: {
|
|
51
|
+
value,
|
|
52
|
+
min,
|
|
53
|
+
max,
|
|
54
|
+
step,
|
|
55
|
+
onChange: handleSliderChange,
|
|
56
|
+
ariaLabel
|
|
57
|
+
},
|
|
58
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", {
|
|
59
|
+
ref,
|
|
60
|
+
className: clsx.clsx(
|
|
61
|
+
withBaseName(),
|
|
62
|
+
{ [withBaseName("bottomLabel")]: marks !== "inline" },
|
|
63
|
+
className
|
|
64
|
+
),
|
|
65
|
+
...rest,
|
|
66
|
+
children: [
|
|
67
|
+
marks !== "all" && /* @__PURE__ */ jsxRuntime.jsx(core.Label, {
|
|
68
|
+
className: clsx.clsx(withBaseName("label"), {
|
|
69
|
+
[withBaseName("labelMinBottom")]: marks !== "inline"
|
|
70
|
+
}),
|
|
71
|
+
children: min
|
|
72
|
+
}),
|
|
73
|
+
/* @__PURE__ */ jsxRuntime.jsx(SliderTrack.SliderTrack, {}),
|
|
74
|
+
marks !== "all" && /* @__PURE__ */ jsxRuntime.jsx(core.Label, {
|
|
75
|
+
className: clsx.clsx(withBaseName("label"), {
|
|
76
|
+
[withBaseName("labelMaxBottom")]: marks !== "inline"
|
|
77
|
+
}),
|
|
78
|
+
children: max
|
|
79
|
+
}),
|
|
80
|
+
marks === "all" && /* @__PURE__ */ jsxRuntime.jsx(SliderMarks.SliderMarks, {
|
|
81
|
+
max,
|
|
82
|
+
min,
|
|
83
|
+
step
|
|
136
84
|
})
|
|
137
|
-
|
|
138
|
-
|
|
85
|
+
]
|
|
86
|
+
})
|
|
139
87
|
});
|
|
140
88
|
});
|
|
141
89
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Slider.js","sources":["../src/slider/Slider.tsx"],"sourcesContent":["import { makePrefixer, useControlled } from \"@salt-ds/core\";\nimport {
|
|
1
|
+
{"version":3,"file":"Slider.js","sources":["../src/slider/Slider.tsx"],"sourcesContent":["import { Label, makePrefixer, useControlled } 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 { SliderContext, SliderMarks, SliderTrack } from \"./internal\";\n\nimport sliderCss from \"./Slider.css\";\nimport { parseValueProp } from \"./internal/utils\";\nimport type { SliderChangeHandler, SliderValue } from \"./types\";\n\nconst withBaseName = makePrefixer(\"saltSlider\");\n\nconst defaultMin = 0;\nconst defaultMax = 10;\nconst defaultStep = 1;\n\nexport interface SliderProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\" | \"defaultValue\"> {\n /**\n * Minimum slider value\n */\n min?: number;\n /**\n * Maximum slider value\n */\n max?: number;\n /**\n * Minimum interval the slider thumb can move\n */\n step?: number;\n /**\n * Initial value of the slider\n */\n defaultValue?: SliderValue;\n /**\n * The markings the slider is displayed with\n */\n marks?: \"inline\" | \"bottom\" | \"all\";\n /**\n * Value of the slider, to be used when in a controlled state\n */\n value?: SliderValue;\n /**\n * Change handler to be used when in a controlled state\n */\n onChange?: SliderChangeHandler;\n}\n\nexport const Slider = forwardRef<HTMLDivElement, SliderProps>(function Slider(\n {\n min = defaultMin,\n max = defaultMax,\n step = defaultStep,\n value: valueProp,\n defaultValue = [0],\n onChange,\n className,\n \"aria-label\": ariaLabel,\n marks = \"inline\",\n ...rest\n },\n ref,\n) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-slider\",\n css: sliderCss,\n window: targetWindow,\n });\n\n const [value, setValue] = useControlled<SliderValue>({\n controlled: parseValueProp(valueProp, min, max),\n default: defaultValue,\n name: \"Slider\",\n state: \"Value\",\n });\n\n const handleSliderChange = (value: SliderValue) => {\n setValue(value);\n onChange?.(value);\n };\n\n return (\n <SliderContext.Provider\n value={{\n value,\n min,\n max,\n step,\n onChange: handleSliderChange,\n ariaLabel,\n }}\n >\n <div\n ref={ref}\n className={clsx(\n withBaseName(),\n { [withBaseName(\"bottomLabel\")]: marks !== \"inline\" },\n className,\n )}\n {...rest}\n >\n {marks !== \"all\" && (\n <Label\n className={clsx(withBaseName(\"label\"), {\n [withBaseName(\"labelMinBottom\")]: marks !== \"inline\",\n })}\n >\n {min}\n </Label>\n )}\n <SliderTrack />\n {marks !== \"all\" && (\n <Label\n className={clsx(withBaseName(\"label\"), {\n [withBaseName(\"labelMaxBottom\")]: marks !== \"inline\",\n })}\n >\n {max}\n </Label>\n )}\n {marks === \"all\" && <SliderMarks max={max} min={min} step={step} />}\n </div>\n </SliderContext.Provider>\n );\n});\n"],"names":["makePrefixer","forwardRef","Slider","useWindow","useComponentCssInjection","sliderCss","useControlled","parseValueProp","value","jsx","SliderContext","jsxs","clsx","Label","SliderTrack","SliderMarks"],"mappings":";;;;;;;;;;;;;;;;AAWA,MAAM,YAAA,GAAeA,kBAAa,YAAY,CAAA,CAAA;AAE9C,MAAM,UAAa,GAAA,CAAA,CAAA;AACnB,MAAM,UAAa,GAAA,EAAA,CAAA;AACnB,MAAM,WAAc,GAAA,CAAA,CAAA;AAkCP,MAAA,MAAA,GAASC,gBAAwC,CAAA,SAASC,OACrE,CAAA;AAAA,EACE,GAAM,GAAA,UAAA;AAAA,EACN,GAAM,GAAA,UAAA;AAAA,EACN,IAAO,GAAA,WAAA;AAAA,EACP,KAAO,EAAA,SAAA;AAAA,EACP,YAAA,GAAe,CAAC,CAAC,CAAA;AAAA,EACjB,QAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAc,EAAA,SAAA;AAAA,EACd,KAAQ,GAAA,QAAA;AAAA,EACL,GAAA,IAAA;AACL,CAAA,EACA,GACA,EAAA;AACA,EAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,aAAA;AAAA,IACR,GAAK,EAAAC,QAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIC,kBAA2B,CAAA;AAAA,IACnD,UAAY,EAAAC,oBAAA,CAAe,SAAW,EAAA,GAAA,EAAK,GAAG,CAAA;AAAA,IAC9C,OAAS,EAAA,YAAA;AAAA,IACT,IAAM,EAAA,QAAA;AAAA,IACN,KAAO,EAAA,OAAA;AAAA,GACR,CAAA,CAAA;AAED,EAAM,MAAA,kBAAA,GAAqB,CAACC,MAAuB,KAAA;AACjD,IAAA,QAAA,CAASA,MAAK,CAAA,CAAA;AACd,IAAWA,QAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAAA,CAAAA,MAAAA,CAAAA,CAAAA;AAAA,GACb,CAAA;AAEA,EACE,uBAAAC,cAAA,CAACC,4BAAc,QAAd,EAAA;AAAA,IACC,KAAO,EAAA;AAAA,MACL,KAAA;AAAA,MACA,GAAA;AAAA,MACA,GAAA;AAAA,MACA,IAAA;AAAA,MACA,QAAU,EAAA,kBAAA;AAAA,MACV,SAAA;AAAA,KACF;AAAA,IAEA,QAAC,kBAAAC,eAAA,CAAA,KAAA,EAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAW,EAAAC,SAAA;AAAA,QACT,YAAa,EAAA;AAAA,QACb,EAAE,CAAC,YAAA,CAAa,aAAa,CAAA,GAAI,UAAU,QAAS,EAAA;AAAA,QACpD,SAAA;AAAA,OACF;AAAA,MACC,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,KAAA,KAAU,yBACRH,cAAA,CAAAI,UAAA,EAAA;AAAA,UACC,SAAW,EAAAD,SAAA,CAAK,YAAa,CAAA,OAAO,CAAG,EAAA;AAAA,YACrC,CAAC,YAAA,CAAa,gBAAgB,CAAA,GAAI,KAAU,KAAA,QAAA;AAAA,WAC7C,CAAA;AAAA,UAEA,QAAA,EAAA,GAAA;AAAA,SACH,CAAA;AAAA,uCAEDE,uBAAY,EAAA,EAAA,CAAA;AAAA,QACZ,KAAA,KAAU,yBACRL,cAAA,CAAAI,UAAA,EAAA;AAAA,UACC,SAAW,EAAAD,SAAA,CAAK,YAAa,CAAA,OAAO,CAAG,EAAA;AAAA,YACrC,CAAC,YAAA,CAAa,gBAAgB,CAAA,GAAI,KAAU,KAAA,QAAA;AAAA,WAC7C,CAAA;AAAA,UAEA,QAAA,EAAA,GAAA;AAAA,SACH,CAAA;AAAA,QAED,KAAA,KAAU,yBAAUH,cAAA,CAAAM,uBAAA,EAAA;AAAA,UAAY,GAAA;AAAA,UAAU,GAAA;AAAA,UAAU,IAAA;AAAA,SAAY,CAAA;AAAA,OAAA;AAAA,KACnE,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ,CAAC;;;;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var react = require('react');
|
|
6
|
+
|
|
7
|
+
const SliderContext = react.createContext({
|
|
8
|
+
min: 0,
|
|
9
|
+
max: 10,
|
|
10
|
+
step: 1,
|
|
11
|
+
value: [0],
|
|
12
|
+
onChange: () => null,
|
|
13
|
+
ariaLabel: "slider"
|
|
14
|
+
});
|
|
15
|
+
function useSliderContext() {
|
|
16
|
+
return react.useContext(SliderContext);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
exports.SliderContext = SliderContext;
|
|
20
|
+
exports.useSliderContext = useSliderContext;
|
|
21
|
+
//# sourceMappingURL=SliderContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SliderContext.js","sources":["../src/slider/internal/SliderContext.ts"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { SliderChangeHandler, SliderValue } from \"../types\";\nexport interface SliderContextValue {\n min: number;\n max: number;\n step: number;\n value: SliderValue;\n onChange: SliderChangeHandler;\n ariaLabel: string | undefined;\n}\n\nexport const SliderContext = createContext<SliderContextValue>({\n min: 0,\n max: 10,\n step: 1,\n value: [0],\n onChange: () => null,\n ariaLabel: \"slider\",\n});\n\nexport function useSliderContext() {\n return useContext(SliderContext);\n}\n"],"names":["createContext","useContext"],"mappings":";;;;;;AAWO,MAAM,gBAAgBA,mBAAkC,CAAA;AAAA,EAC7D,GAAK,EAAA,CAAA;AAAA,EACL,GAAK,EAAA,EAAA;AAAA,EACL,IAAM,EAAA,CAAA;AAAA,EACN,KAAA,EAAO,CAAC,CAAC,CAAA;AAAA,EACT,UAAU,MAAM,IAAA;AAAA,EAChB,SAAW,EAAA,QAAA;AACb,CAAC,EAAA;AAEM,SAAS,gBAAmB,GAAA;AACjC,EAAA,OAAOC,iBAAW,aAAa,CAAA,CAAA;AACjC;;;;;"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
var core = require('@salt-ds/core');
|
|
7
|
+
var utils = require('./utils.js');
|
|
8
|
+
|
|
9
|
+
const withBaseName = core.makePrefixer("saltSliderMarks");
|
|
10
|
+
function SliderMarks({
|
|
11
|
+
min,
|
|
12
|
+
max,
|
|
13
|
+
step,
|
|
14
|
+
...rest
|
|
15
|
+
}) {
|
|
16
|
+
const marks = utils.getMarkStyles(min, max, step);
|
|
17
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", {
|
|
18
|
+
className: withBaseName(),
|
|
19
|
+
...rest,
|
|
20
|
+
children: marks.map((mark) => {
|
|
21
|
+
return /* @__PURE__ */ jsxRuntime.jsx(core.Label, {
|
|
22
|
+
className: withBaseName("mark"),
|
|
23
|
+
style: { left: mark.position },
|
|
24
|
+
children: mark.label
|
|
25
|
+
}, mark.value);
|
|
26
|
+
})
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
exports.SliderMarks = SliderMarks;
|
|
31
|
+
//# sourceMappingURL=SliderMarks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SliderMarks.js","sources":["../src/slider/internal/SliderMarks.tsx"],"sourcesContent":["import { Label, makePrefixer } from \"@salt-ds/core\";\nimport type { ComponentPropsWithoutRef } from \"react\";\nimport { getMarkStyles } from \"./utils\";\n\nconst withBaseName = makePrefixer(\"saltSliderMarks\");\n\nexport interface SliderMarksProps extends ComponentPropsWithoutRef<\"div\"> {\n min: number;\n max: number;\n step: number;\n}\n\nexport function SliderMarks({\n min,\n max,\n step,\n ...rest\n}: SliderMarksProps): JSX.Element {\n const marks = getMarkStyles(min, max, step);\n return (\n <div className={withBaseName()} {...rest}>\n {marks.map((mark) => {\n return (\n <Label\n className={withBaseName(\"mark\")}\n key={mark.value}\n style={{ left: mark.position }}\n >\n {mark.label}\n </Label>\n );\n })}\n </div>\n );\n}\n"],"names":["makePrefixer","getMarkStyles","jsx","Label"],"mappings":";;;;;;;;AAIA,MAAM,YAAA,GAAeA,kBAAa,iBAAiB,CAAA,CAAA;AAQ5C,SAAS,WAAY,CAAA;AAAA,EAC1B,GAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA;AAAA,EACG,GAAA,IAAA;AACL,CAAkC,EAAA;AAChC,EAAA,MAAM,KAAQ,GAAAC,mBAAA,CAAc,GAAK,EAAA,GAAA,EAAK,IAAI,CAAA,CAAA;AAC1C,EAAA,uBACGC,cAAA,CAAA,KAAA,EAAA;AAAA,IAAI,WAAW,YAAa,EAAA;AAAA,IAAI,GAAG,IAAA;AAAA,IACjC,QAAA,EAAA,KAAA,CAAM,GAAI,CAAA,CAAC,IAAS,KAAA;AACnB,MAAA,uBACGA,cAAA,CAAAC,UAAA,EAAA;AAAA,QACC,SAAA,EAAW,aAAa,MAAM,CAAA;AAAA,QAE9B,KAAO,EAAA,EAAE,IAAM,EAAA,IAAA,CAAK,QAAS,EAAA;AAAA,QAE5B,QAAK,EAAA,IAAA,CAAA,KAAA;AAAA,OAAA,EAHD,KAAK,KAIZ,CAAA,CAAA;AAAA,KAEH,CAAA;AAAA,GACH,CAAA,CAAA;AAEJ;;;;"}
|
|
@@ -4,20 +4,27 @@ 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
|
|
8
|
-
var
|
|
9
|
-
var
|
|
7
|
+
var clsx = require('clsx');
|
|
8
|
+
var SliderContext = require('./SliderContext.js');
|
|
9
|
+
var utils = require('./utils.js');
|
|
10
10
|
|
|
11
11
|
const withBaseName = core.makePrefixer("saltSliderSelection");
|
|
12
|
-
function SliderSelection({
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
function SliderSelection({
|
|
13
|
+
...props
|
|
14
|
+
}) {
|
|
15
|
+
const { min, max, value } = SliderContext.useSliderContext();
|
|
16
|
+
const thumbPosition = value.map((value2) => {
|
|
17
|
+
return utils.getPercentage(min, max, value2);
|
|
18
18
|
});
|
|
19
19
|
return /* @__PURE__ */ jsxRuntime.jsx("div", {
|
|
20
|
-
className:
|
|
20
|
+
className: clsx.clsx(withBaseName(), {
|
|
21
|
+
[withBaseName("range")]: Array.isArray(value)
|
|
22
|
+
}),
|
|
23
|
+
style: {
|
|
24
|
+
left: value.length > 1 ? `${thumbPosition[0]}%` : 0,
|
|
25
|
+
width: value.length > 1 ? `${thumbPosition[1] - thumbPosition[0]}%` : `${thumbPosition[0]}%`
|
|
26
|
+
},
|
|
27
|
+
...props
|
|
21
28
|
});
|
|
22
29
|
}
|
|
23
30
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SliderSelection.js","sources":["../src/slider/internal/SliderSelection.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\
|
|
1
|
+
{"version":3,"file":"SliderSelection.js","sources":["../src/slider/internal/SliderSelection.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport type { ComponentPropsWithoutRef } from \"react\";\nimport { useSliderContext } from \"./SliderContext\";\nimport { getPercentage } from \"./utils\";\n\nconst withBaseName = makePrefixer(\"saltSliderSelection\");\n\nexport interface SliderSelectionProps extends ComponentPropsWithoutRef<\"div\"> {}\n\nexport function SliderSelection({\n ...props\n}: SliderSelectionProps): JSX.Element {\n const { min, max, value } = useSliderContext();\n\n const thumbPosition = value.map((value) => {\n return getPercentage(min, max, value);\n });\n\n return (\n <div\n className={clsx(withBaseName(), {\n [withBaseName(\"range\")]: Array.isArray(value),\n })}\n style={{\n left: value.length > 1 ? `${thumbPosition[0]}%` : 0,\n width:\n value.length > 1\n ? `${thumbPosition[1] - thumbPosition[0]}%`\n : `${thumbPosition[0]}%`,\n }}\n {...props}\n />\n );\n}\n"],"names":["makePrefixer","useSliderContext","value","getPercentage","jsx","clsx"],"mappings":";;;;;;;;;;AAMA,MAAM,YAAA,GAAeA,kBAAa,qBAAqB,CAAA,CAAA;AAIhD,SAAS,eAAgB,CAAA;AAAA,EAC3B,GAAA,KAAA;AACL,CAAsC,EAAA;AACpC,EAAA,MAAM,EAAE,GAAA,EAAK,GAAK,EAAA,KAAA,KAAUC,8BAAiB,EAAA,CAAA;AAE7C,EAAA,MAAM,aAAgB,GAAA,KAAA,CAAM,GAAI,CAAA,CAACC,MAAU,KAAA;AACzC,IAAO,OAAAC,mBAAA,CAAc,GAAK,EAAA,GAAA,EAAKD,MAAK,CAAA,CAAA;AAAA,GACrC,CAAA,CAAA;AAED,EAAA,uBACGE,cAAA,CAAA,KAAA,EAAA;AAAA,IACC,SAAA,EAAWC,SAAK,CAAA,YAAA,EAAgB,EAAA;AAAA,MAC9B,CAAC,YAAa,CAAA,OAAO,CAAI,GAAA,KAAA,CAAM,QAAQ,KAAK,CAAA;AAAA,KAC7C,CAAA;AAAA,IACD,KAAO,EAAA;AAAA,MACL,MAAM,KAAM,CAAA,MAAA,GAAS,CAAI,GAAA,CAAA,EAAG,cAAc,CAAQ,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA;AAAA,MAClD,KAAA,EACE,KAAM,CAAA,MAAA,GAAS,CACX,GAAA,CAAA,EAAG,cAAc,CAAK,CAAA,GAAA,aAAA,CAAc,CACpC,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,EAAG,aAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,KACzB;AAAA,IACC,GAAG,KAAA;AAAA,GACN,CAAA,CAAA;AAEJ;;;;"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
var core = require('@salt-ds/core');
|
|
7
|
+
var clsx = require('clsx');
|
|
8
|
+
var react = require('react');
|
|
9
|
+
var SliderContext = require('./SliderContext.js');
|
|
10
|
+
var useKeyDownThumb = require('./useKeyDownThumb.js');
|
|
11
|
+
var utils = require('./utils.js');
|
|
12
|
+
|
|
13
|
+
const withBaseName = core.makePrefixer("saltSliderThumb");
|
|
14
|
+
function SliderThumb(props) {
|
|
15
|
+
const { index, activeThumb, setActiveThumb } = props;
|
|
16
|
+
const [focussed, setFocussed] = react.useState(false);
|
|
17
|
+
const { min, max, step, value, onChange, ariaLabel } = SliderContext.useSliderContext();
|
|
18
|
+
const onKeyDown = useKeyDownThumb.useKeyDownThumb(min, max, step, value, onChange, index);
|
|
19
|
+
const thumbValue = value[index];
|
|
20
|
+
const thumbPosition = utils.getPercentage(min, max, thumbValue);
|
|
21
|
+
const handlePointerOver = () => {
|
|
22
|
+
if (activeThumb === void 0 && index !== null)
|
|
23
|
+
setActiveThumb(index);
|
|
24
|
+
};
|
|
25
|
+
const handleFocus = () => {
|
|
26
|
+
setFocussed(true);
|
|
27
|
+
if (index !== null)
|
|
28
|
+
setActiveThumb(index);
|
|
29
|
+
};
|
|
30
|
+
const handleBlur = () => {
|
|
31
|
+
setFocussed(false);
|
|
32
|
+
setActiveThumb(void 0);
|
|
33
|
+
};
|
|
34
|
+
const showTooltip = focussed || activeThumb === index;
|
|
35
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", {
|
|
36
|
+
style: { left: `${thumbPosition}%` },
|
|
37
|
+
className: withBaseName("container"),
|
|
38
|
+
onPointerOver: handlePointerOver,
|
|
39
|
+
onFocus: handleFocus,
|
|
40
|
+
onBlur: handleBlur,
|
|
41
|
+
children: [
|
|
42
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", {
|
|
43
|
+
className: clsx.clsx(withBaseName("tooltip"), {
|
|
44
|
+
[withBaseName("tooltip-visible")]: showTooltip
|
|
45
|
+
}),
|
|
46
|
+
"aria-expanded": showTooltip,
|
|
47
|
+
children: [
|
|
48
|
+
/* @__PURE__ */ jsxRuntime.jsx("svg", {
|
|
49
|
+
className: withBaseName("tooltip-arrow"),
|
|
50
|
+
"aria-hidden": "true",
|
|
51
|
+
viewBox: "0 1 14 14",
|
|
52
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("path", {
|
|
53
|
+
d: "M0,0 H14 L7,7 Q7,7 7,7 Z"
|
|
54
|
+
})
|
|
55
|
+
}),
|
|
56
|
+
/* @__PURE__ */ jsxRuntime.jsx(core.Label, {
|
|
57
|
+
children: value[index]
|
|
58
|
+
})
|
|
59
|
+
]
|
|
60
|
+
}),
|
|
61
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", {
|
|
62
|
+
className: withBaseName(),
|
|
63
|
+
onKeyDown,
|
|
64
|
+
role: "slider",
|
|
65
|
+
"aria-valuemin": min,
|
|
66
|
+
"aria-valuemax": max,
|
|
67
|
+
"aria-valuenow": index === 1 ? value[1] : value[0],
|
|
68
|
+
"aria-label": ariaLabel,
|
|
69
|
+
"aria-orientation": "horizontal",
|
|
70
|
+
tabIndex: 0
|
|
71
|
+
})
|
|
72
|
+
]
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
exports.SliderThumb = SliderThumb;
|
|
77
|
+
//# sourceMappingURL=SliderThumb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SliderThumb.js","sources":["../src/slider/internal/SliderThumb.tsx"],"sourcesContent":["import { Label, makePrefixer } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport { type ComponentPropsWithoutRef, useState } from \"react\";\nimport type { ActiveThumbIndex, ThumbIndex } from \"../types\";\nimport { useSliderContext } from \"./SliderContext\";\nimport { useKeyDownThumb } from \"./useKeyDownThumb\";\nimport { getPercentage } from \"./utils\";\n\nconst withBaseName = makePrefixer(\"saltSliderThumb\");\n\nexport interface SliderThumbProps extends ComponentPropsWithoutRef<\"div\"> {\n index: ThumbIndex;\n activeThumb: ActiveThumbIndex;\n setActiveThumb: (index: ActiveThumbIndex) => void;\n}\n\nexport function SliderThumb(props: SliderThumbProps): JSX.Element {\n const { index, activeThumb, setActiveThumb } = props;\n\n const [focussed, setFocussed] = useState(false);\n\n const { min, max, step, value, onChange, ariaLabel } = useSliderContext();\n\n const onKeyDown = useKeyDownThumb(min, max, step, value, onChange, index);\n\n const thumbValue = value[index];\n\n const thumbPosition = getPercentage(min, max, thumbValue as number);\n\n const handlePointerOver = () => {\n if (activeThumb === undefined && index !== null) setActiveThumb(index);\n };\n\n const handleFocus = () => {\n setFocussed(true);\n if (index !== null) setActiveThumb(index);\n };\n\n const handleBlur = () => {\n setFocussed(false);\n setActiveThumb(undefined);\n };\n\n const showTooltip = focussed || activeThumb === index;\n\n return (\n <div\n style={{ left: `${thumbPosition}%` }}\n className={withBaseName(\"container\")}\n onPointerOver={handlePointerOver}\n onFocus={handleFocus}\n onBlur={handleBlur}\n >\n <div\n className={clsx(withBaseName(\"tooltip\"), {\n [withBaseName(\"tooltip-visible\")]: showTooltip,\n })}\n aria-expanded={showTooltip}\n >\n <svg\n className={withBaseName(\"tooltip-arrow\")}\n aria-hidden=\"true\"\n viewBox=\"0 1 14 14\"\n >\n <path d=\"M0,0 H14 L7,7 Q7,7 7,7 Z\" />\n </svg>\n <Label>{value[index]}</Label>\n </div>\n <div\n className={withBaseName()}\n onKeyDown={onKeyDown}\n role=\"slider\"\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={index === 1 ? value[1] : value[0]}\n aria-label={ariaLabel}\n aria-orientation=\"horizontal\"\n tabIndex={0}\n />\n </div>\n );\n}\n"],"names":["makePrefixer","useState","useSliderContext","useKeyDownThumb","getPercentage","jsxs","clsx","jsx","Label"],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
var core = require('@salt-ds/core');
|
|
7
|
+
var react = require('react');
|
|
8
|
+
var SliderContext = require('./SliderContext.js');
|
|
9
|
+
var SliderSelection = require('./SliderSelection.js');
|
|
10
|
+
var SliderThumb = require('./SliderThumb.js');
|
|
11
|
+
var utils = require('./utils.js');
|
|
12
|
+
|
|
13
|
+
const withBaseName = core.makePrefixer("saltSliderTrack");
|
|
14
|
+
const SliderTrack = ({ ...props }) => {
|
|
15
|
+
const { min, max, step, value, onChange } = SliderContext.useSliderContext();
|
|
16
|
+
const trackRef = react.useRef(null);
|
|
17
|
+
const valueRef = react.useRef(value);
|
|
18
|
+
const [activeThumb, setActiveThumbState] = react.useState(void 0);
|
|
19
|
+
const activeThumbRef = react.useRef(void 0);
|
|
20
|
+
const pointerDown = react.useRef(false);
|
|
21
|
+
const setActiveThumb = (index) => {
|
|
22
|
+
setActiveThumbState(index);
|
|
23
|
+
activeThumbRef.current = index;
|
|
24
|
+
};
|
|
25
|
+
const handlePointerUp = () => {
|
|
26
|
+
setActiveThumb(void 0);
|
|
27
|
+
pointerDown.current = false;
|
|
28
|
+
};
|
|
29
|
+
const handlePointerDown = (event) => {
|
|
30
|
+
if (event.button !== 0)
|
|
31
|
+
return;
|
|
32
|
+
const { clientX } = event;
|
|
33
|
+
const newValue = utils.getValue(trackRef, min, max, step, clientX);
|
|
34
|
+
const nearestIndex = utils.getNearestIndex(value, newValue);
|
|
35
|
+
utils.setValue(value, newValue, value.length > 1 ? nearestIndex : 0, onChange);
|
|
36
|
+
setActiveThumb(nearestIndex);
|
|
37
|
+
pointerDown.current = true;
|
|
38
|
+
};
|
|
39
|
+
const handlePointerMove = (event) => {
|
|
40
|
+
if (!pointerDown.current || typeof activeThumbRef.current === "undefined")
|
|
41
|
+
return;
|
|
42
|
+
const thumb = activeThumbRef.current;
|
|
43
|
+
const { clientX } = event;
|
|
44
|
+
const rawValue = utils.getValue(trackRef, min, max, step, clientX);
|
|
45
|
+
const newValue = utils.preventOverlappingValues(
|
|
46
|
+
valueRef.current,
|
|
47
|
+
rawValue,
|
|
48
|
+
thumb
|
|
49
|
+
);
|
|
50
|
+
utils.setValue(valueRef.current, newValue, thumb, onChange);
|
|
51
|
+
};
|
|
52
|
+
const handlePointerOut = () => {
|
|
53
|
+
if (!pointerDown.current) {
|
|
54
|
+
setActiveThumb(void 0);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
react.useEffect(() => {
|
|
58
|
+
window.addEventListener("pointerup", handlePointerUp);
|
|
59
|
+
window.addEventListener("pointermove", handlePointerMove);
|
|
60
|
+
return () => {
|
|
61
|
+
window.removeEventListener("pointerup", handlePointerUp);
|
|
62
|
+
window.removeEventListener("pointermove", handlePointerMove);
|
|
63
|
+
};
|
|
64
|
+
}, []);
|
|
65
|
+
react.useEffect(() => {
|
|
66
|
+
valueRef.current = value;
|
|
67
|
+
}, [value]);
|
|
68
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", {
|
|
69
|
+
className: withBaseName(),
|
|
70
|
+
ref: trackRef,
|
|
71
|
+
onPointerDown: handlePointerDown,
|
|
72
|
+
onPointerOut: handlePointerOut,
|
|
73
|
+
...props,
|
|
74
|
+
children: [
|
|
75
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", {
|
|
76
|
+
className: withBaseName("rail")
|
|
77
|
+
}),
|
|
78
|
+
/* @__PURE__ */ jsxRuntime.jsx(SliderSelection.SliderSelection, {}),
|
|
79
|
+
value.map((_, i) => {
|
|
80
|
+
return /* @__PURE__ */ jsxRuntime.jsx(SliderThumb.SliderThumb, {
|
|
81
|
+
index: i,
|
|
82
|
+
activeThumb,
|
|
83
|
+
setActiveThumb
|
|
84
|
+
}, i);
|
|
85
|
+
})
|
|
86
|
+
]
|
|
87
|
+
});
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
exports.SliderTrack = SliderTrack;
|
|
91
|
+
//# sourceMappingURL=SliderTrack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SliderTrack.js","sources":["../src/slider/internal/SliderTrack.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport {\n type ComponentPropsWithoutRef,\n useEffect,\n useRef,\n useState,\n} from \"react\";\n\nimport type { ActiveThumbIndex, SliderValue, ThumbIndex } from \"../types\";\nimport { useSliderContext } from \"./SliderContext\";\nimport { SliderSelection } from \"./SliderSelection\";\nimport { SliderThumb } from \"./SliderThumb\";\nimport {\n getNearestIndex,\n getValue,\n preventOverlappingValues,\n setValue,\n} from \"./utils\";\n\nexport interface SliderTrackProps extends ComponentPropsWithoutRef<\"div\"> {}\n\nconst withBaseName = makePrefixer(\"saltSliderTrack\");\n\nexport const SliderTrack = ({ ...props }: SliderTrackProps) => {\n const { min, max, step, value, onChange } = useSliderContext();\n\n const trackRef = useRef<HTMLDivElement>(null);\n\n const valueRef = useRef<SliderValue>(value);\n\n const [activeThumb, setActiveThumbState] =\n useState<ActiveThumbIndex>(undefined);\n const activeThumbRef = useRef<ActiveThumbIndex>(undefined);\n const pointerDown = useRef(false);\n\n const setActiveThumb = (index: ActiveThumbIndex) => {\n setActiveThumbState(index);\n activeThumbRef.current = index;\n };\n\n const handlePointerUp = () => {\n setActiveThumb(undefined);\n pointerDown.current = false;\n };\n\n const handlePointerDown = (event: React.PointerEvent<HTMLDivElement>) => {\n if (event.button !== 0) return;\n const { clientX } = event;\n const newValue: number = getValue(trackRef, min, max, step, clientX);\n const nearestIndex = getNearestIndex(value, newValue);\n setValue(value, newValue, value.length > 1 ? nearestIndex : 0, onChange);\n setActiveThumb(nearestIndex);\n pointerDown.current = true;\n };\n\n const handlePointerMove = (event: PointerEvent) => {\n if (!pointerDown.current || typeof activeThumbRef.current === \"undefined\")\n return;\n const thumb = activeThumbRef.current;\n const { clientX } = event;\n const rawValue: number = getValue(trackRef, min, max, step, clientX);\n const newValue = preventOverlappingValues(\n valueRef.current,\n rawValue,\n thumb,\n );\n setValue(valueRef.current, newValue, thumb, onChange);\n };\n\n const handlePointerOut = () => {\n if (!pointerDown.current) {\n setActiveThumb(undefined);\n }\n };\n\n useEffect(() => {\n window.addEventListener(\"pointerup\", handlePointerUp);\n window.addEventListener(\"pointermove\", handlePointerMove);\n return () => {\n window.removeEventListener(\"pointerup\", handlePointerUp);\n window.removeEventListener(\"pointermove\", handlePointerMove);\n };\n }, []);\n\n useEffect(() => {\n valueRef.current = value;\n }, [value]);\n\n return (\n <div\n className={withBaseName()}\n ref={trackRef}\n onPointerDown={handlePointerDown}\n onPointerOut={handlePointerOut}\n {...props}\n >\n <div className={withBaseName(\"rail\")} />\n <SliderSelection />\n {value.map((_, i) => {\n return (\n <SliderThumb\n key={i}\n index={i as ThumbIndex}\n activeThumb={activeThumb}\n setActiveThumb={setActiveThumb}\n />\n );\n })}\n </div>\n );\n};\n"],"names":["makePrefixer","useSliderContext","useRef","useState","getValue","getNearestIndex","setValue","preventOverlappingValues","useEffect","jsxs","jsx","SliderSelection","SliderThumb"],"mappings":"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"}
|