@dataloop-ai/components 0.16.64 → 0.17.1
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/package.json +1 -1
- package/src/components/basic/DlAlert/DlAlert.vue +7 -8
- package/src/components/basic/DlButton/DlButton.vue +33 -11
- package/src/components/basic/DlButton/utils.ts +12 -2
- package/src/components/basic/DlChip/DlChip.vue +1 -8
- package/src/components/basic/DlPanelContainer/DlPanelContainer.vue +5 -5
- package/src/components/compound/DlCharts/charts/DlConfusionMatrix/utils.ts +6 -2
- package/src/components/compound/DlDropdownButton/DlDropdownButton.vue +21 -15
- package/src/components/compound/DlDropdownButton/components/ButtonGroup.vue +11 -9
- package/src/components/compound/DlInput/DlInput.vue +7 -7
- package/src/components/compound/DlJsonEditor/DlJsonEditor.vue +14 -14
- package/src/components/compound/DlPagination/components/PageNavigation.vue +21 -21
- package/src/components/compound/DlRange/DlRange.vue +1 -1
- package/src/components/compound/DlSearches/DlSearch/DlSearch.vue +3 -3
- package/src/components/compound/DlSearches/DlSmartSearch/DlSmartSearch.vue +132 -42
- package/src/components/compound/DlSearches/DlSmartSearch/components/DlSmartSearchFilters.vue +75 -0
- package/src/components/compound/DlSearches/DlSmartSearch/components/DlSmartSearchInput.vue +183 -173
- package/src/components/compound/DlSearches/DlSmartSearch/components/FiltersQuery.vue +101 -0
- package/src/components/compound/DlSearches/DlSmartSearch/types.ts +4 -4
- package/src/components/compound/DlSearches/DlSmartSearch/utils/highlightSyntax.ts +9 -4
- package/src/components/compound/DlSearches/DlSmartSearch/utils/utils.ts +18 -1
- package/src/components/compound/DlSelect/DlSelect.vue +3 -4
- package/src/components/compound/DlSlider/DlSlider.vue +1 -1
- package/src/components/compound/DlStepper/DlStepper.vue +2 -2
- package/src/components/compound/DlStepper/components/DlStepperFooter.vue +3 -3
- package/src/components/compound/DlStepper/components/DlStepperHeader.vue +2 -2
- package/src/components/compound/DlTabs/components/TabsWrapper.vue +1 -1
- package/src/components/compound/DlToggleButton/DlToggleButton.vue +14 -11
- package/src/components/essential/DlIcon/DlIcon.vue +1 -1
- package/src/components/essential/DlSpinner/styles/spinnerStyles.scss +1 -1
- package/src/components/essential/DlTypography/DlTypography.vue +18 -2
- package/src/components/shared/types.ts +7 -1
- package/src/demos/DlAlertDemo.vue +17 -3
- package/src/demos/DlDropdownButtonDemo.vue +4 -4
- package/src/demos/DlSearchDemo.vue +1 -1
- package/src/demos/DlStepperDemo/SimpleStepper.vue +1 -1
- package/src/demos/DlStepperDemo/steps/DataStep.vue +1 -1
- package/src/demos/SmartSearchDemo/DlSmartSearchDemo.vue +40 -75
- package/src/hooks/use-suggestions.ts +8 -3
- package/src/utils/parse-smart-query.ts +109 -1
|
@@ -4,13 +4,16 @@
|
|
|
4
4
|
:style="cssVars"
|
|
5
5
|
>
|
|
6
6
|
<div class="dl-smart-search-input__search-bar-wrapper">
|
|
7
|
-
<div
|
|
7
|
+
<div
|
|
8
|
+
ref="searchBar"
|
|
9
|
+
:class="searchBarClasses"
|
|
10
|
+
>
|
|
8
11
|
<div class="dl-smart-search-input__status-icon-wrapper">
|
|
9
12
|
<dl-icon
|
|
10
|
-
v-if="
|
|
13
|
+
v-if="!focused && (withSearchIcon || status)"
|
|
11
14
|
:icon="statusIcon"
|
|
12
15
|
:color="statusIconColor"
|
|
13
|
-
size="
|
|
16
|
+
size="16px"
|
|
14
17
|
:inline="false"
|
|
15
18
|
/>
|
|
16
19
|
</div>
|
|
@@ -18,8 +21,8 @@
|
|
|
18
21
|
<div
|
|
19
22
|
id="editor"
|
|
20
23
|
ref="input"
|
|
21
|
-
class="
|
|
22
|
-
style="
|
|
24
|
+
:class="inputClass"
|
|
25
|
+
:style="textareaStyles"
|
|
23
26
|
:placeholder="placeholder"
|
|
24
27
|
:contenteditable="!disabled"
|
|
25
28
|
@keypress="keyPress"
|
|
@@ -35,63 +38,65 @@
|
|
|
35
38
|
>
|
|
36
39
|
<dl-button
|
|
37
40
|
icon="icon-dl-close"
|
|
38
|
-
size="
|
|
41
|
+
size="12px"
|
|
39
42
|
flat
|
|
40
43
|
:disabled="disabled"
|
|
41
44
|
@mousedown="clearValue"
|
|
42
45
|
/>
|
|
43
46
|
<dl-tooltip> Clear Query </dl-tooltip>
|
|
44
47
|
</div>
|
|
45
|
-
<div
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
<dl-button
|
|
50
|
-
:icon="screenIcon"
|
|
51
|
-
size="16px"
|
|
52
|
-
flat
|
|
53
|
-
:disabled="disabled"
|
|
54
|
-
@mousedown="handleScreenBtnClick"
|
|
55
|
-
/>
|
|
56
|
-
<dl-tooltip>
|
|
57
|
-
{{ expanded ? 'Collapse' : 'Expand' }} Smart Search
|
|
58
|
-
</dl-tooltip>
|
|
59
|
-
</div>
|
|
60
|
-
<div
|
|
61
|
-
v-if="withSaveButton"
|
|
62
|
-
class="dl-smart-search-input__save-btn-wrapper"
|
|
63
|
-
>
|
|
64
|
-
<dl-button
|
|
65
|
-
icon="icon-dl-save"
|
|
66
|
-
size="16px"
|
|
67
|
-
flat
|
|
68
|
-
:disabled="saveStatus"
|
|
69
|
-
@click="save"
|
|
48
|
+
<div class="dl-smart-search-input__toolbar--right">
|
|
49
|
+
<div
|
|
50
|
+
v-if="withScreenButton"
|
|
51
|
+
class="dl-smart-search-input__screen-btn-wrapper"
|
|
70
52
|
>
|
|
71
|
-
<dl-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
53
|
+
<dl-button
|
|
54
|
+
:icon="screenIcon"
|
|
55
|
+
size="16px"
|
|
56
|
+
flat
|
|
57
|
+
:disabled="disabled"
|
|
58
|
+
@mousedown="handleScreenButtonClick"
|
|
59
|
+
/>
|
|
60
|
+
<dl-tooltip>
|
|
61
|
+
{{ expanded ? 'Collapse' : 'Expand' }} Smart
|
|
62
|
+
Search
|
|
63
|
+
</dl-tooltip>
|
|
64
|
+
</div>
|
|
65
|
+
<div
|
|
66
|
+
v-if="withSaveButton"
|
|
67
|
+
class="dl-smart-search-input__save-btn-wrapper"
|
|
82
68
|
>
|
|
83
|
-
<dl-
|
|
84
|
-
|
|
69
|
+
<dl-button
|
|
70
|
+
icon="icon-dl-save"
|
|
71
|
+
size="16px"
|
|
72
|
+
flat
|
|
73
|
+
:disabled="saveStatus"
|
|
74
|
+
@click="save"
|
|
75
|
+
>
|
|
76
|
+
<dl-tooltip> Save Query </dl-tooltip>
|
|
77
|
+
</dl-button>
|
|
78
|
+
<dl-button
|
|
79
|
+
icon="icon-dl-edit"
|
|
80
|
+
size="16px"
|
|
81
|
+
flat
|
|
82
|
+
transform="none"
|
|
83
|
+
text-color="dl-color-darker"
|
|
84
|
+
uppercase
|
|
85
|
+
label="DQL"
|
|
86
|
+
@click="edit"
|
|
87
|
+
>
|
|
88
|
+
<dl-tooltip> Switch to DQL </dl-tooltip>
|
|
89
|
+
</dl-button>
|
|
90
|
+
</div>
|
|
85
91
|
</div>
|
|
86
92
|
</div>
|
|
87
93
|
</div>
|
|
88
94
|
<label
|
|
89
|
-
v-if="
|
|
95
|
+
v-if="!focused"
|
|
90
96
|
ref="label"
|
|
91
97
|
class="dl-smart-search-input__search-label"
|
|
92
|
-
for="search-input"
|
|
93
98
|
:style="labelStyles"
|
|
94
|
-
>{{ status.message }}</label>
|
|
99
|
+
>{{ status ? status.message : null }}</label>
|
|
95
100
|
</div>
|
|
96
101
|
<div :class="messageClasses">
|
|
97
102
|
{{ message }}
|
|
@@ -117,7 +122,7 @@
|
|
|
117
122
|
</div>
|
|
118
123
|
</template>
|
|
119
124
|
<script lang="ts">
|
|
120
|
-
import { defineComponent, ref, PropType
|
|
125
|
+
import { defineComponent, ref, PropType } from 'vue-demi'
|
|
121
126
|
import { DlButton } from '../../../../basic'
|
|
122
127
|
import { DlDatePicker } from '../../../DlDateTime'
|
|
123
128
|
import { DlMenu, DlIcon } from '../../../../essential'
|
|
@@ -201,6 +206,14 @@ export default defineComponent({
|
|
|
201
206
|
disabled: {
|
|
202
207
|
type: Boolean,
|
|
203
208
|
default: false
|
|
209
|
+
},
|
|
210
|
+
searchBarWidth: {
|
|
211
|
+
type: String,
|
|
212
|
+
default: 'auto'
|
|
213
|
+
},
|
|
214
|
+
defaultWidth: {
|
|
215
|
+
type: String,
|
|
216
|
+
default: '450px'
|
|
204
217
|
}
|
|
205
218
|
},
|
|
206
219
|
emits: [
|
|
@@ -221,6 +234,7 @@ export default defineComponent({
|
|
|
221
234
|
const focused = ref(false)
|
|
222
235
|
const isOverflow = ref(false)
|
|
223
236
|
const isTyping = ref(false)
|
|
237
|
+
const scroll = ref(false)
|
|
224
238
|
|
|
225
239
|
const { hasEllipsis } = useSizeObserver(input)
|
|
226
240
|
|
|
@@ -257,16 +271,28 @@ export default defineComponent({
|
|
|
257
271
|
emit('update:modelValue', stringValue)
|
|
258
272
|
}
|
|
259
273
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
274
|
+
return {
|
|
275
|
+
input,
|
|
276
|
+
label,
|
|
277
|
+
hasEllipsis,
|
|
278
|
+
suggestionModal,
|
|
279
|
+
setInputValue,
|
|
280
|
+
menuOffset,
|
|
281
|
+
cancelBlur,
|
|
282
|
+
expanded,
|
|
283
|
+
styledTexarea,
|
|
284
|
+
styledInput,
|
|
285
|
+
datePickerSelection,
|
|
286
|
+
isDatePickerVisible,
|
|
287
|
+
focused,
|
|
288
|
+
isOverflow,
|
|
289
|
+
isTyping,
|
|
290
|
+
scroll
|
|
291
|
+
}
|
|
292
|
+
},
|
|
293
|
+
computed: {
|
|
294
|
+
statusIcon(): string {
|
|
295
|
+
switch (this.status.type) {
|
|
270
296
|
case 'success':
|
|
271
297
|
return 'icon-dl-approve-filled'
|
|
272
298
|
case 'error':
|
|
@@ -276,10 +302,9 @@ export default defineComponent({
|
|
|
276
302
|
default:
|
|
277
303
|
return ''
|
|
278
304
|
}
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
switch (props.status?.type) {
|
|
305
|
+
},
|
|
306
|
+
statusIconColor(): string {
|
|
307
|
+
switch (this.status.type) {
|
|
283
308
|
case 'success':
|
|
284
309
|
return 'dl-color-positive'
|
|
285
310
|
case 'error':
|
|
@@ -289,89 +314,79 @@ export default defineComponent({
|
|
|
289
314
|
default:
|
|
290
315
|
return ''
|
|
291
316
|
}
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
317
|
+
},
|
|
318
|
+
screenIcon(): string {
|
|
319
|
+
return this.expanded
|
|
320
|
+
? 'icon-dl-fit-to-screen'
|
|
321
|
+
: 'icon-dl-full-screen'
|
|
322
|
+
},
|
|
323
|
+
textareaStyles(): Record<string, any> {
|
|
324
|
+
const overflow: string =
|
|
325
|
+
this.scroll && this.focused ? 'scroll' : 'hidden'
|
|
326
|
+
return {
|
|
327
|
+
overflow,
|
|
328
|
+
'-webkit-appearance': 'textfield'
|
|
329
|
+
}
|
|
330
|
+
},
|
|
331
|
+
searchBarClasses(): string {
|
|
299
332
|
let classes = 'dl-smart-search-input__search-bar'
|
|
300
333
|
|
|
301
|
-
if (focused
|
|
334
|
+
if (this.focused) {
|
|
302
335
|
classes += ' dl-smart-search-input__search-bar--focused'
|
|
303
|
-
} else {
|
|
304
|
-
if (
|
|
336
|
+
} else if (!this.focused) {
|
|
337
|
+
if (this.status.type === 'error') {
|
|
305
338
|
classes += ' dl-smart-search-input__search-bar--error'
|
|
306
|
-
} else if (
|
|
339
|
+
} else if (this.status.type === 'warning') {
|
|
307
340
|
classes += ' dl-smart-search-input__search-bar--warning'
|
|
308
341
|
}
|
|
309
342
|
}
|
|
310
343
|
|
|
311
|
-
if (expanded) {
|
|
344
|
+
if (this.expanded) {
|
|
312
345
|
classes += ' dl-smart-search-input__search-bar--expanded'
|
|
313
346
|
}
|
|
314
347
|
|
|
315
|
-
if (
|
|
348
|
+
if (this.disabled) {
|
|
316
349
|
classes += ' dl-smart-search-input__search-bar--disabled'
|
|
317
350
|
}
|
|
318
351
|
|
|
319
352
|
return classes
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
const messageClasses = computed(() => {
|
|
353
|
+
},
|
|
354
|
+
inputClass(): string {
|
|
355
|
+
return `dl-smart-search-input__textarea${
|
|
356
|
+
this.focused ? ' focus' : ''
|
|
357
|
+
}`
|
|
358
|
+
},
|
|
359
|
+
messageClasses(): string {
|
|
329
360
|
let classes = 'dl-smart-search-input__message'
|
|
330
361
|
|
|
331
|
-
if (
|
|
332
|
-
classes += ` dl-smart-search-input__message--${
|
|
362
|
+
if (this.status) {
|
|
363
|
+
classes += ` dl-smart-search-input__message--${this.status}`
|
|
333
364
|
}
|
|
334
365
|
|
|
335
366
|
return classes
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
const cssVars = computed(() => {
|
|
367
|
+
},
|
|
368
|
+
withClearBtn(): boolean {
|
|
369
|
+
return this.modelValue.length > 0
|
|
370
|
+
},
|
|
371
|
+
cssVars(): Record<string, string> {
|
|
343
372
|
return {
|
|
344
373
|
'--dl-smart-search-bar-wrapper-height':
|
|
345
|
-
|
|
346
|
-
'--dl-smart-search-input-height':
|
|
374
|
+
this.expandedInputHeight,
|
|
375
|
+
'--dl-smart-search-input-height': this.inputHeight,
|
|
376
|
+
'--search-bar-width': this.searchBarWidth
|
|
377
|
+
}
|
|
378
|
+
},
|
|
379
|
+
saveStatus(): boolean {
|
|
380
|
+
return (
|
|
381
|
+
this.disabled ||
|
|
382
|
+
!this.modelValue ||
|
|
383
|
+
this.status.type === 'error'
|
|
384
|
+
)
|
|
385
|
+
},
|
|
386
|
+
labelStyles(): Record<string, any> {
|
|
387
|
+
return {
|
|
388
|
+
color: this.status?.type === 'error' ? 'red' : 'gray'
|
|
347
389
|
}
|
|
348
|
-
})
|
|
349
|
-
|
|
350
|
-
return {
|
|
351
|
-
input,
|
|
352
|
-
label,
|
|
353
|
-
hasEllipsis,
|
|
354
|
-
suggestionModal,
|
|
355
|
-
setInputValue,
|
|
356
|
-
menuOffset,
|
|
357
|
-
cancelBlur,
|
|
358
|
-
expanded,
|
|
359
|
-
styledTexarea,
|
|
360
|
-
styledInput,
|
|
361
|
-
datePickerSelection,
|
|
362
|
-
isDatePickerVisible,
|
|
363
|
-
focused,
|
|
364
|
-
isOverflow,
|
|
365
|
-
isTyping,
|
|
366
|
-
saveStatus,
|
|
367
|
-
statusIcon,
|
|
368
|
-
statusIconColor,
|
|
369
|
-
screenIcon,
|
|
370
|
-
searchBarClasses,
|
|
371
|
-
labelStyles,
|
|
372
|
-
messageClasses,
|
|
373
|
-
withClearBtn,
|
|
374
|
-
cssVars
|
|
375
390
|
}
|
|
376
391
|
},
|
|
377
392
|
watch: {
|
|
@@ -394,6 +409,7 @@ export default defineComponent({
|
|
|
394
409
|
this.isDatePickerVisible = true
|
|
395
410
|
this.suggestionModal = false
|
|
396
411
|
}
|
|
412
|
+
this.scroll = (this.$refs.input as HTMLDivElement).offsetHeight > 40
|
|
397
413
|
},
|
|
398
414
|
suggestions(val) {
|
|
399
415
|
if (this.isDatePickerVisible) return
|
|
@@ -420,6 +436,15 @@ export default defineComponent({
|
|
|
420
436
|
this.focus()
|
|
421
437
|
})
|
|
422
438
|
},
|
|
439
|
+
focused(value) {
|
|
440
|
+
(this.$refs.searchBar as HTMLElement).style.maxHeight = `${
|
|
441
|
+
value ? parseInt(this.searchBarWidth) : 450
|
|
442
|
+
}px`
|
|
443
|
+
if (!value) {
|
|
444
|
+
(this.$refs.input as HTMLElement).parentElement.style.width =
|
|
445
|
+
'1px'
|
|
446
|
+
}
|
|
447
|
+
},
|
|
423
448
|
isDatePickerVisible(val: boolean) {
|
|
424
449
|
if (!val) {
|
|
425
450
|
this.datePickerSelection = null
|
|
@@ -508,7 +533,7 @@ export default defineComponent({
|
|
|
508
533
|
|
|
509
534
|
this.$emit('update:modelValue', text)
|
|
510
535
|
},
|
|
511
|
-
|
|
536
|
+
handleScreenButtonClick() {
|
|
512
537
|
this.cancelBlur = this.cancelBlur === 0 ? 1 : this.cancelBlur
|
|
513
538
|
this.expanded = !this.expanded
|
|
514
539
|
if (!this.focused) {
|
|
@@ -530,6 +555,8 @@ export default defineComponent({
|
|
|
530
555
|
.dl-smart-search-input {
|
|
531
556
|
display: flex;
|
|
532
557
|
text-align: left;
|
|
558
|
+
position: absolute;
|
|
559
|
+
width: var(--search-bar-width);
|
|
533
560
|
|
|
534
561
|
&__char {
|
|
535
562
|
::selection {
|
|
@@ -547,7 +574,7 @@ export default defineComponent({
|
|
|
547
574
|
&__search-bar {
|
|
548
575
|
display: flex;
|
|
549
576
|
flex-grow: 1;
|
|
550
|
-
height:
|
|
577
|
+
height: 100%;
|
|
551
578
|
padding: 0 10px;
|
|
552
579
|
overflow-y: auto;
|
|
553
580
|
background-color: var(--dl-color-panel-background);
|
|
@@ -558,7 +585,7 @@ export default defineComponent({
|
|
|
558
585
|
border: 1px solid var(--dl-color-separator);
|
|
559
586
|
border-radius: 2px;
|
|
560
587
|
|
|
561
|
-
max-height:
|
|
588
|
+
max-height: var(--dl-smart-search-bar-wrapper-height);
|
|
562
589
|
|
|
563
590
|
&--error {
|
|
564
591
|
border-color: var(--dl-color-negative);
|
|
@@ -589,45 +616,15 @@ export default defineComponent({
|
|
|
589
616
|
|
|
590
617
|
&__status-icon-wrapper {
|
|
591
618
|
display: flex;
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
font-size: 12px;
|
|
599
|
-
line-height: 14px;
|
|
600
|
-
font-weight: 400;
|
|
601
|
-
font-family: 'Roboto', sans-serif;
|
|
602
|
-
width: 100%;
|
|
603
|
-
border: none;
|
|
604
|
-
outline: none;
|
|
605
|
-
|
|
606
|
-
position: absolute;
|
|
607
|
-
width: 100%;
|
|
608
|
-
font-size: inherit;
|
|
609
|
-
font-family: inherit;
|
|
610
|
-
|
|
611
|
-
height: 14px;
|
|
612
|
-
overflow-y: hidden;
|
|
613
|
-
overflow-x: auto;
|
|
614
|
-
white-space: nowrap;
|
|
615
|
-
user-select: none;
|
|
616
|
-
|
|
617
|
-
-ms-overflow-style: none; /* IE and Edge */
|
|
618
|
-
scrollbar-width: none; /* Firefox */
|
|
619
|
-
&::-webkit-scrollbar {
|
|
620
|
-
display: none;
|
|
621
|
-
}
|
|
622
|
-
&:not(:focus) {
|
|
623
|
-
width: 100%;
|
|
624
|
-
text-overflow: ellipsis;
|
|
619
|
+
line-height: 15px;
|
|
620
|
+
margin: 6px 8px 0px 0px;
|
|
621
|
+
align-items: flex-start;
|
|
622
|
+
div:first-child {
|
|
623
|
+
display: flex;
|
|
624
|
+
align-items: center;
|
|
625
625
|
}
|
|
626
|
-
|
|
627
|
-
caret-color: var(--dl-color-tooltip-background);
|
|
628
626
|
}
|
|
629
627
|
|
|
630
|
-
&__input,
|
|
631
628
|
&__text,
|
|
632
629
|
&__textarea {
|
|
633
630
|
width: 100%;
|
|
@@ -637,28 +634,28 @@ export default defineComponent({
|
|
|
637
634
|
|
|
638
635
|
&__textarea {
|
|
639
636
|
font-size: 12px;
|
|
640
|
-
line-height: 14px;
|
|
641
637
|
font-weight: 400;
|
|
638
|
+
line-height: 14px;
|
|
642
639
|
font-family: 'Roboto', sans-serif;
|
|
643
640
|
width: 100%;
|
|
644
641
|
border: none;
|
|
645
642
|
outline: none;
|
|
646
643
|
resize: none;
|
|
647
644
|
|
|
645
|
+
white-space: pre;
|
|
646
|
+
margin-top: 7px;
|
|
647
|
+
|
|
648
648
|
height: auto;
|
|
649
|
+
|
|
649
650
|
min-height: 14px;
|
|
650
651
|
max-height: 100%;
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
word-break: break-all;
|
|
654
|
-
flex-wrap: wrap;
|
|
652
|
+
display: block;
|
|
655
653
|
}
|
|
656
654
|
|
|
657
655
|
&__input,
|
|
658
656
|
&__textarea {
|
|
659
657
|
color: var(--dl-color-darker);
|
|
660
658
|
background-color: var(--dl-color-panel-background);
|
|
661
|
-
padding: 0;
|
|
662
659
|
|
|
663
660
|
::placeholder {
|
|
664
661
|
color: var(--dl-color-lighter);
|
|
@@ -670,10 +667,10 @@ export default defineComponent({
|
|
|
670
667
|
|
|
671
668
|
&__input-wrapper,
|
|
672
669
|
&__textarea-wrapper {
|
|
670
|
+
min-height: 28px;
|
|
673
671
|
position: relative;
|
|
674
672
|
display: flex;
|
|
675
673
|
flex-grow: 1;
|
|
676
|
-
padding: 6px 10px 6px 0;
|
|
677
674
|
position: relative;
|
|
678
675
|
|
|
679
676
|
align-items: flex-start;
|
|
@@ -686,14 +683,22 @@ export default defineComponent({
|
|
|
686
683
|
|
|
687
684
|
&__toolbar {
|
|
688
685
|
display: flex;
|
|
689
|
-
|
|
686
|
+
align-items: flex-start;
|
|
687
|
+
height: 28px;
|
|
688
|
+
&--right {
|
|
689
|
+
height: 100%;
|
|
690
|
+
display: flex;
|
|
691
|
+
}
|
|
690
692
|
}
|
|
691
693
|
|
|
692
694
|
&__clear-btn-wrapper {
|
|
693
695
|
border-right: 1px solid var(--dl-color-separator);
|
|
694
|
-
|
|
696
|
+
height: 100%;
|
|
695
697
|
display: flex;
|
|
696
698
|
align-items: center;
|
|
699
|
+
div:first-child {
|
|
700
|
+
margin-right: 5px;
|
|
701
|
+
}
|
|
697
702
|
::v-deep .dl-button {
|
|
698
703
|
padding: 0px;
|
|
699
704
|
color: var(--dl-color-darker);
|
|
@@ -702,8 +707,9 @@ export default defineComponent({
|
|
|
702
707
|
|
|
703
708
|
&__screen-btn-wrapper {
|
|
704
709
|
display: flex;
|
|
710
|
+
margin-right: 14px;
|
|
705
711
|
align-items: center;
|
|
706
|
-
|
|
712
|
+
margin-left: 9px;
|
|
707
713
|
::v-deep .dl-icon {
|
|
708
714
|
font-size: 16px;
|
|
709
715
|
color: var(--dl-color-darker);
|
|
@@ -747,9 +753,8 @@ export default defineComponent({
|
|
|
747
753
|
}
|
|
748
754
|
|
|
749
755
|
&__search-label {
|
|
756
|
+
margin-top: 3px;
|
|
750
757
|
font-size: 10px;
|
|
751
|
-
margin-left: 4px;
|
|
752
|
-
margin-top: 4px;
|
|
753
758
|
color: gray;
|
|
754
759
|
position: relative;
|
|
755
760
|
word-break: break-all;
|
|
@@ -759,4 +764,9 @@ export default defineComponent({
|
|
|
759
764
|
width: 562px;
|
|
760
765
|
}
|
|
761
766
|
}
|
|
767
|
+
.focus {
|
|
768
|
+
word-break: break-all;
|
|
769
|
+
flex-wrap: wrap;
|
|
770
|
+
white-space: pre-wrap;
|
|
771
|
+
}
|
|
762
772
|
</style>
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div
|
|
3
|
+
class="query"
|
|
4
|
+
@mouseenter="actionsVisible = true"
|
|
5
|
+
@mouseleave="actionsVisible = false"
|
|
6
|
+
>
|
|
7
|
+
<div
|
|
8
|
+
class="query__header"
|
|
9
|
+
@mousedown="$emit('select')"
|
|
10
|
+
>
|
|
11
|
+
<dl-icon
|
|
12
|
+
:icon="icon"
|
|
13
|
+
style="margin-bottom: 3px"
|
|
14
|
+
/>
|
|
15
|
+
<span class="query__header--title">
|
|
16
|
+
{{ name }}
|
|
17
|
+
</span>
|
|
18
|
+
</div>
|
|
19
|
+
<div
|
|
20
|
+
v-if="actionsVisible"
|
|
21
|
+
class="query__actions"
|
|
22
|
+
>
|
|
23
|
+
<div
|
|
24
|
+
class="query__actions--icon"
|
|
25
|
+
@mousedown="$emit('delete')"
|
|
26
|
+
>
|
|
27
|
+
<dl-icon
|
|
28
|
+
:inline="false"
|
|
29
|
+
size="14px"
|
|
30
|
+
icon="icon-dl-delete"
|
|
31
|
+
/>
|
|
32
|
+
<dl-tooltip>Delete</dl-tooltip>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
</template>
|
|
37
|
+
|
|
38
|
+
<script lang="ts">
|
|
39
|
+
import { defineComponent } from 'vue-demi'
|
|
40
|
+
import { DlIcon, DlTooltip } from '../../../../essential'
|
|
41
|
+
export default defineComponent({
|
|
42
|
+
components: {
|
|
43
|
+
DlIcon,
|
|
44
|
+
DlTooltip
|
|
45
|
+
},
|
|
46
|
+
props: {
|
|
47
|
+
type: {
|
|
48
|
+
type: String,
|
|
49
|
+
default: 'saved'
|
|
50
|
+
},
|
|
51
|
+
name: {
|
|
52
|
+
type: String,
|
|
53
|
+
default: ''
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
emits: ['delete', 'select'],
|
|
57
|
+
data() {
|
|
58
|
+
return {
|
|
59
|
+
actionsVisible: false
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
computed: {
|
|
63
|
+
icon(): string {
|
|
64
|
+
return this.type === 'saved' ? 'icon-dl-save' : 'icon-dl-time'
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
})
|
|
68
|
+
</script>
|
|
69
|
+
|
|
70
|
+
<style lang="scss" scoped>
|
|
71
|
+
.query {
|
|
72
|
+
height: 18px;
|
|
73
|
+
padding: 5px 10px;
|
|
74
|
+
border-radius: 3px;
|
|
75
|
+
display: flex;
|
|
76
|
+
justify-content: space-between;
|
|
77
|
+
color: var(--dl-color-darker);
|
|
78
|
+
&__header {
|
|
79
|
+
cursor: pointer;
|
|
80
|
+
display: flex;
|
|
81
|
+
align-items: center;
|
|
82
|
+
&--title {
|
|
83
|
+
font-size: 0.5em;
|
|
84
|
+
margin: 0px 12px;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
&__actions {
|
|
89
|
+
display: flex;
|
|
90
|
+
align-items: center;
|
|
91
|
+
&--icon {
|
|
92
|
+
cursor: pointer;
|
|
93
|
+
margin: 0px 5px;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
&:hover {
|
|
98
|
+
background-color: var(--dl-color-fill);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
</style>
|
|
@@ -3,10 +3,10 @@ export interface Query {
|
|
|
3
3
|
query: string | null
|
|
4
4
|
}
|
|
5
5
|
|
|
6
|
-
export interface
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
export interface Filters {
|
|
7
|
+
saved: Query[]
|
|
8
|
+
recent: Query[]
|
|
9
|
+
suggested: Query[]
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
export interface ColorSchema {
|