Skip to content

Commit f2dfacc

Browse files
committed
persianNumber option added
1 parent 0fcfa12 commit f2dfacc

7 files changed

Lines changed: 52 additions & 11 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ Name | Values | Description | Sample
7373
**disableAfterDate** | Date | Disable days after this Date | new Date(2018, 12, 11)
7474
**rangeSelector** | [false], true | Enables rangeSelector feature on date time picker
7575
**monthsToShow** | Numeric array with 2 items, [0 ,0] | To show, number of month before and after selected date in date time picker, first item is for before month, second item is for after month | [1, 1]
76+
**persianNumber** | [false], true | Convert numbers to persian characters |
7677
**calendarViewOnChange(date)** | function | Event fires on date picker's view change
7778
**onDayClick(event)** | function | Event fires on day cell click
7879

demo/demo.html

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,25 @@ <h1 class="h2">MD BootstrapPersianDateTimePicker Demo</h1>
2323
<div class="col-12">
2424
<h2>Options</h2>
2525
<hr>
26+
<!-- persianNumber -->
27+
<div class="row">
28+
<label class="col-5 col-form-label">persianNumber</label>
29+
<div class="col-7 pt-2">
30+
<div class="form-check form-check-inline">
31+
<input class="form-check-input" type="radio" name="persianNumberRadioOptions"
32+
id="persianNumberRadioOptionsId1" value="1" v-model="persianNumber"
33+
v-on:change="optionChange('persianNumber', true)">
34+
<label class="form-check-label" for="persianNumberRadioOptionsId1">true</label>
35+
</div>
36+
<div class="form-check form-check-inline">
37+
<input class="form-check-input" type="radio" name="persianNumberRadioOptions"
38+
id="persianNumberRadioOptionsId2" value="0" v-model="persianNumber"
39+
v-on:change="optionChange('persianNumber', false)">
40+
<label class="form-check-label" for="persianNumberRadioOptionsId2">false</label>
41+
</div>
42+
</div>
43+
</div>
44+
<hr>
2645
<!-- disabled -->
2746
<div class="row">
2847
<label class="col-5 col-form-label">disabled</label>

demo/demo.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
var vueApp = new Vue({
22
el: '#vueAppOptions',
33
data: {
4+
persianNumber: '0',
45
disabled: '0',
56
isGregorian: '0',
67
inLine: '0',

dist/mds.bs.datetimepicker.js

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.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.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "md.bootstrappersiandatetimepicker",
3-
"version": "4.0.0",
3+
"version": "4.1.0",
44
"description": "Persian Date Time Picker with Bootstrap 5+",
55
"license": "MIT",
66
"moduleResolution": "node",

src/mds.bs.datetimepicker.ts

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -831,15 +831,30 @@ data-bs-toggle="dropdown" aria-expanded="false">
831831
str1 = str1.replace(/9/img, '۹');
832832
return str1;
833833
}
834+
private static toEnglishNumber(inputNumber1: number | string): string {
835+
/* ۰ ۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ */
836+
if (!inputNumber1) return '';
837+
let str1 = inputNumber1.toString().trim();
838+
if (!str1) return '';
839+
str1 = str1.replace(/۰/img, '0');
840+
str1 = str1.replace(/۱/img, '1');
841+
str1 = str1.replace(/۲/img, '2');
842+
str1 = str1.replace(/۳/img, '3');
843+
str1 = str1.replace(/۴/img, '4');
844+
str1 = str1.replace(/۵/img, '5');
845+
str1 = str1.replace(/۶/img, '6');
846+
str1 = str1.replace(/۷/img, '7');
847+
str1 = str1.replace(/۸/img, '8');
848+
str1 = str1.replace(/۹/img, '9');
849+
return str1;
850+
}
834851
private static zeroPad(nr: any, base?: string): string {
835852
if (nr == undefined || nr == '') return '00';
836853
if (base == undefined || base == '') base = '00';
837854
let len = (String(base).length - String(nr).length) + 1;
838855
return len > 0 ? new Array(len).join('0') + nr : nr;
839856
}
840-
private static getDateTimeString(dateTimeJson: GetDateTimeJson1, format: string, isGregorian: boolean, englishNumber: boolean): string {
841-
842-
if (isGregorian) englishNumber = true;
857+
private static getDateTimeString(dateTimeJson: GetDateTimeJson1, format: string, isGregorian: boolean, persianNumber: boolean): string {
843858

844859
/// فرمت های که پشتیبانی می شوند
845860
/// <para />
@@ -907,7 +922,8 @@ data-bs-toggle="dropdown" aria-expanded="false">
907922
format = format.replace(/tt/mg, this.getAmPm(dateTimeJson.hour, isGregorian));
908923
format = format.replace(/t/mg, this.getAmPm(dateTimeJson.hour, isGregorian)[0]);
909924

910-
if (!englishNumber) format = MdsPersianDateTimePicker.toPersianNumber(format);
925+
if (persianNumber)
926+
format = MdsPersianDateTimePicker.toPersianNumber(format);
911927
return format;
912928
}
913929
private static getSelectedDateTimeTextFormatted(setting: MdsPersianDateTimePickerSetting): string {
@@ -918,9 +934,9 @@ data-bs-toggle="dropdown" aria-expanded="false">
918934
setting.selectedDate.setSeconds(0);
919935
}
920936
if (setting.rangeSelector && setting.rangeSelectorStartDate != undefined && setting.rangeSelectorEndDate != undefined)
921-
return MdsPersianDateTimePicker.getDateTimeString(!setting.isGregorian ? MdsPersianDateTimePicker.getDateTimeJsonPersian1(setting.rangeSelectorStartDate) : MdsPersianDateTimePicker.getDateTimeJson1(setting.rangeSelectorStartDate), setting.textFormat, setting.isGregorian, setting.isGregorian) + ' - ' +
922-
MdsPersianDateTimePicker.getDateTimeString(!setting.isGregorian ? MdsPersianDateTimePicker.getDateTimeJsonPersian1(setting.rangeSelectorEndDate) : MdsPersianDateTimePicker.getDateTimeJson1(setting.rangeSelectorEndDate), setting.textFormat, setting.isGregorian, setting.isGregorian);
923-
return MdsPersianDateTimePicker.getDateTimeString(!setting.isGregorian ? MdsPersianDateTimePicker.getDateTimeJsonPersian1(setting.selectedDate) : MdsPersianDateTimePicker.getDateTimeJson1(setting.selectedDate), setting.textFormat, setting.isGregorian, setting.isGregorian);
937+
return MdsPersianDateTimePicker.getDateTimeString(!setting.isGregorian ? MdsPersianDateTimePicker.getDateTimeJsonPersian1(setting.rangeSelectorStartDate) : MdsPersianDateTimePicker.getDateTimeJson1(setting.rangeSelectorStartDate), setting.textFormat, setting.isGregorian, setting.persianNumber) + ' - ' +
938+
MdsPersianDateTimePicker.getDateTimeString(!setting.isGregorian ? MdsPersianDateTimePicker.getDateTimeJsonPersian1(setting.rangeSelectorEndDate) : MdsPersianDateTimePicker.getDateTimeJson1(setting.rangeSelectorEndDate), setting.textFormat, setting.isGregorian, setting.persianNumber);
939+
return MdsPersianDateTimePicker.getDateTimeString(!setting.isGregorian ? MdsPersianDateTimePicker.getDateTimeJsonPersian1(setting.selectedDate) : MdsPersianDateTimePicker.getDateTimeJson1(setting.selectedDate), setting.textFormat, setting.isGregorian, setting.persianNumber);
924940
}
925941
private static getSelectedDateFormatted(setting: MdsPersianDateTimePickerSetting): string {
926942
// دریافت رشته تاریخ انتخاب شده
@@ -967,7 +983,7 @@ data-bs-toggle="dropdown" aria-expanded="false">
967983
targetTextElement.dispatchEvent(changeEvent);
968984
}
969985
if (targetDateElement != undefined) {
970-
const dateTimeFormat = this.getSelectedDateFormatted(setting);
986+
const dateTimeFormat = this.toEnglishNumber(this.getSelectedDateFormatted(setting));
971987
switch (targetDateElement.tagName.toLowerCase()) {
972988
case 'input':
973989
(<any>targetDateElement).value = dateTimeFormat;
@@ -2376,6 +2392,10 @@ export class MdsPersianDateTimePickerSetting {
23762392
* آیا تقویم به صورت مدال نمایش داده شود
23772393
*/
23782394
modalMode = false;
2395+
/**
2396+
* تبدیل اعداد به فارسی
2397+
*/
2398+
persianNumber = false;
23792399
/**
23802400
* رویداد عوض شدن ماه و تاریخ در دیت پیکر
23812401
* @param _ تاریخ ماه انتخابی

0 commit comments

Comments
 (0)