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 | &lt;color&gt; | -    | 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