.#{$prefix}form-trigger-wrap {
    display: table;
    // fill body width
    width: 100%;

    .#{$prefix}form-text-heighted & {
        // expand to fill body height when the field's main element has a height
        height: 100%;
    }

    @if $include-ff {
        // https://sencha.jira.com/browse/EXTJS-13752
        // in firefox a wrapping label which causes the field's outer element to expand in
        // height will also cause the triggerWrap to grow vertically due to the height:100%
        // set above.  inline-flex elements are not affected by this bug, but table (and
        // inline-table) are.
        .#{$prefix}gecko & {
            display: -moz-inline-box; // ff < 28
            display: inline-flex;
            vertical-align: top;
        }
    }
}

// These are required because of the way the fields are structured, the
// min-height must cascade for the input to be able to size correctly
.#{$prefix}form-type-text.#{$prefix}has-min-height {
    // this is required because fields with min-height
    // without a height fail to layout properly.
    height: 1px;

    .#{$prefix}form-text-field-body,
    .#{$prefix}form-trigger-wrap,
    .#{$prefix}form-text-wrap {
        min-height: inherit;

        @if $include-ie {
            // IE8 has a rule that sets the min-height as a default,
            // need a more specific rule
            .#{$prefix}ie8 & {
                min-height: inherit;
            }
        }
    }

    @if $include-ie {
        .#{$prefix}ie8 & .#{$prefix}form-text {
            min-height: inherit;
        }
    }

    .#{$prefix}form-text {
        height: 100%;
    }
}

.#{$prefix}form-text-wrap {
    display: table-cell;
    overflow: hidden;
    height: 100%;
    position: relative;

    @if $include-ff {
        // EXTJS-13752
        .#{$prefix}gecko & {
            display: block;
            -moz-box-flex: 1; // ff < 28
            flex: 1;
        }
    }

    .#{$prefix}placeholder-label {
        position: absolute;
        top: 0;
        left: 0;
        cursor: text;
        white-space: nowrap;
        overflow: hidden;
    }
}

// The extjs-text-field mixin sets min/max-width to give the body its default width.
// Fields with grow configured need no min/max-width since their body width is set by autoSize()
.#{$prefix}form-item-body.#{$prefix}form-text-grow {
    min-width: inherit;
    max-width: inherit;
}

.#{$prefix}form-text {
    border: 0;
    margin: 0;
    @include border-radius(0);
    display: block;
    background: repeat-x 0 0;
    width: 100%;
    height: 100%;
}

.#{$prefix}form-trigger {
    display: table-cell;
    vertical-align: top;
    cursor: pointer;
    overflow: hidden;
    background-repeat: no-repeat;
    text-align: center;
    line-height: 0;
    // since horizontally aligned spinner triggers are display inline-block, triggers
    // require white-space:nowrap to prevent the triggers from wrapping when the field
    // becomes too narrow
    white-space: nowrap;
    .#{$prefix}item-disabled & {
        cursor: default;
    }
    &.#{$prefix}form-trigger-cmp {
        // neutral theme may set background and/or border on normal triggers.
        // remove them for component triggers.
        background: none;
        border: 0;
    }
    
    // This is to increase specificity in RTL mode for the above rule
    @if $include-rtl {
        &.#{$prefix}form-trigger-cmp.#{$prefix}rtl {
            background: none;
            border: 0;
        }
    }

    @if $include-ff {
        // EXTJS-13752
        .#{$prefix}gecko & {
            display: block;
        }
    }
}
