dinocollab-core 2.1.48 → 2.1.50
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/src/data-view/create.search-match.js +1 -1
- package/dist/src/data-view/create.search-match.js.map +1 -1
- package/dist/src/data-view/ui.units.js +1 -1
- package/dist/src/data-view/ui.units.js.map +1 -1
- package/dist/src/data-view/view-mode.content.js +1 -1
- package/dist/src/data-view/view-mode.content.js.map +1 -1
- package/dist/src/form/create.form-base.js +1 -1
- package/dist/src/form/create.form-base.js.map +1 -1
- package/dist/src/form/create.form-comfirm.js +1 -1
- package/dist/src/form/create.form-comfirm.js.map +1 -1
- package/dist/src/form/create.form-grid-layout.js +1 -1
- package/dist/src/form/create.form-grid-layout.js.map +1 -1
- package/dist/src/form/create.select-with-api.js +1 -1
- package/dist/src/form/create.select-with-api.js.map +1 -1
- package/dist/src/form/modal-wrapper.js +1 -1
- package/dist/src/form/modal-wrapper.js.map +1 -1
- package/dist/src/table/create.table.js +1 -1
- package/dist/src/table/create.table.js.map +1 -1
- package/dist/src/table/ui.buttons.js +1 -1
- package/dist/src/table/ui.buttons.js.map +1 -1
- package/dist/src/table-grid/create.table-grid.js +1 -1
- package/dist/src/table-grid/create.table-grid.js.map +1 -1
- package/dist/src/table-grid/item-actions.js +1 -1
- package/dist/src/table-grid/item-actions.js.map +1 -1
- package/dist/src/table-grid/toolbar-pannel.js +1 -1
- package/dist/src/table-grid/toolbar-pannel.js.map +1 -1
- package/dist/types/data-view/ui.units.d.ts +2 -1
- package/dist/types/form/create.select-with-api.d.ts +5 -3
- package/dist/types/table-grid/types.d.ts +2 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineProperty as e,inherits as r,createClass as i,classCallCheck as t,callSuper as n,objectSpread2 as a}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as l,jsx as o}from"react/jsx-runtime";import{Component as c}from"react";import{styled as u,MenuList as s,MenuItem as d,Typography as h}from"@mui/material";import{FilterNotes as f}from"./ui.units.js";import{createFilterStore as m}from"./filter-store.js";import{filterMenuClasses as p,getFieldsMatches as v}from"./helpers.js";import{mapDataViewContext as k}from"./context.js";function S(){var u=function(){function u(){var r;t(this,u);for(var i=arguments.length,c=new Array(i),s=0;s<i;s++)c[s]=arguments[s];return r=n(this,u,[].concat(c)),e(r,"render",function(){return k(function(e){var i,t=e.keyword,n=e.filterBarConfigs,c=n.fields,u=n.quickSearch,s=v(c,t),m=Object.keys(s).filter(function(e){return!!e}),k=null!==(i=null==u?void 0:u.label)&&void 0!==i?i:"Quick search";return l(b,{className:p.list,children:[m.map(function(i,n){var c,u,m=s[i],v=null!==(c=null==m?void 0:m.label)&&void 0!==c?c:i.toString(),k=null==m||null===(u=m.quickSearchMatch)||void 0===u?void 0:u.notes;return l(d,{className:p.item,onClick:function(){return r.handleClick(e,i)},children:[l(h,{noWrap:!0,variant:"body2",component:"span",sx:{flex:1},children:[v,' "',t,'"']}),k&&o(f,a({title:"The ".concat(v," includes"),disabledSize:!0},k))]},i.toString()+n)}),u&&l(d,{className:p.item,onClick:function(){return r.handleQuickSearchClick(e)},children:[l(h,{noWrap:!0,variant:"body2",component:"span",sx:{flex:1},children:[null!=k?k:"Quick search",' "',t,'"']}),u.notes&&o(f,a({title:"The ".concat(k.toLocaleLowerCase()," includes"),disabledSize:!0},u.notes))]})]})})}),e(r,"handleClick",function(e,r){var i,t=m(e.filterState);t.addFilterItem(r,{value:e.keyword},{reason:"quickSearch",area:"input"}),null===(i=e.onFilterStateChange)||void 0===i||i.call(e,t.build())}),e(r,"handleQuickSearchClick",function(e){var r,i=m(e.filterState);i.addQuickSearch(e.keyword,{reason:"quickSearch",area:"input"}),null===(r=e.onFilterStateChange)||void 0===r||r.call(e,i.build())}),r}return r(u,c),i(u)}();return u}var b=u(s)(e({padding:0},".".concat(p.item),{height:"var(--filter-item-height, 40px)",padding:"8px 16px","&:not(:last-child)":{borderBottom:"1px solid var(--color-divider, rgba(145 160 170 / 10%))"}}));export{S as default};
|
|
1
|
+
import{defineProperty as e,inherits as r,createClass as i,classCallCheck as t,callSuper as n,objectSpread2 as a}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as l,jsx as o}from"react/jsx-runtime";import{Component as c}from"react";import{styled as u,MenuList as s,MenuItem as d,Typography as h}from"@mui/material";import{FilterNotes as f}from"./ui.units.js";import{createFilterStore as m}from"./filter-store.js";import{filterMenuClasses as p,getFieldsMatches as v}from"./helpers.js";import{mapDataViewContext as k}from"./context.js";function S(){var u=function(){function u(){var r;t(this,u);for(var i=arguments.length,c=new Array(i),s=0;s<i;s++)c[s]=arguments[s];return r=n(this,u,[].concat(c)),e(r,"render",function(){return k(function(e){var i,t=e.keyword,n=e.filterBarConfigs,c=n.fields,u=n.quickSearch,s=v(c,t),m=Object.keys(s).filter(function(e){return!!e}),k=null!==(i=null==u?void 0:u.label)&&void 0!==i?i:"Quick search";return l(b,{className:p.list,children:[m.map(function(i,n){var c,u,m=s[i],v=null!==(c=null==m?void 0:m.label)&&void 0!==c?c:i.toString(),k=null==m||null===(u=m.quickSearchMatch)||void 0===u?void 0:u.notes;return l(d,{className:p.item,onClick:function(){return r.handleClick(e,i)},children:[l(h,{noWrap:!0,variant:"body2",component:"span",sx:{flex:1},children:[v,' "',t,'"']}),k&&o(f,a({title:"The ".concat(v," includes"),disabledSize:!0},k))]},i.toString()+n)}),u&&l(d,{className:p.item,onClick:function(){return r.handleQuickSearchClick(e)},children:[l(h,{noWrap:!0,variant:"body2",component:"span",sx:{flex:1},children:[null!=k?k:"Quick search",' "',t,'"']}),u.notes&&o(f,a({sx:{ml:1},title:"The ".concat(k.toLocaleLowerCase()," includes"),disabledSize:!0},u.notes))]})]})})}),e(r,"handleClick",function(e,r){var i,t=m(e.filterState);t.addFilterItem(r,{value:e.keyword},{reason:"quickSearch",area:"input"}),null===(i=e.onFilterStateChange)||void 0===i||i.call(e,t.build())}),e(r,"handleQuickSearchClick",function(e){var r,i=m(e.filterState);i.addQuickSearch(e.keyword,{reason:"quickSearch",area:"input"}),null===(r=e.onFilterStateChange)||void 0===r||r.call(e,i.build())}),r}return r(u,c),i(u)}();return u}var b=u(s)(e({padding:0},".".concat(p.item),{height:"var(--filter-item-height, 40px)",padding:"8px 16px","&:not(:last-child)":{borderBottom:"1px solid var(--color-divider, rgba(145 160 170 / 10%))"}}));export{S as default};
|
|
2
2
|
//# sourceMappingURL=create.search-match.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.search-match.js","sources":["../../../src/data-view/create.search-match.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { MenuList, MenuItem, Typography, styled } from '@mui/material'\r\nimport { IFilterConfigs } from './types'\r\nimport { FilterNotes } from './ui.units'\r\nimport { createFilterStore } from './filter-store'\r\nimport { filterMenuClasses, getFieldsMatches } from './helpers'\r\nimport { IDataViewContext, mapDataViewContext } from './context'\r\n\r\nexport interface ISearchMatchProps {}\r\n\r\nfunction createSearchMatch<T>(): ComponentType<ISearchMatchProps> {\r\n class SearchMatch extends Component<ISearchMatchProps> {\r\n render = () => {\r\n return mapDataViewContext<T>((context) => {\r\n const { keyword } = context\r\n const { fields, quickSearch } = context.filterBarConfigs\r\n const fieldMatches = getFieldsMatches<T>(fields, keyword)\r\n const keys = Object.keys(fieldMatches).filter((x) => !!x) as (keyof IFilterConfigs<T>)[]\r\n const quickSearchLabel = quickSearch?.label ?? 'Quick search'\r\n\r\n return (\r\n <MenuListCustom className={filterMenuClasses.list}>\r\n {keys.map((key, i) => {\r\n const item = fieldMatches[key]\r\n const label = item?.label ?? key.toString()\r\n const notes = item?.quickSearchMatch?.notes\r\n return (\r\n <MenuItem key={key.toString() + i} className={filterMenuClasses.item} onClick={() => this.handleClick(context, key)}>\r\n <Typography noWrap variant='body2' component='span' sx={{ flex: 1 }}>\r\n {label} \"{keyword}\"\r\n </Typography>\r\n {notes && <FilterNotes title={`The ${label} includes`} disabledSize {...notes} />}\r\n </MenuItem>\r\n )\r\n })}\r\n {quickSearch && (\r\n <MenuItem className={filterMenuClasses.item} onClick={() => this.handleQuickSearchClick(context)}>\r\n <Typography noWrap variant='body2' component='span' sx={{ flex: 1 }}>\r\n {quickSearchLabel ?? 'Quick search'} "{keyword}"\r\n </Typography>\r\n {quickSearch.notes && (\r\n <FilterNotes title={`The ${quickSearchLabel.toLocaleLowerCase()} includes`} disabledSize {...quickSearch.notes} />\r\n )}\r\n </MenuItem>\r\n )}\r\n </MenuListCustom>\r\n )\r\n })\r\n }\r\n\r\n handleClick = (context: IDataViewContext<T>, field: keyof T) => {\r\n const store = createFilterStore(context.filterState)\r\n store.addFilterItem(field, { value: context.keyword }, { reason: 'quickSearch', area: 'input' })\r\n context.onFilterStateChange?.(store.build())\r\n }\r\n\r\n handleQuickSearchClick = (context: IDataViewContext<T>) => {\r\n const store = createFilterStore(context.filterState)\r\n store.addQuickSearch(context.keyword, { reason: 'quickSearch', area: 'input' })\r\n context.onFilterStateChange?.(store.build())\r\n }\r\n }\r\n return SearchMatch\r\n}\r\nexport default createSearchMatch\r\n\r\nconst MenuListCustom = styled(MenuList)({\r\n padding: 0,\r\n [`.${filterMenuClasses.item}`]: {\r\n height: 'var(--filter-item-height, 40px)',\r\n padding: '8px 16px',\r\n '&:not(:last-child)': {\r\n borderBottom: '1px solid var(--color-divider, rgba(145 160 170 / 10%))'\r\n }\r\n }\r\n})\r\n"],"names":["createSearchMatch","SearchMatch","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","this","concat","_defineProperty","mapDataViewContext","context","_quickSearch$label","keyword","_context$filterBarCon","filterBarConfigs","fields","quickSearch","fieldMatches","getFieldsMatches","keys","Object","filter","x","quickSearchLabel","label","_jsxs","MenuListCustom","className","filterMenuClasses","list","map","key","i","_item$label","_item$quickSearchMatc","item","toString","notes","quickSearchMatch","MenuItem","onClick","handleClick","children","Typography","noWrap","variant","component","sx","flex","_jsx","FilterNotes","_objectSpread","title","disabledSize","handleQuickSearchClick","toLocaleLowerCase","field","_context$onFilterStat","store","createFilterStore","filterState","addFilterItem","value","reason","area","onFilterStateChange","call","build","_context$onFilterStat2","addQuickSearch","_inherits","Component","_createClass","styled","MenuList","padding","height","borderBottom"],"mappings":"oiBAUA,SAASA,IAAiB,IAClBC,aAAY,SAAAA,IAAA,IAAAC,EAAAC,OAAAF,GAAA,IAAA,IAAAG,EAAAC,UAAAC,OAAAC,EAAAC,IAAAA,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAAF,EAAAE,GAAAJ,UAAAI,GAiDf,OAjDeP,EAAAQ,EAAAC,KAAAV,EAAAW,GAAAA,OAAAL,IAAAM,EAAAX,EAAA,SACP,WACP,OAAOY,EAAsB,SAACC,GAAW,IAAAC,EAC/BC,EAAYF,EAAZE,QACRC,EAAgCH,EAAQI,iBAAhCC,EAAMF,EAANE,OAAQC,EAAWH,EAAXG,YACVC,EAAeC,EAAoBH,EAAQH,GAC3CO,EAAOC,OAAOD,KAAKF,GAAcI,OAAO,SAACC,GAAC,QAAOA,IACjDC,EAAqCZ,QAArBA,EAAGK,aAAW,EAAXA,EAAaQ,aAAKb,IAAAA,EAAAA,EAAI,eAE/C,OACEc,EAACC,GAAeC,UAAWC,EAAkBC,eAC1CV,EAAKW,IAAI,SAACC,EAAKC,GAAK,IAAAC,EAAAC,EACbC,EAAOlB,EAAac,GACpBP,EAAmBS,QAAdA,EAAGE,eAAAA,EAAMX,iBAAKS,EAAAA,EAAIF,EAAIK,WAC3BC,EAAQF,SAAsBD,QAAlBA,EAAJC,EAAMG,wBAANJ,IAAsBA,OAAtBA,EAAAA,EAAwBG,MACtC,OACEZ,EAACc,EAAQ,CAA0BZ,UAAWC,EAAkBO,KAAMK,QAAS,WAAF,OAAQ3C,EAAK4C,YAAY/B,EAASqB,EAAI,EAAAW,SAAA,CACjHjB,EAACkB,EAAU,CAACC,QAAM,EAACC,QAAQ,QAAQC,UAAU,OAAOC,GAAI,CAAEC,KAAM,GAC7DN,SAAA,CAAAlB,EAAS,KAAAZ,SAEXyB,GAASY,EAACC,EAAWC,EAAA,CAACC,MAAK7C,OAAAA,OAASiB,EAAgB,aAAE6B,cAAY,GAAKhB,MAJ3DN,EAAIK,WAAaJ,EAOpC,GACChB,GACCS,EAACc,
|
|
1
|
+
{"version":3,"file":"create.search-match.js","sources":["../../../src/data-view/create.search-match.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { MenuList, MenuItem, Typography, styled } from '@mui/material'\r\nimport { IFilterConfigs } from './types'\r\nimport { FilterNotes } from './ui.units'\r\nimport { createFilterStore } from './filter-store'\r\nimport { filterMenuClasses, getFieldsMatches } from './helpers'\r\nimport { IDataViewContext, mapDataViewContext } from './context'\r\n\r\nexport interface ISearchMatchProps {}\r\n\r\nfunction createSearchMatch<T>(): ComponentType<ISearchMatchProps> {\r\n class SearchMatch extends Component<ISearchMatchProps> {\r\n render = () => {\r\n return mapDataViewContext<T>((context) => {\r\n const { keyword } = context\r\n const { fields, quickSearch } = context.filterBarConfigs\r\n const fieldMatches = getFieldsMatches<T>(fields, keyword)\r\n const keys = Object.keys(fieldMatches).filter((x) => !!x) as (keyof IFilterConfigs<T>)[]\r\n const quickSearchLabel = quickSearch?.label ?? 'Quick search'\r\n\r\n return (\r\n <MenuListCustom className={filterMenuClasses.list}>\r\n {keys.map((key, i) => {\r\n const item = fieldMatches[key]\r\n const label = item?.label ?? key.toString()\r\n const notes = item?.quickSearchMatch?.notes\r\n return (\r\n <MenuItem key={key.toString() + i} className={filterMenuClasses.item} onClick={() => this.handleClick(context, key)}>\r\n <Typography noWrap variant='body2' component='span' sx={{ flex: 1 }}>\r\n {label} \"{keyword}\"\r\n </Typography>\r\n {notes && <FilterNotes title={`The ${label} includes`} disabledSize {...notes} />}\r\n </MenuItem>\r\n )\r\n })}\r\n {quickSearch && (\r\n <MenuItem className={filterMenuClasses.item} onClick={() => this.handleQuickSearchClick(context)}>\r\n <Typography noWrap variant='body2' component='span' sx={{ flex: 1 }}>\r\n {quickSearchLabel ?? 'Quick search'} "{keyword}"\r\n </Typography>\r\n {quickSearch.notes && (\r\n <FilterNotes sx={{ ml: 1 }} title={`The ${quickSearchLabel.toLocaleLowerCase()} includes`} disabledSize {...quickSearch.notes} />\r\n )}\r\n </MenuItem>\r\n )}\r\n </MenuListCustom>\r\n )\r\n })\r\n }\r\n\r\n handleClick = (context: IDataViewContext<T>, field: keyof T) => {\r\n const store = createFilterStore(context.filterState)\r\n store.addFilterItem(field, { value: context.keyword }, { reason: 'quickSearch', area: 'input' })\r\n context.onFilterStateChange?.(store.build())\r\n }\r\n\r\n handleQuickSearchClick = (context: IDataViewContext<T>) => {\r\n const store = createFilterStore(context.filterState)\r\n store.addQuickSearch(context.keyword, { reason: 'quickSearch', area: 'input' })\r\n context.onFilterStateChange?.(store.build())\r\n }\r\n }\r\n return SearchMatch\r\n}\r\nexport default createSearchMatch\r\n\r\nconst MenuListCustom = styled(MenuList)({\r\n padding: 0,\r\n [`.${filterMenuClasses.item}`]: {\r\n height: 'var(--filter-item-height, 40px)',\r\n padding: '8px 16px',\r\n '&:not(:last-child)': {\r\n borderBottom: '1px solid var(--color-divider, rgba(145 160 170 / 10%))'\r\n }\r\n }\r\n})\r\n"],"names":["createSearchMatch","SearchMatch","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","this","concat","_defineProperty","mapDataViewContext","context","_quickSearch$label","keyword","_context$filterBarCon","filterBarConfigs","fields","quickSearch","fieldMatches","getFieldsMatches","keys","Object","filter","x","quickSearchLabel","label","_jsxs","MenuListCustom","className","filterMenuClasses","list","map","key","i","_item$label","_item$quickSearchMatc","item","toString","notes","quickSearchMatch","MenuItem","onClick","handleClick","children","Typography","noWrap","variant","component","sx","flex","_jsx","FilterNotes","_objectSpread","title","disabledSize","handleQuickSearchClick","ml","toLocaleLowerCase","field","_context$onFilterStat","store","createFilterStore","filterState","addFilterItem","value","reason","area","onFilterStateChange","call","build","_context$onFilterStat2","addQuickSearch","_inherits","Component","_createClass","styled","MenuList","padding","height","borderBottom"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{objectSpread2 as e,objectWithoutProperties as o,slicedToArray as n}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as i,Fragment as r,jsxs as l}from"react/jsx-runtime";import t,{useRef as a,useState as d}from"react";import{styled as u,ToggleButtonGroup as s,Button as c,colors as f,Box as m,RadioGroup as v,FormGroup as p,ButtonGroup as h,IconButton as g,InputBase as b,InputAdornment as x,Typography as C,Tooltip as z,TextField as y,FormControlLabel as w,Checkbox as S,Radio as k,ToggleButton as T}from"@mui/material";import R from"@mui/icons-material/Close";import B from"@mui/icons-material/Shuffle";import P from"@mui/icons-material/ClearAll";import L from"@mui/icons-material/FilterList";import W from"@mui/icons-material/ArrowUpward";import M from"@mui/icons-material/ArrowDownward";import D from"@mui/icons-material/KeyboardReturn";import E from"@mui/icons-material/KeyboardArrowDown";import{mapDataViewContext as F}from"./context.js";import{RichTooltip as I,HelpOutlinePulseIcon as j}from"../components/rich-tooltip.js";import{createFilterStore as A}from"./filter-store.js";var N=["children"],H={asc:{title:"Ascending",icon:i(W,{fontSize:"small"})},desc:{title:"Descending",icon:i(M,{fontSize:"small"})}},_=function(e){return l(U,{size:"small",value:e.value||"and",exclusive:!0,onChange:function(o,n){n&&e.onChange&&e.onChange(o,n)},children:[i(T,{size:"small",value:"and","aria-label":"and logic",children:"AND"}),i(T,{size:"small",value:"or","aria-label":"or logic",children:"OR"})]})},K=function(e){return l(U,{size:"small",value:e.value||"before",exclusive:!0,onChange:function(o,n){n&&e.onChange&&e.onChange(o,n)},children:[i(T,{size:"small",value:"before","aria-label":"before date",children:"before"}),i(T,{size:"small",value:"after","aria-label":"after date",children:"after"})]})},O=function(e){return l(U,{size:"small",value:e.value||"between",exclusive:!0,onChange:function(o,n){n&&e.onChange&&e.onChange(o,n)},children:[i(T,{size:"small",value:"between","aria-label":"between dates",children:"between"}),i(T,{size:"small",value:"not-between","aria-label":"not between dates",children:"not between"})]})},U=u(s)({"& .MuiToggleButton-root":{color:"#fff",borderColor:"rgba(255, 255, 255, 0.3)",fontSize:"0.65rem",fontWeight:600,lineHeight:1,minWidth:"40px",padding:"6px 8px","&.Mui-selected":{backgroundColor:"#1976d2",color:"#fff","&:hover":{backgroundColor:"#1565c0"}},"&:hover":{backgroundColor:"rgba(255, 255, 255, 0.08)"}}}),Y=function(e){return i(me,{children:e.items.map(function(e,o){return i(C,{component:"li",variant:"body2",children:e},o)})})},$=function(e){var o,n;return i(fe,{className:!0===e.disabledSize?"disabled-size":"",children:i(I,{panel:{title:null!==(o=e.title)&&void 0!==o?o:"The search includes",content:e.renderContent?e.renderContent():i(Y,{items:null!==(n=e.items)&&void 0!==n?n:[]})},children:i(j,{fontSize:"small"})})})},q=t.forwardRef(function(o,n){return i(b,e(e({fullWidth:!0,autoComplete:"off",size:"small"},o),{},{inputRef:n}))}),G=function(o){return l(x,{position:"end",children:[o.keyword&&l(r,{children:[i(J,{size:"small",color:"primary",onClick:o.onEnterSearch,sx:{display:{xs:"none",md:"flex"}},children:l(C,{variant:"caption",children:["Type and hit ",i("b",{children:"Enter ⏎"})," to filter."]})}),i(z,{title:"Press Enter to filter",placement:"bottom",arrow:!0,children:i(g,{size:"small",color:"primary",sx:{display:{xs:"flex",md:"none"}},onClick:o.onEnterSearch,children:i(D,{fontSize:"small"})})})]}),o.keyword&&i(z,{title:"Press Esc to clear",placement:"bottom",arrow:!0,children:i(g,{size:"small",sx:{marginLeft:"8px",color:"text.error","&:hover":{color:"error.main"}},onClick:o.onClear,children:i(R,{fontSize:"small"})})}),o.notes&&i($,e({},o.notes))]})},J=u(c)({padding:"4px 6px",textTransform:"none",lineHeight:1,".MuiTypography-root":{fontWeight:600,b:{fontWeight:700,backgroundColor:f.blue[100],borderRadius:"4px",padding:"2px 4px"}}}),Q=t.forwardRef(function(n,r){var l=n.children,t=o(n,N);return i(V,e(e({size:"small",color:"error",startIcon:i(P,{}),ref:r},t),{},{children:l||"Clear all"}))}),V=u(c)({textTransform:"none",fontWeight:700}),X=t.forwardRef(function(o,n){return i(g,e(e({ref:n,size:"small",sx:{flex:"0 0 auto"}},o),{},{children:i(L,{})}))}),Z=function(o){var n=a(null);return i(r,{children:F(function(r){var t,a,d,u,s,c,f,m,v,p=r.filterState,g=r.filterBarConfigs,b=p.sort?H[null===(t=p.sort)||void 0===t?void 0:t.direction]:{},x=null===(a=g.fields)||void 0===a?void 0:a[null===(d=p.sort)||void 0===d?void 0:d.field],C=(null==x?void 0:x.label)||(null===(u=p.sort)||void 0===u||null===(u=u.field)||void 0===u?void 0:u.toString())||(null===(s=g.sortButton)||void 0===s?void 0:s.text);return C?l(h,{"aria-label":"Button Sort",size:"small",children:[i(ee,e(e(e({size:"small",color:"inherit",startIcon:b.icon||i(B,{fontSize:"small"}),onClick:function(e){e.stopPropagation(),n.current&&clearTimeout(n.current),n.current=setTimeout(function(){return function(){var e,o;if(null!==(e=p.sort)&&void 0!==e&&e.field){var n=null===(o=p.sort)||void 0===o?void 0:o.direction,i=n&&"asc"===n?"desc":"asc",l={field:p.sort.field,direction:i},t=A(p).changeSort(l,{area:"sortButton"});r.onFilterStateChange(t.build())}}()},500)}},null===(v=g.sortButton)||void 0===v?void 0:v.wrapProps),o),{},{children:C})),i(ee,{size:"small",color:"inherit",sx:{p:0},onClick:function(e){return r.onPopperPanelChange(e.currentTarget,"sortButton")},children:i(E,{fontSize:"small"})})]}):i(ee,e(e(e({size:"small",color:"inherit",startIcon:b.icon||i(B,{fontSize:"small"}),endIcon:null!==(c=null===(f=g.sortButton)||void 0===f?void 0:f.icon)&&void 0!==c?c:i(E,{fontSize:"small"}),onClick:function(e){return r.onPopperPanelChange(e.currentTarget,"sortButton")}},null===(m=g.sortButton)||void 0===m?void 0:m.wrapProps),o),{},{children:C||"Sort"}))})})},ee=u(c)(function(e){var o=e.theme;return{height:"var(--filter-bar-height, 40px)",padding:"0 16px",backgroundColor:"dark"===o.palette.mode?o.palette.background.paper:o.palette.grey[50],border:"1px solid var(--color-divider, rgba(145 158 171 / 20%))",textTransform:"none",fontWeight:600,":hover":{backgroundColor:"dark"===o.palette.mode?o.palette.grey[800]:f.grey[100]}}}),oe=function(e){var o=e.area;return i(m,{sx:{padding:"8px",textAlign:"center",border:"1px solid #ddd",borderRadius:"4px"},children:l(C,{variant:"body2",sx:{padding:"8px"},children:["No panel available for area: ",o]})})},ne=function(o){var n=o.label,r=o.notes,t=o.children,a=o.afterTopBar;return l(ie,{children:[l(m,{className:"top-bar",children:[i(C,{variant:"subtitle2",children:n}),a&&i(m,{className:"after-top-bar",children:a}),r&&i($,e({title:"The ".concat(n," includes"),disabledSize:!0},r))]}),i(m,{className:"content",children:t})]})},ie=u(m)({minWidth:"200px",borderRadius:"4px",overflow:"hidden",".top-bar":{display:"flex",alignItems:"center",background:f.grey[900],padding:"8px",gap:"8px",".MuiTypography-root":{color:f.common.white,flex:1}},".after-top-bar":{marginLeft:"8px"},".content":{padding:"8px"}}),re=function(e){var o,n,r,l,t,a=null!==(o=null===(n=e.fieldConfig)||void 0===n?void 0:n.label)&&void 0!==o?o:e.name;return i(ne,{label:a,notes:null===(r=e.fieldConfig)||void 0===r?void 0:r.notes,children:i(y,{autoFocus:!0,name:e.name,size:"small",fullWidth:!0,error:!(null===(l=e.validationResult)||void 0===l||!l.hasError),helperText:null===(t=e.validationResult)||void 0===t?void 0:t.message,sx:{".MuiInputBase-root":{minHeight:"42px"}}})})},le=function(e){var o,n,r,l,t,a=null!==(o=null===(n=e.fieldConfig)||void 0===n?void 0:n.label)&&void 0!==o?o:e.name;return i(ne,{label:a,notes:null===(r=e.fieldConfig)||void 0===r?void 0:r.notes,children:i(te,{name:e.name,className:null!==(l=e.validationResult)&&void 0!==l&&l.hasError?"error":"",onChange:e.onChange,children:null===(t=e.fieldConfig)||void 0===t?void 0:t.options.map(function(e,o){var n;return i(w,{value:e.value,control:i(k,{}),label:null!==(n=e.label)&&void 0!==n?n:e.value},e.value.toString()+o)})})})},te=u(v)({marginLeft:"-8px",marginRight:"-8px","&.error .MuiRadio-root":{color:"#d32f2f"},".MuiFormControlLabel-root":{margin:0},".MuiFormControlLabel-root:hover":{backgroundColor:"rgba(25, 118, 210, 0.04)"}}),ae=function(e){var o,r,t,a,u,s=d("and"),c=n(s,2),f=c[0],m=c[1],v=null!==(o=null===(r=e.fieldConfig)||void 0===r?void 0:r.label)&&void 0!==o?o:e.name;return l(ne,{label:v,notes:null===(t=e.fieldConfig)||void 0===t?void 0:t.notes,afterTopBar:i(_,{value:f,onChange:function(e,o){return m(o)}}),children:[i("input",{type:"hidden",name:"filterLogic",value:f}),i(de,{className:null!==(a=e.validationResult)&&void 0!==a&&a.hasError?"error":"",children:null===(u=e.fieldConfig)||void 0===u?void 0:u.options.map(function(o,n){var r;return i(w,{value:o.value,control:i(S,{name:e.name}),label:null!==(r=o.label)&&void 0!==r?r:o.value,onChange:e.onChange},o.value.toString()+n)})})]})},de=u(p)({marginLeft:"-8px",marginRight:"-8px","&.error .MuiCheckbox-root":{color:"#d32f2f"},".MuiFormControlLabel-root":{margin:0},".MuiFormControlLabel-root:hover":{backgroundColor:"rgba(25, 118, 210, 0.04)"}});var ue=function(e){var o,r,t,a,u,s,c,f,v=d("before"),p=n(v,2),h=p[0],g=p[1],b=d(""),x=n(b,2),C=x[0],z=x[1],w=null!==(o=null===(r=e.fieldConfig)||void 0===r?void 0:r.label)&&void 0!==o?o:e.name;return i(ne,{label:w,notes:null===(t=e.fieldConfig)||void 0===t?void 0:t.notes,afterTopBar:i(K,{value:h,onChange:function(e,o){return g(o)}}),children:l(m,{className:"content",children:[i("input",{type:"hidden",name:"dateLogic",value:h}),i("input",{hidden:!0,type:"text",name:e.name,readOnly:!0,value:(f=C,f&&/^\d{4}-\d{2}-\d{2}$/.test(f)?"".concat(f,"T00:00:00.0000000"):"")}),i(y,{autoFocus:!0,fullWidth:!0,type:"date",size:"small",value:C,onChange:function(e){return z(e.target.value)},error:!(null===(a=e.validationResult)||void 0===a||!a.hasError),helperText:null===(u=e.validationResult)||void 0===u?void 0:u.message,inputProps:{min:null===(s=e.fieldConfig)||void 0===s?void 0:s.minDate,max:null===(c=e.fieldConfig)||void 0===c?void 0:c.maxDate},sx:{".MuiInputBase-root":{minHeight:"42px"}}})]})})},se=function(e){var o,r,t,a,u,s,c,f,m,v,p=d("between"),h=n(p,2),g=h[0],b=h[1],x=null!==(o=null===(r=e.fieldConfig)||void 0===r?void 0:r.label)&&void 0!==o?o:e.name;return l(ne,{label:x,notes:null===(t=e.fieldConfig)||void 0===t?void 0:t.notes,afterTopBar:i(O,{value:g,onChange:function(e,o){return b(o)}}),children:[i("input",{type:"hidden",name:"dateRangeLogic",value:g}),l(ce,{children:[i(y,{autoFocus:!0,fullWidth:!0,name:"".concat(e.name,"_start"),type:"date",size:"small",label:"From",error:!(null===(a=e.validationResult)||void 0===a||!a.hasError),sx:{marginBottom:1},InputLabelProps:{shrink:!0},inputProps:{min:null===(u=e.fieldConfig)||void 0===u?void 0:u.minDate,max:null===(s=e.fieldConfig)||void 0===s?void 0:s.maxDate}}),i(y,{fullWidth:!0,name:"".concat(e.name,"_end"),type:"date",size:"small",label:"To",error:!(null===(c=e.validationResult)||void 0===c||!c.hasError),helperText:null===(f=e.validationResult)||void 0===f?void 0:f.message,InputLabelProps:{shrink:!0},inputProps:{min:null===(m=e.fieldConfig)||void 0===m?void 0:m.minDate,max:null===(v=e.fieldConfig)||void 0===v?void 0:v.maxDate}})]})]})},ce=u(m)({display:"flex",flexDirection:"column",gap:"8px"}),fe=u(m)({display:"inline-flex",flex:"0 0 auto",justifyContent:"center",alignItems:"center","&:not(.disabled-size)":{width:"40px",height:"40px"}}),me=u("ul")({paddingLeft:"1.7rem",marginBottom:0,li:{position:"relative",textAlign:"justify","&::before":{content:'"►"',display:"block",position:"absolute",top:"50%",right:"calc(100% + 6px)",transform:"translateY(-50%)",fontSize:"0.9em"}}});export{Q as ClearAllButton,K as DateLogicToggle,O as DateRangeLogicToggle,X as FilterButton,q as FilterInput,G as FilterInputAdornment,_ as FilterLogicToggle,$ as FilterNotes,ue as MenuWithTypeDate,se as MenuWithTypeDateRange,le as MenuWithTypeSelect,ae as MenuWithTypeSelectMulti,re as MenuWithTypeString,oe as PanelNotFound,Z as SortButton,H as mapSortConfigs};
|
|
1
|
+
import{objectSpread2 as e,objectWithoutProperties as o,slicedToArray as n}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as i,Fragment as r,jsxs as l}from"react/jsx-runtime";import t,{useRef as a,useState as d}from"react";import{styled as u,ToggleButtonGroup as s,Button as c,colors as f,Box as m,RadioGroup as v,FormGroup as p,ButtonGroup as h,IconButton as g,InputBase as b,InputAdornment as x,Typography as C,Tooltip as z,TextField as y,FormControlLabel as w,Checkbox as S,Radio as k,ToggleButton as T}from"@mui/material";import R from"@mui/icons-material/Close";import B from"@mui/icons-material/Shuffle";import P from"@mui/icons-material/ClearAll";import L from"@mui/icons-material/FilterList";import W from"@mui/icons-material/ArrowUpward";import M from"@mui/icons-material/ArrowDownward";import D from"@mui/icons-material/KeyboardReturn";import E from"@mui/icons-material/KeyboardArrowDown";import{mapDataViewContext as F}from"./context.js";import{RichTooltip as I,HelpOutlinePulseIcon as j}from"../components/rich-tooltip.js";import{createFilterStore as A}from"./filter-store.js";var N=["children"],H={asc:{title:"Ascending",icon:i(W,{fontSize:"small"})},desc:{title:"Descending",icon:i(M,{fontSize:"small"})}},_=function(e){return l(U,{size:"small",value:e.value||"and",exclusive:!0,onChange:function(o,n){n&&e.onChange&&e.onChange(o,n)},children:[i(T,{size:"small",value:"and","aria-label":"and logic",children:"AND"}),i(T,{size:"small",value:"or","aria-label":"or logic",children:"OR"})]})},K=function(e){return l(U,{size:"small",value:e.value||"before",exclusive:!0,onChange:function(o,n){n&&e.onChange&&e.onChange(o,n)},children:[i(T,{size:"small",value:"before","aria-label":"before date",children:"before"}),i(T,{size:"small",value:"after","aria-label":"after date",children:"after"})]})},O=function(e){return l(U,{size:"small",value:e.value||"between",exclusive:!0,onChange:function(o,n){n&&e.onChange&&e.onChange(o,n)},children:[i(T,{size:"small",value:"between","aria-label":"between dates",children:"between"}),i(T,{size:"small",value:"not-between","aria-label":"not between dates",children:"not between"})]})},U=u(s)({"& .MuiToggleButton-root":{color:"#fff",borderColor:"rgba(255, 255, 255, 0.3)",fontSize:"0.65rem",fontWeight:600,lineHeight:1,minWidth:"40px",padding:"6px 8px","&.Mui-selected":{backgroundColor:"#1976d2",color:"#fff","&:hover":{backgroundColor:"#1565c0"}},"&:hover":{backgroundColor:"rgba(255, 255, 255, 0.08)"}}}),Y=function(e){return i(me,{children:e.items.map(function(e,o){return i(C,{component:"li",variant:"body2",children:e},o)})})},$=function(e){var o,n;return i(fe,{className:!0===e.disabledSize?"disabled-size":"",sx:e.sx,children:i(I,{panel:{title:null!==(o=e.title)&&void 0!==o?o:"The search includes",content:e.renderContent?e.renderContent():i(Y,{items:null!==(n=e.items)&&void 0!==n?n:[]})},children:i(j,{fontSize:"small"})})})},q=t.forwardRef(function(o,n){return i(b,e(e({fullWidth:!0,autoComplete:"off",size:"small"},o),{},{inputRef:n}))}),G=function(o){return l(x,{position:"end",children:[o.keyword&&l(r,{children:[i(J,{size:"small",color:"primary",onClick:o.onEnterSearch,sx:{display:{xs:"none",md:"flex"}},children:l(C,{variant:"caption",children:["Type and hit ",i("b",{children:"Enter ⏎"})," to filter."]})}),i(z,{title:"Press Enter to filter",placement:"bottom",arrow:!0,children:i(g,{size:"small",color:"primary",sx:{display:{xs:"flex",md:"none"}},onClick:o.onEnterSearch,children:i(D,{fontSize:"small"})})})]}),o.keyword&&i(z,{title:"Press Esc to clear",placement:"bottom",arrow:!0,children:i(g,{size:"small",sx:{marginLeft:"8px",color:"text.error","&:hover":{color:"error.main"}},onClick:o.onClear,children:i(R,{fontSize:"small"})})}),o.notes&&i($,e({},o.notes))]})},J=u(c)({padding:"4px 6px",textTransform:"none",lineHeight:1,".MuiTypography-root":{fontWeight:600,b:{fontWeight:700,backgroundColor:f.blue[100],borderRadius:"4px",padding:"2px 4px"}}}),Q=t.forwardRef(function(n,r){var l=n.children,t=o(n,N);return i(V,e(e({size:"small",color:"error",startIcon:i(P,{}),ref:r},t),{},{children:l||"Clear all"}))}),V=u(c)({textTransform:"none",fontWeight:700}),X=t.forwardRef(function(o,n){return i(g,e(e({ref:n,size:"small",sx:{flex:"0 0 auto"}},o),{},{children:i(L,{})}))}),Z=function(o){var n=a(null);return i(r,{children:F(function(r){var t,a,d,u,s,c,f,m,v,p=r.filterState,g=r.filterBarConfigs,b=p.sort?H[null===(t=p.sort)||void 0===t?void 0:t.direction]:{},x=null===(a=g.fields)||void 0===a?void 0:a[null===(d=p.sort)||void 0===d?void 0:d.field],C=(null==x?void 0:x.label)||(null===(u=p.sort)||void 0===u||null===(u=u.field)||void 0===u?void 0:u.toString())||(null===(s=g.sortButton)||void 0===s?void 0:s.text);return C?l(h,{"aria-label":"Button Sort",size:"small",children:[i(ee,e(e(e({size:"small",color:"inherit",startIcon:b.icon||i(B,{fontSize:"small"}),onClick:function(e){e.stopPropagation(),n.current&&clearTimeout(n.current),n.current=setTimeout(function(){return function(){var e,o;if(null!==(e=p.sort)&&void 0!==e&&e.field){var n=null===(o=p.sort)||void 0===o?void 0:o.direction,i=n&&"asc"===n?"desc":"asc",l={field:p.sort.field,direction:i},t=A(p).changeSort(l,{area:"sortButton"});r.onFilterStateChange(t.build())}}()},500)}},null===(v=g.sortButton)||void 0===v?void 0:v.wrapProps),o),{},{children:C})),i(ee,{size:"small",color:"inherit",sx:{p:0},onClick:function(e){return r.onPopperPanelChange(e.currentTarget,"sortButton")},children:i(E,{fontSize:"small"})})]}):i(ee,e(e(e({size:"small",color:"inherit",startIcon:b.icon||i(B,{fontSize:"small"}),endIcon:null!==(c=null===(f=g.sortButton)||void 0===f?void 0:f.icon)&&void 0!==c?c:i(E,{fontSize:"small"}),onClick:function(e){return r.onPopperPanelChange(e.currentTarget,"sortButton")}},null===(m=g.sortButton)||void 0===m?void 0:m.wrapProps),o),{},{children:C||"Sort"}))})})},ee=u(c)(function(e){var o=e.theme;return{height:"var(--filter-bar-height, 40px)",padding:"0 16px",backgroundColor:"dark"===o.palette.mode?o.palette.background.paper:o.palette.grey[50],border:"1px solid var(--color-divider, rgba(145 158 171 / 20%))",textTransform:"none",fontWeight:600,":hover":{backgroundColor:"dark"===o.palette.mode?o.palette.grey[800]:f.grey[100]}}}),oe=function(e){var o=e.area;return i(m,{sx:{padding:"8px",textAlign:"center",border:"1px solid #ddd",borderRadius:"4px"},children:l(C,{variant:"body2",sx:{padding:"8px"},children:["No panel available for area: ",o]})})},ne=function(o){var n=o.label,r=o.notes,t=o.children,a=o.afterTopBar;return l(ie,{children:[l(m,{className:"top-bar",children:[i(C,{variant:"subtitle2",children:n}),a&&i(m,{className:"after-top-bar",children:a}),r&&i($,e({title:"The ".concat(n," includes"),disabledSize:!0},r))]}),i(m,{className:"content",children:t})]})},ie=u(m)({minWidth:"200px",borderRadius:"4px",overflow:"hidden",".top-bar":{display:"flex",alignItems:"center",background:f.grey[900],padding:"8px",gap:"8px",".MuiTypography-root":{color:f.common.white,flex:1}},".after-top-bar":{marginLeft:"8px"},".content":{padding:"8px"}}),re=function(e){var o,n,r,l,t,a=null!==(o=null===(n=e.fieldConfig)||void 0===n?void 0:n.label)&&void 0!==o?o:e.name;return i(ne,{label:a,notes:null===(r=e.fieldConfig)||void 0===r?void 0:r.notes,children:i(y,{autoFocus:!0,name:e.name,size:"small",fullWidth:!0,error:!(null===(l=e.validationResult)||void 0===l||!l.hasError),helperText:null===(t=e.validationResult)||void 0===t?void 0:t.message,sx:{".MuiInputBase-root":{minHeight:"42px"}}})})},le=function(e){var o,n,r,l,t,a=null!==(o=null===(n=e.fieldConfig)||void 0===n?void 0:n.label)&&void 0!==o?o:e.name;return i(ne,{label:a,notes:null===(r=e.fieldConfig)||void 0===r?void 0:r.notes,children:i(te,{name:e.name,className:null!==(l=e.validationResult)&&void 0!==l&&l.hasError?"error":"",onChange:e.onChange,children:null===(t=e.fieldConfig)||void 0===t?void 0:t.options.map(function(e,o){var n;return i(w,{value:e.value,control:i(k,{}),label:null!==(n=e.label)&&void 0!==n?n:e.value},e.value.toString()+o)})})})},te=u(v)({marginLeft:"-8px",marginRight:"-8px","&.error .MuiRadio-root":{color:"#d32f2f"},".MuiFormControlLabel-root":{margin:0},".MuiFormControlLabel-root:hover":{backgroundColor:"rgba(25, 118, 210, 0.04)"}}),ae=function(e){var o,r,t,a,u,s=d("and"),c=n(s,2),f=c[0],m=c[1],v=null!==(o=null===(r=e.fieldConfig)||void 0===r?void 0:r.label)&&void 0!==o?o:e.name;return l(ne,{label:v,notes:null===(t=e.fieldConfig)||void 0===t?void 0:t.notes,afterTopBar:i(_,{value:f,onChange:function(e,o){return m(o)}}),children:[i("input",{type:"hidden",name:"filterLogic",value:f}),i(de,{className:null!==(a=e.validationResult)&&void 0!==a&&a.hasError?"error":"",children:null===(u=e.fieldConfig)||void 0===u?void 0:u.options.map(function(o,n){var r;return i(w,{value:o.value,control:i(S,{name:e.name}),label:null!==(r=o.label)&&void 0!==r?r:o.value,onChange:e.onChange},o.value.toString()+n)})})]})},de=u(p)({marginLeft:"-8px",marginRight:"-8px","&.error .MuiCheckbox-root":{color:"#d32f2f"},".MuiFormControlLabel-root":{margin:0},".MuiFormControlLabel-root:hover":{backgroundColor:"rgba(25, 118, 210, 0.04)"}});var ue=function(e){var o,r,t,a,u,s,c,f,v=d("before"),p=n(v,2),h=p[0],g=p[1],b=d(""),x=n(b,2),C=x[0],z=x[1],w=null!==(o=null===(r=e.fieldConfig)||void 0===r?void 0:r.label)&&void 0!==o?o:e.name;return i(ne,{label:w,notes:null===(t=e.fieldConfig)||void 0===t?void 0:t.notes,afterTopBar:i(K,{value:h,onChange:function(e,o){return g(o)}}),children:l(m,{className:"content",children:[i("input",{type:"hidden",name:"dateLogic",value:h}),i("input",{hidden:!0,type:"text",name:e.name,readOnly:!0,value:(f=C,f&&/^\d{4}-\d{2}-\d{2}$/.test(f)?"".concat(f,"T00:00:00.0000000"):"")}),i(y,{autoFocus:!0,fullWidth:!0,type:"date",size:"small",value:C,onChange:function(e){return z(e.target.value)},error:!(null===(a=e.validationResult)||void 0===a||!a.hasError),helperText:null===(u=e.validationResult)||void 0===u?void 0:u.message,inputProps:{min:null===(s=e.fieldConfig)||void 0===s?void 0:s.minDate,max:null===(c=e.fieldConfig)||void 0===c?void 0:c.maxDate},sx:{".MuiInputBase-root":{minHeight:"42px"}}})]})})},se=function(e){var o,r,t,a,u,s,c,f,m,v,p=d("between"),h=n(p,2),g=h[0],b=h[1],x=null!==(o=null===(r=e.fieldConfig)||void 0===r?void 0:r.label)&&void 0!==o?o:e.name;return l(ne,{label:x,notes:null===(t=e.fieldConfig)||void 0===t?void 0:t.notes,afterTopBar:i(O,{value:g,onChange:function(e,o){return b(o)}}),children:[i("input",{type:"hidden",name:"dateRangeLogic",value:g}),l(ce,{children:[i(y,{autoFocus:!0,fullWidth:!0,name:"".concat(e.name,"_start"),type:"date",size:"small",label:"From",error:!(null===(a=e.validationResult)||void 0===a||!a.hasError),sx:{marginBottom:1},InputLabelProps:{shrink:!0},inputProps:{min:null===(u=e.fieldConfig)||void 0===u?void 0:u.minDate,max:null===(s=e.fieldConfig)||void 0===s?void 0:s.maxDate}}),i(y,{fullWidth:!0,name:"".concat(e.name,"_end"),type:"date",size:"small",label:"To",error:!(null===(c=e.validationResult)||void 0===c||!c.hasError),helperText:null===(f=e.validationResult)||void 0===f?void 0:f.message,InputLabelProps:{shrink:!0},inputProps:{min:null===(m=e.fieldConfig)||void 0===m?void 0:m.minDate,max:null===(v=e.fieldConfig)||void 0===v?void 0:v.maxDate}})]})]})},ce=u(m)({display:"flex",flexDirection:"column",gap:"8px"}),fe=u(m)({display:"inline-flex",flex:"0 0 auto",justifyContent:"center",alignItems:"center","&:not(.disabled-size)":{width:"40px",height:"40px","& > div":{display:"flex"}}}),me=u("ul")({paddingLeft:"1.7rem",marginBottom:0,li:{position:"relative",textAlign:"justify","&::before":{content:'"►"',display:"block",position:"absolute",top:"50%",right:"calc(100% + 6px)",transform:"translateY(-50%)",fontSize:"0.9em"}}});export{Q as ClearAllButton,K as DateLogicToggle,O as DateRangeLogicToggle,X as FilterButton,q as FilterInput,G as FilterInputAdornment,_ as FilterLogicToggle,$ as FilterNotes,ue as MenuWithTypeDate,se as MenuWithTypeDateRange,le as MenuWithTypeSelect,ae as MenuWithTypeSelectMulti,re as MenuWithTypeString,oe as PanelNotFound,Z as SortButton,H as mapSortConfigs};
|
|
2
2
|
//# sourceMappingURL=ui.units.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.units.js","sources":["../../../src/data-view/ui.units.tsx"],"sourcesContent":["import React, { FC, ReactNode, useRef, useState } from 'react'\r\nimport { Box, Button, ButtonGroup, ButtonProps, Fade, IconButton, InputBaseProps, Typography } from '@mui/material'\r\nimport { FormControlLabel, FormGroup, Radio, RadioGroup, TextField, colors, styled } from '@mui/material'\r\nimport { ToggleButton, Tooltip, ToggleButtonGroup, Checkbox, IconButtonProps, InputAdornment, InputBase } from '@mui/material'\r\nimport CloseIcon from '@mui/icons-material/Close'\r\nimport ShuffleIcon from '@mui/icons-material/Shuffle'\r\nimport ClearAllIcon from '@mui/icons-material/ClearAll'\r\nimport FilterListIcon from '@mui/icons-material/FilterList'\r\nimport ArrowUpwardIcon from '@mui/icons-material/ArrowUpward'\r\nimport ArrowDownwardIcon from '@mui/icons-material/ArrowDownward'\r\nimport KeyboardReturnIcon from '@mui/icons-material/KeyboardReturn'\r\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'\r\nimport { mapDataViewContext } from './context'\r\nimport { IFilterLogic, IFilterDateLogic, IFilterDateRangeLogic, IFilterSelectDef, IValidationResult, IFilterDateDef, IFilterBasicDef } from './types'\r\nimport RichTooltip, { HelpOutlinePulseIcon } from '../components/rich-tooltip'\r\nimport { createFilterStore } from './filter-store'\r\n\r\nexport const mapSortConfigs: Record<'asc' | 'desc', { title: string; icon: ReactNode }> = {\r\n asc: { title: 'Ascending', icon: <ArrowUpwardIcon fontSize='small' /> },\r\n desc: { title: 'Descending', icon: <ArrowDownwardIcon fontSize='small' /> }\r\n}\r\n\r\n//#region Toggle Components\r\nexport interface IFilterLogicToggleProps {\r\n value?: IFilterLogic\r\n onChange?: (event: React.MouseEvent<HTMLElement>, value: IFilterLogic) => void\r\n}\r\n\r\nexport const FilterLogicToggle: FC<IFilterLogicToggleProps> = (props) => {\r\n const handleChange = (event: React.MouseEvent<HTMLElement>, newValue: string | null) => {\r\n if (newValue && props.onChange) {\r\n props.onChange(event, newValue as IFilterLogic)\r\n }\r\n }\r\n\r\n return (\r\n <ToggleButtonGroupCustom size='small' value={props.value || 'and'} exclusive onChange={handleChange}>\r\n <ToggleButton size='small' value='and' aria-label='and logic'>\r\n AND\r\n </ToggleButton>\r\n <ToggleButton size='small' value='or' aria-label='or logic'>\r\n OR\r\n </ToggleButton>\r\n </ToggleButtonGroupCustom>\r\n )\r\n}\r\n\r\nexport interface IDateLogicToggleProps {\r\n value?: IFilterDateLogic\r\n onChange?: (event: React.MouseEvent<HTMLElement>, value: IFilterDateLogic) => void\r\n}\r\n\r\nexport const DateLogicToggle: FC<IDateLogicToggleProps> = (props) => {\r\n const handleChange = (event: React.MouseEvent<HTMLElement>, newValue: string | null) => {\r\n if (newValue && props.onChange) {\r\n props.onChange(event, newValue as IFilterDateLogic)\r\n }\r\n }\r\n\r\n return (\r\n <ToggleButtonGroupCustom size='small' value={props.value || 'before'} exclusive onChange={handleChange}>\r\n <ToggleButton size='small' value='before' aria-label='before date'>\r\n before\r\n </ToggleButton>\r\n <ToggleButton size='small' value='after' aria-label='after date'>\r\n after\r\n </ToggleButton>\r\n </ToggleButtonGroupCustom>\r\n )\r\n}\r\n\r\nexport interface IDateRangeLogicToggleProps {\r\n value?: IFilterDateRangeLogic\r\n onChange?: (event: React.MouseEvent<HTMLElement>, value: IFilterDateRangeLogic) => void\r\n}\r\n\r\nexport const DateRangeLogicToggle: FC<IDateRangeLogicToggleProps> = (props) => {\r\n const handleChange = (event: React.MouseEvent<HTMLElement>, newValue: string | null) => {\r\n if (newValue && props.onChange) {\r\n props.onChange(event, newValue as IFilterDateRangeLogic)\r\n }\r\n }\r\n\r\n return (\r\n <ToggleButtonGroupCustom size='small' value={props.value || 'between'} exclusive onChange={handleChange}>\r\n <ToggleButton size='small' value='between' aria-label='between dates'>\r\n between\r\n </ToggleButton>\r\n <ToggleButton size='small' value='not-between' aria-label='not between dates'>\r\n not between\r\n </ToggleButton>\r\n </ToggleButtonGroupCustom>\r\n )\r\n}\r\n\r\nconst ToggleButtonGroupCustom = styled(ToggleButtonGroup)({\r\n '& .MuiToggleButton-root': {\r\n color: '#fff',\r\n borderColor: 'rgba(255, 255, 255, 0.3)',\r\n fontSize: '0.65rem',\r\n fontWeight: 600,\r\n lineHeight: 1,\r\n minWidth: '40px',\r\n padding: '6px 8px',\r\n '&.Mui-selected': {\r\n backgroundColor: '#1976d2',\r\n color: '#fff',\r\n '&:hover': {\r\n backgroundColor: '#1565c0'\r\n }\r\n },\r\n '&:hover': {\r\n backgroundColor: 'rgba(255, 255, 255, 0.08)'\r\n }\r\n }\r\n})\r\n//#endregion\r\n\r\n//#region Notes\r\nexport interface IFilterNotesProps {\r\n title?: string\r\n items?: string[]\r\n disabledSize?: boolean\r\n renderContent?: () => ReactNode\r\n}\r\n\r\nconst HelpTooltipContent: FC<{ items: string[] }> = (props) => (\r\n <WrapList>\r\n {props.items.map((item, index) => (\r\n <Typography key={index} component='li' variant='body2'>\r\n {item}\r\n </Typography>\r\n ))}\r\n </WrapList>\r\n)\r\n\r\nexport const FilterNotes: FC<IFilterNotesProps> = (props) => (\r\n <WrapIcon className={props.disabledSize === true ? 'disabled-size' : ''}>\r\n <RichTooltip\r\n panel={{\r\n title: props.title ?? 'The search includes',\r\n content: props.renderContent ? props.renderContent() : <HelpTooltipContent items={props.items ?? []} />\r\n }}\r\n >\r\n <HelpOutlinePulseIcon fontSize='small' />\r\n </RichTooltip>\r\n </WrapIcon>\r\n)\r\n//#endregion\r\n\r\n//#region Input\r\nexport const FilterInput = React.forwardRef<HTMLInputElement, InputBaseProps>((props, ref) => {\r\n return <InputBase fullWidth autoComplete='off' size='small' {...props} inputRef={ref} />\r\n})\r\n\r\ninterface IFilterInputAdornmentProps {\r\n notes?: IFilterNotesProps\r\n keyword?: string\r\n onClear: IconButtonProps['onClick']\r\n onEnterSearch: ButtonProps['onClick']\r\n}\r\n\r\nexport const FilterInputAdornment: FC<IFilterInputAdornmentProps> = (props) => (\r\n <InputAdornment position='end'>\r\n {props.keyword && (\r\n <>\r\n <HelpButton size='small' color='primary' onClick={props.onEnterSearch} sx={{ display: { xs: 'none', md: 'flex' } }}>\r\n <Typography variant='caption'>\r\n Type and hit <b>Enter ⏎</b> to filter.\r\n </Typography>\r\n </HelpButton>\r\n <Tooltip title='Press Enter to filter' placement='bottom' arrow>\r\n <IconButton size='small' color='primary' sx={{ display: { xs: 'flex', md: 'none' } }} onClick={props.onEnterSearch}>\r\n <KeyboardReturnIcon fontSize='small' />\r\n </IconButton>\r\n </Tooltip>\r\n </>\r\n )}\r\n {props.keyword && (\r\n <Tooltip title='Press Esc to clear' placement='bottom' arrow>\r\n <IconButton size='small' sx={{ marginLeft: '8px', color: 'text.error', '&:hover': { color: 'error.main' } }} onClick={props.onClear}>\r\n <CloseIcon fontSize='small' />\r\n </IconButton>\r\n </Tooltip>\r\n )}\r\n {props.notes && <FilterNotes {...props.notes} />}\r\n </InputAdornment>\r\n)\r\n\r\nconst HelpButton = styled(Button)({\r\n padding: '4px 6px',\r\n textTransform: 'none',\r\n lineHeight: 1,\r\n '.MuiTypography-root': {\r\n fontWeight: 600,\r\n b: {\r\n fontWeight: 700,\r\n backgroundColor: colors.blue[100],\r\n borderRadius: '4px',\r\n padding: '2px 4px'\r\n }\r\n }\r\n})\r\n//#endregion\r\n\r\n//#region Button\r\nexport interface IButtonClearProps {\r\n visibled?: boolean\r\n onClick: IconButtonProps['onClick']\r\n}\r\n\r\nexport const ButtonClear: FC<IButtonClearProps> = (props) => (\r\n <WrapIcon>\r\n <Tooltip title='Remove filter'>\r\n <Fade in={props.visibled} unmountOnExit>\r\n <IconButton size='small' onClick={props.onClick}>\r\n <CloseIcon fontSize='small' />\r\n </IconButton>\r\n </Fade>\r\n </Tooltip>\r\n </WrapIcon>\r\n)\r\n\r\nexport const ClearAllButton = React.forwardRef<HTMLButtonElement, ButtonProps>(({ children, ...props }, ref) => (\r\n <ClearButtonStyled size='small' color='error' startIcon={<ClearAllIcon />} ref={ref} {...props}>\r\n {children || 'Clear all'}\r\n </ClearButtonStyled>\r\n))\r\n\r\nconst ClearButtonStyled = styled(Button)({ textTransform: 'none', fontWeight: 700 })\r\n\r\nexport const FilterButton = React.forwardRef<HTMLButtonElement, IconButtonProps>((props, ref) => (\r\n <IconButton ref={ref} size='small' sx={{ flex: '0 0 auto' }} {...props}>\r\n <FilterListIcon />\r\n </IconButton>\r\n))\r\n\r\nexport const SortIconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>((props, ref) => (\r\n <IconButton ref={ref} size='small' sx={{ flex: '0 0 auto' }} {...props}>\r\n <ShuffleIcon />\r\n </IconButton>\r\n))\r\n\r\nexport const SortButton: FC<ButtonProps> = (props) => {\r\n const timeoutRef = useRef<NodeJS.Timeout | null>(null)\r\n const debounceDelay = 500\r\n return (\r\n <>\r\n {mapDataViewContext((context) => {\r\n const { filterState, filterBarConfigs: configs } = context\r\n const config: Partial<{ title: string; icon: ReactNode }> = filterState.sort ? mapSortConfigs[filterState.sort?.direction] : {}\r\n const fieldConfig = configs.fields?.[filterState.sort?.field as any]\r\n const text = fieldConfig?.label || filterState.sort?.field?.toString() || configs.sortButton?.text\r\n // Debounce logic to prevent rapid/continuous calls\r\n const handleSortButtonClick = () => {\r\n if (!filterState.sort?.field) return\r\n const currentDirection = filterState.sort?.direction\r\n const newDirection: 'asc' | 'desc' = currentDirection ? (currentDirection === 'asc' ? 'desc' : 'asc') : 'asc'\r\n const newSort = { field: filterState.sort.field, direction: newDirection }\r\n const store = createFilterStore(filterState).changeSort(newSort, { area: 'sortButton' })\r\n context.onFilterStateChange(store.build())\r\n }\r\n\r\n const handlePopperPanelChange = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n e.stopPropagation()\r\n timeoutRef.current && clearTimeout(timeoutRef.current)\r\n timeoutRef.current = setTimeout(() => handleSortButtonClick(), debounceDelay)\r\n }\r\n\r\n if (text) {\r\n return (\r\n <ButtonGroup aria-label='Button Sort' size='small'>\r\n <SortButtonStyled\r\n size='small'\r\n color='inherit'\r\n startIcon={config.icon || <ShuffleIcon fontSize='small' />}\r\n onClick={handlePopperPanelChange}\r\n {...configs.sortButton?.wrapProps}\r\n {...props}\r\n >\r\n {text}\r\n </SortButtonStyled>\r\n <SortButtonStyled\r\n size='small'\r\n color='inherit'\r\n sx={{ p: 0 }}\r\n onClick={(e) => context.onPopperPanelChange(e.currentTarget, 'sortButton')}\r\n >\r\n <KeyboardArrowDownIcon fontSize='small' />\r\n </SortButtonStyled>\r\n </ButtonGroup>\r\n )\r\n }\r\n\r\n return (\r\n <SortButtonStyled\r\n size='small'\r\n color='inherit'\r\n startIcon={config.icon || <ShuffleIcon fontSize='small' />}\r\n endIcon={configs.sortButton?.icon ?? <KeyboardArrowDownIcon fontSize='small' />}\r\n onClick={(e) => context.onPopperPanelChange(e.currentTarget, 'sortButton')}\r\n {...configs.sortButton?.wrapProps}\r\n {...props}\r\n >\r\n {text || 'Sort'}\r\n </SortButtonStyled>\r\n )\r\n })}\r\n </>\r\n )\r\n}\r\n\r\nconst SortButtonStyled = styled(Button)(({ theme }) => ({\r\n height: 'var(--filter-bar-height, 40px)',\r\n padding: '0 16px',\r\n backgroundColor: theme.palette.mode === 'dark' ? theme.palette.background.paper : theme.palette.grey[50],\r\n border: '1px solid var(--color-divider, rgba(145 158 171 / 20%))',\r\n textTransform: 'none',\r\n fontWeight: 600,\r\n ':hover': {\r\n backgroundColor: theme.palette.mode === 'dark' ? theme.palette.grey[800] : colors.grey[100]\r\n }\r\n}))\r\n//#endregion\r\n\r\n//#region Panel Not Found\r\nexport const PanelNotFound: FC<{ area?: string }> = ({ area }) => (\r\n <Box sx={{ padding: '8px', textAlign: 'center', border: '1px solid #ddd', borderRadius: '4px' }}>\r\n <Typography variant='body2' sx={{ padding: '8px' }}>\r\n No panel available for area: {area}\r\n </Typography>\r\n </Box>\r\n)\r\n//#endregion\r\n\r\n//#region Form\r\ninterface IFormContentProps {\r\n label: string\r\n notes?: any\r\n children?: React.ReactNode\r\n afterTopBar?: React.ReactNode\r\n}\r\n\r\nconst FormContent: FC<IFormContentProps> = ({ label, notes, children, afterTopBar }) => (\r\n <FormContentWrapper>\r\n <Box className='top-bar'>\r\n <Typography variant='subtitle2'>{label}</Typography>\r\n {afterTopBar && <Box className='after-top-bar'>{afterTopBar}</Box>}\r\n {notes && <FilterNotes title={`The ${label} includes`} disabledSize {...notes} />}\r\n </Box>\r\n <Box className='content'>{children}</Box>\r\n </FormContentWrapper>\r\n)\r\n\r\nconst FormContentWrapper = styled(Box)({\r\n minWidth: '200px',\r\n borderRadius: '4px',\r\n overflow: 'hidden',\r\n '.top-bar': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n background: colors.grey[900],\r\n padding: '8px',\r\n gap: '8px',\r\n '.MuiTypography-root': {\r\n color: colors.common.white,\r\n flex: 1\r\n }\r\n },\r\n '.after-top-bar': {\r\n marginLeft: '8px'\r\n },\r\n '.content': {\r\n padding: '8px'\r\n }\r\n})\r\n//#endregion\r\n\r\n//#region Menu - String Type\r\ninterface IMenuWithTypeBaseProps {\r\n name: string\r\n validationResult?: IValidationResult\r\n}\r\n\r\ninterface IMenuWithTypeStringProps extends IMenuWithTypeBaseProps {\r\n fieldConfig?: IFilterBasicDef\r\n}\r\n\r\nexport const MenuWithTypeString: FC<IMenuWithTypeStringProps> = (props) => {\r\n const label = props.fieldConfig?.label ?? props.name\r\n return (\r\n <FormContent label={label} notes={props.fieldConfig?.notes}>\r\n <TextField\r\n autoFocus\r\n name={props.name}\r\n size='small'\r\n fullWidth\r\n error={!!props.validationResult?.hasError}\r\n helperText={props.validationResult?.message}\r\n sx={{ '.MuiInputBase-root': { minHeight: '42px' } }}\r\n />\r\n </FormContent>\r\n )\r\n}\r\n//#endregion\r\n\r\n//#region Menu - Select Type\r\nexport interface IMenuWithTypeSelectProps extends IMenuWithTypeBaseProps {\r\n fieldConfig?: IFilterSelectDef\r\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void\r\n}\r\n\r\nexport const MenuWithTypeSelect: FC<IMenuWithTypeSelectProps> = (props) => {\r\n const label = props.fieldConfig?.label ?? props.name\r\n return (\r\n <FormContent label={label} notes={props.fieldConfig?.notes}>\r\n <CustomRadioGroup name={props.name} className={props.validationResult?.hasError ? 'error' : ''} onChange={props.onChange}>\r\n {props.fieldConfig?.options.map((x, i) => (\r\n <FormControlLabel key={x.value.toString() + i} value={x.value} control={<Radio />} label={x.label ?? x.value} />\r\n ))}\r\n </CustomRadioGroup>\r\n </FormContent>\r\n )\r\n}\r\n\r\nconst CustomRadioGroup = styled(RadioGroup)({\r\n marginLeft: '-8px',\r\n marginRight: '-8px',\r\n '&.error .MuiRadio-root': {\r\n color: '#d32f2f'\r\n },\r\n '.MuiFormControlLabel-root': {\r\n margin: 0\r\n },\r\n '.MuiFormControlLabel-root:hover': {\r\n backgroundColor: 'rgba(25, 118, 210, 0.04)'\r\n }\r\n})\r\n//#endregion\r\n\r\n//#region Menu - Select Multi Type\r\nexport interface IMenuWithTypeSelectMultiProps extends IMenuWithTypeBaseProps {\r\n fieldConfig?: IFilterSelectDef\r\n onChange?: (event: React.SyntheticEvent, checked: boolean) => void\r\n}\r\n\r\nexport const MenuWithTypeSelectMulti: FC<IMenuWithTypeSelectMultiProps> = (props) => {\r\n const [filterLogic, setFilterLogic] = useState<IFilterLogic>('and')\r\n const label = props.fieldConfig?.label ?? props.name\r\n return (\r\n <FormContent\r\n label={label}\r\n notes={props.fieldConfig?.notes}\r\n afterTopBar={<FilterLogicToggle value={filterLogic} onChange={(_, value) => setFilterLogic(value)} />}\r\n >\r\n {/* Hidden input for logic value */}\r\n <input type='hidden' name='filterLogic' value={filterLogic} />\r\n <CustomFormGroup className={props.validationResult?.hasError ? 'error' : ''}>\r\n {props.fieldConfig?.options.map((x, i) => (\r\n <FormControlLabel\r\n key={x.value.toString() + i}\r\n value={x.value}\r\n control={<Checkbox name={props.name} />}\r\n label={x.label ?? x.value}\r\n onChange={props.onChange}\r\n />\r\n ))}\r\n </CustomFormGroup>\r\n </FormContent>\r\n )\r\n}\r\n\r\nconst CustomFormGroup = styled(FormGroup)({\r\n marginLeft: '-8px',\r\n marginRight: '-8px',\r\n '&.error .MuiCheckbox-root': {\r\n color: '#d32f2f'\r\n },\r\n '.MuiFormControlLabel-root': {\r\n margin: 0\r\n },\r\n '.MuiFormControlLabel-root:hover': {\r\n backgroundColor: 'rgba(25, 118, 210, 0.04)'\r\n }\r\n})\r\n//#endregion\r\n\r\nfunction convertDateToCustomFormat(dateString: string): string {\r\n if (!dateString || !/^\\d{4}-\\d{2}-\\d{2}$/.test(dateString)) return ''\r\n return `${dateString}T00:00:00.0000000`\r\n}\r\n//#region Menu - Date Type\r\nexport interface IMenuWithTypeDateProps extends IMenuWithTypeBaseProps {\r\n fieldConfig?: IFilterDateDef\r\n}\r\n\r\nexport const MenuWithTypeDate: FC<IMenuWithTypeDateProps> = (props) => {\r\n const [dateLogic, setDateLogic] = useState<IFilterDateLogic>('before')\r\n const [value, setValue] = useState<string>('')\r\n const label = props.fieldConfig?.label ?? props.name\r\n return (\r\n <FormContent\r\n label={label}\r\n notes={props.fieldConfig?.notes}\r\n afterTopBar={<DateLogicToggle value={dateLogic} onChange={(_, value) => setDateLogic(value)} />}\r\n >\r\n <Box className='content'>\r\n {/* Hidden input for logic value */}\r\n <input type='hidden' name='dateLogic' value={dateLogic} />\r\n <input hidden type='text' name={props.name} readOnly value={convertDateToCustomFormat(value)} />\r\n <TextField\r\n autoFocus\r\n fullWidth\r\n type='date'\r\n size='small'\r\n value={value}\r\n onChange={(event) => setValue(event.target.value)}\r\n error={!!props.validationResult?.hasError}\r\n helperText={props.validationResult?.message}\r\n inputProps={{ min: props.fieldConfig?.minDate, max: props.fieldConfig?.maxDate }}\r\n sx={{ '.MuiInputBase-root': { minHeight: '42px' } }}\r\n />\r\n </Box>\r\n </FormContent>\r\n )\r\n}\r\n//#endregion\r\n\r\n//#region Menu - Date Range Type\r\nexport interface IMenuWithTypeDateRangeProps extends IMenuWithTypeBaseProps {\r\n fieldConfig?: IFilterDateDef\r\n}\r\n\r\nexport const MenuWithTypeDateRange: FC<IMenuWithTypeDateRangeProps> = (props) => {\r\n const [dateRangeLogic, setDateRangeLogic] = useState<IFilterDateRangeLogic>('between')\r\n const label = props.fieldConfig?.label ?? props.name\r\n return (\r\n <FormContent\r\n label={label}\r\n notes={props.fieldConfig?.notes}\r\n afterTopBar={<DateRangeLogicToggle value={dateRangeLogic} onChange={(_, value) => setDateRangeLogic(value)} />}\r\n >\r\n {/* Hidden input for logic value */}\r\n <input type='hidden' name='dateRangeLogic' value={dateRangeLogic} />\r\n <DateRangeContainer>\r\n <TextField\r\n autoFocus\r\n fullWidth\r\n name={`${props.name}_start`}\r\n type='date'\r\n size='small'\r\n label='From'\r\n error={!!props.validationResult?.hasError}\r\n sx={{ marginBottom: 1 }}\r\n InputLabelProps={{ shrink: true }}\r\n inputProps={{ min: props.fieldConfig?.minDate, max: props.fieldConfig?.maxDate }}\r\n />\r\n <TextField\r\n fullWidth\r\n name={`${props.name}_end`}\r\n type='date'\r\n size='small'\r\n label='To'\r\n error={!!props.validationResult?.hasError}\r\n helperText={props.validationResult?.message}\r\n InputLabelProps={{ shrink: true }}\r\n inputProps={{ min: props.fieldConfig?.minDate, max: props.fieldConfig?.maxDate }}\r\n />\r\n </DateRangeContainer>\r\n </FormContent>\r\n )\r\n}\r\n\r\nconst DateRangeContainer = styled(Box)({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '8px'\r\n})\r\n//#endregion\r\n\r\n//#region Styled\r\nconst WrapIcon = styled(Box)({\r\n display: 'inline-flex',\r\n flex: '0 0 auto',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n '&:not(.disabled-size)': {\r\n width: '40px',\r\n height: '40px'\r\n }\r\n})\r\n\r\nconst WrapList = styled('ul')({\r\n paddingLeft: '1.7rem',\r\n marginBottom: 0,\r\n li: {\r\n position: 'relative',\r\n textAlign: 'justify',\r\n '&::before': {\r\n content: '\"►\"',\r\n display: 'block',\r\n position: 'absolute',\r\n top: '50%',\r\n right: 'calc(100% + 6px)',\r\n transform: 'translateY(-50%)',\r\n fontSize: '0.9em'\r\n }\r\n }\r\n})\r\n//#endregion\r\n"],"names":["mapSortConfigs","asc","title","icon","_jsx","ArrowUpwardIcon","fontSize","desc","ArrowDownwardIcon","FilterLogicToggle","props","_jsxs","ToggleButtonGroupCustom","size","value","exclusive","onChange","event","newValue","children","ToggleButton","DateLogicToggle","DateRangeLogicToggle","styled","ToggleButtonGroup","color","borderColor","fontWeight","lineHeight","minWidth","padding","backgroundColor","HelpTooltipContent","WrapList","items","map","item","index","Typography","component","variant","FilterNotes","_props$title","_props$items","WrapIcon","className","disabledSize","RichTooltip","panel","content","renderContent","HelpOutlinePulseIcon","FilterInput","React","forwardRef","ref","InputBase","_objectSpread","fullWidth","autoComplete","inputRef","FilterInputAdornment","InputAdornment","position","keyword","_Fragment","HelpButton","onClick","onEnterSearch","sx","display","xs","md","Tooltip","placement","arrow","IconButton","KeyboardReturnIcon","marginLeft","onClear","CloseIcon","notes","Button","textTransform","b","colors","blue","borderRadius","ClearAllButton","_ref","_objectWithoutProperties","_excluded","ClearButtonStyled","startIcon","ClearAllIcon","FilterButton","flex","FilterListIcon","SortButton","timeoutRef","useRef","mapDataViewContext","context","_filterState$sort","_configs$fields","_filterState$sort2","_filterState$sort3","_configs$sortButton","_configs$sortButton$i","_configs$sortButton3","_configs$sortButton4","_configs$sortButton2","filterState","configs","filterBarConfigs","config","sort","direction","fieldConfig","fields","field","text","label","toString","sortButton","ButtonGroup","SortButtonStyled","ShuffleIcon","e","stopPropagation","current","clearTimeout","setTimeout","_filterState$sort4","_filterState$sort5","currentDirection","newDirection","newSort","store","createFilterStore","changeSort","area","onFilterStateChange","build","handleSortButtonClick","wrapProps","p","onPopperPanelChange","currentTarget","KeyboardArrowDownIcon","endIcon","_ref2","theme","height","palette","mode","background","paper","grey","border","PanelNotFound","_ref3","Box","textAlign","FormContent","_ref4","afterTopBar","FormContentWrapper","concat","overflow","alignItems","gap","common","white","MenuWithTypeString","_props$fieldConfig$la","_props$fieldConfig","_props$fieldConfig2","_props$validationResu","_props$validationResu2","name","TextField","autoFocus","error","validationResult","hasError","helperText","message","minHeight","MenuWithTypeSelect","_props$fieldConfig$la2","_props$fieldConfig3","_props$fieldConfig4","_props$validationResu3","_props$fieldConfig5","CustomRadioGroup","options","x","i","_x$label","FormControlLabel","control","Radio","RadioGroup","marginRight","margin","MenuWithTypeSelectMulti","_props$fieldConfig$la3","_props$fieldConfig6","_props$fieldConfig7","_props$validationResu4","_props$fieldConfig8","_useState","useState","_useState2","_slicedToArray","filterLogic","setFilterLogic","_","type","CustomFormGroup","_x$label2","Checkbox","FormGroup","MenuWithTypeDate","_props$fieldConfig$la4","_props$fieldConfig9","_props$fieldConfig0","_props$validationResu5","_props$validationResu6","_props$fieldConfig1","_props$fieldConfig10","dateString","_useState3","_useState4","dateLogic","setDateLogic","_useState5","_useState6","setValue","hidden","readOnly","test","target","inputProps","min","minDate","max","maxDate","MenuWithTypeDateRange","_props$fieldConfig$la5","_props$fieldConfig11","_props$fieldConfig12","_props$validationResu7","_props$fieldConfig13","_props$fieldConfig14","_props$validationResu8","_props$validationResu9","_props$fieldConfig15","_props$fieldConfig16","_useState7","_useState8","dateRangeLogic","setDateRangeLogic","DateRangeContainer","marginBottom","InputLabelProps","shrink","flexDirection","justifyContent","width","paddingLeft","li","top","right","transform"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ui.units.js","sources":["../../../src/data-view/ui.units.tsx"],"sourcesContent":["import React, { FC, ReactNode, useRef, useState } from 'react'\r\nimport { Box, Button, ButtonGroup, ButtonProps, Fade, IconButton, InputBaseProps, SxProps, Theme, Typography } from '@mui/material'\r\nimport { FormControlLabel, FormGroup, Radio, RadioGroup, TextField, colors, styled } from '@mui/material'\r\nimport { ToggleButton, Tooltip, ToggleButtonGroup, Checkbox, IconButtonProps, InputAdornment, InputBase } from '@mui/material'\r\nimport CloseIcon from '@mui/icons-material/Close'\r\nimport ShuffleIcon from '@mui/icons-material/Shuffle'\r\nimport ClearAllIcon from '@mui/icons-material/ClearAll'\r\nimport FilterListIcon from '@mui/icons-material/FilterList'\r\nimport ArrowUpwardIcon from '@mui/icons-material/ArrowUpward'\r\nimport ArrowDownwardIcon from '@mui/icons-material/ArrowDownward'\r\nimport KeyboardReturnIcon from '@mui/icons-material/KeyboardReturn'\r\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'\r\nimport { mapDataViewContext } from './context'\r\nimport { IFilterLogic, IFilterDateLogic, IFilterDateRangeLogic, IFilterSelectDef, IValidationResult, IFilterDateDef, IFilterBasicDef } from './types'\r\nimport RichTooltip, { HelpOutlinePulseIcon } from '../components/rich-tooltip'\r\nimport { createFilterStore } from './filter-store'\r\n\r\nexport const mapSortConfigs: Record<'asc' | 'desc', { title: string; icon: ReactNode }> = {\r\n asc: { title: 'Ascending', icon: <ArrowUpwardIcon fontSize='small' /> },\r\n desc: { title: 'Descending', icon: <ArrowDownwardIcon fontSize='small' /> }\r\n}\r\n\r\n//#region Toggle Components\r\nexport interface IFilterLogicToggleProps {\r\n value?: IFilterLogic\r\n onChange?: (event: React.MouseEvent<HTMLElement>, value: IFilterLogic) => void\r\n}\r\n\r\nexport const FilterLogicToggle: FC<IFilterLogicToggleProps> = (props) => {\r\n const handleChange = (event: React.MouseEvent<HTMLElement>, newValue: string | null) => {\r\n if (newValue && props.onChange) {\r\n props.onChange(event, newValue as IFilterLogic)\r\n }\r\n }\r\n\r\n return (\r\n <ToggleButtonGroupCustom size='small' value={props.value || 'and'} exclusive onChange={handleChange}>\r\n <ToggleButton size='small' value='and' aria-label='and logic'>\r\n AND\r\n </ToggleButton>\r\n <ToggleButton size='small' value='or' aria-label='or logic'>\r\n OR\r\n </ToggleButton>\r\n </ToggleButtonGroupCustom>\r\n )\r\n}\r\n\r\nexport interface IDateLogicToggleProps {\r\n value?: IFilterDateLogic\r\n onChange?: (event: React.MouseEvent<HTMLElement>, value: IFilterDateLogic) => void\r\n}\r\n\r\nexport const DateLogicToggle: FC<IDateLogicToggleProps> = (props) => {\r\n const handleChange = (event: React.MouseEvent<HTMLElement>, newValue: string | null) => {\r\n if (newValue && props.onChange) {\r\n props.onChange(event, newValue as IFilterDateLogic)\r\n }\r\n }\r\n\r\n return (\r\n <ToggleButtonGroupCustom size='small' value={props.value || 'before'} exclusive onChange={handleChange}>\r\n <ToggleButton size='small' value='before' aria-label='before date'>\r\n before\r\n </ToggleButton>\r\n <ToggleButton size='small' value='after' aria-label='after date'>\r\n after\r\n </ToggleButton>\r\n </ToggleButtonGroupCustom>\r\n )\r\n}\r\n\r\nexport interface IDateRangeLogicToggleProps {\r\n value?: IFilterDateRangeLogic\r\n onChange?: (event: React.MouseEvent<HTMLElement>, value: IFilterDateRangeLogic) => void\r\n}\r\n\r\nexport const DateRangeLogicToggle: FC<IDateRangeLogicToggleProps> = (props) => {\r\n const handleChange = (event: React.MouseEvent<HTMLElement>, newValue: string | null) => {\r\n if (newValue && props.onChange) {\r\n props.onChange(event, newValue as IFilterDateRangeLogic)\r\n }\r\n }\r\n\r\n return (\r\n <ToggleButtonGroupCustom size='small' value={props.value || 'between'} exclusive onChange={handleChange}>\r\n <ToggleButton size='small' value='between' aria-label='between dates'>\r\n between\r\n </ToggleButton>\r\n <ToggleButton size='small' value='not-between' aria-label='not between dates'>\r\n not between\r\n </ToggleButton>\r\n </ToggleButtonGroupCustom>\r\n )\r\n}\r\n\r\nconst ToggleButtonGroupCustom = styled(ToggleButtonGroup)({\r\n '& .MuiToggleButton-root': {\r\n color: '#fff',\r\n borderColor: 'rgba(255, 255, 255, 0.3)',\r\n fontSize: '0.65rem',\r\n fontWeight: 600,\r\n lineHeight: 1,\r\n minWidth: '40px',\r\n padding: '6px 8px',\r\n '&.Mui-selected': {\r\n backgroundColor: '#1976d2',\r\n color: '#fff',\r\n '&:hover': {\r\n backgroundColor: '#1565c0'\r\n }\r\n },\r\n '&:hover': {\r\n backgroundColor: 'rgba(255, 255, 255, 0.08)'\r\n }\r\n }\r\n})\r\n//#endregion\r\n\r\n//#region Notes\r\nexport interface IFilterNotesProps {\r\n title?: string\r\n items?: string[]\r\n disabledSize?: boolean\r\n renderContent?: () => ReactNode\r\n sx?: SxProps<Theme>\r\n}\r\n\r\nconst HelpTooltipContent: FC<{ items: string[] }> = (props) => (\r\n <WrapList>\r\n {props.items.map((item, index) => (\r\n <Typography key={index} component='li' variant='body2'>\r\n {item}\r\n </Typography>\r\n ))}\r\n </WrapList>\r\n)\r\n\r\nexport const FilterNotes: FC<IFilterNotesProps> = (props) => (\r\n <WrapIcon className={props.disabledSize === true ? 'disabled-size' : ''} sx={props.sx}>\r\n <RichTooltip\r\n panel={{\r\n title: props.title ?? 'The search includes',\r\n content: props.renderContent ? props.renderContent() : <HelpTooltipContent items={props.items ?? []} />\r\n }}\r\n >\r\n <HelpOutlinePulseIcon fontSize='small' />\r\n </RichTooltip>\r\n </WrapIcon>\r\n)\r\n//#endregion\r\n\r\n//#region Input\r\nexport const FilterInput = React.forwardRef<HTMLInputElement, InputBaseProps>((props, ref) => {\r\n return <InputBase fullWidth autoComplete='off' size='small' {...props} inputRef={ref} />\r\n})\r\n\r\ninterface IFilterInputAdornmentProps {\r\n notes?: IFilterNotesProps\r\n keyword?: string\r\n onClear: IconButtonProps['onClick']\r\n onEnterSearch: ButtonProps['onClick']\r\n}\r\n\r\nexport const FilterInputAdornment: FC<IFilterInputAdornmentProps> = (props) => (\r\n <InputAdornment position='end'>\r\n {props.keyword && (\r\n <>\r\n <HelpButton size='small' color='primary' onClick={props.onEnterSearch} sx={{ display: { xs: 'none', md: 'flex' } }}>\r\n <Typography variant='caption'>\r\n Type and hit <b>Enter ⏎</b> to filter.\r\n </Typography>\r\n </HelpButton>\r\n <Tooltip title='Press Enter to filter' placement='bottom' arrow>\r\n <IconButton size='small' color='primary' sx={{ display: { xs: 'flex', md: 'none' } }} onClick={props.onEnterSearch}>\r\n <KeyboardReturnIcon fontSize='small' />\r\n </IconButton>\r\n </Tooltip>\r\n </>\r\n )}\r\n {props.keyword && (\r\n <Tooltip title='Press Esc to clear' placement='bottom' arrow>\r\n <IconButton size='small' sx={{ marginLeft: '8px', color: 'text.error', '&:hover': { color: 'error.main' } }} onClick={props.onClear}>\r\n <CloseIcon fontSize='small' />\r\n </IconButton>\r\n </Tooltip>\r\n )}\r\n {props.notes && <FilterNotes {...props.notes} />}\r\n </InputAdornment>\r\n)\r\n\r\nconst HelpButton = styled(Button)({\r\n padding: '4px 6px',\r\n textTransform: 'none',\r\n lineHeight: 1,\r\n '.MuiTypography-root': {\r\n fontWeight: 600,\r\n b: {\r\n fontWeight: 700,\r\n backgroundColor: colors.blue[100],\r\n borderRadius: '4px',\r\n padding: '2px 4px'\r\n }\r\n }\r\n})\r\n//#endregion\r\n\r\n//#region Button\r\nexport interface IButtonClearProps {\r\n visibled?: boolean\r\n onClick: IconButtonProps['onClick']\r\n}\r\n\r\nexport const ButtonClear: FC<IButtonClearProps> = (props) => (\r\n <WrapIcon>\r\n <Tooltip title='Remove filter'>\r\n <Fade in={props.visibled} unmountOnExit>\r\n <IconButton size='small' onClick={props.onClick}>\r\n <CloseIcon fontSize='small' />\r\n </IconButton>\r\n </Fade>\r\n </Tooltip>\r\n </WrapIcon>\r\n)\r\n\r\nexport const ClearAllButton = React.forwardRef<HTMLButtonElement, ButtonProps>(({ children, ...props }, ref) => (\r\n <ClearButtonStyled size='small' color='error' startIcon={<ClearAllIcon />} ref={ref} {...props}>\r\n {children || 'Clear all'}\r\n </ClearButtonStyled>\r\n))\r\n\r\nconst ClearButtonStyled = styled(Button)({ textTransform: 'none', fontWeight: 700 })\r\n\r\nexport const FilterButton = React.forwardRef<HTMLButtonElement, IconButtonProps>((props, ref) => (\r\n <IconButton ref={ref} size='small' sx={{ flex: '0 0 auto' }} {...props}>\r\n <FilterListIcon />\r\n </IconButton>\r\n))\r\n\r\nexport const SortIconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>((props, ref) => (\r\n <IconButton ref={ref} size='small' sx={{ flex: '0 0 auto' }} {...props}>\r\n <ShuffleIcon />\r\n </IconButton>\r\n))\r\n\r\nexport const SortButton: FC<ButtonProps> = (props) => {\r\n const timeoutRef = useRef<NodeJS.Timeout | null>(null)\r\n const debounceDelay = 500\r\n return (\r\n <>\r\n {mapDataViewContext((context) => {\r\n const { filterState, filterBarConfigs: configs } = context\r\n const config: Partial<{ title: string; icon: ReactNode }> = filterState.sort ? mapSortConfigs[filterState.sort?.direction] : {}\r\n const fieldConfig = configs.fields?.[filterState.sort?.field as any]\r\n const text = fieldConfig?.label || filterState.sort?.field?.toString() || configs.sortButton?.text\r\n // Debounce logic to prevent rapid/continuous calls\r\n const handleSortButtonClick = () => {\r\n if (!filterState.sort?.field) return\r\n const currentDirection = filterState.sort?.direction\r\n const newDirection: 'asc' | 'desc' = currentDirection ? (currentDirection === 'asc' ? 'desc' : 'asc') : 'asc'\r\n const newSort = { field: filterState.sort.field, direction: newDirection }\r\n const store = createFilterStore(filterState).changeSort(newSort, { area: 'sortButton' })\r\n context.onFilterStateChange(store.build())\r\n }\r\n\r\n const handlePopperPanelChange = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n e.stopPropagation()\r\n timeoutRef.current && clearTimeout(timeoutRef.current)\r\n timeoutRef.current = setTimeout(() => handleSortButtonClick(), debounceDelay)\r\n }\r\n\r\n if (text) {\r\n return (\r\n <ButtonGroup aria-label='Button Sort' size='small'>\r\n <SortButtonStyled\r\n size='small'\r\n color='inherit'\r\n startIcon={config.icon || <ShuffleIcon fontSize='small' />}\r\n onClick={handlePopperPanelChange}\r\n {...configs.sortButton?.wrapProps}\r\n {...props}\r\n >\r\n {text}\r\n </SortButtonStyled>\r\n <SortButtonStyled\r\n size='small'\r\n color='inherit'\r\n sx={{ p: 0 }}\r\n onClick={(e) => context.onPopperPanelChange(e.currentTarget, 'sortButton')}\r\n >\r\n <KeyboardArrowDownIcon fontSize='small' />\r\n </SortButtonStyled>\r\n </ButtonGroup>\r\n )\r\n }\r\n\r\n return (\r\n <SortButtonStyled\r\n size='small'\r\n color='inherit'\r\n startIcon={config.icon || <ShuffleIcon fontSize='small' />}\r\n endIcon={configs.sortButton?.icon ?? <KeyboardArrowDownIcon fontSize='small' />}\r\n onClick={(e) => context.onPopperPanelChange(e.currentTarget, 'sortButton')}\r\n {...configs.sortButton?.wrapProps}\r\n {...props}\r\n >\r\n {text || 'Sort'}\r\n </SortButtonStyled>\r\n )\r\n })}\r\n </>\r\n )\r\n}\r\n\r\nconst SortButtonStyled = styled(Button)(({ theme }) => ({\r\n height: 'var(--filter-bar-height, 40px)',\r\n padding: '0 16px',\r\n backgroundColor: theme.palette.mode === 'dark' ? theme.palette.background.paper : theme.palette.grey[50],\r\n border: '1px solid var(--color-divider, rgba(145 158 171 / 20%))',\r\n textTransform: 'none',\r\n fontWeight: 600,\r\n ':hover': {\r\n backgroundColor: theme.palette.mode === 'dark' ? theme.palette.grey[800] : colors.grey[100]\r\n }\r\n}))\r\n//#endregion\r\n\r\n//#region Panel Not Found\r\nexport const PanelNotFound: FC<{ area?: string }> = ({ area }) => (\r\n <Box sx={{ padding: '8px', textAlign: 'center', border: '1px solid #ddd', borderRadius: '4px' }}>\r\n <Typography variant='body2' sx={{ padding: '8px' }}>\r\n No panel available for area: {area}\r\n </Typography>\r\n </Box>\r\n)\r\n//#endregion\r\n\r\n//#region Form\r\ninterface IFormContentProps {\r\n label: string\r\n notes?: any\r\n children?: React.ReactNode\r\n afterTopBar?: React.ReactNode\r\n}\r\n\r\nconst FormContent: FC<IFormContentProps> = ({ label, notes, children, afterTopBar }) => (\r\n <FormContentWrapper>\r\n <Box className='top-bar'>\r\n <Typography variant='subtitle2'>{label}</Typography>\r\n {afterTopBar && <Box className='after-top-bar'>{afterTopBar}</Box>}\r\n {notes && <FilterNotes title={`The ${label} includes`} disabledSize {...notes} />}\r\n </Box>\r\n <Box className='content'>{children}</Box>\r\n </FormContentWrapper>\r\n)\r\n\r\nconst FormContentWrapper = styled(Box)({\r\n minWidth: '200px',\r\n borderRadius: '4px',\r\n overflow: 'hidden',\r\n '.top-bar': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n background: colors.grey[900],\r\n padding: '8px',\r\n gap: '8px',\r\n '.MuiTypography-root': {\r\n color: colors.common.white,\r\n flex: 1\r\n }\r\n },\r\n '.after-top-bar': {\r\n marginLeft: '8px'\r\n },\r\n '.content': {\r\n padding: '8px'\r\n }\r\n})\r\n//#endregion\r\n\r\n//#region Menu - String Type\r\ninterface IMenuWithTypeBaseProps {\r\n name: string\r\n validationResult?: IValidationResult\r\n}\r\n\r\ninterface IMenuWithTypeStringProps extends IMenuWithTypeBaseProps {\r\n fieldConfig?: IFilterBasicDef\r\n}\r\n\r\nexport const MenuWithTypeString: FC<IMenuWithTypeStringProps> = (props) => {\r\n const label = props.fieldConfig?.label ?? props.name\r\n return (\r\n <FormContent label={label} notes={props.fieldConfig?.notes}>\r\n <TextField\r\n autoFocus\r\n name={props.name}\r\n size='small'\r\n fullWidth\r\n error={!!props.validationResult?.hasError}\r\n helperText={props.validationResult?.message}\r\n sx={{ '.MuiInputBase-root': { minHeight: '42px' } }}\r\n />\r\n </FormContent>\r\n )\r\n}\r\n//#endregion\r\n\r\n//#region Menu - Select Type\r\nexport interface IMenuWithTypeSelectProps extends IMenuWithTypeBaseProps {\r\n fieldConfig?: IFilterSelectDef\r\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void\r\n}\r\n\r\nexport const MenuWithTypeSelect: FC<IMenuWithTypeSelectProps> = (props) => {\r\n const label = props.fieldConfig?.label ?? props.name\r\n return (\r\n <FormContent label={label} notes={props.fieldConfig?.notes}>\r\n <CustomRadioGroup name={props.name} className={props.validationResult?.hasError ? 'error' : ''} onChange={props.onChange}>\r\n {props.fieldConfig?.options.map((x, i) => (\r\n <FormControlLabel key={x.value.toString() + i} value={x.value} control={<Radio />} label={x.label ?? x.value} />\r\n ))}\r\n </CustomRadioGroup>\r\n </FormContent>\r\n )\r\n}\r\n\r\nconst CustomRadioGroup = styled(RadioGroup)({\r\n marginLeft: '-8px',\r\n marginRight: '-8px',\r\n '&.error .MuiRadio-root': {\r\n color: '#d32f2f'\r\n },\r\n '.MuiFormControlLabel-root': {\r\n margin: 0\r\n },\r\n '.MuiFormControlLabel-root:hover': {\r\n backgroundColor: 'rgba(25, 118, 210, 0.04)'\r\n }\r\n})\r\n//#endregion\r\n\r\n//#region Menu - Select Multi Type\r\nexport interface IMenuWithTypeSelectMultiProps extends IMenuWithTypeBaseProps {\r\n fieldConfig?: IFilterSelectDef\r\n onChange?: (event: React.SyntheticEvent, checked: boolean) => void\r\n}\r\n\r\nexport const MenuWithTypeSelectMulti: FC<IMenuWithTypeSelectMultiProps> = (props) => {\r\n const [filterLogic, setFilterLogic] = useState<IFilterLogic>('and')\r\n const label = props.fieldConfig?.label ?? props.name\r\n return (\r\n <FormContent\r\n label={label}\r\n notes={props.fieldConfig?.notes}\r\n afterTopBar={<FilterLogicToggle value={filterLogic} onChange={(_, value) => setFilterLogic(value)} />}\r\n >\r\n {/* Hidden input for logic value */}\r\n <input type='hidden' name='filterLogic' value={filterLogic} />\r\n <CustomFormGroup className={props.validationResult?.hasError ? 'error' : ''}>\r\n {props.fieldConfig?.options.map((x, i) => (\r\n <FormControlLabel\r\n key={x.value.toString() + i}\r\n value={x.value}\r\n control={<Checkbox name={props.name} />}\r\n label={x.label ?? x.value}\r\n onChange={props.onChange}\r\n />\r\n ))}\r\n </CustomFormGroup>\r\n </FormContent>\r\n )\r\n}\r\n\r\nconst CustomFormGroup = styled(FormGroup)({\r\n marginLeft: '-8px',\r\n marginRight: '-8px',\r\n '&.error .MuiCheckbox-root': {\r\n color: '#d32f2f'\r\n },\r\n '.MuiFormControlLabel-root': {\r\n margin: 0\r\n },\r\n '.MuiFormControlLabel-root:hover': {\r\n backgroundColor: 'rgba(25, 118, 210, 0.04)'\r\n }\r\n})\r\n//#endregion\r\n\r\nfunction convertDateToCustomFormat(dateString: string): string {\r\n if (!dateString || !/^\\d{4}-\\d{2}-\\d{2}$/.test(dateString)) return ''\r\n return `${dateString}T00:00:00.0000000`\r\n}\r\n//#region Menu - Date Type\r\nexport interface IMenuWithTypeDateProps extends IMenuWithTypeBaseProps {\r\n fieldConfig?: IFilterDateDef\r\n}\r\n\r\nexport const MenuWithTypeDate: FC<IMenuWithTypeDateProps> = (props) => {\r\n const [dateLogic, setDateLogic] = useState<IFilterDateLogic>('before')\r\n const [value, setValue] = useState<string>('')\r\n const label = props.fieldConfig?.label ?? props.name\r\n return (\r\n <FormContent\r\n label={label}\r\n notes={props.fieldConfig?.notes}\r\n afterTopBar={<DateLogicToggle value={dateLogic} onChange={(_, value) => setDateLogic(value)} />}\r\n >\r\n <Box className='content'>\r\n {/* Hidden input for logic value */}\r\n <input type='hidden' name='dateLogic' value={dateLogic} />\r\n <input hidden type='text' name={props.name} readOnly value={convertDateToCustomFormat(value)} />\r\n <TextField\r\n autoFocus\r\n fullWidth\r\n type='date'\r\n size='small'\r\n value={value}\r\n onChange={(event) => setValue(event.target.value)}\r\n error={!!props.validationResult?.hasError}\r\n helperText={props.validationResult?.message}\r\n inputProps={{ min: props.fieldConfig?.minDate, max: props.fieldConfig?.maxDate }}\r\n sx={{ '.MuiInputBase-root': { minHeight: '42px' } }}\r\n />\r\n </Box>\r\n </FormContent>\r\n )\r\n}\r\n//#endregion\r\n\r\n//#region Menu - Date Range Type\r\nexport interface IMenuWithTypeDateRangeProps extends IMenuWithTypeBaseProps {\r\n fieldConfig?: IFilterDateDef\r\n}\r\n\r\nexport const MenuWithTypeDateRange: FC<IMenuWithTypeDateRangeProps> = (props) => {\r\n const [dateRangeLogic, setDateRangeLogic] = useState<IFilterDateRangeLogic>('between')\r\n const label = props.fieldConfig?.label ?? props.name\r\n return (\r\n <FormContent\r\n label={label}\r\n notes={props.fieldConfig?.notes}\r\n afterTopBar={<DateRangeLogicToggle value={dateRangeLogic} onChange={(_, value) => setDateRangeLogic(value)} />}\r\n >\r\n {/* Hidden input for logic value */}\r\n <input type='hidden' name='dateRangeLogic' value={dateRangeLogic} />\r\n <DateRangeContainer>\r\n <TextField\r\n autoFocus\r\n fullWidth\r\n name={`${props.name}_start`}\r\n type='date'\r\n size='small'\r\n label='From'\r\n error={!!props.validationResult?.hasError}\r\n sx={{ marginBottom: 1 }}\r\n InputLabelProps={{ shrink: true }}\r\n inputProps={{ min: props.fieldConfig?.minDate, max: props.fieldConfig?.maxDate }}\r\n />\r\n <TextField\r\n fullWidth\r\n name={`${props.name}_end`}\r\n type='date'\r\n size='small'\r\n label='To'\r\n error={!!props.validationResult?.hasError}\r\n helperText={props.validationResult?.message}\r\n InputLabelProps={{ shrink: true }}\r\n inputProps={{ min: props.fieldConfig?.minDate, max: props.fieldConfig?.maxDate }}\r\n />\r\n </DateRangeContainer>\r\n </FormContent>\r\n )\r\n}\r\n\r\nconst DateRangeContainer = styled(Box)({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '8px'\r\n})\r\n//#endregion\r\n\r\n//#region Styled\r\nconst WrapIcon = styled(Box)({\r\n display: 'inline-flex',\r\n flex: '0 0 auto',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n '&:not(.disabled-size)': {\r\n width: '40px',\r\n height: '40px',\r\n '& > div': { display: 'flex' }\r\n }\r\n})\r\n\r\nconst WrapList = styled('ul')({\r\n paddingLeft: '1.7rem',\r\n marginBottom: 0,\r\n li: {\r\n position: 'relative',\r\n textAlign: 'justify',\r\n '&::before': {\r\n content: '\"►\"',\r\n display: 'block',\r\n position: 'absolute',\r\n top: '50%',\r\n right: 'calc(100% + 6px)',\r\n transform: 'translateY(-50%)',\r\n fontSize: '0.9em'\r\n }\r\n }\r\n})\r\n//#endregion\r\n"],"names":["mapSortConfigs","asc","title","icon","_jsx","ArrowUpwardIcon","fontSize","desc","ArrowDownwardIcon","FilterLogicToggle","props","_jsxs","ToggleButtonGroupCustom","size","value","exclusive","onChange","event","newValue","children","ToggleButton","DateLogicToggle","DateRangeLogicToggle","styled","ToggleButtonGroup","color","borderColor","fontWeight","lineHeight","minWidth","padding","backgroundColor","HelpTooltipContent","WrapList","items","map","item","index","Typography","component","variant","FilterNotes","_props$title","_props$items","WrapIcon","className","disabledSize","sx","RichTooltip","panel","content","renderContent","HelpOutlinePulseIcon","FilterInput","React","forwardRef","ref","InputBase","_objectSpread","fullWidth","autoComplete","inputRef","FilterInputAdornment","InputAdornment","position","keyword","_Fragment","HelpButton","onClick","onEnterSearch","display","xs","md","Tooltip","placement","arrow","IconButton","KeyboardReturnIcon","marginLeft","onClear","CloseIcon","notes","Button","textTransform","b","colors","blue","borderRadius","ClearAllButton","_ref","_objectWithoutProperties","_excluded","ClearButtonStyled","startIcon","ClearAllIcon","FilterButton","flex","FilterListIcon","SortButton","timeoutRef","useRef","mapDataViewContext","context","_filterState$sort","_configs$fields","_filterState$sort2","_filterState$sort3","_configs$sortButton","_configs$sortButton$i","_configs$sortButton3","_configs$sortButton4","_configs$sortButton2","filterState","configs","filterBarConfigs","config","sort","direction","fieldConfig","fields","field","text","label","toString","sortButton","ButtonGroup","SortButtonStyled","ShuffleIcon","e","stopPropagation","current","clearTimeout","setTimeout","_filterState$sort4","_filterState$sort5","currentDirection","newDirection","newSort","store","createFilterStore","changeSort","area","onFilterStateChange","build","handleSortButtonClick","wrapProps","p","onPopperPanelChange","currentTarget","KeyboardArrowDownIcon","endIcon","_ref2","theme","height","palette","mode","background","paper","grey","border","PanelNotFound","_ref3","Box","textAlign","FormContent","_ref4","afterTopBar","FormContentWrapper","concat","overflow","alignItems","gap","common","white","MenuWithTypeString","_props$fieldConfig$la","_props$fieldConfig","_props$fieldConfig2","_props$validationResu","_props$validationResu2","name","TextField","autoFocus","error","validationResult","hasError","helperText","message","minHeight","MenuWithTypeSelect","_props$fieldConfig$la2","_props$fieldConfig3","_props$fieldConfig4","_props$validationResu3","_props$fieldConfig5","CustomRadioGroup","options","x","i","_x$label","FormControlLabel","control","Radio","RadioGroup","marginRight","margin","MenuWithTypeSelectMulti","_props$fieldConfig$la3","_props$fieldConfig6","_props$fieldConfig7","_props$validationResu4","_props$fieldConfig8","_useState","useState","_useState2","_slicedToArray","filterLogic","setFilterLogic","_","type","CustomFormGroup","_x$label2","Checkbox","FormGroup","MenuWithTypeDate","_props$fieldConfig$la4","_props$fieldConfig9","_props$fieldConfig0","_props$validationResu5","_props$validationResu6","_props$fieldConfig1","_props$fieldConfig10","dateString","_useState3","_useState4","dateLogic","setDateLogic","_useState5","_useState6","setValue","hidden","readOnly","test","target","inputProps","min","minDate","max","maxDate","MenuWithTypeDateRange","_props$fieldConfig$la5","_props$fieldConfig11","_props$fieldConfig12","_props$validationResu7","_props$fieldConfig13","_props$fieldConfig14","_props$validationResu8","_props$validationResu9","_props$fieldConfig15","_props$fieldConfig16","_useState7","_useState8","dateRangeLogic","setDateRangeLogic","DateRangeContainer","marginBottom","InputLabelProps","shrink","flexDirection","justifyContent","width","paddingLeft","li","top","right","transform"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{inherits as
|
|
1
|
+
import{inherits as o,createClass as e,objectWithoutProperties as r,objectSpread2 as t,classCallCheck as i,callSuper as n,defineProperty as l}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as a}from"react/jsx-runtime";import{memo as s,Component as u}from"react";import{styled as d,Box as c,colors as p,Grid as h,Stack as g,Typography as m}from"@mui/material";import{DataGrid as f}from"@mui/x-data-grid";var v=["Element"],b=["Element"],x=function(){return a(m,{variant:"subtitle1",color:"textSecondary",children:"No items to display"})};function S(){return s(function(){function l(o){var e;return i(this,l),(e=n(this,l,[o])).ElementComponent=o.configs.Element||x,e}return o(l,u),e(l,[{key:"shouldComponentUpdate",value:function(o){var e=this.props.configs,t=e.Element,i=r(e,v),n=o.configs,l=n.Element,a=r(n,b);t!==l&&(this.ElementComponent=o.configs.Element||x);var s=JSON.stringify(i)!==JSON.stringify(a);return JSON.stringify(this.props.data)!==JSON.stringify(o.data)||s}},{key:"render",value:function(){var o=this.ElementComponent,e=this.props,r=e.data,i=e.configs,n=i.size||{xs:12,sm:6,md:4,lg:3};return a(y,{className:this.props.autoHeight?"auto-height":"",children:a(h,t(t({container:!0,spacing:i.spacing||0},i.wrapProps),{},{style:{height:"100%"},children:r.map(function(e,r){var l=i.getElementId?i.getElementId(e):r.toString(),s=i.elementWrapPropsGetter,u=s?s({data:e,index:r}):i.elementWrapProps||{};return a(h,t(t(t({item:!0},n),u),{},{children:a(o,{data:e,index:r})}),l)})}))})}}])}())}var y=d(c)({height:"100%",width:"100%",overflow:"auto","&.auto-height":{height:"auto",overflow:"visible"}});function w(){var r=function(o){var e,r=null!==(e=null==o?void 0:o.columns)&&void 0!==e?e:{};return Object.keys(r).map(function(o){var e=r[o];return t({field:String(o),sortable:!1},e)})};return s(function(){function s(o){var e;return i(this,s),e=n(this,s,[o]),l(e,"columns",[]),l(e,"rowSelectionModel",[]),l(e,"handleRowSelectionChange",function(o){var r,t;e.rowSelectionModel=o,null===(r=e.props.configs)||void 0===r||null===(t=r.onRowSelectionChange)||void 0===t||t.call(r,o),e.forceUpdate()}),e.columns=r(o.configs),e}return o(s,u),e(s,[{key:"shouldComponentUpdate",value:function(o){var e=JSON.stringify(this.props.value)!==JSON.stringify(o.value),t=JSON.stringify(this.props.configs)!==JSON.stringify(o.configs);return t&&(this.columns=r(o.configs)),e&&(this.rowSelectionModel=[]),e||t}},{key:"render",value:function(){var o,e,r,i,n,l,s;if(!(this.props.configs&&Object.keys(null!==(o=null===(e=this.props.configs)||void 0===e?void 0:e.columns)&&void 0!==o?o:{}).length>0))return null;var u=this.props.value;return a(g,{sx:{flex:1,width:"100%",height:"100%",minHeight:"100px"},children:a(C,t({hideFooter:!0,disableColumnFilter:!0,disableColumnMenu:!0,checkboxSelection:null!==(r=null===(i=this.props.configs)||void 0===i?void 0:i.enableRowSelection)&&void 0!==r&&r,rowSelectionModel:this.rowSelectionModel,onRowSelectionModelChange:this.handleRowSelectionChange,getRowId:null===(n=this.props.configs)||void 0===n?void 0:n.getRowId,rows:u,rowHeight:null===(l=this.props.configs)||void 0===l?void 0:l.rowHeight,columnHeaderHeight:48,getRowSpacing:function(o){return{top:o.isFirstVisible?8:4,bottom:4}},columns:this.columns,disableColumnSelector:!0,autoHeight:this.props.autoHeight},null===(s=this.props.slots)||void 0===s?void 0:s.dataGridProps))})}}])}())}var C=d(f,{shouldForwardProp:function(o){return"autoHeight"!==o}})(function(o){var e=o.theme,r=o.ownerState,t=null==r?void 0:r.autoHeight;return{height:t?"auto":"100%",width:"100%",display:t?"block":"flex",flexDirection:t?void 0:"column","*":{boxSizing:"border-box"},"--custom-border-color":"rgba(145, 158, 171, 0.16)","--custom-bg-color":e.palette.background.paper,"--DataGrid-rowBorderColor":"transparent",borderColor:"transparent",".MuiDataGrid-cell":{"--rowBorderColor":"transparent",display:"flex",alignItems:"center"},".MuiDataGrid-cell:focus, .MuiDataGrid-columnHeader:focus":{outline:"none"},".MuiDataGrid-cell:focus-within, .MuiDataGrid-columnHeader:focus-within":{outline:"none"},".MuiDataGrid-cell.Mui-focusVisible, .MuiDataGrid-columnHeader.Mui-focusVisible":{outline:"none"},".MuiDataGrid-columnHeaders":{backgroundColor:p.grey[50],borderColor:"transparent",borderRadius:"6px"},".MuiDataGrid-columnHeaderCheckbox":{display:"flex",alignItems:"center",justifyContent:"center"},".MuiDataGrid-cellCheckbox":{display:"flex",alignItems:"center",justifyContent:"center"},".MuiDataGrid-virtualScroller":t?{minHeight:0}:{flex:1,minHeight:0},".MuiDataGrid-virtualScrollerContent":{".MuiDataGrid-row":{borderRadius:"6px",border:"none",transition:"all 0.2s ease",backgroundColor:"var(--custom-bg-color)",".MuiDataGrid-cell":{backgroundColor:"var(--custom-bg-color)",border:"none",borderTop:"1px dashed var(--custom-border-color)",borderBottom:"1px dashed var(--custom-border-color)","&:first-of-type":{borderLeft:"1px dashed var(--custom-border-color)",borderRadius:"6px 0 0 6px"},"&:last-of-type":{borderRight:"1px dashed var(--custom-border-color)",borderRadius:"0 6px 6px 0"}},"&:hover":{"--custom-border-color":e.palette.divider,"--custom-bg-color":p.grey[50],transform:"translateY(-1px)",boxShadow:"rgba(99, 99, 99, 0.1) 0px 2px 8px 0px",".MuiDataGrid-cell":{borderTopStyle:"solid",borderBottomStyle:"solid","&:first-of-type":{borderLeftStyle:"solid"},"&:last-of-type":{borderRightStyle:"solid"}}}}}}});export{w as createViewModeList,S as createViewModeModule};
|
|
2
2
|
//# sourceMappingURL=view-mode.content.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view-mode.content.js","sources":["../../../src/data-view/view-mode.content.tsx"],"sourcesContent":["import { Component, ComponentType, FC, memo } from 'react'\r\nimport { Typography, Grid, styled, colors, Stack, Box } from '@mui/material'\r\nimport { DataGrid, DataGridProps, GridColDef, GridRowIdGetter, GridValidRowModel, GridRowSelectionModel } from '@mui/x-data-grid'\r\nimport { GridColsDef, IViewModeListConfig, IViewModeModuleConfig, IViewModeValidModel } from './view-mode.types'\r\n\r\n//#region Mode Module\r\nconst EmptyModule: FC = () => (\r\n <Typography variant='subtitle1' color='textSecondary'>\r\n No items to display\r\n </Typography>\r\n)\r\n\r\nexport interface IViewModeModuleProps<T extends IViewModeValidModel> {\r\n data: T[]\r\n configs: IViewModeModuleConfig<T>\r\n autoHeight?: boolean\r\n}\r\n\r\nexport function createViewModeModule<T extends IViewModeValidModel>(): ComponentType<IViewModeModuleProps<T>> {\r\n class ViewModeModule extends Component<IViewModeModuleProps<T>> {\r\n private ElementComponent\r\n constructor(props: IViewModeModuleProps<T>) {\r\n super(props)\r\n this.ElementComponent = props.configs.Element || EmptyModule\r\n }\r\n\r\n shouldComponentUpdate(nextProps: Readonly<IViewModeModuleProps<T>>): boolean {\r\n const { Element: currentElement, ...currentConfig } = this.props.configs\r\n const { Element: nextElement, ...nextConfigs } = nextProps.configs\r\n const checkElementDiff = currentElement !== nextElement\r\n if (checkElementDiff) {\r\n this.ElementComponent = nextProps.configs.Element || EmptyModule\r\n }\r\n\r\n const checkConfigsDiff = JSON.stringify(currentConfig) !== JSON.stringify(nextConfigs)\r\n const checkDataDiff = JSON.stringify(this.props.data) !== JSON.stringify(nextProps.data)\r\n return checkDataDiff || checkConfigsDiff\r\n }\r\n\r\n render() {\r\n const { ElementComponent } = this\r\n const { data, configs } = this.props\r\n const size = configs.size || { xs: 12, sm: 6, md: 4, lg: 3 }\r\n return (\r\n <Box sx={this.props.autoHeight ? {} : { height: '100%', overflow: 'auto' }}>\r\n <Grid container spacing={configs.spacing || 0} {...configs.wrapProps} style={{ height: '100%' }}>\r\n {data.map((item, index) => {\r\n const key = configs.getElementId ? configs.getElementId(item) : index.toString()\r\n const itemProps = configs.elementWrapPropsGetter\r\n ? configs.elementWrapPropsGetter({ data: item, index })\r\n : configs.elementWrapProps || {}\r\n return (\r\n <Grid item key={key} {...size} {...itemProps}>\r\n <ElementComponent data={item} index={index} />\r\n </Grid>\r\n )\r\n })}\r\n </Grid>\r\n </Box>\r\n )\r\n }\r\n }\r\n\r\n return memo(ViewModeModule)\r\n}\r\n//#endregion\r\n\r\n//#region View Mode List\r\nexport interface IViewModeListProps<T extends IViewModeValidModel> {\r\n value: T[]\r\n configs: IViewModeListConfig<T>\r\n autoHeight?: boolean\r\n slots?: {\r\n dataGridProps?: Partial<Omit<DataGridProps, 'columns' | 'rows'>>\r\n }\r\n}\r\n\r\nexport function createViewModeList<T extends IViewModeValidModel>(): ComponentType<IViewModeListProps<T>> {\r\n const genarateColumns = (configs?: IViewModeListConfig<T>): GridColDef[] => {\r\n const cols: GridColsDef<T> = configs?.columns ?? {}\r\n const fields = Object.keys(cols) as (keyof T)[]\r\n return fields.map((field) => {\r\n const config = cols[field]\r\n return { field: String(field), sortable: false, ...config }\r\n })\r\n }\r\n\r\n class ViewModeList extends Component<IViewModeListProps<T>> {\r\n private columns: GridColDef[] = []\r\n private rowSelectionModel: GridRowSelectionModel = []\r\n \r\n constructor(props: IViewModeListProps<T>) {\r\n super(props)\r\n this.columns = genarateColumns(props.configs)\r\n }\r\n\r\n private handleRowSelectionChange = (newSelection: GridRowSelectionModel) => {\r\n this.rowSelectionModel = newSelection\r\n this.props.configs?.onRowSelectionChange?.(newSelection as (string | number)[])\r\n this.forceUpdate()\r\n }\r\n\r\n shouldComponentUpdate(nextProps: Readonly<IViewModeListProps<T>>): boolean {\r\n const checkValueDiff = JSON.stringify(this.props.value) !== JSON.stringify(nextProps.value)\r\n const checkListConfigsDiff = JSON.stringify(this.props.configs) !== JSON.stringify(nextProps.configs)\r\n if (checkListConfigsDiff) {\r\n this.columns = genarateColumns()\r\n }\r\n // Reset selection khi data thay đổi\r\n if (checkValueDiff) {\r\n this.rowSelectionModel = []\r\n }\r\n return checkValueDiff || checkListConfigsDiff\r\n }\r\n\r\n render() {\r\n const isRender = this.props.configs && Object.keys(this.props.configs?.columns ?? {}).length > 0\r\n if (!isRender) {\r\n return\r\n }\r\n const rows = this.props.value as GridValidRowModel[]\r\n return (\r\n <Stack sx={{ flex: 1, width: '100%', height: '100%', minHeight: '100px' }}>\r\n <DataGridCustom\r\n hideFooter\r\n // disableColumnSorting\r\n disableColumnFilter\r\n disableColumnMenu\r\n checkboxSelection={this.props.configs?.enableRowSelection ?? false}\r\n rowSelectionModel={this.rowSelectionModel}\r\n onRowSelectionModelChange={this.handleRowSelectionChange}\r\n getRowId={this.props.configs?.getRowId as GridRowIdGetter<GridValidRowModel>}\r\n rows={rows}\r\n rowHeight={this.props.configs?.rowHeight}\r\n columnHeaderHeight={48}\r\n getRowSpacing={({ isFirstVisible }) => ({ top: isFirstVisible ? 8 : 4, bottom: 4 })}\r\n columns={this.columns}\r\n disableColumnSelector\r\n autoHeight={this.props.autoHeight}\r\n {...this.props.slots?.dataGridProps}\r\n />\r\n </Stack>\r\n )\r\n }\r\n }\r\n\r\n return memo(ViewModeList)\r\n}\r\n\r\nconst DataGridCustom = styled(DataGrid, { shouldForwardProp: (prop) => prop !== 'autoHeight' })<{\r\n autoHeight?: boolean\r\n}>((params: any) => {\r\n const { theme, ownerState } = params as any\r\n const autoHeight = ownerState?.autoHeight\r\n return {\r\n // When `autoHeight` is true let the grid size to its content, otherwise fill parent.\r\n height: autoHeight ? 'auto' : '100%',\r\n width: '100%',\r\n display: autoHeight ? 'block' : 'flex',\r\n flexDirection: autoHeight ? undefined : 'column',\r\n '*': {\r\n boxSizing: 'border-box'\r\n },\r\n '--custom-border-color': 'rgba(145, 158, 171, 0.16)',\r\n '--custom-bg-color': theme.palette.background.paper,\r\n '--DataGrid-rowBorderColor': 'transparent',\r\n borderColor: 'transparent',\r\n '.MuiDataGrid-cell': {\r\n '--rowBorderColor': 'transparent',\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n '.MuiDataGrid-cell:focus, .MuiDataGrid-columnHeader:focus': {\r\n outline: 'none'\r\n },\r\n '.MuiDataGrid-cell:focus-within, .MuiDataGrid-columnHeader:focus-within': {\r\n outline: 'none'\r\n },\r\n '.MuiDataGrid-cell.Mui-focusVisible, .MuiDataGrid-columnHeader.Mui-focusVisible': {\r\n outline: 'none'\r\n },\r\n '.MuiDataGrid-columnHeaders': {\r\n backgroundColor: colors.grey[50],\r\n borderColor: 'transparent',\r\n borderRadius: '6px'\r\n },\r\n '.MuiDataGrid-columnHeaderCheckbox': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n },\r\n '.MuiDataGrid-cellCheckbox': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n },\r\n '.MuiDataGrid-virtualScroller': autoHeight ? { minHeight: 0 } : { flex: 1, minHeight: 0 },\r\n '.MuiDataGrid-virtualScrollerContent': {\r\n '.MuiDataGrid-row': {\r\n borderRadius: '6px',\r\n border: 'none',\r\n transition: 'all 0.2s ease',\r\n backgroundColor: 'var(--custom-bg-color)',\r\n '.MuiDataGrid-cell': {\r\n backgroundColor: 'var(--custom-bg-color)',\r\n border: 'none',\r\n borderTop: '1px dashed var(--custom-border-color)',\r\n borderBottom: '1px dashed var(--custom-border-color)',\r\n '&:first-of-type': {\r\n borderLeft: '1px dashed var(--custom-border-color)',\r\n borderRadius: '6px 0 0 6px'\r\n },\r\n '&:last-of-type': {\r\n borderRight: '1px dashed var(--custom-border-color)',\r\n borderRadius: '0 6px 6px 0'\r\n }\r\n },\r\n '&:hover': {\r\n '--custom-border-color': theme.palette.divider,\r\n '--custom-bg-color': colors.grey[50],\r\n transform: 'translateY(-1px)',\r\n boxShadow: 'rgba(99, 99, 99, 0.1) 0px 2px 8px 0px',\r\n '.MuiDataGrid-cell': {\r\n borderTopStyle: 'solid',\r\n borderBottomStyle: 'solid',\r\n '&:first-of-type': {\r\n borderLeftStyle: 'solid'\r\n },\r\n '&:last-of-type': {\r\n borderRightStyle: 'solid'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n})\r\n//#endregion\r\n"],"names":["EmptyModule","_jsx","Typography","variant","color","children","createViewModeModule","memo","ViewModeModule","props","_this","_classCallCheck","_callSuper","ElementComponent","configs","Element","_inherits","Component","_createClass","key","value","nextProps","_this$props$configs","this","currentElement","currentConfig","_objectWithoutProperties","_excluded","_nextProps$configs","nextElement","nextConfigs","_excluded2","checkConfigsDiff","JSON","stringify","data","_this$props","size","xs","sm","md","lg","Box","sx","autoHeight","height","overflow","Grid","_objectSpread","container","spacing","wrapProps","style","map","item","index","getElementId","toString","itemProps","elementWrapPropsGetter","elementWrapProps","createViewModeList","genarateColumns","_configs$columns","cols","columns","Object","keys","field","config","String","sortable","ViewModeList","_this2","_defineProperty","newSelection","_this2$props$configs","_this2$props$configs$","rowSelectionModel","onRowSelectionChange","call","forceUpdate","checkValueDiff","checkListConfigsDiff","_this$props$configs$c","_this$props$configs2","_this$props$configs$e","_this$props$configs3","_this$props$configs4","_this$props$configs5","_this$props$slots","length","rows","Stack","flex","width","minHeight","DataGridCustom","hideFooter","disableColumnFilter","disableColumnMenu","checkboxSelection","enableRowSelection","onRowSelectionModelChange","handleRowSelectionChange","getRowId","rowHeight","columnHeaderHeight","getRowSpacing","_ref","top","isFirstVisible","bottom","disableColumnSelector","slots","dataGridProps","styled","DataGrid","shouldForwardProp","prop","params","theme","ownerState","display","flexDirection","undefined","boxSizing","palette","background","paper","borderColor","alignItems","outline","backgroundColor","colors","grey","borderRadius","justifyContent","border","transition","borderTop","borderBottom","borderLeft","borderRight","divider","transform","boxShadow","borderTopStyle","borderBottomStyle","borderLeftStyle","borderRightStyle"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"view-mode.content.js","sources":["../../../src/data-view/view-mode.content.tsx"],"sourcesContent":["import { Component, ComponentType, FC, memo } from 'react'\r\nimport { Typography, Grid, styled, colors, Stack, Box } from '@mui/material'\r\nimport { DataGrid, DataGridProps, GridColDef, GridRowIdGetter, GridValidRowModel, GridRowSelectionModel } from '@mui/x-data-grid'\r\nimport { GridColsDef, IViewModeListConfig, IViewModeModuleConfig, IViewModeValidModel } from './view-mode.types'\r\n\r\n//#region Mode Module\r\nconst EmptyModule: FC = () => (\r\n <Typography variant='subtitle1' color='textSecondary'>\r\n No items to display\r\n </Typography>\r\n)\r\n\r\nexport interface IViewModeModuleProps<T extends IViewModeValidModel> {\r\n data: T[]\r\n configs: IViewModeModuleConfig<T>\r\n autoHeight?: boolean\r\n}\r\n\r\nexport function createViewModeModule<T extends IViewModeValidModel>(): ComponentType<IViewModeModuleProps<T>> {\r\n class ViewModeModule extends Component<IViewModeModuleProps<T>> {\r\n private ElementComponent\r\n constructor(props: IViewModeModuleProps<T>) {\r\n super(props)\r\n this.ElementComponent = props.configs.Element || EmptyModule\r\n }\r\n\r\n shouldComponentUpdate(nextProps: Readonly<IViewModeModuleProps<T>>): boolean {\r\n const { Element: currentElement, ...currentConfig } = this.props.configs\r\n const { Element: nextElement, ...nextConfigs } = nextProps.configs\r\n const checkElementDiff = currentElement !== nextElement\r\n if (checkElementDiff) {\r\n this.ElementComponent = nextProps.configs.Element || EmptyModule\r\n }\r\n\r\n const checkConfigsDiff = JSON.stringify(currentConfig) !== JSON.stringify(nextConfigs)\r\n const checkDataDiff = JSON.stringify(this.props.data) !== JSON.stringify(nextProps.data)\r\n return checkDataDiff || checkConfigsDiff\r\n }\r\n\r\n render() {\r\n const { ElementComponent } = this\r\n const { data, configs } = this.props\r\n const size = configs.size || { xs: 12, sm: 6, md: 4, lg: 3 }\r\n\r\n return (\r\n <ViewModeModuleStyled className={this.props.autoHeight ? 'auto-height' : ''}>\r\n <Grid container spacing={configs.spacing || 0} {...configs.wrapProps} style={{ height: '100%' }}>\r\n {data.map((item, index) => {\r\n const key = configs.getElementId ? configs.getElementId(item) : index.toString()\r\n const getterFunc = configs.elementWrapPropsGetter\r\n const itemProps = getterFunc ? getterFunc({ data: item, index }) : configs.elementWrapProps || {}\r\n return (\r\n <Grid item key={key} {...size} {...itemProps}>\r\n <ElementComponent data={item} index={index} />\r\n </Grid>\r\n )\r\n })}\r\n </Grid>\r\n </ViewModeModuleStyled>\r\n )\r\n }\r\n }\r\n\r\n return memo(ViewModeModule)\r\n}\r\n\r\nconst ViewModeModuleStyled = styled(Box)({\r\n height: '100%',\r\n width: '100%',\r\n overflow: 'auto',\r\n '&.auto-height': {\r\n height: 'auto',\r\n overflow: 'visible'\r\n }\r\n})\r\n//#endregion\r\n\r\n//#region View Mode List\r\nexport interface IViewModeListProps<T extends IViewModeValidModel> {\r\n value: T[]\r\n configs: IViewModeListConfig<T>\r\n autoHeight?: boolean\r\n slots?: {\r\n dataGridProps?: Partial<Omit<DataGridProps, 'columns' | 'rows'>>\r\n }\r\n}\r\n\r\nexport function createViewModeList<T extends IViewModeValidModel>(): ComponentType<IViewModeListProps<T>> {\r\n const genarateColumns = (configs: IViewModeListConfig<T>): GridColDef[] => {\r\n const cols: GridColsDef<T> = configs?.columns ?? {}\r\n const fields = Object.keys(cols) as (keyof T)[]\r\n return fields.map((field) => {\r\n const config = cols[field]\r\n return { field: String(field), sortable: false, ...config }\r\n })\r\n }\r\n\r\n class ViewModeList extends Component<IViewModeListProps<T>> {\r\n private columns: GridColDef[] = []\r\n private rowSelectionModel: GridRowSelectionModel = []\r\n\r\n constructor(props: IViewModeListProps<T>) {\r\n super(props)\r\n this.columns = genarateColumns(props.configs)\r\n }\r\n\r\n private handleRowSelectionChange = (newSelection: GridRowSelectionModel) => {\r\n this.rowSelectionModel = newSelection\r\n this.props.configs?.onRowSelectionChange?.(newSelection as (string | number)[])\r\n this.forceUpdate()\r\n }\r\n\r\n shouldComponentUpdate(nextProps: Readonly<IViewModeListProps<T>>): boolean {\r\n const checkValueDiff = JSON.stringify(this.props.value) !== JSON.stringify(nextProps.value)\r\n const checkListConfigsDiff = JSON.stringify(this.props.configs) !== JSON.stringify(nextProps.configs)\r\n if (checkListConfigsDiff) {\r\n this.columns = genarateColumns(nextProps.configs)\r\n }\r\n // Reset selection when data changed to avoid potential selection mismatch\r\n if (checkValueDiff) {\r\n this.rowSelectionModel = []\r\n }\r\n return checkValueDiff || checkListConfigsDiff\r\n }\r\n\r\n render() {\r\n const isRender = this.props.configs && Object.keys(this.props.configs?.columns ?? {}).length > 0\r\n if (!isRender) return null\r\n const rows = this.props.value as GridValidRowModel[]\r\n return (\r\n <Stack sx={{ flex: 1, width: '100%', height: '100%', minHeight: '100px' }}>\r\n <DataGridCustom\r\n hideFooter\r\n // disableColumnSorting\r\n disableColumnFilter\r\n disableColumnMenu\r\n checkboxSelection={this.props.configs?.enableRowSelection ?? false}\r\n rowSelectionModel={this.rowSelectionModel}\r\n onRowSelectionModelChange={this.handleRowSelectionChange}\r\n getRowId={this.props.configs?.getRowId as GridRowIdGetter<GridValidRowModel>}\r\n rows={rows}\r\n rowHeight={this.props.configs?.rowHeight}\r\n columnHeaderHeight={48}\r\n getRowSpacing={({ isFirstVisible }) => ({ top: isFirstVisible ? 8 : 4, bottom: 4 })}\r\n columns={this.columns}\r\n disableColumnSelector\r\n autoHeight={this.props.autoHeight}\r\n {...this.props.slots?.dataGridProps}\r\n />\r\n </Stack>\r\n )\r\n }\r\n }\r\n\r\n return memo(ViewModeList)\r\n}\r\n\r\nconst DataGridCustom = styled(DataGrid, { shouldForwardProp: (prop) => prop !== 'autoHeight' })<{\r\n autoHeight?: boolean\r\n}>((params: any) => {\r\n const { theme, ownerState } = params as any\r\n const autoHeight = ownerState?.autoHeight\r\n return {\r\n // When `autoHeight` is true let the grid size to its content, otherwise fill parent.\r\n height: autoHeight ? 'auto' : '100%',\r\n width: '100%',\r\n display: autoHeight ? 'block' : 'flex',\r\n flexDirection: autoHeight ? undefined : 'column',\r\n '*': { boxSizing: 'border-box' },\r\n '--custom-border-color': 'rgba(145, 158, 171, 0.16)',\r\n '--custom-bg-color': theme.palette.background.paper,\r\n '--DataGrid-rowBorderColor': 'transparent',\r\n borderColor: 'transparent',\r\n '.MuiDataGrid-cell': { '--rowBorderColor': 'transparent', display: 'flex', alignItems: 'center' },\r\n '.MuiDataGrid-cell:focus, .MuiDataGrid-columnHeader:focus': { outline: 'none' },\r\n '.MuiDataGrid-cell:focus-within, .MuiDataGrid-columnHeader:focus-within': { outline: 'none' },\r\n '.MuiDataGrid-cell.Mui-focusVisible, .MuiDataGrid-columnHeader.Mui-focusVisible': { outline: 'none' },\r\n '.MuiDataGrid-columnHeaders': { backgroundColor: colors.grey[50], borderColor: 'transparent', borderRadius: '6px' },\r\n '.MuiDataGrid-columnHeaderCheckbox': { display: 'flex', alignItems: 'center', justifyContent: 'center' },\r\n '.MuiDataGrid-cellCheckbox': { display: 'flex', alignItems: 'center', justifyContent: 'center' },\r\n '.MuiDataGrid-virtualScroller': autoHeight ? { minHeight: 0 } : { flex: 1, minHeight: 0 },\r\n '.MuiDataGrid-virtualScrollerContent': {\r\n '.MuiDataGrid-row': {\r\n borderRadius: '6px',\r\n border: 'none',\r\n transition: 'all 0.2s ease',\r\n backgroundColor: 'var(--custom-bg-color)',\r\n '.MuiDataGrid-cell': {\r\n backgroundColor: 'var(--custom-bg-color)',\r\n border: 'none',\r\n borderTop: '1px dashed var(--custom-border-color)',\r\n borderBottom: '1px dashed var(--custom-border-color)',\r\n '&:first-of-type': { borderLeft: '1px dashed var(--custom-border-color)', borderRadius: '6px 0 0 6px' },\r\n '&:last-of-type': { borderRight: '1px dashed var(--custom-border-color)', borderRadius: '0 6px 6px 0' }\r\n },\r\n '&:hover': {\r\n '--custom-border-color': theme.palette.divider,\r\n '--custom-bg-color': colors.grey[50],\r\n transform: 'translateY(-1px)',\r\n boxShadow: 'rgba(99, 99, 99, 0.1) 0px 2px 8px 0px',\r\n '.MuiDataGrid-cell': {\r\n borderTopStyle: 'solid',\r\n borderBottomStyle: 'solid',\r\n '&:first-of-type': { borderLeftStyle: 'solid' },\r\n '&:last-of-type': { borderRightStyle: 'solid' }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n})\r\n//#endregion\r\n"],"names":["EmptyModule","_jsx","Typography","variant","color","children","createViewModeModule","memo","ViewModeModule","props","_this","_classCallCheck","_callSuper","ElementComponent","configs","Element","_inherits","Component","_createClass","key","value","nextProps","_this$props$configs","this","currentElement","currentConfig","_objectWithoutProperties","_excluded","_nextProps$configs","nextElement","nextConfigs","_excluded2","checkConfigsDiff","JSON","stringify","data","_this$props","size","xs","sm","md","lg","ViewModeModuleStyled","className","autoHeight","Grid","_objectSpread","container","spacing","wrapProps","style","height","map","item","index","getElementId","toString","getterFunc","elementWrapPropsGetter","itemProps","elementWrapProps","styled","Box","width","overflow","createViewModeList","genarateColumns","_configs$columns","cols","columns","Object","keys","field","config","String","sortable","ViewModeList","_this2","_defineProperty","newSelection","_this2$props$configs","_this2$props$configs$","rowSelectionModel","onRowSelectionChange","call","forceUpdate","checkValueDiff","checkListConfigsDiff","_this$props$configs$c","_this$props$configs2","_this$props$configs$e","_this$props$configs3","_this$props$configs4","_this$props$configs5","_this$props$slots","length","rows","Stack","sx","flex","minHeight","DataGridCustom","hideFooter","disableColumnFilter","disableColumnMenu","checkboxSelection","enableRowSelection","onRowSelectionModelChange","handleRowSelectionChange","getRowId","rowHeight","columnHeaderHeight","getRowSpacing","_ref","top","isFirstVisible","bottom","disableColumnSelector","slots","dataGridProps","DataGrid","shouldForwardProp","prop","params","theme","ownerState","display","flexDirection","undefined","boxSizing","palette","background","paper","borderColor","alignItems","outline","backgroundColor","colors","grey","borderRadius","justifyContent","border","transition","borderTop","borderBottom","borderLeft","borderRight","divider","transform","boxShadow","borderTopStyle","borderBottomStyle","borderLeftStyle","borderRightStyle"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{inherits as r,createClass as e,objectSpread2 as t,classCallCheck as
|
|
1
|
+
import{inherits as r,createClass as e,objectSpread2 as t,classCallCheck as o,callSuper as a,defineProperty as s,asyncToGenerator as n,regenerator as l}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as i}from"react/jsx-runtime";import{Box as u}from"@mui/material";import{createContext as m,Component as c}from"react";import{ApiAlertContext as f}from"../api-context/alert-global.js";import"../api-context/drawer-global.js";import"../api-context/global-modal.js";import{validateMerge as p,convertFormDataToJson as d,trimAllStrings as v,singleValidate as E,getErrorCommonFromResponse as g,getErrorFromResponse as S}from"./helpers.js";import h,{SingleRuleValidate as b}from"./validator.js";var j=function(j){var x=m({setModelState:function(){},messageErrors:{},onBlur:function(){},setError:function(){},removeError:function(){},clearErrorAll:function(){}}),A=function(){function m(r){var e;return o(this,m),e=a(this,m,[r]),s(e,"refForm",null),s(e,"mapContext",function(){var r=e,t=r.setError,o=r.removeError,a=r.setModelState,s=r.clearErrorAll,n=r.onBlur,l=e.state;return{modelState:l.modelState,messageErrors:l.messageErrors,setError:t,onBlur:n,clearErrorAll:s,setModelState:a,removeError:o}}),s(e,"setModelState",function(r){var t=Object.assign({},e.state.modelState,r);e.setState({modelState:t})}),s(e,"getValidate",function(){var r=new h({});return p(r,null==j?void 0:j.validate,e.props.validate)}),s(e,"setError",function(r,t){var o=s({},r,[{rule:b.Custom,message:t}]);e.setState({messageErrors:Object.assign({},e.state.messageErrors,o)})}),s(e,"removeError",function(r){var o=t({},e.state.messageErrors);Array.isArray(r)?r.forEach(function(r){o[r]&&delete o[r]}):o[r]&&delete o[r],e.setState({messageErrors:o})}),s(e,"clearErrorAll",function(){e.setState({messageErrors:{}})}),s(e,"onSubmit",function(){var r=n(l().m(function r(o){var a,s,n,i,u,m,c,p;return l().w(function(r){for(;;)switch(r.p=r.n){case 0:if(o.preventDefault(),a=new FormData(o.currentTarget),s=d(a),n=v(s),e.setState({modelState:n}),i=e.validate.run(n),e.props.onError&&Object.keys(i).length>0&&e.props.onError(i),!i){r.n=1;break}if(e.setState({messageErrors:i}),!(Object.keys(i).length>0)){r.n=1;break}return r.a(2);case 1:return r.p=1,r.n=2,e.props.onSubmit(n,o);case 2:r.n=4;break;case 3:r.p=3,p=r.v,(m=g(p)).length>0&&(null===(u=f.ApiAlert)||void 0===u||u.PushError(m[0])),c=S(p,n),e.setState({messageErrors:t(t({},e.state.messageErrors),c||{})});case 4:return r.a(2)}},r,null,[[1,3]])}));return function(e){return r.apply(this,arguments)}}()),s(e,"onBlur",function(r){if(e.refForm){var t=e.state.messageErrors,o=new FormData(e.refForm),a=d(o),s=v(a);e.setState({modelState:s});var n=E(r,s,t,e.validate)||{};e.setState({messageErrors:n})}}),e.validate=e.getValidate(),e.state={messageErrors:{}},e}return r(m,c),e(m,[{key:"render",value:function(){var r,e=this;return i(u,t(t({component:"form",ref:function(r){return e.refForm=r},onSubmit:this.onSubmit},null===(r=this.props.slots)||void 0===r?void 0:r.formProps),{},{children:i(x.Provider,{value:this.mapContext(),children:this.props.children})}))}}])}();return{Form:A,Validator:null==j?void 0:j.validate,Context:x,mapContext:function(r){return i(x.Consumer,{children:r})}}};export{j as default};
|
|
2
2
|
//# sourceMappingURL=create.form-base.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.form-base.js","sources":["../../../src/form/create.form-base.tsx"],"sourcesContent":["import { Box, BoxProps } from '@mui/material'\r\nimport { Component, ComponentType, createContext, PropsWithChildren, ReactNode } from 'react'\r\nimport { ApiAlertContext } from '../api-context'\r\nimport { IFormBaseContext, ISetModelStateFunc } from './types'\r\nimport { convertFormDataToJson, getErrorCommonFromResponse, getErrorFromResponse, singleValidate, trimAllStrings, validateMerge } from './helpers'\r\nimport FormValidator, { IPartialError, SingleRuleValidate } from './validator'\r\n\r\nexport interface IFormBaseSlots {\r\n formProps?: Omit<BoxProps, 'ref' | 'onSubmit' | 'component'> & { [key: string]: any }\r\n}\r\n\r\nexport interface IFormBaseConfigs<T> {\r\n validate?: FormValidator<Partial<T>>\r\n dataTrimed?: boolean\r\n dataGetter?: (data: Partial<T>) => Partial<T>\r\n}\r\n\r\nexport interface IFormBaseParams<T> extends IFormBaseConfigs<T> {}\r\n\r\nexport interface IFormBaseProps<T> extends PropsWithChildren, IFormBaseConfigs<T> {\r\n onSubmit: (data: Partial<T>, e: React.FormEvent<HTMLFormElement>) => Promise<void>\r\n onError?: (error: IPartialError<T>) => void\r\n slots?: IFormBaseSlots\r\n}\r\n\r\nexport interface IFormBaseState<T> {\r\n modelState?: Partial<T>\r\n messageErrors: IPartialError<T>\r\n}\r\n\r\nexport interface IFormBaseResult<T> {\r\n Form: ComponentType<IFormBaseProps<T>>\r\n Validator?: FormValidator<Partial<T>>\r\n Context: React.Context<IFormBaseContext<T>>\r\n mapContext: (params: (context: IFormBaseContext<T>) => JSX.Element) => JSX.Element\r\n}\r\n\r\nconst createFormBase = function <T>(params?: IFormBaseParams<T>): IFormBaseResult<T> {\r\n const FormBaseContext = createContext<IFormBaseContext<T>>({\r\n setModelState: () => {},\r\n messageErrors: {},\r\n onBlur: () => {},\r\n setError: () => {},\r\n removeError: () => {},\r\n clearErrorAll: () => {}\r\n })\r\n\r\n class FormBase extends Component<IFormBaseProps<T>, IFormBaseState<T>> {\r\n refForm: HTMLFormElement | null = null\r\n constructor(props: IFormBaseProps<T>) {\r\n super(props)\r\n this.validate = this.getValidate()\r\n this.state = { messageErrors: {} }\r\n }\r\n\r\n render() {\r\n return (\r\n <Box component='form' ref={(ref: HTMLFormElement) => (this.refForm = ref)} onSubmit={this.onSubmit} {...(this.props.slots?.formProps as any)}>\r\n <FormBaseContext.Provider value={this.mapContext()}>{this.props.children}</FormBaseContext.Provider>\r\n </Box>\r\n )\r\n }\r\n\r\n private mapContext = (): IFormBaseContext<T> => {\r\n const { setError, removeError, setModelState, clearErrorAll, onBlur } = this\r\n const { modelState, messageErrors } = this.state\r\n return { modelState, messageErrors, setError, onBlur, clearErrorAll, setModelState, removeError }\r\n }\r\n\r\n setModelState: ISetModelStateFunc<T> = (state) => {\r\n const obj = Object.assign({}, this.state.modelState, state)\r\n this.setState({ modelState: obj })\r\n }\r\n\r\n getValidate = (): FormValidator<Partial<T>> => {\r\n const defaultValidate = new FormValidator<Partial<T>>({})\r\n return validateMerge(defaultValidate, params?.validate, this.props.validate)\r\n }\r\n\r\n setError = (keyName: keyof T, message: string) => {\r\n const error = { [keyName]: [{ rule: SingleRuleValidate.Custom, message }] }\r\n this.setState({ messageErrors: Object.assign({}, this.state.messageErrors, error) })\r\n }\r\n\r\n removeError = (keyNames: keyof T | (keyof T)[]) => {\r\n const newErrors = { ...this.state.messageErrors }\r\n if (Array.isArray(keyNames)) {\r\n keyNames.forEach((key) => {\r\n if (newErrors[key]) delete newErrors[key]\r\n })\r\n } else {\r\n if (newErrors[keyNames]) delete newErrors[keyNames]\r\n }\r\n this.setState({ messageErrors: newErrors })\r\n }\r\n\r\n clearErrorAll = () => {\r\n this.setState({ messageErrors: {} })\r\n }\r\n\r\n private validate: FormValidator<Partial<T>>\r\n onSubmit: React.FormEventHandler<HTMLFormElement> = async (e) => {\r\n e.preventDefault()\r\n const formData = new FormData(e.currentTarget as HTMLFormElement)\r\n const raw = convertFormDataToJson<T>(formData)\r\n // TODO: validate raw data\r\n const trimmed = trimAllStrings(raw)\r\n this.setState({ modelState: trimmed })\r\n const messageErrors = this.validate.run(trimmed) as IPartialError<T>\r\n\r\n if (this.props.onError && Object.keys(messageErrors).length > 0) {\r\n this.props.onError(messageErrors)\r\n }\r\n\r\n if (messageErrors) {\r\n this.setState({ messageErrors: messageErrors })\r\n if (Object.keys(messageErrors).length > 0) return\r\n }\r\n try {\r\n await this.props.onSubmit(trimmed, e)\r\n } catch (error: any) {\r\n const errorCommon = getErrorCommonFromResponse(error as any)\r\n if (errorCommon.length > 0) ApiAlertContext.ApiAlert?.PushError(errorCommon[0])\r\n const messageError = getErrorFromResponse(error, trimmed)\r\n this.setState({ messageErrors: { ...this.state.messageErrors, ...(messageError || {}) } })\r\n // throw error\r\n }\r\n }\r\n\r\n onBlur = (keyName: keyof T) => {\r\n if (!this.refForm) return\r\n const { messageErrors } = this.state\r\n const formData = new FormData(this.refForm)\r\n const raw = convertFormDataToJson(formData)\r\n const trimmed = trimAllStrings(raw)\r\n this.setState({ modelState: trimmed })\r\n const error = singleValidate<T, Partial<T>>(keyName, trimmed, messageErrors, this.validate) || {}\r\n this.setState({ messageErrors: error as IPartialError<T> })\r\n }\r\n }\r\n\r\n return {\r\n Form: FormBase,\r\n Validator: params?.validate,\r\n Context: FormBaseContext,\r\n mapContext: (params: (context: IFormBaseContext<T>) => ReactNode) => <FormBaseContext.Consumer>{params}</FormBaseContext.Consumer>\r\n }\r\n}\r\nexport default createFormBase\r\n"],"names":["createFormBase","params","FormBaseContext","createContext","setModelState","messageErrors","onBlur","setError","removeError","clearErrorAll","FormBase","props","_this","_classCallCheck","_callSuper","_defineProperty","_this2","_this$state","state","modelState","obj","Object","assign","setState","defaultValidate","FormValidator","validateMerge","validate","keyName","message","error","rule","SingleRuleValidate","Custom","keyNames","newErrors","_objectSpread","Array","isArray","forEach","key","_ref","_asyncToGenerator","_regenerator","m","_callee","e","formData","raw","trimmed","_ApiAlertContext$ApiA","errorCommon","messageError","_t","w","_context","p","n","preventDefault","FormData","currentTarget","convertFormDataToJson","trimAllStrings","run","onError","keys","length","a","onSubmit","v","getErrorCommonFromResponse","ApiAlertContext","ApiAlert","PushError","getErrorFromResponse","_x","apply","this","arguments","refForm","singleValidate","getValidate","_inherits","Component","_createClass","value","_this$props$slots","_this3","_jsx","Box","component","ref","slots","formProps","children","Provider","mapContext","Form","Validator","Context","Consumer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"create.form-base.js","sources":["../../../src/form/create.form-base.tsx"],"sourcesContent":["import { Box, BoxProps } from '@mui/material'\r\nimport { Component, ComponentType, createContext, PropsWithChildren, ReactNode } from 'react'\r\nimport { ApiAlertContext } from '../api-context'\r\nimport { IFormBaseContext, ISetModelStateFunc } from './types'\r\nimport { convertFormDataToJson, getErrorCommonFromResponse, getErrorFromResponse, singleValidate, trimAllStrings, validateMerge } from './helpers'\r\nimport FormValidator, { IPartialError, SingleRuleValidate } from './validator'\r\n\r\nexport interface IFormBaseSlots {\r\n formProps?: Omit<BoxProps, 'ref' | 'onSubmit' | 'component'> & { [key: string]: any }\r\n}\r\n\r\nexport interface IFormBaseConfigs<T> {\r\n validate?: FormValidator<Partial<T>>\r\n dataTrimed?: boolean\r\n dataGetter?: (data: Partial<T>) => Partial<T>\r\n}\r\n\r\nexport interface IFormBaseParams<T> extends IFormBaseConfigs<T> {}\r\n\r\nexport interface IFormBaseProps<T> extends PropsWithChildren, IFormBaseConfigs<T> {\r\n onSubmit: (data: Partial<T>, e: React.FormEvent<HTMLFormElement>) => Promise<void>\r\n onError?: (error: IPartialError<T>) => void\r\n slots?: IFormBaseSlots\r\n}\r\n\r\nexport interface IFormBaseState<T> {\r\n modelState?: Partial<T>\r\n messageErrors: IPartialError<T>\r\n}\r\n\r\nexport interface IFormBaseResult<T> {\r\n Form: ComponentType<IFormBaseProps<T>>\r\n Validator?: FormValidator<Partial<T>>\r\n Context: React.Context<IFormBaseContext<T>>\r\n mapContext: (params: (context: IFormBaseContext<T>) => JSX.Element) => JSX.Element\r\n}\r\n\r\nconst createFormBase = function <T>(params?: IFormBaseParams<T>): IFormBaseResult<T> {\r\n const FormBaseContext = createContext<IFormBaseContext<T>>({\r\n setModelState: () => {},\r\n messageErrors: {},\r\n onBlur: () => {},\r\n setError: () => {},\r\n removeError: () => {},\r\n clearErrorAll: () => {}\r\n })\r\n\r\n class FormBase extends Component<IFormBaseProps<T>, IFormBaseState<T>> {\r\n refForm: HTMLFormElement | null = null\r\n constructor(props: IFormBaseProps<T>) {\r\n super(props)\r\n this.validate = this.getValidate()\r\n this.state = { messageErrors: {} }\r\n }\r\n\r\n render() {\r\n return (\r\n <Box component='form' ref={(ref: HTMLFormElement) => (this.refForm = ref)} onSubmit={this.onSubmit} {...(this.props.slots?.formProps as any)}>\r\n <FormBaseContext.Provider value={this.mapContext()}>{this.props.children}</FormBaseContext.Provider>\r\n </Box>\r\n )\r\n }\r\n\r\n private mapContext = (): IFormBaseContext<T> => {\r\n const { setError, removeError, setModelState, clearErrorAll, onBlur } = this\r\n const { modelState, messageErrors } = this.state\r\n return { modelState, messageErrors, setError, onBlur, clearErrorAll, setModelState, removeError }\r\n }\r\n\r\n setModelState: ISetModelStateFunc<T> = (state) => {\r\n const obj = Object.assign({}, this.state.modelState, state)\r\n this.setState({ modelState: obj })\r\n }\r\n\r\n getValidate = (): FormValidator<Partial<T>> => {\r\n const defaultValidate = new FormValidator<Partial<T>>({})\r\n return validateMerge(defaultValidate, params?.validate, this.props.validate)\r\n }\r\n\r\n setError = (keyName: keyof T, message: string) => {\r\n const error = { [keyName]: [{ rule: SingleRuleValidate.Custom, message }] }\r\n this.setState({ messageErrors: Object.assign({}, this.state.messageErrors, error) })\r\n }\r\n\r\n removeError = (keyNames: keyof T | (keyof T)[]) => {\r\n const newErrors = { ...this.state.messageErrors }\r\n if (Array.isArray(keyNames)) {\r\n keyNames.forEach((key) => {\r\n if (newErrors[key]) delete newErrors[key]\r\n })\r\n } else {\r\n if (newErrors[keyNames]) delete newErrors[keyNames]\r\n }\r\n this.setState({ messageErrors: newErrors })\r\n }\r\n\r\n clearErrorAll = () => {\r\n this.setState({ messageErrors: {} })\r\n }\r\n\r\n private validate: FormValidator<Partial<T>>\r\n onSubmit: React.FormEventHandler<HTMLFormElement> = async (e) => {\r\n e.preventDefault()\r\n const formData = new FormData(e.currentTarget as HTMLFormElement)\r\n const raw = convertFormDataToJson<T>(formData)\r\n // TODO: validate raw data\r\n const trimmed = trimAllStrings(raw)\r\n this.setState({ modelState: trimmed })\r\n const messageErrors = this.validate.run(trimmed) as IPartialError<T>\r\n\r\n if (this.props.onError && Object.keys(messageErrors).length > 0) {\r\n this.props.onError(messageErrors)\r\n }\r\n\r\n if (messageErrors) {\r\n this.setState({ messageErrors: messageErrors })\r\n if (Object.keys(messageErrors).length > 0) return\r\n }\r\n try {\r\n await this.props.onSubmit(trimmed, e)\r\n } catch (error: any) {\r\n const errorCommon = getErrorCommonFromResponse(error as any)\r\n if (errorCommon.length > 0) ApiAlertContext.ApiAlert?.PushError(errorCommon[0])\r\n const messageError = getErrorFromResponse(error, trimmed)\r\n this.setState({ messageErrors: { ...this.state.messageErrors, ...(messageError || {}) } })\r\n // throw error\r\n }\r\n }\r\n\r\n onBlur = (keyName: keyof T) => {\r\n if (!this.refForm) return\r\n const { messageErrors } = this.state\r\n const formData = new FormData(this.refForm)\r\n const raw = convertFormDataToJson(formData)\r\n const trimmed = trimAllStrings(raw)\r\n this.setState({ modelState: trimmed })\r\n const error = singleValidate<T, Partial<T>>(keyName, trimmed, messageErrors, this.validate) || {}\r\n this.setState({ messageErrors: error as IPartialError<T> })\r\n }\r\n }\r\n\r\n return {\r\n Form: FormBase,\r\n Validator: params?.validate,\r\n Context: FormBaseContext,\r\n mapContext: (params: (context: IFormBaseContext<T>) => ReactNode) => <FormBaseContext.Consumer>{params}</FormBaseContext.Consumer>\r\n }\r\n}\r\nexport default createFormBase\r\n"],"names":["createFormBase","params","FormBaseContext","createContext","setModelState","messageErrors","onBlur","setError","removeError","clearErrorAll","FormBase","props","_this","_classCallCheck","_callSuper","_defineProperty","_this2","_this$state","state","modelState","obj","Object","assign","setState","defaultValidate","FormValidator","validateMerge","validate","keyName","message","error","rule","SingleRuleValidate","Custom","keyNames","newErrors","_objectSpread","Array","isArray","forEach","key","_ref","_asyncToGenerator","_regenerator","m","_callee","e","formData","raw","trimmed","_ApiAlertContext$ApiA","errorCommon","messageError","_t","w","_context","p","n","preventDefault","FormData","currentTarget","convertFormDataToJson","trimAllStrings","run","onError","keys","length","a","onSubmit","v","getErrorCommonFromResponse","ApiAlertContext","ApiAlert","PushError","getErrorFromResponse","_x","apply","this","arguments","refForm","singleValidate","getValidate","_inherits","Component","_createClass","value","_this$props$slots","_this3","_jsx","Box","component","ref","slots","formProps","children","Provider","mapContext","Form","Validator","Context","Consumer"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{inherits as r,createClass as
|
|
1
|
+
import{inherits as r,createClass as t,classCallCheck as e,callSuper as n,defineProperty as o,asyncToGenerator as i,regenerator as l}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as a,jsxs as s}from"react/jsx-runtime";import{Component as c}from"react";import{styled as u,Button as p,Box as d,Card as f,DialogTitle as m,DialogContent as h,DialogActions as v}from"@mui/material";import{fetchDelay as g}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"../utils/query-param.js";import"../api-context/alert-global.js";import"../api-context/drawer-global.js";import{mapGlobalModalContext as C}from"../api-context/global-modal.js";var k=function(u){var p=function(){function p(r){var t;return e(this,p),t=n(this,p,[r]),o(t,"handleClickNo",function(r){r.close(),t.props.onCancel&&t.props.onCancel()}),o(t,"handleClickYes",function(){var r=i(l().m(function r(e){var n;return l().w(function(r){for(;;)switch(r.p=r.n){case 0:if(t.props.onSubmit){r.n=1;break}return r.a(2);case 1:return r.p=1,t.setState({loading:!0}),r.n=2,g(function(){return t.props.onSubmit(t.props.data)},700);case 2:e.close(),r.n=4;break;case 3:r.p=3,n=r.v,console.log("Handle Click Yes error:",n);case 4:return r.p=4,t.setState({loading:!1}),r.f(4);case 5:return r.a(2)}},r,null,[[1,3,4,5]])}));return function(t){return r.apply(this,arguments)}}()),t.state={loading:!1},t}return r(p,c),t(p,[{key:"render",value:function(){var r,t,e=this,n=this.props.children||(null!=u&&u.content?null==u?void 0:u.content(this.props.data):void 0),o=null!==(r=null!==(t=this.props.title)&&void 0!==t?t:null==u?void 0:u.title)&&void 0!==r?r:"Are you sure?";return a(d,{sx:{flex:1,display:"flex",alignItems:"center",justifyContent:"center"},children:C(function(r){var t,i;return s(f,{children:[a(m,{id:"alert-dialog-title",children:o}),a(h,{sx:{minWidth:"300px"},children:n}),s(v,{children:[a(x,{disabled:e.state.loading,color:(null==u||null===(t=u.colors)||void 0===t?void 0:t.no)||"inherit",onClick:function(){return e.handleClickNo(r)},children:"No"}),a(x,{color:(null==u||null===(i=u.colors)||void 0===i?void 0:i.yes)||"error",disabled:e.state.loading,onClick:function(){return e.handleClickYes(r)},children:"Yes"})]})]})})})}}])}();return p},x=u(p)({textTransform:"capitalize",fontWeight:600,"&.MuiButton-colorInherit":{color:"#606060!important"}});export{k as default};
|
|
2
2
|
//# sourceMappingURL=create.form-comfirm.js.map
|