draft-components 2.10.3 → 3.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/css/draft-components-utilities.css +6 -7
- package/css/draft-components-variables.css +437 -0
- package/css/draft-components.css +1199 -617
- package/dist/components/alert/alert.css +163 -0
- package/dist/components/avatar/avatar.css +91 -0
- package/dist/components/avatar/avatar.js +3 -1
- package/dist/components/badge/badge.css +28 -0
- package/dist/components/breadcrumbs/breadcrumbs.css +72 -0
- package/dist/components/button/button.css +241 -0
- package/dist/components/button/button.js +3 -1
- package/dist/components/button/icon-button.js +1 -1
- package/dist/components/button-group/button-group.css +27 -0
- package/dist/components/caption/caption.css +36 -0
- package/dist/components/checkbox/checkbox.css +90 -0
- package/dist/components/checkbox/checkbox.js +3 -1
- package/dist/components/color-picker/color-picker.css +86 -0
- package/dist/components/date-picker/calendar-grid.js +2 -2
- package/dist/components/date-picker/date-helpers.js +3 -3
- package/dist/components/date-picker/date-picker.css +203 -0
- package/dist/components/date-picker/date-range.js +4 -2
- package/dist/components/date-picker/parse-min-max-props.js +3 -3
- package/dist/components/date-picker-popover/date-picker-popover.css +8 -0
- package/dist/components/date-range-picker-popover/date-range-picker-popover.css +73 -0
- package/dist/components/date-range-picker-popover/helpers.js +2 -2
- package/dist/components/dialog/dialog.css +173 -0
- package/dist/components/empty-state/empty-state.css +52 -0
- package/dist/components/file-picker/file-picker.css +74 -0
- package/dist/components/filter-buttons/filter-buttons.css +60 -0
- package/dist/components/filter-buttons/filter-buttons.js +2 -2
- package/dist/components/filtered-search/filter-item.css +30 -0
- package/dist/components/filtered-search/filter-operator-select.css +6 -0
- package/dist/components/filtered-search/filter-token.css +63 -0
- package/dist/components/filtered-search/filter-value-list.css +17 -0
- package/dist/components/filtered-search/filtered-search.css +284 -0
- package/dist/components/filtered-search/model/string-filter.js +4 -2
- package/dist/components/filtered-search/model/string-set-filter.js +4 -2
- package/dist/components/filtered-search/string-filter-input.css +12 -0
- package/dist/components/filtered-search/string-filter-item.js +4 -2
- package/dist/components/filtered-search/string-set-filter-item.js +3 -1
- package/dist/components/form-field/form-field.css +21 -0
- package/dist/components/form-field/form-field.js +3 -1
- package/dist/components/label/label.css +23 -0
- package/dist/components/menu/menu.css +87 -0
- package/dist/components/menu/menu.d.ts +4 -4
- package/dist/components/menu/menu.js +4 -4
- package/dist/components/nav-list/nav-list-item.js +1 -1
- package/dist/components/nav-list/nav-list.css +89 -0
- package/dist/components/password-input/password-input.css +49 -0
- package/dist/components/popover/popover.css +98 -0
- package/dist/components/popover/popover.js +3 -3
- package/dist/components/positioner/calc-position.js +4 -4
- package/dist/components/radio/radio.css +88 -0
- package/dist/components/segmented-control/segmented-control.css +113 -0
- package/dist/components/select/select.css +121 -0
- package/dist/components/selection-control/selection-control.css +36 -0
- package/dist/components/selection-control/selection-control.js +3 -1
- package/dist/components/slide-over/slide-over-body.css +7 -0
- package/dist/components/slide-over/slide-over-header.css +29 -0
- package/dist/components/slide-over/slide-over-header.js +5 -1
- package/dist/components/slide-over/slide-over.css +85 -0
- package/dist/components/slider/get-offset-relative-to-thumb.js +5 -5
- package/dist/components/slider/range-slider.d.ts +21 -21
- package/dist/components/slider/range-slider.js +15 -15
- package/dist/components/slider/slider-thumb.d.ts +16 -17
- package/dist/components/slider/slider-thumb.js +3 -3
- package/dist/components/slider/slider-track.js +7 -7
- package/dist/components/slider/slider.css +261 -0
- package/dist/components/slider/slider.d.ts +17 -17
- package/dist/components/slider/slider.js +2 -2
- package/dist/components/spinner/spinner.css +42 -0
- package/dist/components/spinner/spinner.js +1 -1
- package/dist/components/switch/switch.css +123 -0
- package/dist/components/table/table-head-cell.js +1 -1
- package/dist/components/table/table.css +176 -0
- package/dist/components/tabs/tab.js +1 -1
- package/dist/components/tabs/tabs.css +94 -0
- package/dist/components/tag/tag.css +390 -0
- package/dist/components/text-input/text-input.css +146 -0
- package/dist/components/textarea/textarea.css +82 -0
- package/dist/components/toast/toast.css +154 -0
- package/dist/components/toaster/toaster.css +95 -0
- package/dist/components/toaster/toaster.js +7 -3
- package/dist/components/tooltip/tooltip.css +34 -0
- package/dist/hooks/use-mount-transition.js +2 -2
- package/package.json +23 -18
- package/css/draft-components.dark.css +0 -609
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
.dc-filter-token {
|
|
2
|
+
display: inline-flex;
|
|
3
|
+
align-items: center;
|
|
4
|
+
min-width: 0;
|
|
5
|
+
color: var(--dc-filtered-search-token-color);
|
|
6
|
+
background: var(--dc-filtered-search-token-bg);
|
|
7
|
+
border-radius: 6px;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.dc-filter-token_highlighted {
|
|
11
|
+
color: var(--dc-filtered-search-token-color-selected);
|
|
12
|
+
background: var(--dc-filtered-search-token-bg-selected);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.dc-filter-token__label,
|
|
16
|
+
.dc-filter-token__button {
|
|
17
|
+
box-sizing: border-box;
|
|
18
|
+
height: 28px;
|
|
19
|
+
padding: 0;
|
|
20
|
+
font-size: 14px;
|
|
21
|
+
color: inherit;
|
|
22
|
+
cursor: pointer;
|
|
23
|
+
background: none;
|
|
24
|
+
border: none;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.dc-filter-token__label {
|
|
28
|
+
min-width: 0;
|
|
29
|
+
max-width: 100%;
|
|
30
|
+
padding: 0 4px 0 8px;
|
|
31
|
+
overflow: hidden;
|
|
32
|
+
line-height: 28px;
|
|
33
|
+
text-overflow: ellipsis;
|
|
34
|
+
white-space: nowrap;
|
|
35
|
+
border-top-left-radius: inherit;
|
|
36
|
+
border-bottom-left-radius: inherit;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.dc-filter-token__button {
|
|
40
|
+
display: inline-flex;
|
|
41
|
+
align-items: center;
|
|
42
|
+
justify-content: center;
|
|
43
|
+
width: 28px;
|
|
44
|
+
border-top-right-radius: inherit;
|
|
45
|
+
border-bottom-right-radius: inherit;
|
|
46
|
+
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.dc-filter-token__label:focus,
|
|
50
|
+
.dc-filter-token__button:focus {
|
|
51
|
+
background: var(--dc-filtered-search-token-bg-hover);
|
|
52
|
+
outline: none;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.dc-filter-token__label:hover,
|
|
56
|
+
.dc-filter-token__button:hover {
|
|
57
|
+
background: var(--dc-filtered-search-token-bg-hover) !important;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.dc-filter-token__label:focus:not(:focus-visible),
|
|
61
|
+
.dc-filter-token__button:focus:not(:focus-visible) {
|
|
62
|
+
background: none;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.dc-filter-operator-select {
|
|
66
|
+
display: grid;
|
|
67
|
+
grid-template-columns: auto 1fr;
|
|
68
|
+
grid-column-gap: 8px;
|
|
69
|
+
align-items: center;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.dc-string-filter-input {
|
|
73
|
+
box-sizing: border-box;
|
|
74
|
+
display: grid;
|
|
75
|
+
grid-template-columns: auto 1fr;
|
|
76
|
+
grid-gap: 4px 8px;
|
|
77
|
+
align-items: center;
|
|
78
|
+
padding-left: 4px;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.dc-string-filter-input__error {
|
|
82
|
+
grid-column: 1/3;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.dc-filter-value-list {
|
|
86
|
+
box-sizing: border-box;
|
|
87
|
+
max-height: 192px;
|
|
88
|
+
padding: 0;
|
|
89
|
+
margin: 0;
|
|
90
|
+
overflow-y: auto;
|
|
91
|
+
list-style: none;
|
|
92
|
+
scroll-behavior: smooth;
|
|
93
|
+
scroll-snap-type: y mandatory;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.dc-filter-value-list > li {
|
|
97
|
+
display: flex;
|
|
98
|
+
scroll-snap-align: start;
|
|
99
|
+
align-items: center;
|
|
100
|
+
min-height: 32px;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.dc-filter-popover {
|
|
104
|
+
width: 320px;
|
|
105
|
+
max-width: 100%;
|
|
106
|
+
padding: 16px;
|
|
107
|
+
font: var(--dc-text-sm);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.dc-filter-form {
|
|
111
|
+
display: block;
|
|
112
|
+
width: 100%;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.dc-filter-form__operator {
|
|
116
|
+
margin-bottom: 8px;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.dc-filter-form__value-list {
|
|
120
|
+
padding-right: 16px;
|
|
121
|
+
padding-left: 16px;
|
|
122
|
+
margin-right: -16px;
|
|
123
|
+
margin-left: -16px;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.dc-filter-form__buttons {
|
|
127
|
+
display: flex;
|
|
128
|
+
gap: 4px;
|
|
129
|
+
align-items: center;
|
|
130
|
+
justify-content: flex-end;
|
|
131
|
+
margin-top: 16px;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.dc-filtered-search {
|
|
135
|
+
--dc-filtered-search-font-size: 14px;
|
|
136
|
+
--dc-filtered-search-height: 36px;
|
|
137
|
+
--dc-filtered-search-padding-x: 12px;
|
|
138
|
+
--dc-filtered-search-border-radius: 7px;
|
|
139
|
+
--dc-filtered-search-text-color: var(--dc-control-primary-text-color);
|
|
140
|
+
--dc-filtered-search-border-color: var(--dc-control-border-color);
|
|
141
|
+
--dc-filtered-search-bg: var(--dc-control-bg);
|
|
142
|
+
--dc-filtered-search-icon-color: var(--dc-control-secondary-text-color);
|
|
143
|
+
--dc-filtered-search-focus-ring-color: var(--dc-control-primary-color);
|
|
144
|
+
--dc-filtered-search-option-color: var(--dc-control-primary-text-color);
|
|
145
|
+
--dc-filtered-search-option-bg: none;
|
|
146
|
+
--dc-filtered-search-selected-option-color: var(--dc-on-primary-color);
|
|
147
|
+
--dc-filtered-search-selected-option-bg: var(--dc-primary-color);
|
|
148
|
+
--dc-filtered-search-listbox-bg: var(--dc-white);
|
|
149
|
+
--dc-filtered-search-listbox-shadow:
|
|
150
|
+
0 0 0 1px rgb(var(--dc-black-rgb) / 7.5%),
|
|
151
|
+
0 -1px 0 0 rgb(var(--dc-black-rgb) / 5%),
|
|
152
|
+
var(--dc-shadow-lg);
|
|
153
|
+
--dc-filtered-search-token-color: var(--dc-primary-text-color);
|
|
154
|
+
--dc-filtered-search-token-color-selected: var(--dc-on-primary-color);
|
|
155
|
+
--dc-filtered-search-token-bg: var(--dc-gray-200);
|
|
156
|
+
--dc-filtered-search-token-bg-hover: rgb(var(--dc-black-rgb) / 10%);
|
|
157
|
+
--dc-filtered-search-token-bg-selected: var(--dc-primary-color);
|
|
158
|
+
|
|
159
|
+
position: relative;
|
|
160
|
+
box-sizing: border-box;
|
|
161
|
+
display: flex;
|
|
162
|
+
width: 100%;
|
|
163
|
+
font-family: var(--dc-primary-font);
|
|
164
|
+
font-size: var(--dc-filtered-search-font-size);
|
|
165
|
+
font-weight: 400;
|
|
166
|
+
line-height: 1;
|
|
167
|
+
color: var(--dc-filtered-search-text-color);
|
|
168
|
+
color-scheme: light;
|
|
169
|
+
cursor: text;
|
|
170
|
+
background: var(--dc-filtered-search-bg);
|
|
171
|
+
border: 1px solid var(--dc-filtered-search-border-color);
|
|
172
|
+
border-radius: var(--dc-filtered-search-border-radius);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.dc-filtered-search_has_focus {
|
|
176
|
+
border-color: var(--dc-filtered-search-focus-ring-color);
|
|
177
|
+
box-shadow: 0 0 0 1px var(--dc-filtered-search-focus-ring-color);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
.dc-filtered-search__icon {
|
|
181
|
+
flex-shrink: 0;
|
|
182
|
+
width: 18px;
|
|
183
|
+
height: 18px;
|
|
184
|
+
margin-top: 8px;
|
|
185
|
+
margin-left: 8px;
|
|
186
|
+
pointer-events: none;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
.dc-filtered-search__clear-button {
|
|
190
|
+
flex-shrink: 0;
|
|
191
|
+
margin-top: 1px;
|
|
192
|
+
margin-right: 1px;
|
|
193
|
+
white-space: nowrap;
|
|
194
|
+
border-radius: calc(var(--dc-filtered-search-border-radius) - 1px);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
.dc-filtered-search__clear-button:focus::after {
|
|
198
|
+
border-radius: inherit;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
.dc-filtered-search__filters {
|
|
202
|
+
display: flex;
|
|
203
|
+
flex-grow: 1;
|
|
204
|
+
flex-wrap: wrap;
|
|
205
|
+
align-items: center;
|
|
206
|
+
min-width: 0;
|
|
207
|
+
padding: 0 4px;
|
|
208
|
+
pointer-events: none;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
.dc-filtered-search__filters > * {
|
|
212
|
+
margin: 3px 2px;
|
|
213
|
+
pointer-events: all;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
.dc-filtered-search__input {
|
|
217
|
+
flex-grow: 1;
|
|
218
|
+
min-width: 0;
|
|
219
|
+
height: 28px;
|
|
220
|
+
padding: 0 8px;
|
|
221
|
+
font: inherit;
|
|
222
|
+
color: inherit;
|
|
223
|
+
-webkit-appearance: none;
|
|
224
|
+
-moz-appearance: none;
|
|
225
|
+
appearance: none;
|
|
226
|
+
background: none;
|
|
227
|
+
border: none;
|
|
228
|
+
border-radius: inherit;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
.dc-filtered-search__input::-moz-placeholder {
|
|
232
|
+
color: inherit;
|
|
233
|
+
opacity: 0.4;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
.dc-filtered-search__input::placeholder {
|
|
237
|
+
color: inherit;
|
|
238
|
+
opacity: 0.4;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
.dc-filtered-search__input:focus {
|
|
242
|
+
outline: none;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
.dc-filtered-search__list-box {
|
|
246
|
+
position: absolute;
|
|
247
|
+
top: calc(100% + 8px);
|
|
248
|
+
left: 0;
|
|
249
|
+
z-index: var(--dc-overlay-z-index);
|
|
250
|
+
box-sizing: border-box;
|
|
251
|
+
width: 100%;
|
|
252
|
+
padding: 4px;
|
|
253
|
+
margin: 0;
|
|
254
|
+
font-size: var(--dc-filtered-search-font-size);
|
|
255
|
+
list-style: none;
|
|
256
|
+
background: var(--dc-filtered-search-listbox-bg);
|
|
257
|
+
border-radius: var(--dc-filtered-search-border-radius);
|
|
258
|
+
box-shadow: var(--dc-filtered-search-listbox-shadow);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
.dc-filtered-search__list-box > [role="option"] {
|
|
262
|
+
box-sizing: border-box;
|
|
263
|
+
padding: 6px 8px;
|
|
264
|
+
color: var(--dc-filtered-search-option-color);
|
|
265
|
+
cursor: pointer;
|
|
266
|
+
border-radius: 5px;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
.dc-filtered-search__list-box > [role="option"][aria-selected="true"] {
|
|
270
|
+
color: var(--dc-filtered-search-selected-option-color);
|
|
271
|
+
background: var(--dc-filtered-search-selected-option-bg);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
.dark .dc-filtered-search,
|
|
275
|
+
.dark.dc-filtered-search {
|
|
276
|
+
--dc-filtered-search-listbox-bg: var(--dc-gray-800);
|
|
277
|
+
--dc-filtered-search-listbox-shadow:
|
|
278
|
+
0 0 0 1px var(--dc-gray-700),
|
|
279
|
+
var(--dc-shadow-lg);
|
|
280
|
+
--dc-filtered-search-token-bg: var(--dc-gray-700);
|
|
281
|
+
--dc-filtered-search-token-bg-hover: rgb(var(--dc-white-rgb) / 10%);
|
|
282
|
+
|
|
283
|
+
color-scheme: dark;
|
|
284
|
+
}
|
|
@@ -7,6 +7,10 @@ const OPERATORS = {
|
|
|
7
7
|
notContain: 'NOT_CONTAIN',
|
|
8
8
|
};
|
|
9
9
|
export class StringFilter extends AbstractFilter {
|
|
10
|
+
static Type = TYPE;
|
|
11
|
+
static Operators = OPERATORS;
|
|
12
|
+
config;
|
|
13
|
+
state;
|
|
10
14
|
constructor(config, state) {
|
|
11
15
|
super();
|
|
12
16
|
this.config = config;
|
|
@@ -37,5 +41,3 @@ export class StringFilter extends AbstractFilter {
|
|
|
37
41
|
return this.value === '';
|
|
38
42
|
}
|
|
39
43
|
}
|
|
40
|
-
StringFilter.Type = TYPE;
|
|
41
|
-
StringFilter.Operators = OPERATORS;
|
|
@@ -5,6 +5,10 @@ const OPERATORS = {
|
|
|
5
5
|
notIn: 'NOT_IN',
|
|
6
6
|
};
|
|
7
7
|
export class StringSetFilter extends AbstractFilter {
|
|
8
|
+
static Type = TYPE;
|
|
9
|
+
static Operators = OPERATORS;
|
|
10
|
+
config;
|
|
11
|
+
state;
|
|
8
12
|
constructor(config, state) {
|
|
9
13
|
super();
|
|
10
14
|
this.config = config;
|
|
@@ -35,5 +39,3 @@ export class StringSetFilter extends AbstractFilter {
|
|
|
35
39
|
return this.value.length === 0;
|
|
36
40
|
}
|
|
37
41
|
}
|
|
38
|
-
StringSetFilter.Type = TYPE;
|
|
39
|
-
StringSetFilter.Operators = OPERATORS;
|
|
@@ -47,7 +47,9 @@ export function StringFilterItem({ filter, isEditing, onEditStart, onEditCancel,
|
|
|
47
47
|
}
|
|
48
48
|
onChange(filter);
|
|
49
49
|
};
|
|
50
|
-
const anchor = (_jsxs(FilterToken, { isHighlighted: isEditing, onClickLabel: startEdit, onClickCloseButton: onClickCloseButton, children: [label, filter.value
|
|
50
|
+
const anchor = (_jsxs(FilterToken, { isHighlighted: isEditing, onClickLabel: startEdit, onClickCloseButton: onClickCloseButton, children: [label, filter.value
|
|
51
|
+
? (_jsxs(_Fragment, { children: ["\u00A0", _jsx("span", { children: formatOperator(filter.operator) }), "\u00A0", _jsx("b", { children: filter.value })] }))
|
|
52
|
+
: null] }));
|
|
51
53
|
return (_jsx(Popover, { className: "dc-filter-popover", anchor: anchor, anchorGap: 2, transitionDurationMs: 0, isOpen: isEditing, onClose: cancelEdit, children: _jsxs("form", { className: "dc-filter-form", onSubmit: onSubmit, children: [_jsx(FilterOperatorSelect, { className: "dc-filter-form__operator", accessibleName: operatorSelectAccessibleName, label: label, values: operators, value: filterOperator, onChange: setFilterOperator, formatValue: formatOperator }), _jsx(StringFilterInput, { placeholder: valueInputPlaceholder, accessibleName: valueInputAccessibleName, error: error, value: filterValue, onChangeValue: setFilterValue }), _jsxs("div", { className: "dc-filter-form__buttons", children: [_jsx(Button, { buttonStyle: "plain", type: "button", onClick: cancelEdit, children: translations.cancelButton }), _jsx(Button, { type: "submit", tint: "blue", disabled: !filterValue, children: translations.applyButton })] })] }) }));
|
|
52
54
|
}
|
|
53
55
|
StringFilterItem.defaultOperatorFormatter = defaultOperatorFormatter;
|
|
@@ -56,7 +58,7 @@ function defaultOperatorFormatter(operator) {
|
|
|
56
58
|
[StringFilter.Operators.equal]: 'is',
|
|
57
59
|
[StringFilter.Operators.notEqual]: 'is not',
|
|
58
60
|
[StringFilter.Operators.contain]: 'contains',
|
|
59
|
-
[StringFilter.Operators.notContain]:
|
|
61
|
+
[StringFilter.Operators.notContain]: 'doesn\'t contain',
|
|
60
62
|
};
|
|
61
63
|
return messages[operator];
|
|
62
64
|
}
|
|
@@ -40,7 +40,9 @@ export function StringSetFilterItem({ filter, isEditing, onEditStart, onEditCanc
|
|
|
40
40
|
}
|
|
41
41
|
onChange(changedFilter);
|
|
42
42
|
};
|
|
43
|
-
const anchor = (_jsxs(FilterToken, { isHighlighted: isEditing, onClickLabel: startEdit, onClickCloseButton: onClickCloseButton, children: [label, filter.value.length > 0
|
|
43
|
+
const anchor = (_jsxs(FilterToken, { isHighlighted: isEditing, onClickLabel: startEdit, onClickCloseButton: onClickCloseButton, children: [label, filter.value.length > 0
|
|
44
|
+
? (_jsxs(_Fragment, { children: ["\u00A0", _jsx("span", { children: formatOperator(filter.operator) }), "\u00A0", _jsx("b", { children: formatValues(filter.value) })] }))
|
|
45
|
+
: null] }));
|
|
44
46
|
return (_jsx(Popover, { className: "dc-filter-popover", anchor: anchor, anchorGap: 2, transitionDurationMs: 0, isOpen: isEditing, onClose: cancelEdit, children: _jsxs("form", { className: "dc-filter-form", onSubmit: onSubmit, children: [_jsx(FilterOperatorSelect, { className: "dc-filter-form__operator", accessibleName: operatorSelectAccessibleName, label: label, values: operators, value: filterOperator, onChange: setFilterOperator, formatValue: formatOperator }), _jsx(FilterValueList, { className: "dc-filter-form__value-list", values: values, checkedValues: filterValue, onChangeCheckedValues: setFilterValue, formatValue: formatValue }), _jsxs("div", { className: "dc-filter-form__buttons", children: [_jsx(Button, { type: "button", buttonStyle: "plain", onClick: cancelEdit, children: translations.cancelButton }), _jsx(Button, { type: "submit", tint: "blue", disabled: filterValue.length < 1, children: translations.applyButton })] })] }) }));
|
|
45
47
|
}
|
|
46
48
|
StringSetFilterItem.defaultValueFormatter = defaultValueFormatter;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
.dc-form-field {
|
|
2
|
+
display: block;
|
|
3
|
+
min-width: 0;
|
|
4
|
+
text-align: left;
|
|
5
|
+
color-scheme: light;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.dc-form-field__label {
|
|
9
|
+
margin-bottom: 4px;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.dc-form-field__error,
|
|
13
|
+
.dc-form-field__hint {
|
|
14
|
+
display: block;
|
|
15
|
+
margin-top: 4px;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.dark .dc-form-field,
|
|
19
|
+
.dark.dc-form-field {
|
|
20
|
+
color-scheme: dark;
|
|
21
|
+
}
|
|
@@ -33,5 +33,7 @@ export function FormField({ required = false, labelFor = '', label, error, hint,
|
|
|
33
33
|
else {
|
|
34
34
|
inputElement = children;
|
|
35
35
|
}
|
|
36
|
-
return (_jsxs("div", { ...props, className: classNames('dc-form-field', className), children: [label
|
|
36
|
+
return (_jsxs("div", { ...props, className: classNames('dc-form-field', className), children: [label
|
|
37
|
+
? (_jsx(Label, { className: "dc-form-field__label", required: required, htmlFor: inputId, children: label }))
|
|
38
|
+
: null, _jsx("div", { className: "dc-form-field__input", children: inputElement }), errorElement, hintElement] }));
|
|
37
39
|
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
.dc-label {
|
|
2
|
+
--dc-label-text-color: var(--dc-primary-text-color);
|
|
3
|
+
--dc-label-required-mark-color: #dc2626;
|
|
4
|
+
|
|
5
|
+
display: inline-block;
|
|
6
|
+
font: var(--dc-text-sm);
|
|
7
|
+
font-weight: 500;
|
|
8
|
+
color: var(--dc-label-text-color);
|
|
9
|
+
color-scheme: light;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.dc-label_required::after {
|
|
13
|
+
padding-left: 0.25em;
|
|
14
|
+
color: var(--dc-label-required-mark-color);
|
|
15
|
+
content: "*";
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.dark .dc-label,
|
|
19
|
+
.dark.dc-label {
|
|
20
|
+
--dc-label-required-mark-color: #f87171;
|
|
21
|
+
|
|
22
|
+
color-scheme: dark;
|
|
23
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
.dc-menu {
|
|
2
|
+
--dc-menu-item-icon-gap: 8px;
|
|
3
|
+
--dc-menu-item-color: var(--dc-button-gray-plain-text-color);
|
|
4
|
+
--dc-menu-item-bg: var(--dc-button-gray-bg-hover);
|
|
5
|
+
--dc-menu-item-color-destructive: var(--dc-button-red-plain-text-color);
|
|
6
|
+
--dc-menu-item-bg-destructive: var(--dc-button-red-plain-bg-hover);
|
|
7
|
+
--dc-menu-separator-color: var(--dc-bg-transparent-2);
|
|
8
|
+
|
|
9
|
+
box-sizing: border-box;
|
|
10
|
+
width: 100%;
|
|
11
|
+
padding: 0;
|
|
12
|
+
margin: 0;
|
|
13
|
+
list-style: none;
|
|
14
|
+
color-scheme: light;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.dc-menu__container {
|
|
18
|
+
min-width: 160px;
|
|
19
|
+
padding: 4px;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.dc-menu__separator {
|
|
23
|
+
box-sizing: border-box;
|
|
24
|
+
height: 1px;
|
|
25
|
+
margin: 4px 8px;
|
|
26
|
+
background: var(--dc-menu-separator-color);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.dc-menu-btn {
|
|
30
|
+
display: flex;
|
|
31
|
+
align-items: center;
|
|
32
|
+
width: 100%;
|
|
33
|
+
height: 32px;
|
|
34
|
+
padding: 0 12px;
|
|
35
|
+
font: var(--dc-text-sm);
|
|
36
|
+
color: var(--dc-menu-item-color);
|
|
37
|
+
text-align: left;
|
|
38
|
+
white-space: nowrap;
|
|
39
|
+
-webkit-appearance: none;
|
|
40
|
+
-moz-appearance: none;
|
|
41
|
+
appearance: none;
|
|
42
|
+
-webkit-user-select: none;
|
|
43
|
+
-moz-user-select: none;
|
|
44
|
+
user-select: none;
|
|
45
|
+
background: transparent;
|
|
46
|
+
border: none;
|
|
47
|
+
border-radius: 6px;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.dc-menu-btn:hover {
|
|
51
|
+
cursor: pointer;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.dc-menu-btn:focus {
|
|
55
|
+
background: var(--dc-menu-item-bg);
|
|
56
|
+
outline: none;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.dc-menu-btn:disabled {
|
|
60
|
+
cursor: default;
|
|
61
|
+
opacity: var(--dc-disabled-state-opacity);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.dc-menu-btn__label {
|
|
65
|
+
flex-grow: 1;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.dc-menu-btn__label_gap_left {
|
|
69
|
+
padding-left: var(--dc-menu-item-icon-gap);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.dc-menu-btn__label_gap_right {
|
|
73
|
+
padding-right: var(--dc-menu-item-icon-gap);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.dc-menu-btn_destructive {
|
|
77
|
+
color: var(--dc-menu-item-color-destructive);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.dc-menu-btn_destructive:focus {
|
|
81
|
+
background: var(--dc-menu-item-bg-destructive);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.dark .dc-menu,
|
|
85
|
+
.dark.dc-menu {
|
|
86
|
+
color-scheme: dark;
|
|
87
|
+
}
|
|
@@ -4,13 +4,13 @@ import { PopoverAlignment, PopoverPlacement } from '../popover/index.js';
|
|
|
4
4
|
import { MenuItemProps } from './menu-item.js';
|
|
5
5
|
import { MenuSeparator } from './menu-separator.js';
|
|
6
6
|
export type MenuButtonRenderFn = (props: {
|
|
7
|
-
ref: RefCallback<HTMLElement>;
|
|
8
|
-
id: string;
|
|
7
|
+
'ref': RefCallback<HTMLElement>;
|
|
8
|
+
'id': string;
|
|
9
9
|
'aria-haspopup': true;
|
|
10
10
|
'aria-expanded': boolean;
|
|
11
11
|
'aria-controls': string;
|
|
12
|
-
onClick: MouseEventHandler;
|
|
13
|
-
onKeyDown: KeyboardEventHandler;
|
|
12
|
+
'onClick': MouseEventHandler;
|
|
13
|
+
'onKeyDown': KeyboardEventHandler;
|
|
14
14
|
}, context: {
|
|
15
15
|
isOpen: boolean;
|
|
16
16
|
openMenu: () => void;
|
|
@@ -89,10 +89,10 @@ export function Menu({ defaultIsOpen = false, placement = 'bottom', alignment =
|
|
|
89
89
|
event.stopPropagation();
|
|
90
90
|
};
|
|
91
91
|
const handleButtonKeyDown = (event) => {
|
|
92
|
-
if (event.key === KeyboardKeys.ArrowUp
|
|
93
|
-
event.key === KeyboardKeys.ArrowDown
|
|
94
|
-
event.key === KeyboardKeys.Enter
|
|
95
|
-
event.key === KeyboardKeys.Space) {
|
|
92
|
+
if (event.key === KeyboardKeys.ArrowUp
|
|
93
|
+
|| event.key === KeyboardKeys.ArrowDown
|
|
94
|
+
|| event.key === KeyboardKeys.Enter
|
|
95
|
+
|| event.key === KeyboardKeys.Space) {
|
|
96
96
|
openMenu();
|
|
97
97
|
window.setTimeout(event.key === KeyboardKeys.ArrowUp
|
|
98
98
|
? focusLastMenuItem
|
|
@@ -3,7 +3,7 @@ import { classNames } from '../../lib/react-helpers.js';
|
|
|
3
3
|
import { Badge } from '../badge/index.js';
|
|
4
4
|
export function NavListItem({ className, icon, badge, children, renderAs, ...props }) {
|
|
5
5
|
className = classNames(className, 'dc-nav-link');
|
|
6
|
-
children = (_jsxs(_Fragment, { children: [icon != null && _jsxs("div", { className: "dc-nav-link__icon", children: [icon,
|
|
6
|
+
children = (_jsxs(_Fragment, { children: [icon != null && (_jsxs("div", { className: "dc-nav-link__icon", children: [icon, ' '] })), _jsx("div", { className: "dc-nav-link__text", children: children }), badge != null && (_jsxs(_Fragment, { children: ["\u00A0", _jsx(Badge, { className: "dc-nav-link__badge", children: badge })] }))] }));
|
|
7
7
|
let content;
|
|
8
8
|
if (typeof renderAs === 'function') {
|
|
9
9
|
content = renderAs({ className, children });
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
.dc-nav-list {
|
|
2
|
+
--dc-nav-list-title-color: var(--dc-secondary-text-color);
|
|
3
|
+
--dc-nav-link-text-color: var(--dc-primary-text-color);
|
|
4
|
+
--dc-nav-link-bg: transparent;
|
|
5
|
+
--dc-nav-link-bg-hover: var(--dc-bg-transparent-2);
|
|
6
|
+
--dc-nav-link-bg-active: var(--dc-bg-transparent-2);
|
|
7
|
+
--dc-nav-link-focus-ring-color: var(--dc-focus-ring-color);
|
|
8
|
+
|
|
9
|
+
color-scheme: light;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.dc-nav-list__items {
|
|
13
|
+
padding: 0;
|
|
14
|
+
margin: 0;
|
|
15
|
+
list-style: none;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.dc-nav-list__title,
|
|
19
|
+
.dc-nav-link {
|
|
20
|
+
box-sizing: border-box;
|
|
21
|
+
padding: 0 12px;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.dc-nav-list__title {
|
|
25
|
+
font: 500 var(--dc-text-xs);
|
|
26
|
+
color: var(--dc-nav-list-title-color);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
* + .dc-nav-list__title {
|
|
30
|
+
margin-top: 20px;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
* + .dc-nav-list__item {
|
|
34
|
+
margin-top: 2px;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.dc-nav-link {
|
|
38
|
+
display: flex;
|
|
39
|
+
align-items: center;
|
|
40
|
+
height: 36px;
|
|
41
|
+
font: var(--dc-text-sm);
|
|
42
|
+
color: var(--dc-nav-link-text-color);
|
|
43
|
+
text-decoration: none;
|
|
44
|
+
white-space: nowrap;
|
|
45
|
+
cursor: pointer;
|
|
46
|
+
border-radius: 8px;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.dc-nav-link:hover {
|
|
50
|
+
background: var(--dc-nav-link-bg-hover);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.dc-nav-link:focus {
|
|
54
|
+
outline: none;
|
|
55
|
+
box-shadow: 0 0 0 2px var(--dc-nav-link-focus-ring-color);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.dc-nav-link:focus:not(:focus-visible) {
|
|
59
|
+
box-shadow: none;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.dc-nav-link.active,
|
|
63
|
+
.dc-nav-link[aria-current="page"],
|
|
64
|
+
.dc-nav-link[aria-current="step"],
|
|
65
|
+
.dc-nav-link[aria-current="true"] {
|
|
66
|
+
background: var(--dc-nav-link-bg-active);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.dc-nav-link__icon {
|
|
70
|
+
display: inline-flex;
|
|
71
|
+
margin-right: 8px;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.dc-nav-link__text {
|
|
75
|
+
flex-grow: 1;
|
|
76
|
+
grid-area: text;
|
|
77
|
+
min-width: 0;
|
|
78
|
+
overflow: hidden;
|
|
79
|
+
text-overflow: ellipsis;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.dc-nav-link__badge {
|
|
83
|
+
margin-left: 8px;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.dark .dc-nav-list,
|
|
87
|
+
.dark.dc-nav-list {
|
|
88
|
+
color-scheme: dark;
|
|
89
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
.dc-password-input {
|
|
2
|
+
--dc-password-input-toggle-color: var(--dc-control-secondary-text-color);
|
|
3
|
+
--dc-password-input-toggle-color-hover: var(--dc-control-primary-text-color);
|
|
4
|
+
--dc-password-input-toggle-bg: none;
|
|
5
|
+
--dc-password-input-toggle-bg-hover: var(--dc-bg-transparent-2);
|
|
6
|
+
|
|
7
|
+
padding-right: 0;
|
|
8
|
+
color-scheme: light;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.dc-password-input > input {
|
|
12
|
+
padding-right: calc(var(--dc-input-padding-x) / 2);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.dc-password-input__toggle-button {
|
|
16
|
+
box-sizing: border-box;
|
|
17
|
+
display: inline-flex;
|
|
18
|
+
flex-shrink: 0;
|
|
19
|
+
align-items: center;
|
|
20
|
+
justify-content: center;
|
|
21
|
+
width: var(--dc-input-height);
|
|
22
|
+
height: 100%;
|
|
23
|
+
padding: 0;
|
|
24
|
+
color: inherit;
|
|
25
|
+
-webkit-appearance: none;
|
|
26
|
+
-moz-appearance: none;
|
|
27
|
+
appearance: none;
|
|
28
|
+
background: var(--dc-password-input-toggle-bg);
|
|
29
|
+
border: none;
|
|
30
|
+
border-radius: calc(var(--dc-input-border-radius) - 1px);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.dc-password-input__toggle-button:not(:disabled):focus,
|
|
34
|
+
.dc-password-input__toggle-button:not(:disabled):hover {
|
|
35
|
+
color: var(--dc-password-input-toggle-color-hover);
|
|
36
|
+
cursor: pointer;
|
|
37
|
+
background: var(--dc-password-input-toggle-bg-hover);
|
|
38
|
+
outline: none;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.dc-password-input__toggle-button:focus:not(:focus-visible, :hover) {
|
|
42
|
+
color: var(--dc-password-input-toggle-color);
|
|
43
|
+
background: var(--dc-password-input-toggle-bg);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.dark .dc-password-input,
|
|
47
|
+
.dark.dc-password-input {
|
|
48
|
+
color-scheme: dark;
|
|
49
|
+
}
|