material-inspired-component-library 4.0.1 → 5.0.0
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/README.md +4 -0
- package/components/accordion/README.md +20 -0
- package/components/alert/README.md +19 -7
- package/components/button/README.md +1 -1
- package/components/button/index.scss +24 -20
- package/components/dialog/README.md +14 -12
- package/components/dialog/index.scss +63 -52
- package/components/divider/index.scss +7 -1
- package/components/iconbutton/README.md +1 -1
- package/components/iconbutton/index.scss +20 -17
- package/components/list/index.scss +2 -5
- package/components/textfield/index.ts +26 -0
- package/components/timepicker/README.md +135 -0
- package/components/timepicker/index.scss +390 -0
- package/components/timepicker/index.ts +416 -0
- package/dist/button.css +1 -1
- package/dist/components/timepicker/index.d.ts +5 -0
- package/dist/dialog.css +1 -1
- package/dist/divider.css +1 -1
- package/dist/iconbutton.css +1 -1
- package/dist/list.css +1 -1
- package/dist/micl.css +1 -1
- package/dist/micl.js +1 -1
- package/dist/switch.css +1 -1
- package/dist/timepicker.css +1 -0
- package/dist/timepicker.js +1 -0
- package/docs/accordion.html +1 -1
- package/docs/bottomsheet.html +1 -1
- package/docs/button.html +42 -15
- package/docs/dialog.html +12 -12
- package/docs/iconbutton.html +258 -164
- package/docs/index.html +31 -7
- package/docs/micl.css +1 -1
- package/docs/micl.js +1 -1
- package/docs/timepicker.html +150 -0
- package/micl.ts +3 -1
- package/package.json +16 -15
- package/styles.scss +1 -0
package/README.md
CHANGED
|
@@ -106,9 +106,13 @@ The library currently consists of the following components:
|
|
|
106
106
|
- [x] [Stepper](components/stepper/README.md)
|
|
107
107
|
- [x] [Switch](components/switch/README.md)
|
|
108
108
|
- [x] [Text field](components/textfield/README.md)
|
|
109
|
+
- [x] [Time picker](components/timepicker/README.md)
|
|
109
110
|
|
|
110
111
|
## Change Log ↪️
|
|
111
112
|
|
|
113
|
+
### 5.0.0 (02.12.2025)
|
|
114
|
+
- **Time picker**: New component.
|
|
115
|
+
|
|
112
116
|
### 4.0.0 (27.10.2025)
|
|
113
117
|
- **BREAKING**: Moved layout.scss til sub-folder.
|
|
114
118
|
- **Alert**: New component.
|
|
@@ -112,5 +112,25 @@ Use a [Divider component](../divider/README.md) to separate neighbouring accordi
|
|
|
112
112
|
|
|
113
113
|
Since the Accordion is based on the List component, you can use the same utility classes for content structure and styling. Refer to the [List component documentation](../list/README.md) for details on how to add icons, avatars, images, and other features to your accordion items.
|
|
114
114
|
|
|
115
|
+
## Customizations
|
|
116
|
+
You can customize the appearance of the Accordion component by overriding its own global CSS variables and those from the List component. These variables are declared on the `:root` pseudo-class and can be changed on any appropriate parent element to affect its child accordions.
|
|
117
|
+
|
|
118
|
+
| Variable name | Default Value | Description |
|
|
119
|
+
| ------------- | ------------- | ----------- |
|
|
120
|
+
| --md-sys-accordion-item-space | 0px | The space between an opened accordion item and its next neighbour. |
|
|
121
|
+
|
|
122
|
+
**Example: Changing the margin between an opened item and the next**
|
|
123
|
+
|
|
124
|
+
```HTML
|
|
125
|
+
<div class="micl-list" role="listbox" style="--md-sys-accordion-item-space:4px">
|
|
126
|
+
<details>
|
|
127
|
+
...
|
|
128
|
+
</details>
|
|
129
|
+
<details>
|
|
130
|
+
...
|
|
131
|
+
</details>
|
|
132
|
+
</div>
|
|
133
|
+
```
|
|
134
|
+
|
|
115
135
|
## Compatibility
|
|
116
136
|
The Card component uses the `interpolate-size` CSS property to smoothly open and close the detail area of a Details disclosure element, which might not be supported in your browser. Please check [Browser compatibility](https://developer.mozilla.org/en-US/docs/Web/CSS/interpolate-size#browser_compatibility) for details.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# Alert
|
|
2
|
-
|
|
2
|
+
Alerts are used to inform the user of important changes in a prominent way. This component is inspired by [Material Design 3 Expressive](https://m3.material.io/components).
|
|
3
3
|
|
|
4
4
|
## Basic Usage
|
|
5
5
|
|
|
@@ -46,16 +46,28 @@ Alerts are available in **three distinct styles**:
|
|
|
46
46
|
|
|
47
47
|
- `micl-alert-tonal`: An alert with a lighter background color. This is the style shown in the Basic Usage section.
|
|
48
48
|
|
|
49
|
-
- `micl-alert-outlined`: An alert with a clear border, typically used for less prominent content.
|
|
49
|
+
- `micl-alert-outlined`: An alert with a clear border and a transparent background, typically used for less prominent content.
|
|
50
|
+
|
|
51
|
+
You can change the component's color to reflect different semantic meanings or states.
|
|
52
|
+
|
|
53
|
+
**By default, all alert styles use the error-style color scheme.**
|
|
54
|
+
|
|
55
|
+
To change the color, add one of the following modifier classes to the main `<div>` element.
|
|
56
|
+
|
|
57
|
+
| Class name | Description |
|
|
58
|
+
| ---------- | ----------- |
|
|
59
|
+
| micl-alert--primary | Uses the main color scheme of your application |
|
|
60
|
+
| micl-alert--secondary | Uses a color scheme that is less prominent than the main one |
|
|
61
|
+
| micl-alert--tertiary | Uses a color scheme that provides contrasting accents |
|
|
50
62
|
|
|
51
63
|
### Alert Content Structure
|
|
52
|
-
The
|
|
64
|
+
The Alert component is built with a few key structural elements.
|
|
53
65
|
|
|
54
|
-
- `micl-alert__icon
|
|
66
|
+
- `micl-alert__icon` (optional): A container for an icon, typically from a library like Material Symbols. It appears before the alert text.
|
|
55
67
|
|
|
56
|
-
- `micl-alert__text`: A container for the main alert heading (`<h1>`-`<h6>`) and
|
|
68
|
+
- `micl-alert__text`: A container for the main alert heading (`<h1>`-`<h6>`) and supporting text.
|
|
57
69
|
|
|
58
|
-
- `micl-alert__supporting-text
|
|
70
|
+
- `micl-alert__supporting-text` (optional): Used for a short description or supplementary information. It is displayed in a smaller font.
|
|
59
71
|
|
|
60
72
|
## Customizations
|
|
61
73
|
You can customize the appearance of the Alert component by overriding its global CSS variables. These variables are declared on the `:root` pseudo-class and can be changed on any appropriate parent element to affect its child alert.
|
|
@@ -63,7 +75,7 @@ You can customize the appearance of the Alert component by overriding its global
|
|
|
63
75
|
| Variable name | Default Value | Description |
|
|
64
76
|
| ------------- | ------------- | ----------- |
|
|
65
77
|
| --md-sys-alert-padding | 16px | The inner padding between the alert's edge and its content |
|
|
66
|
-
| --md-sys-alert-space | 16px |
|
|
78
|
+
| --md-sys-alert-space | 16px | The spacing between the optional icon and the text container |
|
|
67
79
|
|
|
68
80
|
**Example: Changing the padding**
|
|
69
81
|
|
|
@@ -92,4 +92,4 @@ You can also use other icon libraries. For example, with the [Bootstrap Icons li
|
|
|
92
92
|
```
|
|
93
93
|
|
|
94
94
|
## Compatibility
|
|
95
|
-
This component
|
|
95
|
+
This component utilizes relative RGB color values, which may not be fully supported in your browser. Please check [Browser compatibility](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value#browser_compatibility) for details.
|
|
@@ -62,7 +62,9 @@ button.micl-button-outlined-xl {
|
|
|
62
62
|
|
|
63
63
|
position: relative;
|
|
64
64
|
display: inline-flex;
|
|
65
|
+
flex-shrink: 0;
|
|
65
66
|
align-items: center;
|
|
67
|
+
justify-content: center;
|
|
66
68
|
padding: 0;
|
|
67
69
|
border: none;
|
|
68
70
|
border-radius: calc(var(--micl-height) / 2);
|
|
@@ -115,15 +117,16 @@ button.micl-button-outlined-xs {
|
|
|
115
117
|
min-inline-size: var(--micl-width);
|
|
116
118
|
block-size: var(--micl-height);
|
|
117
119
|
min-block-size: var(--micl-height);
|
|
118
|
-
column-gap:
|
|
120
|
+
column-gap: 4px;
|
|
119
121
|
padding-inline: 12px;
|
|
120
122
|
|
|
121
123
|
&::before {
|
|
122
124
|
content: "";
|
|
123
125
|
position: absolute;
|
|
124
|
-
block-size: var(--md-sys-target-size);
|
|
125
|
-
inline-size:
|
|
126
|
-
|
|
126
|
+
block-size: var(--md-sys-target-size, 48px);
|
|
127
|
+
inline-size: 100%;
|
|
128
|
+
min-inline-size: var(--md-sys-target-size, 48px);
|
|
129
|
+
inset: calc((var(--micl-height) - var(--md-sys-target-size, 48px)) / 2) 0 0 calc((min(100%, var(--md-sys-target-size, 48px)) - var(--md-sys-target-size, 48px)) / 2);
|
|
127
130
|
background-color: transparent;
|
|
128
131
|
}
|
|
129
132
|
&.micl-button--toggle.micl-button--selected {
|
|
@@ -133,7 +136,7 @@ button.micl-button-outlined-xs {
|
|
|
133
136
|
border-radius: var(--md-sys-shape-corner-medium);
|
|
134
137
|
|
|
135
138
|
&.micl-button--toggle.micl-button--selected {
|
|
136
|
-
border-radius: var(--
|
|
139
|
+
border-radius: calc(var(--micl-height) / 2);
|
|
137
140
|
}
|
|
138
141
|
}
|
|
139
142
|
&:not(:disabled) {
|
|
@@ -143,7 +146,7 @@ button.micl-button-outlined-xs {
|
|
|
143
146
|
}
|
|
144
147
|
.micl-button__icon {
|
|
145
148
|
font-size: 20px;
|
|
146
|
-
|
|
149
|
+
inline-size: 20px;
|
|
147
150
|
}
|
|
148
151
|
}
|
|
149
152
|
|
|
@@ -167,9 +170,10 @@ button.micl-button-outlined-s {
|
|
|
167
170
|
&::before {
|
|
168
171
|
content: "";
|
|
169
172
|
position: absolute;
|
|
170
|
-
block-size: var(--md-sys-target-size);
|
|
171
|
-
inline-size:
|
|
172
|
-
|
|
173
|
+
block-size: var(--md-sys-target-size, 48px);
|
|
174
|
+
inline-size: 100%;
|
|
175
|
+
min-inline-size: var(--md-sys-target-size, 48px);
|
|
176
|
+
inset: calc((var(--micl-height) - var(--md-sys-target-size, 48px)) / 2) 0 0 calc((min(100%, var(--md-sys-target-size, 48px)) - var(--md-sys-target-size, 48px)) / 2);
|
|
173
177
|
background-color: transparent;
|
|
174
178
|
}
|
|
175
179
|
&.micl-button--toggle.micl-button--selected {
|
|
@@ -179,7 +183,7 @@ button.micl-button-outlined-s {
|
|
|
179
183
|
border-radius: var(--md-sys-shape-corner-medium);
|
|
180
184
|
|
|
181
185
|
&.micl-button--toggle.micl-button--selected {
|
|
182
|
-
border-radius: var(--
|
|
186
|
+
border-radius: calc(var(--micl-height) / 2);
|
|
183
187
|
}
|
|
184
188
|
}
|
|
185
189
|
&:not(:disabled) {
|
|
@@ -189,7 +193,7 @@ button.micl-button-outlined-s {
|
|
|
189
193
|
}
|
|
190
194
|
.micl-button__icon {
|
|
191
195
|
font-size: 20px;
|
|
192
|
-
|
|
196
|
+
inline-size: 20px;
|
|
193
197
|
}
|
|
194
198
|
}
|
|
195
199
|
|
|
@@ -217,17 +221,17 @@ button.micl-button-outlined-m {
|
|
|
217
221
|
border-radius: var(--md-sys-shape-corner-large);
|
|
218
222
|
|
|
219
223
|
&.micl-button--toggle.micl-button--selected {
|
|
220
|
-
border-radius: var(--
|
|
224
|
+
border-radius: calc(var(--micl-height) / 2);
|
|
221
225
|
}
|
|
222
226
|
}
|
|
223
227
|
&:not(:disabled) {
|
|
224
228
|
&:active {
|
|
225
|
-
border-radius: var(--md-sys-shape-corner-
|
|
229
|
+
border-radius: var(--md-sys-shape-corner-medium);
|
|
226
230
|
}
|
|
227
231
|
}
|
|
228
232
|
.micl-button__icon {
|
|
229
233
|
font-size: var(--md-sys-layout-icon-size, 24px);
|
|
230
|
-
|
|
234
|
+
inline-size: var(--md-sys-layout-icon-size, 24px);
|
|
231
235
|
}
|
|
232
236
|
}
|
|
233
237
|
|
|
@@ -254,7 +258,7 @@ button.micl-button-outlined-l {
|
|
|
254
258
|
border-radius: var(--md-sys-shape-corner-extra-large);
|
|
255
259
|
|
|
256
260
|
&.micl-button--toggle.micl-button--selected {
|
|
257
|
-
border-radius: var(--
|
|
261
|
+
border-radius: calc(var(--micl-height) / 2);
|
|
258
262
|
}
|
|
259
263
|
}
|
|
260
264
|
&:not(:disabled) {
|
|
@@ -264,7 +268,7 @@ button.micl-button-outlined-l {
|
|
|
264
268
|
}
|
|
265
269
|
.micl-button__icon {
|
|
266
270
|
font-size: 32px;
|
|
267
|
-
|
|
271
|
+
inline-size: 32px;
|
|
268
272
|
}
|
|
269
273
|
}
|
|
270
274
|
|
|
@@ -291,7 +295,7 @@ button.micl-button-outlined-xl {
|
|
|
291
295
|
border-radius: var(--md-sys-shape-corner-extra-large);
|
|
292
296
|
|
|
293
297
|
&.micl-button--toggle.micl-button--selected {
|
|
294
|
-
border-radius: var(--
|
|
298
|
+
border-radius: calc(var(--micl-height) / 2);
|
|
295
299
|
}
|
|
296
300
|
}
|
|
297
301
|
&:not(:disabled) {
|
|
@@ -301,7 +305,7 @@ button.micl-button-outlined-xl {
|
|
|
301
305
|
}
|
|
302
306
|
.micl-button__icon {
|
|
303
307
|
font-size: 40px;
|
|
304
|
-
|
|
308
|
+
inline-size: 40px;
|
|
305
309
|
}
|
|
306
310
|
}
|
|
307
311
|
|
|
@@ -373,11 +377,11 @@ button.micl-button-elevated-xl {
|
|
|
373
377
|
}
|
|
374
378
|
}
|
|
375
379
|
button.micl-button-elevated-xs {
|
|
376
|
-
|
|
380
|
+
block-size: 32px;
|
|
377
381
|
border: none;
|
|
378
382
|
}
|
|
379
383
|
button.micl-button-elevated-s {
|
|
380
|
-
|
|
384
|
+
block-size: 40px;
|
|
381
385
|
border: none;
|
|
382
386
|
}
|
|
383
387
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# Dialog
|
|
2
|
-
This component implements the [Material Design 3 Expressive Dialog](https://m3.material.io/components/dialogs/overview) design.
|
|
2
|
+
This component implements the [Material Design 3 Expressive Dialog](https://m3.material.io/components/dialogs/overview) design. A dialog is a small window that prompts the user to make a decision or enter additional information.
|
|
3
3
|
|
|
4
4
|
## Basic Usage
|
|
5
5
|
|
|
@@ -7,7 +7,7 @@ This component implements the [Material Design 3 Expressive Dialog](https://m3.m
|
|
|
7
7
|
To create a basic dialog, use the `<dialog>` element with the `micl-dialog` class. You can open and close the dialog using JavaScript, or you can use a control element, such as a button, to open and close the dialog.
|
|
8
8
|
|
|
9
9
|
```HTML
|
|
10
|
-
<dialog id="mydialog" class="micl-dialog" closedby="any"
|
|
10
|
+
<dialog id="mydialog" class="micl-dialog" popover closedby="any" role="alertdialog" aria-labelledby="mytitle" aria-describedby="mydesc">
|
|
11
11
|
<div class="micl-dialog__headline">
|
|
12
12
|
<h2 id="mytitle">Basic dialog</h2>
|
|
13
13
|
<span id="mydesc" class="micl-dialog__supporting-text">An example of a basic dialog</span>
|
|
@@ -45,7 +45,7 @@ When dialogs with the `popover` attribute are opened, they animate from the cont
|
|
|
45
45
|
Removing the `popover` attribute creates a more intrusive **modal** dialog. This type of dialog requires the user to interact with its buttons or press the <kbd>Esc</kbd> key to close it.
|
|
46
46
|
|
|
47
47
|
```HTML
|
|
48
|
-
<dialog id="mydialog" class="micl-dialog" closedby="closerequest" aria-labelledby="mytitle" aria-describedby="mydesc">
|
|
48
|
+
<dialog id="mydialog" class="micl-dialog" closedby="closerequest" role="alertdialog" aria-labelledby="mytitle" aria-describedby="mydesc">
|
|
49
49
|
<div class="micl-dialog__headline">
|
|
50
50
|
<span class="micl-dialog__icon material-symbols-outlined" aria-hidden="true">info</span>
|
|
51
51
|
<h2 id="mytitle">Modal dialog</h2>
|
|
@@ -53,8 +53,8 @@ Removing the `popover` attribute creates a more intrusive **modal** dialog. This
|
|
|
53
53
|
</div>
|
|
54
54
|
<div class="micl-dialog__actions">
|
|
55
55
|
<form method="dialog">
|
|
56
|
-
<button class="micl-button">Cancel</button>
|
|
57
|
-
<button class="micl-button">Save</button>
|
|
56
|
+
<button class="micl-button-text-s">Cancel</button>
|
|
57
|
+
<button class="micl-button-text-s">Save</button>
|
|
58
58
|
</form>
|
|
59
59
|
</div>
|
|
60
60
|
</dialog>
|
|
@@ -67,14 +67,13 @@ Removing the `popover` attribute creates a more intrusive **modal** dialog. This
|
|
|
67
67
|
By default, modal dialogs open in the center of the screen. You can anchor a modal dialog to a control element, causing it to open relative to that element:
|
|
68
68
|
|
|
69
69
|
```HTML
|
|
70
|
-
<dialog id="mydialog" class="micl-dialog"
|
|
70
|
+
<dialog id="mydialog" class="micl-dialog" style="position-anchor:--myanchor">
|
|
71
71
|
</dialog>
|
|
72
72
|
|
|
73
73
|
<button type="button" popovertarget="mydialog" style="anchor-name:--myanchor">Open Modal Dialog</button>
|
|
74
74
|
```
|
|
75
75
|
|
|
76
76
|
### Dialog Structure Sections
|
|
77
|
-
|
|
78
77
|
A dialog typically consists of three main sections to organize its content:
|
|
79
78
|
|
|
80
79
|
- `micl-dialog__headline`: The header of the dialog. It usually contains:
|
|
@@ -92,22 +91,22 @@ A dialog typically consists of three main sections to organize its content:
|
|
|
92
91
|
- `micl-dialog__actions`: A container for action buttons that allow the user to perform actions related to the dialog or close it. Actions are typically placed in a `<form method="dialog">` for native HTML dialog closing.
|
|
93
92
|
|
|
94
93
|
### Full-screen dialog
|
|
95
|
-
A full-screen dialog covers the entire viewport, primarily on smaller screens. On screens wider than 560 pixels, a full-screen dialog behaves like a basic dialog. Use the `micl-dialog
|
|
94
|
+
A full-screen dialog covers the entire viewport, primarily on smaller screens. On screens wider than 560 pixels, a full-screen dialog behaves like a basic dialog. Use the `micl-dialog--fullscreen` modifier class for this variant:
|
|
96
95
|
|
|
97
96
|
```HTML
|
|
98
|
-
<dialog id="mydialog" class="micl-dialog-fullscreen" closedby="none" popover aria-labelledby="mytitle" aria-describedby="mydesc">
|
|
97
|
+
<dialog id="mydialog" class="micl-dialog micl-dialog--fullscreen" closedby="none" popover aria-labelledby="mytitle" aria-describedby="mydesc">
|
|
99
98
|
<form method="dialog" class="micl-dialog__headline">
|
|
100
99
|
<button type="button" class="micl-iconbutton-s material-symbols-outlined" popovertarget="mydialog" aria-label="Close">close</button>
|
|
101
100
|
<span class="micl-dialog__icon material-symbols-outlined" aria-hidden="true">person</span>
|
|
102
101
|
<h2 id="mytitle">Full-screen dialog</h2>
|
|
103
|
-
<button class="micl-button" value="dosave">Save</button>
|
|
102
|
+
<button class="micl-button-text-s" value="dosave">Save</button>
|
|
104
103
|
</form>
|
|
105
104
|
<div class="micl-dialog__content">
|
|
106
105
|
<span id="mydesc" class="micl-dialog__supporting-text">This dialog covers the whole screen.</span>
|
|
107
106
|
</div>
|
|
108
107
|
<form method="dialog" class="micl-dialog__actions">
|
|
109
|
-
<button type="button" class="micl-button" popovertarget="mydialog">Cancel</button>
|
|
110
|
-
<button class="micl-button" value="dosave">Save</button>
|
|
108
|
+
<button type="button" class="micl-button-text-s" popovertarget="mydialog">Cancel</button>
|
|
109
|
+
<button class="micl-button-text-s" value="dosave">Save</button>
|
|
111
110
|
</form>
|
|
112
111
|
</dialog>
|
|
113
112
|
|
|
@@ -123,7 +122,10 @@ You can customize the appearance of the Dialog component by overriding its globa
|
|
|
123
122
|
|
|
124
123
|
| Variable name | Default Value | Description |
|
|
125
124
|
| ------------- | ----- | ----------- |
|
|
125
|
+
| --md-sys-dialog-min-width | 280px | The minimum width of a dialog |
|
|
126
|
+
| --md-sys-dialog-max-width | 560px | The maximum width of a dialog |
|
|
126
127
|
| --md-sys-dialog-padding | 24px | The inner padding between the dialog's edge and its content |
|
|
128
|
+
| --md-sys-dialog-headline-space | 16px | The vertical spacing between the elements in the header |
|
|
127
129
|
|
|
128
130
|
**Example: Changing the dialog padding**
|
|
129
131
|
|
|
@@ -27,7 +27,10 @@
|
|
|
27
27
|
@use '../../styles/typography';
|
|
28
28
|
|
|
29
29
|
:root {
|
|
30
|
+
--md-sys-dialog-min-width: 280px;
|
|
31
|
+
--md-sys-dialog-max-width: 560px;
|
|
30
32
|
--md-sys-dialog-padding: 24px;
|
|
33
|
+
--md-sys-dialog-headline-space: 16px;
|
|
31
34
|
--md-sys-dialog-dir-factor: 1;
|
|
32
35
|
}
|
|
33
36
|
|
|
@@ -35,8 +38,7 @@
|
|
|
35
38
|
--md-sys-dialog-dir-factor: -1;
|
|
36
39
|
}
|
|
37
40
|
|
|
38
|
-
dialog.micl-dialog
|
|
39
|
-
dialog.micl-dialog-fullscreen {
|
|
41
|
+
dialog.micl-dialog {
|
|
40
42
|
--statelayer-color: var(--md-sys-color-primary);
|
|
41
43
|
--md-sys-dialog-motion-spatial: #{motion.$md-sys-motion-expressive-fast-spatial};
|
|
42
44
|
--md-sys-dialog-motion-duration: #{motion.$md-sys-motion-expressive-fast-spatial-duration};
|
|
@@ -45,12 +47,12 @@ dialog.micl-dialog-fullscreen {
|
|
|
45
47
|
box-sizing: border-box;
|
|
46
48
|
display: none;
|
|
47
49
|
flex-direction: column;
|
|
48
|
-
min-
|
|
49
|
-
max-
|
|
50
|
-
max-
|
|
50
|
+
min-inline-size: var(--md-sys-dialog-min-width, 280px);
|
|
51
|
+
max-inline-size: var(--md-sys-dialog-max-width, 560px);
|
|
52
|
+
max-block-size: 100vh;
|
|
51
53
|
inset-block-start: anchor(start);
|
|
52
54
|
inset-inline-start: anchor(start);
|
|
53
|
-
transform: translate(calc(var(--md-sys-dialog-dir-factor) * -50%), -50%) scale(50%);
|
|
55
|
+
transform: translate(calc(var(--md-sys-dialog-dir-factor, 1) * -50%), -50%) scale(50%);
|
|
54
56
|
padding: 0;
|
|
55
57
|
margin: 0;
|
|
56
58
|
border: none;
|
|
@@ -65,8 +67,8 @@ dialog.micl-dialog-fullscreen {
|
|
|
65
67
|
transition:
|
|
66
68
|
inset-block-start var(--md-sys-dialog-motion-duration-reverse) linear,
|
|
67
69
|
inset-inline-start var(--md-sys-dialog-motion-duration-reverse) linear,
|
|
68
|
-
|
|
69
|
-
|
|
70
|
+
inline-size var(--md-sys-dialog-motion-duration-reverse) linear,
|
|
71
|
+
block-size var(--md-sys-dialog-motion-duration-reverse) linear,
|
|
70
72
|
transform var(--md-sys-dialog-motion-duration-reverse) linear,
|
|
71
73
|
opacity var(--md-sys-dialog-motion-duration-reverse) motion.$md-sys-motion-easing-emphasized-decelerate,
|
|
72
74
|
overlay var(--md-sys-dialog-motion-duration-reverse) linear allow-discrete,
|
|
@@ -74,12 +76,12 @@ dialog.micl-dialog-fullscreen {
|
|
|
74
76
|
--statelayer-opacity var(--md-sys-dialog-motion-duration) linear;
|
|
75
77
|
|
|
76
78
|
@starting-style {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
+
block-size: fit-content;
|
|
80
|
+
inline-size: fit-content;
|
|
79
81
|
inset-block-start: anchor(start);
|
|
80
82
|
inset-inline-start: anchor(start);
|
|
81
83
|
opacity: 0;
|
|
82
|
-
transform: translate(calc(var(--md-sys-dialog-dir-factor) * -50%), -50%) scale(50%);
|
|
84
|
+
transform: translate(calc(var(--md-sys-dialog-dir-factor, 1) * -50%), -50%) scale(50%);
|
|
83
85
|
}
|
|
84
86
|
|
|
85
87
|
&:popover-open,
|
|
@@ -88,12 +90,12 @@ dialog.micl-dialog-fullscreen {
|
|
|
88
90
|
inset-block-start: 50%;
|
|
89
91
|
inset-inline-start: 50%;
|
|
90
92
|
opacity: 1;
|
|
91
|
-
transform: translate(calc(var(--md-sys-dialog-dir-factor) * -50%), -50%) scale(100%);
|
|
93
|
+
transform: translate(calc(var(--md-sys-dialog-dir-factor, 1) * -50%), -50%) scale(100%);
|
|
92
94
|
transition:
|
|
93
95
|
inset-block-start var(--md-sys-dialog-motion-duration) linear,
|
|
94
96
|
inset-inline-start var(--md-sys-dialog-motion-duration) linear,
|
|
95
|
-
|
|
96
|
-
|
|
97
|
+
inline-size var(--md-sys-dialog-motion-duration) linear,
|
|
98
|
+
block-size var(--md-sys-dialog-motion-duration) linear,
|
|
97
99
|
transform var(--md-sys-dialog-motion-duration) linear,
|
|
98
100
|
opacity var(--md-sys-dialog-motion-duration) motion.$md-sys-motion-easing-emphasized-accelerate,
|
|
99
101
|
overlay var(--md-sys-dialog-motion-duration) linear allow-discrete,
|
|
@@ -103,7 +105,7 @@ dialog.micl-dialog-fullscreen {
|
|
|
103
105
|
inset-block-start: anchor(start);
|
|
104
106
|
inset-inline-start: anchor(start);
|
|
105
107
|
opacity: 0;
|
|
106
|
-
transform: translate(calc(var(--md-sys-dialog-dir-factor) * -50%), -50%) scale(50%);
|
|
108
|
+
transform: translate(calc(var(--md-sys-dialog-dir-factor, 1) * -50%), -50%) scale(50%);
|
|
107
109
|
}
|
|
108
110
|
}
|
|
109
111
|
&:not([popover]) {
|
|
@@ -148,43 +150,41 @@ dialog.micl-dialog-fullscreen {
|
|
|
148
150
|
flex-shrink: 0;
|
|
149
151
|
align-items: flex-start;
|
|
150
152
|
gap: 16px;
|
|
151
|
-
padding: var(--md-sys-dialog-padding);
|
|
153
|
+
padding-block: var(--md-sys-dialog-padding, 24px) var(--md-sys-dialog-headline-space, 16px);
|
|
154
|
+
padding-inline: var(--md-sys-dialog-padding, 24px);
|
|
152
155
|
background-color: transparent;
|
|
153
156
|
|
|
157
|
+
&:has(> .micl-dialog__icon) {
|
|
158
|
+
align-items: center;
|
|
159
|
+
}
|
|
160
|
+
.micl-dialog__icon {
|
|
161
|
+
inline-size: var(--md-sys-layout-icon-size, 24px);
|
|
162
|
+
block-size: var(--md-sys-layout-icon-size, 24px);
|
|
163
|
+
font-size: var(--md-sys-layout-icon-size, 24px);
|
|
164
|
+
color: var(--md-sys-color-secondary);
|
|
165
|
+
}
|
|
154
166
|
h1, h2, h3, h4, h5, h6, .micl-heading {
|
|
155
167
|
@include typography.headline-small;
|
|
156
168
|
|
|
157
169
|
flex: 1 1 100%;
|
|
158
170
|
margin: 0;
|
|
159
|
-
overflow: hidden;
|
|
160
|
-
text-overflow: ellipsis;
|
|
161
|
-
white-space: nowrap;
|
|
162
171
|
color: var(--md-sys-color-on-surface);
|
|
163
172
|
}
|
|
164
|
-
.micl-dialog__icon {
|
|
165
|
-
width: var(--md-sys-layout-icon-size, 24px);
|
|
166
|
-
height: var(--md-sys-layout-icon-size, 24px);
|
|
167
|
-
font-size: var(--md-sys-layout-icon-size, 24px);
|
|
168
|
-
color: var(--md-sys-color-secondary);
|
|
169
|
-
}
|
|
170
173
|
button {
|
|
171
174
|
display: none;
|
|
172
175
|
}
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
.micl-dialog__headline:has(> .micl-dialog__icon) {
|
|
178
|
-
align-items: center;
|
|
179
|
-
}
|
|
180
|
-
.micl-dialog__subhead {
|
|
181
|
-
@include typography.title-medium;
|
|
176
|
+
.micl-dialog__subhead {
|
|
177
|
+
@include typography.title-medium;
|
|
182
178
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
179
|
+
padding-inline: var(--md-sys-dialog-padding, 24px);
|
|
180
|
+
overflow: hidden;
|
|
181
|
+
text-overflow: ellipsis;
|
|
182
|
+
white-space: nowrap;
|
|
183
|
+
color: var(--md-sys-color-on-surface)
|
|
184
|
+
}
|
|
185
|
+
&:has(+ .micl-dialog__actions) {
|
|
186
|
+
padding-block-end: 0;
|
|
187
|
+
}
|
|
188
188
|
}
|
|
189
189
|
.micl-dialog__supporting-text {
|
|
190
190
|
@include typography.body-medium;
|
|
@@ -193,7 +193,7 @@ dialog.micl-dialog-fullscreen {
|
|
|
193
193
|
}
|
|
194
194
|
.micl-dialog__content {
|
|
195
195
|
flex-shrink: 1;
|
|
196
|
-
padding-inline: var(--md-sys-dialog-padding);
|
|
196
|
+
padding-inline: var(--md-sys-dialog-padding, 24px);
|
|
197
197
|
background-color: inherit;
|
|
198
198
|
overflow-y: auto;
|
|
199
199
|
}
|
|
@@ -202,18 +202,21 @@ dialog.micl-dialog-fullscreen {
|
|
|
202
202
|
flex-shrink: 0;
|
|
203
203
|
justify-content: flex-end;
|
|
204
204
|
column-gap: 8px;
|
|
205
|
-
padding: var(--md-sys-dialog-padding);
|
|
205
|
+
padding: var(--md-sys-dialog-padding, 24px);
|
|
206
206
|
opacity: 1;
|
|
207
|
-
transition:
|
|
207
|
+
transition:
|
|
208
|
+
opacity var(--md-sys-dialog-motion-duration) linear allow-discrete,
|
|
209
|
+
overlay var(--md-sys-dialog-motion-duration) linear allow-discrete,
|
|
210
|
+
display var(--md-sys-dialog-motion-duration) linear allow-discrete;
|
|
208
211
|
}
|
|
209
212
|
}
|
|
210
213
|
|
|
211
|
-
dialog.micl-dialog-fullscreen {
|
|
214
|
+
dialog.micl-dialog.micl-dialog--fullscreen {
|
|
212
215
|
@media (max-width: 560px) {
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
max-
|
|
216
|
-
border-radius: var(--md-sys-shape-corner-none);
|
|
216
|
+
inline-size: 100vw;
|
|
217
|
+
block-size: 100vh;
|
|
218
|
+
max-inline-size: 100vw;
|
|
219
|
+
border-radius: var(--md-sys-shape-corner-none, 0px);
|
|
217
220
|
background-color: var(--md-sys-color-surface);
|
|
218
221
|
box-shadow: var(--md-sys-elevation-level0);
|
|
219
222
|
timeline-scope: --headlineTimeline;
|
|
@@ -222,11 +225,12 @@ dialog.micl-dialog-fullscreen {
|
|
|
222
225
|
// --statelayer-opacity: var(--md-sys-state-hover-state-layer-opacity);
|
|
223
226
|
// }
|
|
224
227
|
.micl-dialog__headline {
|
|
225
|
-
|
|
228
|
+
block-size: 56px;
|
|
226
229
|
flex-direction: row;
|
|
227
230
|
align-items: center;
|
|
228
|
-
gap:
|
|
229
|
-
padding: 4px;
|
|
231
|
+
gap: 8px;
|
|
232
|
+
padding-block: 4px;
|
|
233
|
+
padding-inline: 8px 16px;
|
|
230
234
|
animation-name: headlineScroll;
|
|
231
235
|
animation-duration: 1ms;
|
|
232
236
|
animation-timeline: --headlineTimeline;
|
|
@@ -246,10 +250,10 @@ dialog.micl-dialog-fullscreen {
|
|
|
246
250
|
display:none;
|
|
247
251
|
}
|
|
248
252
|
button {
|
|
249
|
-
display:
|
|
253
|
+
display: block;
|
|
250
254
|
|
|
251
255
|
&.micl-button {
|
|
252
|
-
margin-
|
|
256
|
+
margin-inline-end: 16px;
|
|
253
257
|
}
|
|
254
258
|
}
|
|
255
259
|
}
|
|
@@ -258,11 +262,18 @@ dialog.micl-dialog-fullscreen {
|
|
|
258
262
|
scroll-timeline: --headlineTimeline vertical;
|
|
259
263
|
}
|
|
260
264
|
.micl-dialog__actions {
|
|
265
|
+
display: none;
|
|
261
266
|
opacity: 0;
|
|
262
267
|
}
|
|
263
268
|
}
|
|
264
269
|
}
|
|
265
270
|
|
|
271
|
+
@media (max-width: 560px) {
|
|
272
|
+
body:has(dialog.micl-dialog.micl-dialog--fullscreen:popover-open) {
|
|
273
|
+
overflow-y: hidden;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
|
|
266
277
|
@keyframes headlineScroll {
|
|
267
278
|
from {
|
|
268
279
|
background-color: transparent;
|
|
@@ -34,7 +34,7 @@ body {
|
|
|
34
34
|
.micl-divider-inset-end {
|
|
35
35
|
inline-size: 100%;
|
|
36
36
|
block-size: 0;
|
|
37
|
-
margin-block: calc(var(--md-sys-divider-space, 4px) -
|
|
37
|
+
margin-block: calc(var(--md-sys-divider-space, 4px) - 0.5px) calc(var(--md-sys-divider-space, 4px) - 0.5px);
|
|
38
38
|
margin-inline: 0;
|
|
39
39
|
border: none;
|
|
40
40
|
border-block-start: var(--md-sys-divider-thickness, 1px) solid var(--md-sys-divider-color, gray);
|
|
@@ -63,3 +63,9 @@ body {
|
|
|
63
63
|
border: none;
|
|
64
64
|
border-inline-start: var(--md-sys-divider-thickness, 1px) solid var(--md-sys-divider-color, gray);
|
|
65
65
|
}
|
|
66
|
+
|
|
67
|
+
li.micl-divider {
|
|
68
|
+
list-style: none;
|
|
69
|
+
box-shadow: 0 calc(-1 * var(--md-sys-divider-space, 4px) / 2) 0 calc(var(--md-sys-divider-space, 4px) / 2) var(--md-sys-list-item-container-color),
|
|
70
|
+
0 calc(var(--md-sys-divider-space, 4px) / 2) 0 calc(var(--md-sys-divider-space, 4px) / 2) var(--md-sys-list-item-container-color);
|
|
71
|
+
}
|
|
@@ -86,4 +86,4 @@ You can also use other icon libraries. For example, with the [Bootstrap Icons li
|
|
|
86
86
|
```
|
|
87
87
|
|
|
88
88
|
## Compatibility
|
|
89
|
-
This component
|
|
89
|
+
This component utilizes relative RGB color values, which may not be fully supported in your browser. Please check [Browser compatibility](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value#browser_compatibility) for details.
|