@gisce/react-ooui 1.2.0-rc.7 → 1.2.0-rc.71
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.
- package/dist/actionbar/FormActionBar.d.ts.map +1 -1
- package/dist/actionbar/TreeActionBar.d.ts.map +1 -1
- package/dist/common/DatePicker.d.ts +12 -0
- package/dist/common/DatePicker.d.ts.map +1 -1
- package/dist/context/ActionViewContext.d.ts +5 -1
- package/dist/context/ActionViewContext.d.ts.map +1 -1
- package/dist/context/ContentRootContext.d.ts.map +1 -1
- package/dist/context/FormContext.d.ts +4 -2
- package/dist/context/FormContext.d.ts.map +1 -1
- package/dist/helpers/formHelper.d.ts +5 -3
- package/dist/helpers/formHelper.d.ts.map +1 -1
- package/dist/helpers/iconMapper.d.ts +5 -1
- package/dist/helpers/iconMapper.d.ts.map +1 -1
- package/dist/helpers/one2manyHelper.d.ts +12 -4
- package/dist/helpers/one2manyHelper.d.ts.map +1 -1
- package/dist/helpers/searchHelper.d.ts +1 -1
- package/dist/helpers/searchHelper.d.ts.map +1 -1
- package/dist/helpers/treeHelper.d.ts +1 -1
- package/dist/helpers/treeHelper.d.ts.map +1 -1
- package/dist/hooks/useExport.d.ts +44 -0
- package/dist/hooks/useExport.d.ts.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/locales/ca_ES.d.ts +2 -0
- package/dist/locales/ca_ES.d.ts.map +1 -1
- package/dist/locales/en_US.d.ts +2 -0
- package/dist/locales/en_US.d.ts.map +1 -1
- package/dist/locales/es_ES.d.ts +2 -0
- package/dist/locales/es_ES.d.ts.map +1 -1
- package/dist/react-ooui.es.js +25403 -27411
- package/dist/react-ooui.es.js.map +1 -1
- package/dist/react-ooui.umd.js +46 -184
- package/dist/react-ooui.umd.js.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/views/RootView.d.ts.map +1 -1
- package/dist/views/actionViews/GraphActionView.d.ts.map +1 -1
- package/dist/views/actionViews/TreeActionView.d.ts.map +1 -1
- package/dist/widgets/WidgetFactory.d.ts.map +1 -1
- package/dist/widgets/base/Integer.d.ts.map +1 -1
- package/dist/widgets/base/Label.d.ts.map +1 -1
- package/dist/widgets/base/Reference.d.ts.map +1 -1
- package/dist/widgets/base/ReferenceTree.d.ts +8 -0
- package/dist/widgets/base/ReferenceTree.d.ts.map +1 -0
- package/dist/widgets/base/Separator.d.ts.map +1 -1
- package/dist/widgets/base/many2one/Many2one.d.ts.map +1 -1
- package/dist/widgets/base/many2one/Many2oneTree.d.ts +6 -0
- package/dist/widgets/base/many2one/Many2oneTree.d.ts.map +1 -0
- package/dist/widgets/base/one2many/One2manyInput.d.ts.map +1 -1
- package/dist/widgets/containers/Group.d.ts.map +1 -1
- package/dist/widgets/custom/MultiCheckbox.d.ts.map +1 -1
- package/dist/widgets/custom/Tag.d.ts +5 -0
- package/dist/widgets/custom/Tag.d.ts.map +1 -0
- package/dist/widgets/custom/Tags.d.ts.map +1 -1
- package/dist/widgets/custom/Timeline.d.ts.map +1 -1
- package/dist/widgets/modals/ExportModal.d.ts +2 -1
- package/dist/widgets/modals/ExportModal.d.ts.map +1 -1
- package/dist/widgets/views/Dashboard/Dashboard.d.ts.map +1 -1
- package/dist/widgets/views/Dashboard/DashboardTree.d.ts.map +1 -1
- package/dist/widgets/views/Form.d.ts.map +1 -1
- package/dist/widgets/views/Graph/GraphChart.d.ts.map +1 -1
- package/dist/widgets/views/Graph/GraphDefaults.d.ts +36 -0
- package/dist/widgets/views/Graph/GraphDefaults.d.ts.map +1 -1
- package/dist/widgets/views/SearchTree.d.ts.map +1 -1
- package/dist/widgets/views/Tree.d.ts +2 -0
- package/dist/widgets/views/Tree.d.ts.map +1 -1
- package/dist/widgets/views/searchFilter/SearchFilter.d.ts +1 -0
- package/dist/widgets/views/searchFilter/SearchFilter.d.ts.map +1 -1
- package/package.json +8 -7
- package/src/__tests__/iconMapper.test.ts +20 -5
- package/src/actionbar/ChangeViewButton.tsx +2 -2
- package/src/actionbar/FormActionBar.tsx +82 -11
- package/src/actionbar/TreeActionBar.tsx +23 -28
- package/src/common/DatePicker.tsx +4 -3
- package/src/context/ActionViewContext.tsx +7 -4
- package/src/context/ContentRootContext.tsx +15 -7
- package/src/context/FormContext.tsx +1 -4
- package/src/helpers/formHelper.ts +26 -5
- package/src/helpers/iconMapper.ts +134 -107
- package/src/helpers/one2manyHelper.ts +94 -39
- package/src/helpers/searchHelper.ts +8 -7
- package/src/helpers/treeHelper.ts +17 -5
- package/src/hooks/useExport.ts +439 -0
- package/src/index.ts +2 -0
- package/src/locales/ca_ES.tsx +2 -0
- package/src/locales/en_US.tsx +2 -0
- package/src/locales/es_ES.tsx +2 -0
- package/src/stories/Label.stories.tsx +7 -8
- package/src/stories/Separator.stories.tsx +33 -0
- package/src/stories/containers/Group.stories.tsx +24 -0
- package/src/stories/containers/Notebook.stories.tsx +27 -0
- package/src/stories/custom/Tag.stories.tsx +57 -0
- package/src/stories/mocks/models/crm_case.ts +7 -10
- package/src/stories/views/Tree.stories.jsx +5 -5
- package/src/types/index.ts +1 -0
- package/src/ui/FavouriteButton.tsx +4 -4
- package/src/views/RootView.tsx +7 -1
- package/src/views/actionViews/GraphActionView.tsx +1 -0
- package/src/views/actionViews/TreeActionView.tsx +10 -1
- package/src/widgets/WidgetFactory.tsx +3 -0
- package/src/widgets/base/Integer.tsx +1 -0
- package/src/widgets/base/Label.tsx +5 -9
- package/src/widgets/base/Reference.tsx +13 -3
- package/src/widgets/base/ReferenceTree.tsx +62 -0
- package/src/widgets/base/Separator.tsx +11 -3
- package/src/widgets/base/many2one/Many2one.tsx +10 -19
- package/src/widgets/base/many2one/Many2oneTree.tsx +18 -0
- package/src/widgets/base/one2many/One2manyInput.tsx +79 -23
- package/src/widgets/containers/Group.tsx +7 -4
- package/src/widgets/custom/ButtonGroup.tsx +1 -1
- package/src/widgets/custom/MultiCheckbox.tsx +1 -0
- package/src/widgets/custom/Tag.tsx +24 -0
- package/src/widgets/custom/Tags.tsx +27 -28
- package/src/widgets/custom/Timeline.tsx +9 -3
- package/src/widgets/modals/ExportModal.tsx +33 -134
- package/src/widgets/views/Dashboard/Dashboard.tsx +15 -4
- package/src/widgets/views/Dashboard/DashboardTree.tsx +1 -0
- package/src/widgets/views/Form.tsx +38 -31
- package/src/widgets/views/Graph/GraphChart.tsx +6 -1
- package/src/widgets/views/Graph/GraphDefaults.ts +113 -0
- package/src/widgets/views/Graph/GraphIndicator.tsx +17 -3
- package/src/widgets/views/SearchTree.tsx +3 -0
- package/src/widgets/views/Tree.tsx +111 -25
- package/src/widgets/views/searchFilter/SearchFilter.tsx +12 -6
- package/dist/helpers/icons/antd_icons.d.ts +0 -4
- package/dist/helpers/icons/antd_icons.d.ts.map +0 -1
- package/dist/helpers/icons/tabler_icons.d.ts +0 -4
- package/dist/helpers/icons/tabler_icons.d.ts.map +0 -1
- package/dist/ui/Fieldset.d.ts +0 -8
- package/dist/ui/Fieldset.d.ts.map +0 -1
- package/src/helpers/icons/antd_icons.ts +0 -1583
- package/src/helpers/icons/tabler_icons.ts +0 -5367
- package/src/ui/Fieldset.tsx +0 -31
|
@@ -61,6 +61,7 @@ function TreeActionBar(props: Props) {
|
|
|
61
61
|
previousView,
|
|
62
62
|
results,
|
|
63
63
|
limit,
|
|
64
|
+
totalItems,
|
|
64
65
|
} = useContext(ActionViewContext) as ActionViewContextType;
|
|
65
66
|
|
|
66
67
|
const { parentContext = {}, treeExpandable, toolbar } = props;
|
|
@@ -162,9 +163,24 @@ function TreeActionBar(props: Props) {
|
|
|
162
163
|
}
|
|
163
164
|
}}
|
|
164
165
|
/>
|
|
166
|
+
{!treeExpandable && (
|
|
167
|
+
<ButtonWithBadge
|
|
168
|
+
icon={
|
|
169
|
+
<FilterOutlined
|
|
170
|
+
style={{ color: searchVisible ? "white" : undefined }}
|
|
171
|
+
/>
|
|
172
|
+
}
|
|
173
|
+
tooltip={t("advanced_search")}
|
|
174
|
+
type={searchVisible ? "primary" : "default"}
|
|
175
|
+
onClick={() => {
|
|
176
|
+
setSearchVisible?.(!searchVisible);
|
|
177
|
+
}}
|
|
178
|
+
disabled={duplicatingItem || removingItem || treeIsLoading}
|
|
179
|
+
badgeNumber={searchParams?.length}
|
|
180
|
+
/>
|
|
181
|
+
)}
|
|
165
182
|
{separator()}
|
|
166
183
|
<NewButton disabled={treeIsLoading} />
|
|
167
|
-
{separator()}
|
|
168
184
|
<ActionButton
|
|
169
185
|
icon={<CopyOutlined />}
|
|
170
186
|
tooltip={t("duplicate")}
|
|
@@ -190,22 +206,6 @@ function TreeActionBar(props: Props) {
|
|
|
190
206
|
{separator()}
|
|
191
207
|
</>
|
|
192
208
|
)}
|
|
193
|
-
{!treeExpandable && (
|
|
194
|
-
<ButtonWithBadge
|
|
195
|
-
icon={
|
|
196
|
-
<FilterOutlined
|
|
197
|
-
style={{ color: searchVisible ? "white" : undefined }}
|
|
198
|
-
/>
|
|
199
|
-
}
|
|
200
|
-
tooltip={t("advanced_search")}
|
|
201
|
-
type={searchVisible ? "primary" : "default"}
|
|
202
|
-
onClick={() => {
|
|
203
|
-
setSearchVisible?.(!searchVisible);
|
|
204
|
-
}}
|
|
205
|
-
disabled={duplicatingItem || removingItem || treeIsLoading}
|
|
206
|
-
badgeNumber={searchParams?.length}
|
|
207
|
-
/>
|
|
208
|
-
)}
|
|
209
209
|
<ActionButton
|
|
210
210
|
icon={<InfoCircleOutlined />}
|
|
211
211
|
tooltip={t("showLogs")}
|
|
@@ -289,11 +289,11 @@ function TreeActionBar(props: Props) {
|
|
|
289
289
|
width="1em"
|
|
290
290
|
height="1em"
|
|
291
291
|
viewBox="0 0 24 24"
|
|
292
|
-
|
|
292
|
+
strokeWidth="1.5"
|
|
293
293
|
fill="none"
|
|
294
294
|
stroke="currentColor"
|
|
295
|
-
|
|
296
|
-
|
|
295
|
+
strokeLinecap="round"
|
|
296
|
+
strokeLinejoin="round"
|
|
297
297
|
>
|
|
298
298
|
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
|
299
299
|
<ellipse cx="12" cy="6" rx="8" ry="3" />
|
|
@@ -351,14 +351,9 @@ function TreeActionBar(props: Props) {
|
|
|
351
351
|
searchParams || []
|
|
352
352
|
)}
|
|
353
353
|
limit={limit}
|
|
354
|
-
totalRegisters={
|
|
355
|
-
selectedRegistersToExport={
|
|
356
|
-
|
|
357
|
-
selectedRowItems.length &&
|
|
358
|
-
selectedRowItems.length > 0
|
|
359
|
-
? selectedRowItems.length
|
|
360
|
-
: undefined
|
|
361
|
-
}
|
|
354
|
+
totalRegisters={totalItems || 0}
|
|
355
|
+
selectedRegistersToExport={selectedRowItems}
|
|
356
|
+
visibleRegisters={results?.length || 0}
|
|
362
357
|
context={parentContext}
|
|
363
358
|
/>
|
|
364
359
|
</Space>
|
|
@@ -11,18 +11,19 @@ type DatePickerProps = WidgetProps & {
|
|
|
11
11
|
showTime?: boolean;
|
|
12
12
|
};
|
|
13
13
|
|
|
14
|
-
const DatePickerConfig = {
|
|
14
|
+
export const DatePickerConfig = {
|
|
15
15
|
date: {
|
|
16
16
|
placeholder: "__/__/____",
|
|
17
|
-
dateDisplayFormat: "YYYY
|
|
17
|
+
dateDisplayFormat: "DD/MM/YYYY",
|
|
18
18
|
dateInternalFormat: "YYYY-MM-DD",
|
|
19
19
|
},
|
|
20
20
|
time: {
|
|
21
21
|
placeholder: "__/__/____ __:__:__",
|
|
22
|
-
dateDisplayFormat: "YYYY
|
|
22
|
+
dateDisplayFormat: "DD/MM/YYYY HH:mm:ss",
|
|
23
23
|
dateInternalFormat: "YYYY-MM-DD HH:mm:ss",
|
|
24
24
|
},
|
|
25
25
|
};
|
|
26
|
+
|
|
26
27
|
const DatePicker = (props: DatePickerProps) => {
|
|
27
28
|
const { ooui, showTime = false } = props;
|
|
28
29
|
const { required } = ooui;
|
|
@@ -11,7 +11,7 @@ export type ActionViewContextType = {
|
|
|
11
11
|
setFormIsSaving?: (value: boolean) => void;
|
|
12
12
|
formHasChanges?: boolean;
|
|
13
13
|
setFormHasChanges?: (value: boolean) => void;
|
|
14
|
-
onFormSave?: () =>
|
|
14
|
+
onFormSave?: () => Promise<{ succeed: boolean; id: number }>;
|
|
15
15
|
formRef?: any;
|
|
16
16
|
searchTreeRef?: any;
|
|
17
17
|
onNewClicked: () => void;
|
|
@@ -53,6 +53,7 @@ export type ActionViewContextType = {
|
|
|
53
53
|
setSearchValues?: (value: any) => void;
|
|
54
54
|
limit?: number;
|
|
55
55
|
setLimit?: (value: number) => void;
|
|
56
|
+
setTitle?: (value: string) => void;
|
|
56
57
|
};
|
|
57
58
|
|
|
58
59
|
export const ActionViewContext =
|
|
@@ -66,7 +67,7 @@ const ActionViewProvider = (props: ActionViewProviderProps): any => {
|
|
|
66
67
|
const {
|
|
67
68
|
children,
|
|
68
69
|
currentView,
|
|
69
|
-
title,
|
|
70
|
+
title: titleProps,
|
|
70
71
|
setCurrentView,
|
|
71
72
|
availableViews,
|
|
72
73
|
formRef,
|
|
@@ -106,6 +107,7 @@ const ActionViewProvider = (props: ActionViewProviderProps): any => {
|
|
|
106
107
|
const [limit, setLimit] = useState<number>(
|
|
107
108
|
limitProps !== undefined ? limitProps : DEFAULT_SEARCH_LIMIT
|
|
108
109
|
);
|
|
110
|
+
const [title, setTitle] = useState<string>(titleProps);
|
|
109
111
|
|
|
110
112
|
useEffect(() => {
|
|
111
113
|
if (results && results.length > 0 && !currentItemIndex) {
|
|
@@ -139,8 +141,8 @@ const ActionViewProvider = (props: ActionViewProviderProps): any => {
|
|
|
139
141
|
}
|
|
140
142
|
}, [currentView]);
|
|
141
143
|
|
|
142
|
-
const callOnFormSave = () => {
|
|
143
|
-
(formRef.current as any)?.submitForm();
|
|
144
|
+
const callOnFormSave = async () => {
|
|
145
|
+
return await (formRef.current as any)?.submitForm();
|
|
144
146
|
};
|
|
145
147
|
|
|
146
148
|
return (
|
|
@@ -196,6 +198,7 @@ const ActionViewProvider = (props: ActionViewProviderProps): any => {
|
|
|
196
198
|
setSearchValues,
|
|
197
199
|
limit,
|
|
198
200
|
setLimit,
|
|
201
|
+
setTitle,
|
|
199
202
|
}}
|
|
200
203
|
>
|
|
201
204
|
{children}
|
|
@@ -43,15 +43,20 @@ type ActionModalOpts = {
|
|
|
43
43
|
actionData?: any;
|
|
44
44
|
};
|
|
45
45
|
|
|
46
|
-
export const ContentRootContext =
|
|
47
|
-
null
|
|
48
|
-
);
|
|
46
|
+
export const ContentRootContext =
|
|
47
|
+
React.createContext<ContentRootContextType | null>(null);
|
|
49
48
|
|
|
50
49
|
type ContentRootProviderProps = {
|
|
51
50
|
children: React.ReactNode;
|
|
52
51
|
globalValues?: any;
|
|
53
52
|
};
|
|
54
53
|
|
|
54
|
+
const callRefreshValues = async (fns: any[]) => {
|
|
55
|
+
for (let i = 0; i < fns.length; i++) {
|
|
56
|
+
await fns?.[i]?.();
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
|
|
55
60
|
const ContentRootProvider = (
|
|
56
61
|
props: ContentRootProviderProps,
|
|
57
62
|
ref: any
|
|
@@ -64,7 +69,7 @@ const ContentRootProvider = (
|
|
|
64
69
|
TabManagerContext
|
|
65
70
|
) as TabManagerContextType;
|
|
66
71
|
const { openAction } = tabManagerContext || {};
|
|
67
|
-
const onRefreshParentValues = useRef<any>();
|
|
72
|
+
const onRefreshParentValues = useRef<any>([]);
|
|
68
73
|
const { t } = useContext(LocaleContext) as LocaleContextType;
|
|
69
74
|
|
|
70
75
|
useImperativeHandle(ref, () => ({
|
|
@@ -167,7 +172,7 @@ const ContentRootProvider = (
|
|
|
167
172
|
onRefreshParentValues?: any;
|
|
168
173
|
}) {
|
|
169
174
|
const { type } = actionData;
|
|
170
|
-
onRefreshParentValues.current
|
|
175
|
+
onRefreshParentValues.current.push(onRefreshParentValuesFn);
|
|
171
176
|
|
|
172
177
|
if (type === "ir.actions.report.xml") {
|
|
173
178
|
return await generateReport({
|
|
@@ -230,6 +235,7 @@ const ContentRootProvider = (
|
|
|
230
235
|
fields,
|
|
231
236
|
values: { ...values, ...globalValues },
|
|
232
237
|
}),
|
|
238
|
+
fields,
|
|
233
239
|
context: mergedContext,
|
|
234
240
|
});
|
|
235
241
|
}
|
|
@@ -347,7 +353,8 @@ const ContentRootProvider = (
|
|
|
347
353
|
}
|
|
348
354
|
|
|
349
355
|
async function onFormModalSucceed() {
|
|
350
|
-
onRefreshParentValues.current
|
|
356
|
+
callRefreshValues(onRefreshParentValues.current);
|
|
357
|
+
onRefreshParentValues.current = [];
|
|
351
358
|
setActionModalVisible(false);
|
|
352
359
|
setActionModalOptions({
|
|
353
360
|
domain: undefined,
|
|
@@ -386,7 +393,8 @@ const ContentRootProvider = (
|
|
|
386
393
|
visible={actionModalVisible}
|
|
387
394
|
onSubmitSucceed={onFormModalSucceed}
|
|
388
395
|
onCancel={() => {
|
|
389
|
-
onRefreshParentValues.current
|
|
396
|
+
callRefreshValues(onRefreshParentValues.current);
|
|
397
|
+
onRefreshParentValues.current = [];
|
|
390
398
|
setActionModalVisible(false);
|
|
391
399
|
setActionModalOptions({
|
|
392
400
|
domain: undefined,
|
|
@@ -18,11 +18,10 @@ export type FormContextType = {
|
|
|
18
18
|
getValues: () => Promise<any>;
|
|
19
19
|
getPlainValues: () => { [key: string]: any };
|
|
20
20
|
getFields: () => Promise<any>;
|
|
21
|
-
setOriginalValue: (field: string, value: any) => void;
|
|
22
21
|
domain: any[];
|
|
23
22
|
submitForm?: (options?: {
|
|
24
23
|
callOnSubmitSucceed?: boolean;
|
|
25
|
-
}) => Promise<boolean>;
|
|
24
|
+
}) => Promise<{ succeed: boolean; id: number }>;
|
|
26
25
|
fetchValues?: () => void;
|
|
27
26
|
formHasChanges?: () => boolean;
|
|
28
27
|
elementHasLostFocus?: () => void;
|
|
@@ -45,7 +44,6 @@ const FormProvider = (props: FormProviderProps): any => {
|
|
|
45
44
|
getContext,
|
|
46
45
|
getValues,
|
|
47
46
|
getPlainValues,
|
|
48
|
-
setOriginalValue,
|
|
49
47
|
domain,
|
|
50
48
|
submitForm,
|
|
51
49
|
fetchValues,
|
|
@@ -67,7 +65,6 @@ const FormProvider = (props: FormProviderProps): any => {
|
|
|
67
65
|
getFieldValue,
|
|
68
66
|
executeButtonAction,
|
|
69
67
|
getContext,
|
|
70
|
-
setOriginalValue,
|
|
71
68
|
submitForm,
|
|
72
69
|
fetchValues,
|
|
73
70
|
formHasChanges,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { One2manyItem } from "@/widgets/base/one2many/One2manyInput";
|
|
2
|
+
import { Form as FormOoui } from "@gisce/ooui";
|
|
2
3
|
|
|
3
4
|
const filteredValues = (values: any, fields: any) => {
|
|
4
5
|
if (!fields) {
|
|
@@ -100,15 +101,16 @@ export const getTouchedValues = ({
|
|
|
100
101
|
|
|
101
102
|
export const checkFieldsType = ({
|
|
102
103
|
changedFields,
|
|
103
|
-
|
|
104
|
+
formOoui,
|
|
104
105
|
types,
|
|
105
106
|
}: {
|
|
106
107
|
changedFields: string[];
|
|
107
|
-
|
|
108
|
+
formOoui: FormOoui;
|
|
108
109
|
types: string[];
|
|
109
110
|
}) => {
|
|
110
111
|
const valuesChecked = changedFields.map((key) => {
|
|
111
|
-
|
|
112
|
+
const fieldType = formOoui?.findById(key)?.type!;
|
|
113
|
+
return types.includes(fieldType);
|
|
112
114
|
});
|
|
113
115
|
return valuesChecked.some((i) => i === true);
|
|
114
116
|
};
|
|
@@ -152,16 +154,35 @@ export const getValuesForDomain = (domain: any[]) => {
|
|
|
152
154
|
export const getOnChangePayload = ({
|
|
153
155
|
onChangeFieldActionArgs,
|
|
154
156
|
values,
|
|
157
|
+
parentValues = {},
|
|
155
158
|
}: {
|
|
156
159
|
onChangeFieldActionArgs: any[];
|
|
157
160
|
values: any;
|
|
161
|
+
parentValues?: any;
|
|
158
162
|
}) => {
|
|
159
163
|
const payload: any = {};
|
|
160
164
|
onChangeFieldActionArgs.forEach((arg: string) => {
|
|
161
|
-
|
|
165
|
+
const splittedArg = arg.split("");
|
|
166
|
+
|
|
167
|
+
if (arg === "True") {
|
|
168
|
+
payload[arg] = true;
|
|
169
|
+
} else if (arg === "False") {
|
|
170
|
+
payload[arg] = false;
|
|
171
|
+
} else if (values[arg]) {
|
|
162
172
|
payload[arg] = values[arg];
|
|
163
|
-
} else if (
|
|
173
|
+
} else if (
|
|
174
|
+
splittedArg[0] === "'" &&
|
|
175
|
+
splittedArg[splittedArg.length - 1] === "'" &&
|
|
176
|
+
splittedArg.filter((i: string) => i === "'").length === 2
|
|
177
|
+
) {
|
|
164
178
|
payload[arg] = arg.replace(/'/g, "");
|
|
179
|
+
} else if (splittedArg.includes("'")) {
|
|
180
|
+
// This is a string with a variable in it.
|
|
181
|
+
// TODO: pending implement.
|
|
182
|
+
payload[arg] = arg;
|
|
183
|
+
} else if (arg.indexOf("parent.") !== -1) {
|
|
184
|
+
const parentKey = arg.replace("parent.", "");
|
|
185
|
+
payload[arg] = parentValues[parentKey] || false;
|
|
165
186
|
} else {
|
|
166
187
|
payload[arg] = false;
|
|
167
188
|
}
|
|
@@ -1,112 +1,120 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
import * as AntIcons from "@ant-design/icons";
|
|
3
|
+
import * as TablerIcons from "@tabler/icons-react";
|
|
2
4
|
import Icon from "@ant-design/icons";
|
|
3
|
-
import { AntIcons as Icons } from "./icons/antd_icons";
|
|
4
|
-
import { TablerIcons } from "./icons/tabler_icons";
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
"terp-
|
|
11
|
-
"terp-
|
|
12
|
-
"terp-
|
|
13
|
-
"terp-
|
|
14
|
-
"terp-
|
|
15
|
-
"terp-
|
|
16
|
-
"terp-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
6
|
+
type TablerKey = keyof typeof TablerIcons;
|
|
7
|
+
type AntKey = keyof typeof AntIcons;
|
|
8
|
+
|
|
9
|
+
const iconMapping: { [key: string]: string } = {
|
|
10
|
+
"terp-purchase": "ShoppingCart",
|
|
11
|
+
"terp-graph": "PieChart",
|
|
12
|
+
"terp-crm": "Contacts",
|
|
13
|
+
"terp-hr": "Friends",
|
|
14
|
+
"terp-account": "BuildingBank",
|
|
15
|
+
"terp-project": "Checklist",
|
|
16
|
+
"terp-administration": "Adjustments",
|
|
17
|
+
"terp-partner": "Team",
|
|
18
|
+
"terp-mrp": "Build",
|
|
19
|
+
"terp-product": "Shopping",
|
|
20
|
+
STOCK_JUSTIFY_FILL: "UnorderedList",
|
|
21
|
+
STOCK_INDENT: "IndentIncrease",
|
|
22
|
+
STOCK_HELP: "Question",
|
|
23
|
+
STOCK_GO_UP: "ArrowUp",
|
|
24
|
+
STOCK_SORT_DESCENDING: "SortDescending",
|
|
25
|
+
STOCK_ADD: "Plus",
|
|
26
|
+
STOCK_GOTO_LAST: "FastForward",
|
|
27
|
+
STOCK_FIND: "Search",
|
|
28
|
+
STOCK_PROPERTIES: "Control",
|
|
29
|
+
STOCK_DIALOG_INFO: "Info",
|
|
30
|
+
STOCK_FLOPPY: "Usb",
|
|
31
|
+
STOCK_JUSTIFY_CENTER: "AlignCenter",
|
|
32
|
+
STOCK_GO_BACK: "ArrowLeft",
|
|
33
|
+
STOCK_UNDERLINE: "Underline",
|
|
34
|
+
STOCK_BOLD: "Bold",
|
|
35
|
+
STOCK_APPLY: "Check",
|
|
36
|
+
STOCK_ZOOM_OUT: "ZoomOut",
|
|
37
|
+
STOCK_STRIKETHROUGH: "Strikethrough",
|
|
38
|
+
STOCK_MEDIA_REWIND: "Backward",
|
|
39
|
+
STOCK_PRINT: "Printer",
|
|
40
|
+
STOCK_NO: "Close",
|
|
41
|
+
STOCK_GOTO_FIRST: "FastBackward",
|
|
42
|
+
STOCK_CLOSE: "Close",
|
|
43
|
+
STOCK_REMOVE: "Minus",
|
|
44
|
+
STOCK_CUT: "Scissor",
|
|
45
|
+
STOCK_DIALOG_AUTHENTICATION: "Safety",
|
|
46
|
+
STOCK_ZOOM_FIT: "Expand",
|
|
47
|
+
STOCK_JUMP_TO: "Select",
|
|
48
|
+
STOCK_HARDDISK: "Hdd",
|
|
49
|
+
STOCK_SAVE_AS: "Save",
|
|
50
|
+
STOCK_UNDO: "Undo",
|
|
51
|
+
STOCK_JUSTIFY_RIGHT: "AlignRight",
|
|
52
|
+
STOCK_DIALOG_ERROR: "CloseCircle",
|
|
53
|
+
STOCK_INDEX: "Profile",
|
|
54
|
+
STOCK_GOTO_BOTTOM: "VerticalAlignBottom",
|
|
55
|
+
STOCK_MEDIA_NEXT: "StepForward",
|
|
56
|
+
STOCK_REDO: "Redo",
|
|
57
|
+
STOCK_COPY: "Copy",
|
|
58
|
+
STOCK_MEDIA_PAUSE: "Pause",
|
|
59
|
+
STOCK_GO_FORWARD: "ArrowRight",
|
|
60
|
+
STOCK_UNDELETE: "Undo",
|
|
61
|
+
STOCK_EXECUTE: "Setting",
|
|
62
|
+
STOCK_SAVE: "Save",
|
|
63
|
+
STOCK_DIALOG_QUESTION: "QuestionCircle",
|
|
64
|
+
STOCK_SORT_ASCENDING: "SortAscending",
|
|
65
|
+
STOCK_REFRESH: "Reload",
|
|
66
|
+
STOCK_MEDIA_FORWARD: "Forward",
|
|
67
|
+
STOCK_STOP: "Border",
|
|
68
|
+
STOCK_PRINT_PREVIEW: "Printer",
|
|
69
|
+
STOCK_HOME: "Home",
|
|
70
|
+
STOCK_PASTE: "CarryOut",
|
|
71
|
+
STOCK_ZOOM_100: "ZoomIn",
|
|
72
|
+
STOCK_FIND_AND_REPLACE: "FileSearch",
|
|
73
|
+
STOCK_DIALOG_WARNING: "Warning",
|
|
74
|
+
STOCK_ZOOM_IN: "ZoomIn",
|
|
75
|
+
STOCK_CONVERT: "Export",
|
|
76
|
+
STOCK_ITALIC: "Italic",
|
|
77
|
+
STOCK_YES: "Check",
|
|
78
|
+
STOCK_MEDIA_PLAY: "PlayCircle",
|
|
79
|
+
STOCK_MEDIA_RECORD: "VideoCamera",
|
|
80
|
+
STOCK_MEDIA_PREVIOUS: "StepBackward",
|
|
81
|
+
STOCK_NEW: "FileAdd",
|
|
82
|
+
STOCK_CANCEL: "Close",
|
|
83
|
+
STOCK_DISCONNECT: "Api",
|
|
84
|
+
STOCK_JUSTIFY_LEFT: "AlignLeft",
|
|
85
|
+
STOCK_FILE: "File",
|
|
86
|
+
STOCK_QUIT: "Logout",
|
|
87
|
+
STOCK_EDIT: "Edit",
|
|
88
|
+
STOCK_CONNECT: "Api",
|
|
89
|
+
STOCK_GO_DOWN: "CaretDown",
|
|
90
|
+
STOCK_NETWORK: "Apartment",
|
|
91
|
+
STOCK_OK: "Check",
|
|
92
|
+
STOCK_GOTO_TOP: "VerticalAlignTop",
|
|
93
|
+
STOCK_ABOUT: "Star",
|
|
94
|
+
STOCK_COLOR_PICKER: "Aim",
|
|
95
|
+
STOCK_SELECT_FONT: "FontSize",
|
|
96
|
+
STOCK_DELETE: "Delete",
|
|
97
|
+
STOCK_DND: "FileText",
|
|
98
|
+
STOCK_CLEAR: "CloseSquare",
|
|
99
|
+
STOCK_UNINDENT: "AlignLeft",
|
|
100
|
+
STOCK_PREFERENCES: "Setting",
|
|
98
101
|
};
|
|
99
102
|
|
|
100
|
-
export default (key: string
|
|
103
|
+
export default (key: string, className?: any) => {
|
|
101
104
|
if (key.indexOf("gtk-") !== -1) {
|
|
102
|
-
const rootIcon = key.replace("gtk-", "").replace(
|
|
103
|
-
|
|
104
|
-
return iconMapping[newKey];
|
|
105
|
+
const rootIcon = key.replace("gtk-", "").replace(/\-/g, "_");
|
|
106
|
+
key = `STOCK_${rootIcon.toUpperCase()}`;
|
|
105
107
|
}
|
|
108
|
+
|
|
106
109
|
if (iconMapping.hasOwnProperty(key)) {
|
|
107
|
-
return iconMapping[key];
|
|
110
|
+
return getIconForKey(iconMapping[key], className);
|
|
108
111
|
}
|
|
109
|
-
|
|
112
|
+
|
|
113
|
+
return getIconForKey(key, className);
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
function toCamelCase(key: string): string {
|
|
117
|
+
return `${key
|
|
110
118
|
.split("-")
|
|
111
119
|
.map((word) =>
|
|
112
120
|
word.replace(
|
|
@@ -115,18 +123,37 @@ export default (key: string): React.ElementType | undefined => {
|
|
|
115
123
|
)
|
|
116
124
|
)
|
|
117
125
|
.join("")}`;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
function getIconForKey(key: string, className?: any) {
|
|
129
|
+
let IconCamelCase = key.charAt(0).toUpperCase() + key.slice(1); // Capitalize first letter
|
|
130
|
+
if (IconCamelCase.indexOf("-") !== -1) {
|
|
131
|
+
IconCamelCase = toCamelCase(IconCamelCase);
|
|
132
|
+
}
|
|
118
133
|
|
|
119
|
-
const antKey = `${IconCamelCase}Outlined
|
|
120
|
-
if (
|
|
121
|
-
return
|
|
134
|
+
const antKey: AntKey = `${IconCamelCase}Outlined` as any;
|
|
135
|
+
if (AntIcons[antKey]) {
|
|
136
|
+
return () =>
|
|
137
|
+
React.createElement(AntIcons[antKey] as any, {
|
|
138
|
+
className,
|
|
139
|
+
});
|
|
122
140
|
}
|
|
123
141
|
|
|
124
|
-
const tablerKey = `Icon${IconCamelCase}
|
|
125
|
-
if (TablerIcons
|
|
142
|
+
const tablerKey: TablerKey = `Icon${IconCamelCase}` as any;
|
|
143
|
+
if (TablerIcons[tablerKey]) {
|
|
144
|
+
const TablerIcon = () =>
|
|
145
|
+
React.createElement(TablerIcons[tablerKey] as any, {
|
|
146
|
+
fill: "transparent",
|
|
147
|
+
height: 17,
|
|
148
|
+
width: 17,
|
|
149
|
+
});
|
|
126
150
|
const CustomIcon = () =>
|
|
127
|
-
React.createElement(Icon, {
|
|
151
|
+
React.createElement(Icon, {
|
|
152
|
+
component: TablerIcon,
|
|
153
|
+
className,
|
|
154
|
+
});
|
|
128
155
|
return CustomIcon;
|
|
129
156
|
}
|
|
130
157
|
|
|
131
158
|
return undefined;
|
|
132
|
-
}
|
|
159
|
+
}
|