From b1119cf4f0427cf3565c946a010549c6bb4247ef Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 17 Apr 2020 19:10:48 +0300 Subject: [PATCH] feat: add a utility method to map enums to options --- .../core/src/lib/tests/form-utils.spec.ts | 30 +++++++++++++++++++ .../packages/core/src/lib/utils/form-utils.ts | 15 ++++++++++ 2 files changed, 45 insertions(+) create mode 100644 npm/ng-packs/packages/core/src/lib/tests/form-utils.spec.ts create mode 100644 npm/ng-packs/packages/core/src/lib/utils/form-utils.ts diff --git a/npm/ng-packs/packages/core/src/lib/tests/form-utils.spec.ts b/npm/ng-packs/packages/core/src/lib/tests/form-utils.spec.ts new file mode 100644 index 0000000000..02e20a5c04 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/tests/form-utils.spec.ts @@ -0,0 +1,30 @@ +import { mapEnumToOptions } from '../utils/form-utils'; + +enum SomeEnum { + NotApplicable = 'N/A', + Foo = 0, + Bar, +} + +describe('Form Utils', () => { + describe('#mapEnumToOptions', () => { + it('should return options from enum', () => { + const options = mapEnumToOptions(SomeEnum); + + expect(options).toEqual([ + { + key: 'NotApplicable', + value: SomeEnum.NotApplicable, + }, + { + key: 'Foo', + value: SomeEnum.Foo, + }, + { + key: 'Bar', + value: SomeEnum.Bar, + }, + ]); + }); + }); +}); diff --git a/npm/ng-packs/packages/core/src/lib/utils/form-utils.ts b/npm/ng-packs/packages/core/src/lib/utils/form-utils.ts new file mode 100644 index 0000000000..414b259ab9 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/utils/form-utils.ts @@ -0,0 +1,15 @@ +import { ABP } from '../models/common'; +import { isNumber } from './number-utils'; + +export function mapEnumToOptions(_enum: T): ABP.Option[] { + const options: ABP.Option[] = []; + + for (const member in _enum) + if (!isNumber(member)) + options.push({ + key: member, + value: _enum[member], + }); + + return options; +}