react-input-material 0.0.804 → 0.0.806

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,166 @@
1
+ import { Mapping } from 'clientnode';
2
+ import { FocusEvent as ReactFocusEvent, KeyboardEvent as ReactKeyboardEvent, MouseEvent as ReactMouseEvent, MutableRefObject as RefObject, ReactNode, SyntheticEvent } from 'react';
3
+ import { GenericEvent } from 'react-generic-tools/type';
4
+ import { NativeType } from '../components/TextInput/type';
5
+ import { NormalizedSelection } from '../type';
6
+ export type IconStrategy = 'auto' | 'ligature' | 'className' | 'url' | 'component' | 'custom';
7
+ export type Size = 'extra-small' | 'small' | 'medium' | 'large' | 'extra-large';
8
+ export interface BaseProperties {
9
+ componentProperties?: Mapping<unknown>;
10
+ domNodeProperties?: Mapping<unknown>;
11
+ }
12
+ export interface TooltipProperties extends BaseProperties {
13
+ children: ReactNode;
14
+ value: string;
15
+ }
16
+ export interface HelpTextProperties extends BaseProperties {
17
+ persistent?: boolean;
18
+ validationMsg?: boolean;
19
+ children: ReactNode;
20
+ }
21
+ export type HelpText = ReactNode | HelpTextProperties;
22
+ export interface LowLevelBaseComponentProperties extends BaseProperties {
23
+ id?: string;
24
+ classNames?: Array<string>;
25
+ styles?: object;
26
+ onClick?: (event: ReactMouseEvent) => void;
27
+ onFocus?: (event: ReactFocusEvent) => void;
28
+ onBlur?: (event: SyntheticEvent) => void;
29
+ onKeyUp?: (event: ReactKeyboardEvent) => void;
30
+ onKeyDown?: (event: ReactKeyboardEvent) => void;
31
+ }
32
+ export interface CircularProgressProperties extends BaseProperties {
33
+ size?: Size;
34
+ }
35
+ export interface ErrorProperties extends BaseProperties {
36
+ applyToChildren?: boolean;
37
+ children: ReactNode;
38
+ }
39
+ export interface IconProperties extends LowLevelBaseComponentProperties {
40
+ size?: Size;
41
+ icon: ReactNode;
42
+ strategy?: IconStrategy;
43
+ }
44
+ export interface IconButtonProperties extends IconProperties {
45
+ onIcon?: string;
46
+ value?: boolean;
47
+ disabled?: boolean;
48
+ onChange?: (event: SyntheticEvent) => void;
49
+ }
50
+ export type InputDomNodes = HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement;
51
+ export interface InputReference {
52
+ input: InputDomNodes | null;
53
+ }
54
+ export interface InputProperties<Type> extends LowLevelBaseComponentProperties {
55
+ ref?: RefObject<InputReference | null>;
56
+ disabled?: boolean;
57
+ invalid?: boolean;
58
+ name?: string;
59
+ label?: ReactNode;
60
+ domNodeProperties?: Mapping<unknown>;
61
+ helpText?: ReactNode | HelpText;
62
+ onChange?: (eventOrValue: GenericEvent<Type> | Type) => void;
63
+ }
64
+ export declare enum MediaCardRepresentationType {
65
+ IMAGE = "image",
66
+ IFRAME = "iframe",
67
+ TEXT = "text",
68
+ VIDEO = "video",
69
+ PENDING = "pending"
70
+ }
71
+ export interface MediaCardReference {
72
+ card?: HTMLDivElement | null;
73
+ iFrame?: HTMLIFrameElement | null;
74
+ downloadLink?: HTMLAnchorElement | null;
75
+ deleteButton: HTMLElement | null;
76
+ uploadButton?: HTMLElement | null;
77
+ }
78
+ export interface MediaCardProperties extends LowLevelBaseComponentProperties {
79
+ ref?: RefObject<MediaCardReference | null>;
80
+ iframeWrapperClassNames?: Array<string>;
81
+ textRepresentationClassNames?: Array<string>;
82
+ infoClassNames?: Array<string>;
83
+ infoBodyClassNames?: Array<string>;
84
+ downloadLinkClassNames?: Array<string>;
85
+ imageClassNames?: Array<string>;
86
+ deleteButton: ReactNode;
87
+ downloadButton: ReactNode;
88
+ editButton: ReactNode;
89
+ newButton: ReactNode;
90
+ fileName?: string;
91
+ name: string;
92
+ description?: string;
93
+ declaration?: string;
94
+ children?: ReactNode;
95
+ type?: MediaCardRepresentationType;
96
+ url?: string;
97
+ content?: ReactNode;
98
+ contentType?: string;
99
+ disabled?: boolean;
100
+ invalid?: boolean;
101
+ errorMessage?: string;
102
+ empty?: boolean;
103
+ onChange?: (event?: SyntheticEvent) => void;
104
+ onClickAddOrEdit?: (event?: ReactMouseEvent) => void;
105
+ }
106
+ export interface CheckboxProperties extends InputProperties<boolean> {
107
+ indeterminate?: boolean;
108
+ children?: ReactNode;
109
+ value: boolean;
110
+ onChange?: (eventOrValue: GenericEvent<boolean> | boolean) => void;
111
+ }
112
+ export type TextInputProperties<Type> = InputProperties<Type>;
113
+ export interface SelectProperties<Type> extends TextInputProperties<Type> {
114
+ options: NormalizedSelection;
115
+ value: Type;
116
+ }
117
+ export interface MenuReference {
118
+ focusItem: (index: number) => void;
119
+ }
120
+ export interface MenuProperties extends LowLevelBaseComponentProperties {
121
+ ref?: RefObject<MenuReference | null>;
122
+ options: Array<ReactNode>;
123
+ itemClassNames?: Array<string>;
124
+ pendingClassNames?: Array<string>;
125
+ open?: boolean;
126
+ pending?: boolean;
127
+ onSelect?: (event: SyntheticEvent) => void;
128
+ }
129
+ export interface TypeTextInputProperties<Type> extends TextInputProperties<Type> {
130
+ value?: Type;
131
+ characterCount?: boolean;
132
+ required?: boolean;
133
+ maximumLength?: number;
134
+ minimumLength?: number;
135
+ placeholder?: string;
136
+ onLabelClick?: (event: ReactMouseEvent) => void;
137
+ }
138
+ export interface TextFieldProperties extends TypeTextInputProperties<string> {
139
+ type?: NativeType;
140
+ maximum?: number;
141
+ minimum?: number;
142
+ step?: number;
143
+ leadingIcon?: IconProperties | string;
144
+ trailingIcon?: IconProperties | string;
145
+ }
146
+ export interface InputEventWrapper {
147
+ blur: (event: object) => void;
148
+ focus: (event: object) => void;
149
+ input: (value: number | string, event: object) => void;
150
+ }
151
+ export interface EventMapperWrapperReference<Type = unknown> {
152
+ input: Type | null;
153
+ eventMapper: InputEventWrapper;
154
+ }
155
+ export interface TextAreaReference extends InputReference {
156
+ input: HTMLTextAreaElement | null;
157
+ label: HTMLLabelElement | null;
158
+ }
159
+ export interface TextAreaProperties extends TypeTextInputProperties<string> {
160
+ ref?: RefObject<TextAreaReference | null>;
161
+ classNamePrefix?: string;
162
+ resizeable?: boolean;
163
+ rows?: number;
164
+ children?: ReactNode;
165
+ barContentSlot?: ReactNode;
166
+ }
@@ -0,0 +1,16 @@
1
+ export { Checkbox } from './components/Checkbox';
2
+ export { FileInput } from './components/FileInput';
3
+ export { Interval } from './components/Interval';
4
+ export { Inputs } from './components/Inputs';
5
+ export { TextInput } from './components/TextInput';
6
+ export { WrapConfigurations } from './components/Wrapper/WrapConfigurations';
7
+ export { WrapStrict } from './components/Wrapper/WrapStrict';
8
+ export { WrapThemeProvider } from './components/Wrapper/WrapThemeProvider';
9
+ export { WrapTooltip } from './components/Wrapper/WrapTooltip';
10
+ export * from './helper';
11
+ export * from './type';
12
+ export * as CheckboxTypes from './components/Checkbox/type';
13
+ export * as FileInputTypes from './components/FileInput/type';
14
+ export * as IntervalTypes from './components/Interval/type';
15
+ export * as InputsTypes from './components/Inputs/type';
16
+ export * as TextInputTypes from './components/TextInput/type';
package/dist/type.d.ts ADDED
@@ -0,0 +1,135 @@
1
+ import { Mapping, Primitive } from 'clientnode';
2
+ import { Requireable } from 'clientnode/property-types';
3
+ import { ComponentClass, FocusEvent, ForwardRefExoticComponent, FunctionComponent, MouseEvent, ReactElement, RefAttributes } from 'react';
4
+ import { GenericEvent } from 'react-generic-tools/type';
5
+ import { ComponentAdapter, StaticWebComponent as StaticBaseWebComponent, ValidationMapping } from 'web-component-wrapper/type';
6
+ import { ThemeProviderProps } from '@rmwc/theme';
7
+ export declare const PrimitiveTypes: readonly ["boolean", "DateTime", "integer", "number", "string"];
8
+ export type PrimitiveType = typeof PrimitiveTypes[number];
9
+ export type Type = boolean | number | string | object;
10
+ export type TypeDefinition = Array<TypeDefinition> | Type;
11
+ export interface SelectionOption {
12
+ label: string;
13
+ value: Primitive;
14
+ }
15
+ export type NormalizedSelection = Array<SelectionOption>;
16
+ export type BaseSelectionDefinition = Array<Primitive> | Mapping | NormalizedSelection;
17
+ export type SelectionDefinition = Array<[Primitive, string]> | BaseSelectionDefinition;
18
+ export interface CommonBaseModel<Type = unknown> {
19
+ declaration: string;
20
+ description: string;
21
+ name: string;
22
+ emptyEqualsNull: boolean;
23
+ maximum: number | string;
24
+ minimum: number | string;
25
+ maximumLength: number;
26
+ minimumLength: number;
27
+ type: TypeDefinition;
28
+ trim: boolean;
29
+ value?: Type;
30
+ }
31
+ export interface ModelState {
32
+ dirty: boolean;
33
+ pristine: boolean;
34
+ touched: boolean;
35
+ untouched: boolean;
36
+ focused: boolean;
37
+ visited: boolean;
38
+ invalid: boolean;
39
+ valid: boolean;
40
+ invalidRequired: boolean;
41
+ }
42
+ export type Pattern = Array<RegExp | string> | RegExp | string;
43
+ export interface BaseModel<T = unknown> extends CommonBaseModel<T> {
44
+ pattern?: Pattern;
45
+ invertedPattern?: Pattern;
46
+ selection?: BaseSelectionDefinition;
47
+ mutable: boolean;
48
+ writable: boolean;
49
+ nullable: boolean;
50
+ state?: ModelState;
51
+ }
52
+ export interface BaseProperties<T = unknown> extends CommonBaseModel<T>, ModelState {
53
+ className: Array<string> | string;
54
+ styles: Mapping;
55
+ themeConfiguration: ThemeProviderProps['options'];
56
+ disabled: boolean;
57
+ enforceUncontrolled: boolean;
58
+ id?: string;
59
+ label: string;
60
+ name: string;
61
+ initialValue: T;
62
+ model: BaseModel<T>;
63
+ required: boolean;
64
+ requiredText: string;
65
+ componentProperties: Mapping<unknown>;
66
+ domNodeProperties: Mapping<unknown>;
67
+ selection?: SelectionDefinition;
68
+ showDeclaration: boolean;
69
+ showInitialValidationState: boolean;
70
+ showValidationState: boolean;
71
+ tooltip: string;
72
+ triggerInitialPropertiesConsolidation: boolean;
73
+ }
74
+ export type BaseProps<T = unknown> = Partial<Omit<BaseProperties<T>, 'model'>> & {
75
+ model?: (Partial<Omit<BaseModel<T>, 'state'>> & {
76
+ state?: Partial<ModelState>;
77
+ });
78
+ };
79
+ export type DefaultBaseProperties<T = unknown> = Omit<BaseProps<T>, 'model'> & {
80
+ model: BaseModel<T>;
81
+ };
82
+ export interface TypedProperties<T = unknown> extends BaseProperties<T> {
83
+ initialValue: T;
84
+ model: BaseModel<T>;
85
+ onBlur: (event: GenericEvent | undefined, properties: this) => void;
86
+ onChange: (properties: this, event?: GenericEvent) => void;
87
+ onChangeShowDeclaration: (show: boolean, event: GenericEvent | undefined, properties: this) => void;
88
+ onChangeState: (state: ModelState, event: GenericEvent | undefined, properties: this) => void;
89
+ onChangeValue: (value: T, event: GenericEvent | undefined, properties: this) => void;
90
+ onClick: (event: MouseEvent, properties: this) => void;
91
+ onFocus: (event: FocusEvent, properties: this) => void;
92
+ onTouch: (event: GenericEvent, properties: this) => void;
93
+ }
94
+ export type Properties<T = unknown> = TypedProperties<T> & CommonBaseModel<T>;
95
+ export type Props<T = unknown> = Partial<Omit<Properties<T>, 'model'>> & {
96
+ model?: (Partial<Omit<BaseModel<T>, 'state'>> & {
97
+ state?: Partial<ModelState>;
98
+ });
99
+ };
100
+ export type DefaultProperties<T = unknown> = Omit<Props<T>, 'model'> & {
101
+ model: BaseModel<T>;
102
+ };
103
+ export interface State<T = unknown> {
104
+ modelState?: ModelState;
105
+ value?: null | T;
106
+ }
107
+ export interface ValueState<T = unknown, MS = ModelState> {
108
+ modelState: MS;
109
+ value: null | T;
110
+ }
111
+ export interface StaticWebComponent<Type, MS = ModelState, DP = DefaultProperties<Type>> extends StaticBaseWebComponent<Type> {
112
+ defaultModelState: MS;
113
+ defaultProperties: DP;
114
+ strict: boolean;
115
+ }
116
+ export type StaticComponent<Type, P = Props, MS = ModelState, DP = DefaultProperties<Type>> = Omit<ComponentClass<P>, 'propTypes'> & StaticWebComponent<Type, MS, DP>;
117
+ export type StaticFunctionComponent<Type, P = Props, MS = ModelState, DP = DefaultProperties<Type>> = Omit<FunctionComponent<P>, 'propTypes'> & StaticComponent<Type, P, MS, DP>;
118
+ export interface Component<ValueType, ComponentType, P = Props<ValueType>, MS = ModelState, DP = DefaultProperties<ValueType>, A = ComponentAdapter<P>> extends Omit<ForwardRefExoticComponent<P>, 'propTypes'>, StaticWebComponent<ComponentType, MS, DP> {
119
+ (props: P & RefAttributes<A>): ReactElement;
120
+ }
121
+ export declare const baseModelPropertyTypes: ValidationMapping;
122
+ export declare const modelStatePropertyTypes: {
123
+ [key in keyof ModelState]: Requireable<boolean | symbol>;
124
+ };
125
+ export declare const modelPropertyTypes: ValidationMapping;
126
+ export declare const propertyTypes: ValidationMapping;
127
+ export declare const defaultModelState: ModelState;
128
+ export declare const defaultModel: BaseModel<string>;
129
+ export declare const defaultProperties: DefaultProperties;
130
+ export interface ConfigurationProperties {
131
+ strict?: boolean;
132
+ themeConfiguration?: ThemeProviderProps['options'];
133
+ tooltip?: Properties['tooltip'];
134
+ wrap?: boolean;
135
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-input-material",
3
- "version": "0.0.804",
3
+ "version": "0.0.806",
4
4
  "description": "Reusable material design based input field with support for (richt-)text, code, selections, numbers, dates and so on.",
5
5
  "keywords": [
6
6
  "form-field",
@@ -16,6 +16,25 @@
16
16
  },
17
17
  "license": "CC-BY-3.0",
18
18
  "main": "dist/index.js",
19
+ "exports": {
20
+ ".": "./dist/index.js",
21
+ "./components/*": "./dist/components/*",
22
+ "./helper": "./dist/helper.js",
23
+ "./type": "./dist/type.js"
24
+ },
25
+ "typesVersions": {
26
+ "*": {
27
+ "components": [
28
+ "./dist/components"
29
+ ],
30
+ "implementations": [
31
+ "./dist/type"
32
+ ],
33
+ "helper": [
34
+ "./dist/helper"
35
+ ]
36
+ }
37
+ },
19
38
  "author": {
20
39
  "name": "Torben Sickert",
21
40
  "email": "info@torben.website",
@@ -78,6 +97,7 @@
78
97
  "dist/index.d.ts",
79
98
  "dist/index.js",
80
99
  "dist/implementations/rmwc/material.css",
100
+ "dist/implementations/type.d.ts",
81
101
  "dist/type.d.ts",
82
102
  "dist/type.js"
83
103
  ],
@@ -159,7 +179,7 @@
159
179
  "@typescript-eslint/eslint-plugin": "^8.57.2",
160
180
  "@typescript-eslint/parser": "^8.57.2",
161
181
  "blob-util": "^2.0.2",
162
- "clientnode": "4.0.1362",
182
+ "clientnode": "4.0.1363",
163
183
  "css-loader": "^7.1.4",
164
184
  "cssnano": "^7.1.3",
165
185
  "documentation-website": "^1.0.401",
@@ -181,7 +201,7 @@
181
201
  "prop-types": "^15.8.1",
182
202
  "react": "^18.3.1",
183
203
  "react-dom": "^18.3.1",
184
- "react-generic-animate": "^0.0.116",
204
+ "react-generic-animate": "^0.0.117",
185
205
  "react-generic-dummy": "^0.0.124",
186
206
  "react-generic-tools": "^0.0.110",
187
207
  "react-transition-group": "^4.4.5",
@@ -194,7 +214,7 @@
194
214
  "typescript-eslint": "^8.57.2",
195
215
  "typescript-plugin-css-modules": "^5.2.0",
196
216
  "web-component-wrapper": "^0.0.549",
197
- "weboptimizer": "^3.0.13",
217
+ "weboptimizer": "^3.0.14",
198
218
  "webpack-dev-server": "^5.2.3"
199
219
  },
200
220
  "peerDependencies": {