Skip to content

Commit 451c9da

Browse files
author
Sarin Udompanish
committed
feat(datetime-picker): introduce preventCloseOnSelect to prevents the Picker from closing on date selection
1 parent acef46c commit 451c9da

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

packages/elements/src/datetime-picker/__demo__/index.html

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@
174174
<ef-checkbox id="inputTriggerDisabled">Input Trigger Disabled</ef-checkbox>
175175
<ef-checkbox id="inputDisabled">Input Disabled</ef-checkbox>
176176
<ef-checkbox id="popupDisabled">Popup Disabled</ef-checkbox>
177+
<ef-checkbox id="preventCloseOnSelect">Prevent Close On Select</ef-checkbox>
177178
</p>
178179
</div>
179180
</div>
@@ -209,7 +210,8 @@
209210
weekendsOnly: dateTimePicker.weekendsOnly,
210211
inputTriggerDisabled: dateTimePicker.inputTriggerDisabled,
211212
inputDisabled: dateTimePicker.inputDisabled,
212-
popupDisabled: dateTimePicker.popupDisabled
213+
popupDisabled: dateTimePicker.popupDisabled,
214+
preventCloseOnSelect: dateTimePicker.preventCloseOnSelect
213215
};
214216

215217
consoleEl.value = JSON.stringify(data, undefined, 4);
@@ -399,6 +401,12 @@
399401
dateTimePicker.popupDisabled = value || undefined;
400402
});
401403

404+
document
405+
.getElementById('preventCloseOnSelect')
406+
.addEventListener('checked-changed', ({ detail: { value } }) => {
407+
dateTimePicker.preventCloseOnSelect = value || undefined;
408+
});
409+
402410
const eventLog = [];
403411
const onEvent = (event) => {
404412
eventLog.unshift(`${event.type}: ${JSON.stringify(event.detail)}`);
@@ -599,7 +607,12 @@
599607
dynamicSingleDatetimePicker.addEventListener('before-cell-render', beforeCellRenderHandlerSingle);
600608
</script>
601609
<demo-block header="Slotted Cell Content + before-cell-render Event">
602-
<ef-datetime-picker id="single-datetime-picker" view="2023-10" value="2023-10-10">
610+
<ef-datetime-picker
611+
id="single-datetime-picker"
612+
view="2023-10"
613+
value="2023-10-10"
614+
prevent-close-on-select
615+
>
603616
<div class="custom-cell" slot="2023-10-10">10</div>
604617
<div class="custom-cell" slot="2023-10-11">11</div>
605618
<div class="custom-cell" slot="2023-10">Oct</div>

packages/elements/src/datetime-picker/index.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,13 @@ export class DatetimePicker extends FormFieldElement implements MultiValue {
343343
@property({ type: Boolean, attribute: 'input-trigger-disabled' })
344344
public inputTriggerDisabled = false;
345345

346+
/**
347+
* Prevents the Picker from closing on date selection,
348+
* following the default behavior defined for each mode.
349+
*/
350+
@property({ type: Boolean, attribute: 'prevent-close-on-select' })
351+
public preventCloseOnSelect = false;
352+
346353
/**
347354
* Disable input part of the picker
348355
*/
@@ -994,6 +1001,9 @@ export class DatetimePicker extends FormFieldElement implements MultiValue {
9941001
// Close popup if there is no time picker
9951002
const newValues = this.values;
9961003
if (!this.timepicker && newValues[0] && (this.range ? newValues[1] : true)) {
1004+
if (this.preventCloseOnSelect) {
1005+
return;
1006+
}
9971007
this.setOpened(false);
9981008

9991009
/**

0 commit comments

Comments
 (0)