Skip to content

Commit 5e90e90

Browse files
committed
Modal Mode
1 parent b9810fc commit 5e90e90

4 files changed

Lines changed: 100 additions & 72 deletions

File tree

demo/SamplesModal.html

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,17 @@
55
<meta charset="utf-8" />
66
<title>Persian DateTime</title>
77

8-
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
9-
integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
10-
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
11-
integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous">
12-
</script>
13-
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
14-
integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous">
15-
</script>
16-
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
17-
integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous">
18-
</script>
8+
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css"
9+
integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
10+
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"
11+
integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj"
12+
crossorigin="anonymous"></script>
13+
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"
14+
integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo"
15+
crossorigin="anonymous"></script>
16+
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"
17+
integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI"
18+
crossorigin="anonymous"></script>
1919

2020
<link rel="stylesheet" href="demo.css" />
2121
<link rel="stylesheet" href="../src/jquery.md.bootstrap.datetimepicker.style.css" />

demo/SamplesToDebug.html

Lines changed: 42 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -2,55 +2,56 @@
22
<html lang="en">
33

44
<head>
5-
<meta charset="utf-8" />
6-
<title>MD Persian DateTime To Debug</title>
7-
8-
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
9-
integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
10-
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
11-
integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous">
12-
</script>
13-
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
14-
integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous">
15-
</script>
16-
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
17-
integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous">
18-
</script>
19-
20-
<link rel="stylesheet" href="demo.css" />
21-
<link rel="stylesheet" href="../src/jquery.md.bootstrap.datetimepicker.style.css" />
5+
<meta charset="utf-8" />
6+
<title>MD Persian DateTime To Debug</title>
7+
8+
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css"
9+
integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
10+
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"
11+
integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj"
12+
crossorigin="anonymous"></script>
13+
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"
14+
integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo"
15+
crossorigin="anonymous"></script>
16+
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"
17+
integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI"
18+
crossorigin="anonymous"></script>
19+
20+
<link rel="stylesheet" href="demo.css" />
21+
<link rel="stylesheet" href="../src/jquery.md.bootstrap.datetimepicker.style.css" />
2222
</head>
2323

2424
<body>
25-
<div class="container">
26-
<h2>Simple</h2>
27-
<div class="row">
28-
<div class="col-sm-6">
29-
<div class="input-group">
30-
<div class="input-group-prepend">
31-
<span class="input-group-text cursor-pointer" id="dt_class">Icon</span>
32-
</div>
33-
<input type="text" id="inputDate3" class="form-control" value="2019-09-22">
34-
</div>
35-
<label id="showDate_class"> </label>
36-
</div>
25+
<div class="container">
26+
<h2>Simple</h2>
27+
<div class="row">
28+
<div class="col-sm-6">
29+
<div class="input-group">
30+
<div class="input-group-prepend">
31+
<span class="input-group-text cursor-pointer" id="dt_class">Icon</span>
32+
</div>
33+
<input type="text" id="inputDate3" class="form-control" value="2019-09-22">
3734
</div>
35+
<label id="showDate_class"> </label>
36+
</div>
3837
</div>
38+
</div>
3939

40-
<script src="../src/jquery.md.bootstrap.datetimepicker.js" type="text/javascript"></script>
40+
<script src="../src/jquery.md.bootstrap.datetimepicker.js" type="text/javascript"></script>
4141

42-
<script type="text/javascript">
43-
$(document).ready(function () {
44-
$("#dt_class").MdPersianDateTimePicker({
45-
targetDateSelector: "#inputDate3",
46-
targetTextSelector: "#showDate_class",
47-
textFormat: " dddd dd MMMM yyyy ",
48-
isGregorian: false
49-
});
50-
});
51-
</script>
42+
<script type="text/javascript">
43+
$(document).ready(function () {
44+
$("#dt_class").MdPersianDateTimePicker({
45+
targetDateSelector: "#inputDate3",
46+
targetTextSelector: "#showDate_class",
47+
textFormat: " dddd dd MMMM yyyy ",
48+
isGregorian: false,
49+
modalMode: true
50+
});
51+
});
52+
</script>
5253

53-
<br><br>
54+
<br><br>
5455
</body>
5556

5657
</html>

src/jquery.md.bootstrap.datetimepicker.js

Lines changed: 43 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -177,20 +177,33 @@
177177
var mdDatePickerFlag = 'data-mdpersiandatetimepicker',
178178
mdDatePickerFlagSelector = '[' + mdDatePickerFlag + ']',
179179
mdDatePickerGroupIdAttribute = 'data-mdpersiandatetimepicker-group',
180-
mdDatePickerPopoverFlag = 'data-mdpersiandatetimepicker-popover',
181-
mdDatePickerPopoverSelector = '[' + mdDatePickerPopoverFlag + ']',
180+
mdDatePickerElementFlag = 'data-mdpersiandatetimepicker-element',
181+
mdDatePickerElementSelector = '[' + mdDatePickerElementFlag + ']',
182182
mdDatePickerContainerFlag = 'data-mdpersiandatetimepicker-container',
183183
mdDatePickerContainerSelector = '[' + mdDatePickerContainerFlag + ']',
184184
mdPluginName = 'MdPersianDateTimePicker',
185185
triggerStart = false;
186186

187+
var modalHtmlTemplate = `
188+
<div class="modal fade mds-bootstrap-persian-datetime-picker-modal" tabindex="-1" role="dialog" aria-labelledby="mdDateTimePickerModalLabel" aria-hidden="true"
189+
${mdDatePickerElementFlag}>
190+
<div class="modal-dialog modal-xl">
191+
<div class="modal-content">
192+
<div class="modal-body" data-name="mds-datetimepicker-body">
193+
MD DateTimePicker Html
194+
</div>
195+
</div>
196+
</div>
197+
</div>
198+
`;
199+
200+
187201
var popverHtmlTemplate = `
188-
<div class="popover mds-bootstrap-persian-datetime-picker-popover" role="tooltip" ${mdDatePickerPopoverFlag}>
202+
<div class="popover mds-bootstrap-persian-datetime-picker-popover" role="tooltip" ${mdDatePickerElementFlag}>
189203
<div class="arrow"></div>
190204
<h3 class="popover-header text-center" data-name="mds-datetimepicker-title"></h3>
191-
<div class="popover-body p-0" data-name="mds-datetimepicker-popoverbody"></div>
192-
</div>
193-
`;
205+
<div class="popover-body p-0" data-name="mds-datetimepicker-body"></div>
206+
</div>`;
194207

195208
var popoverHeaderSelectYearHtmlTemplate = `
196209
<table class="table table-sm table-borderless text-center p-0 m-0 {{rtlCssClass}}">
@@ -205,16 +218,14 @@
205218
<a href="javascript:void(0)" title="{{nextText}}" data-year="{{latestNextYear}}" data-yearrangebuttonchange="1"> &gt; </a>
206219
</th>
207220
</tr>
208-
</table>
209-
`;
221+
</table>`;
210222

211223
var dateTimePickerYearsToSelectHtmlTemplate = `
212224
<table class="table table-sm text-center p-0 m-0">
213225
<tbody>
214226
{{yearsToSelectHtml}}
215227
</tbody>
216-
</table>
217-
`;
228+
</table>`;
218229

219230
var dateTimePickerHtmlTemplate = `
220231
<div class="mds-bootstrap-persian-datetime-picker-container {{rtlCssClass}}" ${mdDatePickerContainerFlag}>
@@ -448,7 +459,7 @@
448459
var $popoverDescriber = $element.parents(mdDatePickerFlagSelector + ':first'); // inline
449460
// not inline
450461
if ($popoverDescriber.length <= 0) {
451-
$popoverDescriber = $element.parents(mdDatePickerPopoverSelector + ':first');
462+
$popoverDescriber = $element.parents(mdDatePickerElementSelector + ':first');
452463
$popoverDescriber = $('[aria-describedby="' + $popoverDescriber.attr('id') + '"]');
453464
}
454465
return $popoverDescriber;
@@ -481,7 +492,7 @@
481492
if (isPopoverDescriber($element)) {
482493
getPopover($element).find('[data-name="mds-datetimepicker-title"]').html(htmlString);
483494
} else {
484-
$element.parents(mdDatePickerPopoverSelector + ':first').find('[data-name="mds-datetimepicker-title"]').html(htmlString);
495+
$element.parents(mdDatePickerElementSelector + ':first').find('[data-name="mds-datetimepicker-title"]').html(htmlString);
485496
}
486497
} else {
487498
var $inlineTitleBox = $element.parents(mdDatePickerFlagSelector + ':first').find('[data-name="dateTimePickerYearsButtonsContainer"]');
@@ -498,7 +509,7 @@
498509
var calendarHtml = getDateTimePickerHtml(setting),
499510
$container = setting.inLine ?
500511
$element.parents(mdDatePickerFlagSelector + ':first') :
501-
$element.parents('[data-name="mds-datetimepicker-popoverbody"]:first');
512+
$element.parents('[data-name="mds-datetimepicker-body"]:first');
502513
setPopoverHeaderHtml($element, setting.inLine, $(calendarHtml).find('[data-selecteddatestring]').text().trim());
503514
$container.html(calendarHtml);
504515
}
@@ -664,7 +675,7 @@
664675
}
665676

666677
function hideOthers($exceptThis) {
667-
$(mdDatePickerPopoverSelector).each(function () {
678+
$(mdDatePickerElementSelector).each(function () {
668679
var $thisPopover = $(this);
669680
if (!$exceptThis && $exceptThis.is($thisPopover)) return;
670681
hidePopover($thisPopover);
@@ -1723,7 +1734,7 @@
17231734
}
17241735
setSetting1($this, setting);
17251736
if (setting.rangeSelectorStartDate != undefined && setting.rangeSelectorEndDate != undefined) {
1726-
if (!setting.inLine) hidePopover($(mdDatePickerPopoverSelector));
1737+
if (!setting.inLine) hidePopover($(mdDatePickerElementSelector));
17271738
else updateCalendarHtml1($this, setting);
17281739
}
17291740
return;
@@ -1737,7 +1748,7 @@
17371748
}
17381749
setSetting1($this, setting);
17391750
setSelectedData(setting);
1740-
if (!setting.inLine) hidePopover($(mdDatePickerPopoverSelector));
1751+
if (!setting.inLine) hidePopover($(mdDatePickerElementSelector));
17411752
else if (setting.inLine && (setting.toDate || setting.fromDate)) {
17421753
// وقتی در حالت این لاین هستیم و ' ار تاریخ ' تا تاریخ ' داریم
17431754
// وقتی روی روز یکی از تقویم ها کلیک می شود
@@ -1902,7 +1913,7 @@
19021913
var $target = $(e.target),
19031914
$popoverDescriber = getPopoverDescriber($target);
19041915
if ($popoverDescriber.length >= 1 || isCalendarOpen($target)) return;
1905-
hidePopover($(mdDatePickerPopoverSelector));
1916+
hidePopover($(mdDatePickerElementSelector));
19061917
});
19071918

19081919
//#endregion
@@ -1940,7 +1951,8 @@
19401951
disableAfterDate: undefined,
19411952
rangeSelector: false,
19421953
rangeSelectorStartDate: undefined,
1943-
rangeSelectorEndDate: undefined
1954+
rangeSelectorEndDate: undefined,
1955+
modalMode: false
19441956
}, options);
19451957
$this.attr(mdDatePickerFlag, '');
19461958
if (setting.targetDateSelector) {
@@ -1982,7 +1994,7 @@
19821994
// نمایش تقویم
19831995
if (setting.inLine) {
19841996
$this.append(getDateTimePickerHtml(setting));
1985-
} else {
1997+
} else if (!setting.modalMode) {
19861998
$this.popover({
19871999
container: 'body',
19882000
content: '',
@@ -2006,11 +2018,22 @@
20062018
setting.selectedDateToShow = setting.selectedDate != undefined ? getClonedDate(setting.selectedDate) : new Date();
20072019
var calendarHtml = getDateTimePickerHtml(setting);
20082020
setPopoverHeaderHtml($this, setting.inLine, $(calendarHtml).find('[data-selecteddatestring]').text().trim());
2009-
getPopover($this).find('[data-name="mds-datetimepicker-popoverbody"]').html(calendarHtml);
2021+
getPopover($this).find('[data-name="mds-datetimepicker-body"]').html(calendarHtml);
20102022
$this.popover('update');
20112023
triggerStart = false;
20122024
}, 10);
20132025
});
2026+
} else if (setting.modalMode) {
2027+
$('body').append(modalHtmlTemplate);
2028+
$this.on('click', function () {
2029+
if (setting.disabled) {
2030+
return;
2031+
}
2032+
setting.selectedDateToShow = setting.selectedDate != undefined ? getClonedDate(setting.selectedDate) : new Date();
2033+
var calendarHtml = getDateTimePickerHtml(setting);
2034+
$(mdDatePickerElementSelector).find('[data-name="mds-datetimepicker-body"]').html(calendarHtml);
2035+
$(mdDatePickerElementSelector).modal('show');
2036+
});
20142037
}
20152038
$(document).on('change', setting.targetTextSelector, function () {
20162039
if (triggerChangeCalling) {

src/jquery.md.bootstrap.datetimepicker.style.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,4 +217,8 @@
217217
-webkit-box-shadow: 0 5px 15px 1px rgba(0, 0, 0, 0.1);
218218
box-shadow: 0 5px 15px 1px rgba(0, 0, 0, 0.1);
219219
z-index: 999999999;
220+
}
221+
222+
.mds-bootstrap-persian-datetime-picker-modal *{
223+
font-size: 24px !important;
220224
}

0 commit comments

Comments
 (0)