diff --git a/documents/src/pages/elements/datetime-picker.md b/documents/src/pages/elements/datetime-picker.md
index ce79867dcf..b761578dd4 100644
--- a/documents/src/pages/elements/datetime-picker.md
+++ b/documents/src/pages/elements/datetime-picker.md
@@ -248,6 +248,9 @@ section {
```
## Set content to slots
+Datetime Picker allows to add additional content to various placements around the calendar e.g. left, right. You can also slot your own content to any cells in calendar to do special styles on the cell.
+
+### Add contents around the calendar
Use slots to add additional content into the Datetime Picker.
::
@@ -343,6 +346,273 @@ section {
```
+### Custom cells
+Datetime Picker allows you to customise cells on the calendar using slots. Each date cell provides slot with name in `yyyy-MM-dd` format. In case of year or month cell, the format is `yyyy` or `yyyy-MM`.
+
+::
+```javascript
+::datetime-picker::
+const datetimePicker = document.querySelector('ef-datetime-picker');
+datetimePicker.view = '2023-04';
+```
+```html
+
+
+
+```
+
+### Custom cells in duplex mode
+In duplex mode, there are 2 calendars on the UI. Slot name of left calendar is prefixed with `from-` and another one is prefixed with `to-`.
+
+```html
+
+
7
+
10
+
1
+
18
+
29
+
7
+
10
+
1
+
18
+
29
+
+```
+
+### Advanced custom cells
+For more advanced use cases, you can use `before-cell-render` event to check states of each cell e.g. `range`, `selected`. See all cell states from [CalendarCell](https://github.com/Refinitiv/refinitiv-ui/blob/v6/packages/elements/src/calendar/types.ts).
+
+```javascript
+datetimePicker.addEventListener('before-cell-render', (event) => {
+ const { cell, calendar } = event.detail;
+ ...
+}
+```
+
+Event's `detail` object provides `cell` that being rendered and its parent calendar (in case of duplex). In duplex mode, the left calendar has id as `calendar-from` and the right calendar is `calendar-to`.
+
+The example below show calendar in duplex mode. You listen to `before-cell-render` event to query slot contents and uses state from `cell` and `calendar` to add CSS classes to the slot content properly.
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+```javascript
+const datetimePicker = document.querySelector('ef-datetime-picker');
+
+datetimePicker.addEventListener('before-cell-render', (event) => {
+ const sourceDatetimePicker = event.target;
+ const { cell, calendar } = event.detail;
+ const prefix = calendar.id === 'calendar-to' ? 'to-' : 'from-';
+ const customCell = sourceDatetimePicker.querySelector(`[slot="${prefix}${cell.value}"]`);
+
+ // skip style overriding if there is no content for the cell
+ if (!customCell) { return; }
+
+ // use text from component as calendar has built-in locale support
+ // for instance, Mai instead of May in German
+ customCell.textContent = cell.text;
+
+ // modify classes that match to current cell state
+ const customCellClass = customCell.classList;
+ const keys = ['range', 'selected'];
+ for (const key of keys) {
+ cell[key] ? customCellClass.add(key) : customCellClass.remove(key);
+ }
+});
+```
+```css
+ef-datetime-picker .custom-cell {
+ ...
+}
+ef-datetime-picker .custom-cell.range {
+ ...
+}
+ef-datetime-picker .custom-cell.select {
+ ...
+}
+```
+
+::
+```javascript
+::datetime-picker::
+const datetimePicker = document.querySelector('ef-datetime-picker');
+datetimePicker.views = ['2023-04','2023-05'];
+
+datetimePicker?.addEventListener('before-cell-render', (event) => {
+ const sourceDatetimePicker = event.target;
+ const { cell, calendar } = event.detail;
+ const prefix = calendar.id === 'calendar-to' ? 'to-' : 'from-';
+ const customCell = sourceDatetimePicker.querySelector(`[slot="${prefix}${cell.value}"]`);
+ if (!customCell) {
+ return;
+ }
+
+ // skip style overriding if there is no content for the cell
+ if (!customCell) { return; }
+
+ // use text from component as calendar has built-in locale support
+ // for instance, Mai instead of May in German
+ customCell.textContent = cell.text;
+
+ // modify classes that match to current cell state
+ const customCellClass = customCell.classList;
+ const keys = ['range', 'selected'];
+ for (const key of keys) {
+ cell[key] ? customCellClass.add(key) : customCellClass.remove(key);
+ }
+});
+```
+```html
+
+
+
Germany Economic Events 2023
+
April
+
+ 04: Balance of Trade
+ 24: Ifo Business Climate
+ 28: GDP Growth Rate YoY Flash
+