<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<control xmlns="http://www.sap.com/sap.ui.library.xsd">
    <name>PlanningCalendar</name>
    <derived/>
    <documentation>Displays rows with appointments for different entities (such as persons or teams) for the selected time interval.

&lt;h3&gt;Overview&lt;/h3&gt;

You can use the &lt;code&gt;PlanningCalendar&lt;/code&gt; to represent a calendar containing multiple rows with
appointments, where each row represents a different person.

You can configure different time-interval views that the user can switch between, such as hours or days, and even
a whole week/month. The available navigation allows the user to select a specific interval using a picker, or
move to the previous/next interval using arrows.

&lt;b&gt;Note:&lt;/b&gt; The &lt;code&gt;PlanningCalendar&lt;/code&gt; uses parts of the &lt;code&gt;sap.ui.unified&lt;/code&gt; library.
This library will be loaded after the &lt;code&gt;PlanningCalendar&lt;/code&gt;, if it wasn't loaded first.
This could lead to a waiting time when a &lt;code&gt;PlanningCalendar&lt;/code&gt; is used for the first time.
To prevent this, apps that use the &lt;code&gt;PlanningCalendar&lt;/code&gt; should also load the
&lt;code&gt;sap.ui.unified&lt;/code&gt; library.

&lt;h3&gt;Usage&lt;/h3&gt;

The &lt;code&gt;PlanningCalendar&lt;/code&gt; has the following structure from top to bottom:

&lt;ul&gt;
&lt;li&gt;A toolbar where you can add your own buttons or other controls using the &lt;code&gt;toolbarContent&lt;/code&gt; aggregation.&lt;/li&gt;
&lt;li&gt;A header containing a drop-down menu for selecting the {@link sap.m.PlanningCalendarView PlanningCalendarViews},
and navigation for moving through the intervals using arrows or selecting a specific interval with a picker.
Custom views can be configured using the &lt;code&gt;views&lt;/code&gt; aggregation. If not configured, the following set of default
built-in views is available - Hours, Days, 1 Week, 1 Month, and Months. Setting a custom view(s) replaces the built-in ones.&lt;/li&gt;
&lt;li&gt;The rows of the &lt;code&gt;PlanningCalendar&lt;/code&gt; that contain the assigned appointments.
They can be configured with the &lt;code&gt;rows&lt;/code&gt; aggregation, which is of type
{@link sap.m.PlanningCalendarRow PlanningCalendarRow}.&lt;/li&gt;
&lt;/ul&gt;

Since 1.48 the empty space in the cell that is below an appointment can be removed by adding
the &lt;code&gt;sapUiCalendarAppFitVertically&lt;/code&gt; CSS class to the &lt;code&gt;PlanningCalendar&lt;/code&gt;.
Please note that it should be used only for a &lt;code&gt;PlanningCalendar&lt;/code&gt; with one appointment per day
for a row that doesn't have interval headers set.

Since 1.44 alternating row colors can be suppressed by adding the &lt;code&gt;sapMPlanCalSuppressAlternatingRowColors&lt;/code&gt;
CSS class to the &lt;code&gt;PlanningCalendar&lt;/code&gt;.

&lt;h3&gt;Responsive behavior&lt;/h3&gt;

You can define the number of displayed intervals based on the size of the &lt;code&gt;PlanningCalendar&lt;/code&gt; using the
{@link sap.m.PlanningCalendarView PlanningCalendarView}'s properties.</documentation>
    <since>1.34</since>
    <baseType>sap.ui.core/Control</baseType>
    <properties>
        <property name="startDate" type="sap.ui.core/object" group="Data">
            <documentation>Determines the start date of the row, as a JavaScript date object. The current date is used as default.</documentation>
        </property>
        <property name="viewKey" type="sap.ui.core/string" defaultValue="sap.ui.unified.CalendarIntervalType.Hour" group="Appearance">
            <documentation>Defines the key of the &lt;code&gt;PlanningCalendarView&lt;/code&gt; used for the output.

&lt;b&gt;Note:&lt;/b&gt; The default value is set &lt;code&gt;Hour&lt;/code&gt;. If you are using your own views, the keys of these
views should be used instead.</documentation>
        </property>
        <property name="singleSelection" type="sap.ui.core/boolean" defaultValue="true" group="Misc">
            <documentation>Determines whether only a single row can be selected.</documentation>
        </property>
        <property name="width" type="sap.ui.core/CSSSize" group="Dimension">
            <documentation>Specifies the width of the &lt;code&gt;PlanningCalendar&lt;/code&gt;.</documentation>
        </property>
        <property name="height" type="sap.ui.core/CSSSize" group="Dimension">
            <documentation>Specifies the height of the &lt;code&gt;PlanningCalendar&lt;/code&gt;.
&lt;b&gt;Note:&lt;/b&gt; If the set height is less than the displayed content, it will not be applied</documentation>
        </property>
        <property name="showIntervalHeaders" type="sap.ui.core/boolean" defaultValue="true" group="Appearance">
            <documentation>Determines whether the assigned interval headers are displayed. You can assign them using the
&lt;code&gt;intervalHeaders&lt;/code&gt; aggregation of the {@link sap.m.PlanningCalendarRow PlanningCalendarRow}.

&lt;b&gt;Note:&lt;/b&gt; If you set both &lt;code&gt;showIntervalHeaders&lt;/code&gt; and &lt;code&gt;showEmptyIntervalHeaders&lt;/code&gt;
properties to &lt;code&gt;true&lt;/code&gt;, the space (at the top of the intervals) where the assigned interval
headers appear, will remain visible even if no interval headers are assigned.</documentation>
        </property>
        <property name="showEmptyIntervalHeaders" type="sap.ui.core/boolean" defaultValue="true" group="Appearance" since="1.38.0">
            <documentation>Determines whether the space (at the top of the intervals), where the assigned interval headers appear, should remain
visible even when no interval headers are present in the visible time frame. If set to &lt;code&gt;false&lt;/code&gt;, this
space would collapse/disappear when no interval headers are assigned.

&lt;b&gt;Note:&lt;/b&gt; This property takes effect, only if &lt;code&gt;showIntervalHeaders&lt;/code&gt; is also set to &lt;code&gt;true&lt;/code&gt;.</documentation>
        </property>
        <property name="showRowHeaders" type="sap.ui.core/boolean" defaultValue="true" group="Appearance">
            <documentation>Determines whether the column containing the headers of the {@link sap.m.PlanningCalendarRow PlanningCalendarRows}
is displayed.</documentation>
        </property>
        <property name="noDataText" type="sap.ui.core/string" group="Misc">
            <documentation>Defines the text that is displayed when no {@link sap.m.PlanningCalendarRow PlanningCalendarRows} are assigned.</documentation>
        </property>
        <property name="groupAppointmentsMode" type="sap.ui.unified/GroupAppointmentsMode" defaultValue="Collapsed" group="Appearance" since="1.48.0">
            <documentation>Defines the mode in which the overlapping appointments are displayed.

&lt;b&gt;Note:&lt;/b&gt; This property takes effect, only if the &lt;code&gt;intervalType&lt;/code&gt; of the current calendar view
is set to &lt;code&gt;sap.ui.unified.CalendarIntervalType.Month&lt;/code&gt;. On phone devices this property is ignored,
and the default value is applied.</documentation>
        </property>
        <property name="appointmentsReducedHeight" type="sap.ui.core/boolean" defaultValue="false" group="Appearance" since="1.38.0">
            <documentation>Determines whether the appointments that have only title without text are rendered with smaller height.

&lt;b&gt;Note:&lt;/b&gt; On phone devices this property is ignored, appointments are always rendered in full height
to facilitate touching.</documentation>
        </property>
        <property name="appointmentsVisualization" type="sap.ui.unified/CalendarAppointmentVisualization" defaultValue="Standard" group="Appearance" since="1.40.0">
            <documentation>Determines how the appointments are visualized depending on the used theme.</documentation>
        </property>
        <property name="minDate" type="sap.ui.core/object" group="Misc" since="1.38.0">
            <documentation>Defines the minimum date that can be displayed and selected in the &lt;code&gt;PlanningCalendar&lt;/code&gt;.
This must be a JavaScript date object.

&lt;b&gt;Note:&lt;/b&gt; If the &lt;code&gt;minDate&lt;/code&gt; is set to be after the current &lt;code&gt;maxDate&lt;/code&gt;,
the &lt;code&gt;maxDate&lt;/code&gt; is set to the last date of the month in which the &lt;code&gt;minDate&lt;/code&gt; belongs.</documentation>
        </property>
        <property name="maxDate" type="sap.ui.core/object" group="Misc" since="1.38.0">
            <documentation>Defines the maximum date that can be displayed and selected in the &lt;code&gt;PlanningCalendar&lt;/code&gt;.
This must be a JavaScript date object.

&lt;b&gt;Note:&lt;/b&gt; If the &lt;code&gt;maxDate&lt;/code&gt; is set to be before the current &lt;code&gt;minDate&lt;/code&gt;,
the &lt;code&gt;minDate&lt;/code&gt; is set to the first date of the month in which the &lt;code&gt;maxDate&lt;/code&gt; belongs.</documentation>
        </property>
        <property name="showDayNamesLine" type="sap.ui.core/boolean" defaultValue="false" group="Appearance" since="1.50">
            <documentation>Determines whether the day names are displayed in a separate line or inside the single days.</documentation>
        </property>
        <property name="showWeekNumbers" type="sap.ui.core/boolean" defaultValue="false" group="Appearance" since="1.52">
            <documentation>Determines if the week numbers are displayed.</documentation>
        </property>
        <property name="builtInViews" type="sap.ui.core/string[]" defaultValue="[]" group="Appearance" since="1.50">
            <documentation>Defines the list of predefined views as an array.
The views should be specified by their keys.

The default predefined views and their keys are available at
{@link sap.m.PlanningCalendarBuiltInView}.

&lt;b&gt;Note:&lt;/b&gt; If set, all specified views will be displayed along
with any custom views (if available). If not set and no custom
views are available, all default views will be displayed.
If not set and there are any custom views available, only the
custom views will be displayed.</documentation>
        </property>
        <property name="stickyHeader" type="sap.ui.core/boolean" defaultValue="false" group="Appearance" since="1.54">
            <documentation>Determines whether the header area will remain visible (fixed on top) when the rest of the content is scrolled out of view.

The sticky header behavior is automatically disabled on phones in landscape mode for better visibility of the content.

&lt;b&gt;Note:&lt;/b&gt; There is limited browser support, hence the API is in experimental state.
Browsers that currently support this feature are Chrome (desktop and mobile), Safari (desktop and mobile) and Edge 41.

There are also some known issues with respect to the scrolling behavior and focus handling. A few are given below:

When the PlanningCalendar is placed in certain layout containers, for example the &lt;code&gt;GridLayout&lt;/code&gt; control,
the column headers do not fix at the top of the viewport. Similar behavior is also observed with the &lt;code&gt;ObjectPage&lt;/code&gt; control.

This API should not be used in production environment.

&lt;b&gt;Note:&lt;/b&gt; The &lt;code&gt;stickyHeader&lt;/code&gt; of the &lt;code&gt;PlanningCalendar&lt;/code&gt; uses the &lt;code&gt;sticky&lt;/code&gt; property of &lt;code&gt;sap.m.Table&lt;/code&gt;.
Therefore, all features and limitations of the property in &lt;code&gt;sap.m.Table&lt;/code&gt; apply to the &lt;code&gt;PlanningCalendar&lt;/code&gt; as well.</documentation>
        </property>
    </properties>
    <events>
        <event name="appointmentSelect" allowPreventDefault="false">
            <documentation>Fired if an appointment is selected.</documentation>
            <parameters>
                <parameter name="appointment" type="sap.ui.unified/CalendarAppointment">
                    <documentation>The selected appointment.</documentation>
                </parameter>
                <parameter name="appointments" type="sap.ui.unified/CalendarAppointment[]">
                    <documentation>The selected appointments in case a group appointment is selected.</documentation>
                </parameter>
                <parameter name="multiSelect" type="sap.ui.core/boolean">
                    <documentation>If set, the appointment was selected using multiple selection (e.g. Shift + single mouse click),
meaning more than the current appointment could be selected.</documentation>
                </parameter>
                <parameter name="domRefId" type="sap.ui.core/string" since="1.50.0">
                    <documentation>Gives the ID of the DOM element of the clicked appointment</documentation>
                </parameter>
            </parameters>
        </event>
        <event name="intervalSelect" allowPreventDefault="false">
            <documentation>Fired if an interval was selected in the calendar header or in the row.</documentation>
            <parameters>
                <parameter name="startDate" type="sap.ui.core/object">
                    <documentation>Start date of the selected interval, as a JavaScript date object.</documentation>
                </parameter>
                <parameter name="endDate" type="sap.ui.core/object" since="1.38.0">
                    <documentation>Interval end date as a JavaScript date object.</documentation>
                </parameter>
                <parameter name="subInterval" type="sap.ui.core/boolean" since="1.38.0">
                    <documentation>If set, the selected interval is a subinterval.</documentation>
                </parameter>
                <parameter name="row" type="sap.m/PlanningCalendarRow" since="1.38.0">
                    <documentation>Row of the selected interval.</documentation>
                </parameter>
            </parameters>
        </event>
        <event name="rowSelectionChange" allowPreventDefault="false">
            <documentation>Fires when row selection is changed.</documentation>
            <parameters>
                <parameter name="rows" type="sap.m/PlanningCalendarRow[]">
                    <documentation>Array of rows whose selection has changed.</documentation>
                </parameter>
            </parameters>
        </event>
        <event name="startDateChange" allowPreventDefault="false">
            <documentation>&lt;code&gt;startDate&lt;/code&gt; was changed while navigating in the &lt;code&gt;PlanningCalendar&lt;/code&gt;.
The new value can be obtained using the &lt;code&gt;sap.m.PlanningCalendar#getStartDate()&lt;/code&gt; method.</documentation>
        </event>
        <event name="viewChange" allowPreventDefault="false">
            <documentation>&lt;code&gt;viewKey&lt;/code&gt; was changed by user interaction.</documentation>
        </event>
        <event name="rowHeaderClick" since="1.46.0" allowPreventDefault="false">
            <documentation>Fires when a row header is clicked.</documentation>
            <parameters>
                <parameter name="headerId" type="sap.ui.core/string" since="1.73">
                    <documentation>The ID of the &lt;code&gt;PlanningCalendarRowHeader&lt;/code&gt; of the selected appointment.

&lt;b&gt;Note:&lt;/b&gt; Intended to be used as an easy way to get an ID of a &lt;code&gt;PlanningCalendarRowHeader&lt;/code&gt;. Do NOT use for modification.</documentation>
                </parameter>
                <parameter name="row" type="sap.m/PlanningCalendarRow">
                    <documentation>The row user clicked on.</documentation>
                </parameter>
            </parameters>
        </event>
    </events>
    <aggregations>
        <aggregation name="rows" type="sap.m/PlanningCalendarRow" cardinality="0..n">
            <documentation>Rows of the &lt;code&gt;PlanningCalendar&lt;/code&gt;.</documentation>
        </aggregation>
        <aggregation name="views" type="sap.m/PlanningCalendarView" cardinality="0..n">
            <documentation>Views of the &lt;code&gt;PlanningCalendar&lt;/code&gt;.

&lt;b&gt;Note:&lt;/b&gt; If not set, all the default views are available. Their keys are defined in
{@link sap.ui.unified.CalendarIntervalType}.</documentation>
        </aggregation>
        <aggregation name="specialDates" type="sap.ui.unified/DateTypeRange" cardinality="0..n">
            <documentation>Special days in the header calendar visualized as date range with a type.

&lt;b&gt;Note:&lt;/b&gt; If one day is assigned to more than one type, only the first type will be used.</documentation>
        </aggregation>
        <aggregation name="toolbarContent" type="sap.ui.core/Control" cardinality="0..n">
            <documentation>The content of the toolbar.</documentation>
        </aggregation>
        <aggregation name="table" type="sap.m/Table" cardinality="0..1" visibility="hidden">
            <documentation>Hidden, for internal use only.</documentation>
        </aggregation>
        <aggregation name="header" type="sap.ui.core/Control" cardinality="0..1" visibility="hidden">
            <documentation>Hidden, for internal use only.</documentation>
        </aggregation>
    </aggregations>
    <associations>
        <association name="ariaLabelledBy" type="sap.ui.core/Control" cardinality="0..n" since="1.40.0">
            <documentation>Association to controls / IDs which label this control (see WAI-ARIA attribute aria-labelledby).</documentation>
        </association>
        <association name="legend" type="sap.ui.unified/CalendarLegend" cardinality="0..1" since="1.40.0">
            <documentation>Association to the &lt;code&gt;CalendarLegend&lt;/code&gt; explaining the colors of the &lt;code&gt;Appointments&lt;/code&gt;.

&lt;b&gt;Note:&lt;/b&gt; The legend does not have to be rendered but must exist, and all required types must be assigned.</documentation>
        </association>
    </associations>
    <methods>
        <method name="getSelectedRows" type="sap.m/PlanningCalendarRow[]">
            <documentation>Returns an array containing the selected rows. If no row is selected, an empty array is returned.</documentation>
        </method>
        <method name="selectAllRows" type="sap.m/PlanningCalendar">
            <documentation>Selects or deselects all &lt;code&gt;PlanningCalendarRows&lt;/code&gt;.

&lt;b&gt;Note:&lt;/b&gt; Selection only works if &lt;code&gt;singleSelection&lt;/code&gt; is set to &lt;code&gt;false&lt;/code&gt;.</documentation>
            <parameters>
                <parameter name="select" type="sap.ui.core/boolean">
                    <documentation>Indicator showing whether &lt;code&gt;PlanningCalendarRows&lt;/code&gt; should be selected or deselected</documentation>
                </parameter>
            </parameters>
        </method>
    </methods>
</control>
