blob: 5a7b3e2a2bc61356264df7825a772ca53a5b32ef [file] [log] [blame]
// Copyright 2019-present the Material Components for iOS authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#import "MDCOutlinedTextField+MaterialTheming.h"
static const CGFloat kDisabledOpacity = (CGFloat)0.60;
static const CGFloat kTextColorNormalOpacity = (CGFloat)0.87;
static const CGFloat kFloatingLabelColorEditingOpacity = (CGFloat)0.87;
static const CGFloat kNormalLabelColorNormalOpacity = (CGFloat)0.60;
static const CGFloat kOutlineColorNormalOpacity = (CGFloat)0.38;
static const CGFloat kPrimaryFloatingLabelColorNormalOpacity = (CGFloat)0.60;
static const CGFloat kPrimaryAssistiveLabelColorNormalOpacity = (CGFloat)0.60;
@implementation MDCOutlinedTextField (MaterialTheming)
- (void)applyThemeWithScheme:(nonnull id<MDCContainerScheming>)containerScheme {
[self applyTypographyScheme:containerScheme.typographyScheme];
[self applyDefaultColorScheme:containerScheme.colorScheme];
}
- (void)applyErrorThemeWithScheme:(nonnull id<MDCContainerScheming>)containerScheme {
[self applyTypographyScheme:containerScheme.typographyScheme];
[self applyErrorColorScheme:containerScheme.colorScheme];
}
- (void)applyTypographyScheme:(id<MDCTypographyScheming>)mdcTypographyScheming {
self.font = mdcTypographyScheming.subtitle1;
self.leadingAssistiveLabel.font = mdcTypographyScheming.caption;
self.trailingAssistiveLabel.font = mdcTypographyScheming.caption;
}
- (void)applyDefaultColorScheme:(id<MDCColorScheming>)colorScheme {
UIColor *textColorNormal =
[colorScheme.onSurfaceColor colorWithAlphaComponent:kTextColorNormalOpacity];
UIColor *textColorEditing = textColorNormal;
UIColor *textColorDisabled =
[textColorNormal colorWithAlphaComponent:kTextColorNormalOpacity * kDisabledOpacity];
UIColor *assistiveLabelColorNormal =
[colorScheme.onSurfaceColor colorWithAlphaComponent:kPrimaryAssistiveLabelColorNormalOpacity];
UIColor *assistiveLabelColorEditing = assistiveLabelColorNormal;
UIColor *assistiveLabelColorDisabled = [assistiveLabelColorNormal
colorWithAlphaComponent:kPrimaryAssistiveLabelColorNormalOpacity * kDisabledOpacity];
UIColor *floatingLabelColorNormal =
[colorScheme.onSurfaceColor colorWithAlphaComponent:kPrimaryFloatingLabelColorNormalOpacity];
UIColor *floatingLabelColorEditing =
[colorScheme.primaryColor colorWithAlphaComponent:kFloatingLabelColorEditingOpacity];
UIColor *floatingLabelColorDisabled = [floatingLabelColorNormal
colorWithAlphaComponent:kPrimaryFloatingLabelColorNormalOpacity * kDisabledOpacity];
UIColor *normalLabelColorNormal =
[colorScheme.onSurfaceColor colorWithAlphaComponent:kNormalLabelColorNormalOpacity];
UIColor *normalLabelColorEditing = normalLabelColorNormal;
UIColor *normalLabelColorDisabled = [normalLabelColorNormal
colorWithAlphaComponent:kNormalLabelColorNormalOpacity * kDisabledOpacity];
UIColor *outlineColorNormal =
[colorScheme.onSurfaceColor colorWithAlphaComponent:kOutlineColorNormalOpacity];
UIColor *outlineColorEditing = colorScheme.primaryColor;
UIColor *outlineColorDisabled =
[outlineColorNormal colorWithAlphaComponent:kOutlineColorNormalOpacity * kDisabledOpacity];
UIColor *tintColor = colorScheme.primaryColor;
[self setFloatingLabelColor:floatingLabelColorNormal forState:MDCTextControlStateNormal];
[self setFloatingLabelColor:floatingLabelColorEditing forState:MDCTextControlStateEditing];
[self setFloatingLabelColor:floatingLabelColorDisabled forState:MDCTextControlStateDisabled];
[self setNormalLabelColor:normalLabelColorNormal forState:MDCTextControlStateNormal];
[self setNormalLabelColor:normalLabelColorEditing forState:MDCTextControlStateEditing];
[self setNormalLabelColor:normalLabelColorDisabled forState:MDCTextControlStateDisabled];
[self setTextColor:textColorNormal forState:MDCTextControlStateNormal];
[self setTextColor:textColorEditing forState:MDCTextControlStateEditing];
[self setTextColor:textColorDisabled forState:MDCTextControlStateDisabled];
[self setOutlineColor:outlineColorNormal forState:MDCTextControlStateNormal];
[self setOutlineColor:outlineColorEditing forState:MDCTextControlStateEditing];
[self setOutlineColor:outlineColorDisabled forState:MDCTextControlStateDisabled];
[self setLeadingAssistiveLabelColor:assistiveLabelColorNormal forState:MDCTextControlStateNormal];
[self setLeadingAssistiveLabelColor:assistiveLabelColorEditing
forState:MDCTextControlStateEditing];
[self setLeadingAssistiveLabelColor:assistiveLabelColorDisabled
forState:MDCTextControlStateDisabled];
[self setTrailingAssistiveLabelColor:assistiveLabelColorNormal
forState:MDCTextControlStateNormal];
[self setTrailingAssistiveLabelColor:assistiveLabelColorEditing
forState:MDCTextControlStateEditing];
[self setTrailingAssistiveLabelColor:assistiveLabelColorDisabled
forState:MDCTextControlStateDisabled];
self.tintColor = tintColor;
}
- (void)applyErrorColorScheme:(id<MDCColorScheming>)colorScheme {
UIColor *textColorNormal =
[colorScheme.onSurfaceColor colorWithAlphaComponent:kTextColorNormalOpacity];
UIColor *textColorEditing = textColorNormal;
UIColor *textColorDisabled =
[textColorNormal colorWithAlphaComponent:kTextColorNormalOpacity * kDisabledOpacity];
UIColor *assistiveLabelColorNormal = colorScheme.errorColor;
UIColor *assistiveLabelColorEditing = assistiveLabelColorNormal;
UIColor *assistiveLabelColorDisabled =
[assistiveLabelColorNormal colorWithAlphaComponent:kDisabledOpacity];
UIColor *floatingLabelColorNormal = colorScheme.errorColor;
UIColor *floatingLabelColorEditing = floatingLabelColorNormal;
UIColor *floatingLabelColorDisabled =
[floatingLabelColorNormal colorWithAlphaComponent:kDisabledOpacity];
UIColor *normalLabelColorNormal =
[colorScheme.onSurfaceColor colorWithAlphaComponent:kNormalLabelColorNormalOpacity];
UIColor *normalLabelColorEditing = normalLabelColorNormal;
UIColor *normalLabelColorDisabled = [normalLabelColorNormal
colorWithAlphaComponent:kNormalLabelColorNormalOpacity * kDisabledOpacity];
UIColor *outlineColorNormal = colorScheme.errorColor;
UIColor *outlineColorEditing = outlineColorNormal;
UIColor *outlineColorDisabled = [outlineColorNormal colorWithAlphaComponent:kDisabledOpacity];
UIColor *tintColor = colorScheme.errorColor;
[self setFloatingLabelColor:floatingLabelColorNormal forState:MDCTextControlStateNormal];
[self setFloatingLabelColor:floatingLabelColorEditing forState:MDCTextControlStateEditing];
[self setFloatingLabelColor:floatingLabelColorDisabled forState:MDCTextControlStateDisabled];
[self setNormalLabelColor:normalLabelColorNormal forState:MDCTextControlStateNormal];
[self setNormalLabelColor:normalLabelColorEditing forState:MDCTextControlStateEditing];
[self setNormalLabelColor:normalLabelColorDisabled forState:MDCTextControlStateDisabled];
[self setTextColor:textColorNormal forState:MDCTextControlStateNormal];
[self setTextColor:textColorEditing forState:MDCTextControlStateEditing];
[self setTextColor:textColorDisabled forState:MDCTextControlStateDisabled];
[self setOutlineColor:outlineColorNormal forState:MDCTextControlStateNormal];
[self setOutlineColor:outlineColorEditing forState:MDCTextControlStateEditing];
[self setOutlineColor:outlineColorDisabled forState:MDCTextControlStateDisabled];
[self setLeadingAssistiveLabelColor:assistiveLabelColorNormal forState:MDCTextControlStateNormal];
[self setLeadingAssistiveLabelColor:assistiveLabelColorEditing
forState:MDCTextControlStateEditing];
[self setLeadingAssistiveLabelColor:assistiveLabelColorDisabled
forState:MDCTextControlStateDisabled];
[self setTrailingAssistiveLabelColor:assistiveLabelColorNormal
forState:MDCTextControlStateNormal];
[self setTrailingAssistiveLabelColor:assistiveLabelColorEditing
forState:MDCTextControlStateEditing];
[self setTrailingAssistiveLabelColor:assistiveLabelColorDisabled
forState:MDCTextControlStateDisabled];
self.tintColor = tintColor;
}
@end