Skip to content

Commit 850f181

Browse files
committed
Make date, time and datetime components clearable
1 parent fc8fc51 commit 850f181

File tree

9 files changed

+58
-7
lines changed

9 files changed

+58
-7
lines changed

packages/admin/src/mixins/TypeMixin.js

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -248,10 +248,23 @@ export default {
248248
},
249249

250250
// @overridable
251-
async focusElement() {
252-
await this.focusSchema()
251+
focusElement() {
252+
const { element = this } = this.$refs
253+
if (element.focus) {
254+
element.focus()
255+
} else {
256+
element.$el?.focus?.()
257+
}
258+
},
259+
260+
// @overridable
261+
blurElement() {
253262
const { element = this } = this.$refs
254-
;(element.$el || element).focus?.()
263+
if (element.blur) {
264+
element.blur()
265+
} else {
266+
element.$el?.blur?.()
267+
}
255268
},
256269

257270
async focusSchema() {
@@ -260,14 +273,20 @@ export default {
260273
await this.tabComponent?.focus()
261274
},
262275

263-
focus() {
276+
async focus() {
277+
await this.focusSchema()
264278
this.scrollIntoView()
265279
this.focusElement()
266280
},
267281

282+
blur() {
283+
this.blurElement()
284+
},
285+
268286
clear() {
269287
this.value = null
270288
this.changedValue = undefined
289+
this.blur()
271290
this.onChange()
272291
},
273292

packages/admin/src/styles/_button.scss

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -199,10 +199,11 @@
199199
display: none;
200200

201201
@at-root .dito-component:hover {
202-
// Support two levels of nesting inside .dito-component, used by TypeColor
202+
// Support 3 levels of nesting inside .dito-component, used by TypeColor
203203
& > #{$self},
204204
& > * > #{$self},
205-
& > * > * > #{$self} {
205+
& > * > * > #{$self},
206+
& > * > * > * > #{$self} {
206207
display: block;
207208
}
208209
}

packages/admin/src/types/DitoTypeCode.vue

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,10 @@ export default DitoTypeComponent.register('code', {
9494
methods: {
9595
focusElement() {
9696
this.$el.querySelector('textarea')?.focus()
97+
},
98+
99+
blurElement() {
100+
this.$el.querySelector('textarea')?.focus()
97101
}
98102
}
99103
})

packages/admin/src/types/DitoTypeDate.vue

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,13 @@
99
:format="formats"
1010
v-bind="attributes"
1111
)
12+
template(#after)
13+
button.dito-button-clear.dito-button-overlay(
14+
v-if="showClearButton"
15+
:disabled="disabled"
16+
@click.stop="clear"
17+
@mousedown.stop
18+
)
1219
</template>
1320

1421
<script>

packages/admin/src/types/DitoTypeMarkup.vue

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,11 @@ export default DitoTypeComponent.register('markup', {
423423
},
424424
425425
focusElement() {
426-
this.editor.focus()
426+
this.editor.commands.focus()
427+
},
428+
429+
blurElement() {
430+
this.editor.commands.blur()
427431
}
428432
}
429433
})

packages/admin/src/types/DitoTypeMultiselect.vue

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,10 @@ export default DitoTypeComponent.register('multiselect', {
174174
this.$refs.element.activate()
175175
},
176176
177+
blurElement() {
178+
this.$refs.element.deactivate()
179+
},
180+
177181
onOpen() {
178182
this.populate = true
179183
},

packages/ui/src/components/DatePicker.vue

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ Trigger.dito-date-picker(
2222
@blur="onFocus(false)"
2323
@keydown="onKeyDown"
2424
)
25+
template(#before)
26+
slot(name="before")
27+
template(#after)
28+
slot(name="after")
2529
// icon(type="calendar" :color="iconColor")
2630
template(#popup)
2731
Calendar.dito-date-picker-popup(

packages/ui/src/components/DateTimePicker.vue

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@
1414
@blur="onFocus(false)"
1515
@keydown="onKeyDown"
1616
)
17+
template(#before)
18+
slot(name="before")
19+
template(#after)
20+
slot(name="after")
1721
DatePicker(
1822
ref="date"
1923
v-model="currentValue"

packages/ui/src/components/TimePicker.vue

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ Trigger.dito-time-picker(
2222
@blur="onFocus(false)"
2323
@keydown="onKeyDown"
2424
)
25+
template(#before)
26+
slot(name="before")
27+
template(#after)
28+
slot(name="after")
2529
//- icon(type="time"
2630
//- :color="disabled ? '#bfbfbf' : (text ? '#666' : '#bfbfbf')"
2731
//- )

0 commit comments

Comments
 (0)