blob: 15f539f8fc2207e4055126c951da8bbb9c1ce884 [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.h"
#import <Foundation/Foundation.h>
#import "MaterialTextControls+BaseTextFields.h"
#import "MaterialTextControlsPrivate+OutlinedStyle.h"
#import "MaterialTextControlsPrivate+TextFields.h"
@interface MDCOutlinedTextField (Private) <MDCTextControl>
@end
@interface MDCOutlinedTextField ()
@end
@implementation MDCOutlinedTextField
@dynamic borderStyle;
#pragma mark Object Lifecycle
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
[self commonMDCOutlinedTextFieldInit];
}
return self;
}
- (instancetype)initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if (self) {
[self commonMDCOutlinedTextFieldInit];
}
return self;
}
- (void)commonMDCOutlinedTextFieldInit {
self.containerStyle = [[MDCTextControlStyleOutlined alloc] init];
}
- (void)setContainerRadius:(CGFloat)containerRadius {
self.outlinedStyle.outlineCornerRadius = containerRadius;
}
- (CGFloat)containerRadius {
return self.outlinedStyle.outlineCornerRadius;
}
#pragma mark MDCTextControlTextField methods
- (MDCTextControlTextFieldSideViewAlignment)sideViewAlignment {
return MDCTextControlTextFieldSideViewAlignmentAlignedWithText;
}
#pragma mark Stateful Color APIs
- (void)setOutlineColor:(nonnull UIColor *)outlineColor forState:(MDCTextControlState)state {
[self.outlinedStyle setOutlineColor:outlineColor forState:state];
[self setNeedsLayout];
}
- (nonnull UIColor *)outlineColorForState:(MDCTextControlState)state {
return [self.outlinedStyle outlineColorForState:state];
}
#pragma mark Private Helpers
- (MDCTextControlStyleOutlined *)outlinedStyle {
MDCTextControlStyleOutlined *outlinedStyle = nil;
if ([self.containerStyle isKindOfClass:[MDCTextControlStyleOutlined class]]) {
outlinedStyle = (MDCTextControlStyleOutlined *)self.containerStyle;
}
return outlinedStyle;
}
@end