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.
Files changed (101) hide show
  1. package/dist/_virtual/_rollupPluginBabelHelpers.js +1 -487
  2. package/dist/_virtual/_rollupPluginBabelHelpers.js.map +1 -1
  3. package/dist/api-context/alert-global.js +1 -165
  4. package/dist/api-context/alert-global.js.map +1 -1
  5. package/dist/api-context/drawer-global.js +1 -111
  6. package/dist/api-context/drawer-global.js.map +1 -1
  7. package/dist/api-context/global-modal.js +1 -94
  8. package/dist/api-context/global-modal.js.map +1 -1
  9. package/dist/api-context/popover-global.js +1 -109
  10. package/dist/api-context/popover-global.js.map +1 -1
  11. package/dist/api-context/popover.js +1 -93
  12. package/dist/api-context/popover.js.map +1 -1
  13. package/dist/api-context/ui.units.js +1 -22
  14. package/dist/api-context/ui.units.js.map +1 -1
  15. package/dist/components/breadcrumbs.js +1 -64
  16. package/dist/components/breadcrumbs.js.map +1 -1
  17. package/dist/components/copy-to-clipboard.js +1 -111
  18. package/dist/components/copy-to-clipboard.js.map +1 -1
  19. package/dist/components/help-tooltip.js +1 -103
  20. package/dist/components/help-tooltip.js.map +1 -1
  21. package/dist/components/image-with-fallback.js +1 -50
  22. package/dist/components/image-with-fallback.js.map +1 -1
  23. package/dist/components/text-editor.js +1 -117
  24. package/dist/components/text-editor.js.map +1 -1
  25. package/dist/components/text-editor.preview.js +1 -26
  26. package/dist/components/text-editor.preview.js.map +1 -1
  27. package/dist/form/create.autocomplete.chips.js +1 -227
  28. package/dist/form/create.autocomplete.chips.js.map +1 -1
  29. package/dist/form/create.date-expired.js +1 -210
  30. package/dist/form/create.date-expired.js.map +1 -1
  31. package/dist/form/create.date-picker.js +1 -127
  32. package/dist/form/create.date-picker.js.map +1 -1
  33. package/dist/form/create.form-base.js +1 -140
  34. package/dist/form/create.form-base.js.map +1 -1
  35. package/dist/form/create.form-comfirm.js +1 -130
  36. package/dist/form/create.form-comfirm.js.map +1 -1
  37. package/dist/form/create.form-grid-layout.js +1 -187
  38. package/dist/form/create.form-grid-layout.js.map +1 -1
  39. package/dist/form/create.form-grid-layout.units.js +1 -41
  40. package/dist/form/create.form-grid-layout.units.js.map +1 -1
  41. package/dist/form/create.input.file.js +1 -78
  42. package/dist/form/create.input.file.js.map +1 -1
  43. package/dist/form/create.input.js +1 -275
  44. package/dist/form/create.input.js.map +1 -1
  45. package/dist/form/create.select-simple.js +1 -113
  46. package/dist/form/create.select-simple.js.map +1 -1
  47. package/dist/form/create.select-with-api.js +1 -276
  48. package/dist/form/create.select-with-api.js.map +1 -1
  49. package/dist/form/create.text-editor.js +1 -180
  50. package/dist/form/create.text-editor.js.map +1 -1
  51. package/dist/form/dino-form.js +1 -40
  52. package/dist/form/dino-form.js.map +1 -1
  53. package/dist/form/helper.js +1 -156
  54. package/dist/form/helper.js.map +1 -1
  55. package/dist/form/modal-wrapper.js +1 -81
  56. package/dist/form/modal-wrapper.js.map +1 -1
  57. package/dist/form/validator.js +1 -189
  58. package/dist/form/validator.js.map +1 -1
  59. package/dist/hooks/index.js +1 -47
  60. package/dist/hooks/index.js.map +1 -1
  61. package/dist/index.js +1 -32
  62. package/dist/index.js.map +1 -1
  63. package/dist/redux/create.hoc-lazy.js +1 -70
  64. package/dist/redux/create.hoc-lazy.js.map +1 -1
  65. package/dist/redux/dino.js +1 -10
  66. package/dist/redux/dino.js.map +1 -1
  67. package/dist/redux/types.js +1 -8
  68. package/dist/redux/types.js.map +1 -1
  69. package/dist/redux/ui.error-page.js +1 -88
  70. package/dist/redux/ui.error-page.js.map +1 -1
  71. package/dist/redux/vector-404.webp.js +1 -3
  72. package/dist/redux/vector-404.webp.js.map +1 -1
  73. package/dist/table/context.js +1 -14
  74. package/dist/table/context.js.map +1 -1
  75. package/dist/table/create.action-row.js +1 -143
  76. package/dist/table/create.action-row.js.map +1 -1
  77. package/dist/table/create.table.js +1 -245
  78. package/dist/table/create.table.js.map +1 -1
  79. package/dist/table/custom.filter-operators.js +1 -88
  80. package/dist/table/custom.filter-operators.js.map +1 -1
  81. package/dist/table/dino.js +1 -135
  82. package/dist/table/dino.js.map +1 -1
  83. package/dist/table/helpers.js +1 -114
  84. package/dist/table/helpers.js.map +1 -1
  85. package/dist/table/model-filter.js +1 -22
  86. package/dist/table/model-filter.js.map +1 -1
  87. package/dist/table/toolbar-pannel.js +1 -142
  88. package/dist/table/toolbar-pannel.js.map +1 -1
  89. package/dist/table/ui.buttons.js +1 -66
  90. package/dist/table/ui.buttons.js.map +1 -1
  91. package/dist/table/ui.units.js +1 -247
  92. package/dist/table/ui.units.js.map +1 -1
  93. package/dist/utils/dayjs-config.js +1 -11
  94. package/dist/utils/dayjs-config.js.map +1 -1
  95. package/dist/utils/helpers.js +1 -198
  96. package/dist/utils/helpers.js.map +1 -1
  97. package/dist/utils/json-object.js +1 -37
  98. package/dist/utils/json-object.js.map +1 -1
  99. package/dist/utils/query-param.js +1 -171
  100. package/dist/utils/query-param.js.map +1 -1
  101. package/package.json +2 -2
@@ -1,118 +1,2 @@
1
- import { inherits as _inherits, createClass as _createClass, classCallCheck as _classCallCheck, callSuper as _callSuper, defineProperty as _defineProperty } from '../_virtual/_rollupPluginBabelHelpers.js';
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","formats","modules","toolbar","header","align","list","indent","color","background","TextEditor","_Component","props","_props$defautValue","_this","_classCallCheck","_callSuper","_defineProperty","value","str","setState","state","defautValue","_inherits","_createClass","key","render","classes","error","push","_jsxs","Wrapper","id","sx","className","join","children","readOnly","_jsx","name","defaultValue","hidden","ReactQuill","placeholder","onChange","handleChange","onBlur","Component","borderColor","styled","Box","margin","minHeight","display","flex","height","borderBottomLeftRadius","borderBottomRightRadius","borderTopLeftRadius","borderTopRightRadius","borderTopColor","borderLeftColor","borderRightColor","borderBottomColor"],"mappings":"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"}
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 { jsx, Fragment } from 'react/jsx-runtime';
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":";;;AAEA,IAAMA,iBAAiB,GAA6B,SAA9CA,iBAAiBA,CAA8BC,KAAK,EAAI;AAC5D,EAAA,IAAMC,UAAU,GAAGC,KAAK,CAACC,MAAM,CAAwB,IAAI,CAAC;EAE5DD,KAAK,CAACE,SAAS,CAAC,YAAK;AACnB;AACA,IAAA,IAAMC,QAAQ,GAAGC,QAAQ,CAACC,aAAa,CAAC,UAAU,CAAC;IACnDF,QAAQ,CAACG,SAAS,GAAAC,8FAAAA,CAAAA,MAAA,CAEST,KAAK,CAACU,QAAQ,EACxC,cAAA,CAAA;AAED;IACA,IAAIT,UAAU,CAACU,OAAO,EAAE;AACtB,MAAA,IAAMC,UAAU,GAAGX,UAAU,CAACU,OAAO,CAACC,UAAU,IAAIX,UAAU,CAACU,OAAO,CAACE,YAAY,CAAC;AAAEC,QAAAA,IAAI,EAAE;AAAM,OAAE,CAAC;AAErGF,MAAAA,UAAU,CAACJ,SAAS,GAAG,EAAE,CAAA;MACzBI,UAAU,CAACG,WAAW,CAACV,QAAQ,CAACW,OAAO,CAACC,SAAS,CAAC,IAAI,CAAC,CAAC;AACzD;AACH,GAAC,EAAE,CAACjB,KAAK,CAACU,QAAQ,CAAC,CAAC;EAEpB,OACEQ;cACEA,GAAK,CAAA,KAAA,EAAA;AAAAC,MAAAA,GAAG,EAAElB;KAAU;AACnB,GAAA,CAAA;AAEP;;;;"}
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 { defineProperty as _defineProperty, createClass as _createClass, classCallCheck as _classCallCheck, toConsumableArray as _toConsumableArray, inherits as _inherits, objectSpread2 as _objectSpread2, callSuper as _callSuper } from '../_virtual/_rollupPluginBabelHelpers.js';
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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"}