mtrl 0.10.5 → 0.10.6
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/components/button-group/button-group.js +22 -6
- package/dist/components/button-group/types.d.ts +3 -1
- package/dist/components/card/types.d.ts +1 -1
- package/dist/components/carousel/types.d.ts +1 -0
- package/dist/components/chips/types.d.ts +5 -1
- package/dist/components/icon-button/types.d.ts +3 -0
- package/dist/components/navigation-rail/types.d.ts +2 -0
- package/dist/components/radios/constants.d.ts +3 -3
- package/dist/components/radios/types.d.ts +8 -3
- package/dist/components/search/types.d.ts +6 -6
- package/dist/components/select/types.d.ts +4 -2
- package/dist/components/split-button/types.d.ts +5 -1
- package/dist/components/tabs/types.d.ts +1 -1
- package/dist/components/timepicker/types.d.ts +2 -1
- package/dist/components/tooltip/api.js +20 -18
- package/dist/core/compose/features/input.d.ts +9 -2
- package/dist/elements/define.d.ts +8 -0
- package/dist/elements/define.js +2 -1
- package/dist/elements/icon-button.d.ts +3 -2
- package/dist/elements/preupgrade.css +1 -1
- package/dist/index.cjs +0 -0
- package/dist/package.json +1 -1
- package/dist/styles/badge.css +1 -1
- package/dist/styles/base.css +1 -1
- package/dist/styles/bottom-app-bar.css +1 -1
- package/dist/styles/bottom-sheet.css +1 -1
- package/dist/styles/button-group.css +1 -1
- package/dist/styles/button.css +1 -1
- package/dist/styles/card.css +1 -1
- package/dist/styles/carousel.css +1 -1
- package/dist/styles/checkbox.css +1 -1
- package/dist/styles/chips.css +1 -1
- package/dist/styles/datepicker.css +1 -1
- package/dist/styles/dialog.css +1 -1
- package/dist/styles/divider.css +1 -1
- package/dist/styles/drawer.css +1 -1
- package/dist/styles/extended-fab.css +1 -1
- package/dist/styles/fab-menu.css +1 -1
- package/dist/styles/fab.css +1 -1
- package/dist/styles/icon-button.css +1 -1
- package/dist/styles/list.css +1 -1
- package/dist/styles/loading-indicator.css +1 -1
- package/dist/styles/menu.css +1 -1
- package/dist/styles/navigation-rail.css +1 -1
- package/dist/styles/progress.css +1 -1
- package/dist/styles/radios.css +1 -1
- package/dist/styles/search.css +1 -1
- package/dist/styles/segmented-button.css +1 -1
- package/dist/styles/select.css +1 -1
- package/dist/styles/side-sheet.css +1 -1
- package/dist/styles/slider.css +1 -1
- package/dist/styles/snackbar.css +1 -1
- package/dist/styles/split-button.css +1 -1
- package/dist/styles/switch.css +1 -1
- package/dist/styles/tabs.css +1 -1
- package/dist/styles/textfield.css +1 -1
- package/dist/styles/timepicker.css +1 -1
- package/dist/styles/toolbar.css +1 -1
- package/dist/styles/tooltip.css +1 -1
- package/dist/styles/top-app-bar.css +1 -1
- package/dist/styles/utilities.css +1 -1
- package/dist/styles.css +1 -1
- package/dist/themes/autumn.css +1 -1
- package/dist/themes/baseline.css +1 -1
- package/dist/themes/brownbeige.css +1 -1
- package/dist/themes/browngreen.css +1 -1
- package/dist/themes/content.css +1 -1
- package/dist/themes/desert.css +1 -1
- package/dist/themes/expressive.css +1 -1
- package/dist/themes/fidelity.css +1 -1
- package/dist/themes/forest.css +1 -1
- package/dist/themes/fruit-salad.css +1 -1
- package/dist/themes/highcontrast.css +1 -1
- package/dist/themes/legacy.css +1 -1
- package/dist/themes/material.css +1 -1
- package/dist/themes/monochrome.css +1 -1
- package/dist/themes/neutral.css +1 -1
- package/dist/themes/ocean.css +1 -1
- package/dist/themes/rainbow.css +1 -1
- package/dist/themes/sageivory.css +1 -1
- package/dist/themes/spring.css +1 -1
- package/dist/themes/summer.css +1 -1
- package/dist/themes/sunset.css +1 -1
- package/dist/themes/tealcaramel.css +1 -1
- package/dist/themes/vibrant.css +1 -1
- package/dist/themes/winter.css +1 -1
- package/package.json +1 -1
|
@@ -56,6 +56,8 @@ const createButtonGroup = (config = {}) => {
|
|
|
56
56
|
const releasePress = () => {
|
|
57
57
|
buttons.forEach(b => {
|
|
58
58
|
b.element.style.width = '';
|
|
59
|
+
b.element.style.minWidth = '';
|
|
60
|
+
b.element.style.maxWidth = '';
|
|
59
61
|
b.element.style.paddingLeft = '';
|
|
60
62
|
b.element.style.paddingRight = '';
|
|
61
63
|
});
|
|
@@ -70,26 +72,40 @@ const createButtonGroup = (config = {}) => {
|
|
|
70
72
|
return;
|
|
71
73
|
const view = component.element.ownerDocument.defaultView;
|
|
72
74
|
const padding = (i, side) => view ? parseFloat(view.getComputedStyle(buttons[i].element)[side]) || 0 : 0;
|
|
75
|
+
const rtl = view?.getComputedStyle(component.element).direction === 'rtl';
|
|
73
76
|
const previous = buttons[index - 1] ? index - 1 : -1;
|
|
74
77
|
const next = buttons[index + 1] ? index + 1 : -1;
|
|
75
78
|
const middle = previous >= 0 && next >= 0;
|
|
76
79
|
const share = expandedRatio * widths[index] / (middle ? 2 : 1);
|
|
77
80
|
let growth = 0;
|
|
81
|
+
const apply = [];
|
|
78
82
|
const compress = (i, side) => {
|
|
79
83
|
const limit = Math.min(share, BUTTON_GROUP_COMPRESSION_LIMIT, widths[i]);
|
|
80
84
|
if (limit <= 0)
|
|
81
85
|
return;
|
|
82
|
-
buttons[i].element
|
|
86
|
+
const el = buttons[i].element;
|
|
87
|
+
const to = widths[i] - limit;
|
|
88
|
+
el.style.minWidth = `${to}px`;
|
|
89
|
+
el.style.width = `${widths[i]}px`;
|
|
83
90
|
const facing = padding(i, side);
|
|
84
|
-
|
|
85
|
-
|
|
91
|
+
apply.push(() => {
|
|
92
|
+
el.style.width = `${to}px`;
|
|
93
|
+
if (facing > 0)
|
|
94
|
+
el.style[side] = `${Math.max(0, facing - limit)}px`;
|
|
95
|
+
});
|
|
86
96
|
growth += limit;
|
|
87
97
|
};
|
|
88
98
|
if (previous >= 0)
|
|
89
|
-
compress(previous, 'paddingRight');
|
|
99
|
+
compress(previous, rtl ? 'paddingLeft' : 'paddingRight');
|
|
90
100
|
if (next >= 0)
|
|
91
|
-
compress(next, 'paddingLeft');
|
|
92
|
-
buttons[index].element
|
|
101
|
+
compress(next, rtl ? 'paddingRight' : 'paddingLeft');
|
|
102
|
+
const pressed = buttons[index].element;
|
|
103
|
+
const to = widths[index] + growth;
|
|
104
|
+
pressed.style.maxWidth = `${to}px`;
|
|
105
|
+
pressed.style.width = `${widths[index]}px`;
|
|
106
|
+
void pressed.offsetWidth;
|
|
107
|
+
apply.forEach(fn => fn());
|
|
108
|
+
pressed.style.width = `${to}px`;
|
|
93
109
|
document.addEventListener('pointerup', releasePress);
|
|
94
110
|
document.addEventListener('pointercancel', releasePress);
|
|
95
111
|
};
|
|
@@ -217,7 +217,9 @@ export interface ButtonGroupConfig {
|
|
|
217
217
|
*/
|
|
218
218
|
ariaLabel?: string;
|
|
219
219
|
/**
|
|
220
|
-
* Event handlers for button group events
|
|
220
|
+
* Event handlers for button group events. On 0.10.x this map is accepted
|
|
221
|
+
* and never called: subscribe with `on(event, handler)` on the group. In 1.0
|
|
222
|
+
* the handlers run, with the listener's argument.
|
|
221
223
|
*/
|
|
222
224
|
on?: {
|
|
223
225
|
click?: (event: ButtonGroupEvent) => void;
|
|
@@ -224,7 +224,7 @@ export interface BaseComponent {
|
|
|
224
224
|
getElementClass: (base: string, element: string) => string;
|
|
225
225
|
/** Add CSS class(es) */
|
|
226
226
|
addClass: (...classes: string[]) => BaseComponent;
|
|
227
|
-
/** Emit an event */
|
|
227
|
+
/** Emit an event. In 1.0, `emit` accepts only the card's own events ({@link CardEvents}). */
|
|
228
228
|
emit?: (event: string, data?: unknown) => void;
|
|
229
229
|
/** Component configuration */
|
|
230
230
|
config: CardComponentConfig;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ForwardedEventPayload } from "../../core/dom/index.js";
|
|
2
2
|
/** Current item reported by programmatic navigation or native scrolling. */
|
|
3
3
|
export interface CarouselChangePayload {
|
|
4
|
+
/** The current item's index. In 1.0 the payload carries it as `value`, and `index` is gone. */
|
|
4
5
|
index: number;
|
|
5
6
|
}
|
|
6
7
|
/** Events emitted by the scroll feature and forwarded from the root. */
|
|
@@ -36,7 +36,9 @@ export interface ChipConfig {
|
|
|
36
36
|
trailingLabel?: string;
|
|
37
37
|
/** The trailing button opens a menu: aria-haspopup="menu", and a drop-down arrow unless trailingIcon is set. */
|
|
38
38
|
trailingMenu?: boolean;
|
|
39
|
+
/** In 1.0 a chip's `onClick` receives the `click` payload, `{ event, originalEvent, element }`, not the chip. */
|
|
39
40
|
onClick?: (chip: ChipComponent) => void;
|
|
41
|
+
/** In 1.0 a chip's `onChange` receives one object, `{ selected, chip, value }`, the `change` payload. */
|
|
40
42
|
onChange?: (selected: boolean, chip: ChipComponent) => void;
|
|
41
43
|
onSelect?: (chip: ChipComponent) => void;
|
|
42
44
|
class?: string;
|
|
@@ -152,7 +154,9 @@ export interface ChipsConfig {
|
|
|
152
154
|
*/
|
|
153
155
|
selectionRequired?: boolean;
|
|
154
156
|
/**
|
|
155
|
-
* Callback function when chip selection changes
|
|
157
|
+
* Callback function when chip selection changes.
|
|
158
|
+
* In 1.0 it receives one object, `{ value, selected, changed }` (no array, no
|
|
159
|
+
* second argument), and also hears `selectByValue(values, true)`.
|
|
156
160
|
*/
|
|
157
161
|
onChange?: (event: ChipsChangeEvent, changedValue: string | null) => void;
|
|
158
162
|
/**
|
|
@@ -74,6 +74,9 @@ export interface IconButtonConfig extends BaseComponentConfig {
|
|
|
74
74
|
* Whether the IconButton supports toggle (selection) behavior
|
|
75
75
|
* When true, the button can be selected/unselected
|
|
76
76
|
*
|
|
77
|
+
* A click emits `change`. The DOM `toggle` event the button also dispatches
|
|
78
|
+
* is deprecated and removed in 1.0: listen to `change`.
|
|
79
|
+
*
|
|
77
80
|
* @default false
|
|
78
81
|
*/
|
|
79
82
|
toggle?: boolean;
|
|
@@ -50,7 +50,9 @@ export interface NavigationRailConfig extends BaseComponentConfig {
|
|
|
50
50
|
header?: HTMLElement;
|
|
51
51
|
ripple?: boolean;
|
|
52
52
|
onSelect?: (event: NavigationRailSelectEvent) => void;
|
|
53
|
+
/** In 1.0 it receives `{ expanded: true }`, the object an `expand` listener receives. */
|
|
53
54
|
onExpand?: () => void;
|
|
55
|
+
/** In 1.0 it receives `{ expanded: false }`, the object a `collapse` listener receives. */
|
|
54
56
|
onCollapse?: () => void;
|
|
55
57
|
}
|
|
56
58
|
export interface NavigationRailComponent {
|
|
@@ -69,13 +69,13 @@ export declare const RADIO_EVENTS: {
|
|
|
69
69
|
* Default configuration values
|
|
70
70
|
*/
|
|
71
71
|
export declare const RADIO_DEFAULTS: {
|
|
72
|
-
/**
|
|
72
|
+
/** @deprecated The radios have no variant option; nothing reads this. Removed in 1.0. */
|
|
73
73
|
readonly VARIANT: "standard";
|
|
74
74
|
/** Default radio direction */
|
|
75
75
|
readonly DIRECTION: "vertical";
|
|
76
|
-
/**
|
|
76
|
+
/** @deprecated The radios have no label position option; nothing reads this. Removed in 1.0. */
|
|
77
77
|
readonly LABEL_POSITION: "right";
|
|
78
|
-
/**
|
|
78
|
+
/** @deprecated The radios have no size option; nothing reads this. Removed in 1.0. */
|
|
79
79
|
readonly SIZE: "medium";
|
|
80
80
|
};
|
|
81
81
|
/**
|
|
@@ -101,7 +101,10 @@ export interface RadioItem {
|
|
|
101
101
|
}
|
|
102
102
|
/** Selection or unknown-value clearing reported by the radio group. */
|
|
103
103
|
export interface RadiosChangePayload {
|
|
104
|
-
/**
|
|
104
|
+
/**
|
|
105
|
+
* Selected value, or an empty string when an unknown value clears selection.
|
|
106
|
+
* In 1.0 that is `null`, as the select and `<m-radios>` report it.
|
|
107
|
+
*/
|
|
105
108
|
value: string;
|
|
106
109
|
/** Native input change event; undefined for programmatic clearing. */
|
|
107
110
|
originalEvent: Event | undefined;
|
|
@@ -133,12 +136,14 @@ export interface RadiosComponent {
|
|
|
133
136
|
*/
|
|
134
137
|
getClass: (name: string) => string;
|
|
135
138
|
/**
|
|
136
|
-
* Gets the radios component name
|
|
139
|
+
* Gets the radios component name.
|
|
140
|
+
* In 1.0 it returns `null`, not an empty string, when nothing is selected.
|
|
137
141
|
* @returns Selected radio value or empty string if none selected
|
|
138
142
|
*/
|
|
139
143
|
getValue: () => string;
|
|
140
144
|
/**
|
|
141
|
-
* Sets the radios component value (selects a radio)
|
|
145
|
+
* Sets the radios component value (selects a radio).
|
|
146
|
+
* In 1.0 it also accepts `null`, which clears the selection.
|
|
142
147
|
* @param value - Value to select
|
|
143
148
|
* @returns The radios component for chaining
|
|
144
149
|
*/
|
|
@@ -116,17 +116,17 @@ export interface SearchConfig {
|
|
|
116
116
|
class?: string;
|
|
117
117
|
/** Component prefix for class names */
|
|
118
118
|
prefix?: string;
|
|
119
|
-
/** Called when search is submitted */
|
|
119
|
+
/** Called when search is submitted. In 1.0 it receives the `SearchEvent` a `submit` listener receives: read `event.value`. */
|
|
120
120
|
onSubmit?: (value: string) => void;
|
|
121
|
-
/** Called when input value changes */
|
|
121
|
+
/** Called when input value changes. In 1.0 it receives the `SearchEvent` an `input` listener receives: read `event.value`. */
|
|
122
122
|
onInput?: (value: string) => void;
|
|
123
|
-
/** Called when search is cleared */
|
|
123
|
+
/** Called when search is cleared. In 1.0 it receives the `SearchEvent` a `clear` listener receives. */
|
|
124
124
|
onClear?: () => void;
|
|
125
|
-
/** Called when view expands */
|
|
125
|
+
/** Called when view expands. In 1.0 it receives the object an `expand` listener receives. */
|
|
126
126
|
onExpand?: () => void;
|
|
127
|
-
/** Called when view collapses */
|
|
127
|
+
/** Called when view collapses. In 1.0 it receives the object a `collapse` listener receives. */
|
|
128
128
|
onCollapse?: () => void;
|
|
129
|
-
/** Called when a suggestion is selected */
|
|
129
|
+
/** Called when a suggestion is selected. In 1.0 it receives the `SearchEvent`: the suggestion is `event.suggestion`. */
|
|
130
130
|
onSuggestionSelect?: (suggestion: SearchSuggestion) => void;
|
|
131
131
|
/** Event handlers map */
|
|
132
132
|
on?: Partial<Record<SearchEventType, (event: SearchEvent) => void>>;
|
|
@@ -160,12 +160,14 @@ export interface SelectComponent {
|
|
|
160
160
|
element: HTMLElement;
|
|
161
161
|
/**
|
|
162
162
|
* The textfield component
|
|
163
|
-
* @deprecated Renamed `textField` in 1.0 (FLO-383)
|
|
164
|
-
*
|
|
163
|
+
* @deprecated Renamed `textField` in 1.0 (FLO-383), where `select.textfield` is `undefined`.
|
|
164
|
+
* 0.10.x has no `textField`, so rename it when you upgrade.
|
|
165
165
|
*/
|
|
166
166
|
textfield: TextfieldComponent;
|
|
167
167
|
/**
|
|
168
168
|
* The menu component
|
|
169
|
+
* @deprecated Removed in 1.0. Use the select's own methods and events: `open()`,
|
|
170
|
+
* `close()`, `isOpen()`, `getOptions()`, `setOptions()`, and `open`, `close` and `change`.
|
|
169
171
|
*/
|
|
170
172
|
menu: MenuComponent;
|
|
171
173
|
/**
|
|
@@ -84,7 +84,11 @@ export interface SplitButtonComponent {
|
|
|
84
84
|
leadingElement: HTMLButtonElement;
|
|
85
85
|
/** The trailing button's element */
|
|
86
86
|
trailingElement: HTMLButtonElement;
|
|
87
|
-
/**
|
|
87
|
+
/**
|
|
88
|
+
* The menu, when the component was given items
|
|
89
|
+
* @deprecated Removed in 1.0. Use the split button's own methods and events: `expand()`,
|
|
90
|
+
* `collapse()`, `isExpanded()`, and `expand`, `collapse` and `select`.
|
|
91
|
+
*/
|
|
88
92
|
menu?: MenuComponent;
|
|
89
93
|
/** Sets the leading button's label */
|
|
90
94
|
setText: (text: string) => SplitButtonComponent;
|
|
@@ -407,7 +407,7 @@ export interface TabsComponent {
|
|
|
407
407
|
*/
|
|
408
408
|
off(event: string, handler: Function): this;
|
|
409
409
|
/**
|
|
410
|
-
* Emit an event
|
|
410
|
+
* Emit an event. In 1.0, `emit` accepts only the tabs' own events.
|
|
411
411
|
* @param event - Event name
|
|
412
412
|
* @param data - Event data
|
|
413
413
|
* @returns Tabs component for chaining
|
|
@@ -222,7 +222,8 @@ export interface TimePickerConfig {
|
|
|
222
222
|
*/
|
|
223
223
|
onClose?: () => void;
|
|
224
224
|
/**
|
|
225
|
-
* Callback when time is confirmed; receives the same 24-hour value as getValue()
|
|
225
|
+
* Callback when time is confirmed; receives the same 24-hour value as getValue().
|
|
226
|
+
* In 1.0 it receives `{ value }`, the object a `confirm` listener receives.
|
|
226
227
|
*/
|
|
227
228
|
onConfirm?: (time: string) => void;
|
|
228
229
|
/**
|
|
@@ -39,7 +39,9 @@ export const withAPI = ({ lifecycle }) => (component) => {
|
|
|
39
39
|
const calculatePosition = () => {
|
|
40
40
|
if (!target)
|
|
41
41
|
return { top: 0, left: 0 };
|
|
42
|
-
|
|
42
|
+
component.element.style.left = "0px";
|
|
43
|
+
const tooltipWidth = component.element.offsetWidth;
|
|
44
|
+
const tooltipHeight = component.element.offsetHeight;
|
|
43
45
|
const targetRect = target.getBoundingClientRect();
|
|
44
46
|
const scrollY = topLayer ? 0 : window.scrollY || window.pageYOffset;
|
|
45
47
|
const scrollX = topLayer ? 0 : window.scrollX || window.pageXOffset;
|
|
@@ -49,23 +51,23 @@ export const withAPI = ({ lifecycle }) => (component) => {
|
|
|
49
51
|
let arrowPosition;
|
|
50
52
|
switch (position) {
|
|
51
53
|
case TOOLTIP_POSITIONS.TOP:
|
|
52
|
-
top = targetRect.top + scrollY -
|
|
54
|
+
top = targetRect.top + scrollY - tooltipHeight - offset;
|
|
53
55
|
left =
|
|
54
56
|
targetRect.left +
|
|
55
57
|
scrollX +
|
|
56
58
|
targetRect.width / 2 -
|
|
57
|
-
|
|
59
|
+
tooltipWidth / 2;
|
|
58
60
|
arrowPosition = "bottom";
|
|
59
61
|
break;
|
|
60
62
|
case TOOLTIP_POSITIONS.TOP_START:
|
|
61
|
-
top = targetRect.top + scrollY -
|
|
63
|
+
top = targetRect.top + scrollY - tooltipHeight - offset;
|
|
62
64
|
left = targetRect.left + scrollX;
|
|
63
65
|
arrowPosition = "bottom-start";
|
|
64
66
|
break;
|
|
65
67
|
case TOOLTIP_POSITIONS.TOP_END:
|
|
66
|
-
top = targetRect.top + scrollY -
|
|
68
|
+
top = targetRect.top + scrollY - tooltipHeight - offset;
|
|
67
69
|
left =
|
|
68
|
-
targetRect.left + scrollX + targetRect.width -
|
|
70
|
+
targetRect.left + scrollX + targetRect.width - tooltipWidth;
|
|
69
71
|
arrowPosition = "bottom-end";
|
|
70
72
|
break;
|
|
71
73
|
case TOOLTIP_POSITIONS.RIGHT:
|
|
@@ -73,7 +75,7 @@ export const withAPI = ({ lifecycle }) => (component) => {
|
|
|
73
75
|
targetRect.top +
|
|
74
76
|
scrollY +
|
|
75
77
|
targetRect.height / 2 -
|
|
76
|
-
|
|
78
|
+
tooltipHeight / 2;
|
|
77
79
|
left = targetRect.left + scrollX + targetRect.width + offset;
|
|
78
80
|
arrowPosition = "left";
|
|
79
81
|
break;
|
|
@@ -84,7 +86,7 @@ export const withAPI = ({ lifecycle }) => (component) => {
|
|
|
84
86
|
break;
|
|
85
87
|
case TOOLTIP_POSITIONS.RIGHT_END:
|
|
86
88
|
top =
|
|
87
|
-
targetRect.top + scrollY + targetRect.height -
|
|
89
|
+
targetRect.top + scrollY + targetRect.height - tooltipHeight;
|
|
88
90
|
left = targetRect.left + scrollX + targetRect.width + offset;
|
|
89
91
|
arrowPosition = "left-end";
|
|
90
92
|
break;
|
|
@@ -94,7 +96,7 @@ export const withAPI = ({ lifecycle }) => (component) => {
|
|
|
94
96
|
targetRect.left +
|
|
95
97
|
scrollX +
|
|
96
98
|
targetRect.width / 2 -
|
|
97
|
-
|
|
99
|
+
tooltipWidth / 2;
|
|
98
100
|
arrowPosition = "top";
|
|
99
101
|
break;
|
|
100
102
|
case TOOLTIP_POSITIONS.BOTTOM_START:
|
|
@@ -105,7 +107,7 @@ export const withAPI = ({ lifecycle }) => (component) => {
|
|
|
105
107
|
case TOOLTIP_POSITIONS.BOTTOM_END:
|
|
106
108
|
top = targetRect.top + scrollY + targetRect.height + offset;
|
|
107
109
|
left =
|
|
108
|
-
targetRect.left + scrollX + targetRect.width -
|
|
110
|
+
targetRect.left + scrollX + targetRect.width - tooltipWidth;
|
|
109
111
|
arrowPosition = "top-end";
|
|
110
112
|
break;
|
|
111
113
|
case TOOLTIP_POSITIONS.LEFT:
|
|
@@ -113,19 +115,19 @@ export const withAPI = ({ lifecycle }) => (component) => {
|
|
|
113
115
|
targetRect.top +
|
|
114
116
|
scrollY +
|
|
115
117
|
targetRect.height / 2 -
|
|
116
|
-
|
|
117
|
-
left = targetRect.left + scrollX -
|
|
118
|
+
tooltipHeight / 2;
|
|
119
|
+
left = targetRect.left + scrollX - tooltipWidth - offset;
|
|
118
120
|
arrowPosition = "right";
|
|
119
121
|
break;
|
|
120
122
|
case TOOLTIP_POSITIONS.LEFT_START:
|
|
121
123
|
top = targetRect.top + scrollY;
|
|
122
|
-
left = targetRect.left + scrollX -
|
|
124
|
+
left = targetRect.left + scrollX - tooltipWidth - offset;
|
|
123
125
|
arrowPosition = "right-start";
|
|
124
126
|
break;
|
|
125
127
|
case TOOLTIP_POSITIONS.LEFT_END:
|
|
126
128
|
top =
|
|
127
|
-
targetRect.top + scrollY + targetRect.height -
|
|
128
|
-
left = targetRect.left + scrollX -
|
|
129
|
+
targetRect.top + scrollY + targetRect.height - tooltipHeight;
|
|
130
|
+
left = targetRect.left + scrollX - tooltipWidth - offset;
|
|
129
131
|
arrowPosition = "right-end";
|
|
130
132
|
break;
|
|
131
133
|
default:
|
|
@@ -134,15 +136,15 @@ export const withAPI = ({ lifecycle }) => (component) => {
|
|
|
134
136
|
targetRect.left +
|
|
135
137
|
scrollX +
|
|
136
138
|
targetRect.width / 2 -
|
|
137
|
-
|
|
139
|
+
tooltipWidth / 2;
|
|
138
140
|
arrowPosition = "top";
|
|
139
141
|
}
|
|
140
142
|
const windowWidth = window.innerWidth;
|
|
141
143
|
if (left < 0) {
|
|
142
144
|
left = 0;
|
|
143
145
|
}
|
|
144
|
-
else if (left +
|
|
145
|
-
left = windowWidth -
|
|
146
|
+
else if (left + tooltipWidth > windowWidth) {
|
|
147
|
+
left = windowWidth - tooltipWidth;
|
|
146
148
|
}
|
|
147
149
|
return { top, left, arrowPosition };
|
|
148
150
|
};
|
|
@@ -58,12 +58,16 @@ export interface InputFeature {
|
|
|
58
58
|
*/
|
|
59
59
|
input: HTMLInputElement;
|
|
60
60
|
/**
|
|
61
|
-
* Gets the current input value
|
|
61
|
+
* Gets the current input value.
|
|
62
|
+
* In 1.0 `getValue()` returns the checked boolean, and the input's string
|
|
63
|
+
* value is `getValueAttribute()`.
|
|
62
64
|
* @returns Current value
|
|
63
65
|
*/
|
|
64
66
|
getValue: () => string;
|
|
65
67
|
/**
|
|
66
|
-
* Sets the input value and emits a value event
|
|
68
|
+
* Sets the input value and emits a value event.
|
|
69
|
+
* In 1.0 `setValue()` takes the checked boolean and is silent (no `value`
|
|
70
|
+
* event); the input's string value is set with `setValueAttribute()`.
|
|
67
71
|
* @param value - New value to set
|
|
68
72
|
* @returns Component instance for chaining
|
|
69
73
|
*/
|
|
@@ -82,6 +86,9 @@ export interface InputComponent extends ElementComponent, InputFeature {
|
|
|
82
86
|
* Creates an input element and adds it to a component
|
|
83
87
|
* Handles both input creation and event emission for state changes
|
|
84
88
|
*
|
|
89
|
+
* In 1.0 the `change` payload's `value` is the checked boolean, as the checkbox
|
|
90
|
+
* and the switch report it, and the input's string value is `valueAttribute`.
|
|
91
|
+
*
|
|
85
92
|
* @param config - Input configuration
|
|
86
93
|
* @returns Function that enhances a component with input functionality
|
|
87
94
|
*/
|
|
@@ -141,6 +141,14 @@ export { DEFAULT_PREFIX };
|
|
|
141
141
|
* Registered under these names like the component entries.
|
|
142
142
|
*/
|
|
143
143
|
export declare const SHADOW_BASE_STYLES: readonly ["ripple"];
|
|
144
|
+
/**
|
|
145
|
+
* The sheet every shadow root adopts first. The reduced-motion rule is the
|
|
146
|
+
* document reset's (styles/base/_reset.scss), which does not match inside a
|
|
147
|
+
* shadow tree: transitions are limited to the fades, animations end at once
|
|
148
|
+
* (FLO-549). test/styles/reduced-motion.test.ts keeps the two copies equal.
|
|
149
|
+
* @internal
|
|
150
|
+
*/
|
|
151
|
+
export declare const BASE_HOST_STYLES: string;
|
|
144
152
|
type Camel<S extends string> = S extends `${infer H}-${infer T}` ? `${H}${Capitalize<Camel<T>>}` : S;
|
|
145
153
|
type ValueOf<T> = T extends "boolean" ? boolean : T extends "number" ? number : string;
|
|
146
154
|
type Get<S, K extends string> = S extends {
|
package/dist/elements/define.js
CHANGED
|
@@ -18,7 +18,8 @@ import { PREFIX } from "../core/config.js";
|
|
|
18
18
|
import { applyStyles, DEFAULT_PREFIX, hasStyles, registerStyles, usePreupgradePrefix } from "./styles.js";
|
|
19
19
|
export { DEFAULT_PREFIX };
|
|
20
20
|
export const SHADOW_BASE_STYLES = ["ripple"];
|
|
21
|
-
const BASE_HOST_STYLES = ":host{display:inline-block}:host([hidden]){display:none}*,*::before,*::after{box-sizing:border-box}"
|
|
21
|
+
export const BASE_HOST_STYLES = ":host{display:inline-block}:host([hidden]){display:none}*,*::before,*::after{box-sizing:border-box}" +
|
|
22
|
+
"@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-property:opacity,color,background-color,border-color,outline-color,box-shadow,visibility!important;scroll-behavior:auto!important}}";
|
|
22
23
|
const camel = (name) => name.replace(/-([a-z])/g, (_, c) => c.toUpperCase());
|
|
23
24
|
const kebab = (name) => name.replace(/[A-Z]/g, (c) => `-${c.toLowerCase()}`);
|
|
24
25
|
const read = (host, name, type) => {
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
* `selected` property the live one: the attribute moves the state until the
|
|
7
7
|
* user or script changes it. A click dispatches `change` with `{ selected }`
|
|
8
8
|
* from the host, as `<m-switch>` and `<m-checkbox>` do; `toggle`, which
|
|
9
|
-
* clashed with the native ToggleEvent, is dispatched as well
|
|
10
|
-
* (deprecated, FLO-295)
|
|
9
|
+
* clashed with the native ToggleEvent, is dispatched as well until 1.0
|
|
10
|
+
* removes it (deprecated, FLO-295): listen to `change`.
|
|
11
11
|
* `type="submit"` and `type="reset"` act on the host's form.
|
|
12
12
|
*
|
|
13
13
|
* Parts: `icon-button`, `icon`, `ripple`.
|
|
@@ -96,6 +96,7 @@ declare const iconButtonSpec: {
|
|
|
96
96
|
selected: boolean;
|
|
97
97
|
};
|
|
98
98
|
};
|
|
99
|
+
/** @deprecated Dispatched beside `change`; removed in 1.0. Listen to `change` (FLO-295). */
|
|
99
100
|
toggle: {
|
|
100
101
|
detail: (payload: unknown) => {
|
|
101
102
|
selected: boolean;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! mtrl v0.10.
|
|
1
|
+
/*! mtrl v0.10.6 | MIT */
|
|
2
2
|
@layer mtrl.preupgrade{m-button:not(:defined){display:inline-flex;vertical-align:middle;align-items:center;justify-content:center;box-sizing:border-box;min-width:58px;white-space:nowrap;background-color:var(--mtrl-sys-color-primary);color:var(--mtrl-sys-color-on-primary);height:40px;padding:0 16px;gap:8px;border-radius:20px;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:14px;line-height:20px;letter-spacing:.1px;font-weight:500}m-button:not(:defined)[icon]::before{width:20px;height:20px}m-button:not(:defined)[size=xs]{height:32px;padding:0 12px;gap:8px;border-radius:16px;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:14px;line-height:20px;letter-spacing:.1px;font-weight:500}m-button:not(:defined)[size=xs][icon]::before{width:20px;height:20px}m-button:not(:defined)[size=s]{height:40px;padding:0 16px;gap:8px;border-radius:20px;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:14px;line-height:20px;letter-spacing:.1px;font-weight:500}m-button:not(:defined)[size=s][icon]::before{width:20px;height:20px}m-button:not(:defined)[size=m]{height:56px;padding:0 24px;gap:8px;border-radius:28px;font-family:var(--mtrl-ref-typeface-brand, Roboto, sans-serif);font-size:16px;line-height:24px;letter-spacing:.15px;font-weight:500}m-button:not(:defined)[size=m][icon]::before{width:24px;height:24px}m-button:not(:defined)[size=l]{height:96px;padding:0 48px;gap:12px;border-radius:48px;font-family:var(--mtrl-ref-typeface-brand, Roboto, sans-serif);font-size:24px;line-height:32px;letter-spacing:0;font-weight:400}m-button:not(:defined)[size=l][icon]::before{width:32px;height:32px}m-button:not(:defined)[size=xl]{height:136px;padding:0 64px;gap:16px;border-radius:68px;font-family:var(--mtrl-ref-typeface-brand, Roboto, sans-serif);font-size:32px;line-height:40px;letter-spacing:0;font-weight:400}m-button:not(:defined)[size=xl][icon]::before{width:40px;height:40px}m-button:not(:defined)[variant=filled]{background-color:var(--mtrl-sys-color-primary);color:var(--mtrl-sys-color-on-primary)}m-button:not(:defined)[variant=elevated]{background-color:var(--mtrl-sys-color-surface-container-low);color:var(--mtrl-sys-color-primary)}m-button:not(:defined)[variant=tonal]{background-color:var(--mtrl-sys-color-secondary-container);color:var(--mtrl-sys-color-on-secondary-container)}m-button:not(:defined)[variant=outlined]{background-color:rgba(0,0,0,0);color:var(--mtrl-sys-color-on-surface-variant)}m-button:not(:defined)[variant=text]{background-color:rgba(0,0,0,0);color:var(--mtrl-sys-color-primary)}m-button:not(:defined)[variant=outlined]{border:1px solid var(--mtrl-sys-color-outline-variant)}m-button:not(:defined)[variant=text]{padding:0 12px}m-button:not(:defined)[icon]::before{content:"";flex:none}m-button:not(:defined)[icon]:not([size]),m-button:not(:defined)[icon][size=s]{padding-left:12px}m-switch:not(:defined){display:inline-grid;grid-template-columns:auto auto;align-content:center;align-items:center;column-gap:12px;box-sizing:border-box;min-height:56px;padding:4px 0;color:var(--mtrl-sys-color-on-surface);font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:16px;line-height:24px;letter-spacing:.5px;font-weight:400}m-switch:not(:defined)::after{content:"";grid-column:2;grid-row:1;box-sizing:border-box;width:52px;height:32px;border:2px solid var(--mtrl-sys-color-outline);border-radius:var(--mtrl-sys-shape-corner-full, 9999px);background:radial-gradient(circle at 14px 50%, var(--mtrl-sys-color-outline) 8px, transparent 8.5px) var(--mtrl-sys-color-surface-container-highest)}m-switch:not(:defined)[checked]::after{border-color:var(--mtrl-sys-color-primary);background:radial-gradient(circle at calc(100% - 14px) 50%, var(--mtrl-sys-color-on-primary) 12px, transparent 12.5px) var(--mtrl-sys-color-primary)}m-switch:not(:defined)[supporting-text]::after{grid-row:1/span 2}m-switch:not(:defined)[supporting-text]::before{content:attr(supporting-text);grid-column:1;grid-row:2;color:var(--mtrl-sys-color-on-surface-variant);font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:14px;line-height:20px;letter-spacing:.25px;font-weight:400}m-tabs:not(:defined){display:block;box-sizing:border-box;height:48px;overflow:hidden;border-bottom:1px solid var(--mtrl-sys-color-outline-variant)}m-tabs:not(:defined):has(>[icon]){height:64px}m-tabs:not(:defined)>*{visibility:hidden;display:none}m-progress:not(:defined){display:block;box-sizing:border-box;height:4px;padding:0 4px;overflow:hidden;color:rgba(0,0,0,0);background:var(--mtrl-sys-color-secondary-container) content-box}m-progress:not(:defined)[variant=circular]{display:inline-flex;vertical-align:middle;width:40px;height:40px;padding:0;background:none}m-loading-indicator:not(:defined){display:inline-flex;vertical-align:middle;width:48px;height:48px;overflow:hidden;color:rgba(0,0,0,0)}m-badge:not(:defined){display:inline-flex;vertical-align:middle;width:0;height:0;overflow:hidden}m-divider:not(:defined){display:block;height:1px;overflow:hidden;color:rgba(0,0,0,0);background-color:var(--mtrl-sys-color-outline-variant)}m-divider:not(:defined)[orientation=vertical]{display:inline-block;align-self:stretch;width:1px;height:auto}m-icon-button:not(:defined){display:inline-block;vertical-align:middle;box-sizing:border-box;overflow:hidden;color:rgba(0,0,0,0);height:40px;width:40px;border-radius:20px}m-icon-button:not(:defined)[size=xs]{height:32px;width:32px;border-radius:16px}m-icon-button:not(:defined)[size=xs][width=narrow]{height:32px;width:28px;border-radius:16px}m-icon-button:not(:defined)[size=xs][width=wide]{height:32px;width:40px;border-radius:16px}m-icon-button:not(:defined)[width=narrow]{height:40px;width:32px;border-radius:20px}m-icon-button:not(:defined)[width=wide]{height:40px;width:52px;border-radius:20px}m-icon-button:not(:defined)[size=m]{height:56px;width:56px;border-radius:28px}m-icon-button:not(:defined)[size=m][width=narrow]{height:56px;width:48px;border-radius:28px}m-icon-button:not(:defined)[size=m][width=wide]{height:56px;width:72px;border-radius:28px}m-icon-button:not(:defined)[size=l]{height:96px;width:96px;border-radius:48px}m-icon-button:not(:defined)[size=l][width=narrow]{height:96px;width:64px;border-radius:48px}m-icon-button:not(:defined)[size=l][width=wide]{height:96px;width:128px;border-radius:48px}m-icon-button:not(:defined)[size=xl]{height:136px;width:136px;border-radius:68px}m-icon-button:not(:defined)[size=xl][width=narrow]{height:136px;width:104px;border-radius:68px}m-icon-button:not(:defined)[size=xl][width=wide]{height:136px;width:184px;border-radius:68px}m-icon-button:not(:defined)[variant=filled]{background-color:var(--mtrl-sys-color-primary)}m-icon-button:not(:defined)[variant=tonal]{background-color:var(--mtrl-sys-color-secondary-container)}m-icon-button:not(:defined)[variant=outlined]{border:1px solid var(--mtrl-sys-color-outline-variant)}m-fab:not(:defined){display:inline-block;vertical-align:middle;box-sizing:border-box;overflow:hidden;color:rgba(0,0,0,0);background-color:var(--mtrl-sys-color-primary-container);width:56px;height:56px;border-radius:var(--mtrl-sys-shape-corner-large, 16px)}m-fab:not(:defined)[size=small]{width:40px;height:40px;border-radius:var(--mtrl-sys-shape-corner-medium, 12px)}m-fab:not(:defined)[size=default]{width:56px;height:56px;border-radius:var(--mtrl-sys-shape-corner-large, 16px)}m-fab:not(:defined)[size=medium]{width:80px;height:80px;border-radius:var(--mtrl-sys-shape-corner-large-increased, 20px)}m-fab:not(:defined)[size=large]{width:96px;height:96px;border-radius:var(--mtrl-sys-shape-corner-extra-large, 28px)}m-extended-fab:not(:defined){display:inline-flex;vertical-align:middle;align-items:center;justify-content:center;box-sizing:border-box;white-space:nowrap;background-color:var(--mtrl-sys-color-primary-container);color:var(--mtrl-sys-color-on-primary-container);height:56px;min-width:56px;padding:0 16px;gap:8px;border-radius:var(--mtrl-sys-shape-corner-large, 16px);font-family:var(--mtrl-ref-typeface-brand, Roboto, sans-serif);font-size:16px;line-height:24px;letter-spacing:.15px;font-weight:500}m-extended-fab:not(:defined)[icon]::before{width:24px;height:24px}m-extended-fab:not(:defined)[icon]::before{content:"";flex:none}m-extended-fab:not(:defined)[icon-position=end]::before{order:1}m-extended-fab:not(:defined)[size=medium]{height:80px;min-width:80px;padding:0 26px;gap:16px;border-radius:var(--mtrl-sys-shape-corner-large-increased, 20px);font-family:var(--mtrl-ref-typeface-brand, Roboto, sans-serif);font-size:22px;line-height:28px;letter-spacing:0;font-weight:400}m-extended-fab:not(:defined)[size=medium][icon]::before{width:28px;height:28px}m-extended-fab:not(:defined)[size=large]{height:96px;min-width:96px;padding:0 28px;gap:20px;border-radius:var(--mtrl-sys-shape-corner-extra-large, 28px);font-family:var(--mtrl-ref-typeface-brand, Roboto, sans-serif);font-size:24px;line-height:32px;letter-spacing:0;font-weight:400}m-extended-fab:not(:defined)[size=large][icon]::before{width:32px;height:32px}m-checkbox:not(:defined){display:inline-flex;align-items:center;box-sizing:border-box;min-height:48px;padding:4px 0;color:var(--mtrl-sys-color-on-surface);font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:16px;line-height:24px;letter-spacing:.5px;font-weight:400}m-checkbox:not(:defined)::before{content:"";flex:none;box-sizing:border-box;width:18px;height:18px;margin-inline-end:12px;border:2px solid var(--mtrl-sys-color-on-surface-variant);border-radius:2px}m-checkbox:not(:defined)[checked]::before{border-color:var(--mtrl-sys-color-primary);background-color:var(--mtrl-sys-color-primary)}m-checkbox:not(:defined)[label-position=start]::before{order:1;margin-inline:12px 0}m-slider:not(:defined){display:block;height:48px;overflow:hidden;color:rgba(0,0,0,0)}m-textfield:not(:defined){display:inline-block;position:relative;box-sizing:border-box;width:280px;height:56px;padding:22px 16px 0 16px;border-radius:var(--mtrl-sys-shape-corner-extra-small, 4px) var(--mtrl-sys-shape-corner-extra-small, 4px) 0 0;border-bottom:1px solid var(--mtrl-sys-color-on-surface-variant);background-color:var(--mtrl-sys-color-surface-container-highest);color:var(--mtrl-sys-color-on-surface);white-space:nowrap;overflow:clip;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:16px;line-height:24px;letter-spacing:.5px;font-weight:400}m-textfield:not(:defined)::before{content:attr(value) " ";white-space:pre}m-textfield:not(:defined)[label]::after{content:attr(label);position:absolute;top:16px;left:16px;color:var(--mtrl-sys-color-on-surface-variant)}m-textfield:not(:defined)[label][value]:not([value=""])::after{top:8px;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:12px;line-height:16px;letter-spacing:.4px;font-weight:400}m-textfield:not(:defined)[variant=outlined]{padding-top:15.5px;border:1px solid var(--mtrl-sys-color-outline);border-radius:var(--mtrl-sys-shape-corner-extra-small, 4px);background:none}m-textfield:not(:defined)[variant=outlined][label][value]:not([value=""])::after{top:-8px;padding:0 4px;left:12px}m-textfield:not(:defined)[density=compact]{height:40px;padding-top:13.5px;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:14px;line-height:20px;letter-spacing:.25px;font-weight:400}m-textfield:not(:defined)[density=compact]::after{top:10px;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:14px;line-height:20px;letter-spacing:.25px;font-weight:400}m-textfield:not(:defined)[density=compact][variant=outlined]{padding-top:9.5px}m-textfield:not(:defined)[supporting-text]:not([supporting-text=""]),m-textfield:not(:defined)[maxlength]{height:calc(56px + 20px);border-bottom:20px solid rgba(0,0,0,0);background-clip:padding-box;background-image:linear-gradient(to top, var(--mtrl-sys-color-on-surface-variant) 1px, transparent 1px)}m-textfield:not(:defined)[supporting-text]:not([supporting-text=""])[variant=outlined],m-textfield:not(:defined)[maxlength][variant=outlined]{padding-top:calc(15.5px + 1px);padding-left:calc(16px + 1px);border-width:0 0 20px;border-radius:var(--mtrl-sys-shape-corner-extra-small, 4px)/var(--mtrl-sys-shape-corner-extra-small, 4px) var(--mtrl-sys-shape-corner-extra-small, 4px) calc(var(--mtrl-sys-shape-corner-extra-small, 4px) + 20px) calc(var(--mtrl-sys-shape-corner-extra-small, 4px) + 20px);background-image:none;box-shadow:inset 0 0 0 1px var(--mtrl-sys-color-outline)}m-textfield:not(:defined)[supporting-text]:not([supporting-text=""])[density=compact],m-textfield:not(:defined)[maxlength][density=compact]{height:calc(40px + 20px)}m-textfield:not(:defined)>*{display:none}m-radios:not(:defined){display:block;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:16px;line-height:24px;letter-spacing:.5px;font-weight:400}m-radios:not(:defined)[direction=horizontal]{display:flex;flex-wrap:wrap}m-radios:not(:defined)>*{visibility:hidden;display:flex;align-items:center;box-sizing:border-box;height:48px;padding-inline-start:48px}m-navigation-rail:not(:defined){display:block;box-sizing:border-box;padding:132px 0 16px;background:linear-gradient(var(--mtrl-sys-color-surface), var(--mtrl-sys-color-surface)) no-repeat 0 0/96px 100%}m-navigation-rail:not(:defined)>*{visibility:hidden;display:block;height:64px;overflow:hidden}m-navigation-rail:not(:defined)>*+*{margin-top:4px}m-drawer:not(:defined){display:block;flex-shrink:0;padding:12px 0}m-drawer:not(:defined)[open]{background-color:var(--mtrl-sys-color-surface)}m-drawer:not(:defined)>*{visibility:hidden;display:block;height:56px;overflow:hidden}m-top-app-bar:not(:defined){position:absolute;top:0;left:0;right:0;z-index:50;display:flex;align-items:center;box-sizing:border-box;height:64px;padding:0 12px 0 28px;background-color:var(--mtrl-sys-color-surface);color:var(--mtrl-sys-color-on-surface);white-space:nowrap;overflow:hidden;font-family:var(--mtrl-ref-typeface-brand, Roboto, sans-serif);font-size:22px;line-height:28px;letter-spacing:0;font-weight:400}m-top-app-bar:not(:defined)[type=center]{justify-content:center}m-top-app-bar:not(:defined)[type=medium],m-top-app-bar:not(:defined)[type=large]{align-items:flex-end;padding-left:44px;padding-bottom:24px;height:112px;font-family:var(--mtrl-ref-typeface-brand, Roboto, sans-serif);font-size:24px;line-height:32px;letter-spacing:0;font-weight:400}m-top-app-bar:not(:defined)[type=large]{padding-bottom:28px;height:152px;font-family:var(--mtrl-ref-typeface-brand, Roboto, sans-serif);font-size:28px;line-height:36px;letter-spacing:0;font-weight:400}m-top-app-bar:not(:defined)>[slot=leading]{order:-1}m-top-app-bar:not(:defined)>[slot=trailing]{order:1;margin-left:auto}m-bottom-app-bar:not(:defined){position:absolute;bottom:0;left:0;right:0;display:flex;align-items:center;gap:4px;box-sizing:border-box;height:80px;padding:12px 16px 12px 4px;background-color:var(--mtrl-sys-color-surface-container)}m-bottom-app-bar:not(:defined)>[slot=fab]{margin-left:auto}m-button-group:not(:defined){display:inline-flex;vertical-align:middle;gap:12px;white-space:nowrap}m-button-group:not(:defined)>*{visibility:hidden;display:inline-flex;align-items:center;box-sizing:border-box;height:40px;padding:0 16px;border:1px solid rgba(0,0,0,0);font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:14px;line-height:20px;letter-spacing:.1px;font-weight:500}m-chips:not(:defined){display:flex;flex-wrap:wrap;gap:8px}m-chips:not(:defined)[vertical]{flex-direction:column;align-items:flex-start}m-chips:not(:defined)[scrollable]{flex-wrap:nowrap;overflow:hidden}m-chips:not(:defined)>*{visibility:hidden;display:inline-flex;align-items:center;box-sizing:border-box;height:32px;padding:0 16px;white-space:nowrap;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:14px;line-height:20px;letter-spacing:.1px;font-weight:500}m-list:not(:defined){display:block;padding:8px 0;background-color:var(--mtrl-sys-color-surface)}m-list:not(:defined)>*{visibility:hidden;display:block;height:56px;overflow:hidden}m-list:not(:defined)>*[supporting-text],m-list:not(:defined)>*[overline]{height:72px}m-list:not(:defined)>*[kind=divider]{height:1px}m-list:not(:defined)>*[kind=subheader]{height:auto;padding:16px 16px 8px;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:14px;line-height:20px;letter-spacing:.1px;font-weight:500}m-card:not(:defined){display:flex;flex-direction:column;box-sizing:border-box;padding:16px;border-radius:var(--mtrl-sys-shape-corner-medium, 12px);background-color:var(--mtrl-sys-color-surface-container-low);color:var(--mtrl-sys-color-on-surface);font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:14px;line-height:20px;letter-spacing:.25px;font-weight:400}m-card:not(:defined)[variant=filled]{background-color:var(--mtrl-sys-color-surface-container-highest)}m-card:not(:defined)[variant=outlined]{border:1px solid var(--mtrl-sys-color-outline-variant);background-color:var(--mtrl-sys-color-surface)}m-card:not(:defined)[headline]::before{content:attr(headline);order:-2;font-family:var(--mtrl-ref-typeface-brand, Roboto, sans-serif);font-size:22px;line-height:28px;letter-spacing:0;font-weight:400}m-card:not(:defined)[subhead]::after{content:attr(subhead);order:-1;color:var(--mtrl-sys-color-on-surface-variant)}m-card:not(:defined)[headline]:not([subhead])::before,m-card:not(:defined)[subhead]::after{margin-bottom:16px}m-card:not(:defined)>[slot=headline]{order:-2;font-family:var(--mtrl-ref-typeface-brand, Roboto, sans-serif);font-size:22px;line-height:28px;letter-spacing:0;font-weight:400}m-card:not(:defined)>[slot=subhead]{order:-1;color:var(--mtrl-sys-color-on-surface-variant)}m-carousel:not(:defined){display:block}m-carousel:not(:defined)>*{visibility:hidden;display:none}m-menu:not(:defined){display:none}m-fab-menu:not(:defined){display:inline-block;vertical-align:middle;box-sizing:border-box;overflow:hidden;background-color:var(--mtrl-sys-color-primary-container);width:56px;height:56px;border-radius:var(--mtrl-sys-shape-corner-large, 16px)}m-fab-menu:not(:defined)[size=default]{width:56px;height:56px;border-radius:var(--mtrl-sys-shape-corner-large, 16px)}m-fab-menu:not(:defined)[size=medium]{width:80px;height:80px;border-radius:var(--mtrl-sys-shape-corner-large-increased, 20px)}m-fab-menu:not(:defined)[size=large]{width:96px;height:96px;border-radius:var(--mtrl-sys-shape-corner-extra-large, 28px)}m-fab-menu:not(:defined)[color=secondary]{background-color:var(--mtrl-sys-color-secondary-container)}m-fab-menu:not(:defined)[color=tertiary]{background-color:var(--mtrl-sys-color-tertiary-container)}m-fab-menu:not(:defined)>*{visibility:hidden;display:none}m-select:not(:defined){display:inline-block;position:relative;box-sizing:border-box;width:280px;height:56px;padding:22px 44px 0 16px;border-radius:var(--mtrl-sys-shape-corner-extra-small, 4px) var(--mtrl-sys-shape-corner-extra-small, 4px) 0 0;border-bottom:1px solid var(--mtrl-sys-color-on-surface-variant);background-color:var(--mtrl-sys-color-surface-container-highest);color:var(--mtrl-sys-color-on-surface);white-space:nowrap;overflow:clip;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:16px;line-height:24px;letter-spacing:.5px;font-weight:400}m-select:not(:defined)::before{content:attr(value) " ";white-space:pre}m-select:not(:defined)[label]::after{content:attr(label);position:absolute;top:16px;left:16px;color:var(--mtrl-sys-color-on-surface-variant)}m-select:not(:defined)[label][value]:not([value=""])::after{top:8px;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:12px;line-height:16px;letter-spacing:.4px;font-weight:400}m-select:not(:defined)[variant=outlined]{padding-top:15.5px;border:1px solid var(--mtrl-sys-color-outline);border-radius:var(--mtrl-sys-shape-corner-extra-small, 4px);background:none}m-select:not(:defined)[variant=outlined][label][value]:not([value=""])::after{top:-8px;padding:0 4px;left:12px}m-select:not(:defined)[density=compact]{height:40px;padding-top:13.5px;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:14px;line-height:20px;letter-spacing:.25px;font-weight:400}m-select:not(:defined)[density=compact]::after{top:10px;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:14px;line-height:20px;letter-spacing:.25px;font-weight:400}m-select:not(:defined)[density=compact][variant=outlined]{padding-top:9.5px}m-select:not(:defined)[supporting-text]:not([supporting-text=""]),m-select:not(:defined)[maxlength]{height:calc(56px + 20px);border-bottom:20px solid rgba(0,0,0,0);background-clip:padding-box;background-image:linear-gradient(to top, var(--mtrl-sys-color-on-surface-variant) 1px, transparent 1px)}m-select:not(:defined)[supporting-text]:not([supporting-text=""])[variant=outlined],m-select:not(:defined)[maxlength][variant=outlined]{padding-top:calc(15.5px + 1px);padding-left:calc(16px + 1px);border-width:0 0 20px;border-radius:var(--mtrl-sys-shape-corner-extra-small, 4px)/var(--mtrl-sys-shape-corner-extra-small, 4px) var(--mtrl-sys-shape-corner-extra-small, 4px) calc(var(--mtrl-sys-shape-corner-extra-small, 4px) + 20px) calc(var(--mtrl-sys-shape-corner-extra-small, 4px) + 20px);background-image:none;box-shadow:inset 0 0 0 1px var(--mtrl-sys-color-outline)}m-select:not(:defined)[supporting-text]:not([supporting-text=""])[density=compact],m-select:not(:defined)[maxlength][density=compact]{height:calc(40px + 20px)}m-select:not(:defined)>*{display:none}m-select:not(:defined)::before{content:" "}m-split-button:not(:defined){display:inline-flex;vertical-align:middle;align-items:center;position:relative;z-index:0;box-sizing:border-box;height:40px;padding:0 calc(12px + 50px) 0 16px;color:var(--mtrl-sys-color-on-primary);white-space:nowrap;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:14px;line-height:20px;letter-spacing:.1px;font-weight:500}m-split-button:not(:defined)::before,m-split-button:not(:defined)::after{content:"";position:absolute;z-index:-1;top:0;bottom:0;background-color:var(--mtrl-sys-color-primary)}m-split-button:not(:defined)::before{left:0;right:50px;border-radius:20px 4px 4px 20px}m-split-button:not(:defined)::after{right:0;width:48px;border-radius:4px 20px 20px 4px}m-split-button:not(:defined)>*{display:none}m-tooltip:not(:defined){display:none}m-toolbar:not(:defined){display:flex;align-items:center;justify-content:space-between;gap:8px;box-sizing:border-box;min-height:64px;padding-inline:16px;background-color:var(--mtrl-sys-color-surface-container)}m-toolbar:not(:defined)[arrangement=center]{justify-content:center;gap:32px}m-toolbar:not(:defined)[variant=floating]{width:fit-content;justify-content:center;gap:4px;padding:8px;border-radius:var(--mtrl-sys-shape-corner-full, 9999px)}m-toolbar:not(:defined)[variant=floating]:not([flat]){box-shadow:0px 1px 2px rgba(0,0,0,.3),0px 1px 3px 1px rgba(0,0,0,.15)}m-toolbar:not(:defined)[variant=floating][orientation=vertical]{flex-direction:column;min-height:0;min-width:64px}m-toolbar:not(:defined)[color=vibrant]{background-color:var(--mtrl-sys-color-primary-container)}m-snackbar:not(:defined){display:none}m-dialog:not(:defined){display:none}m-bottom-sheet:not(:defined){display:none}m-side-sheet:not(:defined){display:none}m-datepicker:not(:defined){display:inline-block;box-sizing:border-box;width:280px;vertical-align:baseline;white-space:nowrap}m-datepicker:not(:defined)::before{content:attr(label) " ";white-space:pre;display:inline-block;width:100%;padding-bottom:80px;color:var(--mtrl-sys-color-on-surface);font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:12px;line-height:16px;letter-spacing:.4px;font-weight:400}m-datepicker:not(:defined)>*{display:none}m-timepicker:not(:defined){display:none}m-search:not(:defined){display:flex;align-items:center;box-sizing:border-box;height:56px;padding:0 56px 0 60px;border-radius:var(--mtrl-sys-shape-corner-full, 9999px);background-color:var(--mtrl-sys-color-surface-container-high);color:var(--mtrl-sys-color-on-surface-variant);white-space:nowrap;overflow:hidden;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:16px;line-height:24px;letter-spacing:.5px;font-weight:400}m-search:not(:defined)::before{content:attr(placeholder)}m-search:not(:defined)[value]:not([value=""])::before{content:attr(value);color:var(--mtrl-sys-color-on-surface)}m-search:not(:defined)>*{visibility:hidden;display:none}}
|
package/dist/index.cjs
CHANGED
|
Binary file
|
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mtrl",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.6",
|
|
4
4
|
"description": "Material Design 3 components for the web: plain JavaScript, web components, and React, Vue, Svelte and Solid components. TypeScript, zero dependencies.",
|
|
5
5
|
"author": "floor",
|
|
6
6
|
"license": "MIT",
|
package/dist/styles/badge.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! mtrl v0.10.
|
|
1
|
+
/*! mtrl v0.10.6 | MIT */
|
|
2
2
|
@layer mtrl.base,mtrl.utilities,mtrl.textfield,mtrl.badge,mtrl.bottom-app-bar,mtrl.bottom-sheet,mtrl.side-sheet,mtrl.menu,mtrl.slider,mtrl.switch,mtrl.select,mtrl.progress,mtrl.button,mtrl.tabs,mtrl.top-app-bar,mtrl.icon-button,mtrl.button-group,mtrl.fab,mtrl.fab-menu,mtrl.extended-fab,mtrl.segmented-button,mtrl.card,mtrl.carousel,mtrl.checkbox,mtrl.chips,mtrl.divider,mtrl.dialog,mtrl.drawer,mtrl.loading-indicator,mtrl.split-button,mtrl.radios,mtrl.datepicker,mtrl.timepicker,mtrl.search,mtrl.snackbar,mtrl.navigation-rail,mtrl.list,mtrl.tooltip,mtrl.toolbar;@layer mtrl.badge{.mtrl-badge__wrapper{position:relative;display:inline-flex;flex-shrink:0}.mtrl-badge{position:absolute;display:flex;align-items:center;justify-content:center;font-weight:500;box-sizing:border-box;overflow:hidden;transition:all 200ms ease;text-overflow:ellipsis}.mtrl-badge--invisible{display:none}.mtrl-badge--small{width:6px;height:6px;min-width:6px;border-radius:var(--mtrl-sys-shape-corner-full, 9999px);font-size:0;padding:0}.mtrl-badge--large{height:16px;min-width:16px;border-radius:var(--mtrl-sys-shape-corner-full, 9999px);padding:0 4px;font-size:11px;line-height:16px;padding-top:.5px}.mtrl-badge--large.mtrl-badge--overflow{min-width:auto;max-width:34px;padding:0 4px}.mtrl-badge--positioned.mtrl-badge--small.mtrl-badge--top-right{top:-3px;right:-3px}.mtrl-badge--positioned.mtrl-badge--small.mtrl-badge--top-left{top:-3px;left:-3px}.mtrl-badge--positioned.mtrl-badge--small.mtrl-badge--bottom-right{bottom:-3px;right:-3px}.mtrl-badge--positioned.mtrl-badge--small.mtrl-badge--bottom-left{bottom:-3px;left:-3px}.mtrl-badge--positioned.mtrl-badge--large.mtrl-badge--top-right{top:-8px;right:-8px}.mtrl-badge--positioned.mtrl-badge--large.mtrl-badge--top-left{top:-8px;left:-8px}.mtrl-badge--positioned.mtrl-badge--large.mtrl-badge--bottom-right{bottom:-8px;right:-8px}.mtrl-badge--positioned.mtrl-badge--large.mtrl-badge--bottom-left{bottom:-8px;left:-8px}.mtrl-badge--error{background-color:var(--mtrl-sys-color-error);color:var(--mtrl-sys-color-on-error)}.mtrl-badge--primary{background-color:var(--mtrl-sys-color-primary);color:var(--mtrl-sys-color-on-primary)}.mtrl-badge--secondary{background-color:var(--mtrl-sys-color-secondary);color:var(--mtrl-sys-color-on-secondary)}.mtrl-badge--tertiary{background-color:var(--mtrl-sys-color-tertiary);color:var(--mtrl-sys-color-on-tertiary)}.mtrl-badge--success{background-color:var(--mtrl-sys-color-success);color:var(--mtrl-sys-color-on-success)}.mtrl-badge--warning{background-color:var(--mtrl-sys-color-warning);color:var(--mtrl-sys-color-on-warning)}.mtrl-badge--info{background-color:var(--mtrl-sys-color-info);color:var(--mtrl-sys-color-on-info)}[dir=rtl] .mtrl-badge--positioned.mtrl-badge--top-right{right:auto;left:-8px}[dir=rtl] .mtrl-badge--positioned.mtrl-badge--top-left{left:auto;right:-8px}[dir=rtl] .mtrl-badge--positioned.mtrl-badge--bottom-right{right:auto;left:-8px}[dir=rtl] .mtrl-badge--positioned.mtrl-badge--bottom-left{left:auto;right:-8px}}
|