@antscorp/antsomi-ui 2.0.62 → 2.0.64
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/es/components/atoms/Switch/Switch.js +2 -1
- package/es/components/molecules/Dropdown/style.scss +6 -4
- package/es/components/molecules/EditingList/EditingList.js +3 -3
- package/es/components/molecules/EditingList/components/Loadable.d.ts +1 -1
- package/es/components/molecules/EditingList/components/Popover/Popover.d.ts +2 -2
- package/es/components/molecules/EditingList/components/Popover/Popover.js +2 -2
- package/es/components/molecules/EditingList/types.d.ts +2 -0
- package/es/components/molecules/SearchPopover/components/PopoverSelect/PopoverSelect.js +4 -4
- package/es/components/molecules/SearchPopover/types.d.ts +6 -1
- package/es/components/molecules/SearchPopover/utils.d.ts +2 -2
- package/es/components/molecules/SearchPopover/utils.js +3 -2
- package/es/components/organism/TicketEditor/Content.d.ts +2 -1
- package/es/components/organism/TicketEditor/Content.js +10 -38
- package/es/components/organism/TicketEditor/Service.d.ts +5 -0
- package/es/components/organism/TicketEditor/Service.js +11 -0
- package/es/components/organism/TicketEditor/components/Editor/EditorToolbar.d.ts +22 -0
- package/es/components/organism/TicketEditor/components/Editor/EditorToolbar.js +73 -0
- package/es/components/organism/TicketEditor/components/Editor/index.d.ts +10 -0
- package/es/components/organism/TicketEditor/components/Editor/index.js +84 -0
- package/es/components/organism/TicketEditor/index.js +2 -2
- package/es/components/organism/TicketEditor/util.d.ts +1 -1
- package/es/components/organism/TicketEditor/util.js +3 -3
- package/es/components/template/Layout/Layout.js +6 -6
- package/es/locales/ja/google-sheet.json +9 -9
- package/package.json +18 -15
|
@@ -3,6 +3,7 @@ import { THEME } from '@antscorp/antsomi-ui/es/constants';
|
|
|
3
3
|
import { StyledSwitch } from './styled';
|
|
4
4
|
const Switch = props => {
|
|
5
5
|
const { color = THEME.token?.colorPrimary || '#005eb8', style, ...rest } = props;
|
|
6
|
-
|
|
6
|
+
const validatedColor = CSS.supports('color', color) ? color : THEME.token?.colorPrimary;
|
|
7
|
+
return _jsx(StyledSwitch, { style: { ...style, '--switch-color': validatedColor }, ...rest });
|
|
7
8
|
};
|
|
8
9
|
export { Switch };
|
|
@@ -9,15 +9,15 @@ import { Action, List, Search, LazyComponent } from './components';
|
|
|
9
9
|
import { CLS } from './utils';
|
|
10
10
|
const { Popover, Title } = LazyComponent;
|
|
11
11
|
export const EditingList = (props) => {
|
|
12
|
-
const { isLoading = false, addBtnLabel = 'Add', showNum = true, options = [], selected = [], title, removable = true, className, emptyDescription, onChange, } = props;
|
|
12
|
+
const { isLoading = false, addBtnLabel = 'Add', showNum = true, options = [], selected = [], title, removable = true, className, emptyDescription, popoverProps, onChange, } = props;
|
|
13
13
|
const [search, setSearch] = useState('');
|
|
14
14
|
const debounceSearch = useDebounce(search);
|
|
15
15
|
const selectedOptions = useMemo(() => options.filter(opt => selected.includes(opt.key)), [selected, options]);
|
|
16
|
-
const filterdOptions = useMemo(() => selectedOptions.filter(opt => defaultPopoverSelectSearch(opt, debounceSearch)), [selectedOptions, debounceSearch]);
|
|
16
|
+
const filterdOptions = useMemo(() => selectedOptions.filter(opt => defaultPopoverSelectSearch(opt, debounceSearch, popoverProps?.inputSearchProps?.searchConfig)), [selectedOptions, debounceSearch, popoverProps?.inputSearchProps?.searchConfig]);
|
|
17
17
|
const isSelectAll = selectedOptions.length === options.length;
|
|
18
18
|
const handleRemove = (removedKey) => {
|
|
19
19
|
const selectedKeys = selectedOptions.filter(opt => opt.key !== removedKey).map(opt => opt.key);
|
|
20
20
|
onChange?.(selectedKeys);
|
|
21
21
|
};
|
|
22
|
-
return (_jsxs(EditingListRoot, { className: clsx(CLS.Root.default, className), vertical: true, gap: 8, children: [title && (_jsx(Suspense, { children: _jsx(Title, { showNum: showNum, title: title, selectedAmount: selected.length, optionAmount: options.length }) })), _jsx(Search, { onChange: e => setSearch(e.target.value) }), _jsx(List, { isLoading: isLoading, filterdOptions: filterdOptions, emptyDescription: emptyDescription, renderAction: key => (_jsx(Action, { removable: removable, onClickRemove: () => handleRemove(key) })) }), !isSelectAll && !isLoading && (_jsx(Suspense, { children: _jsx(Popover, { options: options, selected: selected, addBtnLabel: addBtnLabel, onChange: onChange }) }))] }));
|
|
22
|
+
return (_jsxs(EditingListRoot, { className: clsx(CLS.Root.default, className), vertical: true, gap: 8, children: [title && (_jsx(Suspense, { children: _jsx(Title, { showNum: showNum, title: title, selectedAmount: selected.length, optionAmount: options.length }) })), _jsx(Search, { onChange: e => setSearch(e.target.value) }), _jsx(List, { isLoading: isLoading, filterdOptions: filterdOptions, emptyDescription: emptyDescription, renderAction: key => (_jsx(Action, { removable: removable, onClickRemove: () => handleRemove(key) })) }), !isSelectAll && !isLoading && (_jsx(Suspense, { children: _jsx(Popover, { options: options, selected: selected, addBtnLabel: addBtnLabel, onChange: onChange, ...popoverProps }) }))] }));
|
|
23
23
|
};
|
|
@@ -10,4 +10,4 @@ export declare const Popover: import("react").LazyExoticComponent<(props: {
|
|
|
10
10
|
selected: string[];
|
|
11
11
|
addBtnLabel: import("react").ReactNode;
|
|
12
12
|
onChange?: ((selected: string[]) => void) | undefined;
|
|
13
|
-
}) => import("react/jsx-runtime").JSX.Element>;
|
|
13
|
+
} & Pick<import("../../SearchPopover/types").PopoverSelectProps, "inputSearchProps">) => import("react/jsx-runtime").JSX.Element>;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import { Option } from '../../types';
|
|
2
|
+
import { EditingListProps, Option } from '../../types';
|
|
3
3
|
type PopoverProps = {
|
|
4
4
|
options: Option[];
|
|
5
5
|
selected: string[];
|
|
6
6
|
addBtnLabel: React.ReactNode;
|
|
7
7
|
onChange?: (selected: string[]) => void;
|
|
8
|
-
};
|
|
8
|
+
} & EditingListProps['popoverProps'];
|
|
9
9
|
export declare const Popover: (props: PopoverProps) => import("react/jsx-runtime").JSX.Element;
|
|
10
10
|
export {};
|
|
@@ -4,6 +4,6 @@ import { PopoverSelect } from '../../../SearchPopover';
|
|
|
4
4
|
import { StyledAddBtn } from '../../styled';
|
|
5
5
|
import { CLS } from '../../utils';
|
|
6
6
|
export const Popover = (props) => {
|
|
7
|
-
const { options, selected, addBtnLabel, onChange } = props;
|
|
8
|
-
return (_jsx(PopoverSelect, { options: options, selected: selected, onApply: onChange, children: _jsxs(StyledAddBtn, { className: CLS.AddButton.default, role: "button", children: [_jsx(AddIcon, {}), addBtnLabel] }) }));
|
|
7
|
+
const { options, selected, addBtnLabel, onChange, ...popoverSearchProps } = props;
|
|
8
|
+
return (_jsx(PopoverSelect, { options: options, selected: selected, onApply: onChange, ...popoverSearchProps, children: _jsxs(StyledAddBtn, { className: CLS.AddButton.default, role: "button", children: [_jsx(AddIcon, {}), addBtnLabel] }) }));
|
|
9
9
|
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
+
import { PopoverSelectProps } from '../SearchPopover/types';
|
|
2
3
|
export type Option = {
|
|
3
4
|
key: string;
|
|
4
5
|
label: React.ReactNode;
|
|
@@ -14,5 +15,6 @@ export type EditingListProps = {
|
|
|
14
15
|
isLoading?: boolean;
|
|
15
16
|
emptyDescription?: string;
|
|
16
17
|
removable?: boolean;
|
|
18
|
+
popoverProps?: Pick<PopoverSelectProps, 'inputSearchProps'>;
|
|
17
19
|
onChange?: (selected: string[]) => void;
|
|
18
20
|
};
|
|
@@ -15,7 +15,7 @@ export const PopoverSelect = (props) => {
|
|
|
15
15
|
const { open: openProp, selected, options: optionsProp = [], inputSearchProps = {}, children, showAllLabel = 'Show all', showSelectedLabel = 'Show selected', selectAllLabel = 'Select all', deselectAllLabel = 'Unselect all', menuProps = {}, isAllowEmpty = false, onCancel, onApply, onSearchPredicate, ...rest } = props;
|
|
16
16
|
const itemSize = menuProps.itemSize || ITEM_SIZE;
|
|
17
17
|
const itemSpacing = menuProps.itemSpacing || ITEM_SPACING;
|
|
18
|
-
const { value: searchValue, ...restInputSearchProps } = inputSearchProps;
|
|
18
|
+
const { value: searchValue, searchConfig, ...restInputSearchProps } = inputSearchProps;
|
|
19
19
|
const refOnSearchPredicate = useRef(onSearchPredicate);
|
|
20
20
|
useEffect(() => {
|
|
21
21
|
refOnSearchPredicate.current = onSearchPredicate;
|
|
@@ -46,15 +46,15 @@ export const PopoverSelect = (props) => {
|
|
|
46
46
|
const filteredOptions = useMemo(() => {
|
|
47
47
|
let result = options.filter(field => {
|
|
48
48
|
if (!refOnSearchPredicate.current) {
|
|
49
|
-
return defaultSearch(field, search);
|
|
49
|
+
return defaultSearch(field, search, searchConfig);
|
|
50
50
|
}
|
|
51
|
-
return refOnSearchPredicate.current(field) || defaultSearch(field, search);
|
|
51
|
+
return refOnSearchPredicate.current(field) || defaultSearch(field, search, searchConfig);
|
|
52
52
|
});
|
|
53
53
|
if (showSelected) {
|
|
54
54
|
result = result.filter(field => selectedKeys.has(field.key));
|
|
55
55
|
}
|
|
56
56
|
return result;
|
|
57
|
-
}, [options, search, showSelected, selectedKeys]);
|
|
57
|
+
}, [options, search, showSelected, selectedKeys, searchConfig]);
|
|
58
58
|
const handleToggleField = (field, checked) => {
|
|
59
59
|
const newSelectedKeys = new Set(selectedKeys);
|
|
60
60
|
if (checked) {
|
|
@@ -2,8 +2,13 @@ import { PopoverProps } from 'antd';
|
|
|
2
2
|
import { InputProps } from '../../atoms/Input';
|
|
3
3
|
import React, { PropsWithChildren } from 'react';
|
|
4
4
|
import { MenuInlineProps } from '../VirtualizedMenu/types';
|
|
5
|
+
export type SearchConfig = {
|
|
6
|
+
searchWithKey?: boolean;
|
|
7
|
+
};
|
|
5
8
|
export type SearchPopoverProps = PropsWithChildren<{
|
|
6
|
-
inputSearchProps?: InputProps
|
|
9
|
+
inputSearchProps?: InputProps & {
|
|
10
|
+
searchConfig?: SearchConfig;
|
|
11
|
+
};
|
|
7
12
|
isAllowEmpty?: boolean;
|
|
8
13
|
} & PopoverProps>;
|
|
9
14
|
export type Option = {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Option } from './types';
|
|
2
|
-
export declare const defaultSearch: (opt: Option, search: string) => boolean;
|
|
1
|
+
import { Option, SearchConfig } from './types';
|
|
2
|
+
export declare const defaultSearch: (opt: Option, search: string, config?: SearchConfig) => boolean;
|
|
3
3
|
export declare const calDefaultListHeightInPopover: (params: {
|
|
4
4
|
listLength: number;
|
|
5
5
|
itemSize: number;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { searchStringQuery } from '@antscorp/antsomi-ui/es/utils';
|
|
2
2
|
import { calInlineListSize } from '../VirtualizedMenu/utils';
|
|
3
3
|
import { min } from 'lodash';
|
|
4
|
-
export const defaultSearch = (opt, search) => {
|
|
5
|
-
|
|
4
|
+
export const defaultSearch = (opt, search, config) => {
|
|
5
|
+
const { searchWithKey = false } = config || {};
|
|
6
|
+
let text = searchWithKey ? opt.key : '';
|
|
6
7
|
if (typeof opt.label === 'string') {
|
|
7
8
|
text = text.concat(opt.label);
|
|
8
9
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
declare const Content: ({ apiKey, domain, portalId, token, action, ticketId, listUsers, domainTicket, config, ticketDetails, listComment, userId, fetchgetTicketComments, isLoadingComment, handleCloseDrawer, setIsSuccessCreated, isLoadingDetails, isLoadingDataSouce, accountManage, timeZone, isLoadingSelectedAccount, accountEdit, initOwnerId, isAllAccount, setDrawerHeader, openDrawer, dataSelectInput, setDataSelectInput, }: {
|
|
1
|
+
declare const Content: ({ apiKey, domain, portalId, token, action, ticketId, listUsers, domainTicket, domainUpload, config, ticketDetails, listComment, userId, fetchgetTicketComments, isLoadingComment, handleCloseDrawer, setIsSuccessCreated, isLoadingDetails, isLoadingDataSouce, accountManage, timeZone, isLoadingSelectedAccount, accountEdit, initOwnerId, isAllAccount, setDrawerHeader, openDrawer, dataSelectInput, setDataSelectInput, }: {
|
|
2
2
|
apiKey: any;
|
|
3
3
|
domain: any;
|
|
4
4
|
portalId: any;
|
|
@@ -7,6 +7,7 @@ declare const Content: ({ apiKey, domain, portalId, token, action, ticketId, lis
|
|
|
7
7
|
ticketId: any;
|
|
8
8
|
listUsers: any;
|
|
9
9
|
domainTicket: any;
|
|
10
|
+
domainUpload: any;
|
|
10
11
|
config: any;
|
|
11
12
|
ticketDetails: any;
|
|
12
13
|
listComment: any;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/* eslint-disable jsx-a11y/label-has-associated-control */
|
|
3
|
+
/* eslint-disable react/no-unescaped-entities */
|
|
2
4
|
import { useMemo, useEffect, useRef, useState } from 'react';
|
|
3
|
-
import
|
|
5
|
+
import Editor from './components/Editor';
|
|
4
6
|
import { Helmet } from 'react-helmet';
|
|
5
7
|
import dayjs from 'dayjs';
|
|
6
8
|
import DropdownComponent from './components/DropdownComponent';
|
|
@@ -24,7 +26,7 @@ const initValueInput = {
|
|
|
24
26
|
isChanged: false,
|
|
25
27
|
referenceUrl: window.location.href,
|
|
26
28
|
};
|
|
27
|
-
const Content = ({ apiKey, domain, portalId, token, action, ticketId, listUsers, domainTicket, config, ticketDetails, listComment, userId, fetchgetTicketComments, isLoadingComment, handleCloseDrawer, setIsSuccessCreated, isLoadingDetails, isLoadingDataSouce, accountManage, timeZone, isLoadingSelectedAccount, accountEdit, initOwnerId, isAllAccount, setDrawerHeader, openDrawer, dataSelectInput, setDataSelectInput, }) => {
|
|
29
|
+
const Content = ({ apiKey, domain, portalId, token, action, ticketId, listUsers, domainTicket, domainUpload, config, ticketDetails, listComment, userId, fetchgetTicketComments, isLoadingComment, handleCloseDrawer, setIsSuccessCreated, isLoadingDetails, isLoadingDataSouce, accountManage, timeZone, isLoadingSelectedAccount, accountEdit, initOwnerId, isAllAccount, setDrawerHeader, openDrawer, dataSelectInput, setDataSelectInput, }) => {
|
|
28
30
|
const [isOpenToast, setIsOpenToast] = useState({
|
|
29
31
|
isOpen: false,
|
|
30
32
|
status: 'error',
|
|
@@ -257,6 +259,7 @@ const Content = ({ apiKey, domain, portalId, token, action, ticketId, listUsers,
|
|
|
257
259
|
}
|
|
258
260
|
}, [isUpdate, openDrawer]);
|
|
259
261
|
const handleEditorChange = content => {
|
|
262
|
+
console.log('Changed', content);
|
|
260
263
|
setTextValue(content);
|
|
261
264
|
updateValueInput({ message: content });
|
|
262
265
|
setIsLoadingUpload(content.includes('<img src="data:image/png;base64'));
|
|
@@ -361,42 +364,11 @@ const Content = ({ apiKey, domain, portalId, token, action, ticketId, listUsers,
|
|
|
361
364
|
? '--'
|
|
362
365
|
: valueInput[data?.value]?.name })) : (_jsx(DropdownComponent, { data: data.field_options, setValueInput: updateValueInput, valueInput: valueInput, type: data.value, isUpdate: isUpdate, title: data.title })) })] }, data.id))), _jsxs(WrapperContentInput, { style: { marginTop: '15px' }, children: [_jsx(WrapperLable, { htmlFor: "referenceUrl", children: "Reference URL" }), isUpdate ? (valueInput.referenceUrl ? (_jsx(Tooltip, { title: valueInput.referenceUrl, placement: "top", children: _jsx(WrapperTextEdit, { color: "#005fb8", href: valueInput.referenceUrl, target: "_blank", children: valueInput.referenceUrl }) })) : (_jsx(WrapperTextEdit, { color: "#005fb8", href: valueInput.referenceUrl, target: "_blank", children: valueInput.referenceUrl }))) : (_jsx(WrapperTextInput, { placeholder: "Reference URL", id: "referenceUrl",
|
|
363
366
|
// width="300px"
|
|
364
|
-
onChange: handleOnchangeInput, name: "referenceUrl", value: valueInput.referenceUrl }))] })] }), _jsxs(WrapperRightContent, { children: [_jsxs(WrapperEditor, { children: [_jsxs("div", { children: [_jsx(Editor, {
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
max_height: 800,
|
|
370
|
-
max_width: 800,
|
|
371
|
-
menubar: false,
|
|
372
|
-
plugins: [
|
|
373
|
-
'advlist autolink lists link tinydrive image emoticons charmap print preview anchor',
|
|
374
|
-
'searchreplace visualblocks code fullscreen',
|
|
375
|
-
'insertdatetime media paste code help wordcount ', //
|
|
376
|
-
],
|
|
377
|
-
toolbar: 'formatselect | bold italic underline strikethrough code | image emoticons | \
|
|
378
|
-
forecolor backcolor preview link |\
|
|
379
|
-
alignleft aligncenter alignright alignjustify outdent indent |\
|
|
380
|
-
numlist bullist checklist undo redo',
|
|
381
|
-
tinydrive_token_provider: `//${domain}/hub/thirdparty-services/v2.0/tinymce?portalId=${portalId}&token=${token}`,
|
|
382
|
-
skin: 'snow',
|
|
383
|
-
toolbar_mode: 'sliding',
|
|
384
|
-
content_css: false,
|
|
385
|
-
branding: false,
|
|
386
|
-
resize: false,
|
|
387
|
-
statusbar: false,
|
|
388
|
-
setup(editor) {
|
|
389
|
-
editor.on('init', e => {
|
|
390
|
-
editor.getBody().style.fontSize = '12px';
|
|
391
|
-
});
|
|
392
|
-
},
|
|
393
|
-
placeholder: 'Enter your comment...',
|
|
394
|
-
entity_encoding: 'raw',
|
|
395
|
-
paste_data_images: true,
|
|
396
|
-
},
|
|
397
|
-
// disabled={!!props.disabled}
|
|
398
|
-
// outputFormat='text'
|
|
399
|
-
onEditorChange: handleEditorChange }), _jsxs("div", { children: [valueInput.files?.length > 0 && (_jsx(WrapperLinkItemFiles, { children: valueInput.files?.map((file) => (_jsxs("div", { className: "file-item", children: [_jsxs("div", { className: "file-name-group", children: [_jsx(Icon, { className: "file-icon", type: "icon-ants-attachment" }), _jsx(Tooltip, { title: file?.file_name, children: _jsx("span", { className: "file-name", children: file?.file_name }) })] }), _jsx(Icon, { onClick: () => handleRemoveFile(file?.token), className: "remove-btn", type: "icon-ants-remove-slim" })] }, file?.token))) })), _jsxs(WrapperIconEditor, { borderTop: !!valueInput.files?.length, children: [_jsxs(WrapperInputFile, { children: [_jsx("label", { htmlFor: "fileImage", className: "upload-wrapper-label", children: _jsx(Icon, { type: "icon-ants-attachment", className: "upload-icon" }) }), _jsx("input", { type: "file", style: { position: 'absolute', top: 0, right: 0, display: 'none' }, name: "fileImage", id: "fileImage", onChange: handleOnchangeFile })] }), isUpdate && (_jsx(Button, { type: "primary", disabled: !handleValidateContent(textValue) || isLoadingUpload, className: "reply-btn", style: {
|
|
367
|
+
onChange: handleOnchangeInput, name: "referenceUrl", value: valueInput.referenceUrl }))] })] }), _jsxs(WrapperRightContent, { children: [_jsxs(WrapperEditor, { children: [_jsxs("div", { children: [_jsx(Editor, { value: textValue, uploadService: Service.tickets.callApi.uploadImg({
|
|
368
|
+
domain: domainUpload,
|
|
369
|
+
token,
|
|
370
|
+
userId,
|
|
371
|
+
}), onChange: handleEditorChange, placeholder: "Enter your comment...", height: 195 }), _jsxs("div", { children: [valueInput.files?.length > 0 && (_jsx(WrapperLinkItemFiles, { children: valueInput.files?.map((file) => (_jsxs("div", { className: "file-item", children: [_jsxs("div", { className: "file-name-group", children: [_jsx(Icon, { className: "file-icon", type: "icon-ants-attachment" }), _jsx(Tooltip, { title: file?.file_name, children: _jsx("span", { className: "file-name", children: file?.file_name }) })] }), _jsx(Icon, { onClick: () => handleRemoveFile(file?.token), className: "remove-btn", type: "icon-ants-remove-slim" })] }, file?.token))) })), _jsxs(WrapperIconEditor, { borderTop: !!valueInput.files?.length, children: [_jsxs(WrapperInputFile, { children: [_jsx("label", { htmlFor: "fileImage", className: "upload-wrapper-label", children: _jsx(Icon, { type: "icon-ants-attachment", className: "upload-icon" }) }), _jsx("input", { type: "file", style: { position: 'absolute', top: 0, right: 0, display: 'none' }, name: "fileImage", id: "fileImage", onChange: handleOnchangeFile })] }), isUpdate && (_jsx(Button, { type: "primary", disabled: !handleValidateContent(textValue) || isLoadingUpload, className: "reply-btn", style: {
|
|
400
372
|
background: `${!handleValidateContent(textValue) || isLoadingUpload
|
|
401
373
|
? '#ccc'
|
|
402
374
|
: '#1f5fac'}`,
|
|
@@ -33,6 +33,11 @@ declare const API: {
|
|
|
33
33
|
updateComment: (params: any, domain: any, token: any, config: any, userId: any, type: any, ticketId: any) => Promise<any>;
|
|
34
34
|
updateFollowers: (params: any, domain: any, token: any, config: any, userId: any, ticketId: any) => Promise<any>;
|
|
35
35
|
upload: (params: any, domain: any, token: any, config: any, userId: any, type: any) => Promise<any>;
|
|
36
|
+
uploadImg: ({ domain, token, userId }: {
|
|
37
|
+
domain: any;
|
|
38
|
+
token: any;
|
|
39
|
+
userId: any;
|
|
40
|
+
}) => (params: any) => Promise<any>;
|
|
36
41
|
};
|
|
37
42
|
};
|
|
38
43
|
accounts: {
|
|
@@ -40,6 +40,17 @@ const API = {
|
|
|
40
40
|
// const data = getEntriesV2(res, 0);
|
|
41
41
|
// dataBackup[params.objectName] = data;
|
|
42
42
|
res.data),
|
|
43
|
+
uploadImg: ({ domain, token, userId }) => params => {
|
|
44
|
+
const { files, mode } = params;
|
|
45
|
+
const formData = new FormData();
|
|
46
|
+
files.forEach(file => {
|
|
47
|
+
formData.append('files', file);
|
|
48
|
+
});
|
|
49
|
+
const fileType = mode === 'video' ? 'origin-file' : 'file';
|
|
50
|
+
return callApiWithAuth(`api/v1/file-upload/${fileType}`, 'post', formData, domain, {
|
|
51
|
+
contentType: 'multipart/form-data',
|
|
52
|
+
}, token, userId).then(res => res.data);
|
|
53
|
+
},
|
|
43
54
|
},
|
|
44
55
|
},
|
|
45
56
|
accounts: {
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
interface QuillEditor {
|
|
2
|
+
quill: any;
|
|
3
|
+
}
|
|
4
|
+
declare function undoChange(this: QuillEditor): void;
|
|
5
|
+
declare function redoChange(this: QuillEditor): void;
|
|
6
|
+
export declare const modules: {
|
|
7
|
+
toolbar: {
|
|
8
|
+
container: string;
|
|
9
|
+
handlers: {
|
|
10
|
+
undo: typeof undoChange;
|
|
11
|
+
redo: typeof redoChange;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
history: {
|
|
15
|
+
delay: number;
|
|
16
|
+
maxStack: number;
|
|
17
|
+
userOnly: boolean;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
export declare const formats: string[];
|
|
21
|
+
export declare const QuillToolbar: () => import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
export default QuillToolbar;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import Quill from 'quill';
|
|
3
|
+
import styled from 'styled-components';
|
|
4
|
+
const CustomUndo = () => (_jsxs("svg", { viewBox: "0 0 18 18", children: [_jsx("polygon", { className: "ql-fill ql-stroke", points: "6 10 4 12 2 10 6 10" }), _jsx("path", { className: "ql-stroke", d: "M8.09,13.91A4.6,4.6,0,0,0,9,14,5,5,0,1,0,4,9" })] }));
|
|
5
|
+
const CustomRedo = () => (_jsxs("svg", { viewBox: "0 0 18 18", children: [_jsx("polygon", { className: "ql-fill ql-stroke", points: "12 10 14 12 16 10 12 10" }), _jsx("path", { className: "ql-stroke", d: "M9.91,13.91A4.6,4.6,0,0,1,9,14a5,5,0,1,1,5-5" })] }));
|
|
6
|
+
function undoChange() {
|
|
7
|
+
this.quill.history.undo();
|
|
8
|
+
}
|
|
9
|
+
function redoChange() {
|
|
10
|
+
this.quill.history.redo();
|
|
11
|
+
}
|
|
12
|
+
// const Size: any = Quill.import('formats/size');
|
|
13
|
+
// Size.whitelist = ['small', 'medium', 'large']; // 'extra-small',
|
|
14
|
+
// Quill.register(Size, true);
|
|
15
|
+
const SizeStyle = Quill.import('attributors/style/size');
|
|
16
|
+
SizeStyle.whitelist = [
|
|
17
|
+
'12px',
|
|
18
|
+
'14px',
|
|
19
|
+
'16px',
|
|
20
|
+
'18px',
|
|
21
|
+
'20px',
|
|
22
|
+
'22px',
|
|
23
|
+
'24px',
|
|
24
|
+
'26px',
|
|
25
|
+
'28px',
|
|
26
|
+
'30px',
|
|
27
|
+
];
|
|
28
|
+
Quill.register(SizeStyle, true);
|
|
29
|
+
// const Font: any = Quill.import('formats/font');
|
|
30
|
+
// Font.whitelist = ['arial', 'comic-sans', 'courier-new', 'georgia', 'helvetica', 'lucida'];
|
|
31
|
+
// Quill.register(Font, true);
|
|
32
|
+
export const modules = {
|
|
33
|
+
toolbar: {
|
|
34
|
+
container: '#toolbar',
|
|
35
|
+
handlers: {
|
|
36
|
+
undo: undoChange,
|
|
37
|
+
redo: redoChange,
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
history: {
|
|
41
|
+
delay: 500,
|
|
42
|
+
maxStack: 100,
|
|
43
|
+
userOnly: true,
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
export const formats = [
|
|
47
|
+
'header',
|
|
48
|
+
'font',
|
|
49
|
+
'size',
|
|
50
|
+
'bold',
|
|
51
|
+
'italic',
|
|
52
|
+
'underline',
|
|
53
|
+
'align',
|
|
54
|
+
'strike',
|
|
55
|
+
'script',
|
|
56
|
+
'blockquote',
|
|
57
|
+
'background',
|
|
58
|
+
'list',
|
|
59
|
+
// 'bullet',
|
|
60
|
+
'indent',
|
|
61
|
+
'link',
|
|
62
|
+
'image',
|
|
63
|
+
'color',
|
|
64
|
+
'code-block',
|
|
65
|
+
];
|
|
66
|
+
const ToolBarWrapper = styled.div `
|
|
67
|
+
border-radius: '10px 10px 0 0';
|
|
68
|
+
* {
|
|
69
|
+
font-weight: 400;
|
|
70
|
+
}
|
|
71
|
+
`;
|
|
72
|
+
export const QuillToolbar = () => (_jsxs(ToolBarWrapper, { id: "toolbar", children: [_jsxs("span", { className: "ql-formats", children: [_jsxs("select", { className: "ql-font", defaultValue: "false", children: [_jsx("option", { value: "false", children: "Sans Serif" }), _jsx("option", { value: "serif", children: "Serif" }), _jsx("option", { value: "monospace", children: "Monospace" })] }), _jsxs("select", { className: "ql-size", defaultValue: "12px", children: [_jsx("option", { value: "12px", children: "12px" }), _jsx("option", { value: "14px", children: "14px" }), _jsx("option", { value: "16px", children: "16px" }), _jsx("option", { value: "18px", children: "18px" }), _jsx("option", { value: "20px", children: "20px" }), _jsx("option", { value: "22px", children: "22px" }), _jsx("option", { value: "24px", children: "24px" }), _jsx("option", { value: "26px", children: "26px" }), _jsx("option", { value: "28px", children: "28px" }), _jsx("option", { value: "30px", children: "30px" })] }), _jsxs("select", { className: "ql-header", defaultValue: "3", children: [_jsx("option", { value: "1", children: "Heading1" }), _jsx("option", { value: "2", children: "Heading2" }), _jsx("option", { value: "3", children: "Heading3" })] })] }), _jsxs("span", { className: "ql-formats", children: [_jsx("button", { className: "ql-bold" }), _jsx("button", { className: "ql-italic" }), _jsx("button", { className: "ql-underline" }), _jsx("button", { className: "ql-strike" })] }), _jsxs("span", { className: "ql-formats", children: [_jsx("button", { className: "ql-list", value: "ordered" }), _jsx("button", { className: "ql-list", value: "bullet" }), _jsx("button", { className: "ql-indent", value: "-1" }), _jsx("button", { className: "ql-indent", value: "+1" })] }), _jsxs("span", { className: "ql-formats", children: [_jsx("button", { className: "ql-script", value: "super" }), _jsx("button", { className: "ql-script", value: "sub" }), _jsx("button", { className: "ql-blockquote" }), _jsx("button", { className: "ql-direction" })] }), _jsxs("span", { className: "ql-formats", children: [_jsx("select", { className: "ql-align" }), _jsx("select", { className: "ql-color" }), _jsx("select", { className: "ql-background" })] }), _jsxs("span", { className: "ql-formats", children: [_jsx("button", { className: "ql-link" }), _jsx("button", { className: "ql-image" })] }), _jsxs("span", { className: "ql-formats", children: [_jsx("button", { className: "ql-formula" }), _jsx("button", { className: "ql-code-block" }), _jsx("button", { className: "ql-clean" })] }), _jsxs("span", { className: "ql-formats", children: [_jsx("button", { className: "ql-undo", children: _jsx(CustomUndo, {}) }), _jsx("button", { className: "ql-redo", children: _jsx(CustomRedo, {}) })] })] }));
|
|
73
|
+
export default QuillToolbar;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import 'quill/dist/quill.snow.css';
|
|
2
|
+
declare const Editor: ({ value, onChange, placeholder, uploadService, height, maxImgHeight, }: {
|
|
3
|
+
value: any;
|
|
4
|
+
onChange: any;
|
|
5
|
+
placeholder: any;
|
|
6
|
+
uploadService: any;
|
|
7
|
+
height: any;
|
|
8
|
+
maxImgHeight?: string | undefined;
|
|
9
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export default Editor;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef } from 'react';
|
|
3
|
+
import Quill from 'quill';
|
|
4
|
+
import 'quill/dist/quill.snow.css';
|
|
5
|
+
import { ImageHandler } from 'quill-upload';
|
|
6
|
+
import debounce from 'lodash/debounce';
|
|
7
|
+
import EditorToolbar, { modules, formats } from './EditorToolbar';
|
|
8
|
+
Quill.register('modules/imageHandler', ImageHandler);
|
|
9
|
+
const Block = Quill.import('blots/block');
|
|
10
|
+
Block.tagName = 'DIV';
|
|
11
|
+
Quill.register(Block, true);
|
|
12
|
+
const toolbarOptions = [
|
|
13
|
+
['bold', 'italic', 'underline', 'strike'],
|
|
14
|
+
['blockquote', 'code-block'],
|
|
15
|
+
['link', 'image', 'video', 'formula'],
|
|
16
|
+
[{ header: 1 }, { header: 2 }],
|
|
17
|
+
[{ list: 'ordered' }, { list: 'bullet' }, { list: 'check' }],
|
|
18
|
+
[{ script: 'sub' }, { script: 'super' }],
|
|
19
|
+
[{ indent: '-1' }, { indent: '+1' }],
|
|
20
|
+
[{ direction: 'rtl' }],
|
|
21
|
+
[{ size: ['small', false, 'large', 'huge'] }],
|
|
22
|
+
[{ header: [1, 2, 3, 4, 5, 6, false] }],
|
|
23
|
+
[{ color: [] }, { background: [] }],
|
|
24
|
+
[{ font: [] }],
|
|
25
|
+
[{ align: [] }],
|
|
26
|
+
['clean'],
|
|
27
|
+
];
|
|
28
|
+
const Editor = ({ value, onChange, placeholder, uploadService, height, maxImgHeight = '300px', }) => {
|
|
29
|
+
const editor = useRef(null);
|
|
30
|
+
const debounceChange = debounce(onChange, 500);
|
|
31
|
+
// Upload handler function
|
|
32
|
+
const _onUpload = async (file, resolve) => {
|
|
33
|
+
try {
|
|
34
|
+
const result = await uploadService({ files: [file], mode: 'file' });
|
|
35
|
+
if (result?.data?.length) {
|
|
36
|
+
resolve(result.data[0].url);
|
|
37
|
+
editor.current.root.querySelectorAll('img.quill-upload-progress').forEach(el => {
|
|
38
|
+
el.classList.remove('quill-upload-progress');
|
|
39
|
+
el.style.maxHeight = maxImgHeight;
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
resolve('');
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
resolve('');
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
if (!value && editor.current) {
|
|
50
|
+
editor.current.setText('');
|
|
51
|
+
}
|
|
52
|
+
}, [value]);
|
|
53
|
+
useEffect(() => {
|
|
54
|
+
if (editor.current)
|
|
55
|
+
return;
|
|
56
|
+
editor.current = new Quill('#editor', {
|
|
57
|
+
theme: 'snow',
|
|
58
|
+
modules: {
|
|
59
|
+
...modules,
|
|
60
|
+
imageHandler: {
|
|
61
|
+
imageClass: 'custom-image-class',
|
|
62
|
+
upload: file => new Promise(resolve => {
|
|
63
|
+
if (file.size > 10 * 1024 * 1024) {
|
|
64
|
+
resolve('');
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
_onUpload(file, resolve);
|
|
68
|
+
}),
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
formats,
|
|
72
|
+
placeholder,
|
|
73
|
+
});
|
|
74
|
+
editor.current.root.innerHTML = value || '';
|
|
75
|
+
editor.current.on('text-change', (delta, oldDelta, source) => {
|
|
76
|
+
// if (source === 'api') {}
|
|
77
|
+
if (source === 'user') {
|
|
78
|
+
debounceChange(editor.current?.root.innerHTML);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}, []);
|
|
82
|
+
return (_jsxs(_Fragment, { children: [_jsx(EditorToolbar, {}), _jsx("div", { id: "editor", style: { height, color: '#000000' } })] }));
|
|
83
|
+
};
|
|
84
|
+
export default Editor;
|
|
@@ -29,7 +29,7 @@ const defaultProps = {
|
|
|
29
29
|
useChat: false,
|
|
30
30
|
};
|
|
31
31
|
export const TicketEditor = props => {
|
|
32
|
-
const { isOpen, apiKey, portalId, token, domain, action, config: propsConfig, userId, ownerId, domainTicket, ticketId, domainAccount, useIcon, domainPermission, appCode, menuCode, fullParent, useChat, } = props;
|
|
32
|
+
const { isOpen, apiKey, portalId, token, domain, action, config: propsConfig, userId, ownerId, domainTicket, domainUpload, ticketId, domainAccount, useIcon, domainPermission, appCode, menuCode, fullParent, useChat, } = props;
|
|
33
33
|
const [openDrawer, setOpenDrawer] = useState(false);
|
|
34
34
|
const [isOpenPopover, setOpenPopover] = useState(false);
|
|
35
35
|
const [openChat, setOpenChat] = useState(false);
|
|
@@ -238,7 +238,7 @@ export const TicketEditor = props => {
|
|
|
238
238
|
}, headerProps: {
|
|
239
239
|
// children: drawerHeader,
|
|
240
240
|
showBorderBottom: true,
|
|
241
|
-
}, name: "ticket-editor-drawer", children: openDrawer && (_jsx(Content, { apiKey: apiKey, portalId: portalId, token: token, domain: domain, action: action, listUsers: listUsers, domainTicket: domainTicket, config: config, ticketDetails: ticketDetails, listComment: listComment, ticketId: ticketId, userId: userId, fetchgetTicketComments: fetchgetTicketComments, isLoadingComment: isLoadingComment, isLoadingDetails: isLoadingDetails, isLoadingDataSouce: isLoadingDataSouce, handleCloseDrawer: handleCloseDrawer, setIsSuccessCreated: setIsSuccessCreated, accountManage: accountManage, timeZone: timeZone, isLoadingSelectedAccount: isLoadingSelectedAccount, accountEdit: accountEdit, initOwnerId: ownerId, isAllAccount: isAllAccount, setDrawerHeader: setDrawerHeader, openDrawer: openDrawer, dataSelectInput: dataSelectInput, setDataSelectInput: setDataSelectInput })) }), _jsx(Modal, { open: isOpenModal, onCancel: () => setIsOpenModal(false), className: "modal", children: _jsxs("div", { className: "wrapperBody", children: [_jsx(WrapperModalHeader, { children: "Confirm deletion of this ticket" }), _jsx("div", { className: "modalBody", children: _jsx("span", { style: { fontSize: '12px', color: '#000' }, children: "Once you confirm cancel, this ticket will NOT be saved." }) }), _jsxs("div", { className: "modalFooter", children: [_jsx(Button, { style: {
|
|
241
|
+
}, name: "ticket-editor-drawer", children: openDrawer && (_jsx(Content, { apiKey: apiKey, portalId: portalId, token: token, domain: domain, action: action, listUsers: listUsers, domainTicket: domainTicket, domainUpload: domainUpload, config: config, ticketDetails: ticketDetails, listComment: listComment, ticketId: ticketId, userId: userId, fetchgetTicketComments: fetchgetTicketComments, isLoadingComment: isLoadingComment, isLoadingDetails: isLoadingDetails, isLoadingDataSouce: isLoadingDataSouce, handleCloseDrawer: handleCloseDrawer, setIsSuccessCreated: setIsSuccessCreated, accountManage: accountManage, timeZone: timeZone, isLoadingSelectedAccount: isLoadingSelectedAccount, accountEdit: accountEdit, initOwnerId: ownerId, isAllAccount: isAllAccount, setDrawerHeader: setDrawerHeader, openDrawer: openDrawer, dataSelectInput: dataSelectInput, setDataSelectInput: setDataSelectInput })) }), _jsx(Modal, { open: isOpenModal, onCancel: () => setIsOpenModal(false), className: "modal", children: _jsxs("div", { className: "wrapperBody", children: [_jsx(WrapperModalHeader, { children: "Confirm deletion of this ticket" }), _jsx("div", { className: "modalBody", children: _jsx("span", { style: { fontSize: '12px', color: '#000' }, children: "Once you confirm cancel, this ticket will NOT be saved." }) }), _jsxs("div", { className: "modalFooter", children: [_jsx(Button, { style: {
|
|
242
242
|
height: '28px',
|
|
243
243
|
background: '#1f5fac',
|
|
244
244
|
color: '#fff',
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export declare function getObjectPropSafely(fn: any, defaultValue?: string): any;
|
|
2
2
|
export declare function isNumeric(num: any): boolean;
|
|
3
3
|
export declare function getUserLocaleLanguage(config: any): any;
|
|
4
|
-
export declare function callApiWithAuth(endpoint: any, method: string | undefined, body: any, domain?: string, config?:
|
|
4
|
+
export declare function callApiWithAuth(endpoint: any, method: string | undefined, body: any, domain?: string, config?: any, token?: string, userId?: string, isTicket?: boolean, type?: string, isAccount?: boolean, isPermission?: boolean, others?: {}): Promise<import("axios").AxiosResponse<any, any>>;
|
|
5
5
|
export declare function isUrlEmbedded(): boolean;
|
|
6
6
|
export declare const safeParse: (val: any, defaultVal: any) => any;
|
|
7
7
|
export declare const safeParseInt: (val: any, defaultVal: any) => any;
|
|
@@ -85,14 +85,14 @@ export function callApiWithAuth(endpoint, method = 'GET', body, domain = '', con
|
|
|
85
85
|
ownerId = userId;
|
|
86
86
|
}
|
|
87
87
|
const headers = {
|
|
88
|
-
'Content-Type': 'application/json; charset=utf-8',
|
|
88
|
+
'Content-Type': config.contentType || 'application/json; charset=utf-8',
|
|
89
89
|
token: apiToken,
|
|
90
90
|
};
|
|
91
91
|
if (urlHasQueryString(endpoint)) {
|
|
92
|
-
endpoint += `&portalId=${apiPid}&languageCode=${getUserLocaleLanguage(config)}&_user_id=${userId}`;
|
|
92
|
+
endpoint += `&_token=${apiToken}&portalId=${apiPid}&languageCode=${getUserLocaleLanguage(config)}&_user_id=${userId}&_account_id=${userId}`;
|
|
93
93
|
}
|
|
94
94
|
else {
|
|
95
|
-
endpoint += `?portalId=${apiPid}&languageCode=${getUserLocaleLanguage(config)}&_user_id=${userId}`;
|
|
95
|
+
endpoint += `?_token=${apiToken}&portalId=${apiPid}&languageCode=${getUserLocaleLanguage(config)}&_user_id=${userId}&_account_id=${userId}`;
|
|
96
96
|
}
|
|
97
97
|
if (isNumeric(ownerId)) {
|
|
98
98
|
endpoint += `&_owner_id=${ownerId}`;
|
|
@@ -223,12 +223,12 @@ export const Layout = memo(props => {
|
|
|
223
223
|
: menu_item_name);
|
|
224
224
|
setActiveMenu(activeMenuItem);
|
|
225
225
|
onActiveMenuChange?.(menu_item_code);
|
|
226
|
-
console.log({
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
});
|
|
226
|
+
// console.log({
|
|
227
|
+
// activeItemPath: cloneDeep(activeItemPath),
|
|
228
|
+
// flattenPermissionList,
|
|
229
|
+
// menuListPermission,
|
|
230
|
+
// appItem: activeItemPath[0],
|
|
231
|
+
// });
|
|
232
232
|
const hasRole = hasSelectAccountPermission({
|
|
233
233
|
activeItemPath: cloneDeep(activeItemPath),
|
|
234
234
|
flattenPermissionList,
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"_ACT_COPY_TO_CLIPBOARD": "クリップボードにコピー",
|
|
48
48
|
"_ACT_CREATE": "作成する",
|
|
49
49
|
"_ACT_CREATE_ASSIGN_ROLE": "役割の作成と割り当て",
|
|
50
|
-
"_ACT_CREATE_NEW_EVENT_ACTION": "
|
|
50
|
+
"_ACT_CREATE_NEW_EVENT_ACTION": "新しいイベントアクションの作成",
|
|
51
51
|
"_ACT_CREATE_NEW_EVENT_CATEGORY": "新しいイベント カテゴリを作成する",
|
|
52
52
|
"_ACT_CREATE_NEW_MODEL": "新しいモデルを作成する",
|
|
53
53
|
"_ACT_CUSTOMER_SEGMENT": "顧客セグメント",
|
|
@@ -1352,7 +1352,7 @@
|
|
|
1352
1352
|
"_USER_GUIDE_CLONE": "元のアイテムの設定を継承した新しいアイテムが作成されます。これは元のものには何も影響しません。 <br />\n新しいアイテムに名前を付けて、「保存」をクリックしてください。",
|
|
1353
1353
|
"_USER_GUIDE_COLLECTION_CREATE_CRITERIA": "ファイルの を使用して、このコレクションに適したアイテムを見つけるための条件を作成します",
|
|
1354
1354
|
"_USER_GUIDE_COLLECTION_CREATE_CRITERIA_INTRO": "このシステムは、条件を満たすアイテムを検索し、このコレクションに追加します。",
|
|
1355
|
-
"_USER_GUIDE_COLLECTION_CREATE_CRITERIA_NOTE": "<b>注:</b>\n</br> -
|
|
1355
|
+
"_USER_GUIDE_COLLECTION_CREATE_CRITERIA_NOTE": "<b>注:</b>\n</br> - アップロードされたファイルから、このシステム内に存在するIDのアイテムのみを作成するコレクションに追加できます\n</br> - アップロードされたファイルは最後に使用されてから 6 か月間保存され、その後は使用できなくなります。",
|
|
1356
1356
|
"_USER_GUIDE_FILE_STORAGE_LIMIT": "<b>注:</b> アップロードされたファイルは最後に使用されてから 6 か月間保存され、その後は使用できなくなります。",
|
|
1357
1357
|
"_UPLOAD_FILE_DELETED_ERROR_MESSAGE": "アップロードされたファイルが削除されました",
|
|
1358
1358
|
"_USER_GUIDE_CONFIRM_NEW_PASSWORD": "新しいパスワードを確認します",
|
|
@@ -1383,7 +1383,7 @@
|
|
|
1383
1383
|
"_USER_GUIDE_NO_ASSIGN_EVENT": "まだイベントを割り当てていません。まずソースを作成する必要があります",
|
|
1384
1384
|
"_USER_GUIDE_NO_ATTRIBUTE": "まだ属性を作成していません",
|
|
1385
1385
|
"_USER_GUIDE_NO_DESTINATION_YET": "まだ目的地を作成していません",
|
|
1386
|
-
"_USER_GUIDE_NO_SHARED_DESTINATION": "
|
|
1386
|
+
"_USER_GUIDE_NO_SHARED_DESTINATION": "目的地は共有されていません",
|
|
1387
1387
|
"_USER_GUIDE_NO_EVENT": "まだイベントを作成していません",
|
|
1388
1388
|
"_USER_GUIDE_NO_EVENT_SOURCE": "まだイベント ソースを作成していません",
|
|
1389
1389
|
"_USER_GUIDE_NO_EVENT_ASSIGN": "まだイベントを割り当てていません",
|
|
@@ -1480,7 +1480,7 @@
|
|
|
1480
1480
|
"_WARN_SEGMENT_IN_QUEUE": "これは、キュー内で計算を待っているセグメントです。条件を編集したい場合は、計算を開始する前に無効にする必要があります。",
|
|
1481
1481
|
"_WARN_SETTING_FIELD_INVALID": "設定フィールドが無効です。保存する前に設定フィールドを完了してください。",
|
|
1482
1482
|
"_WARN_VALIDATE_END_DATE_PAST": "ジャーニーの終了日を過去 (end_date} {{end_time}}) に設定しているため、ジャーニーをアクティブ化できません。終了日を更新して、ジャーニーを再度アクティブ化してください。",
|
|
1483
|
-
"_WARN_VALIDATE_LACK_DESTINATION": "
|
|
1483
|
+
"_WARN_VALIDATE_LACK_DESTINATION": "有効な行程には少なくとも 1 つの目的地ノードが必要です",
|
|
1484
1484
|
"_WARN_VALIDATE_START_DATE_PAST": "旅の開始日を {{start_date}} の {{start_time}} に設定しましたが、すでに過ぎています。\nアクティブ化をキャンセルして開始時刻を更新することも、旅行を破棄してすぐにアクティブ化することもできます。",
|
|
1485
1485
|
"_WARNING": "警告!",
|
|
1486
1486
|
"_ZONE_TYPE_CSS_SELECTOR": "CSSセレクターを使用する",
|
|
@@ -1800,7 +1800,7 @@
|
|
|
1800
1800
|
"_COMPUTATION_SEGMENT_PROPERTY_DELETED": "セグメントのプロパティで使用されているオブジェクトが存在しません",
|
|
1801
1801
|
"_COMPUTATION_ATTRIBUTE_PROPERTY_ARCHIVED": "属性のプロパティで使用されるオブジェクトはアーカイブされています",
|
|
1802
1802
|
"_COMPUTATION_ATTRIBUTE_PROPERTY_DELETED": "属性のプロパティで使用されているオブジェクトが存在しません",
|
|
1803
|
-
"_MEASURE_TYPE_UC_APPROXIMATE_DATASKETCHES": "
|
|
1803
|
+
"_MEASURE_TYPE_UC_APPROXIMATE_DATASKETCHES": "一意の数の概算 (データスケッチ)",
|
|
1804
1804
|
"_TITL_ASSOCIATE_UTM": "UTMと連携する",
|
|
1805
1805
|
"_TITL_PLANNING": "企画",
|
|
1806
1806
|
"_TITLE_PLAN_ALL_PLANS": "すべてのプラン",
|
|
@@ -1956,7 +1956,7 @@
|
|
|
1956
1956
|
"_WARN_ATTR_COMPUTATIONAL_LIMIT": "現在、計算制限に達しているため、システムは次の有効な時間にこの属性を計算します。",
|
|
1957
1957
|
"_WARN_TITLE_AM_WARN_TOTAL": "警告 分析モデルの合計制限数",
|
|
1958
1958
|
"_WARN_AM_WARN_TOTAL_CONTENT_CREATE": "分析モデルの数が制限に達しました。\n新しい分析モデルを作成する場合は、使用されていない分析モデルを削除してください。",
|
|
1959
|
-
"_ACT_WARN_AM_GO_TO_LIST": "
|
|
1959
|
+
"_ACT_WARN_AM_GO_TO_LIST": "分析モデルのリストに移動",
|
|
1960
1960
|
"_TITLE_SELECTED_AM": "選択した分析モデル",
|
|
1961
1961
|
"_WARN_TITLE_AM_NAME": "解析モデル名",
|
|
1962
1962
|
"_WARN_TITLE_AM_STATUS": "状態",
|
|
@@ -2566,7 +2566,7 @@
|
|
|
2566
2566
|
"_LINE_RM_DEFAULT_OBJ_DES_3": "今後のイベント、ウェビナー、またはワークショップを宣伝する",
|
|
2567
2567
|
"_LINE_RM_DEFAULT_OBJ_DES_4": "ユーザーを注目の記事、ビデオ、またはブログ投稿に誘導するオプションを提供します",
|
|
2568
2568
|
"_LINE_RM_DEFAULT_OBJ_DES_5": "他のソーシャル メディア プラットフォームでコミュニティを拡大することで、ブランドの存在感を高めます。",
|
|
2569
|
-
"_LINE_RM_DEFAULT_OBJ_DES_6": "
|
|
2569
|
+
"_LINE_RM_DEFAULT_OBJ_DES_6": "メニューの選択に基づいて、さまざまなインタラクションを通じてユーザーをガイドします。\n\n たとえば、「カスタマー サポート」のメニュー項目を選択すると、「技術サポート」や「請求に関する問い合わせ」など、必要なサポートの種類を選択するオプションがユーザーに表示される場合があります。",
|
|
2570
2570
|
"_LINE_RM_DEFAULT_OBJ_DES_7": "購読フォームや登録プロンプトを備えたLDPにユーザーを誘導して、ユーザー情報を取得します。",
|
|
2571
2571
|
"_LINE_RM_SINGLE_OBJ_DES_1": "各ユーザーの好み、行動、Line チャネルとの過去のやり取りに基づいて、各ユーザーに表示されるメニュー オプションとコンテンツをカスタマイズします。",
|
|
2572
2572
|
"_LINE_RM_SINGLE_OBJ_DES_2": "各ユーザーの興味、閲覧履歴、人口統計に合わせたパーソナライズされた推奨事項や提案を提供し、関連性とエンゲージメントを強化します。",
|
|
@@ -2656,7 +2656,7 @@
|
|
|
2656
2656
|
"_PROFILES_WIDGET_2": "アイテムのおすすめ",
|
|
2657
2657
|
"_PROFILES_WIDGET_3": "ユーザーアクティビティ",
|
|
2658
2658
|
"_PROFILES_WIDGET_4": "来場者情報",
|
|
2659
|
-
"_PROFILES_WIDGET_5": "
|
|
2659
|
+
"_PROFILES_WIDGET_5": "拡張されたビジュアライゼーション",
|
|
2660
2660
|
"_PROFILES_SETTINGS_TAB": "データ",
|
|
2661
2661
|
"_PROFILES_SETTINGS_1": "アバター",
|
|
2662
2662
|
"_PROFILES_SETTINGS_2": "フルネーム",
|
|
@@ -2686,7 +2686,7 @@
|
|
|
2686
2686
|
"_COOKIE_DM_INSTRUCTION_1_DES_2": "これは、追跡するすべてのサブドメインのベース ドメインです。例: {{x}}",
|
|
2687
2687
|
"_COOKIE_DM_INSTRUCTION_2_SUM": "Cookie ドメインを構成します。",
|
|
2688
2688
|
"_COOKIE_DM_INSTRUCTION_2_DES_1": "すべてのサブドメインにわたってデータを追跡するには、「{{x}}」と入力します (例: {{y}} または {{z}})",
|
|
2689
|
-
"_ZALO_TEMP_SELECT_1": "Zalo
|
|
2689
|
+
"_ZALO_TEMP_SELECT_1": "Zalo公式アカウントによる多彩なスタイル",
|
|
2690
2690
|
"_ZALO_TEMP_SELECT_2": "これらのテンプレートは、Zalo 公式アカウント専用です。クリック ",
|
|
2691
2691
|
"_ZALO_TEMP_SELECT_3": "ここ",
|
|
2692
2692
|
"_ZALO_TEMP_SELECT_4": "目的地を作成します。",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@antscorp/antsomi-ui",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.64",
|
|
4
4
|
"description": "An enterprise-class UI design language and React UI library.",
|
|
5
5
|
"sideEffects": [
|
|
6
6
|
"dist/*",
|
|
@@ -60,11 +60,10 @@
|
|
|
60
60
|
"not op_mini all"
|
|
61
61
|
],
|
|
62
62
|
"dependencies": {
|
|
63
|
-
"@antscorp/icons": "0.27.56",
|
|
64
63
|
"@antscorp/antsomi-locales": "1.0.49",
|
|
64
|
+
"@antscorp/icons": "0.27.56",
|
|
65
65
|
"@antscorp/image-editor": "1.0.2",
|
|
66
66
|
"@antscorp/processing-notification": "^1.0.3",
|
|
67
|
-
"bignumber.js": "9.1.2",
|
|
68
67
|
"@dnd-kit/core": "^6.1.0",
|
|
69
68
|
"@dnd-kit/modifiers": "^7.0.0",
|
|
70
69
|
"@dnd-kit/sortable": "^8.0.0",
|
|
@@ -90,6 +89,7 @@
|
|
|
90
89
|
"antd": "5.12.6",
|
|
91
90
|
"axios": "^1.4.0",
|
|
92
91
|
"babel-plugin-file-loader": "^2.0.0",
|
|
92
|
+
"bignumber.js": "9.1.2",
|
|
93
93
|
"commander": "^12.1.0",
|
|
94
94
|
"currency-formatter": "1.5.9",
|
|
95
95
|
"d3-interpolate": "^3.0.1",
|
|
@@ -111,6 +111,8 @@
|
|
|
111
111
|
"moment": "2.29.2",
|
|
112
112
|
"pako": "2.0.4",
|
|
113
113
|
"qs": "6.10.3",
|
|
114
|
+
"quill": "2.0.3",
|
|
115
|
+
"quill-upload": "0.0.13",
|
|
114
116
|
"react-ace": "9.5.0",
|
|
115
117
|
"react-beautiful-dnd": "^13.1.1",
|
|
116
118
|
"react-color": "2.19.3",
|
|
@@ -158,16 +160,17 @@
|
|
|
158
160
|
"@babel/preset-typescript": "^7.23.3",
|
|
159
161
|
"@commitlint/cli": "17.5.0",
|
|
160
162
|
"@commitlint/config-conventional": "17.4.4",
|
|
161
|
-
"@storybook/addon-docs": "^8.
|
|
162
|
-
"@storybook/addon-essentials": "^8.
|
|
163
|
-
"@storybook/addon-links": "^8.
|
|
164
|
-
"@storybook/addon-styling-webpack": "^1.0.
|
|
165
|
-
"@storybook/addon-webpack5-compiler-babel": "^3.0.
|
|
166
|
-
"@storybook/blocks": "^8.
|
|
167
|
-
"@storybook/manager-api": "^8.
|
|
168
|
-
"@storybook/react": "^8.
|
|
169
|
-
"@storybook/react-webpack5": "^8.
|
|
170
|
-
"@storybook/
|
|
163
|
+
"@storybook/addon-docs": "^8.6.9",
|
|
164
|
+
"@storybook/addon-essentials": "^8.6.9",
|
|
165
|
+
"@storybook/addon-links": "^8.6.9",
|
|
166
|
+
"@storybook/addon-styling-webpack": "^1.0.1",
|
|
167
|
+
"@storybook/addon-webpack5-compiler-babel": "^3.0.5",
|
|
168
|
+
"@storybook/blocks": "^8.6.9",
|
|
169
|
+
"@storybook/manager-api": "^8.6.9",
|
|
170
|
+
"@storybook/react": "^8.6.9",
|
|
171
|
+
"@storybook/react-webpack5": "^8.6.9",
|
|
172
|
+
"@storybook/test": "^8.6.9",
|
|
173
|
+
"@storybook/theming": "^8.6.9",
|
|
171
174
|
"@testing-library/dom": "^10.4.0",
|
|
172
175
|
"@testing-library/jest-dom": "^6.5.0",
|
|
173
176
|
"@testing-library/react": "^16.0.0",
|
|
@@ -210,7 +213,7 @@
|
|
|
210
213
|
"eslint-plugin-prettier": "^5.2.1",
|
|
211
214
|
"eslint-plugin-react": "^7.32.2",
|
|
212
215
|
"eslint-plugin-react-hooks": "^4.6.0",
|
|
213
|
-
"eslint-plugin-storybook": "^0.
|
|
216
|
+
"eslint-plugin-storybook": "^0.12.0",
|
|
214
217
|
"file-loader": "^6.2.0",
|
|
215
218
|
"googleapis": "^142.0.0",
|
|
216
219
|
"husky": "^8.0.3",
|
|
@@ -228,7 +231,7 @@
|
|
|
228
231
|
"react-router-dom": "5.1.0 || 6.14.2",
|
|
229
232
|
"sass": "^1.77.8",
|
|
230
233
|
"sass-loader": "^16.0.1",
|
|
231
|
-
"storybook": "^8.
|
|
234
|
+
"storybook": "^8.6.9",
|
|
232
235
|
"style-loader": "^4.0.0",
|
|
233
236
|
"styled-components": "^5.3.9",
|
|
234
237
|
"terser-webpack-plugin": "^5.3.10",
|