mtrl 0.8.0-next.39 → 0.8.0-next.40

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 (64) hide show
  1. package/dist/components/drawer/config.d.ts +1 -0
  2. package/dist/components/drawer/config.js +2 -0
  3. package/dist/components/drawer/constants.d.ts +2 -0
  4. package/dist/components/drawer/constants.js +1 -0
  5. package/dist/components/drawer/features/items.js +13 -0
  6. package/dist/components/drawer/types.d.ts +6 -0
  7. package/dist/core/compose/features/ripple.d.ts +6 -0
  8. package/dist/core/compose/features/ripple.js +1 -1
  9. package/dist/index.cjs +12 -12
  10. package/dist/package.json +1 -1
  11. package/dist/styles/badge.css +1 -1
  12. package/dist/styles/base.css +1 -1
  13. package/dist/styles/bottom-app-bar.css +1 -1
  14. package/dist/styles/bottom-sheet.css +1 -1
  15. package/dist/styles/button-group.css +1 -1
  16. package/dist/styles/button.css +1 -1
  17. package/dist/styles/card.css +1 -1
  18. package/dist/styles/carousel.css +1 -1
  19. package/dist/styles/checkbox.css +1 -1
  20. package/dist/styles/chips.css +1 -1
  21. package/dist/styles/dialog.css +1 -1
  22. package/dist/styles/divider.css +1 -1
  23. package/dist/styles/drawer.css +2 -2
  24. package/dist/styles/extended-fab.css +1 -1
  25. package/dist/styles/fab.css +1 -1
  26. package/dist/styles/icon-button.css +1 -1
  27. package/dist/styles/list.css +1 -1
  28. package/dist/styles/loading-indicator.css +1 -1
  29. package/dist/styles/menu.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 +2 -2
  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
  64. package/src/styles/components/_drawer.scss +76 -90
@@ -72,6 +72,7 @@ export declare const getApiConfig: (comp: {
72
72
  setItems: (items: DrawerConfig["items"]) => void;
73
73
  getItems: () => DrawerConfig["items"];
74
74
  setBadge: (id: string, badge: string) => void;
75
+ destroy: () => void;
75
76
  };
76
77
  drawerHeadline: {
77
78
  setHeadline: (text: string) => void;
@@ -6,6 +6,7 @@ export const defaultConfig = {
6
6
  open: DRAWER_DEFAULTS.OPEN,
7
7
  dismissible: DRAWER_DEFAULTS.DISMISSIBLE,
8
8
  width: DRAWER_DEFAULTS.WIDTH,
9
+ ripple: DRAWER_DEFAULTS.RIPPLE,
9
10
  items: [],
10
11
  };
11
12
  export const createBaseConfig = (config = {}) => createComponentConfig(defaultConfig, config, "drawer");
@@ -57,6 +58,7 @@ export const getApiConfig = (comp) => ({
57
58
  if (comp._stateCleanup) {
58
59
  comp._stateCleanup();
59
60
  }
61
+ comp.drawerItems.destroy();
60
62
  comp.lifecycle.destroy();
61
63
  },
62
64
  },
@@ -94,4 +94,6 @@ export declare const DRAWER_DEFAULTS: {
94
94
  readonly DISMISSIBLE: true;
95
95
  /** Default drawer width in pixels */
96
96
  readonly WIDTH: 360;
97
+ /** Whether items ripple on press */
98
+ readonly RIPPLE: true;
97
99
  };
@@ -42,4 +42,5 @@ export const DRAWER_DEFAULTS = {
42
42
  OPEN: false,
43
43
  DISMISSIBLE: true,
44
44
  WIDTH: 360,
45
+ RIPPLE: true,
45
46
  };
@@ -1,4 +1,5 @@
1
1
  import { DRAWER_EVENTS } from "../constants.js";
2
+ import { createRipple, } from "../../../core/compose/features/ripple.js";
2
3
  const createItemElement = (item, getClass) => {
3
4
  const el = document.createElement("button");
4
5
  el.className = getClass("drawer__item");
@@ -55,6 +56,12 @@ export const withItems = (config) => (component) => {
55
56
  let currentItems = config.items || [];
56
57
  let activeId = null;
57
58
  let itemsContainer = null;
59
+ const ripple = config.ripple !== false ? createRipple() : null;
60
+ let rippled = [];
61
+ const unmountRipples = () => {
62
+ rippled.forEach((element) => ripple?.unmount(element));
63
+ rippled = [];
64
+ };
58
65
  const initialActive = currentItems.find((item) => item.type !== "divider" && item.type !== "section" && item.active && !item.disabled);
59
66
  if (initialActive?.id) {
60
67
  activeId = initialActive.id;
@@ -62,6 +69,7 @@ export const withItems = (config) => (component) => {
62
69
  const renderItems = () => {
63
70
  if (!itemsContainer)
64
71
  return;
72
+ unmountRipples();
65
73
  itemsContainer.innerHTML = "";
66
74
  let navIndex = 0;
67
75
  currentItems.forEach((item) => {
@@ -92,6 +100,10 @@ export const withItems = (config) => (component) => {
92
100
  }
93
101
  }
94
102
  });
103
+ if (ripple && !item.disabled) {
104
+ ripple.mount(itemEl);
105
+ rippled.push(itemEl);
106
+ }
95
107
  itemsContainer.appendChild(itemEl);
96
108
  });
97
109
  };
@@ -197,6 +209,7 @@ export const withItems = (config) => (component) => {
197
209
  getItems,
198
210
  setBadge,
199
211
  renderItems,
212
+ destroy: unmountRipples,
200
213
  },
201
214
  };
202
215
  };
@@ -102,6 +102,12 @@ export interface DrawerConfig extends BaseComponentConfig {
102
102
  * @default false
103
103
  */
104
104
  dense?: boolean;
105
+ /**
106
+ * Whether items show a ripple on press. The ripple is clipped to the
107
+ * item shape, so it reads as part of the active indicator.
108
+ * @default true
109
+ */
110
+ ripple?: boolean;
105
111
  /**
106
112
  * Additional CSS classes to add to the drawer
107
113
  */
@@ -46,6 +46,12 @@ export interface RippleFeatureConfig {
46
46
  export interface RippleComponent extends BaseComponent {
47
47
  ripple: RippleController;
48
48
  }
49
+ /**
50
+ * Creates a ripple controller for managing ripple effects
51
+ * @param config - Ripple configuration
52
+ * @returns Ripple controller
53
+ */
54
+ export declare const createRipple: (config?: RippleConfig) => RippleController;
49
55
  declare global {
50
56
  interface HTMLElement {
51
57
  __rippleHandlers?: Array<(e: MouseEvent) => void>;
@@ -1,6 +1,6 @@
1
1
  import { RIPPLE_CONFIG } from "./constants.js";
2
2
  import { PREFIX } from "../../config.js";
3
- const createRipple = (config = {}) => {
3
+ export const createRipple = (config = {}) => {
4
4
  const options = {
5
5
  ...RIPPLE_CONFIG,
6
6
  ...config,