com.smartgwt.client.docs

## Interface XmlCriteriaShorthand

-     public interface XmlCriteriaShorthand

  All rules described in this topic are applied any time a property is of type `AdvancedCriteria` (in both Component XML and JavaScript component creation) and any API declares an `AdvancedCriteria` param.

  A shorthand format for `AdvancedCriteria` is supported for simple criteria where the outer criterion is assumed to be an "and" operator:

        <!-- Simple format -->
        <criteria fieldName="restrictAge" operator="equals" value="true"/>

  This is equivalent to:

        <!-- Normal format -->
        <criteria _constructor="AdvancedCriteria operator="and">
          <criteria>
            <criterion fieldName="restrictAge" operator="equals" value="true"/>
          </criteria>
        </criteria>

  Additionally these defaults are used allowing to simplify AdvancedCriteria declaration:
  operator="and" default is used if criteria is present at the same level
  operator="equals" default is used if fieldName is present at the same level
  value="true" default is used if operator="equals" default was applied
  So, shorthand format above could be simplified even more, for example to `conditionally enable a form button`:

        <!-- Simple format -->
        <enableWhen fieldName="CustomerGrid.anySelected"/>

  Full equivalent:

        <!-- Normal format -->
        <enableWhen _constructor="AdvancedCriteria operator="and">
          <criteria>
            <criterion fieldName="CustomerGrid.anySelected" operator="equals" value="true"/>
          </criteria>
        </enableWhen>

  Another example shows all defaults usage, significantly shortening AdvancedCriteria declaration for boolean dynamic property (see full setup in Boolean Dynamic Properties example):

        <!-- Simple format -->
        <trueWhen>
            <criteria fieldName="settingsForm/values/exportFieldWidths" />
            <criteria fieldName="settingsForm/values/exportAs" operator="inSet" >
                <value>xls</value>
                <value>ooxml</value>
            </criteria>
        </trueWhen>

  Full equivalent:

        <!-- Normal format -->
        <trueWhen>
            <AdvancedCriteria operator="and">
                <criteria>
                    <criterion fieldName="settingsForm/values/exportFieldWidths" operator="equals" value="true"/>
                    <criterion fieldName="settingsForm/values/exportAs" operator="inSet" >
                        <value>xls</value>
                        <value>ooxml</value>
                    </criterion>
                </criteria>
            </AdvancedCriteria>
        </trueWhen>

  JS example:

        // Simple format
        {fieldName: "restrictAge"}

        // Normal format
        {
          _constructor: "AdvancedCriteria",
          operator: "and",
          criteria: [
            {fieldName: "restrictAge", operator: "equals", value: true}
          ]
        }