UI: Add new coercion decorator method
This commit is contained in:
parent
f438c51b12
commit
7da4d9b4fe
@ -14,7 +14,13 @@
|
|||||||
/// limitations under the License.
|
/// limitations under the License.
|
||||||
///
|
///
|
||||||
|
|
||||||
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
import {
|
||||||
|
coerceArray,
|
||||||
|
coerceBooleanProperty,
|
||||||
|
coerceCssPixelValue,
|
||||||
|
coerceNumberProperty,
|
||||||
|
coerceStringArray
|
||||||
|
} from '@angular/cdk/coercion';
|
||||||
|
|
||||||
export const coerceBoolean = () => (target: any, key: string): void => {
|
export const coerceBoolean = () => (target: any, key: string): void => {
|
||||||
const getter = function() {
|
const getter = function() {
|
||||||
@ -32,3 +38,71 @@ export const coerceBoolean = () => (target: any, key: string): void => {
|
|||||||
configurable: true,
|
configurable: true,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const coerceNumber = () => (target: any, key: string): void => {
|
||||||
|
const getter = function(): number {
|
||||||
|
return this['__' + key];
|
||||||
|
};
|
||||||
|
|
||||||
|
const setter = function(next: any) {
|
||||||
|
this['__' + key] = coerceNumberProperty(next);
|
||||||
|
};
|
||||||
|
|
||||||
|
Object.defineProperty(target, key, {
|
||||||
|
get: getter,
|
||||||
|
set: setter,
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
export const coerceCssPixelProperty = () => (target: any, key: string): void => {
|
||||||
|
const getter = function(): string {
|
||||||
|
return this['__' + key];
|
||||||
|
};
|
||||||
|
|
||||||
|
const setter = function(next: any) {
|
||||||
|
this['__' + key] = coerceCssPixelValue(next);
|
||||||
|
};
|
||||||
|
|
||||||
|
Object.defineProperty(target, key, {
|
||||||
|
get: getter,
|
||||||
|
set: setter,
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
export const coerceArrayProperty = () => (target: any, key: string): void => {
|
||||||
|
const getter = function(): any[] {
|
||||||
|
return this['__' + key];
|
||||||
|
};
|
||||||
|
|
||||||
|
const setter = function(next: any) {
|
||||||
|
this['__' + key] = coerceArray(next);
|
||||||
|
};
|
||||||
|
|
||||||
|
Object.defineProperty(target, key, {
|
||||||
|
get: getter,
|
||||||
|
set: setter,
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
export const coerceStringArrayProperty = (separator?: string | RegExp) => (target: any, key: string): void => {
|
||||||
|
const getter = function(): string[] {
|
||||||
|
return this['__' + key];
|
||||||
|
};
|
||||||
|
|
||||||
|
const setter = function(next: any) {
|
||||||
|
this['__' + key] = coerceStringArray(next, separator);
|
||||||
|
};
|
||||||
|
|
||||||
|
Object.defineProperty(target, key, {
|
||||||
|
get: getter,
|
||||||
|
set: setter,
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user