Skip to content

Commit 179f28e

Browse files
committed
Add theme managing.
1 parent 2ab2baf commit 179f28e

5 files changed

+72
-12
lines changed

DatePicker.php

+28-5
Original file line numberDiff line numberDiff line change
@@ -17,26 +17,40 @@ class DatePicker extends InputWidget
1717
*/
1818
public $clientOptions = ['formatDate' => "YYYY/0M/0D"];
1919

20+
public $theme = 'default';
2021
public function init()
2122
{
2223
parent::init();
2324
}
2425

2526
function run()
2627
{
27-
$this->registerAsset();
28-
2928
echo $this->renderInput();
3029

3130
$this->renderJsCode();
3231
}
3332
/**
34-
* Register datepicker asset into view.
33+
* Register datepicker default theme asset into view.
34+
*/
35+
function registerDefaultThemeAsset()
36+
{
37+
DatePickerDefaultThemeAsset::register($this->getView());
38+
}
39+
/**
40+
* Register datepicker dark theme asset into view.
41+
*/
42+
function registerDarkThemeAsset()
43+
{
44+
DatePickerDarkThemeAsset::register($this->getView());
45+
}
46+
/**
47+
* Register datepicker assets without into view.
3548
*/
36-
function registerAsset()
49+
function registerNoThemeAsset()
3750
{
3851
DatePickerAsset::register($this->getView());
3952
}
53+
4054
/**
4155
* Render input.
4256
*/
@@ -54,13 +68,23 @@ function renderInput()
5468
function renderJsCode()
5569
{
5670
$name = 'persianDatepicker';
71+
5772
$id = $this->options['id'];
73+
74+
$this->clientOptions['theme'] = $this->theme;
75+
5876
if(! isset($this->clientOptions['onSelect'])) {
5977
$this->clientOptions['onSelect'] = "function(){
6078
$('#$id').trigger('change');
6179
}";
6280
}
6381

82+
if(in_array($this->theme, ['default', 'dark'])) {
83+
$this->{"register" . ucfirst($this->theme) . "ThemeAsset"}();
84+
} else {
85+
$this->registerNoThemeAsset();
86+
}
87+
6488
$onSelect = $this->clientOptions['onSelect'];
6589

6690
if(isset($this->clientOptions['onShow'])) {
@@ -91,7 +115,6 @@ function renderJsCode()
91115
}
92116
$options .= '}';
93117
}
94-
95118
$js = "jQuery('#$id').$name($options);";
96119

97120
$this->getView()->registerJs($js);

DatePickerAsset.php

-3
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,6 @@ class DatePickerAsset extends AssetBundle
1414
public $js = [
1515
'js/persianDatepicker.min.js',
1616
];
17-
public $css = [
18-
'css/persianDatepicker-default.css',
19-
];
2017
public $depends = [
2118
'yii\web\JqueryAsset',
2219
];

DatePickerDarkThemeAsset.php

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?php
2+
3+
namespace jDate;
4+
5+
/**
6+
* @author Mohammad Mahdi Gholomian.
7+
* @copyright 2014 [email protected]
8+
*/
9+
class DatePickerDarkThemeAsset extends DatePickerAsset
10+
{
11+
public $css = [
12+
'css/persianDatepicker-dark.css',
13+
];
14+
}

DatePickerDefaultThemeAsset.php

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?php
2+
3+
namespace jDate;
4+
5+
/**
6+
* @author Mohammad Mahdi Gholomian.
7+
* @copyright 2014 [email protected]
8+
*/
9+
class DatePickerDefaultThemeAsset extends DatePickerAsset
10+
{
11+
public $css = [
12+
'css/persianDatepicker-default.css',
13+
];
14+
}

README.md

+16-4
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,10 @@ Use in `active form`:
8080
<?= $form->field($model, 'fieldname')->widget(jDate\DatePicker::className()) ?>
8181
```
8282

83-
###Datepicker ClientOptions###
84-
> Add this to ClientOptions
83+
###Datepicker `ClientOptions`###
84+
85+
> Add these to `ClientOptions` var.
86+
8587
####Change date picker size:
8688

8789
```php
@@ -99,7 +101,6 @@ Use in `active form`:
99101
]
100102
```
101103

102-
103104
####Use english numbers in date picker:
104105

105106
```php
@@ -116,8 +117,19 @@ Use in `active form`:
116117
]
117118
```
118119

120+
###Datepicker `Theme`###
121+
122+
Now date picker have 2 theme `default` and `dark`.
123+
124+
For set theme set `theme` var.
125+
126+
```php
127+
<?= jDate\DatePicker::widget([
128+
'model' => $model, 'attribute' => 'date', 'theme' => 'dark'
129+
]) ?>
130+
```
119131

120-
###Datepicker Events#####
132+
###Datepicker `Events`#####
121133

122134
> **NOTE** : If you want rewriting onSelect event and using `active form` add `options[id]` and add
123135
>

0 commit comments

Comments
 (0)