<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<control xmlns="http://www.sap.com/sap.ui.library.xsd">
    <name>PlanningCalendarRow</name>
    <derived/>
    <documentation>Represents a row in the {@link sap.m.PlanningCalendar}.

This element holds the data of one row in the {@link sap.m.PlanningCalendar}. Once the header information
(for example, person information) is assigned, the appointments are assigned.
The &lt;code&gt;sap.m.PlanningCalendarRow&lt;/code&gt; allows you to modify appointments at row level.</documentation>
    <since>1.34</since>
    <baseType>sap.ui.core/Element</baseType>
    <properties>
        <property name="title" type="sap.ui.core/string" group="Data">
            <documentation>Defines the title of the header (for example, the name of the person).</documentation>
        </property>
        <property name="text" type="sap.ui.core/string" group="Data">
            <documentation>Defines the text of the header (for example, the department of the person).</documentation>
        </property>
        <property name="icon" type="sap.ui.core/URI" group="Data">
            <documentation>Specifies the URI of an image or an icon registered in &lt;code&gt;sap.ui.core.IconPool&lt;/code&gt;.</documentation>
        </property>
        <property name="nonWorkingDays" type="sap.ui.core/int[]" group="Misc">
            <documentation>Determines whether the provided weekdays are displayed as non-working days.
Valid values inside the array are from 0 to 6 (other values are ignored).
If not set, the weekend defined in the locale settings is displayed as non-working days.

&lt;b&gt;Note:&lt;/b&gt; The non-working days are visualized if the &lt;code&gt;intervalType&lt;/code&gt;
property of the {@link sap.m.PlanningCalendarView} is set to &lt;code&gt;Day&lt;/code&gt;.</documentation>
        </property>
        <property name="nonWorkingHours" type="sap.ui.core/int[]" group="Misc">
            <documentation>Determines whether the provided hours are displayed as non-working hours.
Valid values inside the array are from 0 to 23 (other values are ignored).

&lt;b&gt;Note:&lt;/b&gt; The non-working hours are visualized if &lt;code&gt;intervalType&lt;/code&gt;
property of the {@link sap.m.PlanningCalendarView} is set to &lt;code&gt;Hour&lt;/code&gt;.</documentation>
        </property>
        <property name="selected" type="sap.ui.core/boolean" defaultValue="false" group="Data">
            <documentation>Defines the selected state of the &lt;code&gt;PlanningCalendarRow&lt;/code&gt;.

&lt;b&gt;Note:&lt;/b&gt; Binding the &lt;code&gt;selected&lt;/code&gt; property in single selection modes may
cause unwanted results if you have more than one selected row in your binding.</documentation>
        </property>
        <property name="key" type="sap.ui.core/string" group="Data">
            <documentation>Defines the identifier of the row.</documentation>
        </property>
        <property name="enableAppointmentsDragAndDrop" type="sap.ui.core/boolean" defaultValue="false" group="Misc" since="1.54">
            <documentation>Determines whether the appointments in the row are draggable.

The drag and drop interaction is visualized by a placeholder highlighting the area where the
appointment can be dropped by the user.

By default, appointments can be dragged only within their original &lt;code&gt;PlanningCalendarRow&lt;/code&gt;. When
&lt;code&gt;enableAppointmentsDragAndDrop&lt;/code&gt; is set to true, attaching the
{@link #event:appointmentDragEnter appointmentDragEnter} event can change the default behavior and allow
appointments to be dragged between calendar rows.

Specifics based on the intervals (hours, days or months) displayed in the &lt;code&gt;PlanningCalendar&lt;/code&gt; views:

Hours:&lt;br&gt;
For views where the displayed intervals are hours, the placeholder snaps on every interval
of 30 minutes. After the appointment is dropped, the {@link #event:appointmentDrop appointmentDrop} event is fired, containing
the new start and end JavaScript date objects.&lt;br&gt;
For example, an appointment with start date "Nov 13 2017 12:17:00" and end date "Nov 13 2017 12:45:30"
lasts for 27 minutes and 30 seconds. After dragging and dropping to a new time, the possible new
start date has time that is either "hh:00:00" or "hh:30:00" because of the placeholder that can
snap on every 30 minutes. The new end date is calculated to be 27 minutes and 30 seconds later
and would be either "hh:27:30" or "hh:57:30".

Days:&lt;br&gt;
For views where intervals are days, the placeholder highlights the whole day and after the
appointment is dropped the {@link #event:appointmentDrop appointmentDrop} event is fired. The event contains the new start and
end JavaScript date objects with changed date but the original time (hh:mm:ss) is preserved.

Months:&lt;br&gt;
For views where intervals are months, the placeholder highlights the whole month and after the
appointment is dropped the {@link #event:appointmentDrop appointmentDrop} event is fired. The event contains the new start and
end JavaScript date objects with changed month but the original date and time is preserved.

&lt;b&gt;Note:&lt;/b&gt; In "One month" view, the appointments are not draggable on small screen (as there they are
displayed as a list below the dates). Group appointments are also not draggable.</documentation>
        </property>
        <property name="enableAppointmentsResize" type="sap.ui.core/boolean" defaultValue="false" group="Misc" since="1.56">
            <documentation>Determines whether the appointments in the row are resizable.

The resize interaction is visualized by making the appointment transparent.

Specifics based on the intervals (hours, days or months) displayed in the &lt;code&gt;PlanningCalendar&lt;/code&gt; views:

Hours:
For views where the displayed intervals are hours, the appointment snaps on every interval
of 30 minutes. After the resize is finished, the {@link #event:appointmentResize appointmentResize} event is fired, containing
the new start and end JavaScript date objects.

Days:
For views where intervals are days, the appointment snaps to the end of the day. After the resize is finished,
the {@link #event:appointmentResize appointmentResize} event is fired, containing the new start and end JavaScript date objects.
The &lt;code&gt;endDate&lt;/code&gt; time is changed to 00:00:00

Months:
For views where intervals are months, the appointment snaps to the end of the month.
The {@link #event:appointmentResize appointmentResize} event is fired, containing the new start and end JavaScript date objects.
The &lt;code&gt;endDate&lt;/code&gt; is set to the 00:00:00 and first day of the following month.

&lt;b&gt;Notes:&lt;/b&gt;
In "One month" view, the appointments are not resizable on small screen (as there they are
displayed as a list below the dates). Group appointments are also not resizable</documentation>
        </property>
        <property name="enableAppointmentsCreate" type="sap.ui.core/boolean" defaultValue="false" group="Misc" since="1.56">
            <documentation>Determines whether the appointments can be created by dragging on empty cells.

See {@link #property:enableAppointmentsResize enableAppointmentsResize} for the specific points for events snapping

&lt;b&gt;Notes:&lt;/b&gt;
In "One month" view, the appointments cannot be created on small screen (as there they are
displayed as a list below the dates).</documentation>
        </property>
    </properties>
    <events>
        <event name="appointmentDrop" since="1.54" allowPreventDefault="false">
            <documentation>Fired if an appointment is dropped.</documentation>
            <parameters>
                <parameter name="appointment" type="sap.ui.unified/CalendarAppointment">
                    <documentation>The dropped appointment.</documentation>
                </parameter>
                <parameter name="startDate" type="sap.ui.core/object">
                    <documentation>Start date of the dropped appointment, as a JavaScript date object.</documentation>
                </parameter>
                <parameter name="endDate" type="sap.ui.core/object">
                    <documentation>Dropped appointment end date as a JavaScript date object.</documentation>
                </parameter>
                <parameter name="calendarRow" type="sap.m/PlanningCalendarRow">
                    <documentation>The row of the appointment.</documentation>
                </parameter>
                <parameter name="copy" type="sap.ui.core/boolean">
                    <documentation>The drop type. If true - it's "Copy", if false - it's "Move".</documentation>
                </parameter>
            </parameters>
        </event>
        <event name="appointmentDragEnter" since="1.56" allowPreventDefault="true">
            <documentation>Fired if an appointment is dropped.

When this event handler is attached, the default behavior of the &lt;code&gt;enableAppointmentsDragAndDrop&lt;/code&gt;
property to move appointments only within their original calendar row is no longer valid. You can move
the appointment around all rows for which &lt;code&gt;enableAppointmentsDragAndDrop&lt;/code&gt; is set to true.
In this case, the drop target area is indicated by a placeholder. In the event handler you can call the
&lt;code&gt;preventDefault&lt;/code&gt; method of the event to prevent this default behavior. In this case,
the placeholder will no longer be available and it will not be possible to drop the appointment in the row.</documentation>
            <parameters>
                <parameter name="appointment" type="sap.ui.unified/CalendarAppointment">
                    <documentation>The dropped appointment.</documentation>
                </parameter>
                <parameter name="startDate" type="sap.ui.core/object">
                    <documentation>Start date of the dropped appointment, as a JavaScript date object.</documentation>
                </parameter>
                <parameter name="endDate" type="sap.ui.core/object">
                    <documentation>Dropped appointment end date as a JavaScript date object.</documentation>
                </parameter>
                <parameter name="calendarRow" type="sap.m/PlanningCalendarRow">
                    <documentation>The row of the appointment.</documentation>
                </parameter>
            </parameters>
        </event>
        <event name="appointmentResize" since="1.56" allowPreventDefault="false">
            <documentation>Fired if an appointment is resized.</documentation>
            <parameters>
                <parameter name="appointment" type="sap.ui.unified/CalendarAppointment">
                    <documentation>The resized appointment.</documentation>
                </parameter>
                <parameter name="startDate" type="sap.ui.core/object">
                    <documentation>Start date of the resized appointment, as a JavaScript date object.</documentation>
                </parameter>
                <parameter name="endDate" type="sap.ui.core/object">
                    <documentation>End date of the resized appointment, as a JavaScript date object.</documentation>
                </parameter>
            </parameters>
        </event>
        <event name="appointmentCreate" since="1.56" allowPreventDefault="false">
            <documentation>Fired if an appointment is created.</documentation>
            <parameters>
                <parameter name="startDate" type="sap.ui.core/object">
                    <documentation>Start date of the created appointment, as a JavaScript date object.</documentation>
                </parameter>
                <parameter name="endDate" type="sap.ui.core/object">
                    <documentation>End date of the created appointment, as a JavaScript date object.</documentation>
                </parameter>
                <parameter name="calendarRow" type="sap.m/PlanningCalendarRow">
                    <documentation>The row of the appointment.</documentation>
                </parameter>
            </parameters>
        </event>
    </events>
    <aggregations>
        <aggregation name="appointments" type="sap.ui.unified/CalendarAppointment" cardinality="0..n">
            <documentation>The appointments to be displayed in the row. Appointments that outside the visible time frame are not rendered.

&lt;b&gt;Note:&lt;/b&gt; For performance reasons, only appointments in the visible time range or nearby should be assigned.</documentation>
        </aggregation>
        <aggregation name="intervalHeaders" type="sap.ui.unified/CalendarAppointment" cardinality="0..n">
            <documentation>The appointments to be displayed at the top of the intervals (for example, for public holidays).
Appointments outside the visible time frame are not rendered.

Keep in mind that the &lt;code&gt;intervalHeaders&lt;/code&gt; should always fill whole intervals. If they are shorter or longer
than one interval, they are not displayed.

&lt;b&gt;Note:&lt;/b&gt; For performance reasons, only appointments in the visible time range or nearby should be assigned.</documentation>
        </aggregation>
        <aggregation name="specialDates" type="sap.ui.unified/DateTypeRange" since="1.56" cardinality="0..n">
            <documentation>Holds the special dates in the context of a row. A single date or a date range can be set.

&lt;b&gt;Note&lt;/b&gt; Only date or date ranges of type &lt;code&gt;sap.ui.unified.CalendarDayType.NonWorking&lt;/code&gt; will
be visualized in the &lt;code&gt;PlanningCalendarRow&lt;/code&gt;. If the aggregation is set as another type,
the date or date range will be ignored and will not be displayed in the control.</documentation>
        </aggregation>
        <aggregation name="headerContent" type="sap.ui.core/Control" since="1.67" cardinality="0..n">
            <documentation>Holds the header content of the row.

&lt;b&gt;Note:&lt;/b&gt; If the &lt;code&gt;headerContent&lt;/code&gt; aggregation is added, then the set icon, description, title
and tooltip are ignored.</documentation>
            <developmentState state="experimental" since="1.67">providing only limited functionality. Also, the API might be changed in the future.</developmentState>
        </aggregation>
    </aggregations>
</control>
