@dataloop-ai/components 0.20.184 → 0.20.186-ds-v3.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/package.json +1 -1
- package/src/components/compound/DlDateTime/DlDateTimeRange/DateTimeRangeContent.vue +177 -0
- package/src/components/compound/DlDateTime/DlDateTimeRange/DlDateTimeRange.vue +101 -106
- package/src/components/compound/DlDateTime/DlDateTimeRange/types.ts +5 -0
- package/src/components/compound/DlDialogBox/DlDialogBox.vue +12 -2
- package/src/components/compound/DlDropdownButton/DlDropdownButton.vue +24 -27
- package/src/components/compound/DlInput/DlInput.vue +4 -0
- package/src/components/compound/DlSearches/DlSearch/DlSearch.vue +12 -0
- package/src/components/compound/DlSearches/DlSmartSearch/DlSmartSearch.vue +3 -8
- package/src/components/compound/DlSearches/DlSmartSearch/components/DlSmartSearchInput.vue +58 -18
- package/src/components/compound/DlSearches/DlSmartSearch/components/DlSmartSearchJsonEditorDialog.vue +187 -45
- package/src/components/compound/DlSelect/DlSelect.vue +15 -3
- package/src/components/compound/DlSelect/components/DlSelectOption.vue +7 -6
- package/src/components/compound/DlTable/DlTable.vue +13 -12
- package/src/components/compound/DlTable/hooks/use-sortable.ts +1 -2
- package/src/components/compound/DlTreeTable/DlTreeTable.vue +4 -2
- package/src/components/compound/DlTreeTable/views/DlTrTreeView.vue +1 -1
- package/src/components/essential/DlSwitch/DlSwitch.vue +14 -4
- package/src/components/shared/DlVirtualScroll/DlVirtualScroll.vue +3 -1
- package/src/demos/DlDateTimeRangeDemo.vue +20 -0
- package/src/demos/SmartSearchDemo/DlSmartSearchDemo.vue +1 -0
package/package.json
CHANGED
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="dl-date-time-range--card">
|
|
3
|
+
<div v-if="mode === 'multi'" class="dl-date-time-range--card_sidebar">
|
|
4
|
+
<card-sidebar
|
|
5
|
+
v-if="typeState === 'day'"
|
|
6
|
+
:options="sidebarDayOptions"
|
|
7
|
+
:current-option="currentSidebarOption"
|
|
8
|
+
@click="handleDayTypeOptionClick"
|
|
9
|
+
/>
|
|
10
|
+
<card-sidebar
|
|
11
|
+
v-else
|
|
12
|
+
:options="sidebarMonthOptions"
|
|
13
|
+
:current-option="currentSidebarOption"
|
|
14
|
+
@click="handleMonthTypeOptionClick"
|
|
15
|
+
/>
|
|
16
|
+
</div>
|
|
17
|
+
<div
|
|
18
|
+
class="dl-date-time-range--card_content"
|
|
19
|
+
:style="cardContentStyles"
|
|
20
|
+
>
|
|
21
|
+
<dl-date-picker
|
|
22
|
+
:model-value="dateInterval"
|
|
23
|
+
:type="typeState"
|
|
24
|
+
:available-range="availableRange"
|
|
25
|
+
:disabled="isInputDisabled"
|
|
26
|
+
:normalize-calendars="normalizeCalendars"
|
|
27
|
+
:active-date-from="activeDateFrom"
|
|
28
|
+
:active-date-to="activeDateTo"
|
|
29
|
+
@update:model-value="updateDateIntervalWithAutoClose"
|
|
30
|
+
@update:from-to-date="updateFromToDate"
|
|
31
|
+
/>
|
|
32
|
+
<dl-time-picker
|
|
33
|
+
v-if="showTime && typeState === 'day'"
|
|
34
|
+
:disabled="isInputDisabled"
|
|
35
|
+
:model-value="dateInterval"
|
|
36
|
+
@update:model-value="updateDateInterval"
|
|
37
|
+
/>
|
|
38
|
+
|
|
39
|
+
<dl-button
|
|
40
|
+
v-if="!hideClearButton"
|
|
41
|
+
size="s"
|
|
42
|
+
outlined
|
|
43
|
+
class="dl-date-time-range--button"
|
|
44
|
+
@click="handleClear"
|
|
45
|
+
>
|
|
46
|
+
<span style="text-transform: capitalize"> Clear </span>
|
|
47
|
+
</dl-button>
|
|
48
|
+
</div>
|
|
49
|
+
</div>
|
|
50
|
+
</template>
|
|
51
|
+
|
|
52
|
+
<script lang="ts">
|
|
53
|
+
import { defineComponent, PropType } from 'vue-demi'
|
|
54
|
+
import { DlTimePicker } from '../DlTimePicker'
|
|
55
|
+
import { DateInterval } from '../types'
|
|
56
|
+
import CardSidebar from './CardSidebar.vue'
|
|
57
|
+
import { DayTypeOption, MonthTypeOption } from './types'
|
|
58
|
+
import DlDatePicker from '../DlDatePicker/DlDatePicker.vue'
|
|
59
|
+
import { CalendarDate } from '../DlDatePicker/models/CalendarDate'
|
|
60
|
+
import { DlButton } from '../../../basic'
|
|
61
|
+
|
|
62
|
+
export default defineComponent({
|
|
63
|
+
components: {
|
|
64
|
+
CardSidebar,
|
|
65
|
+
DlDatePicker,
|
|
66
|
+
DlTimePicker,
|
|
67
|
+
DlButton
|
|
68
|
+
},
|
|
69
|
+
props: {
|
|
70
|
+
mode: {
|
|
71
|
+
type: String as PropType<'single' | 'multi'>,
|
|
72
|
+
required: true
|
|
73
|
+
},
|
|
74
|
+
typeState: {
|
|
75
|
+
type: String as PropType<'day' | 'month'>,
|
|
76
|
+
required: true
|
|
77
|
+
},
|
|
78
|
+
sidebarDayOptions: {
|
|
79
|
+
type: Array as PropType<DayTypeOption[]>,
|
|
80
|
+
required: true
|
|
81
|
+
},
|
|
82
|
+
sidebarMonthOptions: {
|
|
83
|
+
type: Array as PropType<MonthTypeOption[]>,
|
|
84
|
+
required: true
|
|
85
|
+
},
|
|
86
|
+
currentSidebarOption: {
|
|
87
|
+
type: String,
|
|
88
|
+
required: true
|
|
89
|
+
},
|
|
90
|
+
dateInterval: {
|
|
91
|
+
type: Object as PropType<DateInterval | null>,
|
|
92
|
+
default: null
|
|
93
|
+
},
|
|
94
|
+
availableRange: {
|
|
95
|
+
type: Object as PropType<Partial<DateInterval> | null>,
|
|
96
|
+
default: null
|
|
97
|
+
},
|
|
98
|
+
isInputDisabled: {
|
|
99
|
+
type: Boolean,
|
|
100
|
+
default: false
|
|
101
|
+
},
|
|
102
|
+
normalizeCalendars: {
|
|
103
|
+
type: Boolean,
|
|
104
|
+
default: false
|
|
105
|
+
},
|
|
106
|
+
activeDateFrom: {
|
|
107
|
+
type: Object as PropType<CalendarDate | null>,
|
|
108
|
+
default: null
|
|
109
|
+
},
|
|
110
|
+
activeDateTo: {
|
|
111
|
+
type: Object as PropType<CalendarDate | null>,
|
|
112
|
+
default: null
|
|
113
|
+
},
|
|
114
|
+
showTime: {
|
|
115
|
+
type: Boolean,
|
|
116
|
+
default: false
|
|
117
|
+
},
|
|
118
|
+
cardContentStyles: {
|
|
119
|
+
type: Object as PropType<Record<string, any>>,
|
|
120
|
+
default: () => ({})
|
|
121
|
+
},
|
|
122
|
+
hideClearButton: {
|
|
123
|
+
type: Boolean,
|
|
124
|
+
default: false
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
emits: [
|
|
128
|
+
'day-type-option-click',
|
|
129
|
+
'month-type-option-click',
|
|
130
|
+
'update-date-interval',
|
|
131
|
+
'update-date-interval-with-auto-close',
|
|
132
|
+
'update-from-to-date',
|
|
133
|
+
'clear'
|
|
134
|
+
],
|
|
135
|
+
methods: {
|
|
136
|
+
handleDayTypeOptionClick(option: DayTypeOption) {
|
|
137
|
+
this.$emit('day-type-option-click', option)
|
|
138
|
+
},
|
|
139
|
+
handleMonthTypeOptionClick(option: MonthTypeOption) {
|
|
140
|
+
this.$emit('month-type-option-click', option)
|
|
141
|
+
},
|
|
142
|
+
updateDateInterval(value: DateInterval | null) {
|
|
143
|
+
this.$emit('update-date-interval', value)
|
|
144
|
+
},
|
|
145
|
+
updateDateIntervalWithAutoClose(value: DateInterval) {
|
|
146
|
+
this.$emit('update-date-interval-with-auto-close', value)
|
|
147
|
+
},
|
|
148
|
+
updateFromToDate(value?: { from: CalendarDate; to: CalendarDate }) {
|
|
149
|
+
this.$emit('update-from-to-date', value)
|
|
150
|
+
},
|
|
151
|
+
handleClear() {
|
|
152
|
+
this.$emit('clear')
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
})
|
|
156
|
+
</script>
|
|
157
|
+
|
|
158
|
+
<style lang="scss" scoped>
|
|
159
|
+
.dl-date-time-range--card {
|
|
160
|
+
background-color: var(--dl-color-bg);
|
|
161
|
+
z-index: 1;
|
|
162
|
+
display: flex;
|
|
163
|
+
border-radius: 2px;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.dl-date-time-range--card_content {
|
|
167
|
+
width: var(--card-content-width);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
.dl-date-time-range--button {
|
|
171
|
+
display: flex;
|
|
172
|
+
margin-left: auto;
|
|
173
|
+
width: fit-content;
|
|
174
|
+
margin-right: 16px;
|
|
175
|
+
margin-bottom: 16px;
|
|
176
|
+
}
|
|
177
|
+
</style>
|
|
@@ -1,104 +1,71 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div :id="uuid" class="dl-date-time-range">
|
|
3
|
-
<
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
:width="width"
|
|
8
|
-
>
|
|
9
|
-
<dl-menu
|
|
10
|
-
ref="dateTimeRangeMenu"
|
|
11
|
-
anchor="bottom middle"
|
|
12
|
-
self="top middle"
|
|
13
|
-
:offset="[0, 5]"
|
|
3
|
+
<template v-if="isInputMode">
|
|
4
|
+
<date-input
|
|
5
|
+
:text="dateInputText"
|
|
6
|
+
:input-style="dateInputStyle"
|
|
14
7
|
:disabled="disabled"
|
|
8
|
+
:width="width"
|
|
15
9
|
>
|
|
16
|
-
<
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
/>
|
|
51
|
-
<dl-time-picker
|
|
52
|
-
v-if="showTime && typeState === 'day'"
|
|
53
|
-
:disabled="isInputDisabled"
|
|
54
|
-
:model-value="dateInterval"
|
|
55
|
-
@update:model-value="updateDateInterval"
|
|
56
|
-
/>
|
|
57
|
-
|
|
58
|
-
<dl-button
|
|
59
|
-
size="s"
|
|
60
|
-
outlined
|
|
61
|
-
class="dl-date-time-range--button"
|
|
62
|
-
@click="handleClearAction"
|
|
63
|
-
>
|
|
64
|
-
<span style="text-transform: capitalize">
|
|
65
|
-
Clear
|
|
66
|
-
</span>
|
|
67
|
-
</dl-button>
|
|
68
|
-
</div>
|
|
69
|
-
</div>
|
|
70
|
-
</dl-menu>
|
|
71
|
-
</date-input>
|
|
10
|
+
<dl-menu
|
|
11
|
+
ref="dateTimeRangeMenu"
|
|
12
|
+
anchor="bottom middle"
|
|
13
|
+
self="top middle"
|
|
14
|
+
:offset="[0, 5]"
|
|
15
|
+
:disabled="disabled"
|
|
16
|
+
>
|
|
17
|
+
<date-time-range-content
|
|
18
|
+
v-bind="dateTimeRangeContentProps"
|
|
19
|
+
@day-type-option-click="handleDayTypeOptionClick"
|
|
20
|
+
@month-type-option-click="handleMonthTypeOptionClick"
|
|
21
|
+
@update-date-interval="updateDateInterval"
|
|
22
|
+
@update-date-interval-with-auto-close="
|
|
23
|
+
updateDateIntervalWithAutoClose
|
|
24
|
+
"
|
|
25
|
+
@update-from-to-date="updateFromToDate"
|
|
26
|
+
@clear="handleClearAction"
|
|
27
|
+
/>
|
|
28
|
+
</dl-menu>
|
|
29
|
+
</date-input>
|
|
30
|
+
</template>
|
|
31
|
+
<template v-else>
|
|
32
|
+
<date-time-range-content
|
|
33
|
+
v-bind="dateTimeRangeContentProps"
|
|
34
|
+
@day-type-option-click="handleDayTypeOptionClick"
|
|
35
|
+
@month-type-option-click="handleMonthTypeOptionClick"
|
|
36
|
+
@update-date-interval="updateDateInterval"
|
|
37
|
+
@update-date-interval-with-auto-close="
|
|
38
|
+
updateDateIntervalWithAutoClose
|
|
39
|
+
"
|
|
40
|
+
@update-from-to-date="updateFromToDate"
|
|
41
|
+
@clear="handleClearAction"
|
|
42
|
+
/>
|
|
43
|
+
</template>
|
|
72
44
|
</div>
|
|
73
45
|
</template>
|
|
74
46
|
<script lang="ts">
|
|
75
|
-
import { DlTimePicker } from '../DlTimePicker'
|
|
76
47
|
import { DateInterval } from '../types'
|
|
77
|
-
import CardSidebar from './CardSidebar.vue'
|
|
78
48
|
import {
|
|
79
49
|
DayTypeOption,
|
|
80
50
|
DAY_SIDEBAR_OPTION,
|
|
81
51
|
MonthTypeOption,
|
|
82
|
-
MONTH_SIDEBAR_OPTION
|
|
52
|
+
MONTH_SIDEBAR_OPTION,
|
|
53
|
+
DATETIME_RANGE_VIEW_MODE
|
|
83
54
|
} from './types'
|
|
84
55
|
import { CustomDate } from '../DlDatePicker/models/CustomDate'
|
|
85
|
-
import DlDatePicker from '../DlDatePicker/DlDatePicker.vue'
|
|
86
56
|
import { CalendarDate } from '../DlDatePicker/models/CalendarDate'
|
|
87
57
|
import DateInput from './DateInput.vue'
|
|
58
|
+
import DateTimeRangeContent from './DateTimeRangeContent.vue'
|
|
88
59
|
import { DlMenu } from '../../../essential'
|
|
89
|
-
import { DlButton } from '../../../basic'
|
|
90
60
|
import { defineComponent, PropType } from 'vue-demi'
|
|
91
61
|
import { isInRange } from '../DlDatePicker/utils'
|
|
92
62
|
import { v4 } from 'uuid'
|
|
93
63
|
|
|
94
64
|
export default defineComponent({
|
|
95
65
|
components: {
|
|
96
|
-
CardSidebar,
|
|
97
|
-
DlDatePicker,
|
|
98
|
-
DlTimePicker,
|
|
99
66
|
DateInput,
|
|
100
|
-
|
|
101
|
-
|
|
67
|
+
DateTimeRangeContent,
|
|
68
|
+
DlMenu
|
|
102
69
|
},
|
|
103
70
|
model: {
|
|
104
71
|
prop: 'modelValue',
|
|
@@ -152,6 +119,14 @@ export default defineComponent({
|
|
|
152
119
|
shouldClearSelectFirstOption: {
|
|
153
120
|
type: Boolean,
|
|
154
121
|
default: false
|
|
122
|
+
},
|
|
123
|
+
viewMode: {
|
|
124
|
+
type: String as PropType<DATETIME_RANGE_VIEW_MODE>,
|
|
125
|
+
default: DATETIME_RANGE_VIEW_MODE.input
|
|
126
|
+
},
|
|
127
|
+
hideClearButton: {
|
|
128
|
+
type: Boolean,
|
|
129
|
+
default: false
|
|
155
130
|
}
|
|
156
131
|
},
|
|
157
132
|
emits: ['update:model-value', 'set-type', 'change'],
|
|
@@ -437,6 +412,27 @@ export default defineComponent({
|
|
|
437
412
|
return {
|
|
438
413
|
'--card-content-width': this.datePickerCardWidth
|
|
439
414
|
}
|
|
415
|
+
},
|
|
416
|
+
isInputMode(): boolean {
|
|
417
|
+
return this.viewMode === DATETIME_RANGE_VIEW_MODE.input
|
|
418
|
+
},
|
|
419
|
+
dateTimeRangeContentProps(): Record<string, any> {
|
|
420
|
+
return {
|
|
421
|
+
mode: this.mode,
|
|
422
|
+
typeState: this.typeState,
|
|
423
|
+
sidebarDayOptions: this.sidebarDayOptions,
|
|
424
|
+
sidebarMonthOptions: this.sidebarMonthOptions,
|
|
425
|
+
currentSidebarOption: this.currentSidebarOption,
|
|
426
|
+
dateInterval: this.dateInterval,
|
|
427
|
+
availableRange: this.availableRange,
|
|
428
|
+
isInputDisabled: this.isInputDisabled,
|
|
429
|
+
normalizeCalendars: this.normalizeCalendars,
|
|
430
|
+
activeDateFrom: this.activeDateFrom,
|
|
431
|
+
activeDateTo: this.activeDateTo,
|
|
432
|
+
showTime: this.showTime,
|
|
433
|
+
cardContentStyles: this.cardContentStyles,
|
|
434
|
+
hideClearButton: this.hideClearButton
|
|
435
|
+
}
|
|
440
436
|
}
|
|
441
437
|
},
|
|
442
438
|
watch: {
|
|
@@ -516,7 +512,10 @@ export default defineComponent({
|
|
|
516
512
|
this.typeState = value
|
|
517
513
|
this.$emit('set-type', value)
|
|
518
514
|
},
|
|
519
|
-
updateDateInterval(
|
|
515
|
+
updateDateInterval(
|
|
516
|
+
value: DateInterval | null,
|
|
517
|
+
skipSidebarUpdate = false
|
|
518
|
+
) {
|
|
520
519
|
if (value === null) {
|
|
521
520
|
this.dateInterval = null
|
|
522
521
|
} else {
|
|
@@ -524,6 +523,14 @@ export default defineComponent({
|
|
|
524
523
|
from: value.from,
|
|
525
524
|
to: new Date(value.to)
|
|
526
525
|
}
|
|
526
|
+
// When in multi mode, update sidebar option to custom if user manually selects date
|
|
527
|
+
if (this.mode === 'multi' && !skipSidebarUpdate) {
|
|
528
|
+
this.currentSidebarOption =
|
|
529
|
+
this.typeState === 'day'
|
|
530
|
+
? DAY_SIDEBAR_OPTION.custom
|
|
531
|
+
: MONTH_SIDEBAR_OPTION.custom
|
|
532
|
+
this.isInputDisabled = false
|
|
533
|
+
}
|
|
527
534
|
}
|
|
528
535
|
this.$emit('update:model-value', value)
|
|
529
536
|
this.$emit('change', value)
|
|
@@ -532,16 +539,24 @@ export default defineComponent({
|
|
|
532
539
|
this.activeDateFrom = value?.from || null
|
|
533
540
|
this.activeDateTo = value?.to || null
|
|
534
541
|
},
|
|
535
|
-
updateDateIntervalWithAutoClose(
|
|
536
|
-
|
|
542
|
+
updateDateIntervalWithAutoClose(
|
|
543
|
+
value: DateInterval,
|
|
544
|
+
skipSidebarUpdate = false
|
|
545
|
+
) {
|
|
546
|
+
this.updateDateInterval(value, skipSidebarUpdate)
|
|
537
547
|
|
|
538
|
-
if (
|
|
548
|
+
if (
|
|
549
|
+
this.autoClose &&
|
|
550
|
+
this.viewMode === DATETIME_RANGE_VIEW_MODE.input
|
|
551
|
+
) {
|
|
539
552
|
const dateTimeRangeMenu = this.$refs[
|
|
540
553
|
'dateTimeRangeMenu'
|
|
541
554
|
] as unknown as {
|
|
542
555
|
hide: () => void
|
|
543
556
|
}
|
|
544
|
-
dateTimeRangeMenu
|
|
557
|
+
if (dateTimeRangeMenu) {
|
|
558
|
+
dateTimeRangeMenu.hide()
|
|
559
|
+
}
|
|
545
560
|
}
|
|
546
561
|
},
|
|
547
562
|
handleDayTypeOptionClick(option: DayTypeOption) {
|
|
@@ -555,9 +570,9 @@ export default defineComponent({
|
|
|
555
570
|
|
|
556
571
|
if (option.key === DAY_SIDEBAR_OPTION.custom_by_month) {
|
|
557
572
|
this.handleTypeChange('month')
|
|
558
|
-
this.updateDateInterval(option.value)
|
|
573
|
+
this.updateDateInterval(option.value, true)
|
|
559
574
|
} else {
|
|
560
|
-
this.updateDateIntervalWithAutoClose(option.value)
|
|
575
|
+
this.updateDateIntervalWithAutoClose(option.value, true)
|
|
561
576
|
}
|
|
562
577
|
},
|
|
563
578
|
handleMonthTypeOptionClick(option: MonthTypeOption) {
|
|
@@ -571,9 +586,9 @@ export default defineComponent({
|
|
|
571
586
|
|
|
572
587
|
if (option.key === MONTH_SIDEBAR_OPTION.custom_by_day) {
|
|
573
588
|
this.handleTypeChange('day')
|
|
574
|
-
this.updateDateInterval(option.value)
|
|
589
|
+
this.updateDateInterval(option.value, true)
|
|
575
590
|
} else {
|
|
576
|
-
this.updateDateIntervalWithAutoClose(option.value)
|
|
591
|
+
this.updateDateIntervalWithAutoClose(option.value, true)
|
|
577
592
|
}
|
|
578
593
|
}
|
|
579
594
|
}
|
|
@@ -583,25 +598,5 @@ export default defineComponent({
|
|
|
583
598
|
.dl-date-time-range {
|
|
584
599
|
display: flex;
|
|
585
600
|
justify-content: center;
|
|
586
|
-
|
|
587
|
-
&--card {
|
|
588
|
-
background-color: var(--dl-color-bg);
|
|
589
|
-
z-index: 1;
|
|
590
|
-
display: flex;
|
|
591
|
-
border-radius: 2px;
|
|
592
|
-
border-radius: 2px;
|
|
593
|
-
}
|
|
594
|
-
|
|
595
|
-
&--card_content {
|
|
596
|
-
width: var(--card-content-width);
|
|
597
|
-
}
|
|
598
|
-
|
|
599
|
-
&--button {
|
|
600
|
-
display: flex;
|
|
601
|
-
margin-left: auto;
|
|
602
|
-
width: fit-content;
|
|
603
|
-
margin-right: 16px;
|
|
604
|
-
margin-bottom: 16px;
|
|
605
|
-
}
|
|
606
601
|
}
|
|
607
602
|
</style>
|
|
@@ -178,10 +178,20 @@ export default defineComponent({
|
|
|
178
178
|
return !!parentClassList?.contains('content')
|
|
179
179
|
},
|
|
180
180
|
hasHeader(): boolean {
|
|
181
|
-
|
|
181
|
+
const slotKeys = Object.keys(this.$slots)
|
|
182
|
+
return (
|
|
183
|
+
!this.hideHeader &&
|
|
184
|
+
slotKeys.includes('header') &&
|
|
185
|
+
!!this.$slots.header
|
|
186
|
+
)
|
|
182
187
|
},
|
|
183
188
|
hasFooter(): boolean {
|
|
184
|
-
|
|
189
|
+
const slotKeys = Object.keys(this.$slots)
|
|
190
|
+
return (
|
|
191
|
+
!this.hideFooter &&
|
|
192
|
+
slotKeys.includes('footer') &&
|
|
193
|
+
!!this.$slots.footer
|
|
194
|
+
)
|
|
185
195
|
}
|
|
186
196
|
},
|
|
187
197
|
watch: {
|
|
@@ -58,15 +58,17 @@
|
|
|
58
58
|
:style="`
|
|
59
59
|
background-color: ${separatorColor}`"
|
|
60
60
|
/>
|
|
61
|
-
<
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
61
|
+
<slot name="suffix-icon">
|
|
62
|
+
<dl-icon
|
|
63
|
+
class="expand-icon"
|
|
64
|
+
:class="iconClass"
|
|
65
|
+
:icon="dropdownIcon"
|
|
66
|
+
:size="iconSize"
|
|
67
|
+
:color="getIconColor"
|
|
68
|
+
:tooltip="iconTooltip"
|
|
69
|
+
@click="onIconClicked"
|
|
70
|
+
/>
|
|
71
|
+
</slot>
|
|
70
72
|
</dl-button>
|
|
71
73
|
<dl-menu
|
|
72
74
|
ref="menuRef"
|
|
@@ -116,10 +118,7 @@
|
|
|
116
118
|
@click="onClick"
|
|
117
119
|
>
|
|
118
120
|
<div class="dl-button-dropdown--simple__title">
|
|
119
|
-
<
|
|
120
|
-
<slot name="label" />
|
|
121
|
-
</template>
|
|
122
|
-
<template v-else>
|
|
121
|
+
<slot name="label">
|
|
123
122
|
<span
|
|
124
123
|
:class="{
|
|
125
124
|
'dl-button-no-wrap': noWrap
|
|
@@ -128,15 +127,17 @@
|
|
|
128
127
|
>
|
|
129
128
|
{{ label }}
|
|
130
129
|
</span>
|
|
131
|
-
</
|
|
132
|
-
<
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
130
|
+
</slot>
|
|
131
|
+
<slot name="suffix-icon">
|
|
132
|
+
<dl-icon
|
|
133
|
+
:class="iconClass"
|
|
134
|
+
:icon="dropdownIcon"
|
|
135
|
+
:size="iconSize"
|
|
136
|
+
:color="getIconColor"
|
|
137
|
+
:tooltip="iconTooltip"
|
|
138
|
+
@click="onIconClicked"
|
|
139
|
+
/>
|
|
140
|
+
</slot>
|
|
140
141
|
</div>
|
|
141
142
|
|
|
142
143
|
<dl-menu
|
|
@@ -301,9 +302,6 @@ export default defineComponent({
|
|
|
301
302
|
const showing = ref<boolean>(!!props.modelValue) as Ref<boolean>
|
|
302
303
|
const menuRef = ref(null)
|
|
303
304
|
|
|
304
|
-
const hasLabelSlot = computed(() => {
|
|
305
|
-
return !!slots.label
|
|
306
|
-
})
|
|
307
305
|
const attributes = computed(() => {
|
|
308
306
|
const acc: Record<string, string> = {
|
|
309
307
|
'aria-expanded': showing.value === true ? 'true' : 'false',
|
|
@@ -512,8 +510,7 @@ export default defineComponent({
|
|
|
512
510
|
cssVars,
|
|
513
511
|
getIconColor,
|
|
514
512
|
computedTextColor,
|
|
515
|
-
separatorColor
|
|
516
|
-
hasLabelSlot
|
|
513
|
+
separatorColor
|
|
517
514
|
}
|
|
518
515
|
}
|
|
519
516
|
})
|
|
@@ -1470,6 +1470,9 @@ export default defineComponent({
|
|
|
1470
1470
|
&--s {
|
|
1471
1471
|
height: 18px;
|
|
1472
1472
|
}
|
|
1473
|
+
&--m {
|
|
1474
|
+
height: 26px;
|
|
1475
|
+
}
|
|
1473
1476
|
}
|
|
1474
1477
|
|
|
1475
1478
|
&__input {
|
|
@@ -1518,6 +1521,7 @@ export default defineComponent({
|
|
|
1518
1521
|
}
|
|
1519
1522
|
|
|
1520
1523
|
&--m {
|
|
1524
|
+
height: 12px;
|
|
1521
1525
|
line-height: 12px;
|
|
1522
1526
|
padding-top: 7px;
|
|
1523
1527
|
padding-bottom: 7px;
|
|
@@ -158,6 +158,18 @@ export default defineComponent({
|
|
|
158
158
|
},
|
|
159
159
|
onSearchButtonPress(): void {
|
|
160
160
|
this.$emit('search', this.modelValue)
|
|
161
|
+
},
|
|
162
|
+
focus(): void {
|
|
163
|
+
const inputComponent = this.$refs.input as InstanceType<
|
|
164
|
+
typeof DlInput
|
|
165
|
+
>
|
|
166
|
+
inputComponent?.focus()
|
|
167
|
+
},
|
|
168
|
+
blur(): void {
|
|
169
|
+
const inputComponent = this.$refs.input as InstanceType<
|
|
170
|
+
typeof DlInput
|
|
171
|
+
>
|
|
172
|
+
inputComponent?.blur()
|
|
161
173
|
}
|
|
162
174
|
}
|
|
163
175
|
})
|
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div
|
|
3
|
-
class="dl-smart-
|
|
4
|
-
:style="cssVars"
|
|
5
|
-
>
|
|
6
|
-
<div
|
|
7
|
-
ref="inputWrapper"
|
|
8
|
-
class="dl-smart-search__input-wrapper"
|
|
9
|
-
>
|
|
2
|
+
<div class="dl-smart-search" :style="cssVars">
|
|
3
|
+
<div ref="inputWrapper" class="dl-smart-search__input-wrapper">
|
|
10
4
|
<dl-smart-search-input
|
|
11
5
|
ref="smartSearchInput"
|
|
12
6
|
v-model="queryObject"
|
|
@@ -18,6 +12,7 @@
|
|
|
18
12
|
:color-schema="colorSchema"
|
|
19
13
|
:strict="strict"
|
|
20
14
|
:placeholder="placeholder"
|
|
15
|
+
:disabled="disabled"
|
|
21
16
|
@focus="isFocused = true"
|
|
22
17
|
@blur="isFocused = false"
|
|
23
18
|
@search="emitSearchQuery"
|