Skip to content

Commit 3297180

Browse files
✨ [feature] Add a function: Customize the header(lanjingling0510#16)
1 parent 5a7a48a commit 3297180

10 files changed

Lines changed: 3239 additions & 3148 deletions

File tree

.eslintignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
11
dist/*
22
node_modules/*
33
test/*
4+
stories/*
5+
postcss.config.js
6+
rollup.config.js
7+
examples/*
8+
coverage/*

.eslintrc

Lines changed: 7 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,7 @@
1-
{
2-
"extends": "airbnb",
3-
"parser": "babel-eslint",
4-
"rules": {
5-
"camelcase": 0,
6-
"indent": [2, 4, {"SwitchCase": 1}],
7-
"no-use-before-define": 0,
8-
"no-restricted-syntax": ["error", "WithStatement"],
9-
"space-before-function-paren": [2, {"anonymous": "always", "named": "never"}],
10-
"no-param-reassign": 0,
11-
"func-names": 0,
12-
"new-cap": 0,
13-
"no-underscore-dangle": 0,
14-
"arrow-body-style": 0,
15-
"no-console": 0,
16-
"no-nested-ternary": 0,
17-
"block-scoped-var": 0,
18-
"global-require": 0,
19-
"no-confusing-arrow": 0,
20-
"react/jsx-indent-props": [2, 4],
21-
"react/jsx-boolean-value": 0,
22-
"react/jsx-indent": [2, 4],
23-
"react/jsx-closing-bracket-location": [2, {"location": "after-props"}]
24-
},
25-
"env": {
26-
"jquery": true
27-
}
28-
}
1+
{
2+
"extends": ["cqaso-kit"],
3+
"rules": {
4+
"flowtype/define-flow-type": 1,
5+
"flowtype/use-flow-type": 1
6+
}
7+
}

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,8 @@ ReactDOM.render(<App />, document.getElementById('react-box'));
131131
| value | Date | new Date() | date value |
132132
| min | Date | new Date(1970, 0, 1) | minimum date |
133133
| max | Date | new Date(2050, 0, 1) | maximum date |
134+
| showHeader | Boolean | true | whether to show the header |
135+
| customHeader | ReactElement | undefined | customize the header, if you set this property, it will replace `showFormat`|
134136
| confirmText | String | 完成 | customize the selection time button text |
135137
| cancelText | String | 取消 | customize the cancel button text |
136138
| onSelect | Function | () => {} | the callback function after click button of done, Date object as a parameter |

config.js

Lines changed: 0 additions & 3 deletions
This file was deleted.

lib/DatePicker.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ type Props = {
1212
value: Object,
1313
min: Object,
1414
max: Object,
15+
customHeader?: React.Element<*>,
16+
showHeader: boolean,
1517
dateFormat: Array<*>,
1618
showFormat: string,
1719
confirmText: string,
@@ -82,7 +84,7 @@ class DatePicker extends Component<void, Props, State> {
8284
* @return {Object} JSX对象
8385
*/
8486
render() {
85-
const { min, max, theme, dateFormat, confirmText, cancelText, showFormat } = this.props;
87+
const { min, max, theme, dateFormat, confirmText, cancelText, showFormat, showHeader, customHeader } = this.props;
8688
const value = this.state.value;
8789
const themeClassName =
8890
['default', 'dark', 'ios', 'android', 'android-dark'].indexOf(theme) === -1 ?
@@ -91,7 +93,8 @@ class DatePicker extends Component<void, Props, State> {
9193
return (
9294
<div
9395
className={`datepicker ${themeClassName}`}>
94-
<div className="datepicker-header">{convertDate(value, showFormat)}</div>
96+
{showHeader &&
97+
<div className="datepicker-header">{customHeader || convertDate(value, showFormat)}</div>}
9598
<div className="datepicker-content">
9699
{dateFormat.map((format, index) => (
97100
<DatePickerItem
@@ -101,7 +104,7 @@ class DatePicker extends Component<void, Props, State> {
101104
max={max}
102105
format={format}
103106
onSelect={this.handleDateSelect} />
104-
))}
107+
))}
105108
</div>
106109
<div className="datepicker-navbar">
107110
<a

lib/index.css

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@
4343
bottom: 0;
4444
width: 100%;
4545
z-index: 1;
46-
height: 266px;
4746
font-size: 16px;
4847
text-align: center;
4948
font-family: arial,verdana,sans-serif;
@@ -56,7 +55,6 @@
5655
min-height: 2em;
5756
line-height: 2em;
5857
font-size: 1.125em;
59-
display: none;
6058
}
6159

6260
.datepicker-navbar {
@@ -123,6 +121,10 @@
123121
/* default */
124122
&.default {
125123
background-color: var(--default-bg);
124+
125+
.datepicker-header {
126+
color: var(--default-theme);
127+
}
126128
.datepicker-wheel {
127129
border-top: 1px solid var(--default-theme);
128130
border-bottom: 1px solid var(--default-theme);
@@ -144,6 +146,10 @@
144146
/* dark */
145147
&.dark {
146148
background-color: var(--dark-bg);
149+
150+
.datepicker-header {
151+
color: var(--dark-theme);
152+
}
147153
.datepicker-wheel {
148154
border-top: 1px solid var(--dark-theme);
149155
border-bottom: 1px solid var(--dark-theme);
@@ -166,6 +172,11 @@
166172
&.ios {
167173
background-color: var(--ios-bg);
168174
.datepicker-col-1 {margin: 0}
175+
176+
.datepicker-header {
177+
color: var(--ios-color);
178+
padding: 0 3.5em;
179+
}
169180
.datepicker-viewport {
170181
&::after {
171182
background: linear-gradient(#f7f7f7,rgba(245,245,245,0)52%,rgba(245,245,245,0)48%,#f7f7f7);
@@ -187,6 +198,7 @@
187198

188199
.datepicker-navbar {
189200
position: absolute;
201+
z-index: 2;
190202
top: 0;
191203
left: 0;
192204
width: 100%;
@@ -203,19 +215,20 @@
203215
.datepicker-content {
204216
padding-top: 48px;
205217
}
218+
219+
.datepicker-header + .datepicker-content {
220+
padding-top: 0;
221+
}
206222
}
207223

208224

209225
/* android */
210-
211226
&.android, &.android-dark {
212-
height: 294px;
213227
background-color: var(--android-bg);
214228

215229
.datepicker-header {
216230
color: var(--android-theme);
217231
border-bottom: 2px solid var(--android-theme);
218-
display: block;
219232
}
220233
.datepicker-col-1 {margin: 0 .625em}
221234
.datepicker-viewport {

lib/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ ModalDatePicker.defaultProps = {
4747
value: new Date(),
4848
min: new Date(1970, 0, 1),
4949
max: new Date(2050, 0, 1),
50+
showHeader: true,
5051
dateFormat: ['YYYY', 'M', 'D'],
5152
showFormat: 'YYYY/MM/DD',
5253
confirmText: '完成',

0 commit comments

Comments
 (0)