mtrl 0.8.0-next.48 → 0.8.0-next.49

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/dist/components/index.d.ts +6 -0
  2. package/dist/components/segmented-button/config.d.ts +0 -7
  3. package/dist/components/segmented-button/config.js +0 -23
  4. package/dist/components/segmented-button/segment.d.ts +1 -0
  5. package/dist/components/segmented-button/segmented-button.d.ts +11 -0
  6. package/dist/components/segmented-button/segmented-button.js +1 -10
  7. package/dist/components/segmented-button/types.d.ts +11 -11
  8. package/dist/index.cjs +12 -12
  9. package/dist/package.json +1 -1
  10. package/dist/styles/badge.css +1 -1
  11. package/dist/styles/base.css +1 -1
  12. package/dist/styles/bottom-app-bar.css +1 -1
  13. package/dist/styles/bottom-sheet.css +1 -1
  14. package/dist/styles/button-group.css +1 -1
  15. package/dist/styles/button.css +1 -1
  16. package/dist/styles/card.css +1 -1
  17. package/dist/styles/carousel.css +1 -1
  18. package/dist/styles/checkbox.css +1 -1
  19. package/dist/styles/chips.css +1 -1
  20. package/dist/styles/dialog.css +1 -1
  21. package/dist/styles/divider.css +1 -1
  22. package/dist/styles/drawer.css +1 -1
  23. package/dist/styles/extended-fab.css +1 -1
  24. package/dist/styles/fab.css +1 -1
  25. package/dist/styles/icon-button.css +1 -1
  26. package/dist/styles/list.css +1 -1
  27. package/dist/styles/loading-indicator.css +1 -1
  28. package/dist/styles/menu.css +1 -1
  29. package/dist/styles/navigation-rail.css +1 -1
  30. package/dist/styles/navigation.css +1 -1
  31. package/dist/styles/progress.css +1 -1
  32. package/dist/styles/radios.css +1 -1
  33. package/dist/styles/search.css +1 -1
  34. package/dist/styles/segmented-button.css +1 -1
  35. package/dist/styles/select.css +1 -1
  36. package/dist/styles/side-sheet.css +1 -1
  37. package/dist/styles/slider.css +1 -1
  38. package/dist/styles/snackbar.css +1 -1
  39. package/dist/styles/split-button.css +1 -1
  40. package/dist/styles/switch.css +1 -1
  41. package/dist/styles/tabs.css +1 -1
  42. package/dist/styles/textfield.css +1 -1
  43. package/dist/styles/timepicker.css +1 -1
  44. package/dist/styles/top-app-bar.css +1 -1
  45. package/dist/styles/utilities.css +1 -1
  46. package/dist/styles.css +1 -1
  47. package/dist/themes/autumn.css +1 -1
  48. package/dist/themes/baseline.css +1 -1
  49. package/dist/themes/brownbeige.css +1 -1
  50. package/dist/themes/browngreen.css +1 -1
  51. package/dist/themes/desert.css +1 -1
  52. package/dist/themes/forest.css +1 -1
  53. package/dist/themes/highcontrast.css +1 -1
  54. package/dist/themes/legacy.css +1 -1
  55. package/dist/themes/material.css +1 -1
  56. package/dist/themes/ocean.css +1 -1
  57. package/dist/themes/sageivory.css +1 -1
  58. package/dist/themes/spring.css +1 -1
  59. package/dist/themes/summer.css +1 -1
  60. package/dist/themes/sunset.css +1 -1
  61. package/dist/themes/tealcaramel.css +1 -1
  62. package/dist/themes/winter.css +1 -1
  63. package/package.json +1 -1
@@ -36,7 +36,13 @@ export { default as createSplitButton } from "./split-button/index.js";
36
36
  export { default as createRadios } from "./radios/index.js";
37
37
  export { default as createSearch } from "./search/index.js";
38
38
  export { default as createSelect } from "./select/index.js";
39
+ /**
40
+ * @deprecated Since 0.8.0, M3 Expressive replaces segmented buttons with connected button groups. Use {@link createButtonGroup} with `kind: "connected"`.
41
+ */
39
42
  export { default as createSegmentedButton } from "./segmented-button/index.js";
43
+ /**
44
+ * @deprecated Since 0.8.0, M3 Expressive replaces segmented buttons with connected button groups. Use {@link createButtonGroup} with `kind: "connected"`.
45
+ */
40
46
  export { createSegment } from "./segmented-button/segment.js";
41
47
  /** @deprecated Since 0.8.0. Use createBottomSheet or createSideSheet. */
42
48
  export { default as createSheet } from "./sheet/index.js";
@@ -33,13 +33,6 @@ export declare const getContainerConfig: (config: SegmentedButtonConfig) => {
33
33
  className: string[];
34
34
  interactive: boolean;
35
35
  };
36
- /**
37
- * Gets density-specific sizing and spacing values
38
- * @param {string} density - The density level
39
- * @returns {Object} CSS variables with sizing values
40
- * @internal
41
- */
42
- export declare const getDensityStyles: (density: string) => Record<string, string>;
43
36
  /**
44
37
  * Generates configuration for a segment element
45
38
  * @param {Object} segment - Segment configuration
@@ -28,29 +28,6 @@ export const getContainerConfig = (config) => {
28
28
  interactive: true,
29
29
  };
30
30
  };
31
- export const getDensityStyles = (density) => {
32
- switch (density) {
33
- case Density.COMPACT:
34
- return {
35
- "--segment-padding": "4px 8px",
36
- "--segment-height": "28px",
37
- "--segment-font-size": "0.8125rem",
38
- };
39
- case Density.COMFORTABLE:
40
- return {
41
- "--segment-padding": "6px 12px",
42
- "--segment-height": "32px",
43
- "--segment-font-size": "0.875rem",
44
- };
45
- case Density.DEFAULT:
46
- default:
47
- return {
48
- "--segment-padding": "8px 16px",
49
- "--segment-height": "36px",
50
- "--segment-font-size": "0.875rem",
51
- };
52
- }
53
- };
54
31
  export const getSegmentConfig = (segment, prefix, groupDisabled = false) => {
55
32
  const isDisabled = groupDisabled || segment.disabled;
56
33
  return {
@@ -7,6 +7,7 @@ import { SegmentConfig, Segment } from "./types.js";
7
7
  * - Icon + text segments: Replace icon with checkmark when selected
8
8
  * - Icon-only segments: Do NOT show checkmark (icon remains unchanged)
9
9
  *
10
+ * @deprecated Since 0.8.0, M3 Expressive replaces segmented buttons with connected button groups. Use {@link createButtonGroup} with `kind: "connected"`.
10
11
  * @param {SegmentConfig} config - Segment configuration
11
12
  * @param {HTMLElement} container - Container element
12
13
  * @param {string} prefix - Component prefix
@@ -6,6 +6,17 @@ import { SegmentedButtonConfig, SegmentedButtonComponent } from "./types.js";
6
6
  * be used for selection and filtering. It supports single or multiple selection modes,
7
7
  * configurable density, disabled states, and event handling.
8
8
  *
9
+ * Migration to {@link createButtonGroup}:
10
+ * - Use `kind: "connected"`, rename `segments` to `buttons` and `mode` to `selection`.
11
+ * - For `selection: "single"`, set `required: true` and explicitly mark the first
12
+ * enabled button `selected: true` to preserve the old initial selection.
13
+ * - Replace `getValue()` with `getSelected()` and read change events from `values`.
14
+ * - Checkmarks and their animation are not automatic; supply `selectedIcon` as needed.
15
+ * - Density changes height only. Connected groups have 2dp gaps and separate
16
+ * selected pills instead of one outlined container.
17
+ *
18
+ * @deprecated Since 0.8.0, M3 Expressive replaces segmented buttons with connected button groups. Use {@link createButtonGroup} with `kind: "connected"`.
19
+ *
9
20
  * @param {SegmentedButtonConfig} config - Segmented Button configuration
10
21
  * @returns {SegmentedButtonComponent} Segmented Button component instance
11
22
  *
@@ -3,19 +3,14 @@ import { createBase, withElement } from "../../core/compose/component.js";
3
3
  import { withEvents, withLifecycle } from "../../core/compose/features/index.js";
4
4
  import { createEmitter } from "../../core/state/emitter.js";
5
5
  import { SelectionMode, Density } from "./types.js";
6
- import { createBaseConfig, getContainerConfig, getDensityStyles } from "./config.js";
6
+ import { createBaseConfig, getContainerConfig } from "./config.js";
7
7
  import { createSegment } from "./segment.js";
8
8
  const createSegmentedButton = (config = {}) => {
9
9
  const baseConfig = createBaseConfig(config);
10
10
  const mode = baseConfig.mode || SelectionMode.SINGLE;
11
- const density = baseConfig.density || Density.DEFAULT;
12
11
  const emitter = createEmitter();
13
12
  try {
14
13
  const component = pipe(createBase, withEvents(), withElement(getContainerConfig(baseConfig)), withLifecycle())(baseConfig);
15
- const densityStyles = getDensityStyles(density);
16
- Object.entries(densityStyles).forEach(([prop, value]) => {
17
- component.element.style.setProperty(prop, value);
18
- });
19
14
  const segments = [];
20
15
  if (baseConfig.segments && baseConfig.segments.length) {
21
16
  baseConfig.segments.forEach(segmentConfig => {
@@ -74,10 +69,6 @@ const createSegmentedButton = (config = {}) => {
74
69
  component.element.classList.add(`${baseConfig.prefix}-segmented-button--${newDensity}`);
75
70
  }
76
71
  component.element.setAttribute('data-density', newDensity);
77
- const densityStyles = getDensityStyles(newDensity);
78
- Object.entries(densityStyles).forEach(([prop, value]) => {
79
- component.element.style.setProperty(prop, value);
80
- });
81
72
  };
82
73
  const segmentedButton = {
83
74
  element: component.element,
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Segmented button selection mode
3
3
  * @category Components
4
+ * @deprecated Since 0.8.0, M3 Expressive replaces segmented buttons with connected button groups. Use {@link createButtonGroup} with `kind: "connected"`.
4
5
  */
5
6
  export declare enum SelectionMode {
6
7
  /** Only one segment can be selected at a time */
@@ -12,6 +13,7 @@ export declare enum SelectionMode {
12
13
  * Density options for segmented button
13
14
  * Controls the overall sizing and spacing of the component.
14
15
  * @category Components
16
+ * @deprecated Since 0.8.0, M3 Expressive replaces segmented buttons with connected button groups. Use {@link createButtonGroup} with `kind: "connected"`.
15
17
  */
16
18
  export declare enum Density {
17
19
  /** Default size with standard spacing */
@@ -29,22 +31,17 @@ export type SegmentedButtonEventType = 'change';
29
31
  * Event data for segmented button events
30
32
  */
31
33
  export interface SegmentedButtonEvent {
32
- /** The segmented button component that triggered the event */
33
- segmentedButton: SegmentedButtonComponent;
34
- /** The selected segments */
34
+ /** The selected segments after the change */
35
35
  selected: Segment[];
36
- /** Values of the selected segments */
37
- values: string[];
38
- /** Original DOM event if available */
39
- originalEvent: Event | null;
40
- /** Function to prevent default behavior */
41
- preventDefault: () => void;
42
- /** Whether default behavior was prevented */
43
- defaultPrevented: boolean;
36
+ /** Values of the selected segments after the change */
37
+ value: string[];
38
+ /** Values of the selected segments before the change */
39
+ oldValue: string[];
44
40
  }
45
41
  /**
46
42
  * Configuration for a single segment within a segmented button
47
43
  * @category Components
44
+ * @deprecated Since 0.8.0, M3 Expressive replaces segmented buttons with connected button groups. Use {@link createButtonGroup} with `kind: "connected"`.
48
45
  */
49
46
  export interface SegmentConfig {
50
47
  /**
@@ -83,6 +80,7 @@ export interface SegmentConfig {
83
80
  /**
84
81
  * Configuration interface for the Segmented Button component
85
82
  * @category Components
83
+ * @deprecated Since 0.8.0, M3 Expressive replaces segmented buttons with connected button groups. Use {@link createButtonGroup} with `kind: "connected"`.
86
84
  */
87
85
  export interface SegmentedButtonConfig {
88
86
  /**
@@ -143,6 +141,7 @@ export interface SegmentedButtonConfig {
143
141
  /**
144
142
  * Interface for a segment within a segmented button
145
143
  * @category Components
144
+ * @deprecated Since 0.8.0, M3 Expressive replaces segmented buttons with connected button groups. Use {@link createButtonGroup} with `kind: "connected"`.
146
145
  */
147
146
  export interface Segment {
148
147
  /** The segment's DOM element */
@@ -175,6 +174,7 @@ export interface Segment {
175
174
  /**
176
175
  * Segmented Button component interface
177
176
  * @category Components
177
+ * @deprecated Since 0.8.0, M3 Expressive replaces segmented buttons with connected button groups. Use {@link createButtonGroup} with `kind: "connected"`.
178
178
  */
179
179
  export interface SegmentedButtonComponent {
180
180
  /** The component's container DOM element */