dinocollab-core 1.0.2 → 1.0.4
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/_virtual/_rollupPluginBabelHelpers.js +1 -487
- package/dist/_virtual/_rollupPluginBabelHelpers.js.map +1 -1
- package/dist/api-context/alert-global.js +1 -165
- package/dist/api-context/alert-global.js.map +1 -1
- package/dist/api-context/drawer-global.js +1 -111
- package/dist/api-context/drawer-global.js.map +1 -1
- package/dist/api-context/global-modal.js +1 -94
- package/dist/api-context/global-modal.js.map +1 -1
- package/dist/api-context/popover-global.js +1 -109
- package/dist/api-context/popover-global.js.map +1 -1
- package/dist/api-context/popover.js +1 -93
- package/dist/api-context/popover.js.map +1 -1
- package/dist/api-context/ui.units.js +1 -22
- package/dist/api-context/ui.units.js.map +1 -1
- package/dist/components/breadcrumbs.js +1 -64
- package/dist/components/breadcrumbs.js.map +1 -1
- package/dist/components/copy-to-clipboard.js +1 -111
- package/dist/components/copy-to-clipboard.js.map +1 -1
- package/dist/components/help-tooltip.js +1 -103
- package/dist/components/help-tooltip.js.map +1 -1
- package/dist/components/image-with-fallback.js +1 -50
- package/dist/components/image-with-fallback.js.map +1 -1
- package/dist/components/text-editor.js +1 -117
- package/dist/components/text-editor.js.map +1 -1
- package/dist/components/text-editor.preview.js +1 -26
- package/dist/components/text-editor.preview.js.map +1 -1
- package/dist/form/create.autocomplete.chips.js +1 -227
- package/dist/form/create.autocomplete.chips.js.map +1 -1
- package/dist/form/create.date-expired.js +1 -210
- package/dist/form/create.date-expired.js.map +1 -1
- package/dist/form/create.date-picker.js +1 -127
- package/dist/form/create.date-picker.js.map +1 -1
- package/dist/form/create.form-base.js +1 -140
- package/dist/form/create.form-base.js.map +1 -1
- package/dist/form/create.form-comfirm.js +1 -130
- package/dist/form/create.form-comfirm.js.map +1 -1
- package/dist/form/create.form-grid-layout.js +1 -187
- package/dist/form/create.form-grid-layout.js.map +1 -1
- package/dist/form/create.form-grid-layout.units.js +1 -41
- package/dist/form/create.form-grid-layout.units.js.map +1 -1
- package/dist/form/create.input.file.js +1 -78
- package/dist/form/create.input.file.js.map +1 -1
- package/dist/form/create.input.js +1 -275
- package/dist/form/create.input.js.map +1 -1
- package/dist/form/create.select-simple.js +1 -113
- package/dist/form/create.select-simple.js.map +1 -1
- package/dist/form/create.select-with-api.js +1 -276
- package/dist/form/create.select-with-api.js.map +1 -1
- package/dist/form/create.text-editor.js +1 -180
- package/dist/form/create.text-editor.js.map +1 -1
- package/dist/form/dino-form.js +1 -40
- package/dist/form/dino-form.js.map +1 -1
- package/dist/form/helper.js +1 -156
- package/dist/form/helper.js.map +1 -1
- package/dist/form/modal-wrapper.js +1 -81
- package/dist/form/modal-wrapper.js.map +1 -1
- package/dist/form/validator.js +1 -189
- package/dist/form/validator.js.map +1 -1
- package/dist/hooks/index.js +1 -47
- package/dist/hooks/index.js.map +1 -1
- package/dist/index.js +1 -32
- package/dist/index.js.map +1 -1
- package/dist/redux/create.hoc-lazy.js +1 -70
- package/dist/redux/create.hoc-lazy.js.map +1 -1
- package/dist/redux/dino.js +1 -10
- package/dist/redux/dino.js.map +1 -1
- package/dist/redux/types.js +1 -8
- package/dist/redux/types.js.map +1 -1
- package/dist/redux/ui.error-page.js +1 -88
- package/dist/redux/ui.error-page.js.map +1 -1
- package/dist/redux/vector-404.webp.js +1 -3
- package/dist/redux/vector-404.webp.js.map +1 -1
- package/dist/table/context.js +1 -14
- package/dist/table/context.js.map +1 -1
- package/dist/table/create.action-row.js +1 -143
- package/dist/table/create.action-row.js.map +1 -1
- package/dist/table/create.table.js +1 -245
- package/dist/table/create.table.js.map +1 -1
- package/dist/table/custom.filter-operators.js +1 -88
- package/dist/table/custom.filter-operators.js.map +1 -1
- package/dist/table/dino.js +1 -135
- package/dist/table/dino.js.map +1 -1
- package/dist/table/helpers.js +1 -114
- package/dist/table/helpers.js.map +1 -1
- package/dist/table/model-filter.js +1 -22
- package/dist/table/model-filter.js.map +1 -1
- package/dist/table/toolbar-pannel.js +1 -142
- package/dist/table/toolbar-pannel.js.map +1 -1
- package/dist/table/ui.buttons.js +1 -66
- package/dist/table/ui.buttons.js.map +1 -1
- package/dist/table/ui.units.js +1 -247
- package/dist/table/ui.units.js.map +1 -1
- package/dist/utils/dayjs-config.js +1 -11
- package/dist/utils/dayjs-config.js.map +1 -1
- package/dist/utils/helpers.js +1 -198
- package/dist/utils/helpers.js.map +1 -1
- package/dist/utils/json-object.js +1 -37
- package/dist/utils/json-object.js.map +1 -1
- package/dist/utils/query-param.js +1 -171
- package/dist/utils/query-param.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,118 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
|
-
import { Component } from 'react';
|
|
4
|
-
import { styled, Box } from '@mui/material';
|
|
5
|
-
import ReactQuill from 'react-quill';
|
|
6
|
-
import 'react-quill/dist/quill.snow.css';
|
|
7
|
-
|
|
8
|
-
var textEditorClasses = {
|
|
9
|
-
root: 'DinoTextEditor-root',
|
|
10
|
-
fullscreen: 'DinoTextEditor-fullscreen'
|
|
11
|
-
};
|
|
12
|
-
var EditorToolbar = {};
|
|
13
|
-
EditorToolbar.formats = ['header', 'bold', 'italic', 'underline', 'strike', 'blockquote', 'list', 'bullet', 'indent', 'link', 'image', 'align', 'color', 'background'];
|
|
14
|
-
EditorToolbar.modules = {
|
|
15
|
-
toolbar: [[{
|
|
16
|
-
header: [1, 2, 3, 4, 5, 6, false]
|
|
17
|
-
}], ['bold', 'italic', 'underline', 'strike', 'blockquote'], [{
|
|
18
|
-
align: ''
|
|
19
|
-
}, {
|
|
20
|
-
align: 'center'
|
|
21
|
-
}, {
|
|
22
|
-
align: 'right'
|
|
23
|
-
}, {
|
|
24
|
-
align: 'justify'
|
|
25
|
-
}], [{
|
|
26
|
-
list: 'ordered'
|
|
27
|
-
}, {
|
|
28
|
-
list: 'bullet'
|
|
29
|
-
}, {
|
|
30
|
-
indent: '-1'
|
|
31
|
-
}, {
|
|
32
|
-
indent: '+1'
|
|
33
|
-
}], [{
|
|
34
|
-
color: []
|
|
35
|
-
}, {
|
|
36
|
-
background: []
|
|
37
|
-
}], ['link', 'image'], ['clean']]
|
|
38
|
-
};
|
|
39
|
-
var TextEditor = /*#__PURE__*/function (_Component) {
|
|
40
|
-
function TextEditor(props) {
|
|
41
|
-
var _props$defautValue;
|
|
42
|
-
var _this;
|
|
43
|
-
_classCallCheck(this, TextEditor);
|
|
44
|
-
_this = _callSuper(this, TextEditor, [props]);
|
|
45
|
-
_defineProperty(_this, "handleChange", function (value) {
|
|
46
|
-
var str = value;
|
|
47
|
-
if (value === '<p><br></p>') str = '';
|
|
48
|
-
_this.setState({
|
|
49
|
-
value: str
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
_defineProperty(_this, "id", 0);
|
|
53
|
-
_this.state = {
|
|
54
|
-
value: (_props$defautValue = props.defautValue) !== null && _props$defautValue !== void 0 ? _props$defautValue : ''
|
|
55
|
-
};
|
|
56
|
-
return _this;
|
|
57
|
-
}
|
|
58
|
-
_inherits(TextEditor, _Component);
|
|
59
|
-
return _createClass(TextEditor, [{
|
|
60
|
-
key: "render",
|
|
61
|
-
value: function render() {
|
|
62
|
-
var classes = [textEditorClasses.root];
|
|
63
|
-
if (this.props.error) classes.push('error');
|
|
64
|
-
return jsxs(Wrapper, {
|
|
65
|
-
id: this.props.id,
|
|
66
|
-
sx: this.props.sx,
|
|
67
|
-
className: classes.join(' '),
|
|
68
|
-
children: [!this.props.readOnly && jsx("input", {
|
|
69
|
-
name: this.props.name,
|
|
70
|
-
defaultValue: this.state.value,
|
|
71
|
-
hidden: true
|
|
72
|
-
}, ++this.id), jsx(ReactQuill, {
|
|
73
|
-
readOnly: this.props.readOnly,
|
|
74
|
-
placeholder: 'Enter the message',
|
|
75
|
-
value: this.state.value,
|
|
76
|
-
modules: EditorToolbar.modules,
|
|
77
|
-
formats: EditorToolbar.formats,
|
|
78
|
-
onChange: this.handleChange,
|
|
79
|
-
onBlur: this.props.onBlur
|
|
80
|
-
})]
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
}]);
|
|
84
|
-
}(Component);
|
|
85
|
-
var borderColor = '#d32f2f';
|
|
86
|
-
var Wrapper = styled(Box)({
|
|
87
|
-
margin: 0,
|
|
88
|
-
minHeight: '450px',
|
|
89
|
-
display: 'flex',
|
|
90
|
-
'& .quill': {
|
|
91
|
-
flex: 1
|
|
92
|
-
},
|
|
93
|
-
'& .ql-container': {
|
|
94
|
-
height: 'calc(100% - 42px)',
|
|
95
|
-
borderBottomLeftRadius: '6px',
|
|
96
|
-
borderBottomRightRadius: '6px'
|
|
97
|
-
},
|
|
98
|
-
'& .ql-toolbar': {
|
|
99
|
-
borderTopLeftRadius: '6px',
|
|
100
|
-
borderTopRightRadius: '6px'
|
|
101
|
-
},
|
|
102
|
-
'&.error .ql-toolbar': {
|
|
103
|
-
borderTopColor: borderColor,
|
|
104
|
-
borderLeftColor: borderColor,
|
|
105
|
-
borderRightColor: borderColor
|
|
106
|
-
},
|
|
107
|
-
'&.error .ql-container': {
|
|
108
|
-
borderBottomColor: borderColor,
|
|
109
|
-
borderLeftColor: borderColor,
|
|
110
|
-
borderRightColor: borderColor
|
|
111
|
-
},
|
|
112
|
-
'&.error .ql-editor.ql-blank::before': {
|
|
113
|
-
color: borderColor
|
|
114
|
-
}
|
|
115
|
-
});
|
|
116
|
-
|
|
117
|
-
export { TextEditor as default, textEditorClasses };
|
|
1
|
+
import{inherits as r,createClass as e,classCallCheck as o,callSuper as t,defineProperty as l}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as i,jsx as a}from"react/jsx-runtime";import{Component as n}from"react";import{styled as s,Box as d}from"@mui/material";import u from"react-quill";import"react-quill/dist/quill.snow.css";var p={root:"DinoTextEditor-root",fullscreen:"DinoTextEditor-fullscreen"},h={formats:["header","bold","italic","underline","strike","blockquote","list","bullet","indent","link","image","align","color","background"],modules:{toolbar:[[{header:[1,2,3,4,5,6,!1]}],["bold","italic","underline","strike","blockquote"],[{align:""},{align:"center"},{align:"right"},{align:"justify"}],[{list:"ordered"},{list:"bullet"},{indent:"-1"},{indent:"+1"}],[{color:[]},{background:[]}],["link","image"],["clean"]]}},c=function(){function s(r){var e,i;return o(this,s),i=t(this,s,[r]),l(i,"handleChange",(function(r){var e=r;"<p><br></p>"===r&&(e=""),i.setState({value:e})})),l(i,"id",0),i.state={value:null!==(e=r.defautValue)&&void 0!==e?e:""},i}return r(s,n),e(s,[{key:"render",value:function(){var r=[p.root];return this.props.error&&r.push("error"),i(f,{id:this.props.id,sx:this.props.sx,className:r.join(" "),children:[!this.props.readOnly&&a("input",{name:this.props.name,defaultValue:this.state.value,hidden:!0},++this.id),a(u,{readOnly:this.props.readOnly,placeholder:"Enter the message",value:this.state.value,modules:h.modules,formats:h.formats,onChange:this.handleChange,onBlur:this.props.onBlur})]})}}])}(),m="#d32f2f",f=s(d)({margin:0,minHeight:"450px",display:"flex","& .quill":{flex:1},"& .ql-container":{height:"calc(100% - 42px)",borderBottomLeftRadius:"6px",borderBottomRightRadius:"6px"},"& .ql-toolbar":{borderTopLeftRadius:"6px",borderTopRightRadius:"6px"},"&.error .ql-toolbar":{borderTopColor:m,borderLeftColor:m,borderRightColor:m},"&.error .ql-container":{borderBottomColor:m,borderLeftColor:m,borderRightColor:m},"&.error .ql-editor.ql-blank::before":{color:m}});export{c as default,p as textEditorClasses};
|
|
118
2
|
//# sourceMappingURL=text-editor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text-editor.js","sources":["../../src/components/text-editor.tsx"],"sourcesContent":["// /* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport React, { Component } from 'react'\r\nimport { Box, styled, SxProps, Theme } from '@mui/material'\r\n/**\r\n * yarn add react-quill@2.0.0\r\n */\r\nimport ReactQuill from 'react-quill'\r\nimport 'react-quill/dist/quill.snow.css'\r\n\r\nexport const textEditorClasses = {\r\n root: 'DinoTextEditor-root',\r\n fullscreen: 'DinoTextEditor-fullscreen'\r\n}\r\n\r\nconst EditorToolbar: any = {}\r\n\r\nEditorToolbar.formats = [\r\n 'header',\r\n 'bold',\r\n 'italic',\r\n 'underline',\r\n 'strike',\r\n 'blockquote',\r\n 'list',\r\n 'bullet',\r\n 'indent',\r\n 'link',\r\n 'image',\r\n 'align',\r\n 'color',\r\n 'background'\r\n]\r\n\r\nEditorToolbar.modules = {\r\n toolbar: [\r\n [{ header: [1, 2, 3, 4, 5, 6, false] }],\r\n ['bold', 'italic', 'underline', 'strike', 'blockquote'],\r\n [{ align: '' }, { align: 'center' }, { align: 'right' }, { align: 'justify' }],\r\n [{ list: 'ordered' }, { list: 'bullet' }, { indent: '-1' }, { indent: '+1' }],\r\n [{ color: [] }, { background: [] }],\r\n ['link', 'image'],\r\n ['clean']\r\n ]\r\n}\r\n\r\nexport interface ITextEditorProps {\r\n id?: string\r\n name: string\r\n sx?: SxProps<Theme>\r\n readOnly?: boolean\r\n defautValue?: string\r\n error?: boolean\r\n onBlur?: () => void\r\n}\r\n\r\nexport interface ITextEditorState {\r\n value: string\r\n}\r\n\r\nclass TextEditor extends Component<ITextEditorProps, ITextEditorState> {\r\n constructor(props: ITextEditorProps) {\r\n super(props)\r\n this.state = { value: props.defautValue ?? '' }\r\n }\r\n handleChange = (value: string) => {\r\n let str = value\r\n if (value === '<p><br></p>') str = ''\r\n this.setState({ value: str })\r\n }\r\n\r\n id = 0\r\n render() {\r\n const classes = [textEditorClasses.root]\r\n if (this.props.error) classes.push('error')\r\n return (\r\n <Wrapper id={this.props.id} sx={this.props.sx} className={classes.join(' ')}>\r\n {!this.props.readOnly && <input key={++this.id} name={this.props.name} defaultValue={this.state.value} hidden />}\r\n <ReactQuill\r\n readOnly={this.props.readOnly}\r\n placeholder='Enter the message'\r\n value={this.state.value}\r\n modules={EditorToolbar.modules}\r\n formats={EditorToolbar.formats}\r\n onChange={this.handleChange}\r\n onBlur={this.props.onBlur}\r\n />\r\n </Wrapper>\r\n )\r\n }\r\n}\r\n\r\nexport default TextEditor\r\n\r\nconst borderColor = '#d32f2f'\r\n\r\nconst Wrapper = styled(Box)({\r\n margin: 0,\r\n minHeight: '450px',\r\n display: 'flex',\r\n '& .quill': { flex: 1 },\r\n '& .ql-container': {\r\n height: 'calc(100% - 42px)',\r\n borderBottomLeftRadius: '6px',\r\n borderBottomRightRadius: '6px'\r\n },\r\n '& .ql-toolbar': {\r\n borderTopLeftRadius: '6px',\r\n borderTopRightRadius: '6px'\r\n },\r\n '&.error .ql-toolbar': {\r\n borderTopColor: borderColor,\r\n borderLeftColor: borderColor,\r\n borderRightColor: borderColor\r\n },\r\n '&.error .ql-container': {\r\n borderBottomColor: borderColor,\r\n borderLeftColor: borderColor,\r\n borderRightColor: borderColor\r\n },\r\n '&.error .ql-editor.ql-blank::before': {\r\n color: borderColor\r\n }\r\n})\r\n"],"names":["textEditorClasses","root","fullscreen","EditorToolbar","
|
|
1
|
+
{"version":3,"file":"text-editor.js","sources":["../../src/components/text-editor.tsx"],"sourcesContent":["// /* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport React, { Component } from 'react'\r\nimport { Box, styled, SxProps, Theme } from '@mui/material'\r\n/**\r\n * yarn add react-quill@2.0.0\r\n */\r\nimport ReactQuill from 'react-quill'\r\nimport 'react-quill/dist/quill.snow.css'\r\n\r\nexport const textEditorClasses = {\r\n root: 'DinoTextEditor-root',\r\n fullscreen: 'DinoTextEditor-fullscreen'\r\n}\r\n\r\nconst EditorToolbar: any = {}\r\n\r\nEditorToolbar.formats = [\r\n 'header',\r\n 'bold',\r\n 'italic',\r\n 'underline',\r\n 'strike',\r\n 'blockquote',\r\n 'list',\r\n 'bullet',\r\n 'indent',\r\n 'link',\r\n 'image',\r\n 'align',\r\n 'color',\r\n 'background'\r\n]\r\n\r\nEditorToolbar.modules = {\r\n toolbar: [\r\n [{ header: [1, 2, 3, 4, 5, 6, false] }],\r\n ['bold', 'italic', 'underline', 'strike', 'blockquote'],\r\n [{ align: '' }, { align: 'center' }, { align: 'right' }, { align: 'justify' }],\r\n [{ list: 'ordered' }, { list: 'bullet' }, { indent: '-1' }, { indent: '+1' }],\r\n [{ color: [] }, { background: [] }],\r\n ['link', 'image'],\r\n ['clean']\r\n ]\r\n}\r\n\r\nexport interface ITextEditorProps {\r\n id?: string\r\n name: string\r\n sx?: SxProps<Theme>\r\n readOnly?: boolean\r\n defautValue?: string\r\n error?: boolean\r\n onBlur?: () => void\r\n}\r\n\r\nexport interface ITextEditorState {\r\n value: string\r\n}\r\n\r\nclass TextEditor extends Component<ITextEditorProps, ITextEditorState> {\r\n constructor(props: ITextEditorProps) {\r\n super(props)\r\n this.state = { value: props.defautValue ?? '' }\r\n }\r\n handleChange = (value: string) => {\r\n let str = value\r\n if (value === '<p><br></p>') str = ''\r\n this.setState({ value: str })\r\n }\r\n\r\n id = 0\r\n render() {\r\n const classes = [textEditorClasses.root]\r\n if (this.props.error) classes.push('error')\r\n return (\r\n <Wrapper id={this.props.id} sx={this.props.sx} className={classes.join(' ')}>\r\n {!this.props.readOnly && <input key={++this.id} name={this.props.name} defaultValue={this.state.value} hidden />}\r\n <ReactQuill\r\n readOnly={this.props.readOnly}\r\n placeholder='Enter the message'\r\n value={this.state.value}\r\n modules={EditorToolbar.modules}\r\n formats={EditorToolbar.formats}\r\n onChange={this.handleChange}\r\n onBlur={this.props.onBlur}\r\n />\r\n </Wrapper>\r\n )\r\n }\r\n}\r\n\r\nexport default TextEditor\r\n\r\nconst borderColor = '#d32f2f'\r\n\r\nconst Wrapper = styled(Box)({\r\n margin: 0,\r\n minHeight: '450px',\r\n display: 'flex',\r\n '& .quill': { flex: 1 },\r\n '& .ql-container': {\r\n height: 'calc(100% - 42px)',\r\n borderBottomLeftRadius: '6px',\r\n borderBottomRightRadius: '6px'\r\n },\r\n '& .ql-toolbar': {\r\n borderTopLeftRadius: '6px',\r\n borderTopRightRadius: '6px'\r\n },\r\n '&.error .ql-toolbar': {\r\n borderTopColor: borderColor,\r\n borderLeftColor: borderColor,\r\n borderRightColor: borderColor\r\n },\r\n '&.error .ql-container': {\r\n borderBottomColor: borderColor,\r\n borderLeftColor: borderColor,\r\n borderRightColor: borderColor\r\n },\r\n '&.error .ql-editor.ql-blank::before': {\r\n color: borderColor\r\n }\r\n})\r\n"],"names":["textEditorClasses","root","fullscreen","EditorToolbar","toolbar","header","align","list","indent","color","background","TextEditor","props","_props$defautValue","_this","_classCallCheck","_callSuper","_defineProperty","value","str","setState","state","defautValue","_inherits","Component","_createClass","key","classes","this","error","push","_jsxs","Wrapper","id","sx","className","join","children","readOnly","_jsx","name","defaultValue","hidden","ReactQuill","placeholder","modules","formats","onChange","handleChange","onBlur","borderColor","styled","Box","margin","minHeight","display","flex","height","borderBottomLeftRadius","borderBottomRightRadius","borderTopLeftRadius","borderTopRightRadius","borderTopColor","borderLeftColor","borderRightColor","borderBottomColor"],"mappings":"mVASO,IAAMA,EAAoB,CAC/BC,KAAM,sBACNC,WAAY,6BAGRC,EAAqB,CAE3BA,QAAwB,CACtB,SACA,OACA,SACA,YACA,SACA,aACA,OACA,SACA,SACA,OACA,QACA,QACA,QACA,cAGFA,QAAwB,CACtBC,QAAS,CACP,CAAC,CAAEC,OAAQ,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAG,KAC9B,CAAC,OAAQ,SAAU,YAAa,SAAU,cAC1C,CAAC,CAAEC,MAAO,IAAM,CAAEA,MAAO,UAAY,CAAEA,MAAO,SAAW,CAAEA,MAAO,YAClE,CAAC,CAAEC,KAAM,WAAa,CAAEA,KAAM,UAAY,CAAEC,OAAQ,MAAQ,CAAEA,OAAQ,OACtE,CAAC,CAAEC,MAAO,IAAM,CAAEC,WAAY,KAC9B,CAAC,OAAQ,SACT,CAAC,YAkBCC,aACJ,SAAAA,EAAYC,GAAuB,IAAAC,EAAAC,EAEc,OAFdC,OAAAJ,GACjCG,EAAAE,EAAAL,KAAAA,GAAMC,IAAMK,EAAAH,EAGC,gBAAA,SAACI,GACd,IAAIC,EAAMD,EACI,gBAAVA,IAAyBC,EAAM,IACnCL,EAAKM,SAAS,CAAEF,MAAOC,OACxBF,EAAAH,EAAA,KAEI,GARHA,EAAKO,MAAQ,CAAEH,MAAwBL,QAAnBA,EAAED,EAAMU,mBAAWT,IAAAA,EAAAA,EAAI,IAAIC,CACjD,CAAC,OAAAS,EAAAZ,EAJsBa,GAItBC,EAAAd,EAAA,CAAA,CAAAe,IAAA,SAAAR,MAQD,WACE,IAAMS,EAAU,CAAC3B,EAAkBC,MAEnC,OADI2B,KAAKhB,MAAMiB,OAAOF,EAAQG,KAAK,SAEjCC,EAACC,EAAQ,CAAAC,GAAIL,KAAKhB,MAAMqB,GAAIC,GAAIN,KAAKhB,MAAMsB,GAAIC,UAAWR,EAAQS,KAAK,KACpEC,SAAA,EAACT,KAAKhB,MAAM0B,UAAYC,EAAA,QAAA,CAAuBC,KAAMZ,KAAKhB,MAAM4B,KAAMC,aAAcb,KAAKP,MAAMH,MAAOwB,QAAlE,KAAEd,KAAKK,IAC5CM,EAACI,GACCL,SAAUV,KAAKhB,MAAM0B,SACrBM,YAAY,oBACZ1B,MAAOU,KAAKP,MAAMH,MAClB2B,QAAS1C,EAAc0C,QACvBC,QAAS3C,EAAc2C,QACvBC,SAAUnB,KAAKoB,aACfC,OAAQrB,KAAKhB,MAAMqC,WAI3B,IAAC,IAKGC,EAAc,UAEdlB,EAAUmB,EAAOC,EAAPD,CAAY,CAC1BE,OAAQ,EACRC,UAAW,QACXC,QAAS,OACT,WAAY,CAAEC,KAAM,GACpB,kBAAmB,CACjBC,OAAQ,oBACRC,uBAAwB,MACxBC,wBAAyB,OAE3B,gBAAiB,CACfC,oBAAqB,MACrBC,qBAAsB,OAExB,sBAAuB,CACrBC,eAAgBZ,EAChBa,gBAAiBb,EACjBc,iBAAkBd,GAEpB,wBAAyB,CACvBe,kBAAmBf,EACnBa,gBAAiBb,EACjBc,iBAAkBd,GAEpB,sCAAuC,CACrCzC,MAAOyC"}
|
|
@@ -1,27 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
import React from 'react';
|
|
3
|
-
|
|
4
|
-
var TextEditorPreview = function TextEditorPreview(props) {
|
|
5
|
-
var contentRef = React.useRef(null);
|
|
6
|
-
React.useEffect(function () {
|
|
7
|
-
// Lấy phần tử template
|
|
8
|
-
var template = document.createElement('template');
|
|
9
|
-
template.innerHTML = "\n <link rel=\"stylesheet\" href=\"css/quill.snow.css\">\n <div class='ql-editor'>".concat(props.children, "</div>\n ");
|
|
10
|
-
// Tạo shadow DOM và chèn nội dung từ template
|
|
11
|
-
if (contentRef.current) {
|
|
12
|
-
var shadowRoot = contentRef.current.shadowRoot || contentRef.current.attachShadow({
|
|
13
|
-
mode: 'open'
|
|
14
|
-
});
|
|
15
|
-
shadowRoot.innerHTML = ''; // Reset nội dung cũ
|
|
16
|
-
shadowRoot.appendChild(template.content.cloneNode(true));
|
|
17
|
-
}
|
|
18
|
-
}, [props.children]);
|
|
19
|
-
return jsx(Fragment, {
|
|
20
|
-
children: jsx("div", {
|
|
21
|
-
ref: contentRef
|
|
22
|
-
})
|
|
23
|
-
});
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
export { TextEditorPreview as default };
|
|
1
|
+
import{jsx as e,Fragment as n}from"react/jsx-runtime";import r from"react";var t=function(t){var c=r.useRef(null);return r.useEffect((function(){var e=document.createElement("template");if(e.innerHTML='\n <link rel="stylesheet" href="css/quill.snow.css">\n <div class=\'ql-editor\'>'.concat(t.children,"</div>\n "),c.current){var n=c.current.shadowRoot||c.current.attachShadow({mode:"open"});n.innerHTML="",n.appendChild(e.content.cloneNode(!0))}}),[t.children]),e(n,{children:e("div",{ref:c})})};export{t as default};
|
|
27
2
|
//# sourceMappingURL=text-editor.preview.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text-editor.preview.js","sources":["../../src/components/text-editor.preview.tsx"],"sourcesContent":["import React, { FC } from 'react'\r\n\r\nconst TextEditorPreview: FC<{ children: string }> = (props) => {\r\n const contentRef = React.useRef<HTMLDivElement | null>(null)\r\n\r\n React.useEffect(() => {\r\n // Lấy phần tử template\r\n const template = document.createElement('template')\r\n template.innerHTML = `\r\n <link rel=\"stylesheet\" href=\"css/quill.snow.css\">\r\n <div class='ql-editor'>${props.children}</div>\r\n `\r\n\r\n // Tạo shadow DOM và chèn nội dung từ template\r\n if (contentRef.current) {\r\n const shadowRoot = contentRef.current.shadowRoot || contentRef.current.attachShadow({ mode: 'open' })\r\n\r\n shadowRoot.innerHTML = '' // Reset nội dung cũ\r\n shadowRoot.appendChild(template.content.cloneNode(true))\r\n }\r\n }, [props.children])\r\n\r\n return (\r\n <>\r\n <div ref={contentRef}></div>\r\n </>\r\n )\r\n}\r\n\r\nexport default TextEditorPreview\r\n"],"names":["TextEditorPreview","props","contentRef","React","useRef","useEffect","template","document","createElement","innerHTML","concat","children","current","shadowRoot","attachShadow","mode","appendChild","content","cloneNode","_jsx","ref"],"mappings":"
|
|
1
|
+
{"version":3,"file":"text-editor.preview.js","sources":["../../src/components/text-editor.preview.tsx"],"sourcesContent":["import React, { FC } from 'react'\r\n\r\nconst TextEditorPreview: FC<{ children: string }> = (props) => {\r\n const contentRef = React.useRef<HTMLDivElement | null>(null)\r\n\r\n React.useEffect(() => {\r\n // Lấy phần tử template\r\n const template = document.createElement('template')\r\n template.innerHTML = `\r\n <link rel=\"stylesheet\" href=\"css/quill.snow.css\">\r\n <div class='ql-editor'>${props.children}</div>\r\n `\r\n\r\n // Tạo shadow DOM và chèn nội dung từ template\r\n if (contentRef.current) {\r\n const shadowRoot = contentRef.current.shadowRoot || contentRef.current.attachShadow({ mode: 'open' })\r\n\r\n shadowRoot.innerHTML = '' // Reset nội dung cũ\r\n shadowRoot.appendChild(template.content.cloneNode(true))\r\n }\r\n }, [props.children])\r\n\r\n return (\r\n <>\r\n <div ref={contentRef}></div>\r\n </>\r\n )\r\n}\r\n\r\nexport default TextEditorPreview\r\n"],"names":["TextEditorPreview","props","contentRef","React","useRef","useEffect","template","document","createElement","innerHTML","concat","children","current","shadowRoot","attachShadow","mode","appendChild","content","cloneNode","_jsx","ref"],"mappings":"2EAEA,IAAMA,EAA8C,SAACC,GACnD,IAAMC,EAAaC,EAAMC,OAA8B,MAmBvD,OAjBAD,EAAME,WAAU,WAEd,IAAMC,EAAWC,SAASC,cAAc,YAOxC,GANAF,EAASG,UAASC,6FAAAA,OAEST,EAAMU,SAChC,gBAGGT,EAAWU,QAAS,CACtB,IAAMC,EAAaX,EAAWU,QAAQC,YAAcX,EAAWU,QAAQE,aAAa,CAAEC,KAAM,SAE5FF,EAAWJ,UAAY,GACvBI,EAAWG,YAAYV,EAASW,QAAQC,WAAU,GACnD,CACH,GAAG,CAACjB,EAAMU,WAGRQ,cACEA,EAAK,MAAA,CAAAC,IAAKlB,KAGhB"}
|
|
@@ -1,228 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
3
|
-
import { createElement, Component } from 'react';
|
|
4
|
-
import { styled, Autocomplete, TextField, Chip, Typography, Tooltip, IconButton } from '@mui/material';
|
|
5
|
-
import RemoveIcon from '@mui/icons-material/Remove';
|
|
6
|
-
import { getErrorMessage } from './helper.js';
|
|
7
|
-
|
|
8
|
-
var _AutocompleteChipStore;
|
|
9
|
-
function CreateAutocompleteChip(params) {
|
|
10
|
-
var separator = (params === null || params === void 0 ? void 0 : params.separator) || '|';
|
|
11
|
-
var limitTags = (params === null || params === void 0 ? void 0 : params.limitTags) || 2;
|
|
12
|
-
var storeItems = params !== null && params !== void 0 && params.saveLocalStorageByKey ? AutocompleteChipStore.initial(params.saveLocalStorageByKey) : undefined;
|
|
13
|
-
var AutocompleteChip = /*#__PURE__*/function (_Component) {
|
|
14
|
-
function AutocompleteChip(props) {
|
|
15
|
-
var _this;
|
|
16
|
-
_classCallCheck(this, AutocompleteChip);
|
|
17
|
-
_this = _callSuper(this, AutocompleteChip, [props]);
|
|
18
|
-
_defineProperty(_this, "refInput", null);
|
|
19
|
-
_defineProperty(_this, "handleRemoveItem", function (e, value) {
|
|
20
|
-
var _storeItems$delete;
|
|
21
|
-
e.preventDefault();
|
|
22
|
-
e.stopPropagation();
|
|
23
|
-
console.log(value);
|
|
24
|
-
var list = (_storeItems$delete = storeItems === null || storeItems === void 0 ? void 0 : storeItems["delete"](value)) !== null && _storeItems$delete !== void 0 ? _storeItems$delete : [];
|
|
25
|
-
_this.setState({
|
|
26
|
-
options: list
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
_defineProperty(_this, "handleAddOption", function (_, newValue) {
|
|
30
|
-
if (params !== null && params !== void 0 && params.saveLocalStorageByKey) {
|
|
31
|
-
var _storeItems$setItems;
|
|
32
|
-
var options = (_storeItems$setItems = storeItems === null || storeItems === void 0 ? void 0 : storeItems.setItems(_this.state.options, newValue)) !== null && _storeItems$setItems !== void 0 ? _storeItems$setItems : _this.state.options;
|
|
33
|
-
_this.setState({
|
|
34
|
-
value: newValue,
|
|
35
|
-
options: options
|
|
36
|
-
});
|
|
37
|
-
} else {
|
|
38
|
-
_this.setState({
|
|
39
|
-
value: newValue
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
if (_this.refInput) {
|
|
43
|
-
_this.refInput.value = newValue.join(separator);
|
|
44
|
-
}
|
|
45
|
-
_this.props.name && _this.props.onBlur && _this.props.onBlur(_this.props.name);
|
|
46
|
-
});
|
|
47
|
-
_defineProperty(_this, "isBtnRemoveOption", function (value) {
|
|
48
|
-
var _ref, _params$optionItems, _this$props$slots;
|
|
49
|
-
var isSelectedOption = _this.state.value.findIndex(function (x) {
|
|
50
|
-
return x === value;
|
|
51
|
-
}) < 0;
|
|
52
|
-
var selectOptions = (_ref = (_params$optionItems = params === null || params === void 0 ? void 0 : params.optionItems) !== null && _params$optionItems !== void 0 ? _params$optionItems : (_this$props$slots = _this.props.slots) === null || _this$props$slots === void 0 ? void 0 : _this$props$slots.optionItems) !== null && _ref !== void 0 ? _ref : [];
|
|
53
|
-
var isDefault = selectOptions.findIndex(function (x) {
|
|
54
|
-
return x === value;
|
|
55
|
-
}) < 0;
|
|
56
|
-
return isDefault && isSelectedOption;
|
|
57
|
-
});
|
|
58
|
-
_defineProperty(_this, "getSelectOptions", function () {
|
|
59
|
-
var _params$optionItems2;
|
|
60
|
-
var items = (_params$optionItems2 = params === null || params === void 0 ? void 0 : params.optionItems) !== null && _params$optionItems2 !== void 0 ? _params$optionItems2 : [];
|
|
61
|
-
if (params !== null && params !== void 0 && params.saveLocalStorageByKey) {
|
|
62
|
-
var _storeItems$getItemsA;
|
|
63
|
-
items = (_storeItems$getItemsA = storeItems === null || storeItems === void 0 ? void 0 : storeItems.getItemsAndMerge(items)) !== null && _storeItems$getItemsA !== void 0 ? _storeItems$getItemsA : [];
|
|
64
|
-
}
|
|
65
|
-
return items;
|
|
66
|
-
});
|
|
67
|
-
_defineProperty(_this, "getTextFieldProps", function () {
|
|
68
|
-
var _this$props = _this.props,
|
|
69
|
-
name = _this$props.name,
|
|
70
|
-
label = _this$props.label,
|
|
71
|
-
placeholder = _this$props.placeholder,
|
|
72
|
-
_onBlur = _this$props.onBlur,
|
|
73
|
-
messageErrors = _this$props.messageErrors;
|
|
74
|
-
var eMessage = getErrorMessage(messageErrors, name);
|
|
75
|
-
return {
|
|
76
|
-
label: label,
|
|
77
|
-
placeholder: placeholder || 'Add new',
|
|
78
|
-
onBlur: function onBlur() {
|
|
79
|
-
if (!name) return;
|
|
80
|
-
_onBlur && _onBlur(name);
|
|
81
|
-
},
|
|
82
|
-
error: eMessage.error,
|
|
83
|
-
helperText: eMessage.message
|
|
84
|
-
};
|
|
85
|
-
});
|
|
86
|
-
_defineProperty(_this, "getDefaultValue", function () {
|
|
87
|
-
var _data$name, _value$split$filter;
|
|
88
|
-
var _this$props2 = _this.props,
|
|
89
|
-
name = _this$props2.name,
|
|
90
|
-
data = _this$props2.data;
|
|
91
|
-
var value = name ? data === null || data === void 0 || (_data$name = data[name]) === null || _data$name === void 0 ? void 0 : _data$name.toString() : '';
|
|
92
|
-
return (_value$split$filter = value === null || value === void 0 ? void 0 : value.split(separator).filter(function (x) {
|
|
93
|
-
return !!x;
|
|
94
|
-
})) !== null && _value$split$filter !== void 0 ? _value$split$filter : [];
|
|
95
|
-
});
|
|
96
|
-
_this.state = {
|
|
97
|
-
value: _this.getDefaultValue(),
|
|
98
|
-
options: _this.getSelectOptions()
|
|
99
|
-
};
|
|
100
|
-
return _this;
|
|
101
|
-
}
|
|
102
|
-
_inherits(AutocompleteChip, _Component);
|
|
103
|
-
return _createClass(AutocompleteChip, [{
|
|
104
|
-
key: "render",
|
|
105
|
-
value: function render() {
|
|
106
|
-
var _this2 = this;
|
|
107
|
-
var name = this.props.name;
|
|
108
|
-
return jsxs(Fragment, {
|
|
109
|
-
children: [jsx(Autocomplete, {
|
|
110
|
-
multiple: true,
|
|
111
|
-
freeSolo: true,
|
|
112
|
-
limitTags: limitTags,
|
|
113
|
-
value: this.state.value,
|
|
114
|
-
onChange: this.handleAddOption,
|
|
115
|
-
options: this.state.options,
|
|
116
|
-
renderOption: function renderOption(props, option) {
|
|
117
|
-
return /*#__PURE__*/createElement(ItemOption, _objectSpread2(_objectSpread2({}, props), {}, {
|
|
118
|
-
key: option
|
|
119
|
-
}), jsx(Typography, {
|
|
120
|
-
variant: 'subtitle1',
|
|
121
|
-
sx: {
|
|
122
|
-
flex: 1
|
|
123
|
-
},
|
|
124
|
-
children: option
|
|
125
|
-
}), _this2.isBtnRemoveOption(option) && jsx(Tooltip, {
|
|
126
|
-
title: 'Remove option',
|
|
127
|
-
arrow: true,
|
|
128
|
-
placement: 'left',
|
|
129
|
-
children: jsx(IconButton, {
|
|
130
|
-
size: 'small',
|
|
131
|
-
onClick: function onClick(e) {
|
|
132
|
-
return _this2.handleRemoveItem(e, option);
|
|
133
|
-
},
|
|
134
|
-
children: jsx(RemoveIcon, {
|
|
135
|
-
fontSize: 'small'
|
|
136
|
-
})
|
|
137
|
-
})
|
|
138
|
-
}));
|
|
139
|
-
},
|
|
140
|
-
renderTags: function renderTags(tagValue, getTagProps) {
|
|
141
|
-
return tagValue.map(function (option, index) {
|
|
142
|
-
return /*#__PURE__*/createElement(Chip, _objectSpread2(_objectSpread2({
|
|
143
|
-
label: option
|
|
144
|
-
}, getTagProps({
|
|
145
|
-
index: index
|
|
146
|
-
})), {}, {
|
|
147
|
-
key: option.toString()
|
|
148
|
-
}));
|
|
149
|
-
});
|
|
150
|
-
},
|
|
151
|
-
renderInput: function renderInput(params) {
|
|
152
|
-
return jsx(TextField, _objectSpread2(_objectSpread2({}, params), {}, {
|
|
153
|
-
variant: 'outlined'
|
|
154
|
-
}, _this2.getTextFieldProps()));
|
|
155
|
-
}
|
|
156
|
-
}), jsx("input", {
|
|
157
|
-
ref: function ref(_ref2) {
|
|
158
|
-
_this2.refInput = _ref2;
|
|
159
|
-
},
|
|
160
|
-
hidden: true,
|
|
161
|
-
type: 'text',
|
|
162
|
-
name: name === null || name === void 0 ? void 0 : name.toString(),
|
|
163
|
-
defaultValue: this.state.value.join(separator)
|
|
164
|
-
})]
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
}]);
|
|
168
|
-
}(Component);
|
|
169
|
-
return AutocompleteChip;
|
|
170
|
-
}
|
|
171
|
-
var ItemOption = styled('li')({
|
|
172
|
-
display: 'flex',
|
|
173
|
-
alignItems: 'center'
|
|
174
|
-
});
|
|
175
|
-
var AutocompleteChipStore = /*#__PURE__*/_createClass(function AutocompleteChipStore(key, defaultValue) {
|
|
176
|
-
var _this3 = this;
|
|
177
|
-
_classCallCheck(this, AutocompleteChipStore);
|
|
178
|
-
_defineProperty(this, "storeKeyRoot", 'autocomplete_chip_store');
|
|
179
|
-
_defineProperty(this, "getRoot", function () {
|
|
180
|
-
try {
|
|
181
|
-
var res = window.localStorage.getItem(_this3.storeKeyRoot);
|
|
182
|
-
return JSON.parse(res !== null && res !== void 0 ? res : '{}');
|
|
183
|
-
} catch (error) {
|
|
184
|
-
return {};
|
|
185
|
-
}
|
|
186
|
-
});
|
|
187
|
-
_defineProperty(this, "getChild", function () {
|
|
188
|
-
return _this3.getRoot()[_this3.storeKey];
|
|
189
|
-
});
|
|
190
|
-
_defineProperty(this, "setRoot", function (value) {
|
|
191
|
-
window.localStorage.setItem(_this3.storeKeyRoot, JSON.stringify(value));
|
|
192
|
-
});
|
|
193
|
-
_defineProperty(this, "setChild", function (value) {
|
|
194
|
-
var obj = _this3.getRoot();
|
|
195
|
-
obj[_this3.storeKey] = value;
|
|
196
|
-
_this3.setRoot(obj);
|
|
197
|
-
});
|
|
198
|
-
_defineProperty(this, "getItemsAndMerge", function (value) {
|
|
199
|
-
try {
|
|
200
|
-
return Array.from(new Set([].concat(_toConsumableArray(_this3.getChild()), _toConsumableArray(value)))).sort();
|
|
201
|
-
} catch (error) {
|
|
202
|
-
return value;
|
|
203
|
-
}
|
|
204
|
-
});
|
|
205
|
-
_defineProperty(this, "setItems", function (options, value) {
|
|
206
|
-
var list = Array.from(new Set([].concat(_toConsumableArray(options), _toConsumableArray(value)))).sort();
|
|
207
|
-
_this3.setChild(list);
|
|
208
|
-
return list;
|
|
209
|
-
});
|
|
210
|
-
_defineProperty(this, "delete", function (value) {
|
|
211
|
-
var list = _this3.getChild().filter(function (x) {
|
|
212
|
-
return x !== value;
|
|
213
|
-
});
|
|
214
|
-
_this3.setChild(list);
|
|
215
|
-
return list;
|
|
216
|
-
});
|
|
217
|
-
this.storeKey = key;
|
|
218
|
-
if (defaultValue) {
|
|
219
|
-
this.setChild(defaultValue);
|
|
220
|
-
}
|
|
221
|
-
});
|
|
222
|
-
_AutocompleteChipStore = AutocompleteChipStore;
|
|
223
|
-
_defineProperty(AutocompleteChipStore, "initial", function (key, defaultValue) {
|
|
224
|
-
return new _AutocompleteChipStore(key, defaultValue);
|
|
225
|
-
});
|
|
226
|
-
|
|
227
|
-
export { CreateAutocompleteChip as default };
|
|
1
|
+
import{defineProperty as t,createClass as e,classCallCheck as n,toConsumableArray as o,inherits as r,objectSpread2 as i,callSuper as l}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as a,Fragment as s,jsx as u}from"react/jsx-runtime";import{createElement as p,Component as d}from"react";import{styled as c,Autocomplete as v,TextField as f,Chip as m,Typography as h,Tooltip as g,IconButton as y}from"@mui/material";import S from"@mui/icons-material/Remove";import{getErrorMessage as I}from"./helper.js";var R;function C(o){var c=(null==o?void 0:o.separator)||"|",R=(null==o?void 0:o.limitTags)||2,C=null!=o&&o.saveLocalStorageByKey?B.initial(o.saveLocalStorageByKey):void 0,K=function(){function B(e){var r;return n(this,B),r=l(this,B,[e]),t(r,"refInput",null),t(r,"handleRemoveItem",(function(t,e){var n;t.preventDefault(),t.stopPropagation(),console.log(e);var o=null!==(n=null==C?void 0:C.delete(e))&&void 0!==n?n:[];r.setState({options:o})})),t(r,"handleAddOption",(function(t,e){if(null!=o&&o.saveLocalStorageByKey){var n,i=null!==(n=null==C?void 0:C.setItems(r.state.options,e))&&void 0!==n?n:r.state.options;r.setState({value:e,options:i})}else r.setState({value:e});r.refInput&&(r.refInput.value=e.join(c)),r.props.name&&r.props.onBlur&&r.props.onBlur(r.props.name)})),t(r,"isBtnRemoveOption",(function(t){var e,n,i,l=r.state.value.findIndex((function(e){return e===t}))<0;return(null!==(e=null!==(n=null==o?void 0:o.optionItems)&&void 0!==n?n:null===(i=r.props.slots)||void 0===i?void 0:i.optionItems)&&void 0!==e?e:[]).findIndex((function(e){return e===t}))<0&&l})),t(r,"getSelectOptions",(function(){var t,e,n=null!==(t=null==o?void 0:o.optionItems)&&void 0!==t?t:[];null!=o&&o.saveLocalStorageByKey&&(n=null!==(e=null==C?void 0:C.getItemsAndMerge(n))&&void 0!==e?e:[]);return n})),t(r,"getTextFieldProps",(function(){var t=r.props,e=t.name,n=t.label,o=t.placeholder,i=t.onBlur,l=t.messageErrors,a=I(l,e);return{label:n,placeholder:o||"Add new",onBlur:function(){e&&i&&i(e)},error:a.error,helperText:a.message}})),t(r,"getDefaultValue",(function(){var t,e,n=r.props,o=n.name,i=n.data,l=o?null==i||null===(t=i[o])||void 0===t?void 0:t.toString():"";return null!==(e=null==l?void 0:l.split(c).filter((function(t){return!!t})))&&void 0!==e?e:[]})),r.state={value:r.getDefaultValue(),options:r.getSelectOptions()},r}return r(B,d),e(B,[{key:"render",value:function(){var t=this,e=this.props.name;return a(s,{children:[u(v,{multiple:!0,freeSolo:!0,limitTags:R,value:this.state.value,onChange:this.handleAddOption,options:this.state.options,renderOption:function(e,n){return p(x,i(i({},e),{},{key:n}),u(h,{variant:"subtitle1",sx:{flex:1},children:n}),t.isBtnRemoveOption(n)&&u(g,{title:"Remove option",arrow:!0,placement:"left",children:u(y,{size:"small",onClick:function(e){return t.handleRemoveItem(e,n)},children:u(S,{fontSize:"small"})})}))},renderTags:function(t,e){return t.map((function(t,n){return p(m,i(i({label:t},e({index:n})),{},{key:t.toString()}))}))},renderInput:function(e){return u(f,i(i({},e),{},{variant:"outlined"},t.getTextFieldProps()))}}),u("input",{ref:function(e){t.refInput=e},hidden:!0,type:"text",name:null==e?void 0:e.toString(),defaultValue:this.state.value.join(c)})]})}}])}();return K}var x=c("li")({display:"flex",alignItems:"center"}),B=e((function e(r,i){var l=this;n(this,e),t(this,"storeKeyRoot","autocomplete_chip_store"),t(this,"getRoot",(function(){try{var t=window.localStorage.getItem(l.storeKeyRoot);return JSON.parse(null!=t?t:"{}")}catch(t){return{}}})),t(this,"getChild",(function(){return l.getRoot()[l.storeKey]})),t(this,"setRoot",(function(t){window.localStorage.setItem(l.storeKeyRoot,JSON.stringify(t))})),t(this,"setChild",(function(t){var e=l.getRoot();e[l.storeKey]=t,l.setRoot(e)})),t(this,"getItemsAndMerge",(function(t){try{return Array.from(new Set([].concat(o(l.getChild()),o(t)))).sort()}catch(e){return t}})),t(this,"setItems",(function(t,e){var n=Array.from(new Set([].concat(o(t),o(e)))).sort();return l.setChild(n),n})),t(this,"delete",(function(t){var e=l.getChild().filter((function(e){return e!==t}));return l.setChild(e),e})),this.storeKey=r,i&&this.setChild(i)}));R=B,t(B,"initial",(function(t,e){return new R(t,e)}));export{C as default};
|
|
228
2
|
//# sourceMappingURL=create.autocomplete.chips.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.autocomplete.chips.js","sources":["../../src/form/create.autocomplete.chips.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Autocomplete, Chip, IconButton, styled, TextField, TextFieldProps, Tooltip, Typography } from '@mui/material'\r\nimport RemoveIcon from '@mui/icons-material/Remove'\r\nimport { IFormInputBase } from './types'\r\nimport { getErrorMessage } from './helper'\r\n\r\nexport interface IAutocompleteChipParams {\r\n optionItems?: string[]\r\n limitTags?: number\r\n separator?: string\r\n saveLocalStorageByKey?: string\r\n}\r\n\r\nexport interface IAutocompleteChipProps<T> extends IFormInputBase<T, IAutocompleteChipParams> {}\r\n\r\nexport interface IAutocompleteChipState {\r\n value: string[]\r\n options: string[]\r\n}\r\n\r\nfunction CreateAutocompleteChip<T>(params?: IAutocompleteChipParams): ComponentType<IAutocompleteChipProps<T>> {\r\n const separator = params?.separator || '|'\r\n const limitTags = params?.limitTags || 2\r\n const storeItems = params?.saveLocalStorageByKey ? AutocompleteChipStore.initial(params.saveLocalStorageByKey) : undefined\r\n\r\n class AutocompleteChip extends Component<IAutocompleteChipProps<T>, IAutocompleteChipState> {\r\n constructor(props: IAutocompleteChipProps<T>) {\r\n super(props)\r\n this.state = {\r\n value: this.getDefaultValue(),\r\n options: this.getSelectOptions()\r\n }\r\n }\r\n\r\n refInput: HTMLInputElement | null = null\r\n render() {\r\n const { name } = this.props\r\n return (\r\n <>\r\n <Autocomplete\r\n multiple\r\n freeSolo\r\n limitTags={limitTags}\r\n value={this.state.value}\r\n onChange={this.handleAddOption}\r\n options={this.state.options}\r\n renderOption={(props, option) => (\r\n <ItemOption {...props} key={option}>\r\n <Typography variant='subtitle1' sx={{ flex: 1 }}>\r\n {option}\r\n </Typography>\r\n {this.isBtnRemoveOption(option) && (\r\n <Tooltip title='Remove option' arrow placement='left'>\r\n <IconButton size='small' onClick={(e) => this.handleRemoveItem(e, option)}>\r\n <RemoveIcon fontSize='small' />\r\n </IconButton>\r\n </Tooltip>\r\n )}\r\n </ItemOption>\r\n )}\r\n renderTags={(tagValue, getTagProps) => {\r\n return tagValue.map((option, index) => <Chip label={option} {...getTagProps({ index })} key={option.toString()} />)\r\n }}\r\n renderInput={(params) => <TextField {...params} variant='outlined' {...this.getTextFieldProps()} />}\r\n />\r\n <input\r\n ref={(ref) => {\r\n this.refInput = ref\r\n }}\r\n hidden\r\n type='text'\r\n name={name?.toString()}\r\n defaultValue={this.state.value.join(separator)}\r\n />\r\n </>\r\n )\r\n }\r\n\r\n handleRemoveItem = (e: React.MouseEvent<HTMLButtonElement, MouseEvent>, value: string) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n console.log(value)\r\n const list = storeItems?.delete(value) ?? []\r\n this.setState({ options: list })\r\n }\r\n\r\n handleAddOption = (_: React.SyntheticEvent, newValue: string[]) => {\r\n if (params?.saveLocalStorageByKey) {\r\n const options = storeItems?.setItems(this.state.options, newValue) ?? this.state.options\r\n this.setState({ value: newValue, options })\r\n } else {\r\n this.setState({ value: newValue })\r\n }\r\n if (this.refInput) {\r\n this.refInput.value = newValue.join(separator)\r\n }\r\n this.props.name && this.props.onBlur && this.props.onBlur(this.props.name)\r\n }\r\n\r\n isBtnRemoveOption = (value: string) => {\r\n const isSelectedOption = this.state.value.findIndex((x) => x === value) < 0\r\n const selectOptions = params?.optionItems ?? this.props.slots?.optionItems ?? []\r\n const isDefault = selectOptions.findIndex((x) => x === value) < 0\r\n return isDefault && isSelectedOption\r\n }\r\n\r\n getSelectOptions = () => {\r\n let items = params?.optionItems ?? []\r\n if (params?.saveLocalStorageByKey) {\r\n items = storeItems?.getItemsAndMerge(items) ?? []\r\n }\r\n return items\r\n }\r\n\r\n getTextFieldProps = (): TextFieldProps => {\r\n const { name, label, placeholder, onBlur, messageErrors } = this.props\r\n const eMessage = getErrorMessage(messageErrors, name)\r\n return {\r\n label,\r\n placeholder: placeholder || 'Add new',\r\n onBlur: () => {\r\n if (!name) return\r\n onBlur && onBlur(name)\r\n },\r\n error: eMessage.error,\r\n helperText: eMessage.message\r\n }\r\n }\r\n\r\n getDefaultValue = (): string[] => {\r\n const { name, data } = this.props\r\n const value = name ? data?.[name]?.toString() : ''\r\n return value?.split(separator).filter((x) => !!x) ?? []\r\n }\r\n }\r\n\r\n return AutocompleteChip\r\n}\r\n\r\nexport default CreateAutocompleteChip\r\n\r\nconst ItemOption = styled('li')({\r\n display: 'flex',\r\n alignItems: 'center'\r\n})\r\n\r\ntype TChipStoreRoot = { [key: string]: string[] }\r\n\r\nclass AutocompleteChipStore {\r\n private storeKeyRoot = 'autocomplete_chip_store'\r\n private storeKey: string\r\n constructor(key: string, defaultValue?: string[]) {\r\n this.storeKey = key\r\n if (defaultValue) {\r\n this.setChild(defaultValue)\r\n }\r\n }\r\n\r\n static initial = (key: string, defaultValue?: string[]) => new AutocompleteChipStore(key, defaultValue)\r\n\r\n private getRoot = (): TChipStoreRoot => {\r\n try {\r\n const res = window.localStorage.getItem(this.storeKeyRoot)\r\n return JSON.parse(res ?? '{}')\r\n } catch (error) {\r\n return {}\r\n }\r\n }\r\n\r\n private getChild = (): string[] => {\r\n return this.getRoot()[this.storeKey]\r\n }\r\n\r\n private setRoot = (value: TChipStoreRoot) => {\r\n window.localStorage.setItem(this.storeKeyRoot, JSON.stringify(value))\r\n }\r\n\r\n private setChild = (value: string[]) => {\r\n const obj = this.getRoot()\r\n obj[this.storeKey] = value\r\n this.setRoot(obj)\r\n }\r\n\r\n getItemsAndMerge = (value: string[]): string[] => {\r\n try {\r\n return Array.from(new Set([...this.getChild(), ...value])).sort()\r\n } catch (error) {\r\n return value\r\n }\r\n }\r\n\r\n setItems = (options: string[], value: string[]): string[] => {\r\n const list = Array.from(new Set([...options, ...value])).sort()\r\n this.setChild(list)\r\n return list\r\n }\r\n\r\n delete = (value: string) => {\r\n const list = this.getChild().filter((x) => x !== value)\r\n this.setChild(list)\r\n return list\r\n }\r\n}\r\n"],"names":["CreateAutocompleteChip","params","separator","limitTags","storeItems","saveLocalStorageByKey","AutocompleteChipStore","initial","undefined","AutocompleteChip","_Component","props","_this","_classCallCheck","_callSuper","_defineProperty","e","value","_storeItems$delete","preventDefault","stopPropagation","console","log","list","setState","options","_","newValue","_storeItems$setItems","setItems","state","refInput","join","name","onBlur","_ref","_params$optionItems","_this$props$slots","isSelectedOption","findIndex","x","selectOptions","optionItems","slots","isDefault","_params$optionItems2","items","_storeItems$getItemsA","getItemsAndMerge","_this$props","label","placeholder","messageErrors","eMessage","getErrorMessage","error","helperText","message","_data$name","_value$split$filter","_this$props2","data","toString","split","filter","getDefaultValue","getSelectOptions","_inherits","_createClass","key","render","_this2","_jsxs","_Fragment","children","_jsx","Autocomplete","multiple","freeSolo","onChange","handleAddOption","renderOption","option","_createElement","ItemOption","_objectSpread","Typography","variant","sx","flex","isBtnRemoveOption","Tooltip","title","arrow","placement","IconButton","size","onClick","handleRemoveItem","RemoveIcon","fontSize","renderTags","tagValue","getTagProps","map","index","Chip","renderInput","TextField","getTextFieldProps","ref","hidden","type","defaultValue","Component","styled","display","alignItems","_this3","res","window","localStorage","getItem","storeKeyRoot","JSON","parse","getRoot","storeKey","setItem","stringify","obj","setRoot","Array","from","Set","concat","_toConsumableArray","getChild","sort","setChild","_AutocompleteChipStore"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"create.autocomplete.chips.js","sources":["../../src/form/create.autocomplete.chips.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Autocomplete, Chip, IconButton, styled, TextField, TextFieldProps, Tooltip, Typography } from '@mui/material'\r\nimport RemoveIcon from '@mui/icons-material/Remove'\r\nimport { IFormInputBase } from './types'\r\nimport { getErrorMessage } from './helper'\r\n\r\nexport interface IAutocompleteChipParams {\r\n optionItems?: string[]\r\n limitTags?: number\r\n separator?: string\r\n saveLocalStorageByKey?: string\r\n}\r\n\r\nexport interface IAutocompleteChipProps<T> extends IFormInputBase<T, IAutocompleteChipParams> {}\r\n\r\nexport interface IAutocompleteChipState {\r\n value: string[]\r\n options: string[]\r\n}\r\n\r\nfunction CreateAutocompleteChip<T>(params?: IAutocompleteChipParams): ComponentType<IAutocompleteChipProps<T>> {\r\n const separator = params?.separator || '|'\r\n const limitTags = params?.limitTags || 2\r\n const storeItems = params?.saveLocalStorageByKey ? AutocompleteChipStore.initial(params.saveLocalStorageByKey) : undefined\r\n\r\n class AutocompleteChip extends Component<IAutocompleteChipProps<T>, IAutocompleteChipState> {\r\n constructor(props: IAutocompleteChipProps<T>) {\r\n super(props)\r\n this.state = {\r\n value: this.getDefaultValue(),\r\n options: this.getSelectOptions()\r\n }\r\n }\r\n\r\n refInput: HTMLInputElement | null = null\r\n render() {\r\n const { name } = this.props\r\n return (\r\n <>\r\n <Autocomplete\r\n multiple\r\n freeSolo\r\n limitTags={limitTags}\r\n value={this.state.value}\r\n onChange={this.handleAddOption}\r\n options={this.state.options}\r\n renderOption={(props, option) => (\r\n <ItemOption {...props} key={option}>\r\n <Typography variant='subtitle1' sx={{ flex: 1 }}>\r\n {option}\r\n </Typography>\r\n {this.isBtnRemoveOption(option) && (\r\n <Tooltip title='Remove option' arrow placement='left'>\r\n <IconButton size='small' onClick={(e) => this.handleRemoveItem(e, option)}>\r\n <RemoveIcon fontSize='small' />\r\n </IconButton>\r\n </Tooltip>\r\n )}\r\n </ItemOption>\r\n )}\r\n renderTags={(tagValue, getTagProps) => {\r\n return tagValue.map((option, index) => <Chip label={option} {...getTagProps({ index })} key={option.toString()} />)\r\n }}\r\n renderInput={(params) => <TextField {...params} variant='outlined' {...this.getTextFieldProps()} />}\r\n />\r\n <input\r\n ref={(ref) => {\r\n this.refInput = ref\r\n }}\r\n hidden\r\n type='text'\r\n name={name?.toString()}\r\n defaultValue={this.state.value.join(separator)}\r\n />\r\n </>\r\n )\r\n }\r\n\r\n handleRemoveItem = (e: React.MouseEvent<HTMLButtonElement, MouseEvent>, value: string) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n console.log(value)\r\n const list = storeItems?.delete(value) ?? []\r\n this.setState({ options: list })\r\n }\r\n\r\n handleAddOption = (_: React.SyntheticEvent, newValue: string[]) => {\r\n if (params?.saveLocalStorageByKey) {\r\n const options = storeItems?.setItems(this.state.options, newValue) ?? this.state.options\r\n this.setState({ value: newValue, options })\r\n } else {\r\n this.setState({ value: newValue })\r\n }\r\n if (this.refInput) {\r\n this.refInput.value = newValue.join(separator)\r\n }\r\n this.props.name && this.props.onBlur && this.props.onBlur(this.props.name)\r\n }\r\n\r\n isBtnRemoveOption = (value: string) => {\r\n const isSelectedOption = this.state.value.findIndex((x) => x === value) < 0\r\n const selectOptions = params?.optionItems ?? this.props.slots?.optionItems ?? []\r\n const isDefault = selectOptions.findIndex((x) => x === value) < 0\r\n return isDefault && isSelectedOption\r\n }\r\n\r\n getSelectOptions = () => {\r\n let items = params?.optionItems ?? []\r\n if (params?.saveLocalStorageByKey) {\r\n items = storeItems?.getItemsAndMerge(items) ?? []\r\n }\r\n return items\r\n }\r\n\r\n getTextFieldProps = (): TextFieldProps => {\r\n const { name, label, placeholder, onBlur, messageErrors } = this.props\r\n const eMessage = getErrorMessage(messageErrors, name)\r\n return {\r\n label,\r\n placeholder: placeholder || 'Add new',\r\n onBlur: () => {\r\n if (!name) return\r\n onBlur && onBlur(name)\r\n },\r\n error: eMessage.error,\r\n helperText: eMessage.message\r\n }\r\n }\r\n\r\n getDefaultValue = (): string[] => {\r\n const { name, data } = this.props\r\n const value = name ? data?.[name]?.toString() : ''\r\n return value?.split(separator).filter((x) => !!x) ?? []\r\n }\r\n }\r\n\r\n return AutocompleteChip\r\n}\r\n\r\nexport default CreateAutocompleteChip\r\n\r\nconst ItemOption = styled('li')({\r\n display: 'flex',\r\n alignItems: 'center'\r\n})\r\n\r\ntype TChipStoreRoot = { [key: string]: string[] }\r\n\r\nclass AutocompleteChipStore {\r\n private storeKeyRoot = 'autocomplete_chip_store'\r\n private storeKey: string\r\n constructor(key: string, defaultValue?: string[]) {\r\n this.storeKey = key\r\n if (defaultValue) {\r\n this.setChild(defaultValue)\r\n }\r\n }\r\n\r\n static initial = (key: string, defaultValue?: string[]) => new AutocompleteChipStore(key, defaultValue)\r\n\r\n private getRoot = (): TChipStoreRoot => {\r\n try {\r\n const res = window.localStorage.getItem(this.storeKeyRoot)\r\n return JSON.parse(res ?? '{}')\r\n } catch (error) {\r\n return {}\r\n }\r\n }\r\n\r\n private getChild = (): string[] => {\r\n return this.getRoot()[this.storeKey]\r\n }\r\n\r\n private setRoot = (value: TChipStoreRoot) => {\r\n window.localStorage.setItem(this.storeKeyRoot, JSON.stringify(value))\r\n }\r\n\r\n private setChild = (value: string[]) => {\r\n const obj = this.getRoot()\r\n obj[this.storeKey] = value\r\n this.setRoot(obj)\r\n }\r\n\r\n getItemsAndMerge = (value: string[]): string[] => {\r\n try {\r\n return Array.from(new Set([...this.getChild(), ...value])).sort()\r\n } catch (error) {\r\n return value\r\n }\r\n }\r\n\r\n setItems = (options: string[], value: string[]): string[] => {\r\n const list = Array.from(new Set([...options, ...value])).sort()\r\n this.setChild(list)\r\n return list\r\n }\r\n\r\n delete = (value: string) => {\r\n const list = this.getChild().filter((x) => x !== value)\r\n this.setChild(list)\r\n return list\r\n }\r\n}\r\n"],"names":["CreateAutocompleteChip","params","separator","limitTags","storeItems","saveLocalStorageByKey","AutocompleteChipStore","initial","undefined","AutocompleteChip","props","_this","_classCallCheck","_callSuper","_defineProperty","e","value","_storeItems$delete","preventDefault","stopPropagation","console","log","list","setState","options","_","newValue","_storeItems$setItems","setItems","state","refInput","join","name","onBlur","_ref","_params$optionItems","_this$props$slots","isSelectedOption","findIndex","x","optionItems","slots","_params$optionItems2","_storeItems$getItemsA","items","getItemsAndMerge","_this$props","label","placeholder","messageErrors","eMessage","getErrorMessage","error","helperText","message","_data$name","_value$split$filter","_this$props2","data","toString","split","filter","getDefaultValue","getSelectOptions","_inherits","Component","_createClass","key","_this2","this","_jsxs","_Fragment","children","_jsx","Autocomplete","multiple","freeSolo","onChange","handleAddOption","renderOption","option","_createElement","ItemOption","_objectSpread","Typography","variant","sx","flex","isBtnRemoveOption","Tooltip","title","arrow","placement","IconButton","size","onClick","handleRemoveItem","RemoveIcon","fontSize","renderTags","tagValue","getTagProps","map","index","Chip","renderInput","TextField","getTextFieldProps","ref","hidden","type","defaultValue","styled","display","alignItems","_this3","res","window","localStorage","getItem","storeKeyRoot","JSON","parse","getRoot","storeKey","setItem","stringify","obj","setRoot","Array","from","Set","concat","_toConsumableArray","getChild","sort","setChild","_AutocompleteChipStore"],"mappings":"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"}
|