directual-web-components-v2 3.11.336 → 3.11.338
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/index.js +84 -22
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +84 -22
- package/dist/index.modern.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -17094,33 +17094,79 @@ const iconHtml = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGlu
|
|
|
17094
17094
|
const iconMkd = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI1LjIuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAxMDkgMTA5IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxMDkgMTA5OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0JDM0Y4Qjt9Cgkuc3Qxe2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU+CjxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgo8ZyBpZD0iZnBzLXJpY2gtdGV4dCI+Cgk8ZyBpZD0iRkVCX3gyRl9jb21wb25lbnRfeDJGX2NhcmRzIj4KCQk8ZyBpZD0iR3JvdXAtMiI+CgkJCTxnIGlkPSJHcm91cCI+CgkJCQk8cGF0aCBpZD0iUmVjdGFuZ2xlXzFfIiBjbGFzcz0ic3QwIiBkPSJNMCwxOUMwLDguNSw4LjUsMCwxOSwwaDcxYzEwLjUsMCwxOSw4LjUsMTksMTl2NzFjMCwxMC41LTguNSwxOS0xOSwxOUgxOQoJCQkJCWMtMTAuNSwwLTE5LTguNS0xOS0xOSIvPgoJCQk8L2c+CgkJPC9nPgoJPC9nPgo8L2c+CjxnPgoJPHBhdGggY2xhc3M9InN0MSIgZD0iTTE3LjYsNTYuOWgxMy43djIuOUgxNy42VjU2Ljl6IE0xOC4yLDUwLjZIMzJ2Mi45SDE4LjJWNTAuNnogTTIxLjcsNDUuNWgyLjZsLTIuNCwyMC4xaC0yLjdMMjEuNyw0NS41egoJCSBNMjcuNiw0NS41aDIuNmwtMi40LDIwLjFIMjVMMjcuNiw0NS41eiIvPgoJPHBhdGggY2xhc3M9InN0MSIgZD0iTTM1LjgsNDUuNGg0LjhsMiw3LjFsMC43LDIuOGgwLjJsMC43LTIuOGwyLTcuMWg0Ljh2MjAuMkg0N3YtNi4zYzAtMi4zLDAuNC03LjIsMC42LTkuM2gtMC4xTDQ2LDU1LjQKCQlsLTEuNiw0LjloLTIuMmwtMS42LTQuOUwzOS4zLDUwaC0wLjFjMC4yLDIuMiwwLjYsNy4xLDAuNiw5LjN2Ni4zSDM2VjQ1LjRIMzUuOHoiLz4KCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01NSw0My45aDQuNnYxMi41aDAuMmw1LjctNi4yaDQuOUw1OS41LDYxLjd2My44SDU1VjQzLjl6IE02MS4zLDU4LjZsMi42LTIuOGw2LjgsOS44aC00LjlMNjEuMyw1OC42eiIvPgoJPHBhdGggY2xhc3M9InN0MSIgZD0iTTcyLjcsNTcuOWMwLTUsMy4yLTguMSw2LjYtOC4xYzEuNiwwLDIuOCwwLjYsMy44LDEuNmgwLjFsLTAuMi0yLjR2LTUuM2g0LjZ2MjEuN2gtMy43bC0wLjMtMS42aC0wLjEKCQljLTEuMSwxLjEtMi43LDItNC4yLDJDNzUuMiw2Niw3Mi43LDYyLjksNzIuNyw1Ny45eiBNODMsNjAuOHYtNi4yYy0wLjktMC44LTEuNi0xLTIuNi0xYy0xLjYsMC0zLjEsMS4zLTMuMSw0LjJjMCwzLDEuMSw0LjQsMyw0LjQKCQlDODEuNCw2Mi4yLDgyLjIsNjEuOCw4Myw2MC44eiIvPgo8L2c+Cjwvc3ZnPgo=";
|
|
17095
17095
|
function FpsHtml(props) {
|
|
17096
17096
|
const {
|
|
17097
|
-
socket
|
|
17097
|
+
socket,
|
|
17098
|
+
id,
|
|
17099
|
+
callEndpoint
|
|
17098
17100
|
} = props;
|
|
17099
17101
|
const [data, setData] = React.useState(props.data);
|
|
17100
17102
|
const [renderKey, setRenderKey] = React.useState(0);
|
|
17103
|
+
const [hidden, setHidden] = React.useState(false);
|
|
17104
|
+
const wrapperRef = React.useRef(null);
|
|
17105
|
+
const dataRef = React.useRef(data);
|
|
17106
|
+
const htmlRef = React.useRef((props.data || {}).html || '');
|
|
17101
17107
|
React.useEffect(() => {
|
|
17102
17108
|
if (JSON.stringify(props.data) !== JSON.stringify(data)) {
|
|
17103
17109
|
setData(props.data);
|
|
17104
17110
|
}
|
|
17105
17111
|
}, [props]);
|
|
17112
|
+
React.useEffect(() => {
|
|
17113
|
+
dataRef.current = data;
|
|
17114
|
+
htmlRef.current = (data || {}).html || '';
|
|
17115
|
+
}, [data]);
|
|
17106
17116
|
React.useEffect(() => {
|
|
17107
17117
|
setRenderKey(prev => prev + 1);
|
|
17108
17118
|
}, [socket]);
|
|
17119
|
+
React.useEffect(() => {
|
|
17120
|
+
const componentId = _$1__default.get(data, 'params.comp_ID') || id;
|
|
17121
|
+
if (!componentId) return;
|
|
17122
|
+
if (!window.FpsHtml_API) {
|
|
17123
|
+
window.FpsHtml_API = {};
|
|
17124
|
+
}
|
|
17125
|
+
window.FpsHtml_API[componentId] = {
|
|
17126
|
+
getHtml: () => htmlRef.current,
|
|
17127
|
+
setHtml: newHtml => {
|
|
17128
|
+
setData(prev => _extends({}, prev || {}, {
|
|
17129
|
+
html: newHtml
|
|
17130
|
+
}));
|
|
17131
|
+
},
|
|
17132
|
+
rerender: () => setRenderKey(prev => prev + 1),
|
|
17133
|
+
show: () => setHidden(false),
|
|
17134
|
+
hide: () => setHidden(true),
|
|
17135
|
+
getData: () => dataRef.current,
|
|
17136
|
+
getElement: () => wrapperRef.current,
|
|
17137
|
+
callEndpoint: (endpoint, method, body, params, finish) => {
|
|
17138
|
+
if (callEndpoint) {
|
|
17139
|
+
callEndpoint(endpoint, method, body, params, finish);
|
|
17140
|
+
}
|
|
17141
|
+
}
|
|
17142
|
+
};
|
|
17143
|
+
return () => {
|
|
17144
|
+
if (window.FpsHtml_API && window.FpsHtml_API[componentId]) {
|
|
17145
|
+
delete window.FpsHtml_API[componentId];
|
|
17146
|
+
}
|
|
17147
|
+
};
|
|
17148
|
+
}, [data, id, callEndpoint]);
|
|
17109
17149
|
const html = (data || {}).html || '';
|
|
17110
|
-
if (data && data.isHidden == 'true') {
|
|
17150
|
+
if (hidden || data && data.isHidden == 'true') {
|
|
17111
17151
|
return /*#__PURE__*/React__default.createElement("div", null);
|
|
17112
17152
|
}
|
|
17113
|
-
return /*#__PURE__*/React__default.createElement(
|
|
17153
|
+
return /*#__PURE__*/React__default.createElement("div", {
|
|
17154
|
+
ref: wrapperRef
|
|
17155
|
+
}, /*#__PURE__*/React__default.createElement(ComponentWrapper, null, /*#__PURE__*/React__default.createElement(Article, null, html && /*#__PURE__*/React__default.createElement(InnerHTML, {
|
|
17114
17156
|
key: renderKey,
|
|
17115
17157
|
allowRerender: true,
|
|
17116
17158
|
html: html
|
|
17117
|
-
})));
|
|
17159
|
+
}))));
|
|
17118
17160
|
}
|
|
17119
17161
|
FpsHtml.settings = {
|
|
17120
17162
|
icon: iconHtml,
|
|
17121
17163
|
name: "HTML code",
|
|
17122
17164
|
sysName: 'FpsHtml',
|
|
17123
17165
|
form: [{
|
|
17166
|
+
name: 'Comp ID',
|
|
17167
|
+
sysName: 'comp_ID',
|
|
17168
|
+
type: 'string'
|
|
17169
|
+
}, {
|
|
17124
17170
|
name: "Enter your HTML-code",
|
|
17125
17171
|
sysName: "html",
|
|
17126
17172
|
type: "html-SLenriched"
|
|
@@ -17162,6 +17208,10 @@ FpsMarkdown.settings = {
|
|
|
17162
17208
|
name: "Markdown text",
|
|
17163
17209
|
sysName: 'FpsMarkdown',
|
|
17164
17210
|
form: [{
|
|
17211
|
+
name: 'Comp ID',
|
|
17212
|
+
sysName: 'comp_ID',
|
|
17213
|
+
type: 'string'
|
|
17214
|
+
}, {
|
|
17165
17215
|
name: "Enter your text",
|
|
17166
17216
|
sysName: "markdown",
|
|
17167
17217
|
type: "markdown-SLenriched"
|
|
@@ -20070,13 +20120,19 @@ function FpsForm2(props) {
|
|
|
20070
20120
|
setExtendedModel(newExtendedModel);
|
|
20071
20121
|
let saveSate = _extends({}, stateRef.current);
|
|
20072
20122
|
const newModel = _extends({}, flatternModel(_extends({}, gatherDefaults(), _$1__default.get(data, "data[0]"), convertedDates, convertedBools)));
|
|
20073
|
-
if (!_$1__default.isEqual(newModel,
|
|
20123
|
+
if (!_$1__default.isEqual(newModel, originalModelRef.current)) {
|
|
20074
20124
|
submitDebouncedRef.current.cancel();
|
|
20075
|
-
|
|
20076
|
-
|
|
20077
|
-
|
|
20125
|
+
const userChangedFields = Object.keys(model).filter(key => !_$1__default.isEqual(model[key], originalModelRef.current[key]));
|
|
20126
|
+
const mergedModel = _extends({}, newModel);
|
|
20127
|
+
userChangedFields.forEach(key => {
|
|
20128
|
+
mergedModel[key] = model[key];
|
|
20129
|
+
});
|
|
20130
|
+
console.log('[SOCKET MODEL LOG] === СОКЕТ: ОБНОВЛЕНИЕ МОДЕЛИ ===');
|
|
20131
|
+
console.log('[SOCKET MODEL LOG] Серверная модель:', JSON.parse(JSON.stringify(newModel)));
|
|
20132
|
+
console.log('[SOCKET MODEL LOG] Изменённые пользователем поля (сохранены):', userChangedFields);
|
|
20133
|
+
console.log('[SOCKET MODEL LOG] Итоговая модель:', JSON.parse(JSON.stringify(mergedModel)));
|
|
20078
20134
|
isSocketUpdateRef.current = true;
|
|
20079
|
-
setModel(
|
|
20135
|
+
setModel(mergedModel);
|
|
20080
20136
|
setOriginalModel(newModel);
|
|
20081
20137
|
}
|
|
20082
20138
|
setOriginalExtendedModel(newExtendedModel);
|
|
@@ -26697,6 +26753,8 @@ function Comments(props) {
|
|
|
26697
26753
|
handleRoute
|
|
26698
26754
|
} = props;
|
|
26699
26755
|
const lang = locale ? locale.length == 3 ? locale : 'ENG' : 'ENG';
|
|
26756
|
+
const buttonTexts = _$1__default.get(data, "params.buttonTexts") || {};
|
|
26757
|
+
const t = (key, fallback) => buttonTexts[key] || fallback;
|
|
26700
26758
|
const [comments, setComments] = React.useState(_$1__default.get(data, "data") || []);
|
|
26701
26759
|
const [loading, setLoading] = React.useState(false);
|
|
26702
26760
|
const [error, setError] = React.useState('');
|
|
@@ -26749,9 +26807,10 @@ function Comments(props) {
|
|
|
26749
26807
|
return /*#__PURE__*/React__default.createElement("div", {
|
|
26750
26808
|
className: styles$N.comments + " FPS_COMMENTS"
|
|
26751
26809
|
}, /*#__PURE__*/React__default.createElement(CommentsHeader, _extends({
|
|
26752
|
-
header: dict[lang].comments.comments,
|
|
26810
|
+
header: t('headerText', dict[lang].comments.comments),
|
|
26753
26811
|
counter: (comments || []).length
|
|
26754
26812
|
}, props)), allowSend && /*#__PURE__*/React__default.createElement(AddComment, _extends({}, props, {
|
|
26813
|
+
t: t,
|
|
26755
26814
|
lang: lang,
|
|
26756
26815
|
loading: loading,
|
|
26757
26816
|
sendComment: sendComment,
|
|
@@ -26763,6 +26822,7 @@ function Comments(props) {
|
|
|
26763
26822
|
}, error), /*#__PURE__*/React__default.createElement("div", {
|
|
26764
26823
|
className: styles$N.commentsList
|
|
26765
26824
|
}, comments.filter(comment => !_$1__default.get(comment, _$1__default.get(data, "params._replyField")) || _$1__default.get(comment, _$1__default.get(data, "params._replyField")) == 'root').map(comment => /*#__PURE__*/React__default.createElement(Comment, _extends({}, props, {
|
|
26825
|
+
t: t,
|
|
26766
26826
|
sendComment: sendComment,
|
|
26767
26827
|
updateCommentText: updateCommentText,
|
|
26768
26828
|
lang: lang,
|
|
@@ -26786,7 +26846,8 @@ function Comment(props) {
|
|
|
26786
26846
|
allowSend,
|
|
26787
26847
|
allowEdit,
|
|
26788
26848
|
sendComment,
|
|
26789
|
-
updateCommentText
|
|
26849
|
+
updateCommentText,
|
|
26850
|
+
t
|
|
26790
26851
|
} = props;
|
|
26791
26852
|
const [addReply, setAddReply] = React.useState(false);
|
|
26792
26853
|
const [isEditing, setIsEditing] = React.useState(false);
|
|
@@ -26866,13 +26927,13 @@ function Comment(props) {
|
|
|
26866
26927
|
className: styles$N.commentWrapperAssignTo + " " + (isResoled ? styles$N.taskResolved : "") + " FPS_COMMENT_WRAPPER__ASSIGN"
|
|
26867
26928
|
}, isAssignedToMe ? /*#__PURE__*/React__default.createElement("span", null, dict[lang].comments.assignedToMe) : /*#__PURE__*/React__default.createElement("span", null, dict[lang].comments.assignedTo, " ", /*#__PURE__*/React__default.createElement("b", null, assigneName)), isResoled ? /*#__PURE__*/React__default.createElement("span", {
|
|
26868
26929
|
className: "icon icon-done"
|
|
26869
|
-
}, dict[lang].comments.taskResolved, " ", formatDate(resolvedDate, formatResolvedDate)) : isAssignedToMe ? /*#__PURE__*/React__default.createElement(Button, {
|
|
26930
|
+
}, t('taskResolvedText', dict[lang].comments.taskResolved), " ", formatDate(resolvedDate, formatResolvedDate)) : isAssignedToMe ? /*#__PURE__*/React__default.createElement(Button, {
|
|
26870
26931
|
loading: localLoading,
|
|
26871
26932
|
onClick: resolveTask,
|
|
26872
26933
|
small: true,
|
|
26873
26934
|
height: 32,
|
|
26874
26935
|
icon: "done"
|
|
26875
|
-
}, dict[lang].comments.resolveTask) : ''), /*#__PURE__*/React__default.createElement("div", {
|
|
26936
|
+
}, t('resolveTaskText', dict[lang].comments.resolveTask)) : ''), /*#__PURE__*/React__default.createElement("div", {
|
|
26876
26937
|
className: styles$N.commentBody
|
|
26877
26938
|
}, parent && /*#__PURE__*/React__default.createElement("div", {
|
|
26878
26939
|
className: styles$N.commentParent + " icon icon-arrowRight small"
|
|
@@ -26910,11 +26971,11 @@ function Comment(props) {
|
|
|
26910
26971
|
height: 32,
|
|
26911
26972
|
accent: true,
|
|
26912
26973
|
disabled: !editText
|
|
26913
|
-
}, dict[lang].comments.save), /*#__PURE__*/React__default.createElement(Button, {
|
|
26974
|
+
}, t('saveText', dict[lang].comments.save)), /*#__PURE__*/React__default.createElement(Button, {
|
|
26914
26975
|
onClick: cancelEdit,
|
|
26915
26976
|
small: true,
|
|
26916
26977
|
height: 32
|
|
26917
|
-
}, dict[lang].comments.cancel))) : /*#__PURE__*/React__default.createElement("div", {
|
|
26978
|
+
}, t('cancelText', dict[lang].comments.cancel)))) : /*#__PURE__*/React__default.createElement("div", {
|
|
26918
26979
|
className: styles$N.commentBodyText
|
|
26919
26980
|
}, commentText), commentAttachment && commentAttachment.length > 0 && commentAttachment.map(file => {
|
|
26920
26981
|
const fileName = file.split("/")[file.split("/").length - 1];
|
|
@@ -26930,10 +26991,10 @@ function Comment(props) {
|
|
|
26930
26991
|
}, _$1__default.includes(data.writeFields, _$1__default.get(data, "params._replyField")) && allowSend && /*#__PURE__*/React__default.createElement("div", {
|
|
26931
26992
|
onClick: e => setAddReply(true),
|
|
26932
26993
|
className: "icon icon-bubble small " + styles$N.commentReplyButton
|
|
26933
|
-
}, dict[lang].comments.reply), allowEdit && isAuthor && /*#__PURE__*/React__default.createElement("div", {
|
|
26994
|
+
}, t('replyText', dict[lang].comments.reply)), allowEdit && isAuthor && /*#__PURE__*/React__default.createElement("div", {
|
|
26934
26995
|
onClick: e => setIsEditing(true),
|
|
26935
26996
|
className: "icon icon-edit small " + styles$N.commentReplyButton
|
|
26936
|
-
}, dict[lang].comments.edit)))), addReply && /*#__PURE__*/React__default.createElement("div", {
|
|
26997
|
+
}, t('editText', dict[lang].comments.edit))))), addReply && /*#__PURE__*/React__default.createElement("div", {
|
|
26937
26998
|
className: styles$N.childComments
|
|
26938
26999
|
}, /*#__PURE__*/React__default.createElement(AddComment, _extends({}, props, {
|
|
26939
27000
|
parentID: commentID,
|
|
@@ -26971,7 +27032,8 @@ function AddComment(props) {
|
|
|
26971
27032
|
sendComment,
|
|
26972
27033
|
parentID,
|
|
26973
27034
|
data,
|
|
26974
|
-
loading
|
|
27035
|
+
loading,
|
|
27036
|
+
t
|
|
26975
27037
|
} = props;
|
|
26976
27038
|
const rolesExample = [{
|
|
26977
27039
|
key: 'admin',
|
|
@@ -27013,7 +27075,7 @@ function AddComment(props) {
|
|
|
27013
27075
|
bottom: 0
|
|
27014
27076
|
},
|
|
27015
27077
|
ok: true
|
|
27016
|
-
}, dict[lang].comments.submitted);
|
|
27078
|
+
}, t('submittedText', dict[lang].comments.submitted));
|
|
27017
27079
|
return /*#__PURE__*/React__default.createElement("div", {
|
|
27018
27080
|
className: styles$N.commentsAdd
|
|
27019
27081
|
}, /*#__PURE__*/React__default.createElement(Input, {
|
|
@@ -27022,7 +27084,7 @@ function AddComment(props) {
|
|
|
27022
27084
|
defaultValue: comment[_$1__default.get(data, "params._textField")],
|
|
27023
27085
|
onChange: setCommentField(_$1__default.get(data, "params._textField")),
|
|
27024
27086
|
rows: "auto",
|
|
27025
|
-
placeholder: dict[lang].comments.write
|
|
27087
|
+
placeholder: t('placeholderText', dict[lang].comments.write)
|
|
27026
27088
|
}), /*#__PURE__*/React__default.createElement("div", {
|
|
27027
27089
|
className: styles$N.commentsAdditionslControls
|
|
27028
27090
|
}, addFile && allowAttachment && /*#__PURE__*/React__default.createElement(FileUpload, {
|
|
@@ -27104,9 +27166,9 @@ function AddComment(props) {
|
|
|
27104
27166
|
accent: true,
|
|
27105
27167
|
icon: "bubble",
|
|
27106
27168
|
onClick: () => sendComment(comment, finish)
|
|
27107
|
-
}, dict[lang].comments.send), onCancel && /*#__PURE__*/React__default.createElement(Button, {
|
|
27169
|
+
}, t('sendText', dict[lang].comments.send)), onCancel && /*#__PURE__*/React__default.createElement(Button, {
|
|
27108
27170
|
onClick: onCancel
|
|
27109
|
-
}, dict[lang].comments.cancel)));
|
|
27171
|
+
}, t('cancelText', dict[lang].comments.cancel))));
|
|
27110
27172
|
}
|
|
27111
27173
|
Comments.propTypes = {
|
|
27112
27174
|
data: propTypes.object,
|