@reliability-design/web 1.1.1 → 1.3.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/dist/components/rel-accordion/rel-accordion.ts +289 -150
- package/dist/components/rel-alert/rel-alert.ts +34 -34
- package/dist/components/rel-avatar/README.md +15 -4
- package/dist/components/rel-avatar/rel-avatar.ts +138 -94
- package/dist/components/rel-badge/README.md +7 -0
- package/dist/components/rel-badge/rel-badge.ts +39 -2
- package/dist/components/rel-breadcrumb/rel-breadcrumb.ts +6 -6
- package/dist/components/rel-button/rel-button.ts +96 -28
- package/dist/components/rel-calendar/rel-calendar.ts +15 -8
- package/dist/components/rel-card/rel-card.ts +9 -17
- package/dist/components/rel-cardmedia/rel-cardmedia.ts +20 -23
- package/dist/components/rel-carousel/rel-carousel.ts +596 -468
- package/dist/components/rel-checkbox/rel-checkbox.ts +68 -16
- package/dist/components/rel-chip/README.md +7 -0
- package/dist/components/rel-chip/rel-chip.ts +411 -244
- package/dist/components/rel-container/rel-container.ts +2 -2
- package/dist/components/rel-date-picker/rel-date-picker.ts +23 -19
- package/dist/components/rel-divider/rel-divider.ts +3 -3
- package/dist/components/rel-drawer/rel-drawer-footer.ts +0 -2
- package/dist/components/rel-drawer/rel-drawer.ts +46 -90
- package/dist/components/rel-kbd/rel-kbd.ts +94 -118
- package/dist/components/rel-layout/rel-layout.ts +49 -58
- package/dist/components/rel-menu/rel-menu.ts +359 -359
- package/dist/components/rel-menubar/rel-menubar-menu.css +3 -0
- package/dist/components/rel-menubar/rel-menubar-menu.ts +2 -1
- package/dist/components/rel-menubar/rel-menubar.ts +603 -605
- package/dist/components/rel-otp/rel-otp.ts +22 -25
- package/dist/components/rel-pagination/rel-pagination.ts +442 -381
- package/dist/components/rel-popover/rel-popover-content.ts +6 -5
- package/dist/components/rel-popover/rel-popover.ts +26 -7
- package/dist/components/rel-progress/rel-progress.ts +10 -9
- package/dist/components/rel-radio/rel-radio.ts +228 -172
- package/dist/components/rel-range-picker/rel-range-picker.css +349 -0
- package/dist/components/rel-range-picker/rel-range-picker.ts +1080 -0
- package/dist/components/rel-resizable/rel-resizable-handle.ts +8 -7
- package/dist/components/rel-segmented-button/rel-segmented-button.ts +41 -20
- package/dist/components/rel-select/README.md +34 -28
- package/dist/components/rel-select/rel-select.ts +1015 -275
- package/dist/components/rel-sheet/rel-sheet.ts +365 -684
- package/dist/components/rel-skeleton/rel-skeleton.ts +139 -0
- package/dist/components/rel-slider/rel-slider.ts +49 -27
- package/dist/components/rel-snackbar/rel-snackbar.ts +28 -28
- package/dist/components/rel-stepper/rel-stepper.ts +11 -10
- package/dist/components/rel-switch/rel-switch.ts +7 -6
- package/dist/components/rel-tab/rel-tab.ts +15 -29
- package/dist/components/rel-textfield/rel-textfield.ts +192 -35
- package/dist/components/rel-toast/rel-toast.ts +21 -13
- package/dist/components/rel-tooltip/rel-tooltip.ts +123 -123
- package/dist/components/rel-topbar/rel-topbar-actions.ts +1 -0
- package/dist/components/rel-topbar/rel-topbar-brand.ts +1 -0
- package/dist/components/rel-topbar/rel-topbar-dropdown-item.ts +32 -2
- package/dist/components/rel-topbar/rel-topbar-dropdown.ts +1 -1
- package/dist/components/rel-topbar/rel-topbar-item.ts +15 -10
- package/dist/components/rel-topbar/rel-topbar-mobile-panel.ts +1 -0
- package/dist/components/rel-topbar/rel-topbar-profile.ts +30 -56
- package/dist/components/rel-topbar/rel-topbar-utilities.ts +1 -0
- package/dist/components/rel-topbar/rel-topbar.ts +137 -28
- package/dist/index.d.mts +310 -193
- package/dist/index.d.ts +310 -193
- package/dist/index.js +5562 -3526
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +5328 -3284
- package/dist/index.mjs.map +1 -1
- package/dist/rel-menubar-menu-BEEQDAXW.css +3 -0
- package/dist/styles/vars-v2.css +525 -0
- package/dist/styles/vars.css +346 -346
- package/dist/{vars-TBB4BMSD.css → vars-I2PC74XD.css} +346 -346
- package/dist/vars-v2-VMGWTFJZ.css +525 -0
- package/package.json +2 -1
|
@@ -9,7 +9,7 @@ interface CalendarDay {
|
|
|
9
9
|
isSelected: boolean;
|
|
10
10
|
isDisabled: boolean;
|
|
11
11
|
}
|
|
12
|
-
|
|
12
|
+
|
|
13
13
|
@customElement("rel-date-picker")
|
|
14
14
|
export class RelDatePicker extends LitElement {
|
|
15
15
|
@property({ type: String, reflect: true }) value: string | null = null;
|
|
@@ -47,6 +47,10 @@ export class RelDatePicker extends LitElement {
|
|
|
47
47
|
|
|
48
48
|
:host([disabled]) {
|
|
49
49
|
opacity: 0.6;
|
|
50
|
+
cursor: not-allowed;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
:host([disabled]) * {
|
|
50
54
|
pointer-events: none;
|
|
51
55
|
}
|
|
52
56
|
|
|
@@ -70,7 +74,7 @@ export class RelDatePicker extends LitElement {
|
|
|
70
74
|
justify-content: space-between;
|
|
71
75
|
gap: var(--rel-spacing-space-xs);
|
|
72
76
|
padding: var(--rel-spacing-space-sm) var(--rel-spacing-space-md);
|
|
73
|
-
background: var(--rel-
|
|
77
|
+
background: var(--rel-color-bg-primary);
|
|
74
78
|
border: 1px solid var(--rel-border-default);
|
|
75
79
|
border-radius: var(--rel-borders-radius-border-radius-200);
|
|
76
80
|
font-family: var(--rel-fontFamilies-primary);
|
|
@@ -82,13 +86,13 @@ export class RelDatePicker extends LitElement {
|
|
|
82
86
|
}
|
|
83
87
|
|
|
84
88
|
.trigger-button:hover:not(:disabled) {
|
|
85
|
-
border-color: var(--rel-
|
|
89
|
+
border-color: var(--rel-color-border-strong);
|
|
86
90
|
}
|
|
87
91
|
|
|
88
92
|
.trigger-button:focus-visible {
|
|
89
|
-
outline: 2px solid var(--rel-
|
|
93
|
+
outline: 2px solid var(--rel-color-border-focus);
|
|
90
94
|
outline-offset: 2px;
|
|
91
|
-
border-color: var(--rel-
|
|
95
|
+
border-color: var(--rel-color-border-focus);
|
|
92
96
|
}
|
|
93
97
|
|
|
94
98
|
.trigger-button:disabled {
|
|
@@ -116,7 +120,7 @@ export class RelDatePicker extends LitElement {
|
|
|
116
120
|
border: none;
|
|
117
121
|
padding: var(--rel-spacing-space-3xs);
|
|
118
122
|
cursor: pointer;
|
|
119
|
-
color: var(--rel-
|
|
123
|
+
color: var(--rel-color-text-placeholder);
|
|
120
124
|
display: flex;
|
|
121
125
|
align-items: center;
|
|
122
126
|
justify-content: center;
|
|
@@ -126,7 +130,7 @@ export class RelDatePicker extends LitElement {
|
|
|
126
130
|
|
|
127
131
|
.icon-button:hover {
|
|
128
132
|
background: var(--rel-surface-secondary);
|
|
129
|
-
color: var(--rel-
|
|
133
|
+
color: var(--rel-color-text-primary);
|
|
130
134
|
}
|
|
131
135
|
|
|
132
136
|
.icon-button svg {
|
|
@@ -139,7 +143,7 @@ export class RelDatePicker extends LitElement {
|
|
|
139
143
|
top: calc(100% + 4px);
|
|
140
144
|
left: 0;
|
|
141
145
|
z-index: 1000;
|
|
142
|
-
background: var(--rel-
|
|
146
|
+
background: var(--rel-color-bg-primary);
|
|
143
147
|
border: 1px solid var(--rel-border-default);
|
|
144
148
|
border-radius: var(--rel-borders-radius-border-radius-200);
|
|
145
149
|
box-shadow: var(--rel-shadows-shadow-300);
|
|
@@ -170,7 +174,7 @@ export class RelDatePicker extends LitElement {
|
|
|
170
174
|
align-items: center;
|
|
171
175
|
justify-content: center;
|
|
172
176
|
cursor: pointer;
|
|
173
|
-
color: var(--rel-
|
|
177
|
+
color: var(--rel-color-text-primary);
|
|
174
178
|
transition: background-color 0.15s ease;
|
|
175
179
|
}
|
|
176
180
|
|
|
@@ -179,7 +183,7 @@ export class RelDatePicker extends LitElement {
|
|
|
179
183
|
}
|
|
180
184
|
|
|
181
185
|
.nav-button:focus-visible {
|
|
182
|
-
outline: 2px solid var(--rel-
|
|
186
|
+
outline: 2px solid var(--rel-color-border-focus);
|
|
183
187
|
outline-offset: 2px;
|
|
184
188
|
}
|
|
185
189
|
|
|
@@ -191,7 +195,7 @@ export class RelDatePicker extends LitElement {
|
|
|
191
195
|
.dropdown-trigger {
|
|
192
196
|
width: 100%;
|
|
193
197
|
padding: var(--rel-spacing-space-xs) var(--rel-spacing-space-sm);
|
|
194
|
-
background: var(--rel-
|
|
198
|
+
background: var(--rel-color-bg-primary);
|
|
195
199
|
border: 1px solid var(--rel-border-default);
|
|
196
200
|
border-radius: var(--rel-borders-radius-border-radius-200);
|
|
197
201
|
font-family: var(--rel-fontFamilies-primary);
|
|
@@ -208,7 +212,7 @@ export class RelDatePicker extends LitElement {
|
|
|
208
212
|
}
|
|
209
213
|
|
|
210
214
|
.dropdown-trigger:focus-visible {
|
|
211
|
-
outline: 2px solid var(--rel-
|
|
215
|
+
outline: 2px solid var(--rel-color-border-focus);
|
|
212
216
|
outline-offset: 2px;
|
|
213
217
|
}
|
|
214
218
|
|
|
@@ -218,7 +222,7 @@ export class RelDatePicker extends LitElement {
|
|
|
218
222
|
left: 0;
|
|
219
223
|
right: 0;
|
|
220
224
|
z-index: 10;
|
|
221
|
-
background: var(--rel-
|
|
225
|
+
background: var(--rel-color-bg-primary);
|
|
222
226
|
border: 1px solid var(--rel-border-default);
|
|
223
227
|
border-radius: var(--rel-borders-radius-border-radius-200);
|
|
224
228
|
box-shadow: var(--rel-shadows-shadow-200);
|
|
@@ -244,8 +248,8 @@ export class RelDatePicker extends LitElement {
|
|
|
244
248
|
}
|
|
245
249
|
|
|
246
250
|
.dropdown-item.selected {
|
|
247
|
-
background: var(--rel-
|
|
248
|
-
color: var(--rel-
|
|
251
|
+
background: var(--rel-background-info);
|
|
252
|
+
color: var(--rel-text-info);
|
|
249
253
|
font-weight: var(--rel-fontWeights-semibold);
|
|
250
254
|
}
|
|
251
255
|
|
|
@@ -260,7 +264,7 @@ export class RelDatePicker extends LitElement {
|
|
|
260
264
|
text-align: center;
|
|
261
265
|
font-size: var(--rel-fontSizes-xs);
|
|
262
266
|
font-weight: var(--rel-fontWeights-semibold);
|
|
263
|
-
color: var(--rel-
|
|
267
|
+
color: var(--rel-color-text-placeholder);
|
|
264
268
|
padding: var(--rel-spacing-space-xs);
|
|
265
269
|
text-transform: uppercase;
|
|
266
270
|
}
|
|
@@ -290,18 +294,18 @@ export class RelDatePicker extends LitElement {
|
|
|
290
294
|
}
|
|
291
295
|
|
|
292
296
|
.day-button:focus-visible {
|
|
293
|
-
outline: 2px solid var(--rel-
|
|
297
|
+
outline: 2px solid var(--rel-color-border-focus);
|
|
294
298
|
outline-offset: -2px;
|
|
295
299
|
z-index: 1;
|
|
296
300
|
}
|
|
297
301
|
|
|
298
302
|
.day-button.today:not(.selected) {
|
|
299
|
-
border: 2px solid var(--rel-colors-
|
|
303
|
+
border: 2px solid var(--rel-colors-green-primary);
|
|
300
304
|
}
|
|
301
305
|
|
|
302
306
|
.day-button.selected {
|
|
303
307
|
background: var(--rel-colors-green-primary);
|
|
304
|
-
color: var(--rel-
|
|
308
|
+
color: var(--rel-color-text-inverse);
|
|
305
309
|
font-weight: var(--rel-fontWeights-semibold);
|
|
306
310
|
}
|
|
307
311
|
|
|
@@ -15,21 +15,21 @@
|
|
|
15
15
|
display: flex;
|
|
16
16
|
background: transparent;
|
|
17
17
|
font-family: var(--rel-fontFamilies-primary);
|
|
18
|
-
color: var(--rel-
|
|
18
|
+
color: var(--rel-color-text-primary);
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
/* Horizontal */
|
|
22
22
|
.rel-divider.horizontal {
|
|
23
23
|
width: 100%;
|
|
24
24
|
height: var(--rel-borders-width-stroke-100);
|
|
25
|
-
background-color: var(--rel-
|
|
25
|
+
background-color: var(--rel-color-border-divider);
|
|
26
26
|
margin: var(--rel-spacing-space-md) 0;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
/* Vertical */
|
|
30
30
|
.rel-divider.vertical {
|
|
31
31
|
width: var(--rel-borders-width-stroke-100);
|
|
32
|
-
background-color: var(--rel-
|
|
32
|
+
background-color: var(--rel-color-border-divider);
|
|
33
33
|
margin: 0 var(--rel-spacing-space-md);
|
|
34
34
|
align-self: stretch;
|
|
35
35
|
height: 100%;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { LitElement, html, css } from "lit";
|
|
2
2
|
import { customElement, property, state, query } from "lit/decorators.js";
|
|
3
|
+
import "@reliability-design/icons/rel-icon";
|
|
3
4
|
import "./rel-drawer-footer";
|
|
4
5
|
|
|
5
|
-
export type DrawerSide = "bottom" | "left" | "right"
|
|
6
|
+
export type DrawerSide = "bottom" | "left" | "right";
|
|
6
7
|
export type DrawerCloseReason = "backdrop" | "escape" | "drag" | "programmatic";
|
|
7
8
|
|
|
8
9
|
@customElement("rel-drawer")
|
|
@@ -17,8 +18,7 @@ export class RelDrawer extends LitElement {
|
|
|
17
18
|
@property({ type: Boolean }) draggable = true;
|
|
18
19
|
@property({ type: Number, attribute: "snap-threshold" }) snapThreshold = 0.25;
|
|
19
20
|
@property({ type: String, attribute: "max-height" }) maxHeight = "80vh";
|
|
20
|
-
@property({ type: String }) width = "
|
|
21
|
-
@property({ type: Boolean, reflect: true }) disabled = false;
|
|
21
|
+
@property({ type: String }) width = "";
|
|
22
22
|
@property({ type: String }) title: string = "";
|
|
23
23
|
@property({ type: String }) description: string = "";
|
|
24
24
|
|
|
@@ -40,11 +40,6 @@ export class RelDrawer extends LitElement {
|
|
|
40
40
|
--drawer-transition-timing: cubic-bezier(0.32, 0.72, 0, 1);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
:host([disabled]) {
|
|
44
|
-
pointer-events: none;
|
|
45
|
-
opacity: 0.6;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
43
|
.drawer-container {
|
|
49
44
|
position: fixed;
|
|
50
45
|
top: 0;
|
|
@@ -78,10 +73,11 @@ export class RelDrawer extends LitElement {
|
|
|
78
73
|
/* Panel base */
|
|
79
74
|
.panel {
|
|
80
75
|
position: absolute;
|
|
81
|
-
background: var(--rel-
|
|
76
|
+
background: var(--rel-color-bg-primary);
|
|
82
77
|
box-shadow: var(--rel-shadows-shadow-500);
|
|
83
78
|
display: flex;
|
|
84
79
|
flex-direction: column;
|
|
80
|
+
overflow: hidden;
|
|
85
81
|
outline: none;
|
|
86
82
|
font-family: var(--rel-fontFamilies-primary);
|
|
87
83
|
transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing);
|
|
@@ -90,16 +86,19 @@ export class RelDrawer extends LitElement {
|
|
|
90
86
|
/* Bottom drawer */
|
|
91
87
|
.panel[data-side="bottom"] {
|
|
92
88
|
bottom: 0;
|
|
93
|
-
left:
|
|
94
|
-
right:
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
border-
|
|
98
|
-
|
|
89
|
+
left: 50%;
|
|
90
|
+
right: auto;
|
|
91
|
+
width: var(--drawer-width, clamp(640px, 66vw, 952px));
|
|
92
|
+
height: var(--drawer-height, clamp(360px, 49vh, 600px));
|
|
93
|
+
border-radius: var(--rel-borders-radius-border-radius-200)
|
|
94
|
+
var(--rel-borders-radius-border-radius-200)
|
|
95
|
+
0
|
|
96
|
+
0;
|
|
97
|
+
transform: translateX(-50%) translateY(100%);
|
|
99
98
|
}
|
|
100
99
|
|
|
101
100
|
.drawer-container.open .panel[data-side="bottom"] {
|
|
102
|
-
transform: translateY(0);
|
|
101
|
+
transform: translateX(-50%) translateY(0);
|
|
103
102
|
}
|
|
104
103
|
|
|
105
104
|
/* Left drawer */
|
|
@@ -107,10 +106,8 @@ export class RelDrawer extends LitElement {
|
|
|
107
106
|
top: 0;
|
|
108
107
|
left: 0;
|
|
109
108
|
bottom: 0;
|
|
110
|
-
width: var(--drawer-width, 420px);
|
|
111
|
-
|
|
112
|
-
border-top-right-radius: var(--rel-borders-radius-border-radius-300);
|
|
113
|
-
border-bottom-right-radius: var(--rel-borders-radius-border-radius-300);
|
|
109
|
+
width: var(--drawer-width, clamp(280px, 24vw, 420px));
|
|
110
|
+
border-radius: 0;
|
|
114
111
|
transform: translateX(-100%);
|
|
115
112
|
}
|
|
116
113
|
|
|
@@ -123,10 +120,8 @@ export class RelDrawer extends LitElement {
|
|
|
123
120
|
top: 0;
|
|
124
121
|
right: 0;
|
|
125
122
|
bottom: 0;
|
|
126
|
-
width: var(--drawer-width, 420px);
|
|
127
|
-
|
|
128
|
-
border-top-left-radius: var(--rel-borders-radius-border-radius-300);
|
|
129
|
-
border-bottom-left-radius: var(--rel-borders-radius-border-radius-300);
|
|
123
|
+
width: var(--drawer-width, clamp(280px, 24vw, 420px));
|
|
124
|
+
border-radius: 0;
|
|
130
125
|
transform: translateX(100%);
|
|
131
126
|
}
|
|
132
127
|
|
|
@@ -134,21 +129,6 @@ export class RelDrawer extends LitElement {
|
|
|
134
129
|
transform: translateX(0);
|
|
135
130
|
}
|
|
136
131
|
|
|
137
|
-
/* Top drawer */
|
|
138
|
-
.panel[data-side="top"] {
|
|
139
|
-
top: 0;
|
|
140
|
-
left: 0;
|
|
141
|
-
right: 0;
|
|
142
|
-
max-height: var(--drawer-max-height, 80vh);
|
|
143
|
-
border-bottom-left-radius: var(--rel-borders-radius-border-radius-300);
|
|
144
|
-
border-bottom-right-radius: var(--rel-borders-radius-border-radius-300);
|
|
145
|
-
transform: translateY(-100%);
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
.drawer-container.open .panel[data-side="top"] {
|
|
149
|
-
transform: translateY(0);
|
|
150
|
-
}
|
|
151
|
-
|
|
152
132
|
/* Dragging state */
|
|
153
133
|
.panel.dragging {
|
|
154
134
|
transition: none;
|
|
@@ -158,13 +138,17 @@ export class RelDrawer extends LitElement {
|
|
|
158
138
|
transition: none;
|
|
159
139
|
}
|
|
160
140
|
|
|
141
|
+
.overlay.no-modal {
|
|
142
|
+
display: none !important;
|
|
143
|
+
}
|
|
144
|
+
|
|
161
145
|
/* Handle */
|
|
162
146
|
.handle {
|
|
163
147
|
width: 48px;
|
|
164
148
|
height: 4px;
|
|
165
|
-
background: var(--rel-
|
|
149
|
+
background: var(--rel-color-border-divider);
|
|
166
150
|
border-radius: var(--rel-borders-radius-border-radius-500);
|
|
167
|
-
margin: var(--rel-spacing-space-
|
|
151
|
+
margin: var(--rel-spacing-space-xs) auto var(--rel-spacing-space-2xs);
|
|
168
152
|
cursor: grab;
|
|
169
153
|
touch-action: none;
|
|
170
154
|
}
|
|
@@ -183,7 +167,7 @@ export class RelDrawer extends LitElement {
|
|
|
183
167
|
flex-direction: column;
|
|
184
168
|
gap: var(--rel-spacing-space-2xs);
|
|
185
169
|
padding: var(--rel-spacing-space-md) var(--rel-spacing-space-lg);
|
|
186
|
-
border-bottom: var(--rel-borders-width-stroke-100) solid var(--rel-
|
|
170
|
+
border-bottom: var(--rel-borders-width-stroke-100) solid var(--rel-color-border-default);
|
|
187
171
|
}
|
|
188
172
|
|
|
189
173
|
.header.empty {
|
|
@@ -192,7 +176,7 @@ export class RelDrawer extends LitElement {
|
|
|
192
176
|
|
|
193
177
|
.header-top {
|
|
194
178
|
display: flex;
|
|
195
|
-
align-items:
|
|
179
|
+
align-items: flex-start;
|
|
196
180
|
justify-content: space-between;
|
|
197
181
|
}
|
|
198
182
|
|
|
@@ -218,8 +202,10 @@ export class RelDrawer extends LitElement {
|
|
|
218
202
|
display: flex;
|
|
219
203
|
align-items: center;
|
|
220
204
|
justify-content: center;
|
|
205
|
+
align-self: flex-start;
|
|
206
|
+
flex-shrink: 0;
|
|
221
207
|
border-radius: var(--rel-borders-radius-border-radius-100);
|
|
222
|
-
color: var(--rel-
|
|
208
|
+
color: var(--rel-color-text-primary);
|
|
223
209
|
transition: background 0.15s ease;
|
|
224
210
|
}
|
|
225
211
|
|
|
@@ -228,11 +214,11 @@ export class RelDrawer extends LitElement {
|
|
|
228
214
|
}
|
|
229
215
|
|
|
230
216
|
.close-button:active {
|
|
231
|
-
background: var(--rel-
|
|
217
|
+
background: var(--rel-color-border-divider);
|
|
232
218
|
}
|
|
233
219
|
|
|
234
220
|
.close-button:focus-visible {
|
|
235
|
-
outline: 2px solid var(--rel-
|
|
221
|
+
outline: 2px solid var(--rel-color-border-focus);
|
|
236
222
|
outline-offset: 2px;
|
|
237
223
|
}
|
|
238
224
|
|
|
@@ -245,12 +231,9 @@ export class RelDrawer extends LitElement {
|
|
|
245
231
|
|
|
246
232
|
/* Footer */
|
|
247
233
|
.footer {
|
|
234
|
+
flex-shrink: 0;
|
|
248
235
|
padding: var(--rel-spacing-space-md) var(--rel-spacing-space-lg);
|
|
249
|
-
border-top: var(--rel-borders-width-stroke-100) solid var(--rel-
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
.footer.empty {
|
|
253
|
-
display: none;
|
|
236
|
+
border-top: var(--rel-borders-width-stroke-100) solid var(--rel-color-border-default);
|
|
254
237
|
}
|
|
255
238
|
|
|
256
239
|
/* Reduced motion */
|
|
@@ -299,7 +282,10 @@ export class RelDrawer extends LitElement {
|
|
|
299
282
|
|
|
300
283
|
if (this.modal) {
|
|
301
284
|
this.updateComplete.then(() => {
|
|
302
|
-
const focusTarget =
|
|
285
|
+
const focusTarget =
|
|
286
|
+
this.querySelector<HTMLElement>("[autofocus]") ??
|
|
287
|
+
this.querySelector<HTMLElement>(".close-button") ??
|
|
288
|
+
this.querySelector<HTMLElement>(".panel");
|
|
303
289
|
focusTarget?.focus();
|
|
304
290
|
});
|
|
305
291
|
}
|
|
@@ -356,17 +342,6 @@ export class RelDrawer extends LitElement {
|
|
|
356
342
|
document.body.style.paddingRight = this.originalBodyPaddingRight;
|
|
357
343
|
}
|
|
358
344
|
|
|
359
|
-
private focusPanel() {
|
|
360
|
-
if (!this.panelElement) return;
|
|
361
|
-
|
|
362
|
-
const focusable = this.getFocusableElements();
|
|
363
|
-
if (focusable.length > 0) {
|
|
364
|
-
focusable[0].focus();
|
|
365
|
-
} else {
|
|
366
|
-
this.panelElement.focus();
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
|
|
370
345
|
private getFocusableElements(): HTMLElement[] {
|
|
371
346
|
if (!this.panelElement) return [];
|
|
372
347
|
|
|
@@ -415,7 +390,7 @@ export class RelDrawer extends LitElement {
|
|
|
415
390
|
|
|
416
391
|
const firstFocusable = focusable[0];
|
|
417
392
|
const lastFocusable = focusable[focusable.length - 1];
|
|
418
|
-
const activeElement =
|
|
393
|
+
const activeElement = document.activeElement;
|
|
419
394
|
|
|
420
395
|
if (e.shiftKey) {
|
|
421
396
|
if (activeElement === firstFocusable) {
|
|
@@ -476,7 +451,7 @@ export class RelDrawer extends LitElement {
|
|
|
476
451
|
}
|
|
477
452
|
};
|
|
478
453
|
|
|
479
|
-
private handlePointerUp = (
|
|
454
|
+
private handlePointerUp = (_e: PointerEvent) => {
|
|
480
455
|
if (!this.isDragging) return;
|
|
481
456
|
|
|
482
457
|
this.isDragging = false;
|
|
@@ -500,7 +475,7 @@ export class RelDrawer extends LitElement {
|
|
|
500
475
|
return "";
|
|
501
476
|
}
|
|
502
477
|
|
|
503
|
-
return `transform: translateY(${this.dragOffset}px);`;
|
|
478
|
+
return `transform: translateX(-50%) translateY(${this.dragOffset}px);`;
|
|
504
479
|
}
|
|
505
480
|
|
|
506
481
|
private getOverlayStyle() {
|
|
@@ -515,17 +490,9 @@ export class RelDrawer extends LitElement {
|
|
|
515
490
|
return `opacity: ${opacity};`;
|
|
516
491
|
}
|
|
517
492
|
|
|
518
|
-
private hasSlotContent(slotName?: string): boolean {
|
|
519
|
-
const slot = this.shadowRoot?.querySelector(
|
|
520
|
-
slotName ? `slot[name="${slotName}"]` : "slot:not([name])"
|
|
521
|
-
) as HTMLSlotElement;
|
|
522
|
-
return slot ? slot.assignedElements({ flatten: true }).length > 0 : false;
|
|
523
|
-
}
|
|
524
|
-
|
|
525
493
|
render() {
|
|
526
494
|
const hasTitle = !!this.title;
|
|
527
495
|
const hasDescription = !!this.description;
|
|
528
|
-
const hasFooter = this.hasSlotContent("footer");
|
|
529
496
|
const showCloseButton = this.dismissible;
|
|
530
497
|
const hasHeader = hasTitle || hasDescription || showCloseButton;
|
|
531
498
|
|
|
@@ -536,7 +503,7 @@ export class RelDrawer extends LitElement {
|
|
|
536
503
|
<div class="drawer-container ${this.open ? "open" : ""}">
|
|
537
504
|
<div
|
|
538
505
|
part="overlay"
|
|
539
|
-
class="overlay ${this.isDragging ?
|
|
506
|
+
class="overlay ${!this.modal ? 'no-modal' : ''} ${this.isDragging ? 'dragging' : ''}"
|
|
540
507
|
style="${this.getOverlayStyle()}"
|
|
541
508
|
@click="${this.handleOverlayClick}"></div>
|
|
542
509
|
|
|
@@ -573,16 +540,7 @@ export class RelDrawer extends LitElement {
|
|
|
573
540
|
class="close-button"
|
|
574
541
|
@click="${this.handleCloseButtonClick}"
|
|
575
542
|
aria-label="Close">
|
|
576
|
-
<
|
|
577
|
-
width="16"
|
|
578
|
-
height="16"
|
|
579
|
-
viewBox="0 0 16 16"
|
|
580
|
-
fill="none"
|
|
581
|
-
xmlns="http://www.w3.org/2000/svg">
|
|
582
|
-
<path
|
|
583
|
-
d="M12.8 4.27L11.73 3.2L8 6.93L4.27 3.2L3.2 4.27L6.93 8L3.2 11.73L4.27 12.8L8 9.07L11.73 12.8L12.8 11.73L9.07 8L12.8 4.27Z"
|
|
584
|
-
fill="currentColor" />
|
|
585
|
-
</svg>
|
|
543
|
+
<rel-icon name="close" size="sm"></rel-icon>
|
|
586
544
|
</button>`
|
|
587
545
|
: ""}
|
|
588
546
|
</div>
|
|
@@ -594,11 +552,9 @@ export class RelDrawer extends LitElement {
|
|
|
594
552
|
<slot></slot>
|
|
595
553
|
</div>
|
|
596
554
|
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
</div>`
|
|
601
|
-
: ""}
|
|
555
|
+
<div part="footer" class="footer">
|
|
556
|
+
<rel-drawer-footer><slot name="footer"></slot></rel-drawer-footer>
|
|
557
|
+
</div>
|
|
602
558
|
</div>
|
|
603
559
|
</div>
|
|
604
560
|
`;
|