Skip to content

Commit 87e9106

Browse files
committed
رفع خطا در inLine mode
1 parent 461e8f2 commit 87e9106

7 files changed

Lines changed: 50 additions & 45 deletions

.vscode/settings.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
"انتخابی",
6464
"انجام",
6565
"انصراف",
66+
"اولین",
6667
"اینستنس",
6768
"بادی",
6869
"بازه",
@@ -121,6 +122,7 @@
121122
"ساعت",
122123
"سلکتور",
123124
"شروع",
125+
"شماره",
124126
"شمسی",
125127
"شناسه",
126128
"شنبه",

dist/mds.bs.datetimepicker.js

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/mds.bs.datetimepicker.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/mds.bs.datetimepicker.style.css

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
{
22
"name": "md.bootstrappersiandatetimepicker",
3-
"version": "4.3.0",
3+
"version": "4.4.0",
44
"description": "Persian Date Time Picker with Bootstrap 5+",
55
"license": "MIT",
66
"moduleResolution": "node",
77
"scripts": {
88
"compile": "tsc",
9-
"webpack": "webpack",
9+
"webpack": "rimraf dist && webpack",
1010
"webpackserver": "webpack serve --mode development --env development",
1111
"dev": "start npm run webpack && start npm run webpackserver",
1212
"start": "npx http-server"
1313
},
1414
"author": {
1515
"name": "Mohammad Dayyan",
1616
"email": "mds_soft@yahoo.com",
17-
"social": "@mdssoft",
17+
"social": "@mds1401",
1818
"url": "https://github.com/Mds92/MD.BootstrapPersianDateTimePicker"
1919
},
2020
"repository": {
@@ -31,10 +31,10 @@
3131
"css-loader": "^7.1.2",
3232
"css-minimizer-webpack-plugin": "^7.0.2",
3333
"expose-loader": "^5.0.1",
34-
"extract-text-webpack-plugin": "^3.0.2",
3534
"jshint": "^2.13.6",
3635
"jshint-loader": "^0.8.4",
3736
"mini-css-extract-plugin": "^2.9.2",
37+
"rimraf": "^6.0.1",
3838
"style-loader": "^4.0.0",
3939
"ts-loader": "^9.5.2",
4040
"typescript": "^5.8.2",

src/mds.bs.datetimepicker.ts

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -424,11 +424,13 @@ data-bs-toggle="dropdown" aria-expanded="false">
424424

425425
// #region Properties
426426

427-
guid: string = '';
428-
setting: MdsPersianDateTimePickerSetting;
427+
readonly guid: string = '';
428+
readonly setting: MdsPersianDateTimePickerSetting;
429+
430+
private readonly element: Element;
431+
429432
private bsPopover: Popover | null = null;
430433
private bsModal: Modal | null = null;
431-
private element: Element;
432434
private tempTitleString = '';
433435

434436
// #endregion
@@ -439,9 +441,12 @@ data-bs-toggle="dropdown" aria-expanded="false">
439441

440442
// Validation
441443

442-
if (setting.rangeSelector && (setting.toDate || setting.fromDate)) throw new Error(`MdsPersianDateTimePicker => You can not set true 'toDate' or 'fromDate' and 'rangeSelector' together`);
443-
if (setting.toDate && setting.fromDate) throw new Error(`MdsPersianDateTimePicker => You can not set true 'toDate' and 'fromDate' together`);
444-
if (!setting.groupId && (setting.toDate || setting.fromDate)) throw new Error(`MdsPersianDateTimePicker => When you set 'toDate' or 'fromDate' true, you have to set 'groupId'`);
444+
if (setting.rangeSelector && (setting.toDate || setting.fromDate))
445+
throw new Error(`MdsPersianDateTimePicker => You can not set true 'toDate' or 'fromDate' and 'rangeSelector' together`);
446+
if (setting.toDate && setting.fromDate)
447+
throw new Error(`MdsPersianDateTimePicker => You can not set true 'toDate' and 'fromDate' together`);
448+
if (!setting.groupId && (setting.toDate || setting.fromDate))
449+
throw new Error(`MdsPersianDateTimePicker => When you set 'toDate' or 'fromDate' true, you have to set 'groupId'`);
445450

446451
// ---------------------
447452

@@ -741,9 +746,6 @@ data-bs-toggle="dropdown" aria-expanded="false">
741746
private static convertToNumber3(dateTime: Date): number {
742747
return MdsPersianDateTimePicker.convertToNumber1(MdsPersianDateTimePicker.getDateTimeJson1(dateTime));
743748
}
744-
// private static convertToNumber4(dateTime: Date): number {
745-
// return Number(MdsPersianDateTimePicker.zeroPad(dateTime.getFullYear()) + MdsPersianDateTimePicker.zeroPad(dateTime.getMonth()) + MdsPersianDateTimePicker.zeroPad(dateTime.getDate()));
746-
// }
747749
private static correctOptionValue(optionName: string, value: any): any {
748750
const setting = new MdsPersianDateTimePickerSetting();
749751
Object.keys(setting).filter(key => key === optionName).forEach(key => {
@@ -1775,7 +1777,7 @@ data-bs-toggle="dropdown" aria-expanded="false">
17751777
if (setting.modalMode)
17761778
containerElement = containerElement.querySelector('[data-name="mds-dtp-body"]');
17771779
}
1778-
if (containerElement == null) {
1780+
if (!containerElement) {
17791781
console.error("mds.bs.datetimepicker: `data-mds-dtp-guid` element not found!")
17801782
return;
17811783
}
@@ -1787,10 +1789,8 @@ data-bs-toggle="dropdown" aria-expanded="false">
17871789
}
17881790
private changeMonth = (element: Element): void => {
17891791
const instance = MdsPersianDateTimePicker.getInstance(element);
1790-
if (!instance) {
1792+
if (!instance || instance.setting.disabled)
17911793
return;
1792-
}
1793-
if (instance.setting.disabled) return;
17941794
const dateNumber = Number(element.getAttribute('data-number'));
17951795
const setting = instance.setting;
17961796
let selectedDateToShow = MdsPersianDateTimePicker.getClonedDate(setting.selectedDateToShow);
@@ -1890,34 +1890,35 @@ data-bs-toggle="dropdown" aria-expanded="false">
18901890
const toDateElement = document.querySelector(`[data-mds-dtp-group="${setting.groupId}"][data-to-date]`);
18911891
const fromDateElement = document.querySelector(`[data-mds-dtp-group="${setting.groupId}"][data-from-date]`);
18921892
if (setting.fromDate && toDateElement != undefined) {
1893-
const instance = MdsPersianDateTimePicker.getInstance(toDateElement);
1894-
if (instance != null) {
1893+
const toDateInstance = MdsPersianDateTimePicker.getInstance(toDateElement);
1894+
if (toDateInstance != null) {
18951895
if (setting.inLine)
1896-
this.updateCalendarBodyHtml(toDateElement, instance.setting);
1896+
this.updateCalendarBodyHtml(toDateElement, toDateInstance.setting);
18971897
else
1898-
instance.initializeBsPopover(instance.setting);
1898+
toDateInstance.initializeBsPopover(toDateInstance.setting);
18991899
}
19001900
} else if (setting.toDate && fromDateElement != undefined) {
1901-
const instance = MdsPersianDateTimePicker.getInstance(fromDateElement);
1902-
if (instance != null) {
1901+
const fromDateInstance = MdsPersianDateTimePicker.getInstance(fromDateElement);
1902+
if (fromDateInstance != null) {
19031903
if (setting.inLine)
1904-
this.updateCalendarBodyHtml(fromDateElement, instance.setting);
1904+
this.updateCalendarBodyHtml(fromDateElement, fromDateInstance.setting);
19051905
else
1906-
instance.initializeBsPopover(instance.setting);
1906+
fromDateInstance.initializeBsPopover(fromDateInstance.setting);
19071907
}
19081908
} else
19091909
this.updateCalendarBodyHtml(element, setting);
1910-
} else {
1910+
} else
19111911
this.updateCalendarBodyHtml(element, setting, true);
1912-
}
19131912
if (setting.onDayClick != undefined)
19141913
setting.onDayClick(setting);
19151914
if (!setting.inLine) {
19161915
instance.hide();
19171916
} else {
19181917
// حذف روزهای انتخاب شده در تقویم این لاین
1919-
element.closest(`[data-mds-dtp-guid="${this.guid}"]`)!
1920-
.querySelectorAll('[data-day]')
1918+
let dtp = element.closest(`[data-mds-dtp-guid="${this.guid}"]`);
1919+
if (!dtp)
1920+
dtp = document.querySelector(`[data-mds-dtp-guid="${this.guid}"]`);
1921+
dtp!.querySelectorAll(`[data-day]:not([data-number="${element.getAttribute('data-number')}"])`)
19211922
.forEach(e => e.removeAttribute('data-mds-dtp-selected-day'));
19221923
}
19231924
}
@@ -1977,7 +1978,8 @@ data-bs-toggle="dropdown" aria-expanded="false">
19771978
private goToday = (e: Event): void => {
19781979
const element = <Element>e.target;
19791980
const instance = MdsPersianDateTimePicker.getInstance(element);
1980-
if (!instance) return;
1981+
if (!instance)
1982+
return;
19811983
const setting = instance.setting;
19821984
setting.selectedDateToShow = new Date();
19831985
MdsPersianDateTimePickerData.set(instance.guid, instance);
@@ -2089,7 +2091,8 @@ data-bs-toggle="dropdown" aria-expanded="false">
20892091
MdsPersianDateTimePickerData.getAll().forEach(i => i.hide());
20902092
const element = <Element>e.target;
20912093
const instance = MdsPersianDateTimePicker.getInstance(element);
2092-
if (instance == null || instance.setting.disabled) return;
2094+
if (!instance || instance.setting.disabled)
2095+
return;
20932096
instance.show();
20942097
}
20952098
private hidePopoverEvent = (e: Event): void => {

webpack.config.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ module.exports = {
3434
}, {
3535
test: /.s?css$/,
3636
use: [{
37-
loader: MiniCssExtractPlugin.loader,
38-
options: {}
39-
},
37+
loader: MiniCssExtractPlugin.loader,
38+
options: {}
39+
},
4040
'css-loader'
4141
],
4242
}],
@@ -81,9 +81,9 @@ module.exports = {
8181
banner: `
8282
Bootstrap 5+ Persian Date Time Picker
8383
https://github.com/Mds92/MD.BootstrapPersianDateTimePicker
84-
version : 4.2.6
85-
Written By Mohammad Dayyan, Mordad 1397 - 1402
86-
mds.soft@gmail.com - @mdssoft
84+
version : 4.4.0
85+
Written By Mohammad Dayyan, Mordad 1397 - 1404
86+
mds_soft@yahoo.com - @mds1401
8787
`
8888
})
8989
]

0 commit comments

Comments
 (0)