161 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Vue
		
	
	
			
		
		
	
	
			161 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Vue
		
	
	
| <script>
 | |
| /* eslint react/no-multi-comp:0, no-console:0 */
 | |
| import '../assets/index.less'
 | |
| import PropTypes from '@/components/_util/vue-types'
 | |
| import DatePicker from '../src/Picker'
 | |
| import zhCN from '../src/locale/zh_CN'
 | |
| import enUS from '../src/locale/en_US'
 | |
| import '../../vc-time-picker/assets/index.less'
 | |
| import BaseMixin from '@/components/_util/BaseMixin'
 | |
| 
 | |
| import MonthCalendar from '../src/MonthCalendar'
 | |
| 
 | |
| import moment from 'moment'
 | |
| import 'moment/locale/zh-cn'
 | |
| import 'moment/locale/en-gb'
 | |
| 
 | |
| const format = 'YYYY-MM'
 | |
| const cn = window.location.search.indexOf('cn') !== -1
 | |
| 
 | |
| const now = moment()
 | |
| if (cn) {
 | |
|   now.locale('zh-cn').utcOffset(8)
 | |
| } else {
 | |
|   now.locale('en-gb').utcOffset(0)
 | |
| }
 | |
| 
 | |
| const defaultCalendarValue = now.clone()
 | |
| defaultCalendarValue.add(-1, 'month')
 | |
| 
 | |
| const Demo = {
 | |
|   mixins: [BaseMixin],
 | |
|   props: {
 | |
|     defaultValue: PropTypes.object,
 | |
|   },
 | |
| 
 | |
|   data () {
 | |
|     return {
 | |
|       showTime: true,
 | |
|       disabled: false,
 | |
|       value: this.defaultValue,
 | |
|     }
 | |
|   },
 | |
|   methods: {
 | |
|     onChange (value) {
 | |
|       console.log(`DatePicker change: ${value && value.format(format)}`)
 | |
|       this.setState({
 | |
|         value,
 | |
|       })
 | |
|     },
 | |
| 
 | |
|     onShowTimeChange (e) {
 | |
|       this.setState({
 | |
|         showTime: e.target.checked,
 | |
|       })
 | |
|     },
 | |
| 
 | |
|     toggleDisabled () {
 | |
|       this.setState({
 | |
|         disabled: !this.disabled,
 | |
|       })
 | |
|     },
 | |
|   },
 | |
| 
 | |
|   render () {
 | |
|     const state = this.$data
 | |
|     const calendar = (<MonthCalendar
 | |
|       locale={cn ? zhCN : enUS}
 | |
|       style={{ zIndex: 1000 }}
 | |
|     />)
 | |
|     return (<div style={{ width: '240px', margin: '20px' }}>
 | |
|       <div style={{ marginBottom: '10px' }}>
 | |
|             
 | |
|         <label>
 | |
|           <input
 | |
|             checked={state.disabled}
 | |
|             onChange={this.toggleDisabled}
 | |
|             type='checkbox'
 | |
|           /> disabled
 | |
|         </label>
 | |
|       </div>
 | |
|       <div style={{
 | |
|         boxSizing: 'border-box',
 | |
|         position: 'relative',
 | |
|         display: 'block',
 | |
|         lineHeight: 1.5,
 | |
|         marginBottom: '22px',
 | |
|       }}
 | |
|       >
 | |
|         <DatePicker
 | |
|           animation='slide-up'
 | |
|           disabled={state.disabled}
 | |
|           calendar={calendar}
 | |
|           value={state.value}
 | |
|           onChange={this.onChange}
 | |
|           scopedSlots={{
 | |
|             default: ({ value }) => {
 | |
|               return (
 | |
|                 <input
 | |
|                   style={{ width: '200px' }}
 | |
|                   readOnly
 | |
|                   disabled={state.disabled}
 | |
|                   value={value && value.format(format)}
 | |
|                   placeholder='č¯ˇéæŠæĨæ'
 | |
|                 />
 | |
|               )
 | |
|             },
 | |
|           }}
 | |
|         >
 | |
|         </DatePicker>
 | |
|       </div>
 | |
|     </div>)
 | |
|   },
 | |
| }
 | |
| 
 | |
| function onStandaloneSelect (value) {
 | |
|   console.log('month-calendar select', (value && value.format(format)))
 | |
| }
 | |
| 
 | |
| function onStandaloneChange (value) {
 | |
|   console.log('month-calendar change', (value && value.format(format)))
 | |
| }
 | |
| 
 | |
| function disabledDate (value) {
 | |
|   return value.year() > now.year() ||
 | |
|     value.year() === now.year() && value.month() > now.month()
 | |
| }
 | |
| 
 | |
| function onMonthCellContentRender (value) {
 | |
|   // console.log('month-calendar onMonthCellContentRender', (value && value.format(format)));
 | |
|   return `${value.month() + 1}æ`
 | |
| }
 | |
| export default {
 | |
|   render () {
 | |
|     return (
 | |
|       <div
 | |
|         style={{
 | |
|           zIndex: 1000,
 | |
|           position: 'relative',
 | |
|           width: '600px',
 | |
|           margin: '0 auto',
 | |
|         }}
 | |
|       >
 | |
|         <MonthCalendar
 | |
|           locale={cn ? zhCN : enUS}
 | |
|           style={{ zIndex: 1000 }}
 | |
|           disabledDate={disabledDate}
 | |
|           onSelect={onStandaloneSelect}
 | |
|           onChange={onStandaloneChange}
 | |
|           monthCellContentRender={onMonthCellContentRender}
 | |
|           defaultValue={defaultCalendarValue}
 | |
|         />
 | |
| 
 | |
|         <div style={{ marginTop: '200px' }}>
 | |
|           <Demo defaultValue={now} />
 | |
|         </div>
 | |
|       </div>
 | |
|     )
 | |
|   },
 | |
| }
 | |
| </script>
 |