@dataloop-ai/components 0.18.101 → 0.18.103
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/DlButton/DlButton.vue +3 -0
- package/src/components/compound/DlSearches/DlSmartSearch/components/DlSmartSearchInput.vue +16 -1
- package/src/components/essential/DlLabel/DlLabel.vue +10 -1
- package/src/components/compound/DlSearches/DlSmartSearch/components/DlSmartSearchFilter/DlSmartSearchFilters.vue +0 -79
- package/src/components/compound/DlSearches/DlSmartSearch/components/DlSmartSearchFilter/components/FiltersQuery.vue +0 -100
- package/src/components/compound/DlSearches/DlSmartSearch/components/DlSmartSearchQueryFilters.vue +0 -124
package/package.json
CHANGED
|
@@ -300,7 +300,7 @@ export default defineComponent({
|
|
|
300
300
|
const setInputFromSuggestion = (value: string) => {
|
|
301
301
|
let stringValue = ''
|
|
302
302
|
if (searchQuery.value.length) {
|
|
303
|
-
|
|
303
|
+
let query = searchQuery.value
|
|
304
304
|
.replace(new RegExp(' ', 'g'), ' ')
|
|
305
305
|
.split(' ')
|
|
306
306
|
.map((string: string) => string.trim())
|
|
@@ -316,6 +316,14 @@ export default defineComponent({
|
|
|
316
316
|
query[query.length - 1] = query[
|
|
317
317
|
query.length - 1
|
|
318
318
|
].replace('.', '')
|
|
319
|
+
} else if (
|
|
320
|
+
value
|
|
321
|
+
.toLowerCase()
|
|
322
|
+
.startsWith(
|
|
323
|
+
query[query.length - 1].toLowerCase()
|
|
324
|
+
)
|
|
325
|
+
) {
|
|
326
|
+
query = query.slice(0, query.length - 1)
|
|
319
327
|
}
|
|
320
328
|
stringValue = [...query, value, ''].join(' ')
|
|
321
329
|
}
|
|
@@ -324,7 +332,14 @@ export default defineComponent({
|
|
|
324
332
|
query[query.length - 1] = query[
|
|
325
333
|
query.length - 1
|
|
326
334
|
].replace('.', '')
|
|
335
|
+
} else if (
|
|
336
|
+
value
|
|
337
|
+
.toLowerCase()
|
|
338
|
+
.startsWith(query[query.length - 1].toLowerCase())
|
|
339
|
+
) {
|
|
340
|
+
query = query.slice(0, query.length - 1)
|
|
327
341
|
}
|
|
342
|
+
|
|
328
343
|
stringValue = [...query, value, ''].join(' ')
|
|
329
344
|
}
|
|
330
345
|
} else {
|
|
@@ -37,7 +37,10 @@
|
|
|
37
37
|
<dl-ellipsis :text="suffixPreview" />
|
|
38
38
|
</slot>
|
|
39
39
|
</span>
|
|
40
|
-
<div
|
|
40
|
+
<div
|
|
41
|
+
v-if="hint || hasHintSlot || hasActions"
|
|
42
|
+
class="dl-label__suffix"
|
|
43
|
+
>
|
|
41
44
|
<div class="dl-label__suffix-slot">
|
|
42
45
|
<slot
|
|
43
46
|
v-if="mouseOver"
|
|
@@ -138,6 +141,11 @@ export default defineComponent({
|
|
|
138
141
|
const hasSuffixSlot = computed(() => {
|
|
139
142
|
return !!slots['suffix']
|
|
140
143
|
})
|
|
144
|
+
|
|
145
|
+
const hasHintSlot = computed(() => {
|
|
146
|
+
return !!slots['hint']
|
|
147
|
+
})
|
|
148
|
+
|
|
141
149
|
const prefixPreview = computed(() => {
|
|
142
150
|
return prefix.value?.trim() ?? ''
|
|
143
151
|
})
|
|
@@ -151,6 +159,7 @@ export default defineComponent({
|
|
|
151
159
|
styles,
|
|
152
160
|
hasActions,
|
|
153
161
|
hasSuffixSlot,
|
|
162
|
+
hasHintSlot,
|
|
154
163
|
prefixPreview,
|
|
155
164
|
suffixPreview
|
|
156
165
|
}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div
|
|
3
|
-
:id="uuid"
|
|
4
|
-
class="dl-filters-wrapper"
|
|
5
|
-
>
|
|
6
|
-
<dl-tabs
|
|
7
|
-
v-model="currentTab"
|
|
8
|
-
volatile
|
|
9
|
-
full-width
|
|
10
|
-
:items="tabItems"
|
|
11
|
-
font-size="14px"
|
|
12
|
-
/>
|
|
13
|
-
<div class="dl-filters-tabs">
|
|
14
|
-
<dl-tab-panels v-model="currentTab">
|
|
15
|
-
<dl-tab-panel
|
|
16
|
-
v-for="tab in tabItems"
|
|
17
|
-
:key="tab.name"
|
|
18
|
-
:name="tab.name"
|
|
19
|
-
>
|
|
20
|
-
<div>
|
|
21
|
-
<filters-query
|
|
22
|
-
v-for="(query, index) in filters[currentTab]"
|
|
23
|
-
:key="index"
|
|
24
|
-
:type="currentTab"
|
|
25
|
-
:name="query.name"
|
|
26
|
-
@select="$emit('filters-select', currentTab, query)"
|
|
27
|
-
@delete="$emit('filters-delete', currentTab, query)"
|
|
28
|
-
/>
|
|
29
|
-
</div>
|
|
30
|
-
</dl-tab-panel>
|
|
31
|
-
</dl-tab-panels>
|
|
32
|
-
</div>
|
|
33
|
-
</div>
|
|
34
|
-
</template>
|
|
35
|
-
|
|
36
|
-
<script lang="ts">
|
|
37
|
-
import { defineComponent, PropType } from 'vue-demi'
|
|
38
|
-
import { DlTabs } from '../../../../DlTabs'
|
|
39
|
-
import { DlTabPanels, DlTabPanel } from '../../../../DlTabPanels'
|
|
40
|
-
import { Filters } from '../../types'
|
|
41
|
-
import { getTabItems } from '../../utils'
|
|
42
|
-
import FiltersQuery from './components/FiltersQuery.vue'
|
|
43
|
-
import { v4 } from 'uuid'
|
|
44
|
-
|
|
45
|
-
export default defineComponent({
|
|
46
|
-
components: {
|
|
47
|
-
DlTabs,
|
|
48
|
-
DlTabPanels,
|
|
49
|
-
DlTabPanel,
|
|
50
|
-
FiltersQuery
|
|
51
|
-
},
|
|
52
|
-
props: {
|
|
53
|
-
filters: {
|
|
54
|
-
type: Object as PropType<Filters>,
|
|
55
|
-
default: (): Filters => ({ saved: [], recent: [], suggested: [] })
|
|
56
|
-
}
|
|
57
|
-
},
|
|
58
|
-
emits: ['filters-delete', 'filters-select'],
|
|
59
|
-
data() {
|
|
60
|
-
return {
|
|
61
|
-
uuid: `dl-smart-search-filters-${v4()}`,
|
|
62
|
-
currentTab: 'saved'
|
|
63
|
-
}
|
|
64
|
-
},
|
|
65
|
-
computed: {
|
|
66
|
-
tabItems(): { label: string; name: string }[] {
|
|
67
|
-
return getTabItems(this.filters)
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
})
|
|
71
|
-
</script>
|
|
72
|
-
<style scoped lang="scss">
|
|
73
|
-
.dl-filters-wrapper {
|
|
74
|
-
min-height: 300px;
|
|
75
|
-
}
|
|
76
|
-
.dl-filters-tabs {
|
|
77
|
-
margin-top: 5px;
|
|
78
|
-
}
|
|
79
|
-
</style>
|
|
@@ -1,100 +0,0 @@
|
|
|
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 :icon="icon" />
|
|
12
|
-
<span class="query__header--title">
|
|
13
|
-
{{ name }}
|
|
14
|
-
</span>
|
|
15
|
-
</div>
|
|
16
|
-
<div
|
|
17
|
-
v-if="actionsVisible"
|
|
18
|
-
class="query__actions"
|
|
19
|
-
>
|
|
20
|
-
<div
|
|
21
|
-
class="query__actions--icon"
|
|
22
|
-
@mousedown="$emit('delete')"
|
|
23
|
-
>
|
|
24
|
-
<dl-icon
|
|
25
|
-
:inline="false"
|
|
26
|
-
size="14px"
|
|
27
|
-
icon="icon-dl-delete"
|
|
28
|
-
/>
|
|
29
|
-
<dl-tooltip>Delete</dl-tooltip>
|
|
30
|
-
</div>
|
|
31
|
-
</div>
|
|
32
|
-
</div>
|
|
33
|
-
</template>
|
|
34
|
-
|
|
35
|
-
<script lang="ts">
|
|
36
|
-
import { defineComponent } from 'vue-demi'
|
|
37
|
-
import { DlIcon } from '../../../../../../essential'
|
|
38
|
-
import { DlTooltip } from '../../../../../../shared'
|
|
39
|
-
|
|
40
|
-
export default defineComponent({
|
|
41
|
-
components: {
|
|
42
|
-
DlIcon,
|
|
43
|
-
DlTooltip
|
|
44
|
-
},
|
|
45
|
-
props: {
|
|
46
|
-
type: {
|
|
47
|
-
type: String,
|
|
48
|
-
default: 'saved'
|
|
49
|
-
},
|
|
50
|
-
name: {
|
|
51
|
-
type: String,
|
|
52
|
-
default: ''
|
|
53
|
-
}
|
|
54
|
-
},
|
|
55
|
-
emits: ['delete', 'select'],
|
|
56
|
-
data() {
|
|
57
|
-
return {
|
|
58
|
-
actionsVisible: false
|
|
59
|
-
}
|
|
60
|
-
},
|
|
61
|
-
computed: {
|
|
62
|
-
icon(): string {
|
|
63
|
-
return this.type === 'saved' ? 'icon-dl-save' : 'icon-dl-time'
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
})
|
|
67
|
-
</script>
|
|
68
|
-
|
|
69
|
-
<style lang="scss" scoped>
|
|
70
|
-
.query {
|
|
71
|
-
height: 18px;
|
|
72
|
-
padding: 5px 10px;
|
|
73
|
-
border-radius: 3px;
|
|
74
|
-
display: flex;
|
|
75
|
-
justify-content: space-between;
|
|
76
|
-
color: var(--dl-color-darker);
|
|
77
|
-
&__header {
|
|
78
|
-
cursor: pointer;
|
|
79
|
-
display: flex;
|
|
80
|
-
align-items: center;
|
|
81
|
-
&--title {
|
|
82
|
-
font-size: 12px;
|
|
83
|
-
margin: 0px 12px;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
&__actions {
|
|
88
|
-
display: flex;
|
|
89
|
-
align-items: center;
|
|
90
|
-
&--icon {
|
|
91
|
-
cursor: pointer;
|
|
92
|
-
margin: 0px 5px;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
&:hover {
|
|
97
|
-
background-color: var(--dl-color-fill);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
</style>
|
package/src/components/compound/DlSearches/DlSmartSearch/components/DlSmartSearchQueryFilters.vue
DELETED
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
<!-- <template>
|
|
2
|
-
<dl-button
|
|
3
|
-
class="dl-smart-search__buttons--filters"
|
|
4
|
-
shaded
|
|
5
|
-
outlined
|
|
6
|
-
size="s"
|
|
7
|
-
>
|
|
8
|
-
Saved Filters
|
|
9
|
-
<dl-menu
|
|
10
|
-
v-model="filtersModel"
|
|
11
|
-
:offset="[0, 5]"
|
|
12
|
-
anchor="bottom middle"
|
|
13
|
-
self="top middle"
|
|
14
|
-
>
|
|
15
|
-
<dl-smart-search-filters
|
|
16
|
-
:filters="filters"
|
|
17
|
-
@filters-select="handleFiltersSelect"
|
|
18
|
-
@filters-delete="handleFiltersDelete"
|
|
19
|
-
/>
|
|
20
|
-
</dl-menu>
|
|
21
|
-
</dl-button>
|
|
22
|
-
</template>
|
|
23
|
-
|
|
24
|
-
<script lang="ts">
|
|
25
|
-
import {
|
|
26
|
-
defineComponent,
|
|
27
|
-
ref,
|
|
28
|
-
watch,
|
|
29
|
-
PropType,
|
|
30
|
-
toRefs,
|
|
31
|
-
computed
|
|
32
|
-
} from 'vue-demi'
|
|
33
|
-
import { DlSelect } from '../../../DlSelect'
|
|
34
|
-
import { DlSelectOption } from '../../../DlSelect/types'
|
|
35
|
-
import { DlButton } from '../../../../basic'
|
|
36
|
-
import { DlDialogBox, DlDialogBoxHeader } from '../../../DlDialogBox'
|
|
37
|
-
import { DlJsonEditor } from '../../../DlJsonEditor'
|
|
38
|
-
import { DlTypography } from '../../../../essential'
|
|
39
|
-
import { DlInput } from '../../../DlInput'
|
|
40
|
-
|
|
41
|
-
export default defineComponent({
|
|
42
|
-
components: {
|
|
43
|
-
DlDialogBox,
|
|
44
|
-
DlDialogBoxHeader,
|
|
45
|
-
DlJsonEditor,
|
|
46
|
-
DlButton,
|
|
47
|
-
DlSelect,
|
|
48
|
-
DlTypography,
|
|
49
|
-
DlInput
|
|
50
|
-
},
|
|
51
|
-
model: {
|
|
52
|
-
prop: 'modelValue',
|
|
53
|
-
event: 'update:modelValue'
|
|
54
|
-
},
|
|
55
|
-
props: {
|
|
56
|
-
modelValue: {
|
|
57
|
-
required: false,
|
|
58
|
-
type: Boolean,
|
|
59
|
-
default: false
|
|
60
|
-
},
|
|
61
|
-
json: {
|
|
62
|
-
required: true,
|
|
63
|
-
type: String
|
|
64
|
-
},
|
|
65
|
-
options: {
|
|
66
|
-
required: true,
|
|
67
|
-
type: Array as PropType<DlSelectOption[]>,
|
|
68
|
-
default: () => [] as DlSelectOption[]
|
|
69
|
-
}
|
|
70
|
-
},
|
|
71
|
-
emits: ['update:modelValue', 'search', 'update:json', 'save', 'delete'],
|
|
72
|
-
setup(props, { emit }) {
|
|
73
|
-
const { modelValue, options, json } = toRefs(props)
|
|
74
|
-
|
|
75
|
-
const isOpen = computed({
|
|
76
|
-
get: () => modelValue.value,
|
|
77
|
-
set: (val) => emit('update:modelValue', val)
|
|
78
|
-
})
|
|
79
|
-
|
|
80
|
-
const jsonEditor = ref<typeof DlJsonEditor>(null)
|
|
81
|
-
const showSaveDialog = ref(false)
|
|
82
|
-
const showDeleteDialog = ref(false)
|
|
83
|
-
const stringifiedJSON = ref(json.value)
|
|
84
|
-
const newQueryName = ref('')
|
|
85
|
-
const selectedOption = ref<DlSelectOption>(
|
|
86
|
-
options.value.find((o) => o.value === json.value) ?? {
|
|
87
|
-
label: 'New Query',
|
|
88
|
-
value: json.value
|
|
89
|
-
}
|
|
90
|
-
)
|
|
91
|
-
|
|
92
|
-
const canDelete = computed(
|
|
93
|
-
() =>
|
|
94
|
-
!options.value?.filter(
|
|
95
|
-
(q: DlSelectOption) => q.value === stringifiedJSON
|
|
96
|
-
).length
|
|
97
|
-
)
|
|
98
|
-
|
|
99
|
-
const alignJSON = () => {
|
|
100
|
-
jsonEditor.value.format()
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
const onQuerySelect = (option: DlSelectOption) => {
|
|
104
|
-
selectedOption.value = option
|
|
105
|
-
stringifiedJSON.value = option.value
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
return {
|
|
109
|
-
isOpen,
|
|
110
|
-
jsonEditor,
|
|
111
|
-
showSaveDialog,
|
|
112
|
-
stringifiedJSON,
|
|
113
|
-
selectedOption,
|
|
114
|
-
canDelete,
|
|
115
|
-
alignJSON,
|
|
116
|
-
onQuerySelect,
|
|
117
|
-
newQueryName,
|
|
118
|
-
showDeleteDialog
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
})
|
|
122
|
-
</script>
|
|
123
|
-
|
|
124
|
-
<style scoped lang="scss"></style> -->
|