amis 1.9.1-beta.1 → 1.9.1-beta.3
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/RootRenderer.js +10 -2
- package/lib/RootRenderer.js.map +2 -2
- package/lib/Schema.d.ts +3 -2
- package/lib/Schema.js.map +1 -1
- package/lib/components/Alert2.d.ts +10 -10
- package/lib/components/Button.d.ts +11 -10
- package/lib/components/Button.js +2 -2
- package/lib/components/Button.js.map +2 -2
- package/lib/components/CalendarMobile.d.ts +40 -40
- package/lib/components/Checkbox.js +1 -1
- package/lib/components/Checkbox.js.map +2 -2
- package/lib/components/ContextMenu.d.ts +4 -0
- package/lib/components/ContextMenu.js +23 -7
- package/lib/components/ContextMenu.js.map +2 -2
- package/lib/components/DatePicker.d.ts +40 -40
- package/lib/components/DateRangePicker.d.ts +40 -40
- package/lib/components/Form.d.ts +22 -0
- package/lib/components/Form.js +44 -0
- package/lib/components/Form.js.map +13 -0
- package/lib/components/FormField.d.ts +65 -0
- package/lib/components/FormField.js +48 -0
- package/lib/components/FormField.js.map +13 -0
- package/lib/components/InputBox.d.ts +10 -10
- package/lib/components/InputBox.js +4 -3
- package/lib/components/InputBox.js.map +2 -2
- package/lib/components/InputBoxWithSuggestion.d.ts +280 -0
- package/lib/components/InputBoxWithSuggestion.js +65 -0
- package/lib/components/InputBoxWithSuggestion.js.map +13 -0
- package/lib/components/ListGroup.d.ts +10 -10
- package/lib/components/PickerContainer.d.ts +4 -2
- package/lib/components/PickerContainer.js +28 -5
- package/lib/components/PickerContainer.js.map +2 -2
- package/lib/components/Radios.d.ts +10 -10
- package/lib/components/ResultBox.d.ts +40 -40
- package/lib/components/SearchBox.d.ts +40 -40
- package/lib/components/Select.d.ts +195 -202
- package/lib/components/Select.js +7 -3
- package/lib/components/Select.js.map +2 -2
- package/lib/components/Textarea.d.ts +568 -2
- package/lib/components/Textarea.js +129 -1
- package/lib/components/Textarea.js.map +2 -2
- package/lib/components/Toast.js +11 -9
- package/lib/components/Toast.js.map +2 -2
- package/lib/components/UserSelect.d.ts +500 -0
- package/lib/components/UserSelect.js +559 -0
- package/lib/components/UserSelect.js.map +13 -0
- package/lib/components/UserTabSelect.d.ts +320 -0
- package/lib/components/UserTabSelect.js +163 -0
- package/lib/components/UserTabSelect.js.map +13 -0
- package/lib/components/WithRemoteConfig.d.ts +7 -0
- package/lib/components/WithRemoteConfig.js +17 -11
- package/lib/components/WithRemoteConfig.js.map +2 -2
- package/lib/components/calendar/DaysView.d.ts +26 -1
- package/lib/components/calendar/DaysView.js +48 -14
- package/lib/components/calendar/DaysView.js.map +2 -2
- package/lib/components/calendar/TimeView.d.ts +1 -1
- package/lib/components/calendar/TimeView.js +8 -2
- package/lib/components/calendar/TimeView.js.map +2 -2
- package/lib/components/icons.d.ts +7 -1
- package/lib/components/icons.js +17 -1
- package/lib/components/icons.js.map +2 -2
- package/lib/components/index.d.ts +2 -1
- package/lib/components/index.js +3 -1
- package/lib/components/index.js.map +2 -2
- package/lib/components/json-schema/Array.d.ts +3 -0
- package/lib/components/json-schema/Array.js +125 -0
- package/lib/components/json-schema/Array.js.map +13 -0
- package/lib/components/json-schema/Item.d.ts +3 -0
- package/lib/components/json-schema/Item.js +34 -0
- package/lib/components/json-schema/Item.js.map +13 -0
- package/lib/components/json-schema/Object.d.ts +3 -0
- package/lib/components/json-schema/Object.js +178 -0
- package/lib/components/json-schema/Object.js.map +13 -0
- package/lib/components/json-schema/index.d.ts +279 -0
- package/lib/components/json-schema/index.js +16 -0
- package/lib/components/json-schema/index.js.map +13 -0
- package/lib/components/schema-editor/Array.js +2 -2
- package/lib/components/schema-editor/Array.js.map +2 -2
- package/lib/components/schema-editor/Common.d.ts +2 -0
- package/lib/components/schema-editor/Common.js +39 -3
- package/lib/components/schema-editor/Common.js.map +2 -2
- package/lib/components/schema-editor/Object.js +2 -2
- package/lib/components/schema-editor/Object.js.map +2 -2
- package/lib/components/schema-editor/index.d.ts +45 -41
- package/lib/components/schema-editor/index.js +5 -5
- package/lib/components/schema-editor/index.js.map +2 -2
- package/lib/hooks/use-validation-resolver.d.ts +1 -0
- package/lib/hooks/use-validation-resolver.js +49 -0
- package/lib/hooks/use-validation-resolver.js.map +13 -0
- package/lib/icons/department.js +17 -0
- package/lib/icons/menu.js +9 -0
- package/lib/icons/post.js +15 -0
- package/lib/icons/role.js +14 -0
- package/lib/icons/user-remove.js +12 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.js +3 -1
- package/lib/index.js.map +2 -2
- package/lib/locale/de-DE.js +11 -1
- package/lib/locale/de-DE.js.map +2 -2
- package/lib/locale/en-US.js +12 -1
- package/lib/locale/en-US.js.map +2 -2
- package/lib/locale/zh-CN.js +14 -3
- package/lib/locale/zh-CN.js.map +2 -2
- package/lib/renderers/Action.js +25 -11
- package/lib/renderers/Action.js.map +2 -2
- package/lib/renderers/CRUD.js +5 -1
- package/lib/renderers/CRUD.js.map +2 -2
- package/lib/renderers/Dialog.js +9 -3
- package/lib/renderers/Dialog.js.map +2 -2
- package/lib/renderers/Drawer.js +5 -1
- package/lib/renderers/Drawer.js.map +2 -2
- package/lib/renderers/Form/InputDate.d.ts +2 -2
- package/lib/renderers/Form/InputDate.js.map +2 -2
- package/lib/renderers/Form/JSONSchema.d.ts +23 -0
- package/lib/renderers/Form/JSONSchema.js +44 -0
- package/lib/renderers/Form/JSONSchema.js.map +13 -0
- package/lib/renderers/Form/JSONSchemaEditor.d.ts +2 -3
- package/lib/renderers/Form/JSONSchemaEditor.js +9 -24
- package/lib/renderers/Form/JSONSchemaEditor.js.map +2 -2
- package/lib/renderers/Form/Textarea.d.ts +1 -8
- package/lib/renderers/Form/Textarea.js +11 -75
- package/lib/renderers/Form/Textarea.js.map +2 -2
- package/lib/renderers/Form/UserSelect.d.ts +54 -0
- package/lib/renderers/Form/UserSelect.js +197 -0
- package/lib/renderers/Form/UserSelect.js.map +13 -0
- package/lib/renderers/Form/index.d.ts +1 -1
- package/lib/renderers/Form/index.js +88 -42
- package/lib/renderers/Form/index.js.map +2 -2
- package/lib/renderers/Log.d.ts +13 -1
- package/lib/renderers/Log.js +82 -16
- package/lib/renderers/Log.js.map +2 -2
- package/lib/renderers/Page.js +5 -1
- package/lib/renderers/Page.js.map +2 -2
- package/lib/renderers/Service.js +5 -1
- package/lib/renderers/Service.js.map +2 -2
- package/lib/renderers/Wizard.js +37 -14
- package/lib/renderers/Wizard.js.map +2 -2
- package/lib/store/form.js +65 -45
- package/lib/store/form.js.map +2 -2
- package/lib/themes/ang-ie11.css +561 -21
- package/lib/themes/ang.css +538 -9
- package/lib/themes/ang.css.map +1 -1
- package/lib/themes/antd-ie11.css +561 -21
- package/lib/themes/antd.css +538 -9
- package/lib/themes/antd.css.map +1 -1
- package/lib/themes/cxd-ie11.css +561 -21
- package/lib/themes/cxd.css +538 -9
- package/lib/themes/cxd.css.map +1 -1
- package/lib/themes/dark-ie11.css +561 -21
- package/lib/themes/dark.css +538 -9
- package/lib/themes/dark.css.map +1 -1
- package/lib/themes/default-ie11.css +561 -21
- package/lib/themes/default.css +538 -9
- package/lib/themes/default.css.map +1 -1
- package/lib/utils/api.js +1 -1
- package/lib/utils/api.js.map +2 -2
- package/lib/utils/renderer-event.js.map +2 -2
- package/package.json +2 -1
- package/schema.json +539 -3
- package/scss/_properties.scss +20 -8
- package/scss/components/_input-box.scss +22 -1
- package/scss/components/_json-schema.scss +124 -0
- package/scss/components/_log.scss +37 -5
- package/scss/components/form/_date-range.scss +1 -0
- package/scss/components/form/_select.scss +9 -0
- package/scss/components/form/_user-select.scss +422 -0
- package/scss/themes/_common.scss +2 -0
- package/sdk/ang-ie11.css +651 -21
- package/sdk/ang.css +628 -9
- package/sdk/antd-ie11.css +651 -21
- package/sdk/antd.css +628 -9
- package/sdk/barcode.js +51 -51
- package/sdk/charts.js +14 -14
- package/sdk/codemirror.js +7 -7
- package/sdk/color-picker.js +65 -65
- package/sdk/cropperjs.js +2 -2
- package/sdk/cxd-ie11.css +651 -21
- package/sdk/cxd.css +628 -9
- package/sdk/dark-ie11.css +651 -21
- package/sdk/dark.css +628 -9
- package/sdk/exceljs.js +1 -1
- package/sdk/locale/de-DE.js +11 -1
- package/sdk/markdown.js +69 -69
- package/sdk/papaparse.js +1 -1
- package/sdk/renderers/Form/CityDB.js +1 -1
- package/sdk/rest.js +16 -16
- package/sdk/rich-text.js +62 -62
- package/sdk/sdk-ie11.css +651 -21
- package/sdk/sdk.css +628 -9
- package/sdk/sdk.js +1655 -1643
- package/sdk/thirds/hls.js/hls.js +1 -1
- package/sdk/thirds/mpegts.js/mpegts.js +1 -1
- package/sdk/tinymce.js +57 -57
- package/src/RootRenderer.tsx +27 -15
- package/src/Schema.ts +5 -1
- package/src/components/Button.tsx +3 -0
- package/src/components/Checkbox.tsx +2 -1
- package/src/components/ContextMenu.tsx +25 -7
- package/src/components/Form.tsx +70 -0
- package/src/components/FormField.tsx +127 -0
- package/src/components/InputBox.tsx +4 -1
- package/src/components/InputBoxWithSuggestion.tsx +113 -0
- package/src/components/PickerContainer.tsx +20 -5
- package/src/components/Select.tsx +18 -10
- package/src/components/Textarea.tsx +234 -2
- package/src/components/Toast.tsx +19 -18
- package/src/components/UserSelect.tsx +850 -0
- package/src/components/UserTabSelect.tsx +261 -0
- package/src/components/WithRemoteConfig.tsx +22 -7
- package/src/components/calendar/DaysView.tsx +53 -16
- package/src/components/calendar/TimeView.tsx +10 -5
- package/src/components/icons.tsx +17 -1
- package/src/components/index.tsx +3 -1
- package/src/components/json-schema/Array.tsx +216 -0
- package/src/components/json-schema/Item.tsx +47 -0
- package/src/components/json-schema/Object.tsx +339 -0
- package/src/components/json-schema/index.tsx +44 -0
- package/src/components/schema-editor/Array.tsx +3 -1
- package/src/components/schema-editor/Common.tsx +61 -4
- package/src/components/schema-editor/Object.tsx +3 -1
- package/src/components/schema-editor/index.tsx +12 -5
- package/src/hooks/use-validation-resolver.ts +45 -0
- package/src/icons/department.svg +17 -0
- package/src/icons/menu.svg +2 -0
- package/src/icons/post.svg +15 -0
- package/src/icons/role.svg +14 -0
- package/src/icons/user-remove.svg +12 -0
- package/src/index.tsx +2 -0
- package/src/locale/de-DE.ts +11 -1
- package/src/locale/en-US.ts +12 -1
- package/src/locale/zh-CN.ts +14 -3
- package/src/renderers/Action.tsx +10 -9
- package/src/renderers/CRUD.tsx +5 -1
- package/src/renderers/Dialog.tsx +9 -3
- package/src/renderers/Drawer.tsx +5 -1
- package/src/renderers/Form/InputDate.tsx +9 -4
- package/src/renderers/Form/JSONSchema.tsx +56 -0
- package/src/renderers/Form/JSONSchemaEditor.tsx +8 -27
- package/src/renderers/Form/Textarea.tsx +7 -117
- package/src/renderers/Form/UserSelect.tsx +263 -0
- package/src/renderers/Form/index.tsx +28 -18
- package/src/renderers/Log.tsx +148 -13
- package/src/renderers/Page.tsx +6 -1
- package/src/renderers/Service.tsx +5 -1
- package/src/renderers/Wizard.tsx +24 -10
- package/src/store/form.ts +24 -17
- package/src/utils/api.ts +1 -1
- package/src/utils/renderer-event.ts +0 -2
@@ -0,0 +1,280 @@
|
|
1
|
+
/// <reference types="hoist-non-react-statics" />
|
2
|
+
import React from 'react';
|
3
|
+
import { LocaleProps } from '../locale';
|
4
|
+
import { ThemeProps } from '../theme';
|
5
|
+
export interface InputBoxWithSuggestionProps extends ThemeProps, LocaleProps {
|
6
|
+
options: Array<any>;
|
7
|
+
value: any;
|
8
|
+
onChange: (value: any) => void;
|
9
|
+
disabled?: boolean;
|
10
|
+
searchable?: boolean;
|
11
|
+
popOverContainer?: any;
|
12
|
+
hasError?: boolean;
|
13
|
+
placeholder?: string;
|
14
|
+
clearable?: boolean;
|
15
|
+
}
|
16
|
+
export declare class InputBoxWithSuggestion extends React.Component<InputBoxWithSuggestionProps> {
|
17
|
+
constructor(props: InputBoxWithSuggestionProps);
|
18
|
+
onSearch(text: string): void;
|
19
|
+
filterOptions(options: any[]): any[];
|
20
|
+
onPopClose(e: React.MouseEvent, onClose: () => void): void;
|
21
|
+
render(): JSX.Element;
|
22
|
+
}
|
23
|
+
declare const _default: {
|
24
|
+
new (props: Omit<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
25
|
+
locale?: string | undefined;
|
26
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
27
|
+
}, keyof ThemeProps> & import("../theme").ThemeOutterProps): {
|
28
|
+
ref: any;
|
29
|
+
childRef(ref: any): void;
|
30
|
+
getWrappedInstance(): any;
|
31
|
+
render(): JSX.Element;
|
32
|
+
context: any;
|
33
|
+
setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<Omit<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
34
|
+
locale?: string | undefined;
|
35
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
36
|
+
}, keyof ThemeProps> & import("../theme").ThemeOutterProps>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
|
37
|
+
forceUpdate(callback?: (() => void) | undefined): void;
|
38
|
+
readonly props: Readonly<Omit<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
39
|
+
locale?: string | undefined;
|
40
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
41
|
+
}, keyof ThemeProps> & import("../theme").ThemeOutterProps> & Readonly<{
|
42
|
+
children?: React.ReactNode;
|
43
|
+
}>;
|
44
|
+
state: Readonly<{}>;
|
45
|
+
refs: {
|
46
|
+
[key: string]: React.ReactInstance;
|
47
|
+
};
|
48
|
+
componentDidMount?(): void;
|
49
|
+
shouldComponentUpdate?(nextProps: Readonly<Omit<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
50
|
+
locale?: string | undefined;
|
51
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
52
|
+
}, keyof ThemeProps> & import("../theme").ThemeOutterProps>, nextState: Readonly<{}>, nextContext: any): boolean;
|
53
|
+
componentWillUnmount?(): void;
|
54
|
+
componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
|
55
|
+
getSnapshotBeforeUpdate?(prevProps: Readonly<Omit<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
56
|
+
locale?: string | undefined;
|
57
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
58
|
+
}, keyof ThemeProps> & import("../theme").ThemeOutterProps>, prevState: Readonly<{}>): any;
|
59
|
+
componentDidUpdate?(prevProps: Readonly<Omit<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
60
|
+
locale?: string | undefined;
|
61
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
62
|
+
}, keyof ThemeProps> & import("../theme").ThemeOutterProps>, prevState: Readonly<{}>, snapshot?: any): void;
|
63
|
+
componentWillMount?(): void;
|
64
|
+
UNSAFE_componentWillMount?(): void;
|
65
|
+
componentWillReceiveProps?(nextProps: Readonly<Omit<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
66
|
+
locale?: string | undefined;
|
67
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
68
|
+
}, keyof ThemeProps> & import("../theme").ThemeOutterProps>, nextContext: any): void;
|
69
|
+
UNSAFE_componentWillReceiveProps?(nextProps: Readonly<Omit<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
70
|
+
locale?: string | undefined;
|
71
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
72
|
+
}, keyof ThemeProps> & import("../theme").ThemeOutterProps>, nextContext: any): void;
|
73
|
+
componentWillUpdate?(nextProps: Readonly<Omit<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
74
|
+
locale?: string | undefined;
|
75
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
76
|
+
}, keyof ThemeProps> & import("../theme").ThemeOutterProps>, nextState: Readonly<{}>, nextContext: any): void;
|
77
|
+
UNSAFE_componentWillUpdate?(nextProps: Readonly<Omit<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
78
|
+
locale?: string | undefined;
|
79
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
80
|
+
}, keyof ThemeProps> & import("../theme").ThemeOutterProps>, nextState: Readonly<{}>, nextContext: any): void;
|
81
|
+
};
|
82
|
+
displayName: string;
|
83
|
+
contextType: React.Context<string>;
|
84
|
+
ComposedComponent: React.ComponentType<{
|
85
|
+
new (props: Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
86
|
+
locale?: string | undefined;
|
87
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
88
|
+
}): {
|
89
|
+
ref: any;
|
90
|
+
childRef(ref: any): void;
|
91
|
+
getWrappedInstance(): any;
|
92
|
+
render(): JSX.Element;
|
93
|
+
context: any;
|
94
|
+
setState<K_1 extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
95
|
+
locale?: string | undefined;
|
96
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
97
|
+
}>) => {} | Pick<{}, K_1> | null) | Pick<{}, K_1> | null, callback?: (() => void) | undefined): void;
|
98
|
+
forceUpdate(callback?: (() => void) | undefined): void;
|
99
|
+
readonly props: Readonly<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
100
|
+
locale?: string | undefined;
|
101
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
102
|
+
}> & Readonly<{
|
103
|
+
children?: React.ReactNode;
|
104
|
+
}>;
|
105
|
+
state: Readonly<{}>;
|
106
|
+
refs: {
|
107
|
+
[key: string]: React.ReactInstance;
|
108
|
+
};
|
109
|
+
componentDidMount?(): void;
|
110
|
+
shouldComponentUpdate?(nextProps: Readonly<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
111
|
+
locale?: string | undefined;
|
112
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
113
|
+
}>, nextState: Readonly<{}>, nextContext: any): boolean;
|
114
|
+
componentWillUnmount?(): void;
|
115
|
+
componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
|
116
|
+
getSnapshotBeforeUpdate?(prevProps: Readonly<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
117
|
+
locale?: string | undefined;
|
118
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
119
|
+
}>, prevState: Readonly<{}>): any;
|
120
|
+
componentDidUpdate?(prevProps: Readonly<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
121
|
+
locale?: string | undefined;
|
122
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
123
|
+
}>, prevState: Readonly<{}>, snapshot?: any): void;
|
124
|
+
componentWillMount?(): void;
|
125
|
+
UNSAFE_componentWillMount?(): void;
|
126
|
+
componentWillReceiveProps?(nextProps: Readonly<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
127
|
+
locale?: string | undefined;
|
128
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
129
|
+
}>, nextContext: any): void;
|
130
|
+
UNSAFE_componentWillReceiveProps?(nextProps: Readonly<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
131
|
+
locale?: string | undefined;
|
132
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
133
|
+
}>, nextContext: any): void;
|
134
|
+
componentWillUpdate?(nextProps: Readonly<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
135
|
+
locale?: string | undefined;
|
136
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
137
|
+
}>, nextState: Readonly<{}>, nextContext: any): void;
|
138
|
+
UNSAFE_componentWillUpdate?(nextProps: Readonly<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
139
|
+
locale?: string | undefined;
|
140
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
141
|
+
}>, nextState: Readonly<{}>, nextContext: any): void;
|
142
|
+
};
|
143
|
+
displayName: string;
|
144
|
+
contextType: React.Context<string>;
|
145
|
+
ComposedComponent: React.ComponentType<typeof InputBoxWithSuggestion>;
|
146
|
+
} & import("hoist-non-react-statics").NonReactStatics<typeof InputBoxWithSuggestion, {}> & {
|
147
|
+
ComposedComponent: typeof InputBoxWithSuggestion;
|
148
|
+
}>;
|
149
|
+
} & import("hoist-non-react-statics").NonReactStatics<{
|
150
|
+
new (props: Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
151
|
+
locale?: string | undefined;
|
152
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
153
|
+
}): {
|
154
|
+
ref: any;
|
155
|
+
childRef(ref: any): void;
|
156
|
+
getWrappedInstance(): any;
|
157
|
+
render(): JSX.Element;
|
158
|
+
context: any;
|
159
|
+
setState<K_1 extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
160
|
+
locale?: string | undefined;
|
161
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
162
|
+
}>) => {} | Pick<{}, K_1> | null) | Pick<{}, K_1> | null, callback?: (() => void) | undefined): void;
|
163
|
+
forceUpdate(callback?: (() => void) | undefined): void;
|
164
|
+
readonly props: Readonly<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
165
|
+
locale?: string | undefined;
|
166
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
167
|
+
}> & Readonly<{
|
168
|
+
children?: React.ReactNode;
|
169
|
+
}>;
|
170
|
+
state: Readonly<{}>;
|
171
|
+
refs: {
|
172
|
+
[key: string]: React.ReactInstance;
|
173
|
+
};
|
174
|
+
componentDidMount?(): void;
|
175
|
+
shouldComponentUpdate?(nextProps: Readonly<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
176
|
+
locale?: string | undefined;
|
177
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
178
|
+
}>, nextState: Readonly<{}>, nextContext: any): boolean;
|
179
|
+
componentWillUnmount?(): void;
|
180
|
+
componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
|
181
|
+
getSnapshotBeforeUpdate?(prevProps: Readonly<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
182
|
+
locale?: string | undefined;
|
183
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
184
|
+
}>, prevState: Readonly<{}>): any;
|
185
|
+
componentDidUpdate?(prevProps: Readonly<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
186
|
+
locale?: string | undefined;
|
187
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
188
|
+
}>, prevState: Readonly<{}>, snapshot?: any): void;
|
189
|
+
componentWillMount?(): void;
|
190
|
+
UNSAFE_componentWillMount?(): void;
|
191
|
+
componentWillReceiveProps?(nextProps: Readonly<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
192
|
+
locale?: string | undefined;
|
193
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
194
|
+
}>, nextContext: any): void;
|
195
|
+
UNSAFE_componentWillReceiveProps?(nextProps: Readonly<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
196
|
+
locale?: string | undefined;
|
197
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
198
|
+
}>, nextContext: any): void;
|
199
|
+
componentWillUpdate?(nextProps: Readonly<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
200
|
+
locale?: string | undefined;
|
201
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
202
|
+
}>, nextState: Readonly<{}>, nextContext: any): void;
|
203
|
+
UNSAFE_componentWillUpdate?(nextProps: Readonly<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
204
|
+
locale?: string | undefined;
|
205
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
206
|
+
}>, nextState: Readonly<{}>, nextContext: any): void;
|
207
|
+
};
|
208
|
+
displayName: string;
|
209
|
+
contextType: React.Context<string>;
|
210
|
+
ComposedComponent: React.ComponentType<typeof InputBoxWithSuggestion>;
|
211
|
+
} & import("hoist-non-react-statics").NonReactStatics<typeof InputBoxWithSuggestion, {}> & {
|
212
|
+
ComposedComponent: typeof InputBoxWithSuggestion;
|
213
|
+
}, {}> & {
|
214
|
+
ComposedComponent: {
|
215
|
+
new (props: Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
216
|
+
locale?: string | undefined;
|
217
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
218
|
+
}): {
|
219
|
+
ref: any;
|
220
|
+
childRef(ref: any): void;
|
221
|
+
getWrappedInstance(): any;
|
222
|
+
render(): JSX.Element;
|
223
|
+
context: any;
|
224
|
+
setState<K_1 extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
225
|
+
locale?: string | undefined;
|
226
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
227
|
+
}>) => {} | Pick<{}, K_1> | null) | Pick<{}, K_1> | null, callback?: (() => void) | undefined): void;
|
228
|
+
forceUpdate(callback?: (() => void) | undefined): void;
|
229
|
+
readonly props: Readonly<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
230
|
+
locale?: string | undefined;
|
231
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
232
|
+
}> & Readonly<{
|
233
|
+
children?: React.ReactNode;
|
234
|
+
}>;
|
235
|
+
state: Readonly<{}>;
|
236
|
+
refs: {
|
237
|
+
[key: string]: React.ReactInstance;
|
238
|
+
};
|
239
|
+
componentDidMount?(): void;
|
240
|
+
shouldComponentUpdate?(nextProps: Readonly<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
241
|
+
locale?: string | undefined;
|
242
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
243
|
+
}>, nextState: Readonly<{}>, nextContext: any): boolean;
|
244
|
+
componentWillUnmount?(): void;
|
245
|
+
componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
|
246
|
+
getSnapshotBeforeUpdate?(prevProps: Readonly<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
247
|
+
locale?: string | undefined;
|
248
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
249
|
+
}>, prevState: Readonly<{}>): any;
|
250
|
+
componentDidUpdate?(prevProps: Readonly<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
251
|
+
locale?: string | undefined;
|
252
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
253
|
+
}>, prevState: Readonly<{}>, snapshot?: any): void;
|
254
|
+
componentWillMount?(): void;
|
255
|
+
UNSAFE_componentWillMount?(): void;
|
256
|
+
componentWillReceiveProps?(nextProps: Readonly<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
257
|
+
locale?: string | undefined;
|
258
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
259
|
+
}>, nextContext: any): void;
|
260
|
+
UNSAFE_componentWillReceiveProps?(nextProps: Readonly<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
261
|
+
locale?: string | undefined;
|
262
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
263
|
+
}>, nextContext: any): void;
|
264
|
+
componentWillUpdate?(nextProps: Readonly<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
265
|
+
locale?: string | undefined;
|
266
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
267
|
+
}>, nextState: Readonly<{}>, nextContext: any): void;
|
268
|
+
UNSAFE_componentWillUpdate?(nextProps: Readonly<Omit<InputBoxWithSuggestionProps, keyof LocaleProps> & {
|
269
|
+
locale?: string | undefined;
|
270
|
+
translate?: ((str: string, ...args: any[]) => string) | undefined;
|
271
|
+
}>, nextState: Readonly<{}>, nextContext: any): void;
|
272
|
+
};
|
273
|
+
displayName: string;
|
274
|
+
contextType: React.Context<string>;
|
275
|
+
ComposedComponent: React.ComponentType<typeof InputBoxWithSuggestion>;
|
276
|
+
} & import("hoist-non-react-statics").NonReactStatics<typeof InputBoxWithSuggestion, {}> & {
|
277
|
+
ComposedComponent: typeof InputBoxWithSuggestion;
|
278
|
+
};
|
279
|
+
};
|
280
|
+
export default _default;
|
@@ -0,0 +1,65 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.InputBoxWithSuggestion = void 0;
|
4
|
+
var tslib_1 = require("tslib");
|
5
|
+
var react_1 = (0, tslib_1.__importDefault)(require("react"));
|
6
|
+
var react_dom_1 = require("react-dom");
|
7
|
+
var locale_1 = require("../locale");
|
8
|
+
var theme_1 = require("../theme");
|
9
|
+
// @ts-ignore
|
10
|
+
var match_sorter_1 = require("match-sorter");
|
11
|
+
var PopOverContainer_1 = (0, tslib_1.__importDefault)(require("./PopOverContainer"));
|
12
|
+
var SearchBox_1 = (0, tslib_1.__importDefault)(require("./SearchBox"));
|
13
|
+
var GroupedSelection_1 = (0, tslib_1.__importDefault)(require("./GroupedSelection"));
|
14
|
+
var InputBox_1 = (0, tslib_1.__importDefault)(require("./InputBox"));
|
15
|
+
var icons_1 = require("./icons");
|
16
|
+
var option2value = function (item) { return item.value; };
|
17
|
+
var InputBoxWithSuggestion = /** @class */ (function (_super) {
|
18
|
+
(0, tslib_1.__extends)(InputBoxWithSuggestion, _super);
|
19
|
+
function InputBoxWithSuggestion(props) {
|
20
|
+
var _this = _super.call(this, props) || this;
|
21
|
+
_this.state = {
|
22
|
+
searchText: ''
|
23
|
+
};
|
24
|
+
_this.onSearch = _this.onSearch.bind(_this);
|
25
|
+
_this.filterOptions = _this.filterOptions.bind(_this);
|
26
|
+
return _this;
|
27
|
+
}
|
28
|
+
InputBoxWithSuggestion.prototype.onSearch = function (text) {
|
29
|
+
var txt = text.toLowerCase();
|
30
|
+
this.setState({ searchText: txt });
|
31
|
+
};
|
32
|
+
InputBoxWithSuggestion.prototype.filterOptions = function (options) {
|
33
|
+
return (0, match_sorter_1.matchSorter)(options, this.props.value, {
|
34
|
+
keys: ['label', 'value']
|
35
|
+
});
|
36
|
+
};
|
37
|
+
// 选了值,还原options
|
38
|
+
InputBoxWithSuggestion.prototype.onPopClose = function (e, onClose) {
|
39
|
+
this.setState({ searchText: '' });
|
40
|
+
onClose();
|
41
|
+
};
|
42
|
+
InputBoxWithSuggestion.prototype.render = function () {
|
43
|
+
var _this = this;
|
44
|
+
var _a = this.props, placeholder = _a.placeholder, onChange = _a.onChange, value = _a.value, cx = _a.classnames, disabled = _a.disabled, __ = _a.translate, searchable = _a.searchable, popOverContainer = _a.popOverContainer, clearable = _a.clearable, hasError = _a.hasError;
|
45
|
+
var options = this.filterOptions(this.props.options);
|
46
|
+
return (react_1.default.createElement(PopOverContainer_1.default, { popOverContainer: popOverContainer || (function () { return (0, react_dom_1.findDOMNode)(_this); }), popOverRender: function (_a) {
|
47
|
+
var onClose = _a.onClose;
|
48
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
49
|
+
searchable ? (react_1.default.createElement(SearchBox_1.default, { mini: false, onSearch: _this.onSearch })) : null,
|
50
|
+
react_1.default.createElement(GroupedSelection_1.default, { multiple: false, onClick: function (e) { return _this.onPopClose(e, onClose); }, options: options, value: [value], option2value: option2value, onChange: function (value) {
|
51
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(value);
|
52
|
+
} })));
|
53
|
+
} }, function (_a) {
|
54
|
+
var _b, _c;
|
55
|
+
var onClick = _a.onClick, ref = _a.ref, isOpened = _a.isOpened;
|
56
|
+
return (react_1.default.createElement(InputBox_1.default, { className: cx('InputBox--sug', isOpened ? 'is-active' : ''), ref: ref, placeholder: placeholder, disabled: disabled, value: (_c = (_b = options.find(function (o) { return o.value === value; })) === null || _b === void 0 ? void 0 : _b.label) !== null && _c !== void 0 ? _c : value, onChange: onChange, clearable: clearable, onClick: onClick, hasError: hasError },
|
57
|
+
react_1.default.createElement("span", { className: cx('InputBox-caret') },
|
58
|
+
react_1.default.createElement(icons_1.Icon, { icon: "caret", className: "icon" }))));
|
59
|
+
}));
|
60
|
+
};
|
61
|
+
return InputBoxWithSuggestion;
|
62
|
+
}(react_1.default.Component));
|
63
|
+
exports.InputBoxWithSuggestion = InputBoxWithSuggestion;
|
64
|
+
exports.default = (0, theme_1.themeable)((0, locale_1.localeable)(InputBoxWithSuggestion));
|
65
|
+
//# sourceMappingURL=./components/InputBoxWithSuggestion.js.map
|
@@ -0,0 +1,13 @@
|
|
1
|
+
{
|
2
|
+
"version": 3,
|
3
|
+
"file": "InputBoxWithSuggestion.js",
|
4
|
+
"sourceRoot": "",
|
5
|
+
"sources": [
|
6
|
+
"/src/components/InputBoxWithSuggestion.tsx"
|
7
|
+
],
|
8
|
+
"names": [],
|
9
|
+
"mappings": ";;;;AAAA,6DAA0B;AAC1B,uCAAsC;AACtC,oCAAkD;AAClD,kCAA+C;AAC/C,aAAa;AACb,6CAAyC;AACzC,qFAAkD;AAClD,uEAAoC;AACpC,qFAA+C;AAC/C,qEAAkC;AAClC,iCAA6B;AAc7B,IAAM,YAAY,GAAG,UAAC,IAAS,IAAK,OAAA,IAAI,CAAC,KAAK,EAAV,CAAU,CAAC;AAE/C;IAA4C,uDAA4C;IACtF,gCAAY,KAAkC;QAA9C,YACE,kBAAM,KAAK,CAAC,SAMb;QALC,KAAI,CAAC,KAAK,GAAG;YACX,UAAU,EAAE,EAAE;SACf,CAAC;QACF,KAAI,CAAC,QAAQ,GAAG,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;QACzC,KAAI,CAAC,aAAa,GAAG,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;;IACrD,CAAC;IAED,yCAAQ,GAAR,UAAS,IAAY;QACnB,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAE7B,IAAI,CAAC,QAAQ,CAAC,EAAC,UAAU,EAAE,GAAG,EAAC,CAAC,CAAC;IACnC,CAAC;IAED,8CAAa,GAAb,UAAc,OAAc;QAC1B,OAAO,IAAA,0BAAW,EAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;YAC5C,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;SACzB,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;IAChB,2CAAU,GAAV,UAAW,CAAmB,EAAE,OAAmB;QACjD,IAAI,CAAC,QAAQ,CAAC,EAAC,UAAU,EAAE,EAAE,EAAC,CAAC,CAAC;QAChC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,uCAAM,GAAN;QAAA,iBAuDC;QAtDO,IAAA,KAWF,IAAI,CAAC,KAAK,EAVZ,WAAW,iBAAA,EACX,QAAQ,cAAA,EACR,KAAK,WAAA,EACO,EAAE,gBAAA,EACd,QAAQ,cAAA,EACG,EAAE,eAAA,EACb,UAAU,gBAAA,EACV,gBAAgB,sBAAA,EAChB,SAAS,eAAA,EACT,QAAQ,cACI,CAAC;QACf,IAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEvD,OAAO,CACL,8BAAC,0BAAgB,IACf,gBAAgB,EAAE,gBAAgB,IAAI,CAAC,cAAM,OAAA,IAAA,uBAAW,EAAC,KAAI,CAAC,EAAjB,CAAiB,CAAC,EAC/D,aAAa,EAAE,UAAC,EAAS;oBAAR,OAAO,aAAA;gBAAM,OAAA,CAC5B;oBACG,UAAU,CAAC,CAAC,CAAC,CACZ,8BAAC,mBAAS,IAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAI,CAAC,QAAQ,GAAI,CACpD,CAAC,CAAC,CAAC,IAAI;oBACR,8BAAC,0BAAa,IACZ,QAAQ,EAAE,KAAK,EACf,OAAO,EAAE,UAAA,CAAC,IAAI,OAAA,KAAI,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,EAA3B,CAA2B,EACzC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,CAAC,KAAK,CAAC,EACd,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,UAAC,KAAU;4BACnB,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,KAAK,CAAC,CAAC;wBACpB,CAAC,GACD,CACD,CACJ;YAhB6B,CAgB7B,IAEA,UAAC,EAAwB;;gBAAvB,OAAO,aAAA,EAAE,GAAG,SAAA,EAAE,QAAQ,cAAA;YAAM,OAAA,CAC7B,8BAAC,kBAAQ,IACP,SAAS,EAAE,EAAE,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAC3D,GAAG,EAAE,GAAG,EACR,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,MAAA,MAAA,OAAO,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,KAAK,KAAK,EAAjB,CAAiB,CAAC,0CAAE,KAAK,mCAAI,KAAK,EAC3D,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ;gBAElB,wCAAM,SAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC;oBACnC,8BAAC,YAAI,IAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,MAAM,GAAG,CACjC,CACE,CACZ,CAAA;SAAA,CACgB,CACpB,CAAC;IACJ,CAAC;IACH,6BAAC;AAAD,CAAC,AApFD,CAA4C,eAAK,CAAC,SAAS,GAoF1D;AApFY,wDAAsB;AAsFnC,kBAAe,IAAA,iBAAS,EAAC,IAAA,mBAAU,EAAC,sBAAsB,CAAC,CAAC,CAAC",
|
10
|
+
"sourcesContent": [
|
11
|
+
"import React from 'react';\nimport {findDOMNode} from 'react-dom';\nimport {localeable, LocaleProps} from '../locale';\nimport {themeable, ThemeProps} from '../theme';\n// @ts-ignore\nimport {matchSorter} from 'match-sorter';\nimport PopOverContainer from './PopOverContainer';\nimport SearchBox from './SearchBox';\nimport ListSelection from './GroupedSelection';\nimport InputBox from './InputBox';\nimport {Icon} from './icons';\n\nexport interface InputBoxWithSuggestionProps extends ThemeProps, LocaleProps {\n options: Array<any>;\n value: any;\n onChange: (value: any) => void;\n disabled?: boolean;\n searchable?: boolean;\n popOverContainer?: any;\n hasError?: boolean;\n placeholder?: string;\n clearable?: boolean;\n}\n\nconst option2value = (item: any) => item.value;\n\nexport class InputBoxWithSuggestion extends React.Component<InputBoxWithSuggestionProps> {\n constructor(props: InputBoxWithSuggestionProps) {\n super(props);\n this.state = {\n searchText: ''\n };\n this.onSearch = this.onSearch.bind(this);\n this.filterOptions = this.filterOptions.bind(this);\n }\n\n onSearch(text: string) {\n let txt = text.toLowerCase();\n\n this.setState({searchText: txt});\n }\n\n filterOptions(options: any[]) {\n return matchSorter(options, this.props.value, {\n keys: ['label', 'value']\n });\n }\n\n // 选了值,还原options\n onPopClose(e: React.MouseEvent, onClose: () => void) {\n this.setState({searchText: ''});\n onClose();\n }\n\n render() {\n const {\n placeholder,\n onChange,\n value,\n classnames: cx,\n disabled,\n translate: __,\n searchable,\n popOverContainer,\n clearable,\n hasError\n } = this.props;\n const options = this.filterOptions(this.props.options);\n\n return (\n <PopOverContainer\n popOverContainer={popOverContainer || (() => findDOMNode(this))}\n popOverRender={({onClose}) => (\n <>\n {searchable ? (\n <SearchBox mini={false} onSearch={this.onSearch} />\n ) : null}\n <ListSelection\n multiple={false}\n onClick={e => this.onPopClose(e, onClose)}\n options={options}\n value={[value]}\n option2value={option2value}\n onChange={(value: any) => {\n onChange?.(value);\n }}\n />\n </>\n )}\n >\n {({onClick, ref, isOpened}) => (\n <InputBox\n className={cx('InputBox--sug', isOpened ? 'is-active' : '')}\n ref={ref}\n placeholder={placeholder}\n disabled={disabled}\n value={options.find(o => o.value === value)?.label ?? value}\n onChange={onChange}\n clearable={clearable}\n onClick={onClick}\n hasError={hasError}\n >\n <span className={cx('InputBox-caret')}>\n <Icon icon=\"caret\" className=\"icon\" />\n </span>\n </InputBox>\n )}\n </PopOverContainer>\n );\n }\n}\n\nexport default themeable(localeable(InputBoxWithSuggestion));\n"
|
12
|
+
]
|
13
|
+
}
|