@react-md/core 6.2.1 → 6.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_base.scss +1 -1
- package/dist/app-bar/styles.d.ts +0 -2
- package/dist/app-bar/styles.js.map +1 -1
- package/dist/autocomplete/types.d.ts +12 -0
- package/dist/autocomplete/types.js.map +1 -1
- package/dist/avatar/Avatar.d.ts +0 -10
- package/dist/avatar/Avatar.js.map +1 -1
- package/dist/avatar/styles.d.ts +10 -0
- package/dist/avatar/styles.js.map +1 -1
- package/dist/badge/Badge.d.ts +11 -0
- package/dist/badge/Badge.js.map +1 -1
- package/dist/badge/styles.d.ts +0 -8
- package/dist/badge/styles.js.map +1 -1
- package/dist/box/_box.scss +8 -8
- package/dist/box/styles.d.ts +9 -0
- package/dist/box/styles.js.map +1 -1
- package/dist/button/_button.scss +4 -0
- package/dist/button/styles.d.ts +5 -1
- package/dist/button/styles.js.map +1 -1
- package/dist/card/Card.d.ts +0 -7
- package/dist/card/Card.js.map +1 -1
- package/dist/card/styles.d.ts +6 -0
- package/dist/card/styles.js +8 -8
- package/dist/card/styles.js.map +1 -1
- package/dist/chip/Chip.d.ts +6 -13
- package/dist/chip/Chip.js.map +1 -1
- package/dist/chip/styles.d.ts +26 -1
- package/dist/chip/styles.js.map +1 -1
- package/dist/datetime/NativeDateField.d.ts +24 -0
- package/dist/datetime/NativeDateField.js +63 -0
- package/dist/datetime/NativeDateField.js.map +1 -0
- package/dist/datetime/NativeTimeField.d.ts +26 -0
- package/dist/datetime/NativeTimeField.js +63 -0
- package/dist/datetime/NativeTimeField.js.map +1 -0
- package/dist/datetime/useDateField.d.ts +120 -0
- package/dist/datetime/useDateField.js +35 -0
- package/dist/datetime/useDateField.js.map +1 -0
- package/dist/datetime/useTimeField.d.ts +124 -0
- package/dist/datetime/useTimeField.js +65 -0
- package/dist/datetime/useTimeField.js.map +1 -0
- package/dist/datetime/utils.d.ts +34 -0
- package/dist/datetime/utils.js +27 -0
- package/dist/datetime/utils.js.map +1 -0
- package/dist/dialog/styles.d.ts +5 -2
- package/dist/dialog/styles.js.map +1 -1
- package/dist/divider/styles.d.ts +1 -1
- package/dist/divider/styles.js.map +1 -1
- package/dist/draggable/utils.d.ts +3 -6
- package/dist/draggable/utils.js.map +1 -1
- package/dist/error-boundary/ErrorBoundary.js.map +1 -1
- package/dist/expansion-panel/ExpansionList.js +1 -1
- package/dist/expansion-panel/ExpansionList.js.map +1 -1
- package/dist/expansion-panel/useExpansionList.d.ts +2 -7
- package/dist/expansion-panel/useExpansionList.js.map +1 -1
- package/dist/files/validation.js.map +1 -1
- package/dist/form/FormMessage.js +3 -1
- package/dist/form/FormMessage.js.map +1 -1
- package/dist/form/FormMessageContainer.d.ts +2 -1
- package/dist/form/FormMessageContainer.js +3 -2
- package/dist/form/FormMessageContainer.js.map +1 -1
- package/dist/form/FormMessageCounter.d.ts +3 -2
- package/dist/form/FormMessageCounter.js +5 -2
- package/dist/form/FormMessageCounter.js.map +1 -1
- package/dist/form/InputToggle.js.map +1 -1
- package/dist/form/Label.d.ts +0 -10
- package/dist/form/Label.js.map +1 -1
- package/dist/form/Listbox.d.ts +3 -10
- package/dist/form/Listbox.js +8 -27
- package/dist/form/Listbox.js.map +1 -1
- package/dist/form/ListboxProvider.d.ts +17 -0
- package/dist/form/ListboxProvider.js +33 -1
- package/dist/form/ListboxProvider.js.map +1 -1
- package/dist/form/NativeSelect.js +1 -0
- package/dist/form/NativeSelect.js.map +1 -1
- package/dist/form/Slider.d.ts +4 -0
- package/dist/form/Slider.js.map +1 -1
- package/dist/form/Switch.js.map +1 -1
- package/dist/form/TextArea.js +1 -0
- package/dist/form/TextArea.js.map +1 -1
- package/dist/form/TextField.js +1 -0
- package/dist/form/TextField.js.map +1 -1
- package/dist/form/TextFieldContainer.d.ts +0 -13
- package/dist/form/TextFieldContainer.js.map +1 -1
- package/dist/form/_form-message.scss +13 -0
- package/dist/form/_select.scss +5 -1
- package/dist/form/_text-area.scss +2 -1
- package/dist/form/_text-field.scss +13 -3
- package/dist/form/formMessageContainerStyles.d.ts +7 -0
- package/dist/form/formMessageContainerStyles.js +4 -2
- package/dist/form/formMessageContainerStyles.js.map +1 -1
- package/dist/form/sliderUtils.d.ts +3 -7
- package/dist/form/sliderUtils.js.map +1 -1
- package/dist/form/types.d.ts +33 -0
- package/dist/form/types.js.map +1 -1
- package/dist/form/useCombobox.d.ts +6 -2
- package/dist/form/useCombobox.js +8 -9
- package/dist/form/useCombobox.js.map +1 -1
- package/dist/form/useFormReset.d.ts +4 -1
- package/dist/form/useFormReset.js +9 -4
- package/dist/form/useFormReset.js.map +1 -1
- package/dist/form/useNumberField.d.ts +5 -5
- package/dist/form/useNumberField.js +10 -2
- package/dist/form/useNumberField.js.map +1 -1
- package/dist/form/useSelectCombobox.js +2 -2
- package/dist/form/useSelectCombobox.js.map +1 -1
- package/dist/form/useTextField.d.ts +76 -59
- package/dist/form/useTextField.js +7 -1
- package/dist/form/useTextField.js.map +1 -1
- package/dist/interaction/types.d.ts +5 -1
- package/dist/interaction/types.js.map +1 -1
- package/dist/interaction/utils.d.ts +14 -0
- package/dist/interaction/utils.js +23 -12
- package/dist/interaction/utils.js.map +1 -1
- package/dist/link/Link.d.ts +0 -7
- package/dist/link/Link.js.map +1 -1
- package/dist/link/styles.d.ts +7 -0
- package/dist/link/styles.js.map +1 -1
- package/dist/list/List.d.ts +5 -20
- package/dist/list/List.js.map +1 -1
- package/dist/list/ListItem.d.ts +4 -38
- package/dist/list/ListItem.js.map +1 -1
- package/dist/list/listItemStyles.d.ts +24 -2
- package/dist/list/listItemStyles.js.map +1 -1
- package/dist/list/listStyles.d.ts +17 -2
- package/dist/list/listStyles.js.map +1 -1
- package/dist/menu/Menu.js.map +1 -1
- package/dist/menu/MenuBar.js +1 -1
- package/dist/menu/MenuBar.js.map +1 -1
- package/dist/menu/MenuItemTextField.d.ts +1 -2
- package/dist/menu/MenuItemTextField.js.map +1 -1
- package/dist/menu/MenuWidget.js +3 -2
- package/dist/menu/MenuWidget.js.map +1 -1
- package/dist/movement/constants.d.ts +10 -0
- package/dist/movement/constants.js +20 -4
- package/dist/movement/constants.js.map +1 -1
- package/dist/movement/types.d.ts +59 -10
- package/dist/movement/types.js.map +1 -1
- package/dist/movement/useKeyboardMovementProvider.d.ts +5 -1
- package/dist/movement/useKeyboardMovementProvider.js +171 -73
- package/dist/movement/useKeyboardMovementProvider.js.map +1 -1
- package/dist/navigation/NavItem.d.ts +4 -1
- package/dist/navigation/NavItem.js.map +1 -1
- package/dist/navigation/navItemStyles.d.ts +7 -0
- package/dist/navigation/navItemStyles.js.map +1 -1
- package/dist/overlay/Overlay.d.ts +4 -23
- package/dist/overlay/Overlay.js.map +1 -1
- package/dist/overlay/styles.d.ts +26 -8
- package/dist/overlay/styles.js.map +1 -1
- package/dist/progress/LinearProgress.d.ts +4 -9
- package/dist/progress/LinearProgress.js.map +1 -1
- package/dist/progress/circularProgressStyles.d.ts +6 -0
- package/dist/progress/circularProgressStyles.js.map +1 -1
- package/dist/progress/linearProgressStyles.d.ts +20 -5
- package/dist/progress/linearProgressStyles.js.map +1 -1
- package/dist/progress/types.d.ts +0 -9
- package/dist/progress/types.js.map +1 -1
- package/dist/segmented-button/SegmentedButton.d.ts +7 -12
- package/dist/segmented-button/SegmentedButton.js.map +1 -1
- package/dist/segmented-button/segmentedButtonStyles.d.ts +26 -3
- package/dist/segmented-button/segmentedButtonStyles.js.map +1 -1
- package/dist/sheet/Sheet.d.ts +0 -12
- package/dist/sheet/Sheet.js.map +1 -1
- package/dist/sheet/styles.d.ts +12 -0
- package/dist/sheet/styles.js.map +1 -1
- package/dist/snackbar/Toast.d.ts +2 -13
- package/dist/snackbar/Toast.js.map +1 -1
- package/dist/snackbar/ToastManager.js.map +1 -1
- package/dist/snackbar/toastStyles.d.ts +17 -2
- package/dist/snackbar/toastStyles.js.map +1 -1
- package/dist/tabs/Tab.d.ts +2 -41
- package/dist/tabs/Tab.js.map +1 -1
- package/dist/tabs/tabStyles.d.ts +45 -4
- package/dist/tabs/tabStyles.js.map +1 -1
- package/dist/tabs/useTabList.js +1 -1
- package/dist/tabs/useTabList.js.map +1 -1
- package/dist/test-utils/drag.d.ts +6 -9
- package/dist/test-utils/mocks/IntersectionObserver.js.map +1 -1
- package/dist/test-utils/mocks/ResizeObserver.js.map +1 -1
- package/dist/test-utils/utils/createFileList.js.map +1 -1
- package/dist/theme/_theme.scss +0 -1
- package/dist/theme/getDerivedTheme.d.ts +0 -24
- package/dist/theme/getDerivedTheme.js.map +1 -1
- package/dist/theme/types.d.ts +25 -0
- package/dist/theme/types.js.map +1 -1
- package/dist/tooltip/Tooltip.d.ts +4 -32
- package/dist/tooltip/Tooltip.js.map +1 -1
- package/dist/tooltip/styles.d.ts +38 -1
- package/dist/tooltip/styles.js +1 -1
- package/dist/tooltip/styles.js.map +1 -1
- package/dist/transition/SkeletonPlaceholder.d.ts +0 -7
- package/dist/transition/SkeletonPlaceholder.js.map +1 -1
- package/dist/transition/Slide.js.map +1 -1
- package/dist/transition/skeletonPlaceholderUtils.d.ts +7 -0
- package/dist/transition/skeletonPlaceholderUtils.js.map +1 -1
- package/dist/transition/useCarousel.d.ts +2 -2
- package/dist/transition/useCarousel.js.map +1 -1
- package/dist/transition/useMaxWidthTransition.d.ts +14 -2
- package/dist/transition/useMaxWidthTransition.js.map +1 -1
- package/dist/transition/useSlideTransition.d.ts +5 -0
- package/dist/transition/useSlideTransition.js.map +1 -1
- package/dist/tree/Tree.d.ts +5 -9
- package/dist/tree/Tree.js +1 -1
- package/dist/tree/Tree.js.map +1 -1
- package/dist/tree/styles.d.ts +9 -1
- package/dist/tree/styles.js.map +1 -1
- package/dist/tree/useTreeMovement.d.ts +2 -1
- package/dist/tree/useTreeMovement.js +2 -1
- package/dist/tree/useTreeMovement.js.map +1 -1
- package/dist/types.d.ts +14 -0
- package/dist/types.js.map +1 -1
- package/dist/typography/Mark.d.ts +4 -1
- package/dist/typography/Mark.js.map +1 -1
- package/dist/typography/TextContainer.d.ts +0 -6
- package/dist/typography/TextContainer.js.map +1 -1
- package/dist/typography/markStyles.d.ts +5 -0
- package/dist/typography/markStyles.js.map +1 -1
- package/dist/typography/textContainerStyles.d.ts +6 -0
- package/dist/typography/textContainerStyles.js.map +1 -1
- package/dist/typography/typographyStyles.d.ts +9 -0
- package/dist/typography/typographyStyles.js.map +1 -1
- package/dist/useResizeObserver.js.map +1 -1
- package/dist/utils/getMiddleOfRange.d.ts +2 -3
- package/dist/utils/getMiddleOfRange.js.map +1 -1
- package/dist/utils/getPercentage.d.ts +2 -9
- package/dist/utils/getPercentage.js +1 -1
- package/dist/utils/getPercentage.js.map +1 -1
- package/dist/utils/getRangeSteps.d.ts +2 -3
- package/dist/utils/getRangeSteps.js +0 -3
- package/dist/utils/getRangeSteps.js.map +1 -1
- package/dist/utils/nearest.d.ts +2 -3
- package/dist/utils/nearest.js +0 -3
- package/dist/utils/nearest.js.map +1 -1
- package/dist/utils/trigonometry.d.ts +31 -0
- package/dist/utils/trigonometry.js +25 -0
- package/dist/utils/trigonometry.js.map +1 -0
- package/dist/window-splitter/WindowSplitter.d.ts +5 -19
- package/dist/window-splitter/WindowSplitter.js.map +1 -1
- package/dist/window-splitter/styles.d.ts +27 -3
- package/dist/window-splitter/styles.js.map +1 -1
- package/dist/window-splitter/useWindowSplitter.d.ts +1 -1
- package/dist/window-splitter/useWindowSplitter.js.map +1 -1
- package/package.json +8 -8
- package/src/app-bar/styles.ts +0 -2
- package/src/autocomplete/types.ts +17 -0
- package/src/avatar/Avatar.tsx +0 -11
- package/src/avatar/styles.ts +11 -0
- package/src/badge/Badge.tsx +12 -0
- package/src/badge/styles.ts +0 -9
- package/src/box/styles.ts +9 -0
- package/src/button/styles.ts +5 -1
- package/src/card/Card.tsx +0 -8
- package/src/card/styles.ts +15 -8
- package/src/chip/Chip.tsx +9 -15
- package/src/chip/styles.ts +29 -1
- package/src/datetime/NativeDateField.tsx +92 -0
- package/src/datetime/NativeTimeField.tsx +94 -0
- package/src/datetime/useDateField.ts +193 -0
- package/src/datetime/useTimeField.ts +233 -0
- package/src/datetime/utils.ts +48 -0
- package/src/dialog/styles.ts +5 -2
- package/src/divider/styles.ts +1 -1
- package/src/draggable/utils.ts +3 -6
- package/src/expansion-panel/ExpansionList.tsx +2 -1
- package/src/expansion-panel/useExpansionList.ts +6 -12
- package/src/form/FormMessage.tsx +4 -0
- package/src/form/FormMessageContainer.tsx +8 -4
- package/src/form/FormMessageCounter.tsx +17 -6
- package/src/form/InputToggle.tsx +2 -0
- package/src/form/Label.tsx +0 -11
- package/src/form/Listbox.tsx +18 -46
- package/src/form/ListboxProvider.ts +61 -1
- package/src/form/NativeSelect.tsx +1 -0
- package/src/form/Slider.tsx +6 -0
- package/src/form/Switch.tsx +2 -0
- package/src/form/TextArea.tsx +3 -0
- package/src/form/TextField.tsx +1 -0
- package/src/form/TextFieldContainer.tsx +0 -14
- package/src/form/formMessageContainerStyles.ts +10 -2
- package/src/form/sliderUtils.ts +3 -7
- package/src/form/types.ts +44 -0
- package/src/form/useCombobox.ts +15 -10
- package/src/form/useFormReset.ts +12 -5
- package/src/form/useNumberField.ts +17 -14
- package/src/form/useSelectCombobox.ts +2 -2
- package/src/form/useTextField.ts +102 -69
- package/src/interaction/types.ts +5 -1
- package/src/interaction/utils.ts +18 -20
- package/src/link/Link.tsx +0 -8
- package/src/link/styles.ts +8 -0
- package/src/list/List.tsx +7 -24
- package/src/list/ListItem.tsx +7 -43
- package/src/list/listItemStyles.ts +26 -2
- package/src/list/listStyles.ts +18 -2
- package/src/menu/Menu.tsx +2 -0
- package/src/menu/MenuBar.tsx +1 -1
- package/src/menu/MenuItemTextField.tsx +1 -3
- package/src/menu/MenuWidget.tsx +4 -2
- package/src/movement/constants.ts +26 -4
- package/src/movement/types.ts +84 -19
- package/src/movement/useKeyboardMovementProvider.ts +209 -95
- package/src/navigation/NavItem.tsx +6 -2
- package/src/navigation/navItemStyles.ts +8 -0
- package/src/overlay/Overlay.tsx +4 -26
- package/src/overlay/styles.ts +29 -10
- package/src/progress/LinearProgress.tsx +8 -10
- package/src/progress/circularProgressStyles.ts +7 -0
- package/src/progress/linearProgressStyles.ts +22 -5
- package/src/progress/types.ts +0 -10
- package/src/segmented-button/SegmentedButton.tsx +14 -15
- package/src/segmented-button/segmentedButtonStyles.ts +28 -3
- package/src/sheet/Sheet.tsx +0 -13
- package/src/sheet/styles.ts +13 -0
- package/src/snackbar/Toast.tsx +2 -15
- package/src/snackbar/toastStyles.ts +20 -2
- package/src/tabs/Tab.tsx +4 -49
- package/src/tabs/tabStyles.ts +52 -4
- package/src/tabs/useTabList.ts +1 -1
- package/src/test-utils/drag.ts +8 -12
- package/src/theme/getDerivedTheme.ts +0 -26
- package/src/theme/types.ts +26 -0
- package/src/tooltip/Tooltip.tsx +4 -36
- package/src/tooltip/styles.ts +43 -2
- package/src/transition/SkeletonPlaceholder.tsx +0 -8
- package/src/transition/Slide.tsx +2 -0
- package/src/transition/skeletonPlaceholderUtils.ts +8 -0
- package/src/transition/useCarousel.ts +2 -2
- package/src/transition/useMaxWidthTransition.ts +17 -2
- package/src/transition/useSlideTransition.ts +8 -0
- package/src/tree/Tree.tsx +6 -11
- package/src/tree/styles.ts +10 -1
- package/src/tree/useTreeMovement.ts +4 -0
- package/src/types.ts +16 -0
- package/src/typography/Mark.tsx +6 -2
- package/src/typography/TextContainer.tsx +0 -7
- package/src/typography/markStyles.ts +6 -0
- package/src/typography/textContainerStyles.ts +7 -0
- package/src/typography/typographyStyles.ts +10 -0
- package/src/utils/getMiddleOfRange.ts +2 -3
- package/src/utils/getPercentage.ts +3 -11
- package/src/utils/getRangeSteps.ts +3 -3
- package/src/utils/nearest.ts +3 -3
- package/src/utils/trigonometry.ts +46 -0
- package/src/window-splitter/WindowSplitter.tsx +9 -22
- package/src/window-splitter/styles.ts +31 -3
- package/src/window-splitter/useWindowSplitter.ts +3 -2
package/src/card/styles.ts
CHANGED
|
@@ -3,7 +3,14 @@ import { cnb } from "cnbuilder";
|
|
|
3
3
|
import { cssUtils } from "../cssUtils.js";
|
|
4
4
|
import { bem } from "../utils/bem.js";
|
|
5
5
|
|
|
6
|
-
const
|
|
6
|
+
const styles = bem("rmd-card");
|
|
7
|
+
|
|
8
|
+
declare module "react" {
|
|
9
|
+
interface CSSProperties {
|
|
10
|
+
"--rmd-card-background-color"?: string;
|
|
11
|
+
"--rmd-card-color"?: string;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
7
14
|
|
|
8
15
|
/** @since 6.0.0 */
|
|
9
16
|
export interface CardClassNameOptions {
|
|
@@ -42,7 +49,7 @@ export function card(options: CardClassNameOptions = {}): string {
|
|
|
42
49
|
const { className, bordered, raisable, interactable } = options;
|
|
43
50
|
|
|
44
51
|
return cnb(
|
|
45
|
-
|
|
52
|
+
styles({
|
|
46
53
|
bordered,
|
|
47
54
|
shadowed: !bordered,
|
|
48
55
|
raisable: !bordered && raisable,
|
|
@@ -70,7 +77,7 @@ export function cardHeader(options: CardHeaderClassNameOptions = {}): string {
|
|
|
70
77
|
const { className, addonAfter = false, addonBefore = false } = options;
|
|
71
78
|
|
|
72
79
|
return cnb(
|
|
73
|
-
|
|
80
|
+
styles("header", {
|
|
74
81
|
"addon-after": addonAfter && !addonBefore,
|
|
75
82
|
"addon-before": addonBefore && !addonAfter,
|
|
76
83
|
surrounded: addonAfter && addonBefore,
|
|
@@ -92,7 +99,7 @@ export function cardHeaderContent(
|
|
|
92
99
|
): string {
|
|
93
100
|
const { className } = options;
|
|
94
101
|
|
|
95
|
-
return cnb(
|
|
102
|
+
return cnb(styles("header-content"), className);
|
|
96
103
|
}
|
|
97
104
|
|
|
98
105
|
/** @since 6.0.0 */
|
|
@@ -106,7 +113,7 @@ export interface CardTitleClassNameOptions {
|
|
|
106
113
|
export function cardTitle(options: CardTitleClassNameOptions = {}): string {
|
|
107
114
|
const { className } = options;
|
|
108
115
|
|
|
109
|
-
return cnb(
|
|
116
|
+
return cnb(styles("title"), className);
|
|
110
117
|
}
|
|
111
118
|
|
|
112
119
|
/** @since 6.0.0 */
|
|
@@ -122,7 +129,7 @@ export function cardSubtitle(
|
|
|
122
129
|
): string {
|
|
123
130
|
const { className } = options;
|
|
124
131
|
|
|
125
|
-
return cnb(
|
|
132
|
+
return cnb(styles("subtitle"), className);
|
|
126
133
|
}
|
|
127
134
|
|
|
128
135
|
/** @since 6.0.0 */
|
|
@@ -165,7 +172,7 @@ export function cardContent(options: CardContentClassNameOptions = {}): string {
|
|
|
165
172
|
} = options;
|
|
166
173
|
|
|
167
174
|
return cnb(
|
|
168
|
-
|
|
175
|
+
styles("content", {
|
|
169
176
|
padded: !disablePadding,
|
|
170
177
|
"padding-bottom": !disableLastChildPadding,
|
|
171
178
|
}),
|
|
@@ -187,5 +194,5 @@ export interface CardFooterClassNameOptions {
|
|
|
187
194
|
export function cardFooter(options: CardFooterClassNameOptions = {}): string {
|
|
188
195
|
const { className } = options;
|
|
189
196
|
|
|
190
|
-
return cnb(
|
|
197
|
+
return cnb(styles("footer"), className);
|
|
191
198
|
}
|
package/src/chip/Chip.tsx
CHANGED
|
@@ -14,33 +14,27 @@ import { getIcon } from "../icon/config.js";
|
|
|
14
14
|
import { type ComponentWithRippleProps } from "../interaction/types.js";
|
|
15
15
|
import { useElementInteraction } from "../interaction/useElementInteraction.js";
|
|
16
16
|
import { useHigherContrastChildren } from "../interaction/useHigherContrastChildren.js";
|
|
17
|
-
import {
|
|
17
|
+
import {
|
|
18
|
+
type BaseMaxWidthTransitionOptions,
|
|
19
|
+
useMaxWidthTransition,
|
|
20
|
+
} from "../transition/useMaxWidthTransition.js";
|
|
18
21
|
import { type PropsWithRef } from "../types.js";
|
|
19
|
-
import { chip, chipContent } from "./styles.js";
|
|
20
|
-
|
|
21
|
-
declare module "react" {
|
|
22
|
-
interface CSSProperties {
|
|
23
|
-
"--rmd-chip-solid-background-color"?: string;
|
|
24
|
-
"--rmd-chip-solid-disabled-background-color"?: string;
|
|
25
|
-
"--rmd-chip-solid-color"?: string;
|
|
26
|
-
"--rmd-chip-theme-background-color"?: string;
|
|
27
|
-
"--rmd-chip-theme-color"?: string;
|
|
28
|
-
"--rmd-chip-outline-background-color"?: string;
|
|
29
|
-
"--rmd-chip-outline-color"?: string;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
22
|
+
import { type ChipTheme, chip, chipContent } from "./styles.js";
|
|
32
23
|
|
|
33
24
|
/**
|
|
34
25
|
* @since 6.0.0 Renamed the `noninteractive` prop to
|
|
35
26
|
* `noninteractable`.
|
|
27
|
+
* @since 6.3.1 Extends BaseMaxWidthTransitionOptions for CSSProperties module
|
|
28
|
+
* augmentation.
|
|
36
29
|
*/
|
|
37
30
|
export interface ChipProps
|
|
38
31
|
extends ButtonHTMLAttributes<HTMLButtonElement>,
|
|
32
|
+
BaseMaxWidthTransitionOptions,
|
|
39
33
|
ComponentWithRippleProps {
|
|
40
34
|
/**
|
|
41
35
|
* @defaultValue `"solid"`
|
|
42
36
|
*/
|
|
43
|
-
theme?:
|
|
37
|
+
theme?: ChipTheme;
|
|
44
38
|
|
|
45
39
|
/**
|
|
46
40
|
* Set this to `true` if the chip should gain additional box shadow while the
|
package/src/chip/styles.ts
CHANGED
|
@@ -5,6 +5,30 @@ import { bem } from "../utils/bem.js";
|
|
|
5
5
|
|
|
6
6
|
const styles = bem("rmd-chip");
|
|
7
7
|
|
|
8
|
+
declare module "react" {
|
|
9
|
+
interface CSSProperties {
|
|
10
|
+
"--rmd-chip-gap"?: string;
|
|
11
|
+
"--rmd-chip-height"?: string;
|
|
12
|
+
"--rmd-chip-border-radius"?: string | number;
|
|
13
|
+
"--rmd-chip-horizontal-padding"?: string | number;
|
|
14
|
+
"--rmd-chip-vertical-padding"?: string | number;
|
|
15
|
+
"--rmd-chip-solid-background-color"?: string;
|
|
16
|
+
"--rmd-chip-solid-disabled-background-color"?: string;
|
|
17
|
+
"--rmd-chip-solid-color"?: string;
|
|
18
|
+
"--rmd-chip-theme-background-color"?: string;
|
|
19
|
+
"--rmd-chip-theme-color"?: string;
|
|
20
|
+
"--rmd-chip-outline-color"?: string;
|
|
21
|
+
"--rmd-chip-outline-width"?: string | number;
|
|
22
|
+
"--rmd-chip-outline-background-color"?: string;
|
|
23
|
+
"--rmd-chip-outline-text-color"?: string;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* @since 6.3.1
|
|
29
|
+
*/
|
|
30
|
+
export type ChipTheme = "outline" | "solid";
|
|
31
|
+
|
|
8
32
|
/**
|
|
9
33
|
* @since 6.0.0
|
|
10
34
|
*
|
|
@@ -39,10 +63,14 @@ const styles = bem("rmd-chip");
|
|
|
39
63
|
*/
|
|
40
64
|
export interface ChipClassNameOptions {
|
|
41
65
|
className?: string;
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* An optional className to provide only while {@link selected} is `true`.
|
|
69
|
+
*/
|
|
42
70
|
selectedClassName?: string;
|
|
43
71
|
|
|
44
72
|
/** @defaultValue `"solid"` */
|
|
45
|
-
theme?:
|
|
73
|
+
theme?: ChipTheme;
|
|
46
74
|
|
|
47
75
|
backgroundColor?: BackgroundColor;
|
|
48
76
|
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { forwardRef } from "react";
|
|
4
|
+
|
|
5
|
+
import { TextField, type TextFieldProps } from "../form/TextField.js";
|
|
6
|
+
import { type DateFieldOptions, useDateField } from "./useDateField.js";
|
|
7
|
+
|
|
8
|
+
/** @since 6.3.0 */
|
|
9
|
+
export interface NativeDateFieldProps
|
|
10
|
+
extends Omit<TextFieldProps, keyof DateFieldOptions | "value">,
|
|
11
|
+
Omit<DateFieldOptions, "ref"> {}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* The `NativeDateField` is a simple wrapper around the `TextField` using the
|
|
15
|
+
* `useDateField` hook.
|
|
16
|
+
*
|
|
17
|
+
* @example Simple Example
|
|
18
|
+
* ```tsx
|
|
19
|
+
* import { NativeDateField } from "@react-md/core/datetime/NativeDateField";
|
|
20
|
+
* import { type ReactElement } from "react";
|
|
21
|
+
*
|
|
22
|
+
* function Example(): ReactElement {
|
|
23
|
+
* return <NativeDateField label="Delivery Date" name="delivery" />;
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* @see {@link https://react-md.dev/components/native-time-field | NativeDateField Demos}
|
|
28
|
+
* @see {@link https://react-md.dev/components/text-field | TextField Demos}
|
|
29
|
+
* @since 6.3.0
|
|
30
|
+
*/
|
|
31
|
+
export const NativeDateField = forwardRef<
|
|
32
|
+
HTMLInputElement,
|
|
33
|
+
NativeDateFieldProps
|
|
34
|
+
>(function NativeDateField(props, ref) {
|
|
35
|
+
const {
|
|
36
|
+
id,
|
|
37
|
+
min,
|
|
38
|
+
max,
|
|
39
|
+
step,
|
|
40
|
+
onBlur,
|
|
41
|
+
onInvalid,
|
|
42
|
+
onChange,
|
|
43
|
+
helpText,
|
|
44
|
+
required,
|
|
45
|
+
validationType,
|
|
46
|
+
disableMessage,
|
|
47
|
+
errorIcon,
|
|
48
|
+
isErrored,
|
|
49
|
+
getErrorIcon,
|
|
50
|
+
getErrorMessage,
|
|
51
|
+
onErrorChange,
|
|
52
|
+
disableReset,
|
|
53
|
+
defaultValue,
|
|
54
|
+
...remaining
|
|
55
|
+
} = props;
|
|
56
|
+
const { name, form } = props;
|
|
57
|
+
const { fieldProps } = useDateField({
|
|
58
|
+
id,
|
|
59
|
+
ref,
|
|
60
|
+
name,
|
|
61
|
+
form,
|
|
62
|
+
min,
|
|
63
|
+
max,
|
|
64
|
+
step,
|
|
65
|
+
onBlur,
|
|
66
|
+
onChange,
|
|
67
|
+
onInvalid,
|
|
68
|
+
helpText,
|
|
69
|
+
required,
|
|
70
|
+
validationType,
|
|
71
|
+
disableMessage: disableMessage ?? (!min && !max && !step && !required),
|
|
72
|
+
errorIcon,
|
|
73
|
+
isErrored,
|
|
74
|
+
getErrorIcon,
|
|
75
|
+
getErrorMessage,
|
|
76
|
+
onErrorChange,
|
|
77
|
+
disableReset,
|
|
78
|
+
defaultValue,
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
let { messageProps } = remaining;
|
|
82
|
+
if (fieldProps.messageProps) {
|
|
83
|
+
messageProps = {
|
|
84
|
+
...fieldProps.messageProps,
|
|
85
|
+
...remaining.messageProps,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return (
|
|
90
|
+
<TextField {...remaining} {...fieldProps} messageProps={messageProps} />
|
|
91
|
+
);
|
|
92
|
+
});
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { forwardRef } from "react";
|
|
4
|
+
|
|
5
|
+
import { TextField, type TextFieldProps } from "../form/TextField.js";
|
|
6
|
+
import { type TimeFieldOptions, useTimeField } from "./useTimeField.js";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @since 6.3.0
|
|
10
|
+
*/
|
|
11
|
+
export interface NativeTimeFieldProps
|
|
12
|
+
extends Omit<TextFieldProps, keyof TimeFieldOptions | "value">,
|
|
13
|
+
Omit<TimeFieldOptions, "ref"> {}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* The `NativeTimeField` is a simple wrapper around the `TextField` using the
|
|
17
|
+
* `useTimeField` hook.
|
|
18
|
+
*
|
|
19
|
+
* @example Simple Example
|
|
20
|
+
* ```tsx
|
|
21
|
+
* import { NativeTimeField } from "@react-md/core/datetime/NativeTimeField";
|
|
22
|
+
* import { type ReactElement } from "react";
|
|
23
|
+
*
|
|
24
|
+
* function Example(): ReactElement {
|
|
25
|
+
* return <NativeTimeField label="Time" name="appt" />;
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @see {@link https://react-md.dev/components/native-time-field | NativeTimeField Demos}
|
|
30
|
+
* @see {@link https://react-md.dev/components/text-field | TextField Demos}
|
|
31
|
+
* @since 6.3.0
|
|
32
|
+
*/
|
|
33
|
+
export const NativeTimeField = forwardRef<
|
|
34
|
+
HTMLInputElement,
|
|
35
|
+
NativeTimeFieldProps
|
|
36
|
+
>(function NativeTimeField(props, ref) {
|
|
37
|
+
const {
|
|
38
|
+
id,
|
|
39
|
+
min,
|
|
40
|
+
max,
|
|
41
|
+
step,
|
|
42
|
+
onBlur,
|
|
43
|
+
onInvalid,
|
|
44
|
+
onChange,
|
|
45
|
+
helpText,
|
|
46
|
+
required,
|
|
47
|
+
validationType,
|
|
48
|
+
disableMessage,
|
|
49
|
+
errorIcon,
|
|
50
|
+
isErrored,
|
|
51
|
+
getErrorIcon,
|
|
52
|
+
getErrorMessage,
|
|
53
|
+
onErrorChange,
|
|
54
|
+
disableReset,
|
|
55
|
+
defaultValue,
|
|
56
|
+
...remaining
|
|
57
|
+
} = props;
|
|
58
|
+
const { name, form } = props;
|
|
59
|
+
const { fieldProps } = useTimeField({
|
|
60
|
+
id,
|
|
61
|
+
ref,
|
|
62
|
+
name,
|
|
63
|
+
form,
|
|
64
|
+
min,
|
|
65
|
+
max,
|
|
66
|
+
step,
|
|
67
|
+
onBlur,
|
|
68
|
+
onChange,
|
|
69
|
+
onInvalid,
|
|
70
|
+
helpText,
|
|
71
|
+
required,
|
|
72
|
+
validationType,
|
|
73
|
+
disableMessage: disableMessage ?? (!min && !max && !step && !required),
|
|
74
|
+
errorIcon,
|
|
75
|
+
isErrored,
|
|
76
|
+
getErrorIcon,
|
|
77
|
+
getErrorMessage,
|
|
78
|
+
onErrorChange,
|
|
79
|
+
disableReset,
|
|
80
|
+
defaultValue,
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
let { messageProps } = remaining;
|
|
84
|
+
if (fieldProps.messageProps) {
|
|
85
|
+
messageProps = {
|
|
86
|
+
...fieldProps.messageProps,
|
|
87
|
+
...remaining.messageProps,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return (
|
|
92
|
+
<TextField {...remaining} {...fieldProps} messageProps={messageProps} />
|
|
93
|
+
);
|
|
94
|
+
});
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { type InputHTMLAttributes, useRef } from "react";
|
|
4
|
+
|
|
5
|
+
import {
|
|
6
|
+
type ProvidedFormMessageProps,
|
|
7
|
+
type ProvidedTextFieldProps,
|
|
8
|
+
type TextFieldHookOptions,
|
|
9
|
+
type TextFieldImplementation,
|
|
10
|
+
type TextFieldWithMessageImplementation,
|
|
11
|
+
useTextField,
|
|
12
|
+
} from "../form/useTextField.js";
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @since 6.3.0
|
|
16
|
+
*/
|
|
17
|
+
export interface DateFieldConstraints {
|
|
18
|
+
/**
|
|
19
|
+
* This **must** be in the format `yyyy-mm-dd`
|
|
20
|
+
*
|
|
21
|
+
* @see {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/input/date#min | min attribute}
|
|
22
|
+
*/
|
|
23
|
+
min?: string;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* This **must** be in the format `yyyy-mm-dd`
|
|
27
|
+
*
|
|
28
|
+
* @see {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/input/date#max | max attribute}
|
|
29
|
+
*/
|
|
30
|
+
max?: string;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* For date inputs, the value of step is given in days; and is treated as a
|
|
34
|
+
* number of milliseconds equal to 86,400,000 times the step value (the
|
|
35
|
+
* underlying numeric value is in milliseconds). The default value of step is
|
|
36
|
+
* 1, indicating 1 day.
|
|
37
|
+
*
|
|
38
|
+
* @see {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/input/date#step | step attribute}
|
|
39
|
+
*/
|
|
40
|
+
step?: number | "any";
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** @since 6.3.0 */
|
|
44
|
+
export interface DateFieldOptions
|
|
45
|
+
extends Omit<
|
|
46
|
+
TextFieldHookOptions,
|
|
47
|
+
| "isNumber"
|
|
48
|
+
| "counter"
|
|
49
|
+
| "pattern"
|
|
50
|
+
| "maxLength"
|
|
51
|
+
| "minLength"
|
|
52
|
+
| "disableMaxLength"
|
|
53
|
+
>,
|
|
54
|
+
DateFieldConstraints {}
|
|
55
|
+
|
|
56
|
+
/** @since 6.3.0 */
|
|
57
|
+
export interface ProvidedDateFieldProps
|
|
58
|
+
extends Omit<ProvidedTextFieldProps, "value">,
|
|
59
|
+
Omit<DateFieldConstraints, "step"> {
|
|
60
|
+
type: "date";
|
|
61
|
+
step?: number | "any";
|
|
62
|
+
defaultValue: Required<InputHTMLAttributes<HTMLInputElement>>["defaultValue"];
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/** @since 6.3.0 */
|
|
66
|
+
export interface ProvidedDateFieldMessageProps extends ProvidedDateFieldProps {
|
|
67
|
+
/**
|
|
68
|
+
* These props will be defined as long as the `disableMessage` prop is not
|
|
69
|
+
* `true` from the `useTextField` hook.
|
|
70
|
+
*/
|
|
71
|
+
messageProps: ProvidedFormMessageProps;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/** @since 6.3.0 */
|
|
75
|
+
export interface DateFieldImplementation
|
|
76
|
+
extends Omit<TextFieldImplementation, "fieldProps"> {
|
|
77
|
+
fieldProps: ProvidedDateFieldProps;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/** @since 6.3.0 */
|
|
81
|
+
export interface DateFieldWithMessageImplementation
|
|
82
|
+
extends Omit<TextFieldWithMessageImplementation, "fieldProps"> {
|
|
83
|
+
fieldProps: ProvidedDateFieldMessageProps;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/** @since 6.3.0 */
|
|
87
|
+
export interface ValidatedDateFieldImplementation
|
|
88
|
+
extends DateFieldImplementation {
|
|
89
|
+
fieldProps: ProvidedDateFieldProps | ProvidedDateFieldMessageProps;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* The `useDateField` is a small wrapper around the {@link useTextField} to be used
|
|
94
|
+
* with `<input type="date" />`. It is used in the `NativeDateField` if an example
|
|
95
|
+
* implementation would like to be seen.
|
|
96
|
+
*
|
|
97
|
+
* @example Simple Example
|
|
98
|
+
* ```tsx
|
|
99
|
+
* import { useDateField } from "@react-md/core/datetime/useDateField";
|
|
100
|
+
* import { TextField } from "@react-md/core/form/TextField";
|
|
101
|
+
* import { type ReactElement } from "react";
|
|
102
|
+
*
|
|
103
|
+
* function Example(): ReactElement {
|
|
104
|
+
* const { value, fieldProps, error, errorMessage } = useDateField({
|
|
105
|
+
* name: "delivery",
|
|
106
|
+
* required: true,
|
|
107
|
+
* min: "2025-01-01",
|
|
108
|
+
* max: "2026-01-01",
|
|
109
|
+
* disableMessage: true,
|
|
110
|
+
* });
|
|
111
|
+
*
|
|
112
|
+
* // value: `""` or `"yyyy-mm-dd"`
|
|
113
|
+
*
|
|
114
|
+
* return <TextField label="Delivery Date" {...fieldProps} />
|
|
115
|
+
* }
|
|
116
|
+
* ```
|
|
117
|
+
*
|
|
118
|
+
* @since 6.3.0
|
|
119
|
+
* @see {@link https://react-md.dev/components/native-date-field | NativeDateField Demos}
|
|
120
|
+
* @see {@link https://react-md.dev/hooks/use-date-field | useDateField Demos}
|
|
121
|
+
*/
|
|
122
|
+
export function useDateField(
|
|
123
|
+
options: DateFieldOptions & { disableMessage: true }
|
|
124
|
+
): DateFieldImplementation;
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* The `useDateField` is a small wrapper around the {@link useTextField} to be used
|
|
128
|
+
* with `<input type="date" />`. It is used in the `NativeDateField` if an example
|
|
129
|
+
* implementation would like to be seen.
|
|
130
|
+
*
|
|
131
|
+
* @example Simple Example
|
|
132
|
+
* ```tsx
|
|
133
|
+
* import { useDateField } from "@react-md/core/datetime/useDateField";
|
|
134
|
+
* import { TextField } from "@react-md/core/form/TextField";
|
|
135
|
+
* import { type ReactElement } from "react";
|
|
136
|
+
*
|
|
137
|
+
* function Example(): ReactElement {
|
|
138
|
+
* const { value, fieldProps } = useDateField({
|
|
139
|
+
* name: "delivery",
|
|
140
|
+
* required: true,
|
|
141
|
+
* min: "2025-01-01",
|
|
142
|
+
* max: "2026-01-01",
|
|
143
|
+
* });
|
|
144
|
+
*
|
|
145
|
+
* // value: `""` or `"yyyy-mm-dd"`
|
|
146
|
+
*
|
|
147
|
+
* return <TextField label="Delivery Date" {...fieldProps} />
|
|
148
|
+
* }
|
|
149
|
+
* ```
|
|
150
|
+
*
|
|
151
|
+
* @since 6.3.0
|
|
152
|
+
* @see {@link https://react-md.dev/components/native-date-field | NativeDateField Demos}
|
|
153
|
+
* @see {@link https://react-md.dev/hooks/use-date-field | useDateField Demos}
|
|
154
|
+
*/
|
|
155
|
+
export function useDateField(
|
|
156
|
+
options: DateFieldOptions
|
|
157
|
+
): DateFieldWithMessageImplementation;
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* @since 6.3.0
|
|
161
|
+
* @see {@link https://react-md.dev/components/native-date-field | NativeTimeField Demos}
|
|
162
|
+
* @see {@link https://react-md.dev/hooks/use-date-field | useTimeField Demos}
|
|
163
|
+
*/
|
|
164
|
+
export function useDateField(
|
|
165
|
+
options: DateFieldOptions
|
|
166
|
+
): ValidatedDateFieldImplementation {
|
|
167
|
+
const { min, max, step, ...fieldOptions } = options;
|
|
168
|
+
const { fieldProps, ...impl } = useTextField(fieldOptions);
|
|
169
|
+
|
|
170
|
+
// NOTE: Unlike the other text field components, the `value` should **not**
|
|
171
|
+
// be provided since the time input behaves a bit weirdly with the `onChange`
|
|
172
|
+
// event and it is better to rely on default browser behavior instead of
|
|
173
|
+
// controlling the value. The flow is:
|
|
174
|
+
// - user types `12:30`
|
|
175
|
+
// - `onChange` is fired with `12:30`
|
|
176
|
+
// - user selects `30` and hits backspace
|
|
177
|
+
// - `onChange` is fired with `""`
|
|
178
|
+
// If the `value` is set, the other time values would be lost
|
|
179
|
+
const { value, ...allowedFieldProps } = fieldProps;
|
|
180
|
+
const initial = useRef(value);
|
|
181
|
+
|
|
182
|
+
return {
|
|
183
|
+
...impl,
|
|
184
|
+
fieldProps: {
|
|
185
|
+
...allowedFieldProps,
|
|
186
|
+
defaultValue: initial.current,
|
|
187
|
+
min,
|
|
188
|
+
max,
|
|
189
|
+
step,
|
|
190
|
+
type: "date",
|
|
191
|
+
},
|
|
192
|
+
};
|
|
193
|
+
}
|