1e41f4b71Sopenharmony_ci# calendar 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci 4e41f4b71Sopenharmony_ciThe **\<calendar>** component is used to display the calendar page. 5e41f4b71Sopenharmony_ci 6e41f4b71Sopenharmony_ci> **NOTE** 7e41f4b71Sopenharmony_ci> 8e41f4b71Sopenharmony_ci> The APIs of this module are supported since API version 8. Updates will be marked with a superscript to indicate their earliest API version. 9e41f4b71Sopenharmony_ci 10e41f4b71Sopenharmony_ci## Child Components 11e41f4b71Sopenharmony_ci 12e41f4b71Sopenharmony_ciNot supported 13e41f4b71Sopenharmony_ci 14e41f4b71Sopenharmony_ci 15e41f4b71Sopenharmony_ci## Attributes 16e41f4b71Sopenharmony_ci 17e41f4b71Sopenharmony_ciIn addition to the [universal attributes](js-service-widget-common-attributes.md), the following attributes are supported. 18e41f4b71Sopenharmony_ci 19e41f4b71Sopenharmony_ci| Name | Type | Default Value | Mandatory | Description | 20e41f4b71Sopenharmony_ci| -------------- | ------ | ----- | ---- | ---------------------------------------- | 21e41f4b71Sopenharmony_ci| date | string | Current date | No | Date selected on the current page. The default value is the current date in the format of YYYY-MM-DD, for example, 2019-11-22.| 22e41f4b71Sopenharmony_ci| cardcalendar | bool | false | No | Whether the current calendar is a widget calendar. | 23e41f4b71Sopenharmony_ci| startdayofweek | int | 6 | No | Start day of a week on the widget calendar. The default value is Sunday. The value ranges from 0 to 6. | 24e41f4b71Sopenharmony_ci| offdays | string | 5, 6 | No | Rest days of a week on the widget calendar. The default value is Saturday and Sunday. The value ranges from 0 to 6. | 25e41f4b71Sopenharmony_ci| calendardata | string | - | Yes | Data to be displayed on the monthly widget calendar. You can pass data of 5*7 or 6*7 days in the JSON format. For details about the **"data"** attribute, see Table 1.| 26e41f4b71Sopenharmony_ci| showholiday | bool | true | No | Whether to display holiday information. | 27e41f4b71Sopenharmony_ci 28e41f4b71Sopenharmony_ci**Table 1** "data" attributes of calendardata 29e41f4b71Sopenharmony_ci 30e41f4b71Sopenharmony_ci| Name | Type | Description | 31e41f4b71Sopenharmony_ci| -------------- | ------ | --------------------------------------- | 32e41f4b71Sopenharmony_ci| index | int | Index of the data, indicating the sequence number of the date. | 33e41f4b71Sopenharmony_ci| day | int | Day. | 34e41f4b71Sopenharmony_ci| month | int | Month. | 35e41f4b71Sopenharmony_ci| year | int | Year. | 36e41f4b71Sopenharmony_ci| isFirstOfLuanr | bool | Whether the day is the first day of the lunar calendar. The first day is underlined. | 37e41f4b71Sopenharmony_ci| hasSchedule | bool | Whether there is an event scheduled for the day. If there is, a circle is drawn around the date number. | 38e41f4b71Sopenharmony_ci| markLunarDay | bool | Whether the day is a holiday, on which lunar calendar data is marked in blue. | 39e41f4b71Sopenharmony_ci| lunarDay | string | Lunar date. | 40e41f4b71Sopenharmony_ci| lunarMonth | string | Lunar month. | 41e41f4b71Sopenharmony_ci| dayMark | string | Day mark.<br>- **work**: workday.<br>- **off**: rest day.| 42e41f4b71Sopenharmony_ci| dayMarkValue | string | Text to be displayed for a workday or a rest day. | 43e41f4b71Sopenharmony_ci 44e41f4b71Sopenharmony_ciExample of **calendardata**: 45e41f4b71Sopenharmony_ci 46e41f4b71Sopenharmony_ci``` 47e41f4b71Sopenharmony_ci{ 48e41f4b71Sopenharmony_ci"year":2021, 49e41f4b71Sopenharmony_ci"month":1, 50e41f4b71Sopenharmony_ci"data": [{ 51e41f4b71Sopenharmony_ci "index": 0, 52e41f4b71Sopenharmony_ci "lunarMonth": "11", 53e41f4b71Sopenharmony_ci "lunarDay": "13", 54e41f4b71Sopenharmony_ci "year": 2020, 55e41f4b71Sopenharmony_ci "month ": 12, 56e41f4b71Sopenharmony_ci "day": 27, 57e41f4b71Sopenharmony_ci "dayMark": "work", 58e41f4b71Sopenharmony_ci "dayMarkValue": "On-duty", 59e41f4b71Sopenharmony_ci "isFirstOfLunar": true, 60e41f4b71Sopenharmony_ci "hasSchedule": true, 61e41f4b71Sopenharmony_ci "markLunarDay": true 62e41f4b71Sopenharmony_ci }, { 63e41f4b71Sopenharmony_ci "index": 1, 64e41f4b71Sopenharmony_ci "lunarMonth": "11", 65e41f4b71Sopenharmony_ci "lunarDay": "14", 66e41f4b71Sopenharmony_ci "year": 2020, 67e41f4b71Sopenharmony_ci "month ": 12, 68e41f4b71Sopenharmony_ci "day": 28, 69e41f4b71Sopenharmony_ci "dayMark": "work", 70e41f4b71Sopenharmony_ci "dayMarkValue": "On-duty", 71e41f4b71Sopenharmony_ci "isFirstOfLunar": true, 72e41f4b71Sopenharmony_ci "hasSchedule": true, 73e41f4b71Sopenharmony_ci "markLunarDay": true 74e41f4b71Sopenharmony_ci }, { 75e41f4b71Sopenharmony_ci "index": 2, 76e41f4b71Sopenharmony_ci "lunarMonth": "11", 77e41f4b71Sopenharmony_ci "lunarDay": "15", 78e41f4b71Sopenharmony_ci "year": 2020, 79e41f4b71Sopenharmony_ci "month ": 12, 80e41f4b71Sopenharmony_ci "day": 29, 81e41f4b71Sopenharmony_ci "dayMark": "work", 82e41f4b71Sopenharmony_ci "dayMarkValue": "On-duty", 83e41f4b71Sopenharmony_ci "isFirstOfLunar": true, 84e41f4b71Sopenharmony_ci "hasSchedule": true, 85e41f4b71Sopenharmony_ci "markLunarDay": true 86e41f4b71Sopenharmony_ci }, 87e41f4b71Sopenharmony_ci ... 88e41f4b71Sopenharmony_ci ] 89e41f4b71Sopenharmony_ci} 90e41f4b71Sopenharmony_ci``` 91e41f4b71Sopenharmony_ci 92e41f4b71Sopenharmony_ci 93e41f4b71Sopenharmony_ci 94e41f4b71Sopenharmony_ci## Styles 95e41f4b71Sopenharmony_ci 96e41f4b71Sopenharmony_ci| Name | Type | Default Value | Mandatory | Description | 97e41f4b71Sopenharmony_ci| ---------------- | ------------- | ---- | ---- | ------- | 98e41f4b71Sopenharmony_ci| background-color | <color> | - | No | Background color.| 99e41f4b71Sopenharmony_ci 100e41f4b71Sopenharmony_ci 101e41f4b71Sopenharmony_ci## Events 102e41f4b71Sopenharmony_ci 103e41f4b71Sopenharmony_ci| Name | Parameter | Description | 104e41f4b71Sopenharmony_ci| -------------- | ------------ | --------------- | 105e41f4b71Sopenharmony_ci| selectedchange | changeEvent | A user clicks a date or switches between months.| 106e41f4b71Sopenharmony_ci| requestdata | requestEvent | A date is requested. | 107e41f4b71Sopenharmony_ci 108e41f4b71Sopenharmony_ci**Table 2** changeEvent 109e41f4b71Sopenharmony_ci 110e41f4b71Sopenharmony_ci| Name | Type | Description | 111e41f4b71Sopenharmony_ci| ------------ | ------ | ------ | 112e41f4b71Sopenharmony_ci| $event.day | string | Selected day.| 113e41f4b71Sopenharmony_ci| $event.month | string | Selected month.| 114e41f4b71Sopenharmony_ci| $event.year | string | Selected year.| 115e41f4b71Sopenharmony_ci 116e41f4b71Sopenharmony_ci**Table 3** requestEvent 117e41f4b71Sopenharmony_ci 118e41f4b71Sopenharmony_ci| Name | Type | Description | 119e41f4b71Sopenharmony_ci| ------------------- | ------ | -------- | 120e41f4b71Sopenharmony_ci| $event.month | string | Requested month. | 121e41f4b71Sopenharmony_ci| $event.year | string | Requested year. | 122e41f4b71Sopenharmony_ci| $event.currentYear | string | Current year.| 123e41f4b71Sopenharmony_ci| $event.currentMonth | string | Current month.| 124e41f4b71Sopenharmony_ci 125e41f4b71Sopenharmony_ci## Example 126e41f4b71Sopenharmony_ci 127e41f4b71Sopenharmony_ciThe following examples are not intended as copy-paste-ready. Further customization is required. 128e41f4b71Sopenharmony_ci 129e41f4b71Sopenharmony_ci 130e41f4b71Sopenharmony_ci```html 131e41f4b71Sopenharmony_ci<!-- xxx.hml --> 132e41f4b71Sopenharmony_ci<div class="container"> 133e41f4b71Sopenharmony_ci <calendar class="container_test" 134e41f4b71Sopenharmony_ci cardcalendar="true" 135e41f4b71Sopenharmony_ci onselectedchange="clickOneDay" 136e41f4b71Sopenharmony_ci onrequestdata="messageEventData" 137e41f4b71Sopenharmony_ci date="{{currentDate}}" 138e41f4b71Sopenharmony_ci offdays="{{offDays}}" 139e41f4b71Sopenharmony_ci showholiday="{{showHoliday}}" 140e41f4b71Sopenharmony_ci startdayofweek="{{startDayOfWeek}}" 141e41f4b71Sopenharmony_ci calendardata="{{calendarData}}"> 142e41f4b71Sopenharmony_ci </calendar> 143e41f4b71Sopenharmony_ci</div> 144e41f4b71Sopenharmony_ci``` 145e41f4b71Sopenharmony_ci 146e41f4b71Sopenharmony_ci 147e41f4b71Sopenharmony_ci```css 148e41f4b71Sopenharmony_ci/* xxx.css */ 149e41f4b71Sopenharmony_ci.container { 150e41f4b71Sopenharmony_ci flex-direction:column; 151e41f4b71Sopenharmony_ci width: 100%; 152e41f4b71Sopenharmony_ci height: 100%; 153e41f4b71Sopenharmony_ci align-items:center; 154e41f4b71Sopenharmony_ci padding-start: 4px; 155e41f4b71Sopenharmony_ci padding-end: 4px; 156e41f4b71Sopenharmony_ci} 157e41f4b71Sopenharmony_ci.container_test { 158e41f4b71Sopenharmony_ci background-color: white; 159e41f4b71Sopenharmony_ci} 160e41f4b71Sopenharmony_ci``` 161e41f4b71Sopenharmony_ci 162e41f4b71Sopenharmony_ci 163e41f4b71Sopenharmony_ci```json 164e41f4b71Sopenharmony_ci{ 165e41f4b71Sopenharmony_ci "data": { 166e41f4b71Sopenharmony_ci "currentDate": "", 167e41f4b71Sopenharmony_ci "offDays": "", 168e41f4b71Sopenharmony_ci "startDayOfWeek": 6, 169e41f4b71Sopenharmony_ci "showHoliday": true, 170e41f4b71Sopenharmony_ci "calendarData": "" 171e41f4b71Sopenharmony_ci }, 172e41f4b71Sopenharmony_ci "actions": { 173e41f4b71Sopenharmony_ci "clickOneDay": { 174e41f4b71Sopenharmony_ci "action": "router", 175e41f4b71Sopenharmony_ci "bundleName": "com.example.calendar", 176e41f4b71Sopenharmony_ci "abilityName": "EntryAbility", 177e41f4b71Sopenharmony_ci "params": { 178e41f4b71Sopenharmony_ci "action": "click_month_view_event", 179e41f4b71Sopenharmony_ci "day": "$event.day", 180e41f4b71Sopenharmony_ci "month": "$event.month", 181e41f4b71Sopenharmony_ci "year": "$event.year" 182e41f4b71Sopenharmony_ci } 183e41f4b71Sopenharmony_ci }, 184e41f4b71Sopenharmony_ci "messageEventData": { 185e41f4b71Sopenharmony_ci "action": "message", 186e41f4b71Sopenharmony_ci "params": { 187e41f4b71Sopenharmony_ci "month": "$event.month", 188e41f4b71Sopenharmony_ci "year": "$event.year", 189e41f4b71Sopenharmony_ci "currentMonth": "$event.currentMonth", 190e41f4b71Sopenharmony_ci "currentYear": "$event.currentYear" 191e41f4b71Sopenharmony_ci } 192e41f4b71Sopenharmony_ci } 193e41f4b71Sopenharmony_ci } 194e41f4b71Sopenharmony_ci} 195e41f4b71Sopenharmony_ci``` 196e41f4b71Sopenharmony_ci 197