Skip to content

Commit c309a4d

Browse files
Merge pull request #52 from SimplrJS/feature/fields-group and fields-array
Feature/fields group and fields array
2 parents f598ae0 + 1ee7ff7 commit c309a4d

File tree

21 files changed

+421
-111
lines changed

21 files changed

+421
-111
lines changed

packages/simplr-forms-dom/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,20 +41,20 @@
4141
"@types/webpack": "^2.2.15",
4242
"enzyme": "^2.8.0",
4343
"gulp": "github:gulpjs/gulp#4.0",
44-
"jest": "^19.0.2",
44+
"jest": "^20.0.1",
4545
"jest-enzyme": "^3.0.0",
4646
"mkdirp": "^0.5.1",
4747
"mv": "^2.1.1",
4848
"mz": "^2.6.0",
4949
"on-build-webpack": "^0.1.0",
5050
"react-dom": "^15.5.4",
5151
"react-test-renderer": "^15.5.4",
52-
"simplr-mvdir": "0.0.1-beta.6",
52+
"simplr-mvdir": "0.0.1-beta.7",
5353
"sinon": "^2.1.0",
54-
"ts-jest": "^19.0.8",
54+
"ts-jest": "^20.0.3",
5555
"ts-loader": "^2.0.3",
5656
"tslint": "^5.0.0",
57-
"typescript": "2.3.0",
57+
"typescript": "2.3.2",
5858
"webpack": "^2.4.1"
5959
},
6060
"dependencies": {

packages/simplr-forms-dom/src/abstractions/base-dom-field.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export interface BaseDomFieldState extends BaseFieldState {
77

88
export abstract class BaseDomField<TProps extends FieldProps, TState extends BaseDomFieldState>
99
extends BaseField<TProps, TState> {
10-
protected OnFocus = (event: React.FocusEvent<HTMLInputElement>) => {
10+
protected OnFocus = (event: React.FocusEvent<HTMLInputElement>): void => {
1111
const props = this.props as FieldProps;
1212
if (props.onFocus != null) {
1313
props.onFocus(event);
@@ -16,7 +16,7 @@ export abstract class BaseDomField<TProps extends FieldProps, TState extends Bas
1616
this.Focus();
1717
}
1818

19-
protected OnBlur = (event: React.FocusEvent<HTMLInputElement>) => {
19+
protected OnBlur = (event: React.FocusEvent<HTMLInputElement>): void => {
2020
const props = this.props as FieldProps;
2121
if (props.onBlur != null) {
2222
props.onBlur(event);
@@ -27,7 +27,7 @@ export abstract class BaseDomField<TProps extends FieldProps, TState extends Bas
2727

2828
public abstract renderField(): JSX.Element | null;
2929

30-
public render() {
30+
public render(): JSX.Element | null {
3131
// TODO: FieldTemplate
3232
return this.renderField();
3333
}

packages/simplr-forms-dom/src/components/clear.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ export class Clear extends BaseContainer<ClearProps, ClearStateRecord> {
4141
return this.state.Submitting;
4242
}
4343

44-
protected OnButtonClick: React.MouseEventHandler<HTMLButtonElement> = (event) => {
44+
protected OnButtonClick: React.MouseEventHandler<HTMLButtonElement> = (event): void => {
4545
event.persist();
4646
this.FormStore.ClearFields(this.props.fieldIds);
4747

@@ -50,7 +50,7 @@ export class Clear extends BaseContainer<ClearProps, ClearStateRecord> {
5050
}
5151
}
5252

53-
render() {
53+
render(): JSX.Element | null {
5454
// TODO: Pass all other props.
5555
return <button
5656
type="button"
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import * as React from "react";
2+
import {
3+
FieldsArrayProps as CoreProps,
4+
FieldsArrayState as CoreState
5+
} from "simplr-forms/contracts";
6+
import { BaseFieldsArray } from "simplr-forms";
7+
8+
export interface FieldsArrayProps extends CoreProps {
9+
}
10+
11+
export interface FieldsArrayState extends CoreState {
12+
}
13+
14+
interface Dictionary {
15+
[key: string]: any;
16+
}
17+
18+
export class FieldsArray extends BaseFieldsArray<FieldsArrayProps, FieldsArrayState> {
19+
public Element: HTMLDivElement;
20+
21+
private setElementRef = (element: HTMLDivElement): void => {
22+
this.Element = element;
23+
}
24+
25+
protected HTMLProps(): {} {
26+
const {
27+
name,
28+
index,
29+
destroyOnUnmount,
30+
children,
31+
...rest } = this.props;
32+
return rest;
33+
}
34+
35+
render(): JSX.Element | null {
36+
return <div
37+
ref={this.setElementRef}
38+
{...this.HTMLProps() }
39+
>
40+
{this.props.children}
41+
</div>;
42+
}
43+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import * as React from "react";
2+
import {
3+
FieldsGroupProps as CoreProps,
4+
FieldsGroupState as CoreState
5+
} from "simplr-forms/contracts";
6+
import { BaseFieldsGroup } from "simplr-forms";
7+
8+
export interface FieldsGroupProps extends CoreProps {
9+
}
10+
11+
export interface FieldsGroupState extends CoreState {
12+
}
13+
14+
interface Dictionary {
15+
[key: string]: any;
16+
}
17+
18+
export class FieldsGroup extends BaseFieldsGroup<FieldsGroupProps, FieldsGroupState> {
19+
public Element: HTMLDivElement;
20+
21+
private setElementRef = (element: HTMLDivElement): void => {
22+
this.Element = element;
23+
}
24+
25+
protected HTMLProps(): {} {
26+
const {
27+
name,
28+
destroyOnUnmount,
29+
children,
30+
...rest } = this.props;
31+
return rest;
32+
}
33+
34+
render(): JSX.Element | null {
35+
return <div
36+
ref={this.setElementRef}
37+
{...this.HTMLProps() }
38+
>
39+
{this.props.children}
40+
</div>;
41+
}
42+
}

packages/simplr-forms-dom/src/components/form.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ export class Form extends BaseForm<FormProps, {}> {
4141
this.FormStore.SubmitForm(result);
4242
}
4343

44-
render() {
44+
render(): JSX.Element | null {
4545
return <form
4646
ref={this.SetElementRef}
4747
onSubmit={this.FormSubmitHandler}

packages/simplr-forms-dom/src/components/reset.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ export class Reset extends BaseContainer<ResetProps, ResetStateRecord> {
4141
return this.state.Submitting;
4242
}
4343

44-
protected OnButtonClick: React.MouseEventHandler<HTMLButtonElement> = (event) => {
44+
protected OnButtonClick: React.MouseEventHandler<HTMLButtonElement> = (event): void => {
4545
event.persist();
4646
this.FormStore.ResetFields(this.props.fieldIds);
4747

@@ -50,7 +50,7 @@ export class Reset extends BaseContainer<ResetProps, ResetStateRecord> {
5050
}
5151
}
5252

53-
render() {
53+
render(): JSX.Element | null {
5454
// TODO: Pass all other props.
5555
return <button
5656
type="button"

packages/simplr-forms-dom/src/components/submit.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ export class Submit extends BaseContainer<SubmitProps, SubmitStateRecord> {
102102
this.state.Submitting);
103103
}
104104

105-
protected get InlineStyles() {
105+
protected get InlineStyles(): React.CSSProperties {
106106
let inlineStyles: React.CSSProperties = {};
107107

108108
if (this.props.style != null) {
@@ -116,7 +116,7 @@ export class Submit extends BaseContainer<SubmitProps, SubmitStateRecord> {
116116
return inlineStyles;
117117
}
118118

119-
render() {
119+
render(): JSX.Element | null {
120120
return <button
121121
type="submit"
122122
disabled={this.Disabled}

packages/simplr-forms-dom/src/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,5 @@ export * from "./components/text";
33
export * from "./components/submit";
44
export * from "./components/reset";
55
export * from "./components/clear";
6+
export * from "./components/fields-group";
7+
export * from "./components/fields-array";
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
describe("Fields Group Base", () => {
2+
xit("throws when registering an already existing id", () => {
3+
4+
});
5+
});

0 commit comments

Comments
 (0)